import { OutputGuardrailTripwireTriggered } from '../errors';
import type { OutputGuardrailResult } from '../guardrail';
import { RunItem } from '../items';
import { AgentInputItem } from '../types';
import { type FunctionCallResultItem } from '../types/protocol';
import type { RunState } from '../runState';
import type { Session } from '../memory/session';
export declare function captureCurrentResponseToolOutputGuardrailResultStart(state: RunState<any, any>, overwrite: boolean, hasOutputGuardrail?: boolean): void;
export declare function getCurrentResponseToolOutputGuardrailResultStart(state: RunState<any, any>): number | undefined;
export declare function restoreCurrentResponseToolOutputGuardrailResultStart(state: RunState<any, any>, startIndex: number, hasNestedOwnership: boolean): void;
/** Selects the checkpoint format only. Resume always evaluates the configured guardrails. */
export declare function needsNestedApprovalOwnership(state: RunState<any, any>, generatedItemStartIndex: number): boolean;
export declare function hasPersistedToolOutput(state: RunState<any, any>): boolean;
export declare function hasPendingApprovedToolInputCompaction(state: RunState<any, any>): boolean;
export declare function hasDeterministicTerminalToolOutputSource(state: RunState<any, any>): boolean;
export declare function hasTerminalToolOutputSource(state: RunState<any, any>): boolean;
export declare function sanitizeBlockedTerminalToolOutput(state: RunState<any, any>, outputGuardrailResultStart: number, completedOutputGuardrailTripwireResult: OutputGuardrailResult<any, any> | undefined, observedOutputGuardrailResults: ReadonlyMap<OutputGuardrailResult<any, any>, boolean>, tripwire?: OutputGuardrailTripwireTriggered<any, any>, ownedOutputGuardrailResults?: ReadonlySet<OutputGuardrailResult<any, any>>, resolveBlockedMessage?: (guardrailName: string) => Promise<string>, signal?: AbortSignal, onBlockedOutput?: () => void): false | string | Promise<false | string>;
export declare function shouldDeferInterruptedSessionItems(state: RunState<any, any>, hasOutputGuardrail: boolean): boolean;
export declare function assertResumedSessionOutputGuardrailSafety(state: RunState<any, any>, session: Session | undefined, hasOutputGuardrail: boolean): void;
export type RunItemPersistencePlan = Readonly<{
    alreadyPersistedCount: number;
    runItemsToPersist: RunItem[];
    runItemsToReplace: RunItem[];
    processedRunItemCount: number;
    deferredRunItemIndexes: number[];
    useHistoryTransaction: boolean;
    transactionKind?: 'blocked_append' | 'accepted_replace';
}>;
/**
 * Selects replay-safe tool effects when an assistant's final output is blocked.
 *
 * Unknown run-item kinds are excluded. Reasoning is retained only when the next non-reasoning
 * item is a retained tool call or one of its required provenance records.
 */
export declare function selectRunItemIndexesForBlockedOutput(items: RunItem[], unpersistedStartIndex?: number): number[];
export declare function hasBlockedOutputExecutionEffect(items: RunItem[], unpersistedStartIndex?: number): boolean;
export declare function buildRunItemPersistencePlan(options: {
    items: RunItem[];
    alreadyPersistedCount: number;
    currentDeferredIndexes: Iterable<number>;
    outputBlocked: boolean;
    canUseHistoryTransactions: boolean;
    blockedSnapshot?: Readonly<{
        items: RunItem[];
        startIndex: number;
        alreadyPersistedCount: number;
    }>;
}): RunItemPersistencePlan;
export declare function buildBlockedToolOutputRawItem(rawItem: AgentInputItem, blockedMessage?: string): FunctionCallResultItem;
/** Redacts runner-owned cancellation state without dropping mixed-response tool pairs. */
export declare function redactCancelledResponseToolOutputs(state: RunState<any, any>, blockedMessage: string): boolean;
/** Replaces a rejected function response with allowlisted replay-safe values. */
export declare function redactBlockedResponseToolOutputs(state: RunState<any, any>, blockedMessage?: string): boolean;
export declare function getBlockedOutputSessionSnapshotRunItems(state: RunState<any, any>): RunItem[];
export declare function isCanonicalBlockedOutputPayload(item: AgentInputItem): boolean;
/** Neutralizes a canonical restored placeholder without trusting serialized guardrail identity. */
export declare function normalizeSerializedOutputGuardrailBlockedMessage(state: RunState<any, any>): void;
export declare function hasOutputBearingApprovalCheckpoint(state: RunState<any, any>): boolean;
