import { Prisma } from '@prisma/client';
import { PrismaService } from "../../core/database/prisma/prisma.service";
export type IamAuditAction = 'CREATE' | 'UPDATE' | 'DELETE' | 'ADMIN_BYPASS';
export interface IamAuditContext {
    actor: string;
    action: IamAuditAction;
    resource: string;
    targetId?: string;
    before?: any;
    after?: any;
    ip?: string;
    userAgent?: string;
}
export declare class IamAuditService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    record(ctx: IamAuditContext): Promise<void>;
    query(filters: {
        actor?: string;
        action?: IamAuditAction;
        resource?: string;
        from?: Date;
        to?: Date;
        page?: number;
        pageSize?: number;
    }): Promise<{
        items: {
            id: string;
            action: string;
            userAgent: string | null;
            resource: string;
            actor: string;
            targetId: string | null;
            before: Prisma.JsonValue | null;
            after: Prisma.JsonValue | null;
            ip: string | null;
            timestamp: Date;
        }[];
        total: number;
        page: number;
        pageSize: number;
    }>;
    recordAdminBypass(actor: string, endpoint: string, requiredPermissions: string[]): Promise<void>;
}
