//! Public API surface for mcp-host.
//!
//! This module re-exports the stable, intended types for crate consumers.

// Protocol types (limited)
pub use crate::protocol::capabilities::{ClientCapabilities, ServerCapabilities};
pub use crate::protocol::types::{JsonRpcError, JsonRpcRequest, JsonRpcResponse, TaskSupport, ToolExecution};

// Content types and builders
pub use crate::content::annotations::Annotations;
pub use crate::content::builder::{audio, image, resource, text};
pub use crate::content::prompt::{PromptContent, PromptMessage, PromptRole};
pub use crate::content::resource::ResourceContent;
pub use crate::content::types::{AudioContent, Content, ImageContent, ResourceLink, TextContent};

// Server types
pub use crate::server::builder::{server, ServerBuilder};
pub use crate::server::core::Server;
pub use crate::server::multiplexer::{
    ClientRequester, CreateMessageParams, CreateMessageResult, JsonRpcClientRequest, ListRootsResult,
    ModelHint, ModelPreferences, MultiplexerError, RequestMultiplexer, Root, SamplingContent,
    SamplingMessage,
};
pub use crate::server::profile::SessionProfile;
pub use crate::server::session::Session;
pub use crate::server::visibility::{Environment, ExecutionContext, SimpleEnvironment, VisibilityContext};

// Registry types
pub use crate::registry::prompts::{GetPromptResult, Prompt, PromptArgument, PromptError, PromptInfo, PromptManager};
pub use crate::registry::resources::{
    Resource, ResourceError, ResourceInfo, ResourceManager, ResourceRetryConfig, ResourceTemplate,
    ResourceTemplateInfo,
};
pub use crate::registry::tools::{
    Tool, ToolBreakerConfig, ToolError, ToolHelpers, ToolInfo, ToolLifecycleState,
    ToolOutput, ToolPolicy, ToolRegistry,
};

// Middleware and resilience types
pub use crate::server::middleware::{RateLimiter, RateLimiterConfig};

// Logging types
pub use crate::logging::{send_log_notification, LogLevel, LoggerConfig, McpLogger};

// Progress tracking
pub use crate::managers::progress::{ProgressToken, ProgressTracker};

// Transport types (sealed; no external implementations)
pub use crate::transport::traits::{JsonRpcNotification, Transport};

#[cfg(feature = "stdio")]
pub use crate::transport::stdio::StdioTransport;

#[cfg(feature = "http")]
pub use crate::transport::http::{HttpTransport, HttpTransportConfig, HttpTransportError};
