//! OpenCode API Client Library
//!
//! A Rust client for interacting with the OpenCode.ai API.
//!
//! # Example
//!
//! ```no_run
//! use opencode_client::OpenCodeClient;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! let client = OpenCodeClient::new("http://localhost:12225");
//!
//! // List all sessions
//! let sessions = client.list_sessions().await?;
//!
//! // Get messages from a session
//! let messages = client.list_messages("session_id").await?;
//!
//! // Send a message
//! let response = client.send_message("session_id", "Hello!".to_string()).await?;
//! # Ok(())
//! # }
//! ```

pub mod client;
pub mod sse;
pub mod types;

pub use client::{ClientError, LogCallback, OpenCodeClient};
pub use sse::{ConnectionState, SseClient, SseError, SseStream};
pub use types::{
    AssistantMessage, AssistantMessageTime, Event, Message, MessageTime, MessageWithParts, Part,
    ReasoningPart, Session, TextPart, ToolPart, ToolState, UserMessage,
};
