import type { Message } from '../types/message/index.js'; /** * Indices of every message protected by a `retain` marker, expanded across * provider-valid turns. * * Transitive by necessity, not politeness. A `tool_result` whose * `tool_use` was dropped is rejected by the provider outright, and a * compacted conversation whose first non-system message is an assistant * turn is rejected before the pair is even considered. Pinning half a pair * — or the pair without its user turn boundary — would therefore turn a * retention request into a broken next turn. A pinned tool result pulls in * the assistant turn that issued the call; a pinned assistant turn pulls in * the user message that opened its turn and EVERY result answering it. The * second result hop matters, because an assistant turn with three calls and * one surviving result is the same dangling error in the other direction. */ export declare function findRetainedIndices(messages: readonly Message[]): Set; //# sourceMappingURL=retention.d.ts.map