import { Db, MongoClientOptions } from 'mongodb';
export type SyslogLevels = 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'crit' | 'alert';
export type Logger = (level: SyslogLevels, ...args: unknown[]) => void;
export interface DbProperties {
    connectionUrl: string;
    name?: string;
    options?: MongoClientOptions;
}
export interface MigratorOptions {
    log?: boolean;
    logger?: Logger;
    logIfLatest?: boolean;
    collectionName?: string;
    db: DbProperties | Db;
}
export interface Migration {
    version: number;
    name: string;
    up: (db: Db, logger?: Logger) => Promise<void> | void;
    down: (db: Db, logger?: Logger) => Promise<void> | void;
}
export declare class Migrator {
    private migratorKey;
    private defaultMigration;
    private list;
    private collection;
    private db;
    private options;
    constructor(opts?: MigratorOptions);
    config(opts?: MigratorOptions): Promise<void>;
    add(migration: Migration): void;
    migrateTo(command: string | number): Promise<void>;
    getNumberOfMigrations(): number;
    getVersion(): Promise<number>;
    unlock(): void;
    reset(): Promise<void>;
    private execute;
    private getControl;
    private setControl;
    private findIndexByVersion;
}
