import type { ClientBase, ClientConfig, QueryArrayConfig, QueryArrayResult, QueryConfig, QueryResult } from 'pg';
import type { Logger } from './logger';
export interface DB {
    query(queryConfig: QueryArrayConfig, values?: any[]): Promise<QueryArrayResult>;
    query(queryConfig: QueryConfig): Promise<QueryResult>;
    query(queryTextOrConfig: string | QueryConfig, values?: any[]): Promise<QueryResult>;
    select(queryConfig: QueryArrayConfig, values?: any[]): Promise<any[]>;
    select(queryConfig: QueryConfig): Promise<any[]>;
    select(queryTextOrConfig: string | QueryConfig, values?: any[]): Promise<any[]>;
}
export interface DBConnection extends DB {
    createConnection(): Promise<void>;
    column(columnName: string, queryConfig: QueryArrayConfig, values?: any[]): Promise<any[]>;
    column(columnName: string, queryConfig: QueryConfig): Promise<any[]>;
    column(columnName: string, queryTextOrConfig: string | QueryConfig, values?: any[]): Promise<any[]>;
    connected: () => boolean;
    addBeforeCloseListener: (listener: any) => number;
    close(): Promise<void>;
}
export declare function db(connection: ClientBase | string | ClientConfig, logger?: Logger): DBConnection;
