use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
use super::super::{ComputerUseEnvironment, DynamicRetrievalMode, ExtraFields};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct GoogleSearchRetrieval {
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_retrieval_config: Option<DynamicRetrievalConfig>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct DynamicRetrievalConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<DynamicRetrievalMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dynamic_threshold: Option<f64>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct GoogleSearch {
#[serde(skip_serializing_if = "Option::is_none")]
pub time_range_filter: Option<Interval>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_types: Option<SearchTypes>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
)]
#[non_exhaustive]
pub struct CodeExecution {}
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
)]
#[non_exhaustive]
pub struct UrlContext {}
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
)]
#[non_exhaustive]
pub struct WebSearch {}
#[derive(
Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
)]
#[non_exhaustive]
pub struct ImageSearch {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct Interval {
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct SearchTypes {
#[serde(skip_serializing_if = "Option::is_none")]
pub web_search: Option<WebSearch>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_search: Option<ImageSearch>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct ComputerUse {
#[serde(skip_serializing_if = "Option::is_none")]
pub environment: Option<ComputerUseEnvironment>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub excluded_predefined_functions: Vec<String>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct FileSearch {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub file_search_store_names: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata_filter: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_k: Option<i32>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct McpServer {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub streamable_http_transport: Option<StreamableHttpTransport>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct StreamableHttpTransport {
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub headers: BTreeMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sse_read_timeout: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub terminate_on_close: Option<bool>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct GoogleMaps {
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_widget: Option<bool>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct RetrievalConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub lat_lng: Option<LatLng>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language_code: Option<String>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
#[derive(gproxy_protocol_macros::WireBuilder)]
#[non_exhaustive]
pub struct LatLng {
#[serde(skip_serializing_if = "Option::is_none")]
pub latitude: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub longitude: Option<f64>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
pub extra: ExtraFields,
}