1#![allow(non_camel_case_types)]
7#![allow(non_snake_case)]
8#![allow(non_upper_case_globals)]
9#![allow(unused_imports)]
10#![allow(dead_code)]
11#![allow(unused_variables)]
12#![allow(clippy::unnecessary_cast)]
13
14use crate::*;
15use core::option::Option;
16use core::ops::{Deref, DerefMut};
17
18#[cfg(feature = "std")]
19use std::io::{Read, Write};
20#[cfg(feature = "xdrs")]
21use xdrs::*;
22
23
24#[cfg(feature = "serde")]
25use ::serde::{{Serialize, Deserialize}};
26
27
28
29pub type SerializedAuthToken = BytesM;
32
33#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
34#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
35#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
36#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
37#[repr(C)]
38pub struct TransactionViewQuery {
39 pub invocation: Invocation,
41 pub parent_address: Option<ContractAddress>,
43 pub auth_claim: AuthClaim,
44 pub forwarded_tokens: VecM<SerializedAuthToken>,
45 pub invoke_flags: InvokeFlagSet,
46}
47
48#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
49#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
50#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
51#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
52#[repr(C)]
53pub struct TransactionViewResult {
54 pub output: InvocationFrameOutput,
56 pub gas_consumed: GasAmount,
57 pub events: VecM<TxEmittedEvent>,
58}
59
60#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
61#[cfg_attr(feature = "serde", serde(transparent))]
62#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
63#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
64#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
65#[derive(Copy)]
66#[repr(transparent)]
67pub struct TransactionViewStatus(pub i32);
68
69impl TransactionViewStatus {
70 pub const Ok: Self = Self(0);
71
72 pub const Abandoned: Self = Self(1);
75
76 pub const InternalError: Self = Self(2);
78
79 pub const InvalidInput: Self = Self(3);
82
83 pub const NondeterministicDataValidationFailure: Self = Self(4);
86}
87impl From<i32> for TransactionViewStatus {
88 fn from(v: i32) -> Self {
89 Self(v)
90 }
91}
92#[cfg(feature = "std")]
93impl core::fmt::Display for TransactionViewStatus {
94 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
95 match self.0 {
96 x if x == Self::Ok.0 => {
97 write!(f, "TransactionViewStatus::Ok")
98 },
99 x if x == Self::Abandoned.0 => {
100 write!(f, "TransactionViewStatus::Abandoned")
101 },
102 x if x == Self::InternalError.0 => {
103 write!(f, "TransactionViewStatus::InternalError")
104 },
105 x if x == Self::InvalidInput.0 => {
106 write!(f, "TransactionViewStatus::InvalidInput")
107 },
108 x if x == Self::NondeterministicDataValidationFailure.0 => {
109 write!(f, "TransactionViewStatus::NondeterministicDataValidationFailure")
110 },
111 _ => {
112 write!(f, "TransactionViewStatus({})", self.0)
113 }
114 }
115 }
116}
117
118
119#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
120#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
121#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
122#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
123#[repr(i32)]
124#[non_exhaustive]
125pub enum ExpectedViewResult {
126 Ok { result: TransactionViewResult } = TransactionViewStatus::Ok.0 as i32,
129 InvalidInput { error_code: SyscallErrorCode } = TransactionViewStatus::InvalidInput.0 as i32,
132 Abandoned = TransactionViewStatus::Abandoned.0 as i32,
137 InternalError = TransactionViewStatus::InternalError.0 as i32,
138 NondeterministicDataValidationFailure = TransactionViewStatus::NondeterministicDataValidationFailure.0 as i32,
139
140}
141
142
143impl ExpectedViewResult {
148 #[allow(clippy::match_single_binding)]
149 pub fn status(&self) -> TransactionViewStatus {
150 match self {
151
152 _ => (unsafe { *(self as *const Self as *const i32) }).into(),
153 }
154 }
155}
156
157