import type { Skill } from "../extensibility/skills"; import type { Tool } from "../tools"; import type { AgentSession } from "./agent-session"; export declare function estimateSkillsTokens(skills: readonly Skill[]): number; export declare function estimateToolSchemaTokens(tools: ReadonlyArray>): number; /** * Compute just the NON-MESSAGE token total: system prompt (with its skills * section subtracted, since skills are tokenized separately) + system context * (the rest of the system-prompt array) + tools + skills. * * Exposed so callers like `StatusLineComponent` can cache the non-message * total separately from the message total. Non-message inputs (skills, * tools, system prompt) change rarely; the message list grows on every * streaming turn. Splitting the two lets the caller refresh each on its own * cadence — non-message recomputed only when the inputs identity changes, * messages walked incrementally as new entries append. */ export declare function computeNonMessageTokens(session: AgentSession): number; /** * Shared helper for the four non-message token totals. Single source of truth * for `computeNonMessageTokens` (session estimates + status-line incremental * cache) and `computeContextBreakdown` (/context panel). The split avoids * drift between the surfaces — they MUST report the same numbers. */ export declare function computeNonMessageBreakdown(session: AgentSession): { rulesTokens: number; skillsTokens: number; toolsTokens: number; systemContextTokens: number; systemPromptTokens: number; };