import { AutoBeFunctionCallingMetric, AutoBeRealizeCorrectEvent, AutoBeRealizeValidateEvent, AutoBeTestCorrectEvent, AutoBeTestValidateEvent, IAutoBeTokenUsageJson, IAutoBeTypeScriptCompileResult } from "@autobe/interface";
import { IValidation } from "typia";
import { AutoBeContext } from "../../context/AutoBeContext";
interface IFactoryProps<ValidateEvent extends AutoBeTestValidateEvent | AutoBeRealizeValidateEvent, CorrectEvent extends AutoBeTestCorrectEvent | AutoBeRealizeCorrectEvent> {
    compile(script: string): Promise<ValidateEvent>;
    correct(next: {
        failure: IAutoBeTypeScriptCompileResult.IFailure;
        think: string;
        draft: string;
        review: string | undefined;
        final: string | undefined;
        metric: AutoBeFunctionCallingMetric;
        tokenUsage: IAutoBeTokenUsageJson.IComponent;
    }): Promise<CorrectEvent>;
    script(event: ValidateEvent): string;
    validateEmptyCode(props: {
        path: string;
        draft: string;
        revise: {
            final: string | null;
        };
    }): IValidation.IError[];
    location: string;
    source: "testCorrect" | "realizeCorrect";
}
export declare const orchestrateCommonCorrectCasting: <ValidateEvent extends AutoBeTestValidateEvent | AutoBeRealizeValidateEvent, CorrectEvent extends AutoBeTestCorrectEvent | AutoBeRealizeCorrectEvent>(ctx: AutoBeContext, factory: IFactoryProps<ValidateEvent, CorrectEvent>, script: string) => Promise<ValidateEvent>;
export {};
