use crate::Error;
use crate::hooks::Hooks;
use crate::tools::Tool;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use std::sync::Arc;
include!("types/validated.rs");
include!("types/agent_options.rs");
include!("types/agent_options_builder.rs");
include!("types/message_blocks.rs");
include!("types/image.rs");
include!("types/message.rs");
include!("types/openai.rs");
mod anthropic;
mod anthropic_stream;
pub(crate) mod http_headers;
mod openai_stream;
mod protocol;
mod stream_event;
pub use openai_stream::*;
pub use stream_event::{FinishReason, StreamEvent};
pub use anthropic::{AnthropicMessage, AnthropicRequest};
pub use anthropic_stream::{
AnthropicBlockStart, AnthropicDelta, AnthropicErrorBody, AnthropicEvent, AnthropicMessageDelta,
anthropic_finish_reason,
};
pub use protocol::ApiProtocol;
#[cfg(test)]
mod tests {
use super::*;
include!("types/tests/core.rs");
include!("types/tests/image.rs");
}