import type { RepoUpgradeMode, RepoUpgradeModeDefinition, RepoUpgradeModule, RepoUpgradeStep, UpgradeStepExecutionInput, UpgradeStepResult, UpgradeVariant } from './repoUpgradeOrchestrator.js';
export interface VariantExecutionContext {
    parallelVariants?: boolean;
    variantWorkspaceRoots?: Partial<Record<UpgradeVariant, string>>;
    repoPolicy?: string;
}
export interface VariantExecutionOptions {
    module: RepoUpgradeModule;
    step: RepoUpgradeStep;
    mode: RepoUpgradeMode;
    modeDefinition: RepoUpgradeModeDefinition;
    context: VariantExecutionContext;
    executeVariant: (input: UpgradeStepExecutionInput) => Promise<UpgradeStepResult>;
    emit?: (event: {
        type: string;
        timestamp: number;
        data?: Record<string, unknown>;
    }) => void;
}
export declare function resolveWorkspaceRoot(variant: UpgradeVariant, context: VariantExecutionContext): string | undefined;
export declare function canRunVariantsParallel(modeDefinition: RepoUpgradeModeDefinition, context: VariantExecutionContext): boolean;
export declare function executeVariants(options: VariantExecutionOptions): Promise<Partial<Record<UpgradeVariant, UpgradeStepResult>>>;
//# sourceMappingURL=variantExecution.d.ts.map