import type { ConfigV1, ConfigV2 } from "./types.js"; export { CURRENT_SCHEMA_VERSION } from "./schema.js"; export type MigrationValidator = (value: unknown) => unknown; export interface MigrationStep { readonly fromVersion: number; readonly toVersion: number; readonly migrate: (input: unknown) => unknown; } export interface MigrationRegistryOptions { readonly currentVersion?: number; readonly steps?: readonly MigrationStep[]; readonly validateFinal?: MigrationValidator; } /** * Pure, sequential migration registry. It never writes files and clones the * input before invoking user-supplied migration code. */ export declare class MigrationRegistry { readonly currentVersion: number; readonly steps: readonly MigrationStep[]; readonly validateFinal: MigrationValidator; constructor(options?: MigrationRegistryOptions); migrate(input: unknown): unknown; } export declare const defaultMigrationRegistry: MigrationRegistry; export declare function createMigrationRegistry(options?: MigrationRegistryOptions): MigrationRegistry; export declare function migrateConfig(value: unknown, registry?: MigrationRegistry): ConfigV1; /** Deterministic V1 -> V2 migration. No billing assumptions are introduced. */ export declare function migrateConfigV1ToV2(value: unknown): ConfigV2; export declare const currentMigrationRegistry: MigrationRegistry; export declare function migrateConfigToCurrent(value: unknown): ConfigV2;