import type { Message, MessageRole } from '../../types/message/index.js'; /** A content block present at the SDK's provider-input boundary, not a file freshness claim. */ export interface RequestContextPart { readonly messageIndex: number; readonly partIndex: number; readonly role: MessageRole; readonly kind: 'text' | 'image' | 'document' | 'stored' | 'tool-call'; readonly digest: string; readonly toolCallId?: string; readonly isError?: boolean; } export interface RequestContextSnapshot { readonly boundary: 'provider-input'; readonly parts: readonly RequestContextPart[]; } export interface RequestContextChange { /** Parts from the earlier snapshot no longer present, including replaced content. */ readonly removed: readonly RequestContextPart[]; /** Parts in the new snapshot not present before. */ readonly added: readonly RequestContextPart[]; } /** * Inspect supplied messages after compaction and request projection. No content * is retained in the snapshot. A digest identifies exact blocks, not semantic * knowledge, token counts, file versions or provider-private reasoning replay. */ export declare function snapshotRequestContext(messages: readonly Message[]): RequestContextSnapshot; /** Compare occurrences, not sets: removing one of two identical blocks is a removal. */ export declare function diffRequestContext(previous: RequestContextSnapshot, next: RequestContextSnapshot): RequestContextChange; //# sourceMappingURL=request-context.d.ts.map