import { DataTypeMap } from '../data-type-map.js';
import type { QueryOptions } from '../interfaces/query-options.js';
import type { Maybe, OID } from '../types.js';
import type { SASL } from './sasl.js';
import { type SmartBufferConfig } from './smart-buffer.js';
export interface FrontendOptions {
    buffer?: SmartBufferConfig;
}
export declare namespace Frontend {
    interface StartupMessageArgs {
        user: string;
        database: string;
        [index: string]: string;
    }
    interface BindMessageArgs {
        typeMap: DataTypeMap;
        statement?: string;
        portal?: string;
        paramTypes?: Maybe<OID>[];
        params?: any[];
        queryOptions: QueryOptions;
    }
    interface ParseMessageArgs {
        statement?: string;
        sql: string;
        paramTypes?: Maybe<OID>[];
    }
    interface DescribeMessageArgs {
        type: 'P' | 'S';
        name?: string;
    }
    interface ExecuteMessageArgs {
        portal?: string;
        fetchCount?: number;
    }
    interface CloseMessageArgs {
        type: 'P' | 'S';
        name?: string;
    }
}
export declare class Frontend {
    private _io;
    constructor(options?: FrontendOptions);
    getSSLRequestMessage(): Buffer;
    getStartupMessage(args: Frontend.StartupMessageArgs): Buffer;
    getPasswordMessage(password: string): Buffer;
    getSASLMessage(sasl: SASL.Session): Buffer;
    getSASLFinalMessage(session: SASL.Session): Buffer;
    getParseMessage(args: Frontend.ParseMessageArgs): Buffer;
    getBindMessage(args: Frontend.BindMessageArgs): Buffer;
    getDescribeMessage(args: Frontend.DescribeMessageArgs): Buffer;
    getExecuteMessage(args: Frontend.ExecuteMessageArgs): Buffer;
    getCloseMessage(args: Frontend.CloseMessageArgs): Buffer;
    getQueryMessage(sql: string): Buffer;
    getFlushMessage(): Buffer;
    getTerminateMessage(): Buffer;
    getSyncMessage(): Buffer;
}
