import type { MigrationClient, MigrationSource, RunResult } from "@voyant-travel/framework-migrations"; import type { VoyantProjectMigration, VoyantProjectMigrationPlan, VoyantProjectSchemaMigration } from "./project-resolver.js"; export interface NodeMigrationRunnerOptions { databaseUrl?: string; dryRun?: boolean; } export interface NodeMigrationStatus { id: string; migrationKind: VoyantProjectMigration["migrationKind"]; status: "applied" | "skipped" | "failed"; detail?: string; } export interface NodeMigrationExecutionReport { schemaVersion: "voyant.migration-result.v1"; contentHash: string; applied: readonly NodeMigrationStatus[]; skipped: readonly NodeMigrationStatus[]; failed: readonly NodeMigrationStatus[]; } export interface SetupMigrationContext { client: MigrationClient; dryRun: false; } export type SetupMigrationHandler = (context: SetupMigrationContext) => unknown | Promise; export interface NodeMigrationRuntime { setupLoaders: Readonly Promise>>; resolveFrom: string | URL; } interface ConnectedMigrationClient extends MigrationClient { end(): Promise; } export interface NodeMigrationRunnerDependencies { connect(databaseUrl: string): Promise; loadSchemaSource(migration: VoyantProjectSchemaMigration, resolveFrom: string | URL): Promise; runSchema(client: MigrationClient, source: MigrationSource): Promise; } export declare function executeNodeMigrationPlan(plan: VoyantProjectMigrationPlan, runtime: NodeMigrationRuntime, options?: NodeMigrationRunnerOptions, dependencies?: NodeMigrationRunnerDependencies): Promise; export declare function loadNodeSchemaMigrationSource(migration: VoyantProjectSchemaMigration, resolveFrom: string | URL): Promise; export {};