import { QueryType } from './query-validator'; export interface QueryAuditEntry { timestamp: Date; queryType: QueryType; database?: string; query: string; success: boolean; error?: string; duration?: number; rowCount?: number; } export interface AuditLoggerOptions { enabled?: boolean; logToConsole?: boolean; maxQueryLength?: number; } /** * Logs and tracks all database operations for security auditing */ export declare class AuditLogger { private readonly options; private logs; constructor(options?: AuditLoggerOptions); /** * Logs a query execution * @param entry - Audit entry without timestamp (added automatically) */ logQuery(entry: Omit): void; /** * Logs a successful query execution * @param queryType - Type of query executed * @param query - SQL query text * @param database - Database name (optional) * @param duration - Execution duration in milliseconds (optional) * @param rowCount - Number of rows returned/affected (optional) */ logSuccess(queryType: QueryType, query: string, database?: string, duration?: number, rowCount?: number): void; /** * Logs a failed query execution * @param queryType - Type of query attempted * @param query - SQL query text * @param error - Error message * @param database - Database name (optional) * @param duration - Execution duration in milliseconds (optional) */ logFailure(queryType: QueryType, query: string, error: string, database?: string, duration?: number): void; /** * Gets all audit logs * @returns Read-only array of all audit entries */ getLogs(): ReadonlyArray; /** * Gets logs filtered by criteria * @param filter - Filter criteria object * @returns Filtered array of audit entries */ getFilteredLogs(filter: { startTime?: Date; endTime?: Date; queryType?: QueryType; success?: boolean; database?: string; }): QueryAuditEntry[]; /** * Clears all logs from memory */ clearLogs(): void; /** * Gets audit statistics * @returns Statistics object with query counts and performance metrics */ getStats(): { totalQueries: number; successfulQueries: number; failedQueries: number; queryTypeBreakdown: Record; averageDuration: number; }; /** * Truncates a query to the maximum length */ private truncateQuery; /** * Writes an audit entry to the console */ private writeToConsole; } //# sourceMappingURL=audit-logger.d.ts.map