/**
 * Audit Log System - 監査ログ機能
 */
/**
 * 監査ログレベル
 */
export declare enum AuditLogLevel {
    INFO = "INFO",
    WARN = "WARN",
    ERROR = "ERROR",
    SECURITY = "SECURITY"
}
/**
 * 監査ログの種類
 */
export declare enum AuditEventType {
    AUTH_LOGIN = "AUTH_LOGIN",
    AUTH_LOGOUT = "AUTH_LOGOUT",
    AUTH_FAILED = "AUTH_FAILED",
    AUTH_TOKEN_REFRESH = "AUTH_TOKEN_REFRESH",
    DATA_READ = "DATA_READ",
    DATA_WRITE = "DATA_WRITE",
    DATA_DELETE = "DATA_DELETE",
    DATA_EXPORT = "DATA_EXPORT",
    SYSTEM_START = "SYSTEM_START",
    SYSTEM_STOP = "SYSTEM_STOP",
    SYSTEM_ERROR = "SYSTEM_ERROR",
    SECURITY_VIOLATION = "SECURITY_VIOLATION",
    RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
    UNAUTHORIZED_ACCESS = "UNAUTHORIZED_ACCESS",
    ADMIN_USER_CREATE = "ADMIN_USER_CREATE",
    ADMIN_USER_DELETE = "ADMIN_USER_DELETE",
    ADMIN_POLICY_CHANGE = "ADMIN_POLICY_CHANGE"
}
/**
 * 監査ログエントリの型定義
 */
interface AuditLogEntry {
    timestamp: string;
    level: AuditLogLevel;
    eventType: AuditEventType;
    userId?: string;
    tenantId?: string;
    sessionId?: string;
    ip?: string;
    userAgent?: string;
    resource?: string;
    action?: string;
    result: 'SUCCESS' | 'FAILURE' | 'ERROR';
    message: string;
    details?: Record<string, any>;
    requestId?: string;
    duration?: number;
}
/**
 * 監査ログマネージャー
 */
export declare class AuditLogManager {
    private static instance;
    private config;
    private logQueue;
    private isProcessing;
    private constructor();
    /**
     * シングルトンインスタンスを取得
     */
    static getInstance(): AuditLogManager;
    /**
     * 監査ログを記録
     */
    static log(entry: Omit<AuditLogEntry, 'timestamp'>): void;
    /**
     * 認証成功ログ
     */
    static logAuthSuccess(userId: string, tenantId: string, sessionId: string, ip?: string): void;
    /**
     * 認証失敗ログ
     */
    static logAuthFailure(email: string, reason: string, ip?: string): void;
    /**
     * データアクセスログ
     */
    static logDataAccess(userId: string, tenantId: string, action: 'read' | 'write' | 'delete', resource: string, success: boolean, details?: Record<string, any>): void;
    /**
     * セキュリティ違反ログ
     */
    static logSecurityViolation(userId: string | undefined, tenantId: string | undefined, violationType: string, details: Record<string, any>, ip?: string): void;
    /**
     * レート制限違反ログ
     */
    static logRateLimitViolation(ip: string, endpoint: string, userId?: string): void;
    /**
     * 管理者操作ログ
     */
    static logAdminAction(adminUserId: string, tenantId: string, action: string, targetUserId?: string, details?: Record<string, any>): void;
    /**
     * ログエントリを追加
     */
    private addLogEntry;
    /**
     * ログキューを処理
     */
    private processLogQueue;
    /**
     * ログエントリをファイルに書き込み
     */
    private writeLogEntry;
    /**
     * ログディレクトリが存在することを確認
     */
    private ensureLogDirectory;
    /**
     * ログファイルのローテーション
     */
    private checkAndRotateLog;
    /**
     * ログファイルをローテーション
     */
    private rotateLogFile;
    /**
     * 古いログファイルを削除
     */
    private cleanupOldLogFiles;
    /**
     * ログを検索
     */
    static searchLogs(criteria: {
        userId?: string;
        tenantId?: string;
        eventType?: AuditEventType;
        startDate?: Date;
        endDate?: Date;
        limit?: number;
    }): Promise<AuditLogEntry[]>;
    /**
     * ログエントリを検索
     */
    private searchLogEntries;
    /**
     * ログエントリが検索条件に一致するかチェック
     */
    private matchesCriteria;
    /**
     * 統計情報を取得
     */
    static getStatistics(tenantId?: string, startDate?: Date, endDate?: Date): Promise<{
        totalEvents: number;
        eventsByType: Record<string, number>;
        eventsByUser: Record<string, number>;
        securityViolations: number;
    }>;
    /**
     * ログ統計を取得
     */
    private getLogStatistics;
}
export {};
//# sourceMappingURL=audit-log.d.ts.map