import { type PhaseHintProposal } from './phaseHintsRenderer';
import { type WorktreeHandle } from './worktreeRunner';
export interface ProposeStrategyPatchInput {
    /** Validated proposal from the review agent. */
    proposal: PhaseHintProposal;
    /** Scene whose strategy file to patch (e.g. `scrolling`, `startup`). */
    scene: string;
    /** Unique job id (matches worktreeRunner's whitelist regex). */
    jobId: string;
    /** Optional: override the validation step (used by tests). */
    validate?: (handle: WorktreeHandle) => Promise<{
        ok: boolean;
        details?: string;
    }>;
    /** Optional: override the tool registry passed to the renderer. */
    toolRegistry?: ReadonlySet<string>;
    /** Override repo root — for tests. */
    workingDir?: string;
}
export type ProposeRejectReason = 'render_failed' | 'worktree_failed' | 'patch_failed' | 'validation_failed';
export type ProposeResult = {
    ok: true;
    handle: WorktreeHandle;
    patchFingerprint: string;
    phaseHintId: string;
    renderedYaml: string;
    strategyFilePath: string;
} | {
    ok: false;
    reason: ProposeRejectReason;
    details: string;
};
/**
 * Drive the full pipeline. On success, the worktree is left intact so the
 * caller can run downstream checks; the worktree handle is returned for
 * cleanup. On failure, the worktree is cleaned up (if it was opened) and a
 * structured reason is returned — never throws.
 */
export declare function proposeStrategyPatch(input: ProposeStrategyPatchInput): Promise<ProposeResult>;
//# sourceMappingURL=proposeStrategyPatch.d.ts.map