use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::json::{JsonObject, JsonValue};
pub type ProviderOptions = HashMap<String, JsonObject>;
pub type ProviderMetadata = HashMap<String, JsonObject>;
pub type ProviderReference = HashMap<String, String>;
pub type Headers = HashMap<String, Option<String>>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(tag = "type", rename_all = "kebab-case")]
pub enum Warning {
Unsupported {
feature: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
details: Option<String>,
},
Compatibility {
feature: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
details: Option<String>,
},
Deprecated {
setting: String,
message: String,
},
Other {
message: String,
},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(tag = "type", rename_all = "kebab-case")]
pub enum FileData {
Data {
data: FileBytes,
},
Url {
url: String,
},
Reference {
reference: JsonObject,
},
Text {
text: String,
},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum FileBytes {
Base64(String),
Bytes(Vec<u8>),
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct RequestInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub body: Option<JsonValue>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct ResponseInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub headers: Option<Headers>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub body: Option<JsonValue>,
}