/**
 * AuditRepository — 审计日志的仓储实现
 *
 * 从 AuditStore 提取的数据操作，
 * 使用 Drizzle 类型安全 API 操作 audit_logs 表。
 */
import { auditLogs } from '../../infrastructure/database/drizzle/schema.js';
import { RepositoryBase } from '../base/RepositoryBase.js';
export interface AuditLogEntity {
    id: string;
    timestamp: number;
    actor: string;
    actorContext: Record<string, unknown>;
    action: string;
    resource: string | null;
    operationData: Record<string, unknown>;
    result: string;
    errorMessage: string | null;
    duration: number | null;
}
export interface AuditLogInsert {
    id: string;
    timestamp: number;
    actor: string;
    actorContext?: string;
    action: string;
    resource?: string;
    operationData?: string;
    result: string;
    errorMessage?: string | null;
    duration?: number | null;
}
export interface AuditQueryFilters {
    actor?: string;
    action?: string;
    result?: string;
    startDate?: number;
    endDate?: number;
    limit?: number;
}
export interface AuditStats {
    timeRange: string;
    total: number;
    success: number;
    failure: number;
    successRate: string;
    avgDuration: string;
    byActor: Array<{
        actor: string;
        count: number;
    }>;
    byAction: Array<{
        action: string;
        count: number;
    }>;
}
export declare class AuditRepositoryImpl extends RepositoryBase<typeof auditLogs, AuditLogEntity> {
    #private;
    constructor(drizzle: ConstructorParameters<typeof RepositoryBase<typeof auditLogs, AuditLogEntity>>[0]);
    findById(id: string): Promise<AuditLogEntity | null>;
    create(data: AuditLogInsert): Promise<AuditLogEntity>;
    delete(id: string): Promise<boolean>;
    /** 动态多条件查询 */
    query(filters?: AuditQueryFilters): Promise<AuditLogEntity[]>;
    /** 根据请求 ID 查询 */
    findByRequestId(requestId: string): Promise<AuditLogEntity | null>;
    /** 根据角色查询 */
    findByActor(actor: string, limit?: number): Promise<AuditLogEntity[]>;
    /** 根据操作查询 */
    findByAction(action: string, limit?: number): Promise<AuditLogEntity[]>;
    /** 根据结果查询 */
    findByResult(result: string, limit?: number): Promise<AuditLogEntity[]>;
    /** 获取统计数据 */
    getStats(timeRange?: string): Promise<AuditStats>;
    /**
     * 清理过期审计日志
     * @param maxAgeDays 保留天数
     */
    cleanup(maxAgeDays?: number): Promise<{
        deleted: number;
    }>;
    /**
     * Guard 违规规则名 TOP-N (SkillAdvisor.#getGuardPatterns)
     */
    findTopGuardViolationRules(minCount: number, limit: number): Promise<Array<{
        ruleName: string;
        cnt: number;
    }>>;
    /**
     * Guard 违规信号 (SignalCollector.#collectGuardSignals)
     */
    findGuardViolationSignals(limit: number): Promise<Array<{
        ruleName: string;
        cnt: number;
        lastAt: number;
    }>>;
    /**
     * 最近动作日志 (SignalCollector.#collectActionSignals)
     */
    findRecentActions(sinceTs: number, limit: number): Promise<Array<{
        actor: string;
        action: string;
        resource: string | null;
        result: string;
        timestamp: number;
    }>>;
}
