import type { CompletionRequest, CompletionResult, GenerationAttemptHandle, GenerationAttemptInput, GenerationAttemptOutcome, GenerationAttemptUsageSink, TokenUsage } from "../types.js"; export type AttemptUsageValue = { readonly kind: "known"; readonly value: TokenUsage; } | { readonly kind: "unknown"; }; export interface GenerationAttemptRecord extends GenerationAttemptInput { readonly sequence: number; readonly outcome: GenerationAttemptOutcome; readonly usage: AttemptUsageValue; readonly statusCode?: number | undefined; } export interface OperationUsageAggregate { readonly status: "known" | "partial" | "unknown"; readonly knownAdmissions: number; readonly unknownAdmissions: number; readonly usage?: TokenUsage | undefined; } export interface OperationUsageSnapshot { readonly attempts: readonly GenerationAttemptRecord[]; readonly aggregate: OperationUsageAggregate; } export declare function completeGenerationAttempt(outcome: GenerationAttemptOutcome, usage?: TokenUsage, statusCode?: number): void; export declare function generationFetch(input: string | URL | Request, init?: RequestInit): Promise; export declare function runGenerationAttempt(request: CompletionRequest, input: GenerationAttemptInput, run: () => Promise): Promise; export declare class OperationUsageRecorder implements GenerationAttemptUsageSink { private nextSequence; private readonly records; begin(input: GenerationAttemptInput): GenerationAttemptHandle; snapshot(): OperationUsageSnapshot; }