import { DataSource } from 'typeorm';
import { QueryWatcherService } from './query-watcher.service';
export interface QueryContext {
    id: string;
    sql: string;
    parameters: any[];
    startTime: number;
    endTime?: number;
    duration?: number;
    connectionId?: string;
    userId?: string;
    sessionId?: string;
    traceId?: string;
    stack?: string;
    operation: 'select' | 'insert' | 'update' | 'delete' | 'raw';
    entityName?: string;
    tableName?: string;
    affectedRows?: number;
    resultCount?: number;
    error?: Error;
}
export interface ConnectionInfo {
    id: string;
    database: string;
    host: string;
    port: number;
    username: string;
    poolSize: number;
    activeConnections: number;
    idleConnections: number;
    waitingConnections: number;
    acquiredConnections: number;
}
export declare class QueryWatcherInterceptor {
    private readonly queryWatcher;
    private readonly dataSource;
    private readonly logger;
    private readonly originalMethods;
    private queryCounter;
    constructor(queryWatcher: QueryWatcherService, dataSource: DataSource);
    setupInterception(): Promise<void>;
    private interceptQueryRunner;
    private interceptQueryBuilder;
    private interceptRepository;
    private interceptRepositoryMethods;
    private createQueryContext;
    private createQueryBuilderContext;
    private createRepositoryContext;
    private detectOperationType;
    private mapRepositoryMethodToOperation;
    private extractTableName;
    private captureStack;
    private generateQueryId;
    private generateTraceId;
    getConnectionInfo(): Promise<ConnectionInfo>;
    cleanup(): Promise<void>;
}
