import type { UnwrapPromiseTuple } from "../utils/PromiseProvider";
import { PromiseBasedAbstractQueryRunner } from "./PromiseBasedAbstractQueryRunner";
import type { DatabaseType, QueryRunner } from "./QueryRunner";
import type { Sql, TransactionSql } from 'postgres';
export declare class PostgresQueryRunner extends PromiseBasedAbstractQueryRunner {
    database: DatabaseType;
    readonly connection: Sql;
    transaction?: TransactionSql;
    constructor(connection: Sql);
    useDatabase(database: DatabaseType): void;
    getNativeRunner(): Sql;
    getCurrentNativeTransaction(): TransactionSql | undefined;
    execute<RESULT>(fn: (connection: unknown, transaction?: unknown) => Promise<RESULT>): Promise<RESULT>;
    protected executeQueryReturning(query: string, params: any[]): Promise<any[]>;
    protected executeMutation(query: string, params: any[]): Promise<number>;
    executeBeginTransaction(): Promise<void>;
    executeCommit(): Promise<void>;
    executeRollback(): Promise<void>;
    isTransactionActive(): boolean;
    addParam(params: any[], value: any): string;
    executeInTransaction<P extends Promise<any>[]>(fn: () => [...P], outermostQueryRunner: QueryRunner): Promise<UnwrapPromiseTuple<P>>;
    executeInTransaction<T>(fn: () => Promise<T>, outermostQueryRunner: QueryRunner): Promise<T>;
    executeInTransaction(fn: () => Promise<any>[] | Promise<any>, outermostQueryRunner: QueryRunner): Promise<any>;
    lowLevelTransactionManagementSupported(): boolean;
}
