#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(unused_imports)]
#![allow(dead_code)]
#![allow(unused_variables)]
#![allow(clippy::unnecessary_cast)]
use crate::*;
use core::option::Option;
use core::ops::{Deref, DerefMut};
#[cfg(feature = "std")]
use std::io::{Read, Write};
use xdrs::*;
#[cfg(feature = "serde")]
use ::serde::{{Serialize, Deserialize}};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct DbConflictCode(pub i32);
impl DbConflictCode {
pub const ExclusiveLockDenied: Self = Self(0);
pub const TypeMismatch: Self = Self(1);
pub const ValueMismatch: Self = Self(2);
pub const BoundsExceeded: Self = Self(3);
pub const Overflow: Self = Self(4);
pub const ReplayProtection: Self = Self(5);
pub const QueueConsumer: Self = Self(6);
pub const CapacityExceeded: Self = Self(7);
pub const InsufficientFunds: Self = Self(8);
pub const DuplicateSigner: Self = Self(9);
}
impl From<i32> for DbConflictCode {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for DbConflictCode {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::ExclusiveLockDenied.0 => {
write!(f, "DbConflictCode::ExclusiveLockDenied")
},
x if x == Self::TypeMismatch.0 => {
write!(f, "DbConflictCode::TypeMismatch")
},
x if x == Self::ValueMismatch.0 => {
write!(f, "DbConflictCode::ValueMismatch")
},
x if x == Self::BoundsExceeded.0 => {
write!(f, "DbConflictCode::BoundsExceeded")
},
x if x == Self::Overflow.0 => {
write!(f, "DbConflictCode::Overflow")
},
x if x == Self::ReplayProtection.0 => {
write!(f, "DbConflictCode::ReplayProtection")
},
x if x == Self::QueueConsumer.0 => {
write!(f, "DbConflictCode::QueueConsumer")
},
x if x == Self::CapacityExceeded.0 => {
write!(f, "DbConflictCode::CapacityExceeded")
},
x if x == Self::InsufficientFunds.0 => {
write!(f, "DbConflictCode::InsufficientFunds")
},
x if x == Self::DuplicateSigner.0 => {
write!(f, "DbConflictCode::DuplicateSigner")
},
_ => {
write!(f, "DbConflictCode({})", self.0)
}
}
}
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct DbDiagnosticLevel(pub i32);
impl DbDiagnosticLevel {
pub const kDbDiagnosticNone: Self = Self(0);
pub const kDbDiagnosticFirst: Self = Self(1);
pub const kDbDiagnosticAll: Self = Self(2);
}
impl From<i32> for DbDiagnosticLevel {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for DbDiagnosticLevel {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::kDbDiagnosticNone.0 => {
write!(f, "DbDiagnosticLevel::kDbDiagnosticNone")
},
x if x == Self::kDbDiagnosticFirst.0 => {
write!(f, "DbDiagnosticLevel::kDbDiagnosticFirst")
},
x if x == Self::kDbDiagnosticAll.0 => {
write!(f, "DbDiagnosticLevel::kDbDiagnosticAll")
},
_ => {
write!(f, "DbDiagnosticLevel({})", self.0)
}
}
}
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct DbConflictDiagnostic {
pub addrkey: AddressAndKey,
pub code: DbConflictCode,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[repr(i32)]
#[non_exhaustive]
pub enum DbConflictResult {
kDbDiagnosticNone = DbDiagnosticLevel::kDbDiagnosticNone.0 as i32,
kDbDiagnosticFirst { first: DbConflictDiagnostic } = DbDiagnosticLevel::kDbDiagnosticFirst.0 as i32,
kDbDiagnosticAll { conflicts: VecM<DbConflictDiagnostic> } = DbDiagnosticLevel::kDbDiagnosticAll.0 as i32,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct ContractRejectCode(pub i32);
impl ContractRejectCode {
pub const ContractRejectTooMany: Self = Self(0);
pub const ContractRejectBlobTooLarge: Self = Self(1);
pub const ContractRejectNotDeployable: Self = Self(2);
pub const ContractRejectDuplicate: Self = Self(3);
pub const ContractRejectMalformedArtifact: Self = Self(4);
pub const ContractRejectUnsupportedFormat: Self = Self(5);
pub const ContractRejectUnsupportedAbi: Self = Self(6);
pub const ContractRejectGasScheduleMismatch: Self = Self(7);
pub const ContractRejectMemoryTooLarge: Self = Self(8);
pub const ContractRejectCodeSizeInvalid: Self = Self(9);
pub const ContractRejectInitialMemoryInvalid: Self = Self(10);
pub const ContractRejectDigestMismatch: Self = Self(11);
pub const ContractRejectInvalidProgram: Self = Self(12);
}
impl From<i32> for ContractRejectCode {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for ContractRejectCode {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::ContractRejectTooMany.0 => {
write!(f, "ContractRejectCode::ContractRejectTooMany")
},
x if x == Self::ContractRejectBlobTooLarge.0 => {
write!(f, "ContractRejectCode::ContractRejectBlobTooLarge")
},
x if x == Self::ContractRejectNotDeployable.0 => {
write!(f, "ContractRejectCode::ContractRejectNotDeployable")
},
x if x == Self::ContractRejectDuplicate.0 => {
write!(f, "ContractRejectCode::ContractRejectDuplicate")
},
x if x == Self::ContractRejectMalformedArtifact.0 => {
write!(f, "ContractRejectCode::ContractRejectMalformedArtifact")
},
x if x == Self::ContractRejectUnsupportedFormat.0 => {
write!(f, "ContractRejectCode::ContractRejectUnsupportedFormat")
},
x if x == Self::ContractRejectUnsupportedAbi.0 => {
write!(f, "ContractRejectCode::ContractRejectUnsupportedAbi")
},
x if x == Self::ContractRejectGasScheduleMismatch.0 => {
write!(f, "ContractRejectCode::ContractRejectGasScheduleMismatch")
},
x if x == Self::ContractRejectMemoryTooLarge.0 => {
write!(f, "ContractRejectCode::ContractRejectMemoryTooLarge")
},
x if x == Self::ContractRejectCodeSizeInvalid.0 => {
write!(f, "ContractRejectCode::ContractRejectCodeSizeInvalid")
},
x if x == Self::ContractRejectInitialMemoryInvalid.0 => {
write!(f, "ContractRejectCode::ContractRejectInitialMemoryInvalid")
},
x if x == Self::ContractRejectDigestMismatch.0 => {
write!(f, "ContractRejectCode::ContractRejectDigestMismatch")
},
x if x == Self::ContractRejectInvalidProgram.0 => {
write!(f, "ContractRejectCode::ContractRejectInvalidProgram")
},
_ => {
write!(f, "ContractRejectCode({})", self.0)
}
}
}
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct ContractRejectDiagnostic {
pub contract_index: u32,
pub code: ContractRejectCode,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct TxFailureKind(pub i32);
impl TxFailureKind {
pub const TxFailureDbConflict: Self = Self(0);
pub const TxFailureContractRejected: Self = Self(1);
}
impl From<i32> for TxFailureKind {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for TxFailureKind {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::TxFailureDbConflict.0 => {
write!(f, "TxFailureKind::TxFailureDbConflict")
},
x if x == Self::TxFailureContractRejected.0 => {
write!(f, "TxFailureKind::TxFailureContractRejected")
},
_ => {
write!(f, "TxFailureKind({})", self.0)
}
}
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[repr(i32)]
#[non_exhaustive]
pub enum TxFailureCause {
TxFailureDbConflict { conflict: DbConflictDiagnostic } = TxFailureKind::TxFailureDbConflict.0 as i32,
TxFailureContractRejected { contract: ContractRejectDiagnostic } = TxFailureKind::TxFailureContractRejected.0 as i32,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(ReadXDR, WriteXDR, ConstXDRSize)]
#[derive(schemars::JsonSchema)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct TxFailureDiagnostic {
pub attempt_height: BlockHeight,
pub cause: TxFailureCause,
}
impl DbConflictResult {
#[allow(clippy::match_single_binding)]
pub fn level(&self) -> DbDiagnosticLevel {
match self {
_ => (unsafe { *(self as *const Self as *const i32) }).into(),
}
}
}
impl TxFailureCause {
#[allow(clippy::match_single_binding)]
pub fn kind(&self) -> TxFailureKind {
match self {
_ => (unsafe { *(self as *const Self as *const i32) }).into(),
}
}
}