import { Pool } from 'pg';
import { PoolClient } from 'pg';
import { Repositories } from './Repositories';
export interface DbConnection {
    user: string;
    password: string;
    host: string;
    port: number;
    database: string;
}
export interface ConnectionStringObj {
    connectionString: string;
}
export type TransactionClient = PoolClient;
export declare class ConnectionManager<T extends Repositories> {
    protected applicationName: string;
    protected migrationDirectory: string;
    protected migrationList: string[];
    readonly pool: Pool;
    readonly repositories: T;
    constructor(applicationName: string, connection: string | DbConnection, migrationDirectory: string, migrationList: string[], repositoryCreator: (dbManager: ConnectionManager<T>) => T);
    applyMigrations(): Promise<void>;
    close(): Promise<void>;
    executeInTransaction<T>(func: (client: TransactionClient) => Promise<T>): Promise<T>;
}
