import { ConnectionState } from '../constants.js';
import type { ConnectionConfiguration } from '../interfaces/database-connection-params.js';
import { SafeEventEmitter } from '../safe-event-emitter.js';
import type { Callback, Maybe } from '../types.js';
import { Frontend } from './frontend.js';
import { Protocol } from './protocol.js';
export type CaptureCallback = (code: Protocol.BackendMessageCode, msg: any, done: (err: Maybe<Error>, result?: any) => void) => void | Promise<void>;
export interface SocketError extends Error {
    code: string;
}
export declare class PgSocket extends SafeEventEmitter {
    options: ConnectionConfiguration;
    private _state;
    private _socket?;
    private _backend;
    private _frontend;
    private _sessionParameters;
    private _saslSession?;
    private _processID?;
    private _secretKey?;
    constructor(options: ConnectionConfiguration);
    get state(): ConnectionState;
    get processID(): Maybe<number>;
    get secretKey(): Maybe<number>;
    get sessionParameters(): Record<string, string>;
    connect(): void;
    close(): void;
    sendParseMessage(args: Frontend.ParseMessageArgs, cb?: Callback): void;
    sendBindMessage(args: Frontend.BindMessageArgs, cb?: Callback): void;
    sendDescribeMessage(args: Frontend.DescribeMessageArgs, cb?: Callback): void;
    sendExecuteMessage(args: Frontend.ExecuteMessageArgs, cb?: Callback): void;
    sendCloseMessage(args: Frontend.CloseMessageArgs, cb?: Callback): void;
    sendQueryMessage(sql: string, cb?: Callback): void;
    sendFlushMessage(cb?: Callback): void;
    sendTerminateMessage(cb?: Callback): void;
    sendSyncMessage(): void;
    capture(callback: CaptureCallback): Promise<any>;
    protected _removeListeners(): void;
    protected _reset(): void;
    protected _handleConnect(): void;
    protected _handleClose(): void;
    protected _handleError(err: unknown): void;
    protected _handleData(data: Buffer): void;
    protected _resolvePassword(cb: (password: string) => void): void;
    protected _handleAuthenticationMessage(msg?: any): void;
    protected _handleParameterStatus(msg: Protocol.ParameterStatusMessage): void;
    protected _handleBackendKeyData(msg: Protocol.BackendKeyDataMessage): void;
    protected _handleCommandComplete(msg: any): Protocol.CommandCompleteMessage;
    protected _send(data: Buffer, cb?: Callback): void;
}
