/// <reference types="node" />
import { Notification, PoolClient, QueryArrayConfig, QueryArrayResult, QueryConfig, QueryResult, QueryResultRow, Submittable } from 'pg';
import { NoticeMessage } from 'pg-protocol/dist/messages';
import stream from 'stream';
export declare class ProxyClient implements PoolClient {
    private readonly client;
    released: boolean;
    private releaseCheck;
    constructor(client: PoolClient);
    addListener(event: string | symbol, listener: (...args: any[]) => void): this;
    once(event: string | symbol, listener: (...args: any[]) => void): this;
    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
    off(event: string | symbol, listener: (...args: any[]) => void): this;
    removeAllListeners(event?: string | symbol): this;
    setMaxListeners(n: number): this;
    getMaxListeners(): number;
    listeners(event: string | symbol): Function[];
    rawListeners(event: string | symbol): Function[];
    emit(event: string | symbol, ...args: any[]): boolean;
    listenerCount(event: string | symbol): number;
    prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
    prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
    eventNames(): Array<string | symbol>;
    connect(): Promise<void>;
    connect(callback: (err: Error) => void): void;
    query<T extends Submittable>(queryStream: T): T;
    query<R extends any[] = any[], I extends any[] = any[]>(queryConfig: QueryArrayConfig<I>, values?: I): Promise<QueryArrayResult<R>>;
    query<R extends QueryResultRow = any, I extends any[] = any[]>(queryConfig: QueryConfig<I>): Promise<QueryResult<R>>;
    query<R extends QueryResultRow = any, I extends any[] = any[]>(queryTextOrConfig: string | QueryConfig<I>, values?: I): Promise<QueryResult<R>>;
    query<R extends any[] = any[], I extends any[] = any[]>(queryConfig: QueryArrayConfig<I>, callback: (err: Error, result: QueryArrayResult<R>) => void): void;
    query<R extends QueryResultRow = any, I extends any[] = any[]>(queryTextOrConfig: string | QueryConfig<I>, callback: (err: Error, result: QueryResult<R>) => void): void;
    query<R extends QueryResultRow = any>(queryText: string, values: any[], callback: (err: Error, result: QueryResult<R>) => void): void;
    copyFrom(queryText: string): stream.Writable;
    copyTo(queryText: string): stream.Readable;
    pauseDrain(): void;
    resumeDrain(): void;
    escapeIdentifier(str: string): string;
    escapeLiteral(str: string): string;
    on(event: 'drain', listener: () => void): this;
    on(event: 'error', listener: (err: Error) => void): this;
    on(event: 'notice', listener: (notice: NoticeMessage) => void): this;
    on(event: 'notification', listener: (message: Notification) => void): this;
    on(event: 'end', listener: () => void): this;
    release(err?: Error | boolean): void;
    proxyRelease(): void;
}
