use std::time::Duration;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum CdpError {
#[error("Network error: {0}")]
Network(#[from] reqwest::Error),
#[error("WebSocket error: {0}")]
Ws(#[from] tokio_tungstenite::tungstenite::Error),
#[error("Serialization error: {0}")]
Json(#[from] serde_json::Error),
#[error("Chrome target not found")]
NotFound,
#[error("Command {method} timed out after {timeout:?}")]
Timeout { method: String, timeout: Duration },
#[error("No suitable Chrome target found at host: {0}")]
NoPageTargetFound(String),
#[error("Internal communication error: {0}")]
InternalError(String),
#[error("Chrome returned an error (code {code}): {message}")]
ProtocolError { code: i64, message: String },
#[error("Connection lost")]
Disconnected,
}
pub type CdpResult<T> = Result<T, CdpError>;