#![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};
#[cfg(feature = "xdrs")]
use xdrs::*;
#[cfg(feature = "serde")]
use ::serde::{{Serialize, Deserialize}};
pub type Calldata = BytesM;
pub type ReturnBuffer = BytesM;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct Invocation {
pub invoked_address: ContractAddress,
pub entrypoint: ContractEntrypointID,
pub gas_limit: GasAmount,
pub calldata: Calldata,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct InvocationFrameStatusCode(pub i32);
impl InvocationFrameStatusCode {
pub const Return: Self = Self(0);
pub const Fault: Self = Self(1);
pub const Abort: Self = Self(2);
}
impl From<i32> for InvocationFrameStatusCode {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for InvocationFrameStatusCode {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::Return.0 => {
write!(f, "InvocationFrameStatusCode::Return")
},
x if x == Self::Fault.0 => {
write!(f, "InvocationFrameStatusCode::Fault")
},
x if x == Self::Abort.0 => {
write!(f, "InvocationFrameStatusCode::Abort")
},
_ => {
write!(f, "InvocationFrameStatusCode({})", self.0)
}
}
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[repr(i32)]
#[non_exhaustive]
pub enum InvocationFrameOutput {
Return { return_buffer: ReturnBuffer } = InvocationFrameStatusCode::Return.0 as i32,
Abort { abort_buffer: ReturnBuffer } = InvocationFrameStatusCode::Abort.0 as i32,
Fault = InvocationFrameStatusCode::Fault.0 as i32,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct Uniquifier {
pub block_expiry_height: BlockHeight,
pub nonce: u64,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct Transaction {
pub invocation: Invocation,
pub uniquifier: Uniquifier,
pub contracts_to_deploy: VecM<Contract>,
pub auth_claim: AuthClaim,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct DecoratedSignature {
pub public_key_id: u32,
pub signature: Signature,
}
pub type TransactionHash = SHA256Hash;
pub type SignedTransactionHash = SHA256Hash;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct SignedTransaction {
pub tx: Transaction,
pub signatures: VecM<DecoratedSignature>,
pub pubkey_claim_key: Option<PublicKey>,
}
pub type TransactionBatch = VecM::<Transaction>;
pub type SignedTransactionBatch = VecM::<SignedTransaction>;
pub type OptSignedTransaction = Option::<SignedTransaction>;
pub type OptSignedTransactionBatch = VecM::<OptSignedTransaction>;
pub type TransactionHashBatch = VecM::<TransactionHash>;
pub type SignedTransactionHashBatch = VecM::<SignedTransactionHash>;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct NondeterministicProposalData {
pub nondeterministic_bits: BytesM,
pub nondeterministic_bit_count: u32,
pub observed_queue_entry_sequence: VecM<QueueEntry, kMaxConcurrentRcqReadsPerTx>,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(C)]
pub struct ProposedTransaction {
pub signed_tx: SignedTransaction,
pub nondeterministic_proposal_data: NondeterministicProposalData,
}
pub type ProposedTransactionBatch = VecM::<ProposedTransaction>;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(transparent))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Copy)]
#[repr(transparent)]
pub struct TransactionStatistic(pub i32);
impl TransactionStatistic {
pub const GasRemaining: Self = Self(0);
}
impl From<i32> for TransactionStatistic {
fn from(v: i32) -> Self {
Self(v)
}
}
#[cfg(feature = "std")]
impl core::fmt::Display for TransactionStatistic {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self.0 {
x if x == Self::GasRemaining.0 => {
write!(f, "TransactionStatistic::GasRemaining")
},
_ => {
write!(f, "TransactionStatistic({})", self.0)
}
}
}
}
impl InvocationFrameOutput {
#[allow(clippy::match_single_binding)]
pub fn status_code(&self) -> InvocationFrameStatusCode {
match self {
_ => (unsafe { *(self as *const Self as *const i32) }).into(),
}
}
}