import type { AuditStore } from './AuditStore.js';
/** Minimal EventBus shape for optional audit event emission */
interface AuditEventBus {
    emit(event: string, data: unknown): void;
}
/** AuditLogger - 审计日志记录器 */
export declare class AuditLogger {
    #private;
    auditStore: AuditStore;
    logger: import('winston').Logger;
    constructor(auditStore: AuditStore, eventBus?: AuditEventBus | null);
    /**
     * 记录审计日志
     * 兼容两种传入格式:
     *   Gateway 风格: { actor, action, resource, result, data, duration }
     *   Service 风格: { actor, action, resourceType, resourceId, details, timestamp }
     */
    log(entry: {
        requestId?: string;
        actor: string;
        action: string;
        resource?: string;
        resourceType?: string;
        resourceId?: string;
        data?: Record<string, unknown>;
        details?: unknown;
        context?: Record<string, unknown>;
        result?: string;
        error?: string;
        duration?: number;
    }): Promise<void>;
    /** 生成 ID */
    generateId(): string;
    /** 格式化资源 */
    formatResource(resource: unknown): string;
    /** 查询审计日志 */
    query(filters: {
        actor?: string;
        action?: string;
        result?: string;
        startDate?: number;
        endDate?: number;
        limit?: number;
    }): Promise<{
        id: string;
        timestamp: number;
        actor: string;
        actorContext: string | null;
        action: string;
        resource: string | null;
        operationData: string | null;
        result: string;
        errorMessage: string | null;
        duration: number | null;
    }[]>;
    /** 获取特定请求的日志 */
    getByRequestId(requestId: string): Promise<{
        id: string;
        timestamp: number;
        actor: string;
        actorContext: string | null;
        action: string;
        resource: string | null;
        operationData: string | null;
        result: string;
        errorMessage: string | null;
        duration: number | null;
    } | undefined>;
    /** 获取特定角色的日志 */
    getByActor(actor: string, limit?: number): Promise<{
        id: string;
        timestamp: number;
        actor: string;
        actorContext: string | null;
        action: string;
        resource: string | null;
        operationData: string | null;
        result: string;
        errorMessage: string | null;
        duration: number | null;
    }[]>;
    /** 获取特定操作的日志 */
    getByAction(action: string, limit?: number): Promise<{
        id: string;
        timestamp: number;
        actor: string;
        actorContext: string | null;
        action: string;
        resource: string | null;
        operationData: string | null;
        result: string;
        errorMessage: string | null;
        duration: number | null;
    }[]>;
    /** 获取失败的操作日志 */
    getFailures(limit?: number): Promise<{
        id: string;
        timestamp: number;
        actor: string;
        actorContext: string | null;
        action: string;
        resource: string | null;
        operationData: string | null;
        result: string;
        errorMessage: string | null;
        duration: number | null;
    }[]>;
    /** 统计审计数据 */
    getStats(timeRange: string): Promise<{
        timeRange: string;
        total: number;
        success: number;
        failure: number;
        successRate: string;
        avgDuration: string;
        byActor: {
            actor: string;
            count: number;
        }[];
        byAction: {
            action: string;
            count: number;
        }[];
    }>;
}
export default AuditLogger;
