/**
 * dcrouter migration runner.
 *
 * Uses @push.rocks/smartmigration via dynamic import so smartmigration's type
 * chain (which pulls in mongodb 7.x and related types) doesn't leak into
 * compile-time type checking for this folder.
 */
/** Matches the subset of IMigrationRunResult we actually log. */
export interface IMigrationRunResult {
    stepsApplied: Array<unknown>;
    wasFreshInstall: boolean;
    currentVersionBefore: string | null;
    currentVersionAfter: string;
    totalDurationMs: number;
}
export interface IMigrationRunner {
    run(): Promise<IMigrationRunResult>;
}
export interface IDcRouterMigrationOptions {
    remoteIngressHubSettings?: {
        enabled?: boolean;
        tunnelPort?: number;
        hubDomain?: string | null;
        performance?: Record<string, any> | null;
    };
    emailServerSettings?: {
        enabled?: boolean;
        emailConfig?: Record<string, any>;
        emailPortConfig?: Record<string, any>;
    };
}
/**
 * Create a configured SmartMigration runner with all dcrouter migration steps registered.
 *
 * Call `.run()` on the returned instance at startup (after DcRouterDb is ready,
 * before any service that reads migrated collections).
 *
 * @param db - The initialized SmartdataDb instance from DcRouterDb.getDb()
 * @param targetVersion - The current app version (from commitinfo.version)
 */
export declare function createMigrationRunner(db: unknown, targetVersion: string, options?: IDcRouterMigrationOptions): Promise<IMigrationRunner>;
