import { type ControlRunResult, type ControlRuntimeConfig } from './control-runtime';
import { type ProposeFn, type Review, type ReviewFn, type ReviewMemoryEntry, type ReviewMemoryStore, type Verification, type VerifyFn } from './propose-review';
import type { FailureClass } from './trace/schema';
import type { TraceStore } from './trace/store';
export interface ProposeReviewControlState<State, Summary = unknown> {
    shot: number;
    state: State;
    priorReview: Review | null;
    verification: Verification;
    traceSummary?: Summary;
    memory: ReviewMemoryEntry[];
    completed: boolean;
    reviewAvailable: boolean;
    reviewError?: string;
}
export interface ProposeReviewControlAction {
    type: 'propose-review-shot';
    shot: number;
}
export interface ProposeReviewControlResult<State, Summary = unknown> {
    state: State;
    verification: Verification;
    traceSummary?: Summary;
    review: Review | null;
    reviewAvailable: boolean;
    reviewError?: string;
}
export interface ProposeReviewControlConfig<State, Summary = unknown> {
    goal: string;
    initialState: State;
    propose: ProposeFn<State, Summary>;
    verify: VerifyFn<State>;
    review: ReviewFn<State, Summary>;
    maxShots?: number;
    maxWallMs?: number;
    memory?: ReviewMemoryStore;
    store?: TraceStore;
    scenarioId?: string;
    projectId?: string;
    variantId?: string;
    fallbackInstruction?: string;
    confidenceFloor?: number;
    confidenceFloorWindow?: number;
    failureClassFromVerification?: (verification: Verification) => FailureClass | undefined;
    actionFailure?: ControlRuntimeConfig<ProposeReviewControlState<State, Summary>, ProposeReviewControlAction, ProposeReviewControlResult<State, Summary>>['actionFailure'];
}
export declare function runProposeReviewAsControlLoop<State, Summary = unknown>(config: ProposeReviewControlConfig<State, Summary>): Promise<ControlRunResult<ProposeReviewControlState<State, Summary>, ProposeReviewControlAction, ProposeReviewControlResult<State, Summary>>>;
export declare function controlFailureClassFromVerification(verification: Verification): FailureClass | undefined;
//# sourceMappingURL=propose-review-control.d.ts.map