use reqwest::StatusCode;
use crate::wssession::session::SessionType;
pub type Result<T> = core::result::Result<T, Error>;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("URL Parsing Error: {0}")]
UrlParsingError(#[from] url::ParseError),
#[error("Failed to create {0} session. Status: {1}. Body: {2}")]
CreateSessionError(SessionType, StatusCode, String),
#[error("Unsupported MarketSessionFilter: {0}")]
UnsupportedMarketFilter(String),
#[error("Unable to parse Session Response")]
JsonParsingError(#[from] serde_json::Error),
#[error("Missing Access Token")]
MissingAccessToken,
#[error("Session already exists")]
SessionAlreadyExists,
#[error("IO Error: {0}")]
IoError(#[from] std::io::Error),
#[error("Network error during API request")]
NetworkError(#[from] reqwest::Error),
#[error("WebSocket error: {0}")]
WebSocketError(#[from] Box<tungstenite::Error>),
#[error("Unexpected error: {0}")]
UnexpectedError(String),
}