export type ContextAction = "published" | "retained" | "removed"; /** Safe display-source metadata retained for headless consumers. */ export type ContextSourceInfo = Record; export interface ContextProjectionData { context_kind: string; context_key: string; context_name: string; context_order: number; context_action: ContextAction; context_revision: string; display_title?: string | null; display_summary?: string | null; sources: ContextSourceInfo[]; } export interface ContextProjectionFields { context_kind?: string | null; context_key?: string | null; context_name?: string | null; context_order?: number | null; context_action?: ContextAction | null; context_revision?: string | null; display_title?: string | null; display_summary?: string | null; sources?: ContextSourceInfo[] | null; } export interface ContextDisplayState { title: string; summary: string; detail: string; isRemoved: boolean; } export interface ContextGroupDisplayState { title: string; summary: string; count: number; } export declare function contextProjectionData(fields: ContextProjectionFields): ContextProjectionData | null; /** The single status-to-display mapping used by both React chat surfaces. */ export declare function getContextDisplayState(context: ContextProjectionData): ContextDisplayState; /** * 把一段渲染序列里连续的 Context 归成组。 * * 入参是序列里每一项的 context kind,非 Context 项传 null;返回每一段连续 * Context 的下标数组。纯下标运算,不认识任何 UI 类型,所以调试日志、Lite 视图 * 和 SDK 卡片可以共用同一份分组判定,各自只管排版。 */ export declare function groupAdjacentContextRuns(kinds: readonly (string | null)[]): readonly (readonly number[])[]; /** 折叠行的文案。展开后才逐条显示各自的标题与状态。 */ export declare function getContextGroupDisplayState(contexts: readonly ContextProjectionData[]): ContextGroupDisplayState;