use serde::{Deserialize, Serialize};
use serde_json::Value;
pub mod blocks;
pub mod cache;
pub mod container;
pub mod context_management;
pub mod diagnostics;
pub mod errors;
pub mod fallback;
pub mod mcp;
pub mod output;
pub mod server_tools;
pub mod stop;
pub mod thinking;
pub mod tools;
pub mod types;
pub mod usage;
pub use blocks::*;
pub use cache::*;
pub use container::*;
pub use context_management::*;
pub use diagnostics::*;
pub use errors::*;
pub use fallback::*;
pub use mcp::*;
pub use output::*;
pub use server_tools::*;
pub use stop::*;
pub use thinking::*;
pub use tools::*;
pub use types::*;
pub use usage::*;
pub type JsonObject = serde_json::Map<String, Value>;
#[derive(
Debug,
Clone,
PartialEq,
Eq,
Serialize,
Deserialize,
Default,
gproxy_protocol_macros::WireBuilder,
)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct AnthropicBetaHeaders {
#[serde(
rename = "anthropic-beta",
default,
skip_serializing_if = "Option::is_none"
)]
pub anthropic_beta: Option<Vec<AnthropicBeta>>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
#[non_exhaustive]
pub enum StringOrArray<T> {
String(String),
Array(Vec<T>),
Raw(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub enum BoolOrStringArray {
Bool(bool),
Array(Vec<String>),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct TypedObject {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct Citation {
#[serde(rename = "type")]
pub type_: CitationType,
#[serde(skip_serializing_if = "Option::is_none")]
pub cited_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub document_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_char_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_char_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_page_number: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_page_number: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_block_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_block_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_result_index: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encrypted_index: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct CitationConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct Metadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
pub struct JsonSchemaFormat {
#[serde(rename = "type")]
pub type_: JsonSchemaFormatType,
pub schema: JsonObject,
#[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
pub rest: serde_json::Map<String, serde_json::Value>,
}