import type { PatchValidation } from "@oscharko-dev/keiko-tools";
import { type EventEmitter } from "./emit.js";
import { type UnitTestWorkflowDeps, type UnitTestWorkflowInput, type WorkflowLimits } from "./types.js";
import type { WorkflowEventSink } from "./events.js";
export declare const NO_OP_SINK: WorkflowEventSink;
export interface WorkflowProgress {
    modelCallCount: number;
    patchRetryCount: number;
}
export interface RunState {
    readonly input: UnitTestWorkflowInput;
    readonly deps: UnitTestWorkflowDeps;
    readonly limits: WorkflowLimits;
    readonly signal: AbortSignal;
    readonly now: () => number;
    readonly emitter: EventEmitter;
    readonly startedAt: number;
    readonly progress: WorkflowProgress;
}
export interface AcceptedPatch {
    readonly diff: string;
    readonly validation: PatchValidation;
    readonly coveredBehavior: string | undefined;
    readonly knownGaps: string | undefined;
}
export interface ModelLoopResult {
    readonly accepted: AcceptedPatch | undefined;
    readonly modelCallCount: number;
    readonly patchRetryCount: number;
    readonly lastRejectionCode: string | undefined;
}
export declare const EMPTY_LOOP: ModelLoopResult;
export declare function resolveLimits(input: UnitTestWorkflowInput): WorkflowLimits;
export declare function buildRunState(input: UnitTestWorkflowInput, deps: UnitTestWorkflowDeps, fingerprint: string): RunState;
export declare function nextActionsFor(applied: boolean, files: readonly string[]): readonly string[];
//# sourceMappingURL=internal.d.ts.map