//! SDK error types.

/// Errors returned by SDK operations.
#[derive(Debug, thiserror::Error)]
pub enum SdkError {
    #[error("not connected to server")]
    NotConnected,

    #[error("not authenticated — call login() first")]
    NotAuthenticated,

    #[error("authentication failed: {0}")]
    AuthFailed(String),

    #[error("conversation not found: {0}")]
    ConversationNotFound(String),

    #[error("crypto error: {0}")]
    Crypto(String),

    #[error("RPC error: {0}")]
    Rpc(#[from] quicproquo_rpc::error::RpcError),

    #[error("storage error: {0}")]
    Storage(String),

    #[error("{0}")]
    Other(#[from] anyhow::Error),
}
