/** * Per-session token state tracker. * * Bridges the gap between: * - `chat.params` hook → provides model context limit (maxTokens) * - `message.updated` event → provides latest input token usage (usedTokens) * * Uses an in-memory Map keyed by sessionId. State resets on plugin restart, * which is acceptable — data rebuilds on the next `chat.params` + `message.updated` pair. */ export interface SessionTokenEntry { maxTokens: number; usedTokens: number; } /** * Store the model's context limit for a session. * Called from the `chat.params` hook when a session starts. * Does NOT overwrite existing `usedTokens`. */ export declare function setContextLimit(sessionId: string, maxTokens: number): void; /** * Update the latest input token usage for a session. * Called from `message.updated` events with AssistantMessage tokens. * Stores the latest value — NOT cumulative across messages. * Does NOT overwrite existing `maxTokens`. * Only updates when inputTokens > 0 (guards against partial streaming updates). */ export declare function updateUsage(sessionId: string, inputTokens: number): void; /** * Get the current token state for a session. * Returns undefined if the session is unknown. */ export declare function getState(sessionId: string): SessionTokenEntry | undefined; /** * Remove a session from the tracker. * Called on `session.deleted` events. */ export declare function clearSession(sessionId: string): void; /** * Clear all session state. Used in tests only. */ export declare function clear(): void;