use compact_str::CompactString;
use r402_core::error::ErrorReason;
use r402_core::wire::VerifyResponse;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AptosInvalid {
pub reason: ErrorReason,
pub payer: Option<CompactString>,
}
impl AptosInvalid {
#[must_use]
pub fn new(reason: &'static str) -> Self {
Self {
reason: ErrorReason::from_wire(reason),
payer: None,
}
}
#[must_use]
pub fn from_owned(reason: impl AsRef<str>) -> Self {
Self {
reason: ErrorReason::from_wire(reason.as_ref()),
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) -> AptosInvalid {
AptosInvalid::new(reason)
}