import { ModelsService } from 'src/models/models.service';
import { ActivityEntityType } from 'src/activity-log/schema/activity-log.schema';
export { ActivityEntityType };
type Actor = {
    _id?: any;
    name?: string | null;
} | null | undefined;
type Translate = (key: string, params?: Record<string, string>) => string;
type Change = {
    field: string;
    old_value: any;
    new_value: any;
};
type Entry = {
    action: string;
    meta?: Record<string, any> | null;
    changes?: Change[];
};
export declare class ActivityService {
    private readonly models;
    private readonly logger;
    constructor(models: ModelsService);
    logMany(entityType: ActivityEntityType, subjectId: any, entries: Entry[], actor?: Actor): Promise<void>;
    log(entityType: ActivityEntityType, subjectId: any, action: string, actor?: Actor, meta?: Record<string, any> | null, changes?: Change[]): Promise<void>;
    buildChanges(before: Record<string, any>, after: Record<string, any>): Change[];
    private format;
    timeline(entityType: ActivityEntityType, subjectId: any, translate: Translate): Promise<{
        entity_type: any;
        subject_id: any;
        action: any;
        message: string;
        meta: any;
        changes: any;
        actor_id: any;
        actor_name: any;
        created_at: any;
    }[]>;
    list(entityType: ActivityEntityType, subjectId: any, page: number, limit: number, translate: Translate): Promise<{
        rows: {
            entity_type: any;
            subject_id: any;
            action: any;
            message: string;
            meta: any;
            changes: any;
            actor_id: any;
            actor_name: any;
            created_at: any;
        }[];
        total: number;
    }>;
}
