import { Agent, AgentOutputType } from '../agent';
import { RunInputItem, RunItem } from '../items';
import { RunState } from '../runState';
import type { AgentInputItem } from '../types';
import type { InputGuardrailDefinition, InputGuardrailResult } from '../guardrail';
import { ServerConversationTracker } from './conversation';
import type { Span, Trace } from '../tracing';
type GuardrailHandlers = {
    onParallelPromise?: (promise: Promise<InputGuardrailResult[]>) => void;
    onParallelError?: (error: unknown) => void;
};
type PreparedTurn = {
    turnInput: AgentInputItem[];
    pendingInputItems: RunInputItem[];
    pendingInputSourceItems: AgentInputItem[];
};
type PrepareTurnOptions<TContext, TAgent extends Agent<TContext, AgentOutputType>> = {
    state: RunState<TContext, TAgent>;
    input: string | AgentInputItem[];
    generatedItems: RunItem[];
    isResumedState: boolean;
    preserveTurnPersistenceOnResume?: boolean;
    continuingInterruptedTurn: boolean;
    serverConversationTracker?: ServerConversationTracker;
    inputGuardrailDefs: InputGuardrailDefinition[];
    guardrailHandlers?: GuardrailHandlers;
    emitAgentStart?: (context: RunState<TContext, TAgent>['_context'], agent: TAgent, turnInput: AgentInputItem[]) => void;
    onAgentSpanReady?: (turn: number, agentName: string) => void;
    agentSpanParent?: Span<any> | Trace;
};
export declare function prepareTurn<TContext, TAgent extends Agent<TContext, AgentOutputType>>(options: PrepareTurnOptions<TContext, TAgent>): Promise<PreparedTurn>;
export declare function getManagedConversationSupplementalItems<TContext, TAgent extends Agent<TContext, AgentOutputType>>(state: RunState<TContext, TAgent>): AgentInputItem[];
export {};
