use compact_str::CompactString;
use r402_core::error::ErrorReason;
use r402_core::wire::VerifyResponse;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct XrplInvalid {
pub reason: ErrorReason,
pub payer: Option<CompactString>,
}
impl XrplInvalid {
#[must_use]
pub fn new(reason: impl Into<ErrorReason>) -> Self {
Self {
reason: reason.into(),
payer: None,
}
}
#[must_use]
pub fn with_payer(mut self, payer: impl Into<CompactString>) -> Self {
self.payer = Some(payer.into());
self
}
#[must_use]
pub fn into_response(self) -> VerifyResponse {
VerifyResponse::invalid(self.payer, self.reason)
}
}
#[must_use]
pub fn invalid(reason: &'static str) -> XrplInvalid {
XrplInvalid::new(ErrorReason::from_wire(reason))
}
#[must_use]
pub fn invalid_owned(reason: impl Into<CompactString>) -> XrplInvalid {
XrplInvalid::new(ErrorReason::from_wire(reason.into().as_str()))
}