use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug, Clone, PartialEq)]
pub enum Error {
#[error("Read and write quorums do not overlap")]
NonOverlappingQuorums,
#[error("No strategy found satisfying the constraints")]
NoStrategyFound,
#[error("No quorum system found satisfying the requirements")]
NoQuorumSystemFound,
#[error("Invalid distribution: {0}")]
InvalidDistribution(String),
#[error("LP solver error: {0}")]
LpError(String),
#[error("Invalid quorum system: {0}")]
InvalidQuorumSystem(String),
#[error("Invalid expression: {0}")]
InvalidExpression(String),
}