/**
 * SQLite-based audit logger with tamper resistance and high performance
 */
import { EventBus } from '../../core/event-bus.js';
import { PIIMasker } from './pii-masker.js';
import { AuditEntry, AuditQueryOptions, AuditStatistics, AuditRetentionPolicy, AuditIntegrityCheck, AuditExportOptions } from './types.js';
export interface AuditLoggerOptions {
    dbPath?: string;
    inMemory?: boolean;
    eventBus?: EventBus;
    retentionPolicy?: AuditRetentionPolicy;
    piiMasker?: PIIMasker;
    enableIntegrityChecks?: boolean;
    performanceTracking?: boolean;
    batchSize?: number;
    flushInterval?: number;
}
export declare class AuditLogger {
    private db;
    private eventBus?;
    private piiMasker;
    private retentionPolicy;
    private readonly enableIntegrityChecks;
    private readonly performanceTracking;
    private readonly batchSize;
    private pendingEntries;
    private flushTimer?;
    private preparedStatements;
    constructor(options?: AuditLoggerOptions);
    private initializeSchema;
    private prepareStatements;
    /**
     * Log an audit entry
     */
    log(entry: Omit<AuditEntry, 'id' | 'hash'>): Promise<void>;
    /**
     * Flush pending entries to database
     */
    flush(): Promise<void>;
    /**
     * Query audit logs
     */
    query(options?: AuditQueryOptions): Promise<AuditEntry[]>;
    /**
     * Get audit statistics
     */
    getStatistics(startTime: Date, endTime: Date): Promise<AuditStatistics>;
    /**
     * Export audit logs
     */
    export(options: AuditExportOptions): Promise<string>;
    /**
     * Check integrity of audit logs
     */
    checkIntegrity(hoursBack?: number): Promise<AuditIntegrityCheck>;
    /**
     * Clean up old entries based on retention policy
     */
    private cleanupOldEntries;
    /**
     * Calculate hash for an audit entry
     */
    private calculateEntryHash;
    /**
     * Calculate hash from database row
     */
    private calculateHashFromRow;
    /**
     * Convert database row to AuditEntry
     */
    private rowToAuditEntry;
    /**
     * Export to CSV format
     */
    private exportToCSV;
    /**
     * Export to SIEM format (CEF)
     */
    private exportToSIEM;
    /**
     * Close the database connection
     */
    close(): void;
    /**
     * Optimize the database
     */
    optimize(): Promise<void>;
}
//# sourceMappingURL=audit-logger.d.ts.map