import type { AgentController } from '../runtime/agentController.js';
import { type RepoUpgradeMode, type RepoUpgradeReport, type UpgradeVariant } from '../core/repoUpgradeOrchestrator.js';
import { type CrossVariantComparison } from '../core/gitWorktreeManager.js';
export interface RepoUpgradeFlowOptions {
    controller: AgentController;
    workingDir: string;
    mode: RepoUpgradeMode;
    continueOnFailure?: boolean;
    additionalScopes?: string[];
    objective?: string;
    onEvent?: (event: {
        type: string;
        data?: Record<string, unknown>;
    }) => void;
    /** Callback to receive raw agent events (tool calls, streaming, thinking) for UI display. */
    onAgentEvent?: (event: import('../contracts/v1/agent.js').AgentEventUnion) => void;
    validationMode?: 'auto' | 'ask' | 'skip';
    confirmValidation?: (moduleId: string, commands: string[]) => Promise<boolean>;
    /** Create separate variant workspaces (git worktrees or copies) for dual RL. */
    enableVariantWorktrees?: boolean;
    /** Optional explicit variant workspace roots (overrides automatic creation). */
    variantWorkspaceRoots?: Partial<Record<UpgradeVariant, string>>;
    /** Optional upgrade/change-management policy to display in prompts and reports. */
    repoPolicy?: string;
    /** Enable parallel variant execution in dual-RL modes. */
    parallelVariants?: boolean;
    /** Apply winning variant's changes to primary workspace after completion. Defaults to true for tournament mode. */
    applyWinnerChanges?: boolean;
    /** Custom reward weights for scoring (uses defaults if not provided). */
    rewardWeights?: import('../core/repoUpgradeOrchestrator.js').RewardWeights;
    /** Optional factory to create variant-specific controllers for parallel execution. */
    createVariantController?: (variant: UpgradeVariant, workspaceRoot: string) => Promise<AgentController>;
}
/** Extended report with cross-variant comparison data */
export interface EnhancedRepoUpgradeReport extends RepoUpgradeReport {
    /** Comparison of changes between variants */
    variantComparison?: CrossVariantComparison;
    /** Whether winner's changes were applied to primary */
    winnerChangesApplied?: boolean;
    /** Which variant won overall (most step wins) */
    overallWinner?: UpgradeVariant;
}
export declare function runRepoUpgradeFlow(options: RepoUpgradeFlowOptions): Promise<EnhancedRepoUpgradeReport>;
//# sourceMappingURL=repoUpgradeRunner.d.ts.map