import type { Database } from "./Database";
interface MigrationOptions<TDatabase extends Database> {
    database: TDatabase;
    targetVersion?: number;
    getCurrentVersion?: ((database: TDatabase) => Promise<number>) | null;
    updateVersion?: ((database: TDatabase, version: number) => Promise<void>) | null;
    migrationMap: Migration<TDatabase>[];
    writeLog?: (message: string) => void;
}
type Migration<TDatabase> = [version: number, apply: (database: TDatabase) => Promise<void>];
declare function migrate<TDatabase extends Database>({ database, targetVersion, getCurrentVersion, updateVersion, migrationMap, writeLog, }: MigrationOptions<TDatabase>): Promise<void>;
export type { MigrationOptions };
export { migrate };
