import { PoolClient } from 'pg';
import { Logger } from '@squiz/dx-logger-lib';
export type Migration = {
    (db: PoolClient, logger: Logger): Promise<void>;
};
export declare class Migrator {
    protected migrationDir: string;
    protected migrationList: string[];
    protected pool: PoolClient;
    constructor(migrationDir: string, migrationList: string[], pool: PoolClient);
    protected ensureMigrationTableExists(): Promise<import("pg").QueryResult<any>>;
    protected getAppliedMigrations(): Promise<any[]>;
    protected doSqlMigration(migration: string, sql: string): Promise<void>;
    protected getPending(migrationsList: string[], appliedMigrations: string[]): Promise<string[]>;
    protected getSql(migration: string): Promise<string>;
    protected tryToObtainLock(): Promise<boolean>;
    protected releaseLock(): Promise<void>;
    migrate(): Promise<any>;
    protected runMigrations(): Promise<void>;
    protected doScriptMigration(migration: string): Promise<void>;
    protected runMigration(migration: string): Promise<void>;
    protected doMigrationWork(migration: string): Promise<void>;
    protected dispose(): void;
}
