import type { App } from "./app.js";
import type { MigrationsRunner } from "./migrations_runner.js";
export type Migration = {
    up?: (txApp: App) => void;
    down?: (txApp: App) => void;
    file?: string;
    reapplyCondition?: (txApp: App, runner: MigrationsRunner, fileName: string) => boolean;
};
type ResolvedMigration = Omit<Migration, "file"> & {
    file: string;
};
export declare class MigrationsList {
    #private;
    item(index: number): ResolvedMigration | undefined;
    Item(index: number): ResolvedMigration | undefined;
    items(): ResolvedMigration[];
    Items(): ResolvedMigration[];
    copy(list: MigrationsList): void;
    Copy(list: MigrationsList): void;
    add(migration: Migration): void;
    Add(migration: Migration): void;
    register(up: ((txApp: App) => void) | undefined, down: ((txApp: App) => void) | undefined, file?: string): void;
    Register(up: ((txApp: App) => void) | undefined, down: ((txApp: App) => void) | undefined, file?: string): void;
    private sort;
}
export {};
