/**
 * Pure client-safe token-projection vocabulary.
 *
 * @module @deepseek-ai/dsh-token-meter/projection
 */
/**
 * Durable cumulative provider usage for a complete session log.
 *
 * The four buckets are disjoint. In particular, reasoning tokens are already
 * included in `outputTokens` and are not accumulated again.
 */
export interface TokenUsageProjection {
    uncachedInputTokens: number;
    outputTokens: number;
    cacheReadTokens: number;
    cacheWriteTokens: number;
}
/**
 * Approximate context occupancy for a status display.
 *
 * The fields, when present, are deliberately NOT one atomic request
 * observation: each is a last-wins record of a different moment. Switching
 * models can therefore pair a fresh capacity with the previous route's
 * pressure until the next request reports usage. This is an intentional trade
 * — the value is a user-facing reference, not a billing or gating input. See
 * the token-meter README for the full rationale.
 */
export interface ContextPressureProjection {
    /**
     * Provider-reported prompt size of the most recent request: uncached input
     * plus cache reads and writes. Response output is excluded, so this does not
     * grow as the current turn streams. Absent until a provider reports usage.
     */
    pressureTokens?: number;
    /**
     * What the NEXT request's prompt would cost: {@link pressureTokens} plus the
     * heuristic repricing of everything the surface gained or lost since that
     * sample. Only the delta is estimated, so the figure stays anchored to the
     * provider while still reacting the moment a compaction shadows a span —
     * which `pressureTokens` alone cannot do, since compaction reports no usage
     * of its own. Absent until a provider reports usage.
     */
    projectedTokens?: number;
    /** Newest recorded route capacity; absent when no adapter advertised one. */
    contextWindow?: number;
}
/**
 * Heuristic composition of the next request's context: what the prompt is
 * made of, not what it costs. All three figures use the meter's fixed
 * density estimate, so they will not sum to the provider-anchored
 * `projectedTokens`: the estimator systematically underprices CJK text and
 * JSON schemas, which is exactly the error the anchoring in
 * {@link ContextPressureProjection.projectedTokens} keeps out of the occupancy
 * figure. Present these as approximations of composition, never as a total.
 */
export interface ContextBreakdownProjection {
    /** Heuristic tokens of the newest request envelope's system prompt; 0 before any request. */
    systemTokens: number;
    /** Heuristic tokens of the newest request envelope's tool schemas; 0 before any request. */
    toolsTokens: number;
    /** Heuristic tokens of the current model-visible conversation surface. */
    messageTokens: number;
}
declare module '@deepseek-ai/dsh-session-projection/types' {
    interface SessionProjectionMap {
        /** Provider-reported usage accumulated across the complete durable log. */
        tokenUsage: TokenUsageProjection;
        /** Newest request pressure paired with the newest known route capacity. */
        contextPressure: ContextPressureProjection;
        /** Heuristic system/tools/message composition of the next request. */
        contextBreakdown: ContextBreakdownProjection;
    }
}
//# sourceMappingURL=projection.d.ts.map