/** * LLM usage accounting at the seam (invariant #5): the meter wraps any LlmClient — engine * defaults and host-injected clients alike — counting every completion exactly and summing * whatever usage the backend reports. The engine aggregates; it never fabricates numbers. */ import type { CompleteOptions, LlmClient } from "./ports.js"; import type { RunUsage } from "./types.js"; export declare function emptyUsage(): RunUsage; export declare class UsageMeter implements LlmClient { private readonly inner; readonly id: string; private readonly total; constructor(inner: LlmClient); complete(prompt: string, opts?: CompleteOptions): Promise; snapshot(): RunUsage; }