use quantrs2_anneal::{AnnealingError, IsingError};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum SamplerError {
#[error("Invalid parameter: {0}")]
InvalidParameter(String),
#[error("Annealing error: {0}")]
AnnealingError(#[from] AnnealingError),
#[error("Ising model error: {0}")]
IsingError(#[from] IsingError),
#[error("GPU error: {0}")]
GpuError(String),
#[error("D-Wave API unavailable: {0}")]
DWaveUnavailable(String),
#[error("API communication error: {0}")]
ApiError(String),
#[cfg(feature = "dwave")]
#[error("D-Wave error: {0}")]
DWaveError(#[from] quantrs2_anneal::dwave::DWaveError),
#[error("Not implemented: {0}")]
NotImplemented(String),
#[error("Invalid model: {0}")]
InvalidModel(String),
#[error("Unsupported operation: {0}")]
UnsupportedOperation(String),
}
impl From<String> for SamplerError {
fn from(s: String) -> Self {
Self::InvalidParameter(s)
}
}
pub type SamplerResult<T> = Result<T, SamplerError>;