// ReSharper disable ClassNeverInstantiated.Global
namespace AIStudio.Provider.OpenAI;
///
/// What OpenAI reports a Responses API call cost, as it closes the stream.
///
///
/// The input tokens are the whole request. What the API took from its cache is a share of them,
/// not an addition to them, which is why that detail stays unread. Read on 2026-09-24 at
/// https://developers.openai.com/api/docs/guides/prompt-caching.
///
/// The block states more than this, the output and its reasoning share among it. Those are left
/// unread on purpose, for the reason given at TokenUsage: no later request carries them.
///
public sealed record ResponsesUsage
{
///
/// What everything sent to the model cost, the cached part included.
///
public int? InputTokens { get; init; }
///
/// States what this block reports, as far as it can be believed.
///
///
/// Whether the block describes the request at all is not decided here but by the response
/// around it, cf. ResponsesResponse.
///
/// The usage, or TokenUsage.UNKNOWN when the block states nothing usable.
public TokenUsage ToTokenUsage() => TokenUsage.OfReported(this.InputTokens);
}