/**
 * @fileoverview 監査ログ機能を管理
 * @description データベース操作の監査ログを記録、管理します
 */
export interface AuditLogEntry {
    id: string;
    timestamp: Date;
    userId?: string;
    sessionId?: string;
    operation: string;
    tableName?: string;
    query?: string;
    success: boolean;
    errorMessage?: string;
    metadata?: Record<string, any>;
    ipAddress?: string;
    userAgent?: string;
}
export interface AuditLogOptions {
    enableConsoleOutput?: boolean;
    enableFileOutput?: boolean;
    logLevel?: 'info' | 'warn' | 'error';
    retentionDays?: number;
}
/**
 * 監査ログマネージャー
 * ksqlDBの操作を追跡・記録するための機能を提供
 */
export declare class AuditLogManager {
    private logs;
    private static instance;
    private options;
    private constructor();
    /**
     * シングルトンインスタンスを取得
     */
    static getInstance(options?: AuditLogOptions): AuditLogManager;
    /**
     * 監査ログエントリを記録
     */
    logOperation(entry: Omit<AuditLogEntry, 'id' | 'timestamp'>): AuditLogEntry;
    /**
     * 成功した操作をログ
     */
    logSuccess(operation: string, options?: Partial<AuditLogEntry>): AuditLogEntry;
    /**
     * 失敗した操作をログ
     */
    logFailure(operation: string, errorMessage: string, options?: Partial<AuditLogEntry>): AuditLogEntry;
    /**
     * ユーザーの操作履歴を取得
     */
    getUserAuditLogs(userId: string, limit?: number): AuditLogEntry[];
    /**
     * テーブルの操作履歴を取得
     */
    getTableAuditLogs(tableName: string, limit?: number): AuditLogEntry[];
    /**
     * 期間内の監査ログを取得
     */
    getAuditLogsByDateRange(startDate: Date, endDate: Date): AuditLogEntry[];
    /**
     * 失敗した操作のログを取得
     */
    getFailedOperations(limit?: number): AuditLogEntry[];
    /**
     * 監査ログ統計情報を取得
     */
    getAuditStatistics(): {
        totalOperations: number;
        successfulOperations: number;
        failedOperations: number;
        successRate: number;
        operationsByType: Record<string, number>;
        operationsByUser: Record<string, number>;
    };
    /**
     * 古いログをクリーンアップ
     */
    private cleanupOldLogs;
    /**
     * 監査ログをクリア（開発用）
     */
    clearAuditLogs(): void;
    /**
     * 監査ログをJSON形式でエクスポート
     */
    exportAuditLogs(startDate?: Date, endDate?: Date): string;
}
/**
 * 便利関数のエクスポート
 */
export declare const auditLog: {
    /**
     * 成功操作をログ
     */
    success: (operation: string, options?: Partial<AuditLogEntry>) => AuditLogEntry;
    /**
     * 失敗操作をログ
     */
    failure: (operation: string, errorMessage: string, options?: Partial<AuditLogEntry>) => AuditLogEntry;
    /**
     * マネージャーインスタンスを取得
     */
    getManager: (options?: AuditLogOptions) => AuditLogManager;
};
export default AuditLogManager;
//# sourceMappingURL=audit-log.d.ts.map