import type { Agent, AgentOutputType } from '../agent';
import type { RunState } from '../runState';
import type { RunConfig, Runner, ToolErrorFormatter } from '../run';
import type { SingleStepResult } from './steps';
import type { ResumedSessionWritePreparation } from './sessionPersistence';
export declare function isAcceptedResponseCheckpoint(state: RunState<any, any>): boolean;
export declare function assertAcceptedResponseContinuationAuthority(state: RunState<any, any>, requestedConversationId?: string, requestedPreviousResponseId?: string): void;
export declare function markAcceptedResponseProcessingStarted(state: RunState<any, any>): void;
export declare function markAcceptedResponseFinalizationStarted(state: RunState<any, any>): void;
/**
 * Continues local processing for a response that was already accepted by the model provider.
 */
export declare function resumeAcceptedModelResponse<TContext, TAgent extends Agent<TContext, AgentOutputType>>(options: {
    state: RunState<TContext, TAgent>;
    runner: Runner;
    toolErrorFormatter?: ToolErrorFormatter;
    agentToolParentRunConfig?: Partial<RunConfig>;
    signal?: AbortSignal;
    onStepItems?: (turnResult: SingleStepResult) => void;
    validateHandoffAgent?: (agent: Agent<any, any>) => void;
}): Promise<SingleStepResult>;
export type InterruptedTurnOutcome = {
    nextStep: SingleStepResult['nextStep'];
    action: 'return_interruption' | 'rerun_turn' | 'advance_step';
    resumedSideEffects: boolean;
};
export type InterruptedTurnControl = {
    shouldReturn: boolean;
    shouldContinue: boolean;
};
type ApplyTurnResultOptions<TContext, TAgent extends Agent<TContext, AgentOutputType>> = {
    state: RunState<TContext, TAgent>;
    turnResult: SingleStepResult;
    agent: Agent<TContext, AgentOutputType>;
    toolsUsed: string[];
    resetTurnPersistence: boolean;
    onStepItems?: (turnResult: SingleStepResult) => void;
};
export declare function applyTurnResult<TContext, TAgent extends Agent<TContext, AgentOutputType>>(options: ApplyTurnResultOptions<TContext, TAgent>): void;
export declare function resumeInterruptedTurn<TContext, TAgent extends Agent<TContext, AgentOutputType>>(options: {
    state: RunState<TContext, TAgent>;
    runner: Runner;
    toolErrorFormatter?: ToolErrorFormatter;
    agentToolParentRunConfig?: Partial<RunConfig>;
    signal?: AbortSignal;
    onStepItems?: (turnResult: SingleStepResult) => void;
    validateHandoffAgent?: (agent: Agent<any, any>) => void;
    beforeResumedSideEffects?: () => Promise<ResumedSessionWritePreparation | undefined>;
    onHandoff?: (agent: TAgent) => void;
}): Promise<InterruptedTurnOutcome>;
export declare function handleInterruptedOutcome<TContext, TAgent extends Agent<TContext, AgentOutputType>>(options: {
    state: RunState<TContext, TAgent>;
    outcome: InterruptedTurnOutcome;
    setContinuingInterruptedTurn: (value: boolean) => void;
}): InterruptedTurnControl;
export {};
