///|
pub(all) enum ToolChoice {
  Auto
  NoTool
  Required
  NamedTool(String)
} derive(Eq, Debug)

///|
/// Reasoning effort requested of the model. Provider-agnostic: each ext maps
/// these to its own effort tiers (e.g. DeepSeek collapses to on/off via model
/// choice; OpenAI/Anthropic have explicit tiers). `Maximum` means the provider's
/// absolute top tier (Claude ultra, DeepSeek Max, OpenAI high).
pub(all) enum ReasoningEffort {
  Off
  Minimal
  Low
  Medium
  High
  Maximum
} derive(Eq, Debug)

///|
pub(all) struct ChatOptions {
  temperature : Double?
  max_output_tokens : Int?
  tool_choice : ToolChoice?
  reasoning_effort : ReasoningEffort?
} derive(Eq, Debug)