use thiserror::Error;
use crate::BudgetExceededReason;
#[derive(Debug, Clone, PartialEq, Eq, Error)]
#[non_exhaustive]
pub enum GenAiError {
#[error("rate limited")]
RateLimited,
#[error("context length exceeded")]
ContextLengthExceeded,
#[error("content filtered")]
ContentFilter,
#[error("model overloaded")]
ModelOverloaded,
#[error("budget exceeded: {0:?}")]
BudgetExceeded(BudgetExceededReason),
#[error("model not found")]
ModelNotFound,
#[error("invalid request: {0}")]
InvalidRequest(String),
}