#[allow(unused_imports, clippy::wildcard_imports)]
use super::*;
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
#[allow(clippy::large_enum_variant)]
pub enum TransactionResultResult {
TxFeeBumpInnerSuccess(InnerTransactionResultPair),
TxFeeBumpInnerFailed(InnerTransactionResultPair),
TxSuccess(VecM<OperationResult>),
TxFailed(VecM<OperationResult>),
TxTooEarly,
TxTooLate,
TxMissingOperation,
TxBadSeq,
TxBadAuth,
TxInsufficientBalance,
TxNoAccount,
TxInsufficientFee,
TxBadAuthExtra,
TxInternalError,
TxNotSupported,
TxBadSponsorship,
TxBadMinSeqAgeOrGap,
TxMalformed,
TxSorobanInvalid,
TxFrozenKeyAccessed,
}
impl TransactionResultResult {
#[must_use]
pub const fn discriminant(&self) -> TransactionResultCode {
#[allow(clippy::match_same_arms)]
match self {
Self::TxFeeBumpInnerSuccess(_) => TransactionResultCode::TxFeeBumpInnerSuccess,
Self::TxFeeBumpInnerFailed(_) => TransactionResultCode::TxFeeBumpInnerFailed,
Self::TxSuccess(_) => TransactionResultCode::TxSuccess,
Self::TxFailed(_) => TransactionResultCode::TxFailed,
Self::TxTooEarly => TransactionResultCode::TxTooEarly,
Self::TxTooLate => TransactionResultCode::TxTooLate,
Self::TxMissingOperation => TransactionResultCode::TxMissingOperation,
Self::TxBadSeq => TransactionResultCode::TxBadSeq,
Self::TxBadAuth => TransactionResultCode::TxBadAuth,
Self::TxInsufficientBalance => TransactionResultCode::TxInsufficientBalance,
Self::TxNoAccount => TransactionResultCode::TxNoAccount,
Self::TxInsufficientFee => TransactionResultCode::TxInsufficientFee,
Self::TxBadAuthExtra => TransactionResultCode::TxBadAuthExtra,
Self::TxInternalError => TransactionResultCode::TxInternalError,
Self::TxNotSupported => TransactionResultCode::TxNotSupported,
Self::TxBadSponsorship => TransactionResultCode::TxBadSponsorship,
Self::TxBadMinSeqAgeOrGap => TransactionResultCode::TxBadMinSeqAgeOrGap,
Self::TxMalformed => TransactionResultCode::TxMalformed,
Self::TxSorobanInvalid => TransactionResultCode::TxSorobanInvalid,
Self::TxFrozenKeyAccessed => TransactionResultCode::TxFrozenKeyAccessed,
}
}
}
impl TransactionResultResult {
#[must_use]
pub const fn const_xdr_len(&self) -> usize {
let mut empty: [u8; 0] = [];
let mut w = ConstWriter::new(&mut empty);
w.write_type_transaction_result_result(self);
w.len()
}
#[must_use]
pub const fn const_to_xdr<const N: usize>(&self) -> [u8; N] {
let mut buf = [0u8; N];
let mut w = ConstWriter::new(&mut buf);
w.write_type_transaction_result_result(self);
assert!(
w.len() == N,
"const_to_xdr: N does not equal the XDR-encoded length"
);
buf
}
}
impl ConstWriter<'_> {
pub const fn write_type_transaction_result_result(&mut self, v: &TransactionResultResult) {
let d = v.discriminant();
self.write_type_transaction_result_code(&d);
#[allow(clippy::match_same_arms)]
match v {
TransactionResultResult::TxFeeBumpInnerSuccess(value) => {
self.write_type_inner_transaction_result_pair(value);
}
TransactionResultResult::TxFeeBumpInnerFailed(value) => {
self.write_type_inner_transaction_result_pair(value);
}
TransactionResultResult::TxSuccess(value) => {
self.write_type_vec_operation_result(value);
}
TransactionResultResult::TxFailed(value) => {
self.write_type_vec_operation_result(value);
}
TransactionResultResult::TxTooEarly => {}
TransactionResultResult::TxTooLate => {}
TransactionResultResult::TxMissingOperation => {}
TransactionResultResult::TxBadSeq => {}
TransactionResultResult::TxBadAuth => {}
TransactionResultResult::TxInsufficientBalance => {}
TransactionResultResult::TxNoAccount => {}
TransactionResultResult::TxInsufficientFee => {}
TransactionResultResult::TxBadAuthExtra => {}
TransactionResultResult::TxInternalError => {}
TransactionResultResult::TxNotSupported => {}
TransactionResultResult::TxBadSponsorship => {}
TransactionResultResult::TxBadMinSeqAgeOrGap => {}
TransactionResultResult::TxMalformed => {}
TransactionResultResult::TxSorobanInvalid => {}
TransactionResultResult::TxFrozenKeyAccessed => {}
}
}
}