#![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 const kMaxEventLength : u32 = 1024;
pub const kMaxEventsPerTransaction : u32 = 1000;
pub const kMaxTopics : u32 = 3;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "xdrs", derive(ReadXDR, WriteXDR, ConstXDRSize))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[derive(Default, Copy)]
#[repr(transparent)]
#[cfg_attr(feature = "serde", serde(transparent))]
pub struct Topic {
#[cfg_attr(feature = "serde", serde(with = "xdr_common::serde_hex"))]
inner: [u8; 32 as usize],
}
impl From<[u8; 32 as usize]> for Topic {
fn from(_inner: [u8; 32 as usize]) -> Self {
Self { inner: _inner }
}
}
impl Topic {
pub fn into_inner(self) -> [u8; 32 as usize] {
self.inner
}
pub const fn new(_inner: [u8; 32 as usize]) -> Self {
Self { inner: _inner }
}
}
impl Deref for Topic {
type Target = [u8; 32 as usize];
fn deref(&self) -> &Self::Target {
&self.inner
}
}
impl DerefMut for Topic {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.inner
}
}
impl AsRef<[u8]> for Topic {
fn as_ref(&self) -> &[u8] {
self.deref().as_slice()
}
}
impl<'a> From<&'a [u8; 32]> for &'a Topic {
fn from(arr: &[u8; 32]) -> Self {
let ptr = arr as *const [u8; 32] as *const Topic;
unsafe { &*ptr }
}
}
#[cfg(feature = "xdrs")]
impl<'r: 'a, 'a> ReadXDR<'r> for &'a Topic {
fn read_xdr<R: xdrs::Reader<'r>>(r: &mut R) -> xdrs::ReadResult<Self> {
let arr: &[u8; 32] = xdrs::read_xdr(r)?;
let val = Self::from(arr);
Ok(val)
}
}
#[cfg(feature = "schema")]
impl schemars::JsonSchema for Topic {
fn schema_name() -> ::std::borrow::Cow<'static, str> {
"Topic".into()
}
fn json_schema(_gen: &mut schemars::SchemaGenerator) -> schemars::Schema {
schemars::json_schema!({
"type": "string",
"contentEncoding": "hex",
"contentMediaType": "application/binary",
"minLength": 64,
"maxLength": 64
})
}
}
#[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 TxEmittedEvent {
pub contract_address: ContractAddress,
pub num_topics: u32,
pub serialized_event: BytesM<kMaxEventLength>,
}
#[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 TxEventLog {
pub tx_hash: TransactionHash,
pub exec_result: ExecResult,
pub root_output: InvocationFrameOutput,
pub gas_consumed: GasAmount,
pub events: VecM<TxEmittedEvent, kMaxEventsPerTransaction>,
}
#[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 IdentifiedEvent {
pub tx_hash: TransactionHash,
pub block_height: BlockHeight,
pub sequence_number: u32,
pub emitted_event: TxEmittedEvent,
}