import type { LanguageModel, ProviderMetadata } from "ai"; import type { HarnessStepResult } from "#harness/step-hooks.js"; import { type TokenUsageDelta } from "#harness/turn-tag-state.js"; import type { Step } from "#harness/step/context.js"; /** * The model's gateway id, or `undefined` for a model without a string `provider`, such as a * test double, so a missing field never throws into the tool loop. */ export declare function gatewayModelId(model: LanguageModel): string | undefined; export declare function extractTokenUsageDelta(input: { readonly costUsd: number | undefined; readonly usage: HarnessStepResult["usage"] | undefined; }): TokenUsageDelta | undefined; export declare function extractGatewayCostUsd(providerMetadata: ProviderMetadata | undefined): number | undefined; /** * Tags the turn's workflow run with the model and the turn's running token totals. Each model * step is its own workflow step and attributes are last-write-wins, so the running total, kept in * session state, is what reaches the dashboard. Best-effort: tagging never breaks the loop. */ export declare function recordModelUsage(step: Step, input: { readonly model: LanguageModel; readonly result: HarnessStepResult; }): Promise;