import EventEmitter from 'node:events';
import type * as types from './types.ts';
export declare const TRANSACTION_ROLLBACK_TIMEOUT_MS = 5000;
declare class Db extends EventEmitter implements types.IDatabase, types.EventsMixin {
    private pool;
    private config;
    private clock;
    private sessionStatements;
    opened: boolean;
    constructor(config: types.DatabaseOptions & {
        clock?: types.Clock;
    });
    events: {
        error: string;
    };
    open(): Promise<void>;
    close(): Promise<void>;
    setSessionStatements(statements: string[]): Promise<void>;
    executeSql(text: string, values?: unknown[]): Promise<import("pg").QueryResult<any>>;
    listen(channel: string, onNotification: (payload: string) => void, onReconnect: () => void): Promise<types.ListenHandle>;
    beginTransaction(): Promise<types.TransactionHandle>;
    withTransaction<T>(fn: (db: types.IDatabase) => Promise<T>): Promise<T>;
}
export default Db;
//# sourceMappingURL=db.d.ts.map