export type ResolveIOQaPolicyContext = 'support_ticket' | 'aicoder_dashboard' | 'ai_terminal' | 'general';
export interface ResolveIOQaPolicyOptions {
    context?: ResolveIOQaPolicyContext;
    includeDevServerRules?: boolean;
    qaRepairEnabled?: boolean;
    qaEvidenceRequired?: boolean;
    qaDistinctScreenshotRequired?: boolean;
    qaFailFastCompile?: boolean;
    qaLiveDataRequired?: boolean;
    qaSelfRepairMaxWaves?: number;
    currentRoute?: string;
    currentContextMode?: string;
    customInstructions?: string[];
}
export interface ResolveIORunnerBasicsOptions extends ResolveIOQaPolicyOptions {
    includeQaPolicy?: boolean;
    includeTokenDiscipline?: boolean;
    includeDependencyBootstrap?: boolean;
    includeRepairLoop?: boolean;
    includeEvidenceContract?: boolean;
    maxContextBullets?: number;
    maxRepairWaves?: number;
}
export interface ResolveIORunnerPromptInput extends ResolveIORunnerBasicsOptions {
    objective?: string;
    blockers?: string[];
    relevantFiles?: string[];
    evidence?: string[];
    priorSummary?: string;
    latestFailure?: string;
    maxBlockers?: number;
    maxFiles?: number;
    maxEvidence?: number;
    maxTextChars?: number;
}
export interface ResolveIORunnerContract {
    context: ResolveIOQaPolicyContext;
    sections: {
        runnerBasics: string[];
        tokenDiscipline: string[];
        dependencyBootstrap: string[];
        repairLoop: string[];
        qaPolicy: string[];
        evidenceContract: string[];
        finalNotes: string[];
    };
    rules: string[];
    promptLines: string[];
}
export interface ResolveIORunnerPromptBundle extends ResolveIORunnerContract {
    objective: string;
    contextLines: string[];
    repairLines: string[];
    fullPromptLines: string[];
}
export interface ResolveIORunnerRepairPlan {
    blockerClass: string;
    sourceGate: string;
    targetFiles: string[];
    lineHints: string[];
    failureEvidence: string[];
    requiredProof: string[];
    repairRecipe: string[];
    selfGateCommands: string[];
    passingCondition: string;
}
export interface ResolveIORunnerRepairTargetOverride {
    preferredSuffixes?: string[];
    fallbackFiles?: string[];
}
export interface ResolveIORunnerRepairPlanInput extends ResolveIORunnerBasicsOptions {
    blockers?: string[];
    changedFiles?: string[];
    gateSource?: string;
    targetFileOverrides?: Record<string, ResolveIORunnerRepairTargetOverride>;
}
export interface ResolveIORunnerRepairContinuationInput {
    currentBlockers?: string[];
    previousBlockers?: string[];
    activeContractBlockers?: string[];
    currentAttempt?: number;
    maxAttempts?: number;
    currentRepairWaveCount?: number;
    maxRepairWaves?: number;
    diffHash?: string;
    evidenceHash?: string;
    previousDiffHash?: string;
    previousEvidenceHash?: string;
}
export type ResolveIORunnerRepairContinuationAction = 'continue_attempt' | 'start_repair_wave' | 'park_repeated_blocker' | 'park_no_progress' | 'park_repair_wave_budget';
export interface ResolveIORunnerRepairContinuationDecision {
    action: ResolveIORunnerRepairContinuationAction;
    repeatedBlockers: string[];
    newBlockers: string[];
    normalizedCurrentBlockers: string[];
    nextAttempt: number;
    nextRepairWaveCount: number;
    reason: string;
}
export interface ResolveIORunnerQaCoverageInput {
    ticketText?: string;
    changedFiles?: string[];
}
export declare function normalizeResolveIOQaPolicyOptions(options?: ResolveIOQaPolicyOptions): Required<Omit<ResolveIOQaPolicyOptions, 'currentRoute' | 'currentContextMode' | 'customInstructions'>> & {
    currentRoute: string;
    currentContextMode: string;
    customInstructions: string[];
};
export declare function buildResolveIOQaPolicyRules(options?: ResolveIOQaPolicyOptions): string[];
export declare function buildResolveIORunnerQaCoverageChecklist(input?: ResolveIORunnerQaCoverageInput): string[];
export declare function buildResolveIORunnerBasicsRules(options?: ResolveIORunnerBasicsOptions): string[];
export declare function buildResolveIORunnerContract(options?: ResolveIORunnerBasicsOptions): ResolveIORunnerContract;
export declare function buildResolveIORunnerPromptLines(options?: ResolveIORunnerBasicsOptions): string[];
export declare function buildResolveIORunnerPromptBundle(input?: ResolveIORunnerPromptInput): ResolveIORunnerPromptBundle;
export declare function buildResolveIORunnerRepairPromptLines(input?: ResolveIORunnerPromptInput): string[];
export declare function normalizeResolveIORunnerBlocker(entry: string): string;
export declare function findRepeatedResolveIORunnerBlockers(previousBlockers?: string[], currentBlockers?: string[]): string[];
export declare function decideResolveIORunnerRepairContinuation(input?: ResolveIORunnerRepairContinuationInput): ResolveIORunnerRepairContinuationDecision;
export declare function classifyResolveIORunnerBlocker(blocker: string): string;
export declare function extractResolveIORunnerRepairLineHints(blocker: string): string[];
export declare function extractResolveIORunnerRepairTargetFiles(blocker: string, changedFiles?: string[]): string[];
export declare function selectResolveIORunnerRepairTargetFiles(changedFiles?: string[], preferredSuffixes?: string[], fallbackFiles?: string[]): string[];
export declare function sanitizeResolveIORunnerRepairPlans(value: any): ResolveIORunnerRepairPlan[];
export declare function buildResolveIORunnerRepairPlans(input?: ResolveIORunnerRepairPlanInput): ResolveIORunnerRepairPlan[];
