import type { DocBlock } from './docs/types';
import type { OwnerShipMeta } from './ownership';
export type MigrationStepKind = 'schema' | 'data' | 'validation';
export interface MigrationCheck {
    description: string;
    expression: string;
}
export interface MigrationStepBase {
    kind: MigrationStepKind;
    description?: string;
    timeoutMs?: number;
    retries?: number;
    preChecks?: MigrationCheck[];
    postChecks?: MigrationCheck[];
}
export interface SchemaMigrationStep extends MigrationStepBase {
    kind: 'schema';
    sql: string;
}
export interface DataMigrationStep extends MigrationStepBase {
    kind: 'data';
    script: string;
}
export interface ValidationMigrationStep extends MigrationStepBase {
    kind: 'validation';
    assertion: string;
}
export type MigrationStep = SchemaMigrationStep | DataMigrationStep | ValidationMigrationStep;
export interface MigrationMeta extends OwnerShipMeta {
    /** Fully qualified migration name (e.g., "sigil.db.2025_01_add_users"). */
    key: string;
    /** Increment when the migration changes. */
    version: string;
}
export interface MigrationPlan {
    up: MigrationStep[];
    down?: MigrationStep[];
}
export interface MigrationSpec {
    meta: MigrationMeta;
    plan: MigrationPlan;
    dependencies?: string[];
}
export declare class MigrationRegistry {
    private readonly items;
    register(spec: MigrationSpec): this;
    list(): MigrationSpec[];
    get(name: string, version?: string): MigrationSpec | undefined;
}
export declare const tech_contracts_migrations_DocBlocks: DocBlock[];
