import type { ItemId, ProviderTurnActionPolicy, ProviderTurnTraceEntry, SessionUsageOperation, Turn } from "@best-agent/protocol";
import type { ConversationMessage, ProviderCacheControl, ProviderDecisionOutput, ProviderToolOption } from "../../provider/provider-core.js";
import type { PromptDeliverableFailure } from "../../prompt/runtime-prompts.js";
import type { ProviderDecisionResolutionControls } from "./provider-decision-resolution.js";
import type { ProviderTurnInvokeContext } from "./provider-turn-budget.js";
import type { RequiredToolConstraint } from "./tool-constraint-types.js";
type ProviderTurnTraceValidation = NonNullable<ProviderTurnTraceEntry["validation"]>;
export type ProviderResponseRuntime = {
    markDecisionOutcome: (decision: ProviderDecisionOutput, outcome: {
        runtimeOutcome: "accepted" | "failed" | "rejected" | "repaired";
        validation?: ProviderTurnTraceValidation;
    }) => void;
    terminalOutputFallback: (turn: Turn, error: unknown) => Promise<string>;
};
export type ProviderResponseHandlerInput = {
    actionPolicy: ProviderTurnActionPolicy;
    approvalTurn?: Turn;
    availableTools: ProviderToolOption[];
    cacheControl?: ProviderCacheControl;
    controls: ProviderDecisionResolutionControls;
    decision: Extract<ProviderDecisionOutput, {
        kind: "respond";
    }>;
    invokeContext: ProviderTurnInvokeContext;
    leakedControlResponse: boolean;
    messages: ConversationMessage[];
    objective?: string;
    operation: SessionUsageOperation;
    repairAttempt: number;
    requiredToolConstraint?: RequiredToolConstraint;
    responseRepairDeliverableFailures?: PromptDeliverableFailure[];
    resolvePreviewToolCallId?: (providerToolCallId?: string) => ItemId | undefined;
    runtime: ProviderResponseRuntime;
    systemPrompt?: string;
    toolStepCount: number;
    turn: Turn;
    visibleTools: ProviderToolOption[];
};
export {};
//# sourceMappingURL=provider-response-handler-types.d.ts.map