import type { Logger } from "./logger.service.js";
export interface QueryLogEntry {
    query: string;
    params?: any[];
    duration: number;
    timestamp: string;
    database?: string;
    requestId?: string;
}
export interface QueryLoggerConfig {
    enabled: boolean;
    slowQueryThreshold: number;
    maxLogs: number;
    logDebugQueries: boolean;
}
export declare const DEFAULT_QUERY_LOGGER_CONFIG: QueryLoggerConfig;
/**
 * Logs database queries and identifies slow ones.
 */
export declare class QueryLogger {
    private logs;
    private config;
    private logger;
    constructor(logger: Logger, options?: Partial<QueryLoggerConfig>);
    /**
     * Logs a query execution.
     * @param query The SQL query string.
     * @param params Query parameters (optional).
     * @param duration Query execution duration in milliseconds.
     * @param database Optional database type/name.
     * @param requestId Optional associated request ID.
     */
    logQuery(query: string, params: any[] | undefined, duration: number, database?: string, requestId?: string): void;
    /**
     * Gets all logged queries.
     * @returns Array of query log entries.
     */
    getLogs(): QueryLogEntry[];
    /**
     * Gets slow queries (queries that took longer than the configured threshold).
     * @param threshold Optional custom threshold in milliseconds to override config for this call.
     * @returns Array of slow query log entries.
     */
    getSlowQueries(threshold?: number): QueryLogEntry[];
    /**
     * Clears all stored logs.
     */
    clearLogs(): void;
    /**
     * Updates the query logger's configuration dynamically.
     * @param options Partial configuration options to update.
     */
    configure(options: Partial<QueryLoggerConfig>): void;
    /**
     * Gets query statistics.
     */
    getStats(): {
        totalQueries: number;
        slowQueries: number;
        averageDuration: number;
        maxDuration: number;
        byDatabase: Record<string, {
            count: number;
            avgDuration: number;
        }>;
    };
}
//# sourceMappingURL=query-logger.d.ts.map