export type Result<T, E> = {
    ok: true;
    value: T;
} | {
    ok: false;
    error: E;
};
export declare class MigrationError extends Error {
    readonly reason: string;
    readonly fromVersion?: string | undefined;
    readonly toVersion?: string | undefined;
    constructor(reason: string, details?: {
        fromVersion?: string | undefined;
        toVersion?: string | undefined;
    });
}
export interface MigrationStep {
    readonly fromVersion: string;
    readonly toVersion: string;
    readonly migrate: (record: unknown) => unknown;
    readonly destructive?: boolean;
    readonly backupArtifactRef?: string;
}
export declare function migrate<T = unknown>(record: unknown, steps: readonly MigrationStep[]): Result<T, MigrationError>;
//# sourceMappingURL=migrate.d.ts.map