import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { AuditLogEntity } from '../../../entities/audit-log.entity';
import { AuditChange } from '../audit-types';
export type AuditFilters = {
    page?: number;
    limit?: number;
    entity_type?: string;
    action?: string;
    performed_by?: string;
    from?: string;
    to?: string;
};
export interface AuditItemContext {
    booking_id: string | null;
    item_date: string | null;
}
export declare class AuditRepository {
    private readonly repo;
    private readonly cls;
    constructor(repo: Repository<AuditLogEntity>, cls: ClsService);
    private getTenantId;
    private getUserId;
    log(entityType: string, entityId: string, action: string, changes?: AuditChange[] | null): Promise<AuditLogEntity>;
    findRecent(limit?: number): Promise<AuditLogEntity[]>;
    findByEntity(entityType: string, entityId: string, options?: {
        page?: number;
        limit?: number;
    }): Promise<{
        items: AuditLogEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    loadItemContext(items: AuditLogEntity[]): Promise<Map<string, AuditItemContext>>;
    findFiltered(filters: AuditFilters): Promise<{
        items: AuditLogEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
}
