import type { CompletionStats } from '../../../../schemas/index.js'; import type { LlmStats } from '../../../../utils/addon-responses.js'; export declare function normalizeCompletionStats(stats: LlmStats | undefined): { timeToFirstToken?: number | undefined; tokensPerSecond?: number | undefined; promptTokensPerSecond?: number | undefined; cacheTokens?: number | undefined; promptTokens?: number | undefined; generatedTokens?: number | undefined; emittedTokens?: number | undefined; avgConcurrentSeq?: number | undefined; toolDefinitionsDropped?: number | undefined; backendDevice?: "cpu" | "gpu" | undefined; } | undefined; /** * Attach the count of non-empty pieces the addon streamed without * overwriting `generatedTokens` (`llama_perf` `n_eval`). Length / KV-cache * decisions keep the decode count; usage reporting prefers `emittedTokens`. * Zero is attached explicitly so inflated `n_eval` cannot be used as usage * when nothing was streamed. */ export declare function withEmittedTokens(stats: CompletionStats | undefined, emittedPieces: number): CompletionStats | undefined; export declare function stoppedByLength({ cancelled, effectivePredict, generatedTokens, stoppedAtContextBoundary }: { cancelled: boolean; effectivePredict: number | undefined; generatedTokens: number | undefined; stoppedAtContextBoundary: boolean; }): boolean;