diff --git a/Cargo.lock b/Cargo.lock index 67e183e4b..40bd6c99f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1370,6 +1370,12 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2-const" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb83f144cbda94be5d2278400eee9e0a03eb68b5504349943655b7b1603c4af" + [[package]] name = "sha3" version = "0.10.8" @@ -1541,6 +1547,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "sha2-const", "soroban-env-guest", "soroban-env-host", "soroban-ledger-snapshot", @@ -1686,7 +1693,7 @@ dependencies = [ [[package]] name = "stellar-xdr" version = "27.0.0" -source = "git+https://github.com/stellar/rs-stellar-xdr?rev=0c7bcaa9145d40de52d6592a1df785c2a4d0f1dc#0c7bcaa9145d40de52d6592a1df785c2a4d0f1dc" +source = "git+https://github.com/stellar/rs-stellar-xdr?rev=71021aea8210d75eab7290cc176f27df8e0a432f#71021aea8210d75eab7290cc176f27df8e0a432f" dependencies = [ "arbitrary", "base64", diff --git a/Cargo.toml b/Cargo.toml index b74430a7d..1bcb8fd98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -57,7 +57,7 @@ default-features = false # Pending https://github.com/stellar/rs-stellar-xdr/pull/562, which adds the # borrowing `*Ref` types and their const XDR serializers that the contract spec # generation in soroban-sdk-macros builds on. -stellar-xdr = { git = "https://github.com/stellar/rs-stellar-xdr", rev = "0c7bcaa9145d40de52d6592a1df785c2a4d0f1dc" } +stellar-xdr = { git = "https://github.com/stellar/rs-stellar-xdr", rev = "71021aea8210d75eab7290cc176f27df8e0a432f" } #soroban-env-common = { path = "../rs-soroban-env/soroban-env-common" } #soroban-env-guest = { path = "../rs-soroban-env/soroban-env-guest" } #soroban-env-host = { path = "../rs-soroban-env/soroban-env-host" } diff --git a/soroban-sdk-macros/src/derive_enum.rs b/soroban-sdk-macros/src/derive_enum.rs index 6e3882617..c867b9da6 100644 --- a/soroban-sdk-macros/src/derive_enum.rs +++ b/soroban-sdk-macros/src/derive_enum.rs @@ -2,7 +2,7 @@ use itertools::MultiUnzip; use proc_macro2::{Literal, TokenStream as TokenStream2}; use quote::{format_ident, quote, ToTokens}; use syn::{ - ext::IdentExt as _, spanned::Spanned, Attribute, DataEnum, Error, Fields, Ident, Path, + ext::IdentExt as _, spanned::Spanned, Attribute, DataEnum, Error, Fields, Ident, Path, Type, Visibility, }; @@ -13,7 +13,10 @@ use stellar_xdr::{ use crate::{ doc::docs_from_attrs, - map_type::{const_ref_string, const_ref_type_def, map_type}, + map_type::{ + const_ref_string, const_ref_type_def, const_ref_type_def_canonical, map_type, + spec_type_id_gen, + }, shaking, DEFAULT_XDR_RW_LIMITS, }; @@ -149,53 +152,75 @@ pub fn derive_type_enum( return quote! { #(#compile_errors)* }; } - // Build the spec entry once if spec is enabled. - let spec_entry = if spec { - Some(ScSpecUdtUnionV0 { - doc: docs_from_attrs(attrs), - lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), - name: enum_ident.unraw().to_string().try_into().unwrap(), - cases: spec_cases.try_into().unwrap(), - }) - } else { - None + // Build the spec entry. Built even when spec is not enabled, because the + // type's identity is derived from it and other types' references to this + // type need that identity regardless. + let spec_entry = ScSpecEntry::UdtUnionV0(ScSpecUdtUnionV0 { + doc: docs_from_attrs(attrs), + lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), + name: enum_ident.unraw().to_string().try_into().unwrap(), + cases: spec_cases.try_into().unwrap(), + }); + let ScSpecEntry::UdtUnionV0(spec_union) = &spec_entry else { + unreachable!() }; - - // Generated code spec. The spec entry is rendered as the equivalent const - // ScSpecEntryRef, which the contract crate encodes to XDR at compile time. - let spec_gen = spec_entry.as_ref().map(|spec_entry| { - let doc = const_ref_string(path, &spec_entry.doc); - let lib = const_ref_string(path, &spec_entry.lib); - let name = const_ref_string(path, &spec_entry.name); - let cases = spec_entry.cases.iter().map(|c| match c { - ScSpecUdtUnionCaseV0::VoidV0(c) => { - let doc = const_ref_string(path, &c.doc); - let name = const_ref_string(path, &c.name); - quote!(#path::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( - #path::xdr::ScSpecUdtUnionCaseVoidV0Ref { doc: #doc, name: #name } - )) - } - ScSpecUdtUnionCaseV0::TupleV0(c) => { - let doc = const_ref_string(path, &c.doc); - let name = const_ref_string(path, &c.name); - let type_ = c.type_.iter().map(|t| const_ref_type_def(path, t)); - quote!(#path::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( - #path::xdr::ScSpecUdtUnionCaseTupleV0Ref { - doc: #doc, - name: #name, - type_: #path::xdr::VecMRef::new(&[#(#type_),*]), + // The spec entry rendered as the equivalent const ScSpecEntryRef, which the + // contract crate encodes to XDR at compile time. `case_type` renders each + // tuple case's types, and is all that differs between the exported form and + // the canonical form the type's identity is computed over. + let entry_ref = |case_type: &dyn Fn(&ScSpecTypeDef, &Type) -> TokenStream2| { + let doc = const_ref_string(path, &spec_union.doc); + let lib = const_ref_string(path, &spec_union.lib); + let name = const_ref_string(path, &spec_union.name); + // Each case's Rust field types, so a reference to a user-defined type in + // a case resolves to that type's id. + let cases = + spec_union + .cases + .iter() + .zip(&variant_field_types) + .map(|(c, field_types)| match c { + ScSpecUdtUnionCaseV0::VoidV0(c) => { + let doc = const_ref_string(path, &c.doc); + let name = const_ref_string(path, &c.name); + quote!(#path::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + #path::xdr::ScSpecUdtUnionCaseVoidV0Ref { doc: #doc, name: #name } + )) } - )) - } - }); - let spec_ref = quote! { + ScSpecUdtUnionCaseV0::TupleV0(c) => { + let doc = const_ref_string(path, &c.doc); + let name = const_ref_string(path, &c.name); + let type_ = c + .type_ + .iter() + .zip(field_types.iter().copied()) + .map(|(t, rust)| case_type(t, rust)); + quote!(#path::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + #path::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: #doc, + name: #name, + type_: #path::xdr::VecMRef::new(&[#(#type_),*]), + } + )) + } + }); + quote! { #path::xdr::ScSpecEntryRef::UdtUnionV0(#path::xdr::ScSpecUdtUnionV0Ref { doc: #doc, lib: #lib, name: #name, cases: #path::xdr::VecMRef::new(&[#(#cases),*]), }) - }; + } + }; + let spec_id_gen = spec_type_id_gen( + path, + enum_ident, + &entry_ref(&|t, _| const_ref_type_def_canonical(path, t)), + ); + + let spec_gen = spec.then(|| { + let spec_ref = entry_ref(&|t, rust| const_ref_type_def(path, t, Some(rust))); let spec_ident = format_ident!( "__SPEC_XDR_TYPE_{}", enum_ident.unraw().to_string().to_uppercase() @@ -216,35 +241,31 @@ pub fn derive_type_enum( // SpecShakingMarker impl - only generated when spec is true and the // experimental_spec_shaking_v2 feature is enabled. - let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { - spec_entry.as_ref().map(|spec_entry| { - let spec_xdr = ScSpecEntry::UdtUnionV0(spec_entry.clone()) - .to_xdr(DEFAULT_XDR_RW_LIMITS) - .unwrap(); - // Flatten all variant field types for shaking calls, deduplicating - // to avoid redundant calls for types that appear in multiple variants. - let all_field_types = - itertools::Itertools::unique_by(variant_field_types.iter().flatten(), |t| { - t.to_token_stream().to_string() - }); - shaking::generate_marker_impl( - path, - quote!(#enum_ident), - &spec_xdr, - all_field_types.cloned(), - None, - None, - None, - ) - }) - } else { - None - }; + let spec_shaking_impl = (spec && cfg!(feature = "experimental_spec_shaking_v2")).then(|| { + let spec_xdr = spec_entry.to_xdr(DEFAULT_XDR_RW_LIMITS).unwrap(); + // Flatten all variant field types for shaking calls, deduplicating + // to avoid redundant calls for types that appear in multiple variants. + let all_field_types = + itertools::Itertools::unique_by(variant_field_types.iter().flatten(), |t| { + t.to_token_stream().to_string() + }); + shaking::generate_marker_impl( + path, + quote!(#enum_ident), + &spec_xdr, + all_field_types.cloned(), + None, + None, + None, + ) + }); // Output. let mut output = quote! { #spec_gen + #spec_id_gen + #spec_shaking_impl impl #path::TryFromVal<#path::Env, #path::Val> for #enum_ident { diff --git a/soroban-sdk-macros/src/derive_enum_int.rs b/soroban-sdk-macros/src/derive_enum_int.rs index 3c61a4a48..b74ea95f0 100644 --- a/soroban-sdk-macros/src/derive_enum_int.rs +++ b/soroban-sdk-macros/src/derive_enum_int.rs @@ -9,7 +9,11 @@ use syn::{ use stellar_xdr::{ScSpecEntry, ScSpecUdtEnumCaseV0, WriteXdr}; -use crate::{doc::docs_from_attrs, map_type::const_ref_string, shaking, DEFAULT_XDR_RW_LIMITS}; +use crate::{ + doc::docs_from_attrs, + map_type::{const_ref_string, spec_type_id_gen}, + shaking, DEFAULT_XDR_RW_LIMITS, +}; // TODO: Add conversions to/from ScVal types. @@ -67,38 +71,45 @@ pub fn derive_type_enum_int( return quote! { #(#compile_errors)* }; } - // Build the spec entry once if spec is enabled. - let spec_entry = if spec { - Some(ScSpecUdtEnumV0 { - doc: docs_from_attrs(attrs), - lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), - name: enum_ident.unraw().to_string().try_into().unwrap(), - cases: spec_cases.try_into().unwrap(), - }) - } else { - None + // Build the spec entry. Built even when spec is not enabled, because the + // type's identity is derived from it and other types' references to this + // type need that identity regardless. + let spec_entry = ScSpecEntry::UdtEnumV0(ScSpecUdtEnumV0 { + doc: docs_from_attrs(attrs), + lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), + name: enum_ident.unraw().to_string().try_into().unwrap(), + cases: spec_cases.try_into().unwrap(), + }); + let ScSpecEntry::UdtEnumV0(spec_enum) = &spec_entry else { + unreachable!() }; - - // Generated code spec. The spec entry is rendered as the equivalent const - // ScSpecEntryRef, which the contract crate encodes to XDR at compile time. - let spec_gen = spec_entry.as_ref().map(|spec_entry| { - let doc = const_ref_string(path, &spec_entry.doc); - let lib = const_ref_string(path, &spec_entry.lib); - let name = const_ref_string(path, &spec_entry.name); - let cases = spec_entry.cases.iter().map(|c| { + // The spec entry rendered as the equivalent const ScSpecEntryRef, which the + // contract crate encodes to XDR at compile time. An enum holds no types, so + // it contains no reference to carry an id and this is already the canonical + // form the type's identity is computed over. + let entry_ref = || { + let doc = const_ref_string(path, &spec_enum.doc); + let lib = const_ref_string(path, &spec_enum.lib); + let name = const_ref_string(path, &spec_enum.name); + let cases = spec_enum.cases.iter().map(|c| { let doc = const_ref_string(path, &c.doc); let name = const_ref_string(path, &c.name); let value = c.value; quote!(#path::xdr::ScSpecUdtEnumCaseV0Ref { doc: #doc, name: #name, value: #value }) }); - let spec_ref = quote! { + quote! { #path::xdr::ScSpecEntryRef::UdtEnumV0(#path::xdr::ScSpecUdtEnumV0Ref { doc: #doc, lib: #lib, name: #name, cases: #path::xdr::VecMRef::new(&[#(#cases),*]), }) - }; + } + }; + let spec_id_gen = spec_type_id_gen(path, enum_ident, &entry_ref()); + + let spec_gen = spec.then(|| { + let spec_ref = entry_ref(); let spec_ident = format_ident!( "__SPEC_XDR_TYPE_{}", enum_ident.unraw().to_string().to_uppercase() @@ -119,29 +130,25 @@ pub fn derive_type_enum_int( // SpecShakingMarker impl - only generated when spec is true and the // experimental_spec_shaking_v2 feature is enabled. - let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { - spec_entry.as_ref().map(|spec_entry| { - let spec_xdr = ScSpecEntry::UdtEnumV0(spec_entry.clone()) - .to_xdr(DEFAULT_XDR_RW_LIMITS) - .unwrap(); - shaking::generate_marker_impl( - path, - quote!(#enum_ident), - &spec_xdr, - std::iter::empty(), - None, - None, - None, - ) - }) - } else { - None - }; + let spec_shaking_impl = (spec && cfg!(feature = "experimental_spec_shaking_v2")).then(|| { + let spec_xdr = spec_entry.to_xdr(DEFAULT_XDR_RW_LIMITS).unwrap(); + shaking::generate_marker_impl( + path, + quote!(#enum_ident), + &spec_xdr, + std::iter::empty(), + None, + None, + None, + ) + }); // Output. let mut output = quote! { #spec_gen + #spec_id_gen + #spec_shaking_impl impl #path::TryFromVal<#path::Env, #path::Val> for #enum_ident { diff --git a/soroban-sdk-macros/src/derive_error_enum_int.rs b/soroban-sdk-macros/src/derive_error_enum_int.rs index 6d1fec4ce..2a461e0fb 100644 --- a/soroban-sdk-macros/src/derive_error_enum_int.rs +++ b/soroban-sdk-macros/src/derive_error_enum_int.rs @@ -6,7 +6,11 @@ use syn::{ ext::IdentExt as _, spanned::Spanned, Attribute, DataEnum, Error, ExprLit, Ident, Lit, Path, }; -use crate::{doc::docs_from_attrs, map_type::const_ref_string, shaking, DEFAULT_XDR_RW_LIMITS}; +use crate::{ + doc::docs_from_attrs, + map_type::{const_ref_string, spec_type_id_gen}, + shaking, DEFAULT_XDR_RW_LIMITS, +}; pub fn derive_type_error_enum_int( path: &Path, @@ -64,38 +68,45 @@ pub fn derive_type_error_enum_int( return quote! { #(#compile_errors)* }; } - // Build the spec entry once if spec is enabled. - let spec_entry = if spec { - Some(ScSpecUdtErrorEnumV0 { - doc: docs_from_attrs(attrs), - lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), - name: enum_ident.unraw().to_string().try_into().unwrap(), - cases: spec_cases.try_into().unwrap(), - }) - } else { - None + // Build the spec entry. Built even when spec is not enabled, because the + // type's identity is derived from it and other types' references to this + // type need that identity regardless. + let spec_entry = ScSpecEntry::UdtErrorEnumV0(ScSpecUdtErrorEnumV0 { + doc: docs_from_attrs(attrs), + lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), + name: enum_ident.unraw().to_string().try_into().unwrap(), + cases: spec_cases.try_into().unwrap(), + }); + let ScSpecEntry::UdtErrorEnumV0(spec_enum) = &spec_entry else { + unreachable!() }; - - // Generated code spec. The spec entry is rendered as the equivalent const - // ScSpecEntryRef, which the contract crate encodes to XDR at compile time. - let spec_gen = spec_entry.as_ref().map(|spec_entry| { - let doc = const_ref_string(path, &spec_entry.doc); - let lib = const_ref_string(path, &spec_entry.lib); - let name = const_ref_string(path, &spec_entry.name); - let cases = spec_entry.cases.iter().map(|c| { + // The spec entry rendered as the equivalent const ScSpecEntryRef, which the + // contract crate encodes to XDR at compile time. An error enum holds no + // types, so it contains no reference to carry an id and this is already the + // canonical form the type's identity is computed over. + let entry_ref = || { + let doc = const_ref_string(path, &spec_enum.doc); + let lib = const_ref_string(path, &spec_enum.lib); + let name = const_ref_string(path, &spec_enum.name); + let cases = spec_enum.cases.iter().map(|c| { let doc = const_ref_string(path, &c.doc); let name = const_ref_string(path, &c.name); let value = c.value; quote!(#path::xdr::ScSpecUdtErrorEnumCaseV0Ref { doc: #doc, name: #name, value: #value }) }); - let spec_ref = quote! { + quote! { #path::xdr::ScSpecEntryRef::UdtErrorEnumV0(#path::xdr::ScSpecUdtErrorEnumV0Ref { doc: #doc, lib: #lib, name: #name, cases: #path::xdr::VecMRef::new(&[#(#cases),*]), }) - }; + } + }; + let spec_id_gen = spec_type_id_gen(path, enum_ident, &entry_ref()); + + let spec_gen = spec.then(|| { + let spec_ref = entry_ref(); let spec_ident = format_ident!( "__SPEC_XDR_TYPE_{}", enum_ident.unraw().to_string().to_uppercase() @@ -116,29 +127,25 @@ pub fn derive_type_error_enum_int( // SpecShakingMarker impl - only generated when spec is true and the // experimental_spec_shaking_v2 feature is enabled. - let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { - spec_entry.as_ref().map(|spec_entry| { - let spec_xdr = ScSpecEntry::UdtErrorEnumV0(spec_entry.clone()) - .to_xdr(DEFAULT_XDR_RW_LIMITS) - .unwrap(); - shaking::generate_marker_impl( - path, - quote!(#enum_ident), - &spec_xdr, - std::iter::empty(), - None, - None, - None, - ) - }) - } else { - None - }; + let spec_shaking_impl = (spec && cfg!(feature = "experimental_spec_shaking_v2")).then(|| { + let spec_xdr = spec_entry.to_xdr(DEFAULT_XDR_RW_LIMITS).unwrap(); + shaking::generate_marker_impl( + path, + quote!(#enum_ident), + &spec_xdr, + std::iter::empty(), + None, + None, + None, + ) + }); // Output. quote! { #spec_gen + #spec_id_gen + #spec_shaking_impl impl TryFrom<#path::Error> for #enum_ident { diff --git a/soroban-sdk-macros/src/derive_event.rs b/soroban-sdk-macros/src/derive_event.rs index 10bbff042..80494f6fa 100644 --- a/soroban-sdk-macros/src/derive_event.rs +++ b/soroban-sdk-macros/src/derive_event.rs @@ -212,18 +212,22 @@ fn derive_impls(args: &ContractEventArgs, input: &DeriveInput) -> Result Some(&*pat_type.ty), + FnArg::Receiver(_) => None, + }) + .collect::>(); + let output_type = match output { + ReturnType::Type(_, ty) => Some(&**ty), + ReturnType::Default => None, + }; let doc = const_ref_string(path, &spec_entry.doc); let name = const_ref_symbol(path, &spec_entry.name); - let inputs = spec_entry.inputs.iter().map(|i| { + let inputs = spec_entry.inputs.iter().zip(arg_types.iter().copied()).map(|(i, rust)| { let doc = const_ref_string(path, &i.doc); let name = const_ref_string(path, &i.name); - let type_ = const_ref_type_def(path, &i.type_); + let type_ = const_ref_type_def(path, &i.type_, rust); quote!(#path::xdr::ScSpecFunctionInputV0Ref { doc: #doc, name: #name, type_: #type_ }) }); let outputs = spec_entry .outputs .iter() - .map(|o| const_ref_type_def(path, o)); + .map(|o| const_ref_type_def(path, o, output_type)); quote! { #path::xdr::ScSpecEntryRef::FunctionV0(#path::xdr::ScSpecFunctionV0Ref { doc: #doc, diff --git a/soroban-sdk-macros/src/derive_struct.rs b/soroban-sdk-macros/src/derive_struct.rs index 76bc60402..f06277ddb 100644 --- a/soroban-sdk-macros/src/derive_struct.rs +++ b/soroban-sdk-macros/src/derive_struct.rs @@ -1,7 +1,7 @@ use itertools::Itertools; use proc_macro2::{Literal, TokenStream as TokenStream2}; use quote::{format_ident, quote}; -use syn::{ext::IdentExt as _, Attribute, DataStruct, Error, Ident, Path, Visibility}; +use syn::{ext::IdentExt as _, Attribute, DataStruct, Error, Ident, Path, Type, Visibility}; use stellar_xdr::{ ScSpecEntry, ScSpecTypeDef, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, StringM, WriteXdr, @@ -9,7 +9,10 @@ use stellar_xdr::{ use crate::{ doc::docs_from_attrs, - map_type::{const_ref_string, const_ref_type_def, map_type}, + map_type::{ + const_ref_string, const_ref_type_def, const_ref_type_def_canonical, map_type, + spec_type_id_gen, + }, shaking, DEFAULT_XDR_RW_LIMITS, }; @@ -78,38 +81,49 @@ pub fn derive_type_struct( return quote! { #(#compile_errors)* }; } - // Build the spec entry once if spec is enabled. - let spec_entry = if spec { - Some(ScSpecUdtStructV0 { - doc: docs_from_attrs(attrs), - lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), - name: ident.unraw().to_string().try_into().unwrap(), - fields: spec_fields.try_into().unwrap(), - }) - } else { - None + // Build the spec entry. Built even when spec is not enabled, because the + // type's identity is derived from it and other types' references to this + // type need that identity regardless. + let spec_entry = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { + doc: docs_from_attrs(attrs), + lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), + name: ident.unraw().to_string().try_into().unwrap(), + fields: spec_fields.try_into().unwrap(), + }); + let ScSpecEntry::UdtStructV0(spec_struct) = &spec_entry else { + unreachable!() }; - - // Generated code spec. The spec entry is rendered as the equivalent const - // ScSpecEntryRef, which the contract crate encodes to XDR at compile time. - let spec_gen = spec_entry.as_ref().map(|spec_entry| { - let doc = const_ref_string(path, &spec_entry.doc); - let lib = const_ref_string(path, &spec_entry.lib); - let name = const_ref_string(path, &spec_entry.name); - let fields = spec_entry.fields.iter().map(|f| { + // The spec entry rendered as the equivalent const ScSpecEntryRef, which the + // contract crate encodes to XDR at compile time. `field_type` renders each + // field's type, and is all that differs between the exported form and the + // canonical form the type's identity is computed over. + let entry_ref = |field_type: &dyn Fn(&ScSpecTypeDef, &Type) -> TokenStream2| { + let doc = const_ref_string(path, &spec_struct.doc); + let lib = const_ref_string(path, &spec_struct.lib); + let name = const_ref_string(path, &spec_struct.name); + let fields = spec_struct.fields.iter().zip(field_types.iter().copied()).map(|(f, rust)| { let doc = const_ref_string(path, &f.doc); let name = const_ref_string(path, &f.name); - let type_ = const_ref_type_def(path, &f.type_); + let type_ = field_type(&f.type_, rust); quote!(#path::xdr::ScSpecUdtStructFieldV0Ref { doc: #doc, name: #name, type_: #type_ }) }); - let spec_ref = quote! { + quote! { #path::xdr::ScSpecEntryRef::UdtStructV0(#path::xdr::ScSpecUdtStructV0Ref { doc: #doc, lib: #lib, name: #name, fields: #path::xdr::VecMRef::new(&[#(#fields),*]), }) - }; + } + }; + let spec_id_gen = spec_type_id_gen( + path, + ident, + &entry_ref(&|t, _| const_ref_type_def_canonical(path, t)), + ); + + let spec_gen = spec.then(|| { + let spec_ref = entry_ref(&|t, rust| const_ref_type_def(path, t, Some(rust))); let spec_ident = format_ident!( "__SPEC_XDR_TYPE_{}", ident.unraw().to_string().to_uppercase() @@ -130,29 +144,25 @@ pub fn derive_type_struct( // SpecShakingMarker impl - only generated when spec is true and the // experimental_spec_shaking_v2 feature is enabled. - let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { - spec_entry.as_ref().map(|spec_entry| { - let spec_xdr = ScSpecEntry::UdtStructV0(spec_entry.clone()) - .to_xdr(DEFAULT_XDR_RW_LIMITS) - .unwrap(); - shaking::generate_marker_impl( - path, - quote!(#ident), - &spec_xdr, - field_types.iter().cloned(), - None, - None, - None, - ) - }) - } else { - None - }; + let spec_shaking_impl = (spec && cfg!(feature = "experimental_spec_shaking_v2")).then(|| { + let spec_xdr = spec_entry.to_xdr(DEFAULT_XDR_RW_LIMITS).unwrap(); + shaking::generate_marker_impl( + path, + quote!(#ident), + &spec_xdr, + field_types.iter().cloned(), + None, + None, + None, + ) + }); // Output. let mut output = quote! { #spec_gen + #spec_id_gen + #spec_shaking_impl impl #path::TryFromVal<#path::Env, #path::Val> for #ident { diff --git a/soroban-sdk-macros/src/derive_struct_tuple.rs b/soroban-sdk-macros/src/derive_struct_tuple.rs index 96eba9d1e..0645e62aa 100644 --- a/soroban-sdk-macros/src/derive_struct_tuple.rs +++ b/soroban-sdk-macros/src/derive_struct_tuple.rs @@ -1,7 +1,7 @@ use itertools::MultiUnzip; use proc_macro2::{Literal, TokenStream as TokenStream2}; use quote::{format_ident, quote}; -use syn::{ext::IdentExt as _, Attribute, DataStruct, Error, Ident, Path, Visibility}; +use syn::{ext::IdentExt as _, Attribute, DataStruct, Error, Ident, Path, Type, Visibility}; use stellar_xdr::{ ScSpecEntry, ScSpecTypeDef, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, StringM, WriteXdr, @@ -9,7 +9,10 @@ use stellar_xdr::{ use crate::{ doc::docs_from_attrs, - map_type::{const_ref_string, const_ref_type_def, map_type}, + map_type::{ + const_ref_string, const_ref_type_def, const_ref_type_def_canonical, map_type, + spec_type_id_gen, + }, shaking, DEFAULT_XDR_RW_LIMITS, }; @@ -67,38 +70,53 @@ pub fn derive_type_struct_tuple( return quote! { #(#compile_errors)* }; } - // Build the spec entry once if spec is enabled. - let spec_entry = if spec { - Some(ScSpecUdtStructV0 { - doc: docs_from_attrs(attrs), - lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), - name: ident.unraw().to_string().try_into().unwrap(), - fields: field_specs.try_into().unwrap(), - }) - } else { - None + // Build the spec entry. Built even when spec is not enabled, because the + // type's identity is derived from it and other types' references to this + // type need that identity regardless. + let spec_entry = ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { + doc: docs_from_attrs(attrs), + lib: lib.as_deref().unwrap_or_default().try_into().unwrap(), + name: ident.unraw().to_string().try_into().unwrap(), + fields: field_specs.try_into().unwrap(), + }); + let ScSpecEntry::UdtStructV0(spec_struct) = &spec_entry else { + unreachable!() }; - - // Generated code spec. The spec entry is rendered as the equivalent const - // ScSpecEntryRef, which the contract crate encodes to XDR at compile time. - let spec_gen = spec_entry.as_ref().map(|spec_entry| { - let doc = const_ref_string(path, &spec_entry.doc); - let lib = const_ref_string(path, &spec_entry.lib); - let name = const_ref_string(path, &spec_entry.name); - let fields = spec_entry.fields.iter().map(|f| { + // The spec entry rendered as the equivalent const ScSpecEntryRef, which the + // contract crate encodes to XDR at compile time. `field_type` renders each + // field's type, and is all that differs between the exported form and the + // canonical form the type's identity is computed over. + let entry_ref = |field_type: &dyn Fn(&ScSpecTypeDef, &Type) -> TokenStream2| { + let doc = const_ref_string(path, &spec_struct.doc); + let lib = const_ref_string(path, &spec_struct.lib); + let name = const_ref_string(path, &spec_struct.name); + let fields = spec_struct + .fields + .iter() + .zip(field_types.iter().copied()) + .map(|(f, rust)| { let doc = const_ref_string(path, &f.doc); let name = const_ref_string(path, &f.name); - let type_ = const_ref_type_def(path, &f.type_); + let type_ = field_type(&f.type_, rust); quote!(#path::xdr::ScSpecUdtStructFieldV0Ref { doc: #doc, name: #name, type_: #type_ }) }); - let spec_ref = quote! { + quote! { #path::xdr::ScSpecEntryRef::UdtStructV0(#path::xdr::ScSpecUdtStructV0Ref { doc: #doc, lib: #lib, name: #name, fields: #path::xdr::VecMRef::new(&[#(#fields),*]), }) - }; + } + }; + let spec_id_gen = spec_type_id_gen( + path, + ident, + &entry_ref(&|t, _| const_ref_type_def_canonical(path, t)), + ); + + let spec_gen = spec.then(|| { + let spec_ref = entry_ref(&|t, rust| const_ref_type_def(path, t, Some(rust))); let spec_ident = format_ident!( "__SPEC_XDR_TYPE_{}", ident.unraw().to_string().to_uppercase() @@ -119,29 +137,25 @@ pub fn derive_type_struct_tuple( // SpecShakingMarker impl - only generated when spec is true and the // experimental_spec_shaking_v2 feature is enabled. - let spec_shaking_impl = if cfg!(feature = "experimental_spec_shaking_v2") { - spec_entry.as_ref().map(|spec_entry| { - let spec_xdr = ScSpecEntry::UdtStructV0(spec_entry.clone()) - .to_xdr(DEFAULT_XDR_RW_LIMITS) - .unwrap(); - shaking::generate_marker_impl( - path, - quote!(#ident), - &spec_xdr, - field_types.iter().cloned(), - None, - None, - None, - ) - }) - } else { - None - }; + let spec_shaking_impl = (spec && cfg!(feature = "experimental_spec_shaking_v2")).then(|| { + let spec_xdr = spec_entry.to_xdr(DEFAULT_XDR_RW_LIMITS).unwrap(); + shaking::generate_marker_impl( + path, + quote!(#ident), + &spec_xdr, + field_types.iter().cloned(), + None, + None, + None, + ) + }); // Output. let mut output = quote! { #spec_gen + #spec_id_gen + #spec_shaking_impl impl #path::TryFromVal<#path::Env, #path::Val> for #ident { diff --git a/soroban-sdk-macros/src/map_type.rs b/soroban-sdk-macros/src/map_type.rs index d1e3748cd..0e1167be0 100644 --- a/soroban-sdk-macros/src/map_type.rs +++ b/soroban-sdk-macros/src/map_type.rs @@ -2,7 +2,7 @@ use proc_macro2::{Literal, TokenStream as TokenStream2}; use quote::{format_ident, quote, ToTokens}; use stellar_xdr::{ ScSpecTypeBytesN, ScSpecTypeDef, ScSpecTypeMap, ScSpecTypeOption, ScSpecTypeResult, - ScSpecTypeTuple, ScSpecTypeUdt, ScSpecTypeVec, ScSymbol, StringM, + ScSpecTypeTuple, ScSpecTypeUdtv2, ScSpecTypeVec, ScSymbol, StringM, }; use syn::{ ext::IdentExt as _, spanned::Spanned, Error, Expr, ExprLit, GenericArgument, Ident, Lit, Path, @@ -24,6 +24,11 @@ pub const BN254_FP_SERIALIZED_SIZE: u32 = 32; pub const BN254_G1_SERIALIZED_SIZE: u32 = BN254_FP_SERIALIZED_SIZE * 2; // 64 pub const BN254_G2_SERIALIZED_SIZE: u32 = BN254_G1_SERIALIZED_SIZE * 2; // 128 +// The limit on the `name` of every UDT definition entry in the contract spec +// XDR, i.e. the `name<60>` of SCSpecUDTStructV0 and its union, enum, and error +// enum counterparts. +const UDT_NAME_LIMIT: u32 = 60; + /// Checks if an `ident` and `generics` input type maps to a user-defined type (UDT). /// /// Returns Ok if the input will be parsed as a UDT, and returns an Err with a message if not. @@ -42,7 +47,16 @@ pub fn is_mapped_type_udt(ident: &Ident, generics: &Generics) -> Result<(), Erro // because the unraw'd form (`type`) isn't a valid Rust Type. let ty = ident_to_type(ident.clone()); match map_type(&ty, false, false) { - Ok(ScSpecTypeDef::Udt(_)) => { + Ok(ScSpecTypeDef::UdtV2(_)) => { + // A reference carries only the id, so the name is bounded by the + // limit on the name of the definition entry that the type gets. + let name = ident.unraw().to_string(); + StringM::::try_from(name).map_err(|e| { + Error::new( + ident.span(), + format!("type `{}` cannot be used in XDR spec: {}", ident, e), + ) + })?; // `ty` does not contain the generics, so check manually here if generics.params.len() > 0 { Err(Error::new( @@ -53,22 +67,10 @@ pub fn is_mapped_type_udt(ident: &Ident, generics: &Generics) -> Result<(), Erro Ok(()) } } - _ => { - // Check if the error originated from the UDT-arm of `map_type` - let name = ident.unraw().to_string(); - let _ = ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: name.try_into().map_err(|e| { - Error::new( - ident.span(), - format!("type `{}` cannot be used in XDR spec: {}", ident, e), - ) - })?, - }); - Err(Error::new( - ident.span(), - format!("type `{}` conflicts with a soroban_sdk type and cannot be used as a user-defined type", ident), - )) - } + _ => Err(Error::new( + ident.span(), + format!("type `{}` conflicts with a soroban_sdk type and cannot be used as a user-defined type", ident), + )), } } @@ -179,14 +181,10 @@ pub fn map_type(t: &Type, allow_ref: bool, allow_hash: bool) -> Result Ok(ScSpecTypeDef::U256), // Deprecated alias for Bn254Fr "BnScalar" => Ok(ScSpecTypeDef::U256), - s => Ok(ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: s.try_into().map_err(|e| { - Error::new( - t.span(), - format!("type `{}` cannot be used in XDR spec: {}", s, e), - ) - })?, - })), + // A reference to a user-defined type. The id identifying the + // referenced type is not known here, and is filled in by + // [const_ref_type_def] from that type's `spec_type_id`. + _ => Ok(ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { id: [0u8; 8] })), }, Some(PathSegment { ident, @@ -305,39 +303,154 @@ pub fn map_type(t: &Type, allow_ref: bool, allow_hash: bool) -> Result` param descends +/// like the `Vec` it maps to. +fn unref(t: &Type) -> &Type { + match t { + Type::Reference(TypeReference { elem, .. }) => unref(elem), + _ => t, + } +} + +/// The Rust type arguments that line up, in order, with the type arguments of +/// the spec type [map_type] produced for `t`: the arguments of a container +/// (`Option`, `Result`, `Vec`, `Map`) or the elements of a +/// tuple. Empty for anything else, including the parameterized types whose +/// arguments are not types in the spec (`BytesN`, `Hash`). +fn type_args(t: &Type) -> Vec<&Type> { + match unref(t) { + Type::Tuple(TypeTuple { elems, .. }) => elems.iter().collect(), + Type::Path(TypePath { + qself: None, + path: Path { segments, .. }, + }) => match segments.last() { + Some(PathSegment { + ident, + arguments: PathArguments::AngleBracketed(args), + }) if matches!( + &ident.unraw().to_string()[..], + "Option" | "Result" | "Vec" | "Map" + ) => + { + args.args + .iter() + .filter_map(|a| match a { + GenericArgument::Type(ty) => Some(ty), + _ => None, + }) + .collect() + } + _ => Vec::new(), + }, + _ => Vec::new(), + } +} + +/// Emits the `spec_type_id` const fn on a user-defined type: the 8-byte identity +/// that references to it carry, which is the truncated SHA256 of its own spec +/// entry in canonical form. Emitted for every user-defined type, even one whose +/// spec is not exported, because a reference to it from anywhere needs the id. +/// +/// `canonical_ref` is the type's spec entry rendered as a const +/// `ScSpecEntryRef`, with the id of every reference it contains zeroed. Both the +/// encoding and the hashing happen at const evaluation time, so the id is +/// computed from the very bytes the contract emits rather than from a second +/// encoding of them made here. +pub fn spec_type_id_gen(path: &Path, ident: &Ident, canonical_ref: &TokenStream2) -> TokenStream2 { + quote! { + impl #ident { + const __SPEC_XDR_CANONICAL_REF: #path::xdr::ScSpecEntryRef<'static> = #canonical_ref; + + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; #ident::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + #ident::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = #path::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } + } +} + /// Renders a [ScSpecTypeDef] as a const expression of type /// `#path::xdr::ScSpecTypeDefRef`, so the containing spec entry can be encoded -/// to XDR at compile time by the contract crate. -pub fn const_ref_type_def(path: &Path, t: &ScSpecTypeDef) -> TokenStream2 { +/// to XDR at compile time by the contract crate. A reference to a user-defined +/// type takes its id from that type's `spec_type_id`, resolving the reference at +/// const evaluation time even when the type lives in another crate. +/// +/// `rust` is the Rust type `t` was mapped from, descended in step with `t` so a +/// reference is reached holding the type that names it, keeping any path +/// qualification (e.g. the `othercontract::Flag` in a `Vec`) +/// that the rendered expression needs to name it. +pub fn const_ref_type_def(path: &Path, t: &ScSpecTypeDef, rust: Option<&Type>) -> TokenStream2 { + const_ref_type_def_with(path, t, rust, RefIds::Resolved) +} + +/// Renders a [ScSpecTypeDef] the same way [const_ref_type_def] does, except that +/// every reference to a user-defined type carries a zeroed id rather than the +/// referenced type's own. This is the form a type's id is computed over, so that +/// a type's identity does not depend on the identities of the types it +/// references, which is what makes it well-defined for types that reference each +/// other or themselves. +/// +/// Needing no id to render, it needs no Rust type to take one from. +pub fn const_ref_type_def_canonical(path: &Path, t: &ScSpecTypeDef) -> TokenStream2 { + const_ref_type_def_with(path, t, None, RefIds::Zeroed) +} + +/// Whether a rendered reference to a user-defined type carries the referenced +/// type's id, or a zeroed one. +#[derive(Clone, Copy)] +enum RefIds { + Resolved, + Zeroed, +} + +fn const_ref_type_def_with( + path: &Path, + t: &ScSpecTypeDef, + rust: Option<&Type>, + ids: RefIds, +) -> TokenStream2 { let xdr = quote!(#path::xdr); let variant = format_ident!("{}", t.name()); + let args = rust.map(type_args).unwrap_or_default(); + let arg = |i: usize| args.get(i).copied(); // Variants that hold a value. The recursive ones sit behind a reference in // the Ref type, matching the Box in the owned type. let value = match t { ScSpecTypeDef::Option(o) => { - let value_type = const_ref_type_def(path, &o.value_type); + let value_type = const_ref_type_def_with(path, &o.value_type, arg(0), ids); Some(quote!(( r::ScSpecTypeOptionRef { value_type: &#value_type }))) } ScSpecTypeDef::Result(r) => { - let ok_type = const_ref_type_def(path, &r.ok_type); - let error_type = const_ref_type_def(path, &r.error_type); + let ok_type = const_ref_type_def_with(path, &r.ok_type, arg(0), ids); + let error_type = const_ref_type_def_with(path, &r.error_type, arg(1), ids); Some( quote!(( r::ScSpecTypeResultRef { ok_type: &#ok_type, error_type: &#error_type })), ) } ScSpecTypeDef::Vec(v) => { - let element_type = const_ref_type_def(path, &v.element_type); + let element_type = const_ref_type_def_with(path, &v.element_type, arg(0), ids); Some(quote!(( r::ScSpecTypeVecRef { element_type: &#element_type }))) } ScSpecTypeDef::Map(m) => { - let key_type = const_ref_type_def(path, &m.key_type); - let value_type = const_ref_type_def(path, &m.value_type); + let key_type = const_ref_type_def_with(path, &m.key_type, arg(0), ids); + let value_type = const_ref_type_def_with(path, &m.value_type, arg(1), ids); Some( quote!(( r::ScSpecTypeMapRef { key_type: &#key_type, value_type: &#value_type })), ) } ScSpecTypeDef::Tuple(t) => { - let value_types = t.value_types.iter().map(|t| const_ref_type_def(path, t)); + let value_types = t + .value_types + .iter() + .enumerate() + .map(|(i, t)| const_ref_type_def_with(path, t, arg(i), ids)); Some( quote!(( r::ScSpecTypeTupleRef { value_types: #xdr::VecMRef::new(&[#(#value_types),*]) })), ) @@ -350,6 +463,22 @@ pub fn const_ref_type_def(path: &Path, t: &ScSpecTypeDef) -> TokenStream2 { let name = const_ref_string(path, &u.name); Some(quote!((#xdr::ScSpecTypeUdtRef { name: #name }))) } + // The reference carries only the id, which is the referenced type's own + // `spec_type_id`. Naming that type is the only way to reach it, so the + // Rust type the reference was mapped from is required, named as written + // with its path qualification and all. The canonical form zeroes the id, + // so it needs neither. + ScSpecTypeDef::UdtV2(_) => Some(match ids { + RefIds::Zeroed => quote!((#xdr::ScSpecTypeUdtv2 { id: [0u8; 8] })), + RefIds::Resolved => match rust.map(unref) { + Some(ty) => quote!((#xdr::ScSpecTypeUdtv2 { id: <#ty>::spec_type_id() })), + None => quote!( + (compile_error!( + "user-defined type reference has no Rust type to take its id from" + )) + ), + }, + }), // All remaining variants are void. _ => None, }; diff --git a/soroban-sdk/Cargo.toml b/soroban-sdk/Cargo.toml index 60cb6da32..ac3493032 100644 --- a/soroban-sdk/Cargo.toml +++ b/soroban-sdk/Cargo.toml @@ -28,6 +28,9 @@ stellar-xdr = { workspace = true, features = ["const"] } stellar-strkey = { workspace = true } bytes-lit = "0.0.6" visibility = "0.1.1" +# Used by macro-generated code to hash a type's spec entry at const evaluation +# time. The sha2 crate has no const API, so it cannot serve this. +sha2-const = "0.1.1" [target.'cfg(target_family="wasm")'.dependencies] soroban-env-guest = { workspace = true } diff --git a/soroban-sdk/src/lib.rs b/soroban-sdk/src/lib.rs index 40e2e099f..88160949e 100644 --- a/soroban-sdk/src/lib.rs +++ b/soroban-sdk/src/lib.rs @@ -154,6 +154,7 @@ pub mod reexports_for_macros { pub use bytes_lit; #[cfg(any(test, feature = "testutils"))] pub use ctor; + pub use sha2_const; } /// `debug_assert_in_contract!` asserts that the contract is currently executing within a diff --git a/soroban-sdk/src/tests/contract_udt_raw_identifier.rs b/soroban-sdk/src/tests/contract_udt_raw_identifier.rs index f2a116cfc..9510c1d39 100644 --- a/soroban-sdk/src/tests/contract_udt_raw_identifier.rs +++ b/soroban-sdk/src/tests/contract_udt_raw_identifier.rs @@ -6,7 +6,7 @@ use soroban_sdk::{ use stellar_xdr::{ Limits, ReadXdr, ScSpecEntry, ScSpecEventDataFormat, ScSpecEventParamLocationV0, ScSpecEventParamV0, ScSpecEventV0, ScSpecFunctionInputV0, ScSpecFunctionV0, ScSpecTypeDef, - ScSpecTypeResult, ScSpecTypeUdt, ScSpecUdtEnumCaseV0, ScSpecUdtEnumV0, + ScSpecTypeResult, ScSpecTypeUdtv2, ScSpecUdtEnumCaseV0, ScSpecUdtEnumV0, ScSpecUdtErrorEnumCaseV0, ScSpecUdtErrorEnumV0, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, ScSpecUdtUnionCaseTupleV0, ScSpecUdtUnionCaseV0, ScSpecUdtUnionV0, ScSymbol, }; @@ -125,18 +125,18 @@ fn test_spec_contract() { inputs: [ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "fn".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestEnum".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: TestEnum::spec_type_id(), }), }] .try_into() .unwrap(), outputs: [ScSpecTypeDef::Result(Box::new(ScSpecTypeResult { - ok_type: Box::new(ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestType".try_into().unwrap(), + ok_type: Box::new(ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: TestType::spec_type_id(), })), - error_type: Box::new(ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "TestError".try_into().unwrap(), + error_type: Box::new(ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: TestError::spec_type_id(), })), }))] .try_into() diff --git a/soroban-sdk/src/tests/contract_udt_struct.rs b/soroban-sdk/src/tests/contract_udt_struct.rs index b4f1085b0..5bd8cb83f 100644 --- a/soroban-sdk/src/tests/contract_udt_struct.rs +++ b/soroban-sdk/src/tests/contract_udt_struct.rs @@ -5,7 +5,7 @@ use soroban_sdk::{ }; use stellar_xdr::{ Limits, ReadXdr, ScSpecEntry, ScSpecFunctionInputV0, ScSpecFunctionV0, ScSpecTypeDef, - ScSpecTypeTuple, ScSpecTypeUdt, + ScSpecTypeTuple, ScSpecTypeUdtv2, }; #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -134,15 +134,15 @@ fn test_spec() { ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), }, ] @@ -150,11 +150,11 @@ fn test_spec() { .unwrap(), outputs: vec![ScSpecTypeDef::Tuple(Box::new(ScSpecTypeTuple { value_types: vec![ - ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), - ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), ] .try_into() @@ -177,15 +177,15 @@ fn test_spec_with_long_names() { ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "UdtWithLongName".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: UdtWithLongName::spec_type_id(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "UdtWithLongName".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: UdtWithLongName::spec_type_id(), }), }, ] diff --git a/soroban-sdk/src/tests/contract_udt_struct_tuple.rs b/soroban-sdk/src/tests/contract_udt_struct_tuple.rs index 207926e96..684188121 100644 --- a/soroban-sdk/src/tests/contract_udt_struct_tuple.rs +++ b/soroban-sdk/src/tests/contract_udt_struct_tuple.rs @@ -5,7 +5,7 @@ use soroban_sdk::{ }; use stellar_xdr::{ Limits, ReadXdr, ScSpecEntry, ScSpecFunctionInputV0, ScSpecFunctionV0, ScSpecTypeDef, - ScSpecTypeTuple, ScSpecTypeUdt, + ScSpecTypeTuple, ScSpecTypeUdtv2, }; #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -80,15 +80,15 @@ fn test_spec() { ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "a".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), }, ScSpecFunctionInputV0 { doc: "".try_into().unwrap(), name: "b".try_into().unwrap(), - type_: ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), }, ] @@ -96,11 +96,11 @@ fn test_spec() { .unwrap(), outputs: std::vec![ScSpecTypeDef::Tuple(Box::new(ScSpecTypeTuple { value_types: std::vec![ - ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), - ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Udt".try_into().unwrap(), + ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { + id: Udt::spec_type_id(), }), ] .try_into() diff --git a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_asset.1.json b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_asset.1.json index aa8ae5c60..b7297c580 100644 --- a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_asset.1.json +++ b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_asset.1.json @@ -187,7 +187,7 @@ "event": { "ext": "v0", "contract_id": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json index 8fc0c99ef..4cb3e8248 100644 --- a/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json +++ b/soroban-sdk/test_snapshots/tests/address/test_get_existing_contract_address_executable_wasm.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "constructor_args": [] } @@ -70,7 +70,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "storage": null } @@ -104,8 +104,8 @@ } } }, - "hash": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be80153704563563136c1e94a3bcadb9e537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f85370456356318008814f9a15391a537045635631572c11e8217aa8aa53704563563169d349657ba271ba556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc00100009000000009b1a0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d136c1e94a3bcadb9e000000000000000162000000000007d136c1e94a3bcadb9e000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d116276438ffc9b1f80000000100000000000000045564744300000001000007d1aff793ba9e4dde9a0000000100000000000000045564744400000001000007d1eb9f12269a76282a00000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d18008814f9a15391a00000001000003e8000007d18008814f9a15391a0000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d18008814f9a15391a0000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d169d349657ba271ba0000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d1572c11e8217aa8aa00000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d1572c11e8217aa8aa00000000000000036b6579000000000400000001000003e9000003e8000007d1572c11e8217aa8aa0000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json b/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json index 9a46c8227..e72ed2b19 100644 --- a/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json +++ b/soroban-sdk/test_snapshots/tests/auth/auth_05_register_at_constructor/test.1.json @@ -67,7 +67,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "6a6ec31faafc21a0d0a2086fcdda0b8dc65f754b457c84c59b7617985aca3bae" + "wasm": "4cf6838ca3d5f3cf7d2ae1732740398a5f1e699d0fd71886e17d1c4a2984ab96" }, "storage": [ { @@ -110,8 +110,8 @@ } } }, - "hash": "6a6ec31faafc21a0d0a2086fcdda0b8dc65f754b457c84c59b7617985aca3bae", - "code": "0061736d0100000001130360017e017e60027e7e017e60037e7e7e017e021303016101300000016201690001016c015f00020302010005030100110621047f01418080c0000b7f00418580c0000b7f00418580c0000b7f00419080c0000b073905066d656d6f727902000d5f5f636f6e7374727563746f720003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a440142000240200042ff018342cd00510d00000b20001080808080001a418080c08000ad4220864204844284808080d000108180808000200042021082808080001a42020b0b0e0100418080c0000b0561646d696e00db150e636f6e747261637473706563763000000000000000000000000d5f5f636f6e7374727563746f7200000000000001000000000000000561646d696e000000000000130000000000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "4cf6838ca3d5f3cf7d2ae1732740398a5f1e699d0fd71886e17d1c4a2984ab96", + "code": "0061736d0100000001130360017e017e60027e7e017e60037e7e7e017e021303016101300000016201690001016c015f00020302010005030100110621047f01418080c0000b7f00418580c0000b7f00418580c0000b7f00419080c0000b073905066d656d6f727902000d5f5f636f6e7374727563746f720003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a440142000240200042ff018342cd00510d00000b20001080808080001a418080c08000ad4220864204844284808080d000108180808000200042021082808080001a42020b0b0e0100418080c0000b0561646d696e00fb130e636f6e747261637473706563763000000000000000000000000d5f5f636f6e7374727563746f7200000000000001000000000000000561646d696e000000000000130000000000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map.1.json index ad867127b..d2d283657 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_no_data.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_no_data.1.json index cd7b8ebf2..4e50b7bc7 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_no_data.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_no_data.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_sorts_fields.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_sorts_fields.1.json index 3bb399623..bdcb79f26 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_sorts_fields.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_map_sorts_fields.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value.1.json index 5b6d7e6f9..343c8e9a2 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value_no_data.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value_no_data.1.json index f9ca0d6ff..57dd64f41 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value_no_data.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_single_value_no_data.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec.1.json index 9eb0a7aa8..09f39af5c 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_no_data.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_no_data.1.json index 8c532d184..6df3689fa 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_no_data.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_no_data.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_preserves_field_order.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_preserves_field_order.1.json index bff624164..ea996cbbe 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_preserves_field_order.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_data_vec_preserves_field_order.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_defaults.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_defaults.1.json index 60deb5a74..af7ce64a1 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_defaults.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_defaults.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_event_comparison_tuple_vec.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_event_comparison_tuple_vec.1.json index 27123844d..c866d075d 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_event_comparison_tuple_vec.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_event_comparison_tuple_vec.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ @@ -94,7 +94,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_events_for_diff_contracts.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_events_for_diff_contracts.1.json index 8ea4394b6..b8a327835 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_events_for_diff_contracts.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_events_for_diff_contracts.1.json @@ -86,7 +86,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ @@ -118,7 +118,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ @@ -150,7 +150,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_no_prefix_topics.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_no_prefix_topics.1.json index cc2e98418..849767f0b 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_no_prefix_topics.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_no_prefix_topics.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics.1.json index 684fa7ecf..6971d6f7e 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [], diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics_no_data.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics_no_data.1.json index 8b05f3df0..1595dd3b7 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics_no_data.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_no_topics_no_data.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [], diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_prefix_topics.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_prefix_topics.1.json index b5f0a7aba..e4e7ab7fe 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_prefix_topics.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_prefix_topics.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_ref_fields.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_ref_fields.1.json index ad867127b..d2d283657 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_ref_fields.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_ref_fields.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/contract_event/test_unit_struct.1.json b/soroban-sdk/test_snapshots/tests/contract_event/test_unit_struct.1.json index 2116c7f49..9cb7fd8da 100644 --- a/soroban-sdk/test_snapshots/tests/contract_event/test_unit_struct.1.json +++ b/soroban-sdk/test_snapshots/tests/contract_event/test_unit_struct.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json index f96bcc0b2..21356bb45 100644 --- a/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json +++ b/soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "3dd30ad22c7b8bfacc2931a6991bb1a7fcf4a79d7752fd7d169e78b3489b3761" + "wasm": "7492e7fb5c7028ddcd6a5636d5b49afd343296b9eec2504a03671cd9a2509c41" }, "constructor_args": [] } @@ -96,7 +96,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "3dd30ad22c7b8bfacc2931a6991bb1a7fcf4a79d7752fd7d169e78b3489b3761" + "wasm": "7492e7fb5c7028ddcd6a5636d5b49afd343296b9eec2504a03671cd9a2509c41" }, "storage": null } @@ -130,8 +130,8 @@ } } }, - "hash": "3dd30ad22c7b8bfacc2931a6991bb1a7fcf4a79d7752fd7d169e78b3489b3761", - "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60000060037e7f7f0060017f0060027f7e0060017f017e60037f7f7f017f026711016d01610000016201380001016301380001016301340001016301650001016301610001016301360002016301630002016301670002017601330001017601310002016201310000016201330002016901610001017801300002016901720002017601670002031413030104050606060607020302020305080808080405017001020205030100110621047f01418080c0000b7f0041c480c0000b7f00419481c0000b7f0041a081c0000b075708066d656d6f727902000c64756d6d795f76657269667900120a66725f7665635f676574001a0667315f6d756c001c0667325f6d756c001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030907010041010b01110aa7171302000b870503027f047e017f23808080800041f0016b22012480808080004100210241002d008080c080001a0240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000419c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a1808080001a200020014190016a4130109380808000200141306a20014190016a413010a3808080001a200141306a10948080800020014190016a20012903101095808080002001280290010d00200129039801210320014190016a410041e00010a1808080001a200320014190016a41e000109380808000200141306a20014190016a41e00010a3808080001a200141306a109480808000200141306a41306a10948080800020014190016a20012903181096808080002001280290010d00200129039801210420014190016a20012903201097808080002001280290010d00200129039801210520014190016a20012903281098808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1099808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1099808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041e480c08000413010a080808000417f4a0d000f0b410e109f80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41c480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110958080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b980101017f23808080800041106b2202248080808000200241818080800036020020022802001a024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010968080800020022802004101470d020b000b109b80808000000b20022903082100200241106a24808080800020000b0b00412b109f80808000000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109880808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109e80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a2808080000b0b9e010100418080c0000b940153704563563185570041dc7eb72266706670326672673167320000000e00100002000000100010000300000013001000020000001500100002000000170010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00cb180e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c00000000100000000000000000000000a44756d6d7950726f6f66000000000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d00000000a44756d6d7950726f6f660000000000010000000100000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "7492e7fb5c7028ddcd6a5636d5b49afd343296b9eec2504a03671cd9a2509c41", + "code": "0061736d0100000001320960047e7e7e7e017e60017e017e60027e7e017e60000060037e7f7f0060017f0060027f7e0060017f017e60037f7f7f017f026711016d01610000016201380001016301380001016301340001016301650001016301610001016301360002016301630002016301670002017601330001017601310002016201310000016201330002016901610001017801300002016901720002017601670002031413030104050606060607020302020305080808080405017001020205030100110621047f01418080c0000b7f0041c480c0000b7f00419481c0000b7f0041a081c0000b075708066d656d6f727902000c64756d6d795f76657269667900120a66725f7665635f676574001a0667315f6d756c001c0667325f6d756c001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030907010041010b01110aa7171302000b870503027f047e017f23808080800041f0016b22012480808080004100210241002d008080c080001a0240034020024128460d01200141086a20026a4202370300200241086a21020c000b0b0240200042ff018342cc00520d002000419c80c08000ad422086420484200141086aad4220864204844284808080d0001080808080001a2001290308220042ff018342c800520d0020001081808080004280808080708342808080808006520d0020014190016a4100413010a1808080001a200020014190016a4130109380808000200141306a20014190016a413010a3808080001a200141306a10948080800020014190016a20012903101095808080002001280290010d00200129039801210320014190016a410041e00010a1808080001a200320014190016a41e000109380808000200141306a20014190016a41e00010a3808080001a200141306a109480808000200141306a41306a10948080800020014190016a20012903181096808080002001280290010d00200129039801210420014190016a20012903201097808080002001280290010d00200129039801210520014190016a20012903281098808080002001280290014101460d00200129039801210620001082808080001083808080001a20031084808080001085808080001a200520041086808080002103200620041087808080002104420221004101210203402000210520024101712107410021022003210020070d000b200120053703900120014190016a1099808080002105420221004101210203402000210320024101712107410021022004210020070d000b2001200337039001200520014190016a1099808080001088808080002100200141f0016a2480808080002000420151ad0f0b000b1f00200042042001ad4220864204842002ad422086420484108b808080001a0b24000240200041e480c08000413010a080808000417f4a0d000f0b410e109f80808000000b4201017e420121020240200142ff018342c800520d002001108180808000428080808070834280808080800c520d0020002001370308420021020b200020023703000ba60102017f017e024002402001a741ff0171220241c600460d00420121032002410c470d010b41c480c08000ad42208642048442848080808004108c80808000108d8080800021030240024002400240200142ce0083420c520d00200342ff0183420c510d010b20012003108e80808000427f550d010c020b20014208882003420888540d010b20012003108f8080800021010b20002001370308420021030b200020033703000b4d01017f23808080800041106b22022480808080002002200110958080800042012101024020022802000d0020002002290308370308420021010b20002001370300200241106a2480808080000b4201017e420121020240200142ff018342c800520d0020011081808080004280808080708342808080808018520d0020002001370308420021020b200020023703000b17002000ad4220864204844284808080101090808080000b980101017f23808080800041106b2202248080808000200241818080800036020020022802001a024002400240200042ff018342cb00520d00200142ff01834204520d0020001089808080004220882001422088580d0120022000200142848080807083108a8080800010968080800020022802004101470d020b000b109b80808000000b20022903082100200241106a24808080800020000b0b00412b109f80808000000b6501017f23808080800041106b220224808080800020022000109780808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081086808080002100200241106a24808080800020000f0b000b6501017f23808080800041106b220224808080800020022000109880808000024020022802004101460d00200229030821002002200110968080800020022802004101460d00200020022903081087808080002100200241106a24808080800020000f0b000b0300000b0900109e80808000000b4a01037f4100210302402002450d000240034020002d0000220420012d00002205470d01200041016a2100200141016a21012002417f6a2202450d020c000b0b200420056b21030b20030baa0301057f02400240200241104f0d00200021030c010b024020002000410020006b41037122046a22054f0d002004417f6a21062000210302402004450d0020042107200021030340200320013a0000200341016a21032007417f6a22070d000b0b20064107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032005470d000b0b024020052005200220046b2202417c716a22034f0d00200141ff017141818284086c2107034020052007360200200541046a22052003490d000b0b200241037121020b02402003200320026a22074f0d002002417f6a2104024020024107712205450d000340200320013a0000200341016a21032005417f6a22050d000b0b20044107490d000340200320013a0000200341076a20013a0000200341066a20013a0000200341056a20013a0000200341046a20013a0000200341036a20013a0000200341026a20013a0000200341016a20013a0000200341086a22032007470d000b0b20000bb907010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a220841037122010d00200620044f0d0120082101034020062001280200360200200141046a2101200641046a22062004490d000c020b0b410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210a2808080000b0b9e010100418080c0000b940153704563563185570041dc7eb72266706670326672673167320000000e00100002000000100010000300000013001000020000001500100002000000170010000200000073eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000011a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab00e3160e636f6e747261637473706563763000000000000000000000000667315f6d756c000000000002000000000000000170000000000003ee000000600000000000000001730000000000000c00000001000003ee0000006000000000000000000000000667325f6d756c000000000002000000000000000170000000000003ee000000c00000000000000001730000000000000c00000001000003ee000000c00000000100000000000000000000000a44756d6d7950726f6f66000000000005000000000000000266700000000003ee00000030000000000000000366703200000003ee000000600000000000000002667200000000000c000000000000000267310000000003ee00000060000000000000000267320000000003ee000000c000000000000000000000000a66725f7665635f676574000000000002000000000000000676616c7565730000000003ea0000000c0000000000000005696e64657800000000000004000000010000000c00000000000000000000000c64756d6d795f76657269667900000001000000000000000570726f6f66000000000007d185570041dc7eb722000000010000000100000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/soroban-sdk/test_snapshots/tests/token_client/test_issuer_flags.1.json b/soroban-sdk/test_snapshots/tests/token_client/test_issuer_flags.1.json index 4e1af7d58..c9b01f325 100644 --- a/soroban-sdk/test_snapshots/tests/token_client/test_issuer_flags.1.json +++ b/soroban-sdk/test_snapshots/tests/token_client/test_issuer_flags.1.json @@ -187,7 +187,7 @@ "event": { "ext": "v0", "contract_id": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-spec-rust/src/lib.rs b/soroban-spec-rust/src/lib.rs index f4c462693..3447d9203 100644 --- a/soroban-spec-rust/src/lib.rs +++ b/soroban-spec-rust/src/lib.rs @@ -3,15 +3,17 @@ pub mod r#trait; pub mod types; use std::borrow::Cow; +use std::collections::BTreeMap; use std::{fs, io}; use proc_macro2::TokenStream; use quote::quote; use sha2::{Digest, Sha256}; -use stellar_xdr::{ScSpecEntry, ScSpecTypeDef, ScSpecTypeUdt, ScSpecUdtUnionCaseV0}; +use stellar_xdr::{ScSpecEntry, ScSpecTypeDef, ScSpecTypeUdt, ScSpecUdtUnionCaseV0, StringM}; use syn::Error; use soroban_spec::read::{from_wasm, FromWasmError}; +use soroban_spec::udt_id::canonical_id; use types::{ generate_enum_with_options, generate_error_enum_with_options, generate_event_with_options, @@ -107,7 +109,11 @@ pub fn generate_without_file_with_options( specs: &[ScSpecEntry], opts: &GenerateOptions, ) -> Result { - let specs = apply_error_udt_override(specs); + // Collected before the rewrites below, because the id a reference carries is + // derived from the referenced entry's own contents. + let names = udt_names(specs); + let mut specs = apply_error_udt_override(specs).into_owned(); + resolve_udt_v2_names(&mut specs, &names); let specs: &[ScSpecEntry] = &specs; let mut spec_fns = Vec::new(); @@ -200,26 +206,34 @@ fn apply_error_udt_override(specs: &[ScSpecEntry]) -> Cow<'_, [ScSpecEntry]> { /// a user-defined error enum named `Error`, so the UDT reference resolves to /// that enum during code generation. fn rewrite_error_to_udt(entries: &mut [ScSpecEntry]) { - fn rewrite_ty(t: &mut ScSpecTypeDef) { + for_each_type_def(entries, &mut |t| { + if matches!(t, ScSpecTypeDef::Error) { + *t = ScSpecTypeDef::Udt(ScSpecTypeUdt { + name: "Error".try_into().unwrap(), + }); + } + }); +} + +/// Calls `f` on every type in `entries`, including the types nested inside the +/// parameterized ones. +fn for_each_type_def(entries: &mut [ScSpecEntry], f: &mut impl FnMut(&mut ScSpecTypeDef)) { + fn visit(t: &mut ScSpecTypeDef, f: &mut impl FnMut(&mut ScSpecTypeDef)) { + f(t); match t { - ScSpecTypeDef::Error => { - *t = ScSpecTypeDef::Udt(ScSpecTypeUdt { - name: "Error".try_into().unwrap(), - }); - } - ScSpecTypeDef::Option(o) => rewrite_ty(&mut o.value_type), + ScSpecTypeDef::Option(o) => visit(&mut o.value_type, f), ScSpecTypeDef::Result(r) => { - rewrite_ty(&mut r.ok_type); - rewrite_ty(&mut r.error_type); + visit(&mut r.ok_type, f); + visit(&mut r.error_type, f); } - ScSpecTypeDef::Vec(v) => rewrite_ty(&mut v.element_type), + ScSpecTypeDef::Vec(v) => visit(&mut v.element_type, f), ScSpecTypeDef::Map(m) => { - rewrite_ty(&mut m.key_type); - rewrite_ty(&mut m.value_type); + visit(&mut m.key_type, f); + visit(&mut m.value_type, f); } ScSpecTypeDef::Tuple(tu) => { for vt in tu.value_types.iter_mut() { - rewrite_ty(vt); + visit(vt, f); } } _ => {} @@ -227,24 +241,24 @@ fn rewrite_error_to_udt(entries: &mut [ScSpecEntry]) { } for entry in entries.iter_mut() { match entry { - ScSpecEntry::FunctionV0(f) => { - for input in f.inputs.iter_mut() { - rewrite_ty(&mut input.type_); + ScSpecEntry::FunctionV0(fun) => { + for input in fun.inputs.iter_mut() { + visit(&mut input.type_, f); } - for output in f.outputs.iter_mut() { - rewrite_ty(output); + for output in fun.outputs.iter_mut() { + visit(output, f); } } ScSpecEntry::UdtStructV0(s) => { for field in s.fields.iter_mut() { - rewrite_ty(&mut field.type_); + visit(&mut field.type_, f); } } ScSpecEntry::UdtUnionV0(u) => { for case in u.cases.iter_mut() { if let ScSpecUdtUnionCaseV0::TupleV0(t) = case { for ty in t.type_.iter_mut() { - rewrite_ty(ty); + visit(ty, f); } } } @@ -252,13 +266,48 @@ fn rewrite_error_to_udt(entries: &mut [ScSpecEntry]) { ScSpecEntry::UdtEnumV0(_) | ScSpecEntry::UdtErrorEnumV0(_) => {} ScSpecEntry::EventV0(e) => { for p in e.params.iter_mut() { - rewrite_ty(&mut p.type_); + visit(&mut p.type_, f); } } } } } +/// Rewrites every `ScSpecTypeDef::UdtV2` reference in `entries`, which +/// identifies the type it references only by an id, to the `ScSpecTypeDef::Udt` +/// naming that type, so that generation has a name to build an ident from. +/// +/// `names` maps the id of every user-defined type the spec defines to its name, +/// and must be built from the entries as they were read, because an entry's id +/// is derived from its own contents. +fn resolve_udt_v2_names(entries: &mut [ScSpecEntry], names: &BTreeMap<[u8; 8], StringM<60>>) { + for_each_type_def(entries, &mut |t| { + if let ScSpecTypeDef::UdtV2(u) = t { + if let Some(name) = names.get(&u.id) { + *t = ScSpecTypeDef::Udt(ScSpecTypeUdt { name: name.clone() }); + } + } + }); +} + +/// The name of every user-defined type the spec defines, keyed by the id that +/// references to it carry. +fn udt_names(entries: &[ScSpecEntry]) -> BTreeMap<[u8; 8], StringM<60>> { + entries + .iter() + .filter_map(|entry| { + let name = match entry { + ScSpecEntry::UdtStructV0(s) => &s.name, + ScSpecEntry::UdtUnionV0(u) => &u.name, + ScSpecEntry::UdtEnumV0(e) => &e.name, + ScSpecEntry::UdtErrorEnumV0(e) => &e.name, + ScSpecEntry::FunctionV0(_) | ScSpecEntry::EventV0(_) => return None, + }; + Some((canonical_id(entry), name.clone())) + }) + .collect() +} + /// Implemented by types that can be converted into pretty formatted Strings of /// Rust code. pub trait ToFormattedString { @@ -555,16 +604,25 @@ pub enum MyError { matches!(r.ok_type.as_ref(), ScSpecTypeDef::U64), "ok_type should be U64" ); - let ScSpecTypeDef::Udt(u) = r.error_type.as_ref() else { + let ScSpecTypeDef::UdtV2(u) = r.error_type.as_ref() else { panic!( "error_type should be a UDT for MyError, got {:?}", r.error_type ); }; + // The reference carries only an id, so it is the id of the MyError + // entry in the same spec that identifies it as the referenced type. + let my_error = entries + .iter() + .find(|e| { + matches!(e, ScSpecEntry::UdtErrorEnumV0(err) + if err.name.to_utf8_string().unwrap() == "MyError") + }) + .expect("MyError error enum not found"); assert_eq!( - u.name.to_utf8_string().unwrap(), - "MyError", - "error_type should be MyError UDT" + u.id, + super::canonical_id(my_error), + "error_type should reference the MyError UDT" ); } diff --git a/soroban-spec-rust/src/types.rs b/soroban-spec-rust/src/types.rs index 0669b3b40..a2e6988d8 100644 --- a/soroban-spec-rust/src/types.rs +++ b/soroban-spec-rust/src/types.rs @@ -1,8 +1,8 @@ use proc_macro2::{Literal, TokenStream}; use quote::quote; use stellar_xdr::{ - ScSpecEventParamLocationV0, ScSpecEventV0, ScSpecTypeDef, ScSpecUdtEnumV0, - ScSpecUdtErrorEnumV0, ScSpecUdtStructV0, ScSpecUdtUnionV0, + ScSpecEventParamLocationV0, ScSpecEventV0, ScSpecTypeDef, ScSpecTypeUdt, ScSpecTypeUdtv2, + ScSpecUdtEnumV0, ScSpecUdtErrorEnumV0, ScSpecUdtStructV0, ScSpecUdtUnionV0, }; use crate::syn_ext::str_to_ident; @@ -18,6 +18,8 @@ pub enum GenerateError { InvalidUtf8, #[error("invalid Rust identifier: {0:?}")] InvalidIdent(String), + #[error("no user-defined type in the spec has the id {0:?} that a type reference carries")] + UnresolvedUdtId([u8; 8]), } /// Options for controlling code generation behavior. @@ -329,10 +331,15 @@ pub fn generate_type_ident(spec: &ScSpecTypeDef) -> Result }) } - ScSpecTypeDef::Udt(u) => { - let ident = str_to_ident(&u.name)?; + ScSpecTypeDef::Udt(ScSpecTypeUdt { name }) => { + let ident = str_to_ident(name)?; Ok(quote! { #ident }) } + // A UdtV2 identifies the type it references only by id, so it carries no + // name to generate an ident from. Generation runs after every UdtV2 has + // been resolved to the Udt naming the type its id identifies, leaving + // one here only when the spec has no definition carrying that id. + ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { id }) => Err(GenerateError::UnresolvedUdtId(*id)), ScSpecTypeDef::Void => Ok(quote! { () }), ScSpecTypeDef::Timepoint => Ok(quote! { soroban_sdk::Timepoint }), ScSpecTypeDef::Duration => Ok(quote! { soroban_sdk::Duration }), diff --git a/soroban-spec/src/lib.rs b/soroban-spec/src/lib.rs index 9f454f1f2..3624e0cfa 100644 --- a/soroban-spec/src/lib.rs +++ b/soroban-spec/src/lib.rs @@ -1,2 +1,3 @@ pub mod read; pub mod shaking; +pub mod udt_id; diff --git a/soroban-spec/src/shaking.rs b/soroban-spec/src/shaking.rs index a6eb8d2c4..2f8381188 100644 --- a/soroban-spec/src/shaking.rs +++ b/soroban-spec/src/shaking.rs @@ -36,7 +36,7 @@ use std::collections::HashSet; use sha2::{Digest, Sha256}; -use stellar_xdr::{Limits, ScMetaEntry, ScSpecEntry, WriteXdr}; +use stellar_xdr::{ScMetaEntry, ScSpecEntry}; /// The contract meta key that indicates the spec shaking version. /// @@ -88,17 +88,13 @@ pub fn generate_marker_for_xdr(spec_entry_xdr: &[u8]) -> Marker { /// Generates a marker for a spec entry. /// /// The marker is the magic prefix `SpEcV1` followed by a truncated SHA256 -/// (first 8 bytes) of the spec entry's XDR bytes. -/// -/// # Panics -/// -/// Panics if the spec entry cannot be encoded to XDR, which should never happen -/// for valid `ScSpecEntry` values. +/// (first 8 bytes) of the spec entry's XDR bytes, in the canonical form +/// [`crate::udt_id::canonical_xdr`] defines. Hashing the canonical form is what +/// lets a marker generated here, from an entry read back out of a built wasm, +/// match the marker the derive macros embed while compiling, which is generated +/// before any referenced type's id is known. pub fn generate_marker_for_entry(entry: &ScSpecEntry) -> Marker { - let xdr_bytes = entry - .to_xdr(Limits::none()) - .expect("XDR encoding should not fail"); - generate_marker_for_xdr(&xdr_bytes) + generate_marker_for_xdr(&crate::udt_id::canonical_xdr(entry)) } /// Finds all spec markers in a WASM binary's data section. diff --git a/soroban-spec/src/udt_id.rs b/soroban-spec/src/udt_id.rs new file mode 100644 index 000000000..00b2013ec --- /dev/null +++ b/soroban-spec/src/udt_id.rs @@ -0,0 +1,121 @@ +//! Computes the `id` field of [`ScSpecTypeUdtv2`] references. +//! +//! A `ScSpecTypeUdtv2` reference identifies another user-defined type solely by +//! an 8-byte `id`. The id is the truncated (first 8 bytes) SHA256 of the +//! referenced type's own [`ScSpecEntry`], computed over a canonical form in +//! which all `UdtV2` ids the entry itself contains are zeroed. Zeroing the ids +//! in the preimage keeps the identity independent of other types' ids, so it is +//! well-defined even for mutually- or self-recursive types. +//! +//! So for `struct A { b: B }`, the field `b` in `A`'s spec entry is a +//! `ScSpecTypeUdtv2 { id: canonical_id(B's entry) }`. + +use sha2::{Digest, Sha256}; +use stellar_xdr::{ + Limits, ScSpecEntry, ScSpecTypeDef, ScSpecTypeUdtv2, ScSpecUdtUnionCaseV0, WriteXdr, +}; + +/// Calls `f` on every `ScSpecTypeUdtv2` reachable from `t`, recursing through +/// the parameterized type-defs that can contain nested references. +fn for_each_ref_ty(t: &mut ScSpecTypeDef, f: &mut impl FnMut(&mut ScSpecTypeUdtv2)) { + match t { + ScSpecTypeDef::UdtV2(u) => f(u), + ScSpecTypeDef::Option(o) => for_each_ref_ty(&mut o.value_type, f), + ScSpecTypeDef::Result(r) => { + for_each_ref_ty(&mut r.ok_type, f); + for_each_ref_ty(&mut r.error_type, f); + } + ScSpecTypeDef::Vec(v) => for_each_ref_ty(&mut v.element_type, f), + ScSpecTypeDef::Map(m) => { + for_each_ref_ty(&mut m.key_type, f); + for_each_ref_ty(&mut m.value_type, f); + } + ScSpecTypeDef::Tuple(tu) => { + for vt in tu.value_types.iter_mut() { + for_each_ref_ty(vt, f); + } + } + _ => {} + } +} + +/// Calls `f` on every `ScSpecTypeUdtv2` reference contained in `entry`. +fn for_each_ref(entry: &mut ScSpecEntry, mut f: impl FnMut(&mut ScSpecTypeUdtv2)) { + match entry { + ScSpecEntry::FunctionV0(fun) => { + for i in fun.inputs.iter_mut() { + for_each_ref_ty(&mut i.type_, &mut f); + } + for o in fun.outputs.iter_mut() { + for_each_ref_ty(o, &mut f); + } + } + ScSpecEntry::UdtStructV0(s) => { + for field in s.fields.iter_mut() { + for_each_ref_ty(&mut field.type_, &mut f); + } + } + ScSpecEntry::UdtUnionV0(u) => { + for case in u.cases.iter_mut() { + if let ScSpecUdtUnionCaseV0::TupleV0(t) = case { + for ty in t.type_.iter_mut() { + for_each_ref_ty(ty, &mut f); + } + } + } + } + ScSpecEntry::EventV0(e) => { + for p in e.params.iter_mut() { + for_each_ref_ty(&mut p.type_, &mut f); + } + } + ScSpecEntry::UdtEnumV0(_) | ScSpecEntry::UdtErrorEnumV0(_) => {} + } +} + +/// The XDR of `entry` in canonical form: every `ScSpecTypeUdtv2` id zeroed. +pub fn canonical_xdr(entry: &ScSpecEntry) -> Vec { + let mut e = entry.clone(); + for_each_ref(&mut e, |u| u.id = [0u8; 8]); + e.to_xdr(Limits::none()).unwrap() +} + +/// The identity of the type `entry` defines: the truncated 8-byte SHA256 of its +/// canonical (all-ids-zeroed) XDR. This is the value carried by every +/// `ScSpecTypeUdtv2` that references this type. +pub fn canonical_id(entry: &ScSpecEntry) -> [u8; 8] { + Sha256::digest(canonical_xdr(entry))[..8] + .try_into() + .unwrap() +} + +#[cfg(test)] +mod test { + use super::canonical_id; + use stellar_xdr::{ + ScSpecEntry, ScSpecTypeDef, ScSpecTypeUdtv2, ScSpecUdtStructFieldV0, ScSpecUdtStructV0, + }; + + fn struct_a(ref_id: [u8; 8]) -> ScSpecEntry { + ScSpecEntry::UdtStructV0(ScSpecUdtStructV0 { + doc: "".try_into().unwrap(), + lib: "".try_into().unwrap(), + name: "A".try_into().unwrap(), + fields: vec![ScSpecUdtStructFieldV0 { + doc: "".try_into().unwrap(), + name: "b".try_into().unwrap(), + type_: ScSpecTypeDef::UdtV2(ScSpecTypeUdtv2 { id: ref_id }), + }] + .try_into() + .unwrap(), + }) + } + + #[test] + fn id_independent_of_ref_ids() { + assert_eq!( + canonical_id(&struct_a([9u8; 8])), + canonical_id(&struct_a([0u8; 8])) + ); + } +} diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_approve.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_approve.1.json index 4ca421376..9a414e1a8 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_approve.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_approve.1.json @@ -336,7 +336,7 @@ "event": { "ext": "v0", "contract_id": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_burn.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_burn.1.json index 7e613b33d..7595171d3 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_burn.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_burn.1.json @@ -363,7 +363,7 @@ "event": { "ext": "v0", "contract_id": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_clawback.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_clawback.1.json index ff446268a..65b289761 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_clawback.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_clawback.1.json @@ -363,7 +363,7 @@ "event": { "ext": "v0", "contract_id": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_amount_only.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_amount_only.1.json index 384bbaf9c..d29fe9d9b 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_amount_only.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_amount_only.1.json @@ -321,7 +321,7 @@ "event": { "ext": "v0", "contract_id": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_id.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_id.1.json index 92171837b..244294574 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_id.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_mint_with_id.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_mint_without_id.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_mint_without_id.1.json index b668ab17f..95e483fe2 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_mint_without_id.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_mint_without_id.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_amount_only.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_amount_only.1.json index b73b31d10..97120c1ff 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_amount_only.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_amount_only.1.json @@ -418,7 +418,7 @@ "event": { "ext": "v0", "contract_id": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_id.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_id.1.json index ef0cf1510..3fc087e13 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_id.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_with_id.1.json @@ -388,7 +388,7 @@ "event": { "ext": "v0", "contract_id": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_without_id.1.json b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_without_id.1.json index 2dc14287c..313beaf2c 100644 --- a/soroban-token-sdk/test_snapshots/tests/events/test_transfer_without_id.1.json +++ b/soroban-token-sdk/test_snapshots/tests/events/test_transfer_without_id.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/stellar-asset-spec/test_snapshots/tests/events/test_set_admin.1.json b/stellar-asset-spec/test_snapshots/tests/events/test_set_admin.1.json index 3d967a90c..a638e4327 100644 --- a/stellar-asset-spec/test_snapshots/tests/events/test_set_admin.1.json +++ b/stellar-asset-spec/test_snapshots/tests/events/test_set_admin.1.json @@ -266,7 +266,7 @@ "event": { "ext": "v0", "contract_id": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/stellar-asset-spec/test_snapshots/tests/events/test_set_authorized.1.json b/stellar-asset-spec/test_snapshots/tests/events/test_set_authorized.1.json index f1053ccae..4c2c99937 100644 --- a/stellar-asset-spec/test_snapshots/tests/events/test_set_authorized.1.json +++ b/stellar-asset-spec/test_snapshots/tests/events/test_set_authorized.1.json @@ -321,7 +321,7 @@ "event": { "ext": "v0", "contract_id": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests-expanded/test_account_tests.rs b/tests-expanded/test_account_tests.rs index ee0e8cce0..5eb8fa44d 100644 --- a/tests-expanded/test_account_tests.rs +++ b/tests-expanded/test_account_tests.rs @@ -71,6 +71,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -359,9 +387,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"auth_contexts"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_account_wasm32v1-none.rs b/tests-expanded/test_account_wasm32v1-none.rs index c30367bc2..6a5f137fe 100644 --- a/tests-expanded/test_account_wasm32v1-none.rs +++ b/tests-expanded/test_account_wasm32v1-none.rs @@ -72,6 +72,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -254,9 +282,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"auth_contexts"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_add_u64_tests.rs b/tests-expanded/test_add_u64_tests.rs index e914f9fef..d083046dd 100644 --- a/tests-expanded/test_add_u64_tests.rs +++ b/tests-expanded/test_add_u64_tests.rs @@ -176,6 +176,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -325,6 +353,34 @@ impl MyError { MyError::__SPEC_XDR_REF.const_to_xdr() } } +impl MyError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyError { #[doc(hidden)] #[inline(always)] @@ -547,9 +603,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U64, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_add_u64_wasm32v1-none.rs b/tests-expanded/test_add_u64_wasm32v1-none.rs index 732111d02..4a117cbc4 100644 --- a/tests-expanded/test_add_u64_wasm32v1-none.rs +++ b/tests-expanded/test_add_u64_wasm32v1-none.rs @@ -65,6 +65,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -220,6 +248,34 @@ impl MyError { MyError::__SPEC_XDR_REF.const_to_xdr() } } +impl MyError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyError { #[doc(hidden)] #[inline(always)] @@ -450,9 +506,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U64, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_associated_types_contracttrait_tests.rs b/tests-expanded/test_associated_types_contracttrait_tests.rs index 306663ea3..2eb91dba0 100644 --- a/tests-expanded/test_associated_types_contracttrait_tests.rs +++ b/tests-expanded/test_associated_types_contracttrait_tests.rs @@ -821,7 +821,7 @@ mod test { mod test_with_wasm { use soroban_sdk::{Env, String}; mod contract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00\xdf\x15\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x11\x03`\x02~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~\x02\x07\x01\x01b\x01i\x00\x00\x03\x04\x03\x01\x02\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x8f\x80\xc0\x00\x0b\x7f\x00A\x90\x80\xc0\x00\x0b\x078\x06\x06memory\x02\x00\x04exec\x00\x01\x05exec2\x00\x03\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n>\x03\x10\x00A\x80\x80\xc0\x80\x00A\x07\x10\x82\x80\x80\x80\x00\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x80\x80\x80\x80\x00\x0b\x10\x00A\x87\x80\xc0\x80\x00A\x08\x10\x82\x80\x80\x80\x00\x0b\x0b\x18\x01\x00A\x80\x80\xc0\x00\x0b\x0fdefaultdefault2\x00\xff\x13\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04exec\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05exec2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn exec(env: soroban_sdk::Env) -> soroban_sdk::String; fn exec2(env: soroban_sdk::Env) -> soroban_sdk::String; @@ -1239,6 +1239,48 @@ mod test_with_wasm { ContractContext::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"contract"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fn_name"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractContext { #[doc(hidden)] #[inline(always)] @@ -1785,9 +1827,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"context"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1796,11 +1838,9 @@ mod test_with_wasm { name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"InvokerContractAuthEntry", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1813,6 +1853,47 @@ mod test_with_wasm { SubContractInvocation::__SPEC_XDR_REF.const_to_xdr() } } + impl SubContractInvocation { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"SubContractInvocation"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"context"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for SubContractInvocation { #[doc(hidden)] #[inline(always)] @@ -2297,11 +2378,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2320,6 +2399,44 @@ mod test_with_wasm { CreateContractHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFnContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractHostFnContext { #[doc(hidden)] #[inline(always)] @@ -2847,11 +2964,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2871,6 +2986,57 @@ mod test_with_wasm { CreateContractWithConstructorHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractWithConstructorHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithConstructorHostFnContext", + ), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"constructor_args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractWithConstructorHostFnContext { #[doc(hidden)] #[inline(always)] @@ -3502,7 +3668,58 @@ mod test_with_wasm { pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_REF.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Context"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { + Context::__SPEC_XDR_REF.const_to_xdr() + } + } + impl Context { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -3514,12 +3731,8 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3531,12 +3744,8 @@ mod test_with_wasm { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3548,12 +3757,8 @@ mod test_with_wasm { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3561,8 +3766,16 @@ mod test_with_wasm { ]), }, ); - pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { - Context::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Context::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Context::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for Context { @@ -4258,6 +4471,40 @@ mod test_with_wasm { ContractExecutable::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractExecutable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractExecutable { #[doc(hidden)] #[inline(always)] @@ -4799,7 +5046,59 @@ mod test_with_wasm { InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] + { + InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + } + } + impl InvokerContractAuthEntry { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -4811,12 +5110,8 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"SubContractInvocation", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4828,12 +5123,8 @@ mod test_with_wasm { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4845,12 +5136,8 @@ mod test_with_wasm { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4858,9 +5145,16 @@ mod test_with_wasm { ]), }, ); - pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] - { - InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for InvokerContractAuthEntry { @@ -5630,6 +5924,52 @@ mod test_with_wasm { Executable::__SPEC_XDR_REF.const_to_xdr() } } + impl Executable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StellarAsset"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Account"), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Executable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Executable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Executable { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_attributes_tests.rs b/tests-expanded/test_attributes_tests.rs index 446b683d3..80dc25fcb 100644 --- a/tests-expanded/test_attributes_tests.rs +++ b/tests-expanded/test_attributes_tests.rs @@ -67,6 +67,32 @@ impl AttributeType { AttributeType::__SPEC_XDR_REF.const_to_xdr() } } +impl AttributeType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"AttributeType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"value"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; AttributeType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + AttributeType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for AttributeType { #[doc(hidden)] #[inline(always)] @@ -1009,9 +1035,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"value"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"AttributeType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -2353,7 +2379,7 @@ mod test { } } }; - let wasm = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x04~~~~\x01~`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~\x02\x1f\x05\x01m\x01a\x00\x00\x01b\x01j\x00\x01\x01v\x01g\x00\x01\x01m\x019\x00\x02\x01x\x011\x00\x01\x03\x07\x06\x03\x03\x01\x04\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xc0\x80\xc0\x00\x0b\x07\x88\x01\n\x06memory\x02\x00\x06always\x00\x05\x0ccfg_included\x00\x06\x07publish\x00\x07\rtrait_default\x00\x08\x19trait_default_stacked_cfg\x00\t\x0etrait_override\x00\n\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xdd\x03\x06\x85\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80\x10\x10\x80\x80\x80\x80\x00\x1a \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80p\x83\x0b\x1a\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0b \x00B\x84\x80\x80\x80p\x83\x0b\x9c\x02\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00 \x01B\xff\x01\x83B\x04R\r\x00A\x00!\x03A\x00-\x00\x8e\x80\xc0\x80\x00\x1aA\xac\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80\xf0\x01\x10\x81\x80\x80\x80\x00!\x04 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x02 \x047\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\xadB \x86B\x04\x84\"\x00B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00!\x04 \x02 \x01B\x84\x80\x80\x80p\x837\x03\x10 \x04A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x00B\x84\x80\x80\x80\x10\x10\x83\x80\x80\x80\x00\x10\x84\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b\x08\x00B\x84\x80\x80\x80 \x0b\t\x00B\x84\x80\x80\x80\xd0\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b\x0bD\x01\x00A\x80\x80\xc0\x00\x0b;SpEcV1i\t\xb7\x06*\x88\xd7\xf8SpEcV1\xbfO\xc3P\xd4\x14\xb5Vvalue\x00\x00\x00\x1c\x00\x10\x00\x05\x00\x00\x00attribute_event\x00\x93\x19\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06always\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\rAttributeType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07publish\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rAttributeType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ccfg_included\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rtrait_default\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eAttributeEvent\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0fattribute_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0etrait_override\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19trait_default_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + let wasm = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x04~~~~\x01~`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~\x02\x1f\x05\x01m\x01a\x00\x00\x01b\x01j\x00\x01\x01v\x01g\x00\x01\x01m\x019\x00\x02\x01x\x011\x00\x01\x03\x07\x06\x03\x03\x01\x04\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xbb\x80\xc0\x00\x0b\x7f\x00A\xc0\x80\xc0\x00\x0b\x07\x88\x01\n\x06memory\x02\x00\x06always\x00\x05\x0ccfg_included\x00\x06\x07publish\x00\x07\rtrait_default\x00\x08\x19trait_default_stacked_cfg\x00\t\x0etrait_override\x00\n\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xdd\x03\x06\x85\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80\x10\x10\x80\x80\x80\x80\x00\x1a \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80p\x83\x0b\x1a\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0b \x00B\x84\x80\x80\x80p\x83\x0b\x9c\x02\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00 \x01B\xff\x01\x83B\x04R\r\x00A\x00!\x03A\x00-\x00\x8e\x80\xc0\x80\x00\x1aA\xac\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80\xf0\x01\x10\x81\x80\x80\x80\x00!\x04 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x02 \x047\x03\x00\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\xadB \x86B\x04\x84\"\x00B\x84\x80\x80\x80 \x10\x82\x80\x80\x80\x00!\x04 \x02 \x01B\x84\x80\x80\x80p\x837\x03\x10 \x04A\xa4\x80\xc0\x80\x00\xadB \x86B\x04\x84 \x00B\x84\x80\x80\x80\x10\x10\x83\x80\x80\x80\x00\x10\x84\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b\x08\x00B\x84\x80\x80\x80 \x0b\t\x00B\x84\x80\x80\x80\xd0\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b\x0bD\x01\x00A\x80\x80\xc0\x00\x0b;SpEcV1i\t\xb7\x06*\x88\xd7\xf8SpEcV1\xbfO\xc3P\xd4\x14\xb5Vvalue\x00\x00\x00\x1c\x00\x10\x00\x05\x00\x00\x00attribute_event\x00\xa7\x17\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06always\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x07\xd1i\t\xb7\x06*\x88\xd7\xf8\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07publish\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rAttributeType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ccfg_included\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rtrait_default\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eAttributeEvent\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0fattribute_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x05topic\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05value\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0etrait_override\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19trait_default_stacked_cfg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; let fn_names: HashSet = soroban_spec::read::from_wasm(wasm) .unwrap() .iter() diff --git a/tests-expanded/test_attributes_wasm32v1-none.rs b/tests-expanded/test_attributes_wasm32v1-none.rs index 6894a1dc3..72f68091e 100644 --- a/tests-expanded/test_attributes_wasm32v1-none.rs +++ b/tests-expanded/test_attributes_wasm32v1-none.rs @@ -68,6 +68,32 @@ impl AttributeType { AttributeType::__SPEC_XDR_REF.const_to_xdr() } } +impl AttributeType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"AttributeType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"value"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; AttributeType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + AttributeType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for AttributeType { #[doc(hidden)] #[inline(always)] @@ -422,9 +448,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"value"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"AttributeType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_auth_tests.rs b/tests-expanded/test_auth_tests.rs index 2bfbff520..c244121df 100644 --- a/tests-expanded/test_auth_tests.rs +++ b/tests-expanded/test_auth_tests.rs @@ -1185,6 +1185,34 @@ mod test_a { Error::__SPEC_XDR_REF.const_to_xdr() } } + impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Decline"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -2774,6 +2802,34 @@ mod test_b { Error::__SPEC_XDR_REF.const_to_xdr() } } + impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Decline"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_bls_tests.rs b/tests-expanded/test_bls_tests.rs index beee28544..e8acc1e0f 100644 --- a/tests-expanded/test_bls_tests.rs +++ b/tests-expanded/test_bls_tests.rs @@ -64,6 +64,60 @@ impl DummyProof { DummyProof::__SPEC_XDR_REF.const_to_xdr() } } +impl DummyProof { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"DummyProof"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fp"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 48u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fp2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 96u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fr"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U256, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 96u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 192u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; DummyProof::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + DummyProof::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for DummyProof { #[doc(hidden)] #[inline(always)] @@ -874,9 +928,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"proof"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"DummyProof"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_bls_wasm32v1-none.rs b/tests-expanded/test_bls_wasm32v1-none.rs index 7e4d4dd3b..8fc1828a0 100644 --- a/tests-expanded/test_bls_wasm32v1-none.rs +++ b/tests-expanded/test_bls_wasm32v1-none.rs @@ -65,6 +65,60 @@ impl DummyProof { DummyProof::__SPEC_XDR_REF.const_to_xdr() } } +impl DummyProof { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"DummyProof"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fp"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 48u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fp2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 96u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fr"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U256, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 96u32 }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 192u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; DummyProof::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + DummyProof::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for DummyProof { #[doc(hidden)] #[inline(always)] @@ -305,9 +359,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"proof"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"DummyProof"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_bn254_tests.rs b/tests-expanded/test_bn254_tests.rs index 258afa983..1a558e4a1 100644 --- a/tests-expanded/test_bn254_tests.rs +++ b/tests-expanded/test_bn254_tests.rs @@ -50,6 +50,49 @@ impl MockProof { MockProof::__SPEC_XDR_REF.const_to_xdr() } } +impl MockProof { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MockProof"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 64u32 }, + ), + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 128u32 }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MockProof::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MockProof::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MockProof { #[doc(hidden)] #[inline(always)] @@ -601,9 +644,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"proof"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MockProof"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_bn254_wasm32v1-none.rs b/tests-expanded/test_bn254_wasm32v1-none.rs index d62b9631d..7d0ea5b9a 100644 --- a/tests-expanded/test_bn254_wasm32v1-none.rs +++ b/tests-expanded/test_bn254_wasm32v1-none.rs @@ -51,6 +51,49 @@ impl MockProof { MockProof::__SPEC_XDR_REF.const_to_xdr() } } +impl MockProof { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MockProof"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 64u32 }, + ), + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"g2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 128u32 }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MockProof::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MockProof::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MockProof { #[doc(hidden)] #[inline(always)] @@ -177,9 +220,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"proof"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MockProof"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_constructor_tests.rs b/tests-expanded/test_constructor_tests.rs index d7db0c90c..74e28421d 100644 --- a/tests-expanded/test_constructor_tests.rs +++ b/tests-expanded/test_constructor_tests.rs @@ -183,6 +183,54 @@ impl DataKey { DataKey::__SPEC_XDR_REF.const_to_xdr() } } +impl DataKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"DataKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Persistent"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Temp"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Instance"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; DataKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + DataKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for DataKey { #[doc(hidden)] #[inline(always)] @@ -800,9 +848,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"key"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"DataKey"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_constructor_wasm32v1-none.rs b/tests-expanded/test_constructor_wasm32v1-none.rs index ab9915e6f..d93ebf8c4 100644 --- a/tests-expanded/test_constructor_wasm32v1-none.rs +++ b/tests-expanded/test_constructor_wasm32v1-none.rs @@ -72,6 +72,54 @@ impl DataKey { DataKey::__SPEC_XDR_REF.const_to_xdr() } } +impl DataKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"DataKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Persistent"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Temp"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Instance"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; DataKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + DataKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for DataKey { #[doc(hidden)] #[inline(always)] @@ -257,9 +305,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"key"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"DataKey"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_contracttrait_impl_full_tests.rs b/tests-expanded/test_contracttrait_impl_full_tests.rs index 417ad7ce2..376c61395 100644 --- a/tests-expanded/test_contracttrait_impl_full_tests.rs +++ b/tests-expanded/test_contracttrait_impl_full_tests.rs @@ -1777,15 +1777,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1815,15 +1815,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1854,15 +1854,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs b/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs index 7d19f4a45..b6793091d 100644 --- a/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs @@ -1286,15 +1286,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1325,15 +1325,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1365,15 +1365,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_partial_tests.rs b/tests-expanded/test_contracttrait_impl_partial_tests.rs index 02edd7cdc..6af6bb956 100644 --- a/tests-expanded/test_contracttrait_impl_partial_tests.rs +++ b/tests-expanded/test_contracttrait_impl_partial_tests.rs @@ -256,15 +256,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -2138,15 +2138,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -2177,15 +2177,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs b/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs index 9a91e530c..7de2651f1 100644 --- a/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs @@ -148,15 +148,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1462,15 +1462,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1502,15 +1502,15 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_path_global_tests.rs b/tests-expanded/test_contracttrait_path_global_tests.rs index 3ba3b9ed2..13fc5e3bc 100644 --- a/tests-expanded/test_contracttrait_path_global_tests.rs +++ b/tests-expanded/test_contracttrait_path_global_tests.rs @@ -1827,15 +1827,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1866,15 +1866,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1905,15 +1905,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs b/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs index dff13447d..5bfb1940c 100644 --- a/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs @@ -1326,15 +1326,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1366,15 +1366,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1406,15 +1406,15 @@ impl ContractGlobalPath { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_contracttrait_trait_tests.rs b/tests-expanded/test_contracttrait_trait_tests.rs index fa442be6f..5777156f1 100644 --- a/tests-expanded/test_contracttrait_trait_tests.rs +++ b/tests-expanded/test_contracttrait_trait_tests.rs @@ -74,6 +74,37 @@ impl MyStruct { MyStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl MyStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyStruct { #[doc(hidden)] #[inline(always)] @@ -511,6 +542,37 @@ impl MyEnumUnit { MyEnumUnit::__SPEC_XDR_REF.const_to_xdr() } } +impl MyEnumUnit { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyEnumUnit::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyEnumUnit::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyEnumUnit { #[doc(hidden)] #[inline(always)] @@ -875,9 +937,9 @@ impl MyEnumVariants { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"VarB"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -888,9 +950,9 @@ impl MyEnumVariants { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"VarC"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -902,6 +964,55 @@ impl MyEnumVariants { MyEnumVariants::__SPEC_XDR_REF.const_to_xdr() } } +impl MyEnumVariants { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarA"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarB"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarC"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyEnumVariants::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyEnumVariants::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyEnumVariants { #[doc(hidden)] #[inline(always)] @@ -3817,15 +3928,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -3846,15 +3957,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -3875,15 +3986,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -5759,16 +5870,16 @@ mod test { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, ]), outputs: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt(soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }), ]), }); @@ -5800,16 +5911,16 @@ mod test { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, ]), outputs: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt(soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }), ]), }); @@ -5841,16 +5952,16 @@ mod test { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, ]), outputs: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt(soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }), ]), }); diff --git a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs index b92fa3ae2..da159d7c5 100644 --- a/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs +++ b/tests-expanded/test_contracttrait_trait_wasm32v1-none.rs @@ -75,6 +75,37 @@ impl MyStruct { MyStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl MyStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyStruct { #[doc(hidden)] #[inline(always)] @@ -207,6 +238,37 @@ impl MyEnumUnit { MyEnumUnit::__SPEC_XDR_REF.const_to_xdr() } } +impl MyEnumUnit { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyEnumUnit::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyEnumUnit::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyEnumUnit { #[doc(hidden)] #[inline(always)] @@ -342,9 +404,9 @@ impl MyEnumVariants { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"VarB"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -355,9 +417,9 @@ impl MyEnumVariants { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"VarC"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -369,6 +431,55 @@ impl MyEnumVariants { MyEnumVariants::__SPEC_XDR_REF.const_to_xdr() } } +impl MyEnumVariants { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarA"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarB"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"VarC"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyEnumVariants::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyEnumVariants::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for MyEnumVariants { #[doc(hidden)] #[inline(always)] @@ -376,7 +487,7 @@ impl soroban_sdk::SpecShakingMarker for MyEnumVariants { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xceHo\xd4mpUm"; + static MARKER: [u8; 14usize] = *b"SpEcV1S\xe8'\xfbt\xdf\x06\xe4"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1767,15 +1878,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyStruct"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1796,15 +1907,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumUnit"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -1825,15 +1936,15 @@ impl AllTypesSpec { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"v"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"MyEnumVariants"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_errors_tests.rs b/tests-expanded/test_errors_tests.rs index 2eb236062..4bec7053a 100644 --- a/tests-expanded/test_errors_tests.rs +++ b/tests-expanded/test_errors_tests.rs @@ -196,6 +196,52 @@ impl Flag { Flag::__SPEC_XDR_REF.const_to_xdr() } } +impl Flag { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Flag"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 0u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"C"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"D"), + value: 3u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E"), + value: 4u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Flag::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Flag::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Flag { #[doc(hidden)] #[inline(always)] @@ -558,6 +604,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"AnError"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -729,9 +803,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"flag"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Flag"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_errors_wasm32v1-none.rs b/tests-expanded/test_errors_wasm32v1-none.rs index aa5cd4f71..401604a5e 100644 --- a/tests-expanded/test_errors_wasm32v1-none.rs +++ b/tests-expanded/test_errors_wasm32v1-none.rs @@ -85,6 +85,52 @@ impl Flag { Flag::__SPEC_XDR_REF.const_to_xdr() } } +impl Flag { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Flag"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 0u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"C"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"D"), + value: 3u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E"), + value: 4u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Flag::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Flag::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Flag { #[doc(hidden)] #[inline(always)] @@ -188,6 +234,34 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"AnError"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -355,9 +429,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"flag"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Flag"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), diff --git a/tests-expanded/test_import_contract_tests.rs b/tests-expanded/test_import_contract_tests.rs index b5e6258e1..8f3e50be2 100644 --- a/tests-expanded/test_import_contract_tests.rs +++ b/tests-expanded/test_import_contract_tests.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contracterror, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xdf\x17\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x07MyError\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xfb\x15\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd1\x95\xd0j*\x1d\xfam\xa3\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; fn safe_add(env: soroban_sdk::Env, a: u64, b: u64) -> Result; @@ -513,6 +513,46 @@ mod addcontract { ContractContext::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"contract"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fn_name"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractContext { #[doc(hidden)] #[inline(always)] @@ -1052,9 +1092,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"context"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1063,11 +1103,9 @@ mod addcontract { name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"InvokerContractAuthEntry", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1079,6 +1117,45 @@ mod addcontract { SubContractInvocation::__SPEC_XDR_REF.const_to_xdr() } } + impl SubContractInvocation { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"SubContractInvocation"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"context"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for SubContractInvocation { #[doc(hidden)] #[inline(always)] @@ -1561,9 +1638,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1581,6 +1658,41 @@ mod addcontract { CreateContractHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFnContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractHostFnContext { #[doc(hidden)] #[inline(always)] @@ -2093,9 +2205,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2114,6 +2226,53 @@ mod addcontract { CreateContractWithConstructorHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractWithConstructorHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithConstructorHostFnContext", + ), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"constructor_args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractWithConstructorHostFnContext { #[doc(hidden)] #[inline(always)] @@ -2746,7 +2905,56 @@ mod addcontract { pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_REF.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Context"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { + Context::__SPEC_XDR_REF.const_to_xdr() + } + } + impl Context { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -2757,10 +2965,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -2770,12 +2976,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -2787,20 +2989,24 @@ mod addcontract { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, ), ]), }); - pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { - Context::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Context::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Context::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for Context { @@ -3483,6 +3689,38 @@ mod addcontract { ContractExecutable::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractExecutable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractExecutable { #[doc(hidden)] #[inline(always)] @@ -4023,7 +4261,56 @@ mod addcontract { InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] { + InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + } + } + impl InvokerContractAuthEntry { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -4034,12 +4321,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"SubContractInvocation", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4049,12 +4332,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4066,20 +4345,24 @@ mod addcontract { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, ), ]), }); - pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] { - InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for InvokerContractAuthEntry { @@ -4818,6 +5101,50 @@ mod addcontract { Executable::__SPEC_XDR_REF.const_to_xdr() } } + impl Executable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StellarAsset"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Account"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Executable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Executable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Executable { #[doc(hidden)] #[inline(always)] @@ -5367,6 +5694,34 @@ mod addcontract { Error::__SPEC_XDR_REF.const_to_xdr() } } + impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -5546,6 +5901,34 @@ mod addcontract { MyError::__SPEC_XDR_REF.const_to_xdr() } } + impl MyError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for MyError { #[doc(hidden)] #[inline(always)] @@ -5709,6 +6092,39 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Abort"), + value: 0u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_import_contract_wasm32v1-none.rs b/tests-expanded/test_import_contract_wasm32v1-none.rs index 8d749f376..d37659475 100644 --- a/tests-expanded/test_import_contract_wasm32v1-none.rs +++ b/tests-expanded/test_import_contract_wasm32v1-none.rs @@ -6,7 +6,7 @@ extern crate core; use core::prelude::rust_2021::*; use soroban_sdk::{contract, contracterror, contractimpl, Address, Env}; mod addcontract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xdf\x17\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd0\x00\x00\x00\x07MyError\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x14\x04`\x01~\x01~`\x02\x7f~\x00`\x02~~\x01~`\x00\x00\x02\r\x02\x01i\x010\x00\x00\x01i\x01_\x00\x00\x03\x08\x07\x01\x01\x02\x03\x02\x02\x03\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\x9c\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07I\x07\x06memory\x02\x00\x03add\x00\x04\x08safe_add\x00\x06\x0csafe_add_two\x00\x07\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xf3\x04\x07]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc0\x00F\r\x00\x02@ \x02A\x06F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x88!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x80\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b;\x00\x02@\x02@ \x01B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x06\x84!\x01\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x8e\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@\x02@\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08\"\x01 \x00|\"\x00 \x01T\r\x01 \x02 \x00\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01G\r\x02\x0b\x00\x0b\x10\x85\x80\x80\x80\x00\x00\x0b \x02)\x03\x08!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\t\x00\x10\x88\x80\x80\x80\x00\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00\x10\x82\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x03 \x02 \x01\x10\x82\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x00 \x02)\x03\x08!\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10!\x01\x02@ \x00 \x03|\"\x03 \x00T\r\x00 \x02 \x03\x10\x83\x80\x80\x80\x00 \x02(\x02\x00A\x01F\r\x01 \x02)\x03\x08!\x01\x0b \x02A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\x03\x00\x00\x0b\x0b%\x01\x00A\x80\x80\xc0\x00\x0b\x1cSpEcV1\xd6\xb8`\x15\xac\x9ei\x1aSpEcV1\x95\xd0j*\x1d\xfam\xa3\x00\xfb\x15\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05Error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07MyError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08Overflow\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08safe_add\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0csafe_add_two\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x06\x00\x00\x07\xd1\x95\xd0j*\x1d\xfam\xa3\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: u64, b: u64) -> u64; fn safe_add(env: soroban_sdk::Env, a: u64, b: u64) -> Result; @@ -296,6 +296,46 @@ mod addcontract { ContractContext::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"contract"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fn_name"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractContext { #[doc(hidden)] #[inline(always)] @@ -461,9 +501,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"context"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -472,11 +512,9 @@ mod addcontract { name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"InvokerContractAuthEntry", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -488,6 +526,45 @@ mod addcontract { SubContractInvocation::__SPEC_XDR_REF.const_to_xdr() } } + impl SubContractInvocation { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"SubContractInvocation"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"context"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for SubContractInvocation { #[doc(hidden)] #[inline(always)] @@ -497,7 +574,7 @@ mod addcontract { InvokerContractAuthEntry, > as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1 \x9d\xc5_\xba\x8fv\x18"; + static MARKER: [u8; 14usize] = *b"SpEcV1`\xb7\xfa\x0c\xf2{\xd8r"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -644,9 +721,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -664,6 +741,41 @@ mod addcontract { CreateContractHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFnContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractHostFnContext { #[doc(hidden)] #[inline(always)] @@ -671,7 +783,7 @@ mod addcontract { ::spec_shaking_marker(); as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xe1\"T\xf0&\x19?P"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x02\xeb\x9a\xa4\xe7\xe8y\x8a"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -851,9 +963,9 @@ mod addcontract { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -872,6 +984,53 @@ mod addcontract { CreateContractWithConstructorHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractWithConstructorHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithConstructorHostFnContext", + ), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"constructor_args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractWithConstructorHostFnContext { #[doc(hidden)] #[inline(always)] @@ -882,7 +1041,7 @@ mod addcontract { ::spec_shaking_marker(); as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xd2;\xff\xe6\x97\xda;\x83"; + static MARKER: [u8; 14usize] = *b"SpEcV1\\\xa6\xc9\x19\xf6\xcb\x06\x92"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1088,7 +1247,56 @@ mod addcontract { pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_REF.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Context"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { + Context::__SPEC_XDR_REF.const_to_xdr() + } + } + impl Context { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -1099,10 +1307,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -1112,12 +1318,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -1129,20 +1331,24 @@ mod addcontract { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, ), ]), }); - pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { - Context::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Context::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Context::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for Context { @@ -1153,7 +1359,7 @@ mod addcontract { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\r\xb6\x0b\xec\x8f\xd04l"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xc94bL\x88\x95\x9b\xe7"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1360,6 +1566,38 @@ mod addcontract { ContractExecutable::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractExecutable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractExecutable { #[doc(hidden)] #[inline(always)] @@ -1582,7 +1820,56 @@ mod addcontract { InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] { + InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + } + } + impl InvokerContractAuthEntry { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -1593,12 +1880,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"SubContractInvocation", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -1608,12 +1891,8 @@ mod addcontract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFn"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -1625,20 +1904,24 @@ mod addcontract { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, ), ]), }); - pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] { - InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for InvokerContractAuthEntry { @@ -1649,7 +1932,7 @@ mod addcontract { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xf0{\xa6\xe9r\xf3\x10\xf6"; + static MARKER: [u8; 14usize] = *b"SpEcV1&\xf1\xdc\xdb\x11^\xbe\xaf"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1886,6 +2169,50 @@ mod addcontract { Executable::__SPEC_XDR_REF.const_to_xdr() } } + impl Executable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StellarAsset"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Account"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Executable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Executable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Executable { #[doc(hidden)] #[inline(always)] @@ -2055,6 +2382,34 @@ mod addcontract { Error::__SPEC_XDR_REF.const_to_xdr() } } + impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] @@ -2240,6 +2595,34 @@ mod addcontract { MyError::__SPEC_XDR_REF.const_to_xdr() } } + impl MyError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"MyError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; MyError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + MyError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for MyError { #[doc(hidden)] #[inline(always)] @@ -2409,6 +2792,39 @@ impl Error { Error::__SPEC_XDR_REF.const_to_xdr() } } +impl Error { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Error"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Abort"), + value: 0u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Overflow"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Error::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Error::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Error { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_spec_import_tests.rs b/tests-expanded/test_spec_import_tests.rs index ec5aeeb6d..929e8e092 100644 --- a/tests-expanded/test_spec_import_tests.rs +++ b/tests-expanded/test_spec_import_tests.rs @@ -79,9 +79,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, }, ]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -121,9 +121,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, }, ]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -149,9 +149,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"fn_enum_a")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -178,9 +178,9 @@ impl Contract { b"fn_enum_int_a", )), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -213,9 +213,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_spec_import_wasm32v1-none.rs b/tests-expanded/test_spec_import_wasm32v1-none.rs index 28975e314..8ad528de8 100644 --- a/tests-expanded/test_spec_import_wasm32v1-none.rs +++ b/tests-expanded/test_spec_import_wasm32v1-none.rs @@ -80,9 +80,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, }, ]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -123,9 +123,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, }, ]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -152,9 +152,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"fn_enum_a")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -182,9 +182,9 @@ impl Contract { b"fn_enum_int_a", )), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -218,9 +218,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_spec_lib_tests.rs b/tests-expanded/test_spec_lib_tests.rs index a9434fe42..4c1a7a859 100644 --- a/tests-expanded/test_spec_lib_tests.rs +++ b/tests-expanded/test_spec_lib_tests.rs @@ -72,6 +72,37 @@ impl StructA { StructA::__SPEC_XDR_REF.const_to_xdr() } } +impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructA { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -499,6 +530,37 @@ impl StructB { StructB::__SPEC_XDR_REF.const_to_xdr() } } +impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructB { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -930,6 +992,41 @@ impl StructC { StructC::__SPEC_XDR_REF.const_to_xdr() } } +impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructC { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1353,6 +1450,37 @@ impl StructTupleA { StructTupleA::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1740,6 +1868,37 @@ impl StructTupleB { StructTupleB::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -2128,6 +2287,37 @@ impl StructTupleC { StructTupleC::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -2534,6 +2724,45 @@ impl EnumA { EnumA::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -3032,6 +3261,52 @@ impl EnumB { EnumB::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -3632,9 +3907,9 @@ impl EnumC { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V2"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -3645,9 +3920,9 @@ impl EnumC { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V3"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -3659,6 +3934,55 @@ impl EnumC { EnumC::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4221,6 +4545,42 @@ impl EnumIntA { EnumIntA::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4583,6 +4943,42 @@ impl EnumIntB { EnumIntB::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4945,6 +5341,42 @@ impl EnumIntC { EnumIntC::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -5309,6 +5741,44 @@ impl ErrorA { ErrorA::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorA { type Error = soroban_sdk::Error; #[inline(always)] @@ -5498,6 +5968,44 @@ impl ErrorB { ErrorB::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorB { type Error = soroban_sdk::Error; #[inline(always)] @@ -5687,6 +6195,44 @@ impl ErrorC { ErrorC::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorC { type Error = soroban_sdk::Error; #[inline(always)] diff --git a/tests-expanded/test_spec_lib_wasm32v1-none.rs b/tests-expanded/test_spec_lib_wasm32v1-none.rs index 5a4aee70d..159687801 100644 --- a/tests-expanded/test_spec_lib_wasm32v1-none.rs +++ b/tests-expanded/test_spec_lib_wasm32v1-none.rs @@ -73,6 +73,37 @@ impl StructA { StructA::__SPEC_XDR_REF.const_to_xdr() } } +impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructA { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -191,6 +222,37 @@ impl StructB { StructB::__SPEC_XDR_REF.const_to_xdr() } } +impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructB { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -313,6 +375,41 @@ impl StructC { StructC::__SPEC_XDR_REF.const_to_xdr() } } +impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructC { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -425,6 +522,37 @@ impl StructTupleA { StructTupleA::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -533,6 +661,37 @@ impl StructTupleB { StructTupleB::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -642,6 +801,37 @@ impl StructTupleC { StructTupleC::__SPEC_XDR_REF.const_to_xdr() } } +impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for StructTupleC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -769,6 +959,45 @@ impl EnumA { EnumA::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -949,6 +1178,52 @@ impl EnumB { EnumB::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1121,9 +1396,9 @@ impl EnumC { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V2"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -1134,9 +1409,9 @@ impl EnumC { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V3"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -1148,6 +1423,55 @@ impl EnumC { EnumC::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1316,6 +1640,42 @@ impl EnumIntA { EnumIntA::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1434,6 +1794,42 @@ impl EnumIntB { EnumIntB::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1552,6 +1948,42 @@ impl EnumIntC { EnumIntC::__SPEC_XDR_REF.const_to_xdr() } } +impl EnumIntC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for EnumIntC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1672,6 +2104,44 @@ impl ErrorA { ErrorA::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorA { type Error = soroban_sdk::Error; #[inline(always)] @@ -1862,6 +2332,44 @@ impl ErrorB { ErrorB::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorB { type Error = soroban_sdk::Error; #[inline(always)] @@ -2052,6 +2560,44 @@ impl ErrorC { ErrorC::__SPEC_XDR_REF.const_to_xdr() } } +impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for ErrorC { type Error = soroban_sdk::Error; #[inline(always)] diff --git a/tests-expanded/test_spec_shaking_v1_tests.rs b/tests-expanded/test_spec_shaking_v1_tests.rs index 1b8f25004..9814e44e0 100644 --- a/tests-expanded/test_spec_shaking_v1_tests.rs +++ b/tests-expanded/test_spec_shaking_v1_tests.rs @@ -203,9 +203,9 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -215,6 +215,39 @@ impl UsedParamStruct { UsedParamStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedParamStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -669,6 +702,45 @@ impl UsedReturnEnum { UsedReturnEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedReturnEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedReturnEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1196,6 +1268,37 @@ impl UsedParamIntEnum { UsedParamIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"X"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Y"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedParamIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1543,6 +1646,39 @@ impl UsedErrorEnum { UsedErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotFound"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Invalid"), + value: 2u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -1707,6 +1843,34 @@ impl UsedPanicErrorEnum { UsedPanicErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedPanicErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedPanicErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Boom"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedPanicErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -1869,6 +2033,34 @@ impl UsedAssertErrorEnum { UsedAssertErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedAssertErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedAssertErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedAssertErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -2036,6 +2228,32 @@ impl UsedNestedInStruct { UsedNestedInStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNestedInStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedNestedInStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2407,6 +2625,32 @@ impl UsedVecElement { UsedVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2788,6 +3032,37 @@ impl UsedMapKey { UsedMapKey::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedMapKey { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -3119,6 +3394,32 @@ impl UsedMapVal { UsedMapVal::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapVal { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"v"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedMapVal { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3489,6 +3790,32 @@ impl UsedOptionElement { UsedOptionElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedOptionElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedOptionElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3858,6 +4185,32 @@ impl UsedResultOk { UsedResultOk::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedResultOk { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedResultOk { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4340,6 +4693,37 @@ impl UsedEventTopicType { UsedEventTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Transfer"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Mint"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4682,9 +5066,9 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -4799,6 +5183,37 @@ impl UsedEventDataType { UsedEventDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"y"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5231,9 +5646,9 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -5325,9 +5740,9 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -5337,6 +5752,34 @@ impl UsedEventTopicOuter { UsedEventTopicOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5718,6 +6161,32 @@ impl UsedEventTopicInner { UsedEventTopicInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -6099,9 +6568,9 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"info"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -6199,9 +6668,9 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -6211,6 +6680,34 @@ impl UsedEventDataOuter { UsedEventDataOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -6590,6 +7087,32 @@ impl UsedEventDataInner { UsedEventDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -6974,9 +7497,9 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -7083,6 +7606,37 @@ impl UsedRefTopicType { UsedRefTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Send"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recv"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -7413,9 +7967,9 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -7425,6 +7979,34 @@ impl UsedRefDataType { UsedRefDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -7797,6 +8379,32 @@ impl UsedRefDataInner { UsedRefDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8173,9 +8781,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -8183,9 +8791,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -8280,6 +8888,32 @@ impl UsedTupleElement { UsedTupleElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedTupleElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8654,6 +9288,32 @@ impl UsedTupleReturnElement { UsedTupleReturnElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleReturnElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedTupleReturnElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -9032,6 +9692,32 @@ impl UsedVecInnerVecElement { UsedVecInnerVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecInnerVecElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -9390,10 +10076,28 @@ impl ::core::cmp::PartialEq for UsedVecInnerElement { self.val == other.val } } -pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_REF - .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); +pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_REF + .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); +impl UsedVecInnerElement { + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + pub const fn spec_xdr() -> [u8; UsedVecInnerElement::__SPEC_XDR_REF.const_xdr_len()] { + UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() + } +} impl UsedVecInnerElement { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -9406,8 +10110,16 @@ impl UsedVecInnerElement { }, ]), }); - pub const fn spec_xdr() -> [u8; UsedVecInnerElement::__SPEC_XDR_REF.const_xdr_len()] { - UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::TryFromVal for UsedVecInnerElement { @@ -9790,9 +10502,9 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9806,11 +10518,9 @@ impl UsedVecElementNested { name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UsedVecInnerVecElement", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9822,6 +10532,50 @@ impl UsedVecElementNested { UsedVecElementNested::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElementNested { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecElementNested { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -10303,6 +11057,32 @@ mod export_false_used { self.val == other.val } } + impl UsedExportFalseStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for UsedExportFalseStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -10657,6 +11437,34 @@ mod export_false_used { true } } + impl UsedExportFalseError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for UsedExportFalseError { type Error = soroban_sdk::Error; #[inline(always)] @@ -10906,6 +11714,32 @@ impl ::core::cmp::PartialEq for UsedNonPubStruct { self.val == other.val } } +impl UsedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -11253,6 +12087,34 @@ impl ::core::cmp::PartialEq for UsedNonPubError { true } } +impl UsedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -11410,9 +12272,9 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"val"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -11422,6 +12284,34 @@ impl UsedRecursiveRoot { UsedRecursiveRoot::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveRoot { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveRoot { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -11812,9 +12702,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -11825,9 +12715,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -11839,6 +12729,49 @@ impl UsedRecursiveNode { UsedRecursiveNode::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveNode { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveNode { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -12363,9 +13296,9 @@ impl UsedRecursiveLeaf { name: soroban_sdk::xdr::StringMRef::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -12377,6 +13310,38 @@ impl UsedRecursiveLeaf { UsedRecursiveLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveLeaf { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -12752,6 +13717,32 @@ impl UsedLeaf { UsedLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedLeaf { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -13063,7 +14054,7 @@ const _: () = { } }; mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\x8f\x0f\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\xeb\x0e\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xa2=N\xc1p\x95\x90\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xe9R\xa7\xe8b\x99\xa2\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1V]\x80\\~\x1a\x08/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -13822,6 +14813,37 @@ mod wasm_imported { } } } + impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructA { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -14248,6 +15270,37 @@ mod wasm_imported { } } } + impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructB { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -14674,6 +15727,41 @@ mod wasm_imported { } } } + impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructC { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -15103,6 +16191,37 @@ mod wasm_imported { } } } + impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -15494,6 +16613,37 @@ mod wasm_imported { } } } + impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -15886,6 +17036,37 @@ mod wasm_imported { } } } + impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -16282,6 +17463,45 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -16793,6 +18013,52 @@ mod wasm_imported { } } } + impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -17420,6 +18686,55 @@ mod wasm_imported { } } } + impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -17975,6 +19290,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -18329,6 +19680,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -18683,6 +20070,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -19037,6 +20460,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorA { type Error = soroban_sdk::Error; #[inline(always)] @@ -19212,6 +20673,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorB { type Error = soroban_sdk::Error; #[inline(always)] @@ -19387,6 +20886,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorC { type Error = soroban_sdk::Error; #[inline(always)] @@ -20055,6 +21592,32 @@ impl UnusedStruct { UnusedStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -20443,6 +22006,42 @@ impl UnusedEnum { UnusedEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -20925,6 +22524,37 @@ impl UnusedIntEnum { UnusedIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -21359,6 +22989,34 @@ impl UnusedPubError { UnusedPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Nope"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UnusedPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -21525,6 +23183,32 @@ impl UnusedNonContractFnParam { UnusedNonContractFnParam::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnParam { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnParam"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnParam { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -21906,6 +23590,32 @@ impl UnusedNonContractFnReturn { UnusedNonContractFnReturn::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnReturn { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnReturn"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnReturn { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -22261,6 +23971,32 @@ impl ::core::cmp::PartialEq for UnusedNonPubStruct { self.x == other.x } } +impl UnusedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -22608,6 +24344,34 @@ impl ::core::cmp::PartialEq for UnusedNonPubError { true } } +impl UnusedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UnusedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -22847,18 +24611,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"ie"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -22887,9 +24651,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"with_return")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -22918,9 +24682,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23045,9 +24809,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23083,9 +24847,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23119,14 +24883,14 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"m"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { - key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23159,9 +24923,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"o"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23193,14 +24957,14 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { - ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23232,9 +24996,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"r"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23269,9 +25033,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"c"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23306,9 +25070,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"i"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23341,9 +25105,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"e"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23510,9 +25274,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23545,9 +25309,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23577,9 +25341,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23613,9 +25377,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23648,9 +25412,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -23688,9 +25452,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -23725,9 +25489,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -23761,9 +25525,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -27689,7 +29453,7 @@ mod test { use soroban_sdk::xdr::ScSpecEntry; use std::collections::HashSet; use std::vec::Vec; - const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~`\x00\x00\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x03*)\x04\x05\x00\x06\x04\x00\x04\x04\x04\x04\x04\x01\x07\x01\x04\x01\x08\t\n\x0b\x04\x01\x0c\x01\x0b\x01\x01\x01\x01\x01\x00\x01\x04\x04\r\x0e\x01\x04\x01\x0f\x0f\x04\x05\x01p\x01\x01\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xda\x83\xc0\x00\x0b\x7f\x00A\x98\x85\xc0\x00\x0b\x7f\x00A\xa0\x85\xc0\x00\x0b\x07\xd8\x04\"\x06memory\x02\x00\x11publish_data_type\x00\x0c\x1apublish_export_false_event\x00\x10\x13publish_nested_data\x00\x12\x14publish_nested_topic\x00\x13\x11publish_ref_event\x00\x14\x0epublish_simple\x00\x15\x12publish_topic_type\x00\x16\x11with_assert_error\x00\x17\x12with_auth_contexts\x00\x19\nwith_error\x00\x1a\x0fwith_executable\x00\x1b\x17with_export_false_error\x00 \x18with_export_false_struct\x00!\x11with_invoker_auth\x00#\x0fwith_lib_struct\x00%\x08with_map\x00&\x0bwith_option\x00\'\x10with_panic_error\x00(\x14with_panic_raw_error\x00)\nwith_param\x00*\x0ewith_recursion\x00+\x0bwith_result\x00,\x0bwith_return\x00-\nwith_tuple\x000\x11with_tuple_return\x001\x12with_wasm_imported\x002\x01_\x03\x01\x08with_vec\x00\x19\x0fwith_vec_nested\x00\x19\x0cwith_non_pub\x00!\x12with_non_pub_error\x00 \n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xb6()\x9a\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\xb4\x82\xc0\x80\x00A\x06\x10\x8d\x80\x80\x80\x00!\x01A\xf0\x82\xc0\x80\x00A\x19\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\x8c\x82\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xae\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xaf\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0by\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xba\x82\xc0\x80\x00A\x02\x10\x8d\x80\x80\x80\x00!\x01A\x90\x80\xc0\x80\x00A\x17\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x01B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\n\x00 \x00B\x08\x86B\x0b\x84\x0b\xa7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xe1\x80\xc0\x80\x00A\x06\x10\x8d\x80\x80\x80\x00!\x01A\xa3\x83\xc0\x80\x00A\x1b\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x00A\xa4\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xa4\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xbe\x83\xc0\x80\x00A\x1c\x10\x8d\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x01A\xa4\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x00\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xdc\x82\xc0\x80\x00A\x14\x10\x8d\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x00A\x80\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bz\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xac\x82\xc0\x80\x00A\x08\x10\x8d\x80\x80\x80\x00!\x01A\xbc\x82\xc0\x80\x00A\x11\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bn\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x89\x83\xc0\x80\x00A\x1a\x10\x8d\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\x10\x10\x98\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\t\x00B\x84\x80\x80\x80\xa0\x05\x0b\xb6\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\x9c\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\xc8\x80\xc0\x80\x00A\x03\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\x9c\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\x9f\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xb4\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x08\x00B\x84\x80\x80\x80\x10\x0b]\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xda\x06\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe4\x81\xc0\x80\x00A\x03\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x84\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xa2\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xf0\x83\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xcc\x84\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xa2\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xa4\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\x9f\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xec\x84\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xa4\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\x9f\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\x9c\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\x8c\x84\xc0\x80\x00A\x01\x10\x9d\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\x9e\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\x9c\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\x9f\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x88\x85\xc0\x80\x00A\x02 \x01A\x02\x10\xa2\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bh\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xfc\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b?\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\x10\x10\x98\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\x98\x80\x80\x80\x00\x00\x0b\xec\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xa2\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xa2\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0b \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\xd7\x03\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\x9c\x81\xc0\x80\x00A\x02\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\x9e\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bF\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x08A\xfc\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\xfc\x81\xc0\x80\x00A\x01\x10\xae\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xaf\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xba\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x18A\xac\x80\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x8f\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xaf\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x88\x85\xc0\x80\x00A\x02 \x01A\x02\x10\xa2\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xb3\x80\x80\x80\x00\x00\x0b\x0b\xa2\x05\x01\x00A\x80\x80\xc0\x00\x0b\x98\x05amount\x00\x00\x00\x00\x10\x00\x06\x00\x00\x00used_export_false_eventval\x00\x00\'\x00\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\x08\x02\x10\x00\x04\x00\x00\x004\x00\x10\x00\x0c\x00\x00\x00@\x00\x10\x00\x07\x00\x00\x00anested\x00`\x00\x10\x00\x01\x00\x00\x00a\x00\x10\x00\x06\x00\x00\x00datax\x00\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\x84\x00\x10\x00\x0c\x00\x00\x00\x90\x00\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xac\x00\x10\x00\x08\x00\x00\x00\xb4\x00\x10\x00\x14\x00\x00\x00\xc8\x00\x10\x00\x1c\x00\x00\x00A\x00\x00\x00a\x00\x10\x00\x06\x00\x00\x00xy\x00\x00\x08\x01\x10\x00\x01\x00\x00\x00\t\x01\x10\x00\x01\x00\x00\x00inner\x00\x00\x00\x1c\x01\x10\x00\x05\x00\x00\x00transfercoordsefused_event_simplepayloadM\x01\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicargscontractfn_name\x00\x00\x00\xda\x01\x10\x00\x04\x00\x00\x00\xde\x01\x10\x00\x08\x00\x00\x00\xe6\x01\x10\x00\x07\x00\x00\x00Wasm\x08\x02\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\x14\x02\x10\x00\x07\x00\x00\x00\x1b\x02\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00<\x02\x10\x00\n\x00\x00\x00F\x02\x10\x00\x04\x00\x00\x00constructor_args\\\x02\x10\x00\x10\x00\x00\x00<\x02\x10\x00\n\x00\x00\x00F\x02\x10\x00\x04\x00\x00\x00f1f2\x84\x02\x10\x00\x02\x00\x00\x00\x86\x02\x10\x00\x02\x00\x00\x00\x00\xfb5\x0econtractspecv0\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\x0cUsedResultOk\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUnusedPubError\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedPanicErrorEnum\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedAssertErrorEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x07Context\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17with_export_false_error\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x14UsedExportFalseError\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18with_export_false_struct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x15UsedExportFalseStruct\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1apublish_export_false_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; + const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~`\x00\x00\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x03*)\x04\x05\x00\x06\x04\x00\x04\x04\x04\x04\x04\x01\x07\x01\x04\x01\x08\t\n\x0b\x04\x01\x0c\x01\x0b\x01\x01\x01\x01\x01\x00\x01\x04\x04\r\x0e\x01\x04\x01\x0f\x0f\x04\x05\x01p\x01\x01\x01\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xda\x83\xc0\x00\x0b\x7f\x00A\x98\x85\xc0\x00\x0b\x7f\x00A\xa0\x85\xc0\x00\x0b\x07\xd8\x04\"\x06memory\x02\x00\x11publish_data_type\x00\x0c\x1apublish_export_false_event\x00\x10\x13publish_nested_data\x00\x12\x14publish_nested_topic\x00\x13\x11publish_ref_event\x00\x14\x0epublish_simple\x00\x15\x12publish_topic_type\x00\x16\x11with_assert_error\x00\x17\x12with_auth_contexts\x00\x19\nwith_error\x00\x1a\x0fwith_executable\x00\x1b\x17with_export_false_error\x00 \x18with_export_false_struct\x00!\x11with_invoker_auth\x00#\x0fwith_lib_struct\x00%\x08with_map\x00&\x0bwith_option\x00\'\x10with_panic_error\x00(\x14with_panic_raw_error\x00)\nwith_param\x00*\x0ewith_recursion\x00+\x0bwith_result\x00,\x0bwith_return\x00-\nwith_tuple\x000\x11with_tuple_return\x001\x12with_wasm_imported\x002\x01_\x03\x01\x08with_vec\x00\x19\x0fwith_vec_nested\x00\x19\x0cwith_non_pub\x00!\x12with_non_pub_error\x00 \n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xb6()\x9a\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\xb4\x82\xc0\x80\x00A\x06\x10\x8d\x80\x80\x80\x00!\x01A\xf0\x82\xc0\x80\x00A\x19\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\x8c\x82\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xae\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xaf\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0by\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xba\x82\xc0\x80\x00A\x02\x10\x8d\x80\x80\x80\x00!\x01A\x90\x80\xc0\x80\x00A\x17\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x01B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\n\x00 \x00B\x08\x86B\x0b\x84\x0b\xa7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xe1\x80\xc0\x80\x00A\x06\x10\x8d\x80\x80\x80\x00!\x01A\xa3\x83\xc0\x80\x00A\x1b\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x00A\xa4\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xa4\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xbe\x83\xc0\x80\x00A\x1c\x10\x8d\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x01A\xa4\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x00\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x9b\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xdc\x82\xc0\x80\x00A\x14\x10\x8d\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x8e\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xac\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x007\x03\x00 \x00A\x80\x82\xc0\x80\x00A\x01 \x00A\x01\x10\x8f\x80\x80\x80\x007\x03\x08 \x01A\xd4\x82\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bz\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xac\x82\xc0\x80\x00A\x08\x10\x8d\x80\x80\x80\x00!\x01A\xbc\x82\xc0\x80\x00A\x11\x10\x8d\x80\x80\x80\x00 \x01\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bn\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x89\x83\xc0\x80\x00A\x1a\x10\x8d\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x8e\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x91\x80\x80\x80\x007\x03\x08 \x01A\x88\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\x10\x10\x98\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\t\x00B\x84\x80\x80\x80\xa0\x05\x0b\xb6\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\x9c\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\xc8\x80\xc0\x80\x00A\x03\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\x9c\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\x9f\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\x9e\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xb4\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x08\x00B\x84\x80\x80\x80\x10\x0b]\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xda\x06\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe4\x81\xc0\x80\x00A\x03\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x84\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xa2\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xf0\x83\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xcc\x84\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xa2\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xa4\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\x9f\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\x9e\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\x9c\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xec\x84\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xa4\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\x9f\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\x9c\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\x8c\x84\xc0\x80\x00A\x01\x10\x9d\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\x9e\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\x9c\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\x9f\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x88\x85\xc0\x80\x00A\x02 \x01A\x02\x10\xa2\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x14\x00\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bh\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xfc\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b?\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\x10\x10\x98\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\x98\x80\x80\x80\x00\x00\x0b\xec\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xe8\x80\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xa2\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xa2\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0b \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\xd7\x03\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xa2\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\x9c\x81\xc0\x80\x00A\x02\x10\x9d\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\x9e\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\x9e\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\x9c\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bF\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x08A\xfc\x80\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x8f\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\xfc\x81\xc0\x80\x00A\x01\x10\xae\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xaf\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xba\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xac\x80\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xa2\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0be\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00 \x00B\x84\x80\x80\x80\x107\x03\x18A\xac\x80\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x8f\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xaf\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b\x83\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\x88\x85\xc0\x80\x00A\x02 \x01A\x02\x10\xa2\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xb3\x80\x80\x80\x00\x00\x0b\x0b\xa2\x05\x01\x00A\x80\x80\xc0\x00\x0b\x98\x05amount\x00\x00\x00\x00\x10\x00\x06\x00\x00\x00used_export_false_eventval\x00\x00\'\x00\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\x08\x02\x10\x00\x04\x00\x00\x004\x00\x10\x00\x0c\x00\x00\x00@\x00\x10\x00\x07\x00\x00\x00anested\x00`\x00\x10\x00\x01\x00\x00\x00a\x00\x10\x00\x06\x00\x00\x00datax\x00\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\x84\x00\x10\x00\x0c\x00\x00\x00\x90\x00\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xac\x00\x10\x00\x08\x00\x00\x00\xb4\x00\x10\x00\x14\x00\x00\x00\xc8\x00\x10\x00\x1c\x00\x00\x00A\x00\x00\x00a\x00\x10\x00\x06\x00\x00\x00xy\x00\x00\x08\x01\x10\x00\x01\x00\x00\x00\t\x01\x10\x00\x01\x00\x00\x00inner\x00\x00\x00\x1c\x01\x10\x00\x05\x00\x00\x00transfercoordsefused_event_simplepayloadM\x01\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicargscontractfn_name\x00\x00\x00\xda\x01\x10\x00\x04\x00\x00\x00\xde\x01\x10\x00\x08\x00\x00\x00\xe6\x01\x10\x00\x07\x00\x00\x00Wasm\x08\x02\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\x14\x02\x10\x00\x07\x00\x00\x00\x1b\x02\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00<\x02\x10\x00\n\x00\x00\x00F\x02\x10\x00\x04\x00\x00\x00constructor_args\\\x02\x10\x00\x10\x00\x00\x00<\x02\x10\x00\n\x00\x00\x00F\x02\x10\x00\x04\x00\x00\x00f1f2\x84\x02\x10\x00\x02\x00\x00\x00\x86\x02\x10\x00\x02\x00\x00\x00\x00\xef1\x0econtractspecv0\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd1[\xf4R\xdf\xdd\xb4\xb0\xbc\x00\x00\x07\xd1\xaaX8\xde\xef\xbb6%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xe2\x01y\xc9\x9a\xf8\xedt\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1Hh\xdc\xaaa\x8d\xf7\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1m,V\n/\xc9:G\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd1\xc2\xf4N\xbf\xebqvp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd1\xde\x1dMa\x01\xec\xb0A\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd1\xb3/\x97\xd5\x06\xbd3B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd1k\xe4zxB\xd1+\x02\x00\x00\x07\xd1Hh\xdc\xaaa\x8d\xf7\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xe7\xcf\x9b1n\x15\x13\xfe\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1p\x8c\x0fN!\x082\xd8\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUnusedPubError\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd1\x84\x08Y\xae\xa0\xf128\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd1K\xdf\'8m/\xe8\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd1\xa0jX\xab]\x05\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd1L|{\r\xf4\xf2\x1a\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\xa3\x16\n\x8f\xc9\x92\xd2\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\x0f\xb2>?\x95bZp\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xa0jX\xab]\x05\x00\xfe\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd1\xe6Q\xd5T\x13\x8a\xb7l\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xccz\xbc\x93#\xa2\xae\xa7\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd1\xe47\xbfD\x98\xf3@1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd1@\xb9LO\xf9\xd1\xe8\xe2\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\xac\xa5\xff\x1ay\xee\x80\xb5\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd1\x0c\xf0\xf6w\xfd\x1a\x1b\x94\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedPanicErrorEnum\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd1Y\xa66\xb3\xecxE\x13\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedAssertErrorEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd16\x83?\xf0\xcdW\xb1/\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\x01\x10}\xd1\x98L%N\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xa9<\xd8+\xb7\xa7\r\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd1\xb4\xabN]\xe3\xeaA\xd6\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xcf@%X\xde+J@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\xc2 \x1b\xdc\xc8gxZ\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd1\xf5\xd4\x9b\xa3\xccI\x13\xf7\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\x93\x9b\xdb\xd6X\x96\xd8\xf1\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17with_export_false_error\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\r\xd6\r \xfc\xdb\xea\xf3\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd1ccX\x9cB]\xc6J\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18with_export_false_struct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\x7f\xc5\xceo\xc3ST\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1apublish_export_false_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; extern crate test; #[rustc_test_marker = "test::test_spec_shaking_v1"] #[doc(hidden)] diff --git a/tests-expanded/test_spec_shaking_v1_wasm32v1-none.rs b/tests-expanded/test_spec_shaking_v1_wasm32v1-none.rs index 2f5bd9b0b..c4fb05d7b 100644 --- a/tests-expanded/test_spec_shaking_v1_wasm32v1-none.rs +++ b/tests-expanded/test_spec_shaking_v1_wasm32v1-none.rs @@ -92,9 +92,9 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -104,6 +104,39 @@ impl UsedParamStruct { UsedParamStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedParamStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -244,6 +277,45 @@ impl UsedReturnEnum { UsedReturnEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedReturnEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedReturnEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -394,6 +466,37 @@ impl UsedParamIntEnum { UsedParamIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"X"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Y"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedParamIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -505,6 +608,39 @@ impl UsedErrorEnum { UsedErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotFound"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Invalid"), + value: 2u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -670,6 +806,34 @@ impl UsedPanicErrorEnum { UsedPanicErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedPanicErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedPanicErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Boom"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedPanicErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -833,6 +997,34 @@ impl UsedAssertErrorEnum { UsedAssertErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedAssertErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedAssertErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedAssertErrorEnum { type Error = soroban_sdk::Error; #[inline(always)] @@ -1001,6 +1193,32 @@ impl UsedNestedInStruct { UsedNestedInStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNestedInStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedNestedInStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1105,6 +1323,32 @@ impl UsedVecElement { UsedVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1219,6 +1463,37 @@ impl UsedMapKey { UsedMapKey::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedMapKey { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1316,6 +1591,32 @@ impl UsedMapVal { UsedMapVal::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapVal { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"v"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedMapVal { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1423,6 +1724,32 @@ impl UsedOptionElement { UsedOptionElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedOptionElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedOptionElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1525,6 +1852,32 @@ impl UsedResultOk { UsedResultOk::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedResultOk { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedResultOk { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -1743,6 +2096,37 @@ impl UsedEventTopicType { UsedEventTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Transfer"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Mint"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -1849,9 +2233,9 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -1967,6 +2351,37 @@ impl UsedEventDataType { UsedEventDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"y"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2088,9 +2503,9 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -2183,9 +2598,9 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2195,6 +2610,34 @@ impl UsedEventTopicOuter { UsedEventTopicOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2306,6 +2749,32 @@ impl UsedEventTopicInner { UsedEventTopicInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventTopicInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2418,9 +2887,9 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"info"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -2519,9 +2988,9 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2531,6 +3000,34 @@ impl UsedEventDataOuter { UsedEventDataOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataOuter { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2642,6 +3139,32 @@ impl UsedEventDataInner { UsedEventDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedEventDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -2759,9 +3282,9 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -2869,6 +3392,37 @@ impl UsedRefTopicType { UsedRefTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Send"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recv"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefTopicType { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -2963,9 +3517,9 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2975,6 +3529,34 @@ impl UsedRefDataType { UsedRefDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefDataType { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3079,6 +3661,32 @@ impl UsedRefDataInner { UsedRefDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRefDataInner { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3188,9 +3796,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -3198,9 +3806,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -3296,6 +3904,32 @@ impl UsedTupleElement { UsedTupleElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedTupleElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3403,6 +4037,32 @@ impl UsedTupleReturnElement { UsedTupleReturnElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleReturnElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedTupleReturnElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3512,6 +4172,32 @@ impl UsedVecInnerVecElement { UsedVecInnerVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecInnerVecElement { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3600,11 +4286,29 @@ impl ::core::cmp::PartialEq for UsedVecInnerElement { self.val == other.val } } -#[link_section = "contractspecv0"] -pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_REF - .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); +#[link_section = "contractspecv0"] +pub static __SPEC_XDR_TYPE_USEDVECINNERELEMENT: [u8; UsedVecInnerElement::__SPEC_XDR_REF + .const_xdr_len()] = UsedVecInnerElement::spec_xdr(); +impl UsedVecInnerElement { + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + pub const fn spec_xdr() -> [u8; UsedVecInnerElement::__SPEC_XDR_REF.const_xdr_len()] { + UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() + } +} impl UsedVecInnerElement { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -3617,8 +4321,16 @@ impl UsedVecInnerElement { }, ]), }); - pub const fn spec_xdr() -> [u8; UsedVecInnerElement::__SPEC_XDR_REF.const_xdr_len()] { - UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::TryFromVal for UsedVecInnerElement { @@ -3732,9 +4444,9 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3748,11 +4460,9 @@ impl UsedVecElementNested { name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UsedVecInnerVecElement", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3764,6 +4474,50 @@ impl UsedVecElementNested { UsedVecElementNested::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElementNested { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedVecElementNested { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3869,6 +4623,32 @@ mod export_false_used { self.val == other.val } } + impl UsedExportFalseStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for UsedExportFalseStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -3951,6 +4731,34 @@ mod export_false_used { true } } + impl UsedExportFalseError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for UsedExportFalseError { type Error = soroban_sdk::Error; #[inline(always)] @@ -4200,6 +5008,32 @@ impl ::core::cmp::PartialEq for UsedNonPubStruct { self.val == other.val } } +impl UsedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4279,6 +5113,34 @@ impl ::core::cmp::PartialEq for UsedNonPubError { true } } +impl UsedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UsedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -4437,9 +5299,9 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"val"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4449,6 +5311,34 @@ impl UsedRecursiveRoot { UsedRecursiveRoot::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveRoot { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveRoot { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4572,9 +5462,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -4585,9 +5475,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -4599,6 +5489,49 @@ impl UsedRecursiveNode { UsedRecursiveNode::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveNode { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveNode { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -4736,9 +5669,9 @@ impl UsedRecursiveLeaf { name: soroban_sdk::xdr::StringMRef::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4750,6 +5683,38 @@ impl UsedRecursiveLeaf { UsedRecursiveLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedRecursiveLeaf { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4852,6 +5817,32 @@ impl UsedLeaf { UsedLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UsedLeaf { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -4897,7 +5888,7 @@ impl soroban_sdk::TryFromVal for soroban_sdk::Val { } } mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\x8f\x0f\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\xeb\x0e\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xa2=N\xc1p\x95\x90\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xe9R\xa7\xe8b\x99\xa2\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1V]\x80\\~\x1a\x08/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -5250,6 +6241,37 @@ mod wasm_imported { } } } + impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructA { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5364,6 +6386,37 @@ mod wasm_imported { } } } + impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructB { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5478,6 +6531,41 @@ mod wasm_imported { } } } + impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructC { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -5589,6 +6677,37 @@ mod wasm_imported { } } } + impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -5696,6 +6815,37 @@ mod wasm_imported { } } } + impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -5804,6 +6954,37 @@ mod wasm_imported { } } } + impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for StructTupleC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -5916,6 +7097,45 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6104,6 +7324,52 @@ mod wasm_imported { } } } + impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6294,6 +7560,55 @@ mod wasm_imported { } } } + impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6450,6 +7765,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntA { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6555,6 +7906,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntB { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6660,6 +8047,42 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl EnumIntC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::TryFromVal for EnumIntC { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -6765,6 +8188,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorA { type Error = soroban_sdk::Error; #[inline(always)] @@ -6940,6 +8401,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorB { type Error = soroban_sdk::Error; #[inline(always)] @@ -7115,6 +8614,44 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } + impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl TryFrom for ErrorC { type Error = soroban_sdk::Error; #[inline(always)] @@ -7784,6 +9321,32 @@ impl UnusedStruct { UnusedStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -7909,6 +9472,42 @@ impl UnusedEnum { UnusedEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -8053,6 +9652,37 @@ impl UnusedIntEnum { UnusedIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedIntEnum { type Error = soroban_sdk::ConversionError; #[inline(always)] @@ -8252,6 +9882,34 @@ impl UnusedPubError { UnusedPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Nope"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UnusedPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -8419,6 +10077,32 @@ impl UnusedNonContractFnParam { UnusedNonContractFnParam::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnParam { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnParam"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnParam { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8529,6 +10213,32 @@ impl UnusedNonContractFnReturn { UnusedNonContractFnReturn::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnReturn { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnReturn"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonContractFnReturn { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8612,6 +10322,32 @@ impl ::core::cmp::PartialEq for UnusedNonPubStruct { self.x == other.x } } +impl UnusedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::TryFromVal for UnusedNonPubStruct { type Error = soroban_sdk::ConversionError; fn try_from_val( @@ -8693,6 +10429,34 @@ impl ::core::cmp::PartialEq for UnusedNonPubError { true } } +impl UnusedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl TryFrom for UnusedNonPubError { type Error = soroban_sdk::Error; #[inline(always)] @@ -8933,18 +10697,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"ie"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -8974,9 +10738,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"with_return")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -9006,9 +10770,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9137,9 +10901,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9176,9 +10940,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9213,14 +10977,14 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"m"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { - key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9254,9 +11018,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"o"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9289,14 +11053,14 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { - ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9329,9 +11093,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"r"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9367,9 +11131,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"c"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9405,9 +11169,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"i"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9441,9 +11205,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"e"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9616,9 +11380,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9652,9 +11416,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9685,9 +11449,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9722,9 +11486,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -9758,9 +11522,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -9799,9 +11563,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -9837,9 +11601,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -9874,9 +11638,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_spec_shaking_v2_tests.rs b/tests-expanded/test_spec_shaking_v2_tests.rs index 3b7416b9f..92a274c12 100644 --- a/tests-expanded/test_spec_shaking_v2_tests.rs +++ b/tests-expanded/test_spec_shaking_v2_tests.rs @@ -203,9 +203,9 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -215,6 +215,39 @@ impl UsedParamStruct { UsedParamStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedParamStruct { #[doc(hidden)] #[inline(always)] @@ -677,6 +710,45 @@ impl UsedReturnEnum { UsedReturnEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedReturnEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedReturnEnum { #[doc(hidden)] #[inline(always)] @@ -1212,6 +1284,37 @@ impl UsedParamIntEnum { UsedParamIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"X"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Y"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedParamIntEnum { #[doc(hidden)] #[inline(always)] @@ -1564,6 +1667,39 @@ impl UsedErrorEnum { UsedErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotFound"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Invalid"), + value: 2u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedErrorEnum { #[doc(hidden)] #[inline(always)] @@ -1733,6 +1869,34 @@ impl UsedPanicErrorEnum { UsedPanicErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedPanicErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedPanicErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Boom"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedPanicErrorEnum { #[doc(hidden)] #[inline(always)] @@ -1900,6 +2064,34 @@ impl UsedAssertErrorEnum { UsedAssertErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedAssertErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedAssertErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedAssertErrorEnum { #[doc(hidden)] #[inline(always)] @@ -2072,6 +2264,32 @@ impl UsedNestedInStruct { UsedNestedInStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNestedInStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNestedInStruct { #[doc(hidden)] #[inline(always)] @@ -2450,6 +2668,32 @@ impl UsedVecElement { UsedVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecElement { #[doc(hidden)] #[inline(always)] @@ -2838,6 +3082,37 @@ impl UsedMapKey { UsedMapKey::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedMapKey { #[doc(hidden)] #[inline(always)] @@ -3174,6 +3449,32 @@ impl UsedMapVal { UsedMapVal::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapVal { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"v"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedMapVal { #[doc(hidden)] #[inline(always)] @@ -3551,6 +3852,32 @@ impl UsedOptionElement { UsedOptionElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedOptionElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedOptionElement { #[doc(hidden)] #[inline(always)] @@ -3927,6 +4254,32 @@ impl UsedResultOk { UsedResultOk::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedResultOk { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedResultOk { #[doc(hidden)] #[inline(always)] @@ -4425,6 +4778,37 @@ impl UsedEventTopicType { UsedEventTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Transfer"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Mint"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicType { #[doc(hidden)] #[inline(always)] @@ -4772,9 +5156,9 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -4898,10 +5282,41 @@ impl UsedEventDataType { UsedEventDataType::__SPEC_XDR_REF.const_to_xdr() } } -impl soroban_sdk::SpecShakingMarker for UsedEventDataType { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { +impl UsedEventDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"y"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} +impl soroban_sdk::SpecShakingMarker for UsedEventDataType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { ::spec_shaking_marker(); ::spec_shaking_marker(); } @@ -5338,9 +5753,9 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -5441,9 +5856,9 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -5453,6 +5868,34 @@ impl UsedEventTopicOuter { UsedEventTopicOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicOuter { #[doc(hidden)] #[inline(always)] @@ -5841,6 +6284,32 @@ impl UsedEventTopicInner { UsedEventTopicInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicInner { #[doc(hidden)] #[inline(always)] @@ -6229,9 +6698,9 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"info"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -6338,9 +6807,9 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -6350,6 +6819,34 @@ impl UsedEventDataOuter { UsedEventDataOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventDataOuter { #[doc(hidden)] #[inline(always)] @@ -6736,6 +7233,32 @@ impl UsedEventDataInner { UsedEventDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventDataInner { #[doc(hidden)] #[inline(always)] @@ -7127,9 +7650,9 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -7245,6 +7768,37 @@ impl UsedRefTopicType { UsedRefTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Send"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recv"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefTopicType { #[doc(hidden)] #[inline(always)] @@ -7580,9 +8134,9 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -7592,6 +8146,34 @@ impl UsedRefDataType { UsedRefDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefDataType { #[doc(hidden)] #[inline(always)] @@ -7971,6 +8553,32 @@ impl UsedRefDataInner { UsedRefDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefDataInner { #[doc(hidden)] #[inline(always)] @@ -8354,9 +8962,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -8364,9 +8972,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -8470,6 +9078,32 @@ impl UsedTupleElement { UsedTupleElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedTupleElement { #[doc(hidden)] #[inline(always)] @@ -8851,6 +9485,32 @@ impl UsedTupleReturnElement { UsedTupleReturnElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleReturnElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedTupleReturnElement { #[doc(hidden)] #[inline(always)] @@ -9236,6 +9896,32 @@ impl UsedVecInnerVecElement { UsedVecInnerVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecInnerVecElement { #[doc(hidden)] #[inline(always)] @@ -9621,6 +10307,32 @@ impl UsedVecInnerElement { UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecInnerElement { #[doc(hidden)] #[inline(always)] @@ -10008,9 +10720,9 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10024,11 +10736,9 @@ impl UsedVecElementNested { name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UsedVecInnerVecElement", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10040,6 +10750,50 @@ impl UsedVecElementNested { UsedVecElementNested::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElementNested { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecElementNested { #[doc(hidden)] #[inline(always)] @@ -10555,6 +11309,32 @@ mod export_false_used { UsedExportFalseStruct::__SPEC_XDR_REF.const_to_xdr() } } + impl UsedExportFalseStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UsedExportFalseStruct { #[doc(hidden)] #[inline(always)] @@ -10943,9 +11723,37 @@ mod export_false_used { UsedExportFalseError::__SPEC_XDR_REF.const_to_xdr() } } - impl soroban_sdk::SpecShakingMarker for UsedExportFalseError { - #[doc(hidden)] - #[inline(always)] + impl UsedExportFalseError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } + impl soroban_sdk::SpecShakingMarker for UsedExportFalseError { + #[doc(hidden)] + #[inline(always)] fn spec_shaking_marker() {} } impl TryFrom for UsedExportFalseError { @@ -11231,6 +12039,32 @@ impl UsedNonPubStruct { UsedNonPubStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNonPubStruct { #[doc(hidden)] #[inline(always)] @@ -11607,6 +12441,34 @@ impl UsedNonPubError { UsedNonPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNonPubError { #[doc(hidden)] #[inline(always)] @@ -11769,9 +12631,9 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"val"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -11781,6 +12643,34 @@ impl UsedRecursiveRoot { UsedRecursiveRoot::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveRoot { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveRoot { #[doc(hidden)] #[inline(always)] @@ -12178,9 +13068,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -12191,9 +13081,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -12205,6 +13095,49 @@ impl UsedRecursiveNode { UsedRecursiveNode::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveNode { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveNode { #[doc(hidden)] #[inline(always)] @@ -12737,9 +13670,9 @@ impl UsedRecursiveLeaf { name: soroban_sdk::xdr::StringMRef::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -12751,6 +13684,38 @@ impl UsedRecursiveLeaf { UsedRecursiveLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveLeaf { #[doc(hidden)] #[inline(always)] @@ -13133,6 +14098,32 @@ impl UsedLeaf { UsedLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedLeaf { #[doc(hidden)] #[inline(always)] @@ -13451,7 +14442,7 @@ const _: () = { } }; mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\x8f\x0f\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\xeb\x0e\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xa2=N\xc1p\x95\x90\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xe9R\xa7\xe8b\x99\xa2\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1V]\x80\\~\x1a\x08/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -14235,6 +15226,37 @@ mod wasm_imported { StructA::__SPEC_XDR_REF.const_to_xdr() } } + impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructA { #[doc(hidden)] #[inline(always)] @@ -14694,6 +15716,37 @@ mod wasm_imported { StructB::__SPEC_XDR_REF.const_to_xdr() } } + impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructB { #[doc(hidden)] #[inline(always)] @@ -15157,6 +16210,41 @@ mod wasm_imported { StructC::__SPEC_XDR_REF.const_to_xdr() } } + impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructC { #[doc(hidden)] #[inline(always)] @@ -15619,6 +16707,37 @@ mod wasm_imported { StructTupleA::__SPEC_XDR_REF.const_to_xdr() } } + impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructTupleA { #[doc(hidden)] #[inline(always)] @@ -16043,6 +17162,37 @@ mod wasm_imported { StructTupleB::__SPEC_XDR_REF.const_to_xdr() } } + impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructTupleB { #[doc(hidden)] #[inline(always)] @@ -16468,17 +17618,48 @@ mod wasm_imported { StructTupleC::__SPEC_XDR_REF.const_to_xdr() } } - impl soroban_sdk::SpecShakingMarker for StructTupleC { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { - ::spec_shaking_marker(); - ::spec_shaking_marker(); - } - } - impl soroban_sdk::TryFromVal for StructTupleC { - type Error = soroban_sdk::ConversionError; - #[inline(always)] + impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } + impl soroban_sdk::SpecShakingMarker for StructTupleC { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { + ::spec_shaking_marker(); + ::spec_shaking_marker(); + } + } + impl soroban_sdk::TryFromVal for StructTupleC { + type Error = soroban_sdk::ConversionError; + #[inline(always)] fn try_from_val( env: &soroban_sdk::Env, val: &soroban_sdk::Val, @@ -16905,6 +18086,45 @@ mod wasm_imported { EnumA::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumA { #[doc(hidden)] #[inline(always)] @@ -17461,6 +18681,52 @@ mod wasm_imported { EnumB::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumB { #[doc(hidden)] #[inline(always)] @@ -18115,9 +19381,9 @@ mod wasm_imported { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V2"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -18128,9 +19394,9 @@ mod wasm_imported { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V3"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -18142,6 +19408,55 @@ mod wasm_imported { EnumC::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumC { #[doc(hidden)] #[inline(always)] @@ -18735,6 +20050,42 @@ mod wasm_imported { EnumIntA::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumIntA { #[doc(hidden)] #[inline(always)] @@ -19124,6 +20475,42 @@ mod wasm_imported { EnumIntB::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumIntB { #[doc(hidden)] #[inline(always)] @@ -19513,6 +20900,42 @@ mod wasm_imported { EnumIntC::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumIntC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumIntC { #[doc(hidden)] #[inline(always)] @@ -19904,6 +21327,44 @@ mod wasm_imported { ErrorA::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorA { #[doc(hidden)] #[inline(always)] @@ -20116,6 +21577,44 @@ mod wasm_imported { ErrorB::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorB { #[doc(hidden)] #[inline(always)] @@ -20328,6 +21827,44 @@ mod wasm_imported { ErrorC::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorC { #[doc(hidden)] #[inline(always)] @@ -21036,6 +22573,32 @@ impl UnusedStruct { UnusedStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedStruct { #[doc(hidden)] #[inline(always)] @@ -21431,6 +22994,42 @@ impl UnusedEnum { UnusedEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedEnum { #[doc(hidden)] #[inline(always)] @@ -21920,6 +23519,37 @@ impl UnusedIntEnum { UnusedIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedIntEnum { #[doc(hidden)] #[inline(always)] @@ -22368,6 +23998,34 @@ impl UnusedPubError { UnusedPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Nope"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedPubError { #[doc(hidden)] #[inline(always)] @@ -22539,6 +24197,32 @@ impl UnusedNonContractFnParam { UnusedNonContractFnParam::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnParam { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnParam"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnParam { #[doc(hidden)] #[inline(always)] @@ -22927,6 +24611,32 @@ impl UnusedNonContractFnReturn { UnusedNonContractFnReturn::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnReturn { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnReturn"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnReturn { #[doc(hidden)] #[inline(always)] @@ -23309,6 +25019,32 @@ impl UnusedNonPubStruct { UnusedNonPubStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonPubStruct { #[doc(hidden)] #[inline(always)] @@ -23685,6 +25421,34 @@ impl UnusedNonPubError { UnusedNonPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonPubError { #[doc(hidden)] #[inline(always)] @@ -23929,18 +25693,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"ie"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -23969,9 +25733,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"with_return")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -24000,9 +25764,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24127,9 +25891,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24165,9 +25929,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24201,14 +25965,14 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"m"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { - key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24241,9 +26005,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"o"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24275,14 +26039,14 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { - ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24314,9 +26078,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"r"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24351,9 +26115,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"c"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24388,9 +26152,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"i"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24423,9 +26187,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"e"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24592,9 +26356,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24627,9 +26391,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24659,9 +26423,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24695,9 +26459,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -24730,9 +26494,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -24770,9 +26534,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -24807,9 +26571,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -24843,9 +26607,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -28771,7 +30535,7 @@ mod test { use soroban_sdk::xdr::ScSpecEntry; use std::collections::HashSet; use std::vec::Vec; - const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x00`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x0398\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x05\x06\x00\x07\x05\x00\x05\x05\x05\x05\x05\x01\x08\x01\x05\x01\t\n\x0b\x0c\x05\x01\r\x01\x0c\x01\x01\x01\x05\x01\x01\x01\x00\x01\x05\x05\x0e\x0f\x01\x05\x01\x01\x01\x04\x04\x04\x05\x01p\x01\x0c\x0c\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x96\x89\xc0\x00\x0b\x7f\x00A\xe4\x8a\xc0\x00\x0b\x7f\x00A\xf0\x8a\xc0\x00\x0b\x07\xd8\x04\"\x06memory\x02\x00\x11publish_data_type\x00\x17\x1apublish_export_false_event\x00\x1b\x13publish_nested_data\x00\x1d\x14publish_nested_topic\x00\x1e\x11publish_ref_event\x00\x1f\x0epublish_simple\x00 \x12publish_topic_type\x00!\x11with_assert_error\x00\"\x12with_auth_contexts\x00$\nwith_error\x00%\x0fwith_executable\x00&\x17with_export_false_error\x00+\x18with_export_false_struct\x00,\x11with_invoker_auth\x00.\x0fwith_lib_struct\x000\x08with_map\x001\x0cwith_non_pub\x002\x12with_non_pub_error\x003\x0bwith_option\x004\x10with_panic_error\x005\x14with_panic_raw_error\x006\nwith_param\x007\x0ewith_recursion\x008\x0bwith_result\x009\x0bwith_return\x00:\nwith_tuple\x00=\x11with_tuple_return\x00>\x08with_vec\x00?\x0fwith_vec_nested\x00@\x12with_wasm_imported\x00A\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\x11\x01\x00A\x01\x0b\x0b\x0f\x11\x13\x12\x0e\r\x14\x15\x16\x0c\x10\n\xc128\x0c\x00A\x00-\x00\x9c\x80\xc0\x80\x00\x1a\x0b\x16\x00A\x00-\x00\xfe\x80\xc0\x80\x00\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x8c\x81\xc0\x80\x00\x1a\x0bJ\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a\x0b6\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xec\x82\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xfa\x82\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb2\x83\xc0\x80\x00\x1a\x0b\x86\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1a \x00A\x84\x80\x80\x80\x006\x02\x04 \x00(\x02\x04\x1aA\x00-\x00\xb4\x88\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xc2\x88\xc0\x80\x00\x1a\x0b\x02\x00\x0bk\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xec\x88\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xa2\x84\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb0\x84\xc0\x80\x00\x1a\x0b\xae\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x80\x87\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xa8\x81\xc0\x80\x00\x1aA\x00-\x00\x88\x83\xc0\x80\x00\x1aA\xbc\x87\xc0\x80\x00A\x19\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\xd8\x86\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xbb\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xbc\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0b\x83\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x86\x87\xc0\x80\x00A\x02\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xf8\x83\xc0\x80\x00\x1aA\xdc\x84\xc0\x80\x00A\x17\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x01B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\n\x00 \x00B\x08\x86B\x0b\x84\x0b\xc5\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xad\x85\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xfc\x81\xc0\x80\x00\x1aA\x00-\x00\x8a\x82\xc0\x80\x00\x1aA\x00-\x00\xce\x83\xc0\x80\x00\x1aA\xef\x87\xc0\x80\x00A\x1b\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xf0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xc2\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xd0\x82\xc0\x80\x00\x1aA\x00-\x00\xde\x82\xc0\x80\x00\x1aA\x00-\x00\xdc\x83\xc0\x80\x00\x1aA\x8a\x88\xc0\x80\x00A\x1c\x10\x98\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x01A\xf0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x00\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xc7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\x85\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1a \x00A\x86\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xb6\x81\xc0\x80\x00\x1aA\xa8\x87\xc0\x80\x00A\x14\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xcc\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x84\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xf8\x86\xc0\x80\x00A\x08\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x88\x87\xc0\x80\x00A\x11\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x82\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x98\x82\xc0\x80\x00\x1aA\x00-\x00\x96\x83\xc0\x80\x00\x1aA\xd5\x87\xc0\x80\x00A\x1a\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bJ\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xc2\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa3\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x87\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x13\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\xa0\x05\x0b\xc0\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xfa\x88\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\xa7\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\x94\x85\xc0\x80\x00A\x03\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\xa7\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\xaa\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xc3\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x12\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x86\x84\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xd3\x07\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1a \x01A\x84\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xb4\x88\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xc2\x88\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xb0\x86\xc0\x80\x00A\x03\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xe8\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xad\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x89\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\x88\x8a\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xad\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xaf\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\xaa\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x8a\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xaf\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\xaa\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\xa7\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\xc8\x89\xc0\x80\x00A\x01\x10\xa8\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\xa9\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\xa7\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\xaa\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x9e\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x00 \x01(\x02\x00\x1aA\x00!\x02A\x00-\x00\xc0\x8a\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd4\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xad\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bA\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x88\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a \x01A\x89\x80\x80\x80\x006\x02\x08 \x01(\x02\x08\x1a\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xe2\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x12\x00A\x00-\x00\xb8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0br\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xc4\x81\xc0\x80\x00\x1a\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xc8\x85\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bI\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xb4\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa3\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\xa3\x80\x80\x80\x00\x00\x0b\x8a\x02\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03A\x00-\x00\xa6\x82\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xb4\x85\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xad\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xad\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0bA\x00-\x00\xf0\x80\xc0\x80\x00\x1a \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\x90\x04\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1a \x01A\x81\x80\x80\x80\x006\x02 \x01(\x02 \x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe8\x85\xc0\x80\x00A\x02\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa9\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bZ\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xbe\x84\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x08A\xc8\x85\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x00A\xc8\x86\xc0\x80\x00A\x01\x10\xbb\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xbc\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xc4\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\x9a\x81\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xa4\x83\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x18A\xf8\x84\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xbc\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8a\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8b\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xc0\x83\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd4\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xad\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xc2\x80\x80\x80\x00\x00\x0b\x0b\xee\n\x01\x00A\x80\x80\xc0\x00\x0b\xe4\nSpEcV1Hh\xdc\xaaa\x8d\xf7\rSpEcV1\xe7\xcf\x9b1n\x15\x13\xfeSpEcV1\xe2\x01y\xc9\x9a\xf8\xedtSpEcV1v1\x0eP\xa9C\xc7*SpEcV1\xa9<\xd8+\xb7\xa7\r\x17SpEcV1X\x03\xf6t\xc7\xd0\x01\"SpEcV1\'\xbd_A\r\x9a\x89\x02SpEcV1p\x8c\x0fN!\x082\xd8SpEcV1\xc2\xf4N\xbf\xebqvpSpEcV1K\xdf\'8m/\xe8\x1dSpEcV1@\xb9LO\xf9\xd1\xe8\xe2SpEcV1\xde\x1dMa\x01\xec\xb0ASpEcV1\xc2 \x1b\xdc\xc8gxZSpEcV1[Q+\xe9\xde\xd5\xf2>SpEcV1\xb3/\x97\xd5\x06\xbd3BSpEcV1?\xd9\xb3q\xdep>\xf3SpEcV1*\\\x9c\xf4e\xaa\x1e]SpEcV1u2\x0b\x97\xae\xcd\x86\xbfSpEcV1\x0c\xf0\xf6w\xfd\x1a\x1b\x94SpEcV1\'\xf2\xa2\xb9\xd0)\xc0uSpEcV1\xf5\xd4\x9b\xa3\xccI\x13\xf7SpEcV1\x84\x08Y\xae\xa0\xf128SpEcV1\r\xb76\xae\x93D\xef\x1aSpEcV1\x8b\x89\x1f#\xbd\x157\xf4SpEcV16\x83?\xf0\xcdW\xb1/SpEcV1\x94\xc7w/_\xebXcSpEcV1\xb4\xabN]\xe3\xeaA\xd6SpEcV1\x13?J\x12d\xden|SpEcV1q\xa3z;6\xa6R\x01SpEcV1q^\xe2&\x9di\x9d\x0eSpEcV1Y\xa66\xb3\xecxE\x13SpEcV1\xcf@%X\xde+J@SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1 \xfbl\x04B\x82\xc0\xb4SpEcV1\xe3\xf2\x9b5%a\xfb\xd6SpEcV1\r\xd6\r \xfc\xdb\xea\xf3SpEcV1\x9a\x14*\xbc\x82a\x08XSpEcV1\x7f\xc5\xceo\xc3ST\x08SpEcV1\xe6Q\xd5T\x13\x8a\xb7lSpEcV1[\xf4R\xdf\xdd\xb4\xb0\xbcSpEcV1\xaaX8\xde\xef\xbb6%SpEcV1k\xe4zxB\xd1+\x02amount\x00\x00L\x02\x10\x00\x06\x00\x00\x00used_export_false_eventval\x00\x00s\x02\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\xc4\x04\x10\x00\x04\x00\x00\x00\x80\x02\x10\x00\x0c\x00\x00\x00\x8c\x02\x10\x00\x07\x00\x00\x00anested\x00\xac\x02\x10\x00\x01\x00\x00\x00\xad\x02\x10\x00\x06\x00\x00\x00data\xc4\x02\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xd0\x02\x10\x00\x0c\x00\x00\x00\xdc\x02\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xf8\x02\x10\x00\x08\x00\x00\x00\x00\x03\x10\x00\x14\x00\x00\x00\x14\x03\x10\x00\x1c\x00\x00\x00A\x00\x00\x00\xad\x02\x10\x00\x06\x00\x00\x00xy\x00\x00T\x03\x10\x00\x01\x00\x00\x00U\x03\x10\x00\x01\x00\x00\x00inner\x00\x00\x00h\x03\x10\x00\x05\x00\x00\x00transfercoordsefused_event_simplepayload\x99\x03\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicSpEcV1\xb6\xb1Hy\xda\xca\xaf\xccSpEcV1\x9e)H\x8e\xf0\x01{{SpEcV1ULqD\xd3\xfa:\x1fSpEcV1\x15\xe5\x1a,\xc0\xc7\xef\xd4SpEcV1s\x94\x0c\x1926\x1d\x90SpEcV1\xa3J\xcf\xf7D\x93\x0bBSpEcV1L|{\r\xf4\xf2\x1a\xa8SpEcV1\xf1\xf9\x90\x07E*e\xfdargscontractfn_name\x00\x00\x00\x96\x04\x10\x00\x04\x00\x00\x00\x9a\x04\x10\x00\x08\x00\x00\x00\xa2\x04\x10\x00\x07\x00\x00\x00Wasm\xc4\x04\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\xd0\x04\x10\x00\x07\x00\x00\x00\xd7\x04\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00\xf8\x04\x10\x00\n\x00\x00\x00\x02\x05\x10\x00\x04\x00\x00\x00constructor_args\x18\x05\x10\x00\x10\x00\x00\x00\xf8\x04\x10\x00\n\x00\x00\x00\x02\x05\x10\x00\x04\x00\x00\x00SpEcV1\xa3\x16\n\x8f\xc9\x92\xd2\x11f1f2\x00\x00N\x05\x10\x00\x02\x00\x00\x00P\x05\x10\x00\x02\x00\x00\x00\x00\x97Z\x0econtractspecv0\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedExportFalseError\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedExportFalseEvent\x00\x00\x00\x01\x00\x00\x00\x17used_export_false_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedExportFalseStruct\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd0\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd0\x00\x00\x00\x0cUsedResultOk\x00\x00\x07\xd0\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUnusedPubError\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UnusedNonPubError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UnusedNonPubStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedPanicErrorEnum\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd0\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedAssertErrorEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x07Context\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd0\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17with_export_false_error\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x14UsedExportFalseError\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd0\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18with_export_false_struct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x15UsedExportFalseStruct\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1apublish_export_false_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01^\x10`\x02~~\x01~`\x01~\x01~`\x03~~~\x01~`\x04~~~~\x01~`\x00\x00`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x01~\x00`\x02\x7f\x7f\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x02\x7f~\x00`\x05~\x7f\x7f\x7f\x7f\x00`\x03\x7f\x7f\x7f\x00`\x01\x7f\x01~\x02I\x0c\x01x\x011\x00\x00\x01v\x013\x00\x01\x01i\x012\x00\x01\x01v\x01h\x00\x02\x01v\x01g\x00\x00\x01m\x01a\x00\x03\x01b\x01m\x00\x02\x01b\x01j\x00\x00\x01v\x011\x00\x00\x01b\x018\x00\x01\x01x\x015\x00\x01\x01m\x019\x00\x02\x0398\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x05\x06\x00\x07\x05\x00\x05\x05\x05\x05\x05\x01\x08\x01\x05\x01\t\n\x0b\x0c\x05\x01\r\x01\x0c\x01\x01\x01\x05\x01\x01\x01\x00\x01\x05\x05\x0e\x0f\x01\x05\x01\x01\x01\x04\x04\x04\x05\x01p\x01\x0c\x0c\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x96\x89\xc0\x00\x0b\x7f\x00A\xe4\x8a\xc0\x00\x0b\x7f\x00A\xf0\x8a\xc0\x00\x0b\x07\xd8\x04\"\x06memory\x02\x00\x11publish_data_type\x00\x17\x1apublish_export_false_event\x00\x1b\x13publish_nested_data\x00\x1d\x14publish_nested_topic\x00\x1e\x11publish_ref_event\x00\x1f\x0epublish_simple\x00 \x12publish_topic_type\x00!\x11with_assert_error\x00\"\x12with_auth_contexts\x00$\nwith_error\x00%\x0fwith_executable\x00&\x17with_export_false_error\x00+\x18with_export_false_struct\x00,\x11with_invoker_auth\x00.\x0fwith_lib_struct\x000\x08with_map\x001\x0cwith_non_pub\x002\x12with_non_pub_error\x003\x0bwith_option\x004\x10with_panic_error\x005\x14with_panic_raw_error\x006\nwith_param\x007\x0ewith_recursion\x008\x0bwith_result\x009\x0bwith_return\x00:\nwith_tuple\x00=\x11with_tuple_return\x00>\x08with_vec\x00?\x0fwith_vec_nested\x00@\x12with_wasm_imported\x00A\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\x11\x01\x00A\x01\x0b\x0b\x0f\x11\x13\x12\x0e\r\x14\x15\x16\x0c\x10\n\xc128\x0c\x00A\x00-\x00\x9c\x80\xc0\x80\x00\x1a\x0b\x16\x00A\x00-\x00\xfe\x80\xc0\x80\x00\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\x8c\x81\xc0\x80\x00\x1a\x0bJ\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a\x0b6\x01\x01\x7f#\x80\x80\x80\x80\x00!\x00A\x00-\x00\xec\x82\xc0\x80\x00\x1a \x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xfa\x82\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb2\x83\xc0\x80\x00\x1a\x0b\x86\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1a \x00A\x84\x80\x80\x80\x006\x02\x04 \x00(\x02\x04\x1aA\x00-\x00\xb4\x88\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xc2\x88\xc0\x80\x00\x1a\x0b\x02\x00\x0bk\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x83\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xec\x88\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xa2\x84\xc0\x80\x00\x1a\x0b\x0c\x00A\x00-\x00\xb0\x84\xc0\x80\x00\x1a\x0b\xae\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x80\x87\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xa8\x81\xc0\x80\x00\x1aA\x00-\x00\x88\x83\xc0\x80\x00\x1aA\xbc\x87\xc0\x80\x00A\x19\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x18 \x00B\x84\x80\x80\x80\x107\x03\x10 \x00A\xd8\x86\xc0\x80\x00A\x02 \x00A\x10jA\x02\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A j$\x80\x80\x80\x80\x00B\x02\x0bE\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00 \x02 \x00 \x01\x10\xbb\x80\x80\x80\x00\x02@ \x02(\x02\x00A\x01G\r\x00\x00\x0b \x02)\x03\x08!\x03 \x02A\x10j$\x80\x80\x80\x80\x00 \x03\x0b\x92\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00A\x00!\x03\x03~\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10j\x10\xbc\x80\x80\x80\x00!\x01 \x02A j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x0b\x83\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x86\x87\xc0\x80\x00A\x02\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xf8\x83\xc0\x80\x00\x1aA\xdc\x84\xc0\x80\x00A\x17\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x01B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\n\x00 \x00B\x08\x86B\x0b\x84\x0b\xc5\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xad\x85\xc0\x80\x00A\x06\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xfc\x81\xc0\x80\x00\x1aA\x00-\x00\x8a\x82\xc0\x80\x00\x1aA\x00-\x00\xce\x83\xc0\x80\x00\x1aA\xef\x87\xc0\x80\x00A\x1b\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xf0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xc2\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xd0\x82\xc0\x80\x00\x1aA\x00-\x00\xde\x82\xc0\x80\x00\x1aA\x00-\x00\xdc\x83\xc0\x80\x00\x1aA\x8a\x88\xc0\x80\x00A\x1c\x10\x98\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xa0\x057\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x01A\xf0\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x00\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\xc7\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00A\x85\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1a \x00A\x86\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xb6\x81\xc0\x80\x00\x1aA\xa8\x87\xc0\x80\x00A\x14\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80\xb0\x0c7\x03\x08 \x00A\xf8\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x007\x03\x00 \x00A\xcc\x86\xc0\x80\x00A\x01 \x00A\x01\x10\x9a\x80\x80\x80\x007\x03\x08 \x01A\xa0\x87\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x84\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\xf8\x86\xc0\x80\x00A\x08\x10\x98\x80\x80\x80\x00!\x01A\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x88\x87\xc0\x80\x00A\x11\x10\x98\x80\x80\x80\x00 \x01\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x82\x01\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x98\x82\xc0\x80\x00\x1aA\x00-\x00\x96\x83\xc0\x80\x00\x1aA\xd5\x87\xc0\x80\x00A\x1a\x10\x98\x80\x80\x80\x00B\x84\x80\x80\x80\x10\x10\x99\x80\x80\x80\x00!\x01 \x00B\xe4\x00B\x00\x10\x9c\x80\x80\x80\x007\x03\x08 \x01A\xd4\x84\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00\x10\x80\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0bJ\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01qE\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xc2\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa3\x80\x80\x80\x00\x00\x0b\x0b\x00 \x00\x10\x8a\x80\x80\x80\x00\x1a\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x87\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x13\x00A\x00-\x00\x80\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\xa0\x05\x0b\xc0\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xfa\x88\xc0\x80\x00\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x08 \x01 \x007\x03\x00 \x01 \x02B \x88>\x02\x0c \x01A\x10j \x01\x10\xa7\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x00A\x94\x85\xc0\x80\x00A\x03\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x03\x01\x02\x00\x04\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00\r\x03\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A\x10j \x01\x10\xa7\x80\x80\x80\x00 \x01)\x03\x10\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01A\x10j \x01)\x03\x18\x10\xaa\x80\x80\x80\x00 \x01(\x02\x10A\x01G\r\x01\x0c\x02\x0b \x01(\x02\x08 \x01(\x02\x0c\x10\xa9\x80\x80\x80\x00\r\x01\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x86\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\xc3\x80\x80\x80\x00\x00\x0bB\x01\x01~B\x01!\x02\x02@ \x01B\xff\x01\x83B\xc8\x00R\r\x00 \x01\x10\x89\x80\x80\x80\x00B\x80\x80\x80\x80p\x83B\x80\x80\x80\x80\x80\x04R\r\x00 \x00 \x017\x03\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x12\x00A\x00-\x00\xea\x83\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x86\x84\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x85\x80\x80\x80\x00\x1a\x0b\xd3\x07\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\xc0\x00k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\x88\x89\xc0\x80\x00\x1a \x01A\x84\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xb4\x88\xc0\x80\x00\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xd0\x88\xc0\x80\x00\x1a \x01A\x83\x80\x80\x80\x006\x02\x18 \x01(\x02\x18\x1aA\x00-\x00\xa6\x88\xc0\x80\x00\x1aA\x00-\x00\xde\x88\xc0\x80\x00\x1aA\x00-\x00\xc2\x88\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x10 \x01 \x007\x03\x08 \x01 \x02B \x88>\x02\x14 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03 \"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xb0\x86\xc0\x80\x00A\x03\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x03\x00\x01\x02\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xe8\x89\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xad\x80\x80\x80\x00 \x01)\x030!\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xac\x89\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x02 \x011\x00 B\xcd\x00R\r\x02\x02@ \x01-\x00(\"\x03A\x0eF\r\x00 \x03A\xca\x00G\r\x03\x0b \x011\x008B\xcb\x00R\r\x02\x0c\x03\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x01 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x01A0j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\x88\x8a\xc0\x80\x00A\x02 \x01A0jA\x02\x10\xad\x80\x80\x80\x00 \x01A\x18j \x01)\x030\x10\xaf\x80\x80\x80\x00 \x01(\x02\x18\r\x01 \x01A\x18j \x01)\x038\x10\xaa\x80\x80\x80\x00 \x01(\x02\x18A\x01G\r\x02\x0c\x01\x0b \x01(\x02\x10 \x01(\x02\x14\x10\xa9\x80\x80\x80\x00A\x01K\r\x00 \x01A\x18j \x01A\x08j\x10\xa7\x80\x80\x80\x00 \x01)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00 \x01)\x03 !\x00A\x00!\x03\x02@\x03@ \x03A\x18F\r\x01 \x01A\x18j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xa8\x8a\xc0\x80\x00A\x03 \x01A\x18jA\x03\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\xcb\x00R\r\x00 \x01A0j \x01)\x03 \x10\xaf\x80\x80\x80\x00 \x01(\x020\r\x00 \x01A0j \x01)\x03(\x10\xaa\x80\x80\x80\x00 \x01(\x020A\x01G\r\x01\x0b\x00\x0b \x01A\xc0\x00j$\x80\x80\x80\x80\x00B\x02\x0b\xb3\x02\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@\x02@ \x01B\xff\x01\x83B\xcb\x00Q\r\x00 \x00B\x017\x03\x00\x0c\x01\x0b \x01\x10\x81\x80\x80\x80\x00!\x03 \x02A\x006\x02\x08 \x02 \x017\x03\x00 \x02 \x03B \x88>\x02\x0c \x02A\x10j \x02\x10\xa7\x80\x80\x80\x00\x02@ \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00\x02@ \x02)\x03\x18\"\x01\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@ \x01A\xc8\x89\xc0\x80\x00A\x01\x10\xa8\x80\x80\x80\x00B\xff\xff\xff\xff\x0fV\r\x00 \x02(\x02\x08 \x02(\x02\x0c\x10\xa9\x80\x80\x80\x00A\x01K\r\x00 \x02A\x10j \x02\x10\xa7\x80\x80\x80\x00 \x02)\x03\x10\"\x01B\x02Q\r\x00 \x01\xa7A\x01q\r\x00 \x02A\x10j \x02)\x03\x18\x10\xaa\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x01 \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0c\x02\x0b \x00B\x017\x03\x00\x0c\x01\x0b \x00B\x017\x03\x00\x0b \x02A j$\x80\x80\x80\x80\x00\x0b\x9e\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00 \x01A\x83\x80\x80\x80\x006\x02\x00 \x01(\x02\x00\x1aA\x00!\x02A\x00-\x00\xc0\x8a\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd4\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xad\x80\x80\x80\x00 \x011\x00\x00B\xcb\x00R\r\x00 \x011\x00\x08B\xcd\x00Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bA\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x88\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a \x01A\x89\x80\x80\x80\x006\x02\x08 \x01(\x02\x08\x1a\x02@ \x00B\xff\x01\x83B\xcc\x00Q\r\x00\x00\x0bB\x02\x0bg\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xe2\x80\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x08B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x12\x00A\x00-\x00\xb8\x80\xc0\x80\x00\x1aB\x84\x80\x80\x80\x10\x0br\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\xc4\x81\xc0\x80\x00\x1a\x02@ \x00B\x02Q\r\x00 \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xc8\x85\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x01)\x03\x08B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0bI\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bA\x00-\x00\xb4\x82\xc0\x80\x00\x1aB\x83\x80\x80\x80\x10\x10\xa3\x80\x80\x80\x00\x00\x0b@\x01\x01\x7f\x02@\x02@A\x01A\x02A\x00 \x00\xa7A\xff\x01q\"\x01\x1b \x01A\x01F\x1b\"\x01A\x02F\r\x00 \x01A\x01q\r\x01B\x02\x0f\x0b\x00\x0bB\x83\x80\x80\x80\xf0\x00\x10\xa3\x80\x80\x80\x00\x00\x0b\x8a\x02\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03A\x00-\x00\xa6\x82\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x02@\x03@ \x03A\x10F\r\x01 \x02A\x08j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xb4\x85\xc0\x80\x00A\x02 \x02A\x08jA\x02\x10\xad\x80\x80\x80\x00 \x021\x00\x08B\x04R\r\x00 \x02B\x027\x03\x18 \x02)\x03\x10\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x02A\x18jA\x01\x10\xad\x80\x80\x80\x00\x02@ \x02)\x03\x18\"\x00\xa7A\xff\x01q\"\x03A\x07F\r\x00 \x03A\xc1\x00G\r\x01 \x00\x10\x82\x80\x80\x80\x00\x1a\x0bA\x00-\x00\xf0\x80\xc0\x80\x00\x1a \x01B\xff\x01\x83B\x04R\r\x00 \x01B \x88\xa7A}jA}K\r\x01\x0b\x00\x0b \x02A j$\x80\x80\x80\x80\x00B\x02\x0b\x90\x04\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A0k\"\x01$\x80\x80\x80\x80\x00A\x00-\x00\x94\x84\xc0\x80\x00\x1a \x01A\x81\x80\x80\x80\x006\x02 \x01(\x02 \x1aA\x00-\x00\xd2\x81\xc0\x80\x00\x1aA\x00-\x00\xe0\x81\xc0\x80\x00\x1aA\x00-\x00\xee\x81\xc0\x80\x00\x1a \x01B\x027\x03\x08\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x08jA\x01\x10\xad\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcb\x00R\r\x00 \x00\x10\x81\x80\x80\x80\x00!\x02 \x01A\x006\x02\x18 \x01 \x007\x03\x10 \x01 \x02B \x88>\x02\x1c \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x01)\x03(\"\x00\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b\x02@\x02@\x02@ \x00A\xe8\x85\xc0\x80\x00A\x02\x10\xa8\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x03\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa9\x80\x80\x80\x00A\x01K\r\x02 \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x02 \x00\xa7A\x01q\r\x02 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x02 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00 B\xcb\x00Q\r\x01\x0c\x02\x0b \x01(\x02\x18 \x01(\x02\x1c\x10\xa9\x80\x80\x80\x00A\x01K\r\x01 \x01A j \x01A\x10j\x10\xa7\x80\x80\x80\x00 \x01)\x03 \"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x01)\x03(!\x00 \x01B\x027\x03 \x00B\xff\x01\x83B\xcc\x00R\r\x01 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00 B\x04R\r\x01\x0b \x01A0j$\x80\x80\x80\x80\x00B\x02\x0f\x0b\x00\x0bZ\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xbe\x84\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x08A\xc8\x85\xc0\x80\x00A\x01 \x00A\x08jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x00A\xc8\x86\xc0\x80\x00A\x01\x10\xbb\x80\x80\x80\x00\x02@ \x00(\x02\x00A\x01G\r\x00\x00\x0b \x00)\x03\x08!\x01 \x00B\x84\x80\x80\x80\x107\x03\x08 \x00 \x017\x03\x00 \x00\x10\xbc\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0b\xdb\x01\x02\x01~\x04\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03 \x02!\x04 \x01!\x05\x03@\x02@ \x04\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x06\x02@ \x05-\x00\x00\"\x07A\xdf\x00F\r\x00\x02@\x02@ \x07APjA\xff\x01qA\nI\r\x00 \x07A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x07A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x07AEj!\x06\x0c\x02\x0b \x07ARj!\x06\x0c\x01\x0b \x07AKj!\x06\x0b \x03B\x06\x86 \x06\xadB\xff\x01\x83\x84!\x03 \x04A\x7fj!\x04 \x05A\x01j!\x05\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x87\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x17\x00 \x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x84\x80\x80\x80\x00\x0b\xc4\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\x9a\x81\xc0\x80\x00\x1a\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00\x02@\x03@ \x02A\x10F\r\x01 \x01A\x08j \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x08j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x83\x80\x80\x80\x00\x1a \x01B\x027\x03\x18 \x01)\x03\x08\"\x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xf8\x84\xc0\x80\x00A\x01 \x01A\x18jA\x01\x10\xad\x80\x80\x80\x00 \x011\x00\x18B\x04R\r\x00 \x011\x00\x10B\x04Q\r\x01\x0b\x00\x0b \x01A j$\x80\x80\x80\x80\x00B\x02\x0bo\x02\x01\x7f\x01~#\x80\x80\x80\x80\x00A k\"\x00$\x80\x80\x80\x80\x00A\x00-\x00\xa4\x83\xc0\x80\x00\x1a \x00B\x84\x80\x80\x80\x107\x03\x18A\xf8\x84\xc0\x80\x00A\x01 \x00A\x18jA\x01\x10\x9a\x80\x80\x80\x00!\x01 \x00B\x84\x80\x80\x80 7\x03\x10 \x00 \x017\x03\x08 \x00A\x08j\x10\xbc\x80\x80\x80\x00!\x01 \x00A j$\x80\x80\x80\x80\x00 \x01\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8a\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b0\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01A\x8b\x80\x80\x80\x006\x02\x0c \x01(\x02\x0c\x1a\x02@ \x00B\xff\x01\x83B\xcb\x00Q\r\x00\x00\x0bB\x02\x0b\x8d\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00A\x00!\x02A\x00-\x00\xc0\x83\xc0\x80\x00\x1a\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b\x02@\x02@ \x00B\xff\x01\x83B\xcc\x00R\r\x00 \x00A\xd4\x8a\xc0\x80\x00A\x02 \x01A\x02\x10\xad\x80\x80\x80\x00 \x011\x00\x00B\x04R\r\x00 \x01)\x03\x08B\xfe\x01\x83P\r\x01\x0b\x00\x0b \x01A\x10j$\x80\x80\x80\x80\x00B\x02\x0b\x03\x00\x00\x0b\t\x00\x10\xc2\x80\x80\x80\x00\x00\x0b\x0b\xee\n\x01\x00A\x80\x80\xc0\x00\x0b\xe4\nSpEcV1Hh\xdc\xaaa\x8d\xf7\rSpEcV1\xe7\xcf\x9b1n\x15\x13\xfeSpEcV1\xe2\x01y\xc9\x9a\xf8\xedtSpEcV1v1\x0eP\xa9C\xc7*SpEcV1\xa9<\xd8+\xb7\xa7\r\x17SpEcV1m,V\n/\xc9:GSpEcV1\xac\xa5\xff\x1ay\xee\x80\xb5SpEcV1p\x8c\x0fN!\x082\xd8SpEcV1\xc2\xf4N\xbf\xebqvpSpEcV1K\xdf\'8m/\xe8\x1dSpEcV1@\xb9LO\xf9\xd1\xe8\xe2SpEcV1\xde\x1dMa\x01\xec\xb0ASpEcV1\xc2 \x1b\xdc\xc8gxZSpEcV1\x99\xc4\xff\x8aS\x94*LSpEcV1\xb3/\x97\xd5\x06\xbd3BSpEcV1\xccz\xbc\x93#\xa2\xae\xa7SpEcV1\xe47\xbfD\x98\xf3@1SpEcV1\xa0jX\xab]\x05\x00\xfeSpEcV1\x0c\xf0\xf6w\xfd\x1a\x1b\x94SpEcV1\x93\x9b\xdb\xd6X\x96\xd8\xf1SpEcV1\xf5\xd4\x9b\xa3\xccI\x13\xf7SpEcV1\x84\x08Y\xae\xa0\xf128SpEcV1\r\xb76\xae\x93D\xef\x1aSpEcV1\x8b\x89\x1f#\xbd\x157\xf4SpEcV16\x83?\xf0\xcdW\xb1/SpEcV1ccX\x9cB]\xc6JSpEcV1\xb4\xabN]\xe3\xeaA\xd6SpEcV1\x0f\xb2>?\x95bZpSpEcV1\x15\xbf\xd0+\x01\x18\x88\xddSpEcV1\xf4\xa1{\'\x12#\x1emSpEcV1Y\xa66\xb3\xecxE\x13SpEcV1\xcf@%X\xde+J@SpEcV1\xb6\x1c\xfd\xdfhY-dSpEcV1\xcc9\xe3\xc8w$\x0b\x8eSpEcV1{\xc7\xf1}\x81S\x11\xebSpEcV1\r\xd6\r \xfc\xdb\xea\xf3SpEcV1\x9a\x14*\xbc\x82a\x08XSpEcV1\x7f\xc5\xceo\xc3ST\x08SpEcV1\xe6Q\xd5T\x13\x8a\xb7lSpEcV1[\xf4R\xdf\xdd\xb4\xb0\xbcSpEcV1\xaaX8\xde\xef\xbb6%SpEcV1k\xe4zxB\xd1+\x02amount\x00\x00L\x02\x10\x00\x06\x00\x00\x00used_export_false_eventval\x00\x00s\x02\x10\x00\x03\x00\x00\x00StellarAssetAccount\x00\xc4\x04\x10\x00\x04\x00\x00\x00\x80\x02\x10\x00\x0c\x00\x00\x00\x8c\x02\x10\x00\x07\x00\x00\x00anested\x00\xac\x02\x10\x00\x01\x00\x00\x00\xad\x02\x10\x00\x06\x00\x00\x00data\xc4\x02\x10\x00\x04\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xd0\x02\x10\x00\x0c\x00\x00\x00\xdc\x02\x10\x00\t\x00\x00\x00ContractCreateContractHostFnCreateContractWithCtorHostFn\xf8\x02\x10\x00\x08\x00\x00\x00\x00\x03\x10\x00\x14\x00\x00\x00\x14\x03\x10\x00\x1c\x00\x00\x00A\x00\x00\x00\xad\x02\x10\x00\x06\x00\x00\x00xy\x00\x00T\x03\x10\x00\x01\x00\x00\x00U\x03\x10\x00\x01\x00\x00\x00inner\x00\x00\x00h\x03\x10\x00\x05\x00\x00\x00transfercoordsefused_event_simplepayload\x99\x03\x10\x00\x07\x00\x00\x00used_event_with_refsused_event_with_data_typeused_event_with_topic_typeused_event_with_nested_dataused_event_with_nested_topicSpEcV1\xb6\xb1Hy\xda\xca\xaf\xccSpEcV1\xbf\xa7\xd1\xa5Lh\x8e\xb2SpEcV1|t\x84\\\xe9\x99\xb5WSpEcV1\x85A+\'\x04\xb5z\x18SpEcV1\xfb\x0e[\xb2\xb0\xab\xd7\xfeSpEcV1\x01\x10}\xd1\x98L%NSpEcV1L|{\r\xf4\xf2\x1a\xa8SpEcV1\xf1\xf9\x90\x07E*e\xfdargscontractfn_name\x00\x00\x00\x96\x04\x10\x00\x04\x00\x00\x00\x9a\x04\x10\x00\x08\x00\x00\x00\xa2\x04\x10\x00\x07\x00\x00\x00Wasm\xc4\x04\x10\x00\x04\x00\x00\x00contextsub_invocations\x00\x00\xd0\x04\x10\x00\x07\x00\x00\x00\xd7\x04\x10\x00\x0f\x00\x00\x00executablesalt\x00\x00\xf8\x04\x10\x00\n\x00\x00\x00\x02\x05\x10\x00\x04\x00\x00\x00constructor_args\x18\x05\x10\x00\x10\x00\x00\x00\xf8\x04\x10\x00\n\x00\x00\x00\x02\x05\x10\x00\x04\x00\x00\x00SpEcV1\xa3\x16\n\x8f\xc9\x92\xd2\x11f1f2\x00\x00N\x05\x10\x00\x02\x00\x00\x00P\x05\x10\x00\x02\x00\x00\x00\x00\x9fT\x0econtractspecv0\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedExportFalseError\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedExportFalseEvent\x00\x00\x00\x01\x00\x00\x00\x17used_export_false_event\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedExportFalseStruct\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UsedLeaf\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_map\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01m\x00\x00\x00\x00\x00\x03\xec\x00\x00\x07\xd1[\xf4R\xdf\xdd\xb4\xb0\xbc\x00\x00\x07\xd1\xaaX8\xde\xef\xbb6%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08with_vec\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xe2\x01y\xc9\x9a\xf8\xedt\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUnusedEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapKey\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02K1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02K2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nUsedMapVal\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1Hh\xdc\xaaa\x8d\xf7\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_param\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1m,V\n/\xc9:G\x00\x00\x00\x00\x00\x00\x00\x02ie\x00\x00\x00\x00\x07\xd1\xc2\xf4N\xbf\xebqvp\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nwith_tuple\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01t\x00\x00\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd1\xde\x1dMa\x01\xec\xb0A\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bUnusedEvent\x00\x00\x00\x00\x01\x00\x00\x00\x0cunused_event\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUnusedStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUsedResultOk\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_option\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01o\x00\x00\x00\x00\x00\x03\xe8\x00\x00\x07\xd1\xb3/\x97\xd5\x06\xbd3B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_result\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x07\xd1k\xe4zxB\xd1+\x02\x00\x00\x07\xd1Hh\xdc\xaaa\x8d\xf7\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bwith_return\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xe7\xcf\x9b1n\x15\x13\xfe\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUnusedIntEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02U1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02U2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rUsedErrorEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08NotFound\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07Invalid\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cwith_non_pub\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1p\x8c\x0fN!\x082\xd8\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUnusedPubError\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Nope\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedReturnEnum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0eUsedVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedNonPubError\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Fail\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedParamStruct\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd1\x84\x08Y\xae\xa0\xf128\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedRefDataType\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06nested\x00\x00\x00\x00\x07\xd1K\xdf\'8m/\xe8\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0epublish_simple\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0ewith_recursion\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01r\x00\x00\x00\x00\x00\x07\xd1\xa0jX\xab]\x05\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fUsedEventSimple\x00\x00\x00\x00\x01\x00\x00\x00\x11used_event_simple\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedNonPubStruct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedParamIntEnum\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01X\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01Y\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefDataInner\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedRefTopicType\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04Send\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Recv\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10UsedTupleElement\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_executable\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01e\x00\x00\x00\x00\x00\x07\xd1L|{\r\xf4\xf2\x1a\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_lib_struct\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\xa3\x16\n\x8f\xc9\x92\xd2\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fwith_vec_nested\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01v\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\x0f\xb2>?\x95bZp\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UnusedNonPubError\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventDataType\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01y\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedOptionElement\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04data\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveLeaf\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xa0jX\xab]\x05\x00\xfe\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveNode\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x07\xd1\xe6Q\xd5T\x13\x8a\xb7l\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xccz\xbc\x93#\xa2\xae\xa7\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedRecursiveRoot\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x07\xd1\xe47\xbfD\x98\xf3@1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10with_panic_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11UsedEventWithRefs\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14used_event_with_refs\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd1@\xb9LO\xf9\xd1\xe8\xe2\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\xac\xa5\xff\x1ay\xee\x80\xb5\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UnusedNonPubStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataInner\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventDataOuter\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd1\x0c\xf0\xf6w\xfd\x1a\x1b\x94\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedEventTopicType\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x08Transfer\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Mint\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedNestedInStruct\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12UsedPanicErrorEnum\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Boom\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_data_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11publish_ref_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_assert_error\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02ok\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_invoker_auth\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01i\x00\x00\x00\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11with_tuple_return\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x07\xd1Y\xa66\xb3\xecxE\x13\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedAssertErrorEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03Bad\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicInner\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedEventTopicOuter\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd16\x83?\xf0\xcdW\xb1/\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13UsedVecInnerElement\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12publish_topic_type\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_auth_contexts\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\x01\x10}\xd1\x98L%N\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_non_pub_error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xa9<\xd8+\xb7\xa7\r\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12with_wasm_imported\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14UsedVecElementNested\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x05inner\x00\x00\x00\x00\x00\x07\xd1\xb4\xabN]\xe3\xeaA\xd6\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\tvec_inner\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\xcf@%X\xde+J@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13publish_nested_data\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14publish_nested_topic\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14with_panic_raw_error\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04fail\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15UsedEventWithDataType\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19used_event_with_data_type\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\xc2 \x1b\xdc\xc8gxZ\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedTupleReturnElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedVecInnerVecElement\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03val\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16UsedEventWithTopicType\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1aused_event_with_topic_type\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x07\xd1\xf5\xd4\x9b\xa3\xccI\x13\xf7\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17UsedEventWithNestedData\x00\x00\x00\x00\x01\x00\x00\x00\x1bused_event_with_nested_data\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04kind\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07payload\x00\x00\x00\x07\xd1\x93\x9b\xdb\xd6X\x96\xd8\xf1\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UnusedNonContractFnParam\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17with_export_false_error\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\r\xd6\r \xfc\xdb\xea\xf3\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18UsedEventWithNestedTopic\x00\x00\x00\x01\x00\x00\x00\x1cused_event_with_nested_topic\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x04info\x00\x00\x07\xd1ccX\x9cB]\xc6J\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x06amount\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19UnusedNonContractFnReturn\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01x\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18with_export_false_struct\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01s\x00\x00\x00\x00\x00\x07\xd1\x7f\xc5\xceo\xc3ST\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1apublish_export_false_event\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; extern crate test; #[rustc_test_marker = "test::test_spec_shaking_v2"] #[doc(hidden)] diff --git a/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs b/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs index 2c6616e87..25da4d914 100644 --- a/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs +++ b/tests-expanded/test_spec_shaking_v2_wasm32v1-none.rs @@ -92,9 +92,9 @@ impl UsedParamStruct { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -104,6 +104,39 @@ impl UsedParamStruct { UsedParamStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedParamStruct { #[doc(hidden)] #[inline(always)] @@ -111,7 +144,7 @@ impl soroban_sdk::SpecShakingMarker for UsedParamStruct { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1X\x03\xf6t\xc7\xd0\x01\""; + static MARKER: [u8; 14usize] = *b"SpEcV1m,V\n/\xc9:G"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -256,6 +289,45 @@ impl UsedReturnEnum { UsedReturnEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedReturnEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::U32, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedReturnEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedReturnEnum { #[doc(hidden)] #[inline(always)] @@ -418,6 +490,37 @@ impl UsedParamIntEnum { UsedParamIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedParamIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"X"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Y"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedParamIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedParamIntEnum { #[doc(hidden)] #[inline(always)] @@ -539,6 +642,39 @@ impl UsedErrorEnum { UsedErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotFound"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Invalid"), + value: 2u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedErrorEnum { #[doc(hidden)] #[inline(always)] @@ -714,6 +850,34 @@ impl UsedPanicErrorEnum { UsedPanicErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedPanicErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedPanicErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Boom"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedPanicErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedPanicErrorEnum { #[doc(hidden)] #[inline(always)] @@ -887,6 +1051,34 @@ impl UsedAssertErrorEnum { UsedAssertErrorEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedAssertErrorEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedAssertErrorEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedAssertErrorEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedAssertErrorEnum { #[doc(hidden)] #[inline(always)] @@ -1065,6 +1257,32 @@ impl UsedNestedInStruct { UsedNestedInStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNestedInStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNestedInStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNestedInStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNestedInStruct { #[doc(hidden)] #[inline(always)] @@ -1180,6 +1398,32 @@ impl UsedVecElement { UsedVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecElement { #[doc(hidden)] #[inline(always)] @@ -1305,6 +1549,37 @@ impl UsedMapKey { UsedMapKey::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapKey { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"K2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapKey::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedMapKey { #[doc(hidden)] #[inline(always)] @@ -1412,6 +1687,32 @@ impl UsedMapVal { UsedMapVal::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedMapVal { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"v"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedMapVal::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedMapVal { #[doc(hidden)] #[inline(always)] @@ -1530,6 +1831,32 @@ impl UsedOptionElement { UsedOptionElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedOptionElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedOptionElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedOptionElement { #[doc(hidden)] #[inline(always)] @@ -1643,6 +1970,32 @@ impl UsedResultOk { UsedResultOk::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedResultOk { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"data"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedResultOk::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedResultOk { #[doc(hidden)] #[inline(always)] @@ -1885,6 +2238,37 @@ impl UsedEventTopicType { UsedEventTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Transfer"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Mint"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicType { #[doc(hidden)] #[inline(always)] @@ -2001,9 +2385,9 @@ impl UsedEventWithTopicType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -2028,7 +2412,7 @@ impl soroban_sdk::SpecShakingMarker for UsedEventWithTopicType { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1q^\xe2&\x9di\x9d\x0e"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xf4\xa1{'\x12#\x1em"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -2132,10 +2516,41 @@ impl UsedEventDataType { UsedEventDataType::__SPEC_XDR_REF.const_to_xdr() } } -impl soroban_sdk::SpecShakingMarker for UsedEventDataType { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { +impl UsedEventDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"y"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} +impl soroban_sdk::SpecShakingMarker for UsedEventDataType { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { ::spec_shaking_marker(); ::spec_shaking_marker(); { @@ -2265,9 +2680,9 @@ impl UsedEventWithDataType { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -2286,7 +2701,7 @@ impl soroban_sdk::SpecShakingMarker for UsedEventWithDataType { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1q\xa3z;6\xa6R\x01"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x15\xbf\xd0+\x01\x18\x88\xdd"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -2373,9 +2788,9 @@ impl UsedEventTopicOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2385,13 +2800,41 @@ impl UsedEventTopicOuter { UsedEventTopicOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicOuter { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\x94\xc7w/_\xebXc"; + static MARKER: [u8; 14usize] = *b"SpEcV1ccX\x9cB]\xc6J"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -2507,6 +2950,32 @@ impl UsedEventTopicInner { UsedEventTopicInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventTopicInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventTopicInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventTopicInner { #[doc(hidden)] #[inline(always)] @@ -2630,9 +3099,9 @@ impl UsedEventWithNestedTopic { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"info"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventTopicOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -2657,7 +3126,7 @@ impl soroban_sdk::SpecShakingMarker for UsedEventWithNestedTopic { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xe3\xf2\x9b5%a\xfb\xd6"; + static MARKER: [u8; 14usize] = *b"SpEcV1{\xc7\xf1}\x81S\x11\xeb"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -2744,9 +3213,9 @@ impl UsedEventDataOuter { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2756,13 +3225,41 @@ impl UsedEventDataOuter { UsedEventDataOuter::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataOuter { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataOuter::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventDataOuter { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1'\xf2\xa2\xb9\xd0)\xc0u"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x93\x9b\xdb\xd6X\x96\xd8\xf1"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -2878,6 +3375,32 @@ impl UsedEventDataInner { UsedEventDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedEventDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedEventDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedEventDataInner { #[doc(hidden)] #[inline(always)] @@ -3006,9 +3529,9 @@ impl UsedEventWithNestedData { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedEventDataOuter"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -3027,7 +3550,7 @@ impl soroban_sdk::SpecShakingMarker for UsedEventWithNestedData { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1 \xfbl\x04B\x82\xc0\xb4"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xcc9\xe3\xc8w$\x0b\x8e"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -3129,6 +3652,37 @@ impl UsedRefTopicType { UsedRefTopicType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefTopicType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Send"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recv"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefTopicType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefTopicType { #[doc(hidden)] #[inline(always)] @@ -3233,9 +3787,9 @@ impl UsedRefDataType { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"nested"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3245,13 +3799,41 @@ impl UsedRefDataType { UsedRefDataType::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataType { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"nested"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataType::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefDataType { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1'\xbd_A\r\x9a\x89\x02"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xac\xa5\xff\x1ay\xee\x80\xb5"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -3360,6 +3942,32 @@ impl UsedRefDataInner { UsedRefDataInner::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRefDataInner { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataInner"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRefDataInner::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRefDataInner { #[doc(hidden)] #[inline(always)] @@ -3480,9 +4088,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"kind"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefTopicType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::TopicList, @@ -3490,9 +4098,9 @@ impl<'a> UsedEventWithRefs<'a> { soroban_sdk::xdr::ScSpecEventParamV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"payload"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRefDataType"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), location: soroban_sdk::xdr::ScSpecEventParamLocationV0::Data, @@ -3511,7 +4119,7 @@ impl<'a> soroban_sdk::SpecShakingMarker for UsedEventWithRefs<'a> { <&'a UsedRefTopicType as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); <&'a UsedRefDataType as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1[Q+\xe9\xde\xd5\xf2>"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x99\xc4\xff\x8aS\x94*L"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -3601,6 +4209,32 @@ impl UsedTupleElement { UsedTupleElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedTupleElement { #[doc(hidden)] #[inline(always)] @@ -3719,6 +4353,32 @@ impl UsedTupleReturnElement { UsedTupleReturnElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedTupleReturnElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedTupleReturnElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedTupleReturnElement { #[doc(hidden)] #[inline(always)] @@ -3839,6 +4499,32 @@ impl UsedVecInnerVecElement { UsedVecInnerVecElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerVecElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerVecElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerVecElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecInnerVecElement { #[doc(hidden)] #[inline(always)] @@ -3959,6 +4645,32 @@ impl UsedVecInnerElement { UsedVecInnerElement::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecInnerElement { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecInnerElement::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecInnerElement { #[doc(hidden)] #[inline(always)] @@ -4081,9 +4793,9 @@ impl UsedVecElementNested { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"inner"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecInnerElement"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4097,11 +4809,9 @@ impl UsedVecElementNested { name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UsedVecInnerVecElement", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4113,6 +4823,50 @@ impl UsedVecElementNested { UsedVecElementNested::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedVecElementNested { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"vec_inner"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedVecElementNested::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedVecElementNested { #[doc(hidden)] #[inline(always)] @@ -4121,7 +4875,7 @@ impl soroban_sdk::SpecShakingMarker for UsedVecElementNested { ::spec_shaking_marker(); as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\x13?J\x12d\xden|"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x0f\xb2>?\x95bZp"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -4257,6 +5011,32 @@ mod export_false_used { UsedExportFalseStruct::__SPEC_XDR_REF.const_to_xdr() } } + impl UsedExportFalseStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UsedExportFalseStruct { #[doc(hidden)] #[inline(always)] @@ -4378,10 +5158,38 @@ mod export_false_used { UsedExportFalseError::__SPEC_XDR_REF.const_to_xdr() } } - impl soroban_sdk::SpecShakingMarker for UsedExportFalseError { - #[doc(hidden)] - #[inline(always)] - fn spec_shaking_marker() { + impl UsedExportFalseError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedExportFalseError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } + impl soroban_sdk::SpecShakingMarker for UsedExportFalseError { + #[doc(hidden)] + #[inline(always)] + fn spec_shaking_marker() { { static MARKER: [u8; 14usize] = *b"SpEcV1\r\xd6\r \xfc\xdb\xea\xf3"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; @@ -4677,6 +5485,32 @@ impl UsedNonPubStruct { UsedNonPubStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNonPubStruct { #[doc(hidden)] #[inline(always)] @@ -4790,6 +5624,34 @@ impl UsedNonPubError { UsedNonPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Fail"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedNonPubError { #[doc(hidden)] #[inline(always)] @@ -4958,9 +5820,9 @@ impl UsedRecursiveRoot { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"val"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4970,13 +5832,41 @@ impl UsedRecursiveRoot { UsedRecursiveRoot::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveRoot { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveRoot::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveRoot { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1u2\x0b\x97\xae\xcd\x86\xbf"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xa0jX\xab]\x05\0\xfe"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -5104,9 +5994,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -5117,9 +6007,9 @@ impl UsedRecursiveNode { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -5131,6 +6021,49 @@ impl UsedRecursiveNode { UsedRecursiveNode::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveNode { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveNode"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveNode::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveNode { #[doc(hidden)] #[inline(always)] @@ -5138,7 +6071,7 @@ impl soroban_sdk::SpecShakingMarker for UsedRecursiveNode { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1*\\\x9c\xf4e\xaa\x1e]"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xe47\xbfD\x98\xf3@1"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -5280,9 +6213,9 @@ impl UsedRecursiveLeaf { name: soroban_sdk::xdr::StringMRef::new(b"val"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -5294,13 +6227,45 @@ impl UsedRecursiveLeaf { UsedRecursiveLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedRecursiveLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedRecursiveLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedRecursiveLeaf { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1?\xd9\xb3q\xdep>\xf3"; + static MARKER: [u8; 14usize] = *b"SpEcV1\xccz\xbc\x93#\xa2\xae\xa7"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -5407,6 +6372,32 @@ impl UsedLeaf { UsedLeaf::__SPEC_XDR_REF.const_to_xdr() } } +impl UsedLeaf { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UsedLeaf"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"val"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UsedLeaf::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UsedLeaf { #[doc(hidden)] #[inline(always)] @@ -5463,7 +6454,7 @@ impl soroban_sdk::TryFromVal for soroban_sdk::Val { } } mod wasm_imported { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\x8f\x0f\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08EnumIntA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x07StructA\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01*\x07`\x02~~\x01~`\x03~~~\x01~`\x01~\x01~`\x00\x01~`\x02\x7f\x7f\x01~`\x04\x7f\x7f\x7f\x7f\x01~`\x02\x7f~\x00\x02%\x06\x01b\x01j\x00\x00\x01x\x011\x00\x00\x01v\x01g\x00\x00\x01m\x019\x00\x01\x01i\x012\x00\x02\x01i\x011\x00\x02\x03\x0c\x0b\x03\x04\x03\x02\x00\x05\x03\x00\x00\x06\x06\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x82\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x7f\x00A\xa0\x80\xc0\x00\x0b\x07\x8e\x01\x0b\x06memory\x02\x00\tfn_enum_a\x00\x06\rfn_enum_int_a\x00\x08\nfn_error_a\x00\t\nfn_event_a\x00\n\nfn_event_d\x00\x0c\x0bfn_struct_a\x00\r\x11fn_struct_tuple_a\x00\x0e\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc6\t\x0b\x8b\x02\x03\x01\x7f\x01~\x03\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00B\x00!\x01A~!\x02\x03~\x02@\x02@\x02@\x02@\x02@ \x02E\r\x00A\x01!\x03 \x02A\x82\x80\xc0\x80\x00j-\x00\x00\"\x04A\xdf\x00F\r\x04 \x04APjA\xff\x01qA\nI\r\x02 \x04A\xbf\x7fjA\xff\x01qA\x1aI\r\x03\x02@ \x04A\x9f\x7fjA\xff\x01qA\x1aO\r\x00 \x04AEj!\x03\x0c\x05\x0b \x00 \x04\xadB\x08\x86B\x01\x847\x03\x00A\x80\x80\xc0\x80\x00\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x80\x80\x80\x80\x00!\x01\x0c\x01\x0b \x00 \x01B\x08\x86B\x0e\x84\"\x017\x02\x04\x0b \x00 \x017\x03\x00 \x00A\x01\x10\x87\x80\x80\x80\x00!\x01 \x00A\x10j$\x80\x80\x80\x80\x00 \x01\x0f\x0b \x04ARj!\x03\x0c\x01\x0b \x04AKj!\x03\x0b \x01B\x06\x86 \x03\xadB\xff\x01\x83\x84!\x01 \x02A\x01j!\x02\x0c\x00\x0b\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\x08\x00B\x84\x80\x80\x800\x0b*\x00\x02@ \x00B\xff\x01\x83B\x04Q\r\x00\x00\x0bB\x83\x80\x80\x80 \x00B\x84\x80\x80\x80p\x83 \x00B\x80\x80\x80\x80\x10T\x1b\x0b\xdc\x01\x01\x02\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\xcd\x00R\r\x00 \x01B\xff\x01\x83B\xc9\x00R\r\x00 \x02 \x007\x03\x08 \x02B\x8e\xcc\xc1\xfc\xac\xdd\xab\x017\x03\x00A\x00!\x03\x03@\x02@ \x03A\x10G\r\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02A\x10j \x03j \x02 \x03j)\x03\x007\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b \x02A\x10jA\x02\x10\x87\x80\x80\x80\x00!\x00 \x02 \x017\x03\x10 \x00A\x98\x80\xc0\x80\x00A\x01 \x02A\x10jA\x01\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x02A j$\x80\x80\x80\x80\x00B\x02\x0f\x0b \x02A\x10j \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0b\x00\x0b.\x00\x02@ \x01 \x03F\r\x00\x00\x0b \x00\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x0b\x87\x01\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00$\x80\x80\x80\x80\x00 \x00B\x8e\xd2\xc1\xfc\xac\xdd\xab\x017\x03\x00B\x02!\x01A\x01!\x02\x02@\x03@ \x02E\r\x01 \x02A\x7fj!\x02B\x8e\xd2\xc1\xfc\xac\xdd\xab\x01!\x01\x0c\x00\x0b\x0b \x00 \x017\x03\x08 \x00A\x08jA\x01\x10\x87\x80\x80\x80\x00A\x04A\x00 \x00A\x08jA\x00\x10\x8b\x80\x80\x80\x00\x10\x81\x80\x80\x80\x00\x1a \x00A\x10j$\x80\x80\x80\x80\x00B\x02\x0by\x01\x02\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00\x02@ \x00B\xff\x01\x83B\x04R\r\x00A\x01A\x02A\x00 \x01\xa7A\xff\x01q\"\x03\x1b \x03A\x01F\x1b\"\x03A\x02F\r\x00 \x02 \x03\xad7\x03\x08 \x02 \x00B\x84\x80\x80\x80p\x837\x03\x00A\x88\x80\xc0\x80\x00A\x02 \x02A\x02\x10\x8b\x80\x80\x80\x00!\x00 \x02A\x10j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b\xb2\x01\x01\x01\x7f#\x80\x80\x80\x80\x00A k\"\x02$\x80\x80\x80\x80\x00 \x02A\x10j \x00\x10\x8f\x80\x80\x80\x00\x02@ \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x8f\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02)\x03\x18!\x01 \x02A\x10j \x00\x10\x90\x80\x80\x80\x00 \x02(\x02\x10\r\x00 \x02)\x03\x18!\x00 \x02A\x10j \x01\x10\x90\x80\x80\x80\x00 \x02(\x02\x10A\x01F\r\x00 \x02 \x02)\x03\x187\x03\x08 \x02 \x007\x03\x00 \x02A\x02\x10\x87\x80\x80\x80\x00!\x00 \x02A j$\x80\x80\x80\x80\x00 \x00\x0f\x0b\x00\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x84\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0bF\x00\x02@\x02@ \x01B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x01B\x08\x86B\x07\x84!\x01\x0c\x01\x0b \x01\x10\x85\x80\x80\x80\x00!\x01\x0b \x00B\x007\x03\x00 \x00 \x017\x03\x08\x0b\x0b)\x01\x00A\x80\x80\xc0\x00\x0b V2f1f2\x00\x00\x02\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x04\x00\x10\x00\x02\x00\x00\x00\x00\xeb\x0e\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tfn_enum_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xa2=N\xc1p\x95\x90\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_error_a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x05input\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x00\x04\x00\x00\x07\xd1\xe9R\xa7\xe8b\x99\xa2\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_a\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nfn_event_d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0bfn_struct_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rfn_enum_int_a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1V]\x80\\~\x1a\x08/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11fn_struct_tuple_a\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumA\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumB\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05EnumC\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xb6\x1c\xfd\xdfhY-d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1\xcf)\x97]S\xb2\xfd)\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorA\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorB\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06ErrorC\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02E1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02E2\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x02E3\x00\x00\x00\x00\x00f\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventA\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_a\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventB\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_b\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventC\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02f3\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06EventD\x00\x00\x00\x00\x00\x01\x00\x00\x00\x07event_d\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructA\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructB\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07StructC\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02f1\x00\x00\x00\x00\x03\xea\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02f2\x00\x00\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntA\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntB\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08EnumIntC\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02V1\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x02V2\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x02V3\x00\x00\x00\x00\x01,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleA\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleB\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStructTupleC\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x00\x0b\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00+\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00"; pub trait Contract { fn fn_enum_a(env: soroban_sdk::Env) -> EnumA; fn fn_error_a(env: soroban_sdk::Env, input: u32) -> Result; @@ -5842,6 +6833,37 @@ mod wasm_imported { StructA::__SPEC_XDR_REF.const_to_xdr() } } + impl StructA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Bool, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructA { #[doc(hidden)] #[inline(always)] @@ -5994,6 +7016,37 @@ mod wasm_imported { StructB::__SPEC_XDR_REF.const_to_xdr() } } + impl StructB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::String, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructB { #[doc(hidden)] #[inline(always)] @@ -6150,6 +7203,41 @@ mod wasm_imported { StructC::__SPEC_XDR_REF.const_to_xdr() } } + impl StructC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"f2"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructC { #[doc(hidden)] #[inline(always)] @@ -6299,6 +7387,37 @@ mod wasm_imported { StructTupleA::__SPEC_XDR_REF.const_to_xdr() } } + impl StructTupleA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructTupleA { #[doc(hidden)] #[inline(always)] @@ -6444,6 +7563,37 @@ mod wasm_imported { StructTupleB::__SPEC_XDR_REF.const_to_xdr() } } + impl StructTupleB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleB"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructTupleB { #[doc(hidden)] #[inline(always)] @@ -6590,6 +7740,37 @@ mod wasm_imported { StructTupleC::__SPEC_XDR_REF.const_to_xdr() } } + impl StructTupleC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StructTupleC"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I128, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; StructTupleC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + StructTupleC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for StructTupleC { #[doc(hidden)] #[inline(always)] @@ -6748,6 +7929,45 @@ mod wasm_imported { EnumA::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumA { #[doc(hidden)] #[inline(always)] @@ -6987,6 +8207,52 @@ mod wasm_imported { EnumB::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumB { #[doc(hidden)] #[inline(always)] @@ -7209,9 +8475,9 @@ mod wasm_imported { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V2"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -7222,9 +8488,9 @@ mod wasm_imported { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"V3"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructTupleA"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -7236,6 +8502,55 @@ mod wasm_imported { EnumC::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumC { #[doc(hidden)] #[inline(always)] @@ -7243,7 +8558,7 @@ mod wasm_imported { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xa0\xdd\x8f\xdc\xc9W\xbe\xc2"; + static MARKER: [u8; 14usize] = *b"SpEcV1w\x03I,\x93\xbbC\xeb"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -7435,6 +8750,42 @@ mod wasm_imported { EnumIntA::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumIntA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 3u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumIntA { #[doc(hidden)] #[inline(always)] @@ -7581,6 +8932,42 @@ mod wasm_imported { EnumIntB::__SPEC_XDR_REF.const_to_xdr() } } + impl EnumIntB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 20u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 30u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for EnumIntB { #[doc(hidden)] #[inline(always)] @@ -7696,11 +9083,39 @@ mod wasm_imported { ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) } } - #[link_section = "contractspecv0"] - pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_REF.const_xdr_len()] = - EnumIntC::spec_xdr(); + #[link_section = "contractspecv0"] + pub static __SPEC_XDR_TYPE_ENUMINTC: [u8; EnumIntC::__SPEC_XDR_REF.const_xdr_len()] = + EnumIntC::spec_xdr(); + impl EnumIntC { + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"EnumIntC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V2"), + value: 200u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"V3"), + value: 300u32, + }, + ]), + }); + pub const fn spec_xdr() -> [u8; EnumIntC::__SPEC_XDR_REF.const_xdr_len()] { + EnumIntC::__SPEC_XDR_REF.const_to_xdr() + } + } impl EnumIntC { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), lib: soroban_sdk::xdr::StringMRef::new(b""), @@ -7723,8 +9138,16 @@ mod wasm_imported { }, ]), }); - pub const fn spec_xdr() -> [u8; EnumIntC::__SPEC_XDR_REF.const_xdr_len()] { - EnumIntC::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; EnumIntC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + EnumIntC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for EnumIntC { @@ -7875,6 +9298,44 @@ mod wasm_imported { ErrorA::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorA { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorA"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 2u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 3u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorA::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorA::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorA { #[doc(hidden)] #[inline(always)] @@ -8093,6 +9554,44 @@ mod wasm_imported { ErrorB::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorB { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorB"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 11u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 12u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorB::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorB::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorB { #[doc(hidden)] #[inline(always)] @@ -8311,6 +9810,44 @@ mod wasm_imported { ErrorC::__SPEC_XDR_REF.const_to_xdr() } } + impl ErrorC { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ErrorC"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E1"), + value: 100u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E2"), + value: 101u32, + }, + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"E3"), + value: 102u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ErrorC::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ErrorC::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ErrorC { #[doc(hidden)] #[inline(always)] @@ -9046,6 +10583,32 @@ impl UnusedStruct { UnusedStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedStruct { #[doc(hidden)] #[inline(always)] @@ -9182,6 +10745,42 @@ impl UnusedEnum { UnusedEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::I64, + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedEnum { #[doc(hidden)] #[inline(always)] @@ -9337,6 +10936,37 @@ impl UnusedIntEnum { UnusedIntEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedIntEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedIntEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U1"), + value: 1u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"U2"), + value: 2u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedIntEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedIntEnum { #[doc(hidden)] #[inline(always)] @@ -9559,6 +11189,34 @@ impl UnusedPubError { UnusedPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Nope"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedPubError { #[doc(hidden)] #[inline(always)] @@ -9736,6 +11394,32 @@ impl UnusedNonContractFnParam { UnusedNonContractFnParam::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnParam { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnParam"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnParam::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnParam { #[doc(hidden)] #[inline(always)] @@ -9857,6 +11541,32 @@ impl UnusedNonContractFnReturn { UnusedNonContractFnReturn::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonContractFnReturn { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonContractFnReturn"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonContractFnReturn::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonContractFnReturn { #[doc(hidden)] #[inline(always)] @@ -9972,6 +11682,32 @@ impl UnusedNonPubStruct { UnusedNonPubStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonPubStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"x"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::U32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonPubStruct { #[doc(hidden)] #[inline(always)] @@ -10087,6 +11823,34 @@ impl UnusedNonPubError { UnusedNonPubError::__SPEC_XDR_REF.const_to_xdr() } } +impl UnusedNonPubError { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtErrorEnumV0( + soroban_sdk::xdr::ScSpecUdtErrorEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UnusedNonPubError"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtErrorEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Bad"), + value: 1u32, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UnusedNonPubError::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UnusedNonPubError { #[doc(hidden)] #[inline(always)] @@ -10337,18 +12101,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"ie"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedParamIntEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10378,9 +12142,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"with_return")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedReturnEnum"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); @@ -10410,9 +12174,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10541,9 +12305,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElement"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10580,9 +12344,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"v"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedVecElementNested"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10617,14 +12381,14 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"m"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { - key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapKey"), + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedMapVal"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10658,9 +12422,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"o"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedOptionElement"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10693,14 +12457,14 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { - ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedResultOk"), + ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedErrorEnum"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10733,9 +12497,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"r"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedRecursiveRoot"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -10771,9 +12535,9 @@ impl Contract { name: soroban_sdk::xdr::StringMRef::new(b"c"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Context"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -10809,9 +12573,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"i"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -10845,9 +12609,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"e"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -11020,9 +12784,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructC"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -11056,9 +12820,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"StructA"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -11089,9 +12853,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -11126,9 +12890,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedNonPubError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -11162,9 +12926,9 @@ impl Contract { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -11203,9 +12967,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Tuple( &soroban_sdk::xdr::ScSpecTypeTupleRef { value_types: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedTupleReturnElement"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), soroban_sdk::xdr::ScSpecTypeDefRef::U32, @@ -11241,9 +13005,9 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"s"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseStruct"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), @@ -11278,9 +13042,9 @@ impl Contract { outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Result( &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UsedExportFalseError"), + error_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_tuples_tests.rs b/tests-expanded/test_tuples_tests.rs index a4cbded7f..d85e5e5f1 100644 --- a/tests-expanded/test_tuples_tests.rs +++ b/tests-expanded/test_tuples_tests.rs @@ -705,7 +705,7 @@ mod test { use crate::{Contract, ContractClient}; use soroban_sdk::Env; mod wasm { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xdf\x16\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01\x1f\x05`\x01~\x01~`\x02~~\x01~`\x03~~~\x01~`\x03~\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02\x19\x04\x01i\x012\x00\x00\x01i\x011\x00\x00\x01v\x01g\x00\x01\x01v\x01h\x00\x02\x03\x06\x05\x00\x03\x04\x00\x00\x05\x03\x01\x00\x10\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x7f\x00A\x80\x80\xc0\x00\x0b\x07E\x07\x06memory\x02\x00\x06tuple1\x00\x04\x06tuple2\x00\x07\x07void_fn\x00\x08\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\n\xc8\x03\x05x\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00 \x01B\x027\x03\x08 \x00 \x01A\x08jA\x01\x10\x85\x80\x80\x80\x00 \x01)\x03\x08\"\x00B\xff\x01\x83B\x04Q\r\x01\x0b\x00\x0b \x01 \x00B\x84\x80\x80\x80p\x837\x03\x08 \x01A\x08jA\x01\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x1d\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x1a\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x82\x80\x80\x80\x00\x0b\xff\x01\x02\x02\x7f\x01~#\x80\x80\x80\x80\x00A\x10k\"\x01$\x80\x80\x80\x80\x00\x02@\x02@\x02@ \x00B\xff\x01\x83B\xcb\x00R\r\x00A\x00!\x02\x02@\x03@ \x02A\x10F\r\x01 \x01 \x02jB\x027\x03\x00 \x02A\x08j!\x02\x0c\x00\x0b\x0b \x00 \x01A\x02\x10\x85\x80\x80\x80\x00 \x01)\x03\x00\"\x03B\xff\x01\x83B\x04R\r\x00 \x01)\x03\x08\"\x00\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x01 \x02A\x07G\r\x00 \x00B\x08\x87!\x00\x0c\x02\x0b\x00\x0b \x00\x10\x80\x80\x80\x80\x00!\x00\x0b\x02@\x02@ \x00B\x80\x80\x80\x80\x80\x80\x80\xc0\x00|B\xff\xff\xff\xff\xff\xff\xff\xff\x00V\r\x00 \x00B\x08\x86B\x07\x84!\x00\x0c\x01\x0b \x00\x10\x81\x80\x80\x80\x00!\x00\x0b \x01 \x007\x03\x08 \x01 \x03B\x84\x80\x80\x80p\x837\x03\x00 \x01A\x02\x10\x86\x80\x80\x80\x00!\x00 \x01A\x10j$\x80\x80\x80\x80\x00 \x00\x0b\x13\x00\x02@ \x00B\xff\x01\x83B\x02Q\r\x00\x00\x0bB\x02\x0b\x0b\t\x01\x00A\x80\x80\xc0\x00\x0b\x00\x00\xff\x14\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple1\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06tuple2\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x03arg\x00\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x03\xed\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07void_fn\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x08void_arg\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn tuple1(env: soroban_sdk::Env, arg: (u32,)) -> (u32,); fn tuple2(env: soroban_sdk::Env, arg: (u32, i64)) -> (u32, i64); @@ -1214,6 +1214,48 @@ mod test { ContractContext::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"contract"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fn_name"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractContext { #[doc(hidden)] #[inline(always)] @@ -1760,9 +1802,9 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"context"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1771,11 +1813,9 @@ mod test { name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"InvokerContractAuthEntry", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1788,6 +1828,47 @@ mod test { SubContractInvocation::__SPEC_XDR_REF.const_to_xdr() } } + impl SubContractInvocation { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"SubContractInvocation"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"context"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for SubContractInvocation { #[doc(hidden)] #[inline(always)] @@ -2272,11 +2353,9 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2295,6 +2374,44 @@ mod test { CreateContractHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFnContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractHostFnContext { #[doc(hidden)] #[inline(always)] @@ -2822,11 +2939,9 @@ mod test { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2846,6 +2961,57 @@ mod test { CreateContractWithConstructorHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractWithConstructorHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithConstructorHostFnContext", + ), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"constructor_args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractWithConstructorHostFnContext { #[doc(hidden)] #[inline(always)] @@ -3477,7 +3643,58 @@ mod test { pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_REF.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Context"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { + Context::__SPEC_XDR_REF.const_to_xdr() + } + } + impl Context { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -3489,12 +3706,8 @@ mod test { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3506,12 +3719,8 @@ mod test { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3523,12 +3732,8 @@ mod test { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -3536,8 +3741,16 @@ mod test { ]), }, ); - pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { - Context::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Context::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Context::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for Context { @@ -4233,6 +4446,40 @@ mod test { ContractExecutable::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractExecutable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractExecutable { #[doc(hidden)] #[inline(always)] @@ -4774,7 +5021,59 @@ mod test { InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] + { + InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + } + } + impl InvokerContractAuthEntry { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -4786,12 +5085,8 @@ mod test { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"SubContractInvocation", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4803,12 +5098,8 @@ mod test { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4820,12 +5111,8 @@ mod test { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -4833,9 +5120,16 @@ mod test { ]), }, ); - pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] - { - InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for InvokerContractAuthEntry { @@ -5605,6 +5899,52 @@ mod test { Executable::__SPEC_XDR_REF.const_to_xdr() } } + impl Executable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StellarAsset"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Account"), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Executable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Executable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Executable { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_udt_tests.rs b/tests-expanded/test_udt_tests.rs index 3c4455837..30e4c2c9d 100644 --- a/tests-expanded/test_udt_tests.rs +++ b/tests-expanded/test_udt_tests.rs @@ -74,6 +74,37 @@ impl UdtEnum2 { UdtEnum2::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtEnum2 { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum2"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 15u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtEnum2 { #[doc(hidden)] #[inline(always)] @@ -437,9 +468,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtStruct"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -450,9 +481,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum2"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -463,9 +494,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtTuple"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -477,6 +508,66 @@ impl UdtEnum { UdtEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtA"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtEnum { #[doc(hidden)] #[inline(always)] @@ -1115,6 +1206,41 @@ impl UdtTuple { UdtTuple::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtTuple { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtTuple"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtTuple::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtTuple::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtTuple { #[doc(hidden)] #[inline(always)] @@ -1536,6 +1662,46 @@ impl UdtStruct { UdtStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"c"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtStruct { #[doc(hidden)] #[inline(always)] @@ -2023,9 +2189,9 @@ impl UdtRecursive { name: soroban_sdk::xdr::StringMRef::new(b"b"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2037,6 +2203,43 @@ impl UdtRecursive { UdtRecursive::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtRecursive { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtRecursive { #[doc(hidden)] #[inline(always)] @@ -2476,9 +2679,9 @@ impl RecursiveToEnum { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -2490,6 +2693,44 @@ impl RecursiveToEnum { RecursiveToEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl RecursiveToEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveToEnum"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( + &soroban_sdk::xdr::ScSpecTypeMapRef { + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for RecursiveToEnum { #[doc(hidden)] #[inline(always)] @@ -2943,9 +3184,9 @@ impl RecursiveEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveToEnum"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -2957,6 +3198,44 @@ impl RecursiveEnum { RecursiveEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl RecursiveEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for RecursiveEnum { #[doc(hidden)] #[inline(always)] @@ -3570,18 +3849,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"b"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3611,17 +3890,17 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3653,9 +3932,9 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -3669,9 +3948,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -4489,7 +4768,7 @@ mod test { mod test_with_wasm { use soroban_sdk::{symbol_short, vec, Env, Map}; mod contract { - pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01N\r`\x01~\x01~`\x03~~~\x01~`\x02~~\x01~`\x04~~~~\x01~`\x02\x7f\x7f\x00`\x00\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x05~\x7f\x7f\x7f\x7f\x00`\x02\x7f~\x00`\x01\x7f\x01~`\x03\x7f\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02O\r\x01v\x013\x00\x00\x01v\x01h\x00\x01\x01i\x012\x00\x00\x01v\x011\x00\x02\x01i\x011\x00\x00\x01v\x018\x00\x00\x01m\x014\x00\x02\x01m\x011\x00\x02\x01v\x01g\x00\x02\x01b\x01j\x00\x02\x01m\x019\x00\x01\x01m\x01a\x00\x03\x01b\x01m\x00\x01\x03\x15\x14\x04\x05\x04\x06\x07\x08\t\t\t\x05\x05\x04\x02\x05\x00\n\x02\x0b\x0c\x05\x04\x05\x01p\x01\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xf0\x81\xc0\x00\x0b\x07L\x07\x06memory\x02\x00\x03add\x00\x19\trecursive\x00\x1b\x0erecursive_enum\x00\x1d\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\t\x01\x00A\x01\x0b\x03\x0e\x16\x17\n\xf1\x1d\x14\x85\x07\x04\x01\x7f\x02~\x01\x7f\x01~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\x9c\x80\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a\x02@\x02@ \x01)\x03\x00\"\x03B\xff\x01\x83B\xcb\x00Q\r\x00 \x00A\x04:\x00\x00\x0c\x01\x0b \x03\x10\x80\x80\x80\x80\x00!\x04 \x02A\x006\x02\x10 \x02 \x037\x03\x08 \x02 \x04B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00\x02@\x02@\x02@\x02@ \x02)\x03\x18\"\x03B\x02Q\r\x00 \x03\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x03\xa7A\xff\x01q\"\x01A\xca\x00F\r\x00 \x01A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x03A\xf4\x80\xc0\x80\x00A\x04\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x04\x00\x01\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04A\x00!\x05\x0c\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x03 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x03 \x03\xa7A\x01q\r\x03 \x02)\x03 !\x03A\x00!\x01\x02@\x03@ \x01A\x18F\r\x01 \x02A\x18j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03B\xff\x01\x83B\xcc\x00R\r\x03 \x03A\x98\x81\xc0\x80\x00A\x03 \x02A\x18jA\x03\x10\x92\x80\x80\x80\x00 \x02A0j \x02)\x03\x18\x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x038!\x04 \x02A0j \x02)\x03 \x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x03(\"\x06B\xff\x01\x83B\xcb\x00R\r\x03 \x02)\x038!\x03A\x01!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x02 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x02 \x03\xa7A\x01q\r\x02 \x02)\x03 \"\x03B\xff\x01\x83B\x04R\r\x02A\nA\x0fA\t \x03B \x88\xa7\"\x01A\x0fF\x1b \x01A\nF\x1b\"\x01A\tF\r\x02A\x02!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x01 \x03\xa7A\x01q\r\x01 \x02)\x03 \"\x03B\xff\x01\x83B\xcb\x00R\r\x01A\x00!\x01\x02@\x03@ \x01A\x10F\r\x01 \x02A0j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03 \x02A0j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x81\x80\x80\x80\x00\x1a \x02A\x18j \x02)\x030\x10\x93\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x01 \x02)\x038\"\x03B\xff\x01\x83B\xcb\x00R\r\x01 \x02)\x03 !\x04A\x03!\x05\x0c\x02\x0b \x00A\x04:\x00\x00\x0c\x03\x0b \x00A\x04:\x00\x00\x0c\x02\x0b\x0b \x00 \x067\x03\x18 \x00 \x037\x03\x10 \x00 \x047\x03\x08 \x00 \x01:\x00\x01 \x00 \x05:\x00\x00\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00\x0b\x02\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8c\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\x9a\x80\x80\x80\x00\x00\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x1a\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x82\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcb\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcc\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b(\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xb8\x80\xc0\x80\x00\x1a\x0bC\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x0bx\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00B\x02!\x03\x02@ \x01(\x02\x08\"\x04 \x01(\x02\x0cO\r\x00 \x02 \x01)\x03\x00 \x04\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x10\x93\x80\x80\x80\x00 \x02)\x03\x00!\x03 \x00 \x02)\x03\x087\x03\x08 \x01 \x04A\x01j6\x02\x08\x0b \x00 \x037\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xd6\x04\x04\x02\x7f\x01~\x01\x7f\x05~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00 \x02A\x10j \x02\x10\x8d\x80\x80\x80\x00\x02@\x02@\x02@ \x02-\x00\x10\"\x03A\x04F\r\x00 \x02)\x03 !\x01 \x02)\x03\x18!\x04 \x021\x00\x11!\x00 \x02A\x10j \x02A\x08j\x10\x8d\x80\x80\x80\x00 \x02-\x00\x10\"\x05A\x04F\r\x00 \x02)\x03 !\x06 \x02)\x03\x18!\x07 \x021\x00\x11!\x08B\x00!\tB\x00!\n\x02@\x02@\x02@\x02@ \x03\x0e\x04\x05\x02\x01\x00\x05\x0b \x01\x10\x80\x80\x80\x80\x00!\x00 \x02A\x006\x028 \x02 \x017\x030 \x02 \x00B \x88>\x02\x02\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@\x02@\x02@ \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x06\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x05 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x05 \x01B\xff\x01\x83B\x04R\r\x05 \x02)\x03(\"\x00 \x01B\x84\x80\x80\x80p\x83\"\x01\x10\x86\x80\x80\x80\x00B\x01R\r\x01 \x00 \x01\x10\x87\x80\x80\x80\x00\"\x00B\xff\x01\x83B\xcb\x00R\r\x05 \x00\x10\x80\x80\x80\x80\x00!\x01 \x02A\x006\x02\x10 \x02 \x007\x03\x08 \x02 \x01B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x06\x0b \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04 \x01B\xff\x01\x83B\x04R\r\x04\x0bB\x02!\x00\x0c\x02\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x02B\x00!\x00\x0c\x01\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02)\x03(!\x05 \x02)\x03 !\x03B\x01!\x00\x0b \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1a \x02A\x83\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1aB\x02!\x01\x02@ \x00B\x02Q\r\x00\x02@ \x00\xa7A\x01qE\r\x00 \x02A\x18jA\xcc\x81\xc0\x80\x00A\t\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x02 \x02)\x03 !\x00 \x02 \x057\x03 \x02 \x037\x03\x18 \x02 \x02A\x18j\x10\x9c\x80\x80\x80\x007\x03 \x02 \x007\x03\x18 \x02A\x18jA\x02\x10\x9f\x80\x80\x80\x00!\x01\x0c\x01\x0b \x02A\x18jA\xc0\x81\xc0\x80\x00A\x0c\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02 \x02)\x03 7\x03\x18 \x02A\x18jA\x01\x10\x9f\x80\x80\x80\x00!\x01\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\xd6\x01\x02\x01~\x03\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03A\x00!\x04\x03@\x02@ \x04A\tG\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x05\x02@ \x01 \x04j-\x00\x00\"\x06A\xdf\x00F\r\x00\x02@\x02@ \x06APjA\xff\x01qA\nI\r\x00 \x06A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x06A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x06AEj!\x05\x0c\x02\x0b \x06ARj!\x05\x0c\x01\x0b \x06AKj!\x05\x0b \x03B\x06\x86 \x05\xadB\xff\x01\x83\x84!\x03 \x04A\x01j!\x04\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x89\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x00\x0b\x03\x00\x00\x0b\x0b\xf2\x01\x01\x00A\x80\x80\xc0\x00\x0b\xe8\x01SpEcV1\xf3\xb0\xab@i\rH\xb4SpEcV1\xaf\xf7\x93\xba\x9eM\xde\x9aSpEcV1\xeb\x9f\x12&\x9av(*SpEcV1\x16\'d8\xff\xc9\xb1\xf8SpEcV1\xc8\x12\x91\xfe\xd7\x13\xf5\x9cSpEcV1\xff{V \xab\r\xdcdSpEcV1\xe1oU\xdb\xd47\x98\x14UdtAUdtBUdtCUdtD\x00\x00b\x00\x10\x00\x04\x00\x00\x00f\x00\x10\x00\x04\x00\x00\x00j\x00\x10\x00\x04\x00\x00\x00n\x00\x10\x00\x04\x00\x00\x00abc\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00\x96\x00\x10\x00\x01\x00\x00\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xc0\x00\x10\x00\x0c\x00\x00\x00\xcc\x00\x10\x00\t\x00\x00\x00\x00\xdb\x1c\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04UdtA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtB\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\tUdtStruct\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtC\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UdtEnum2\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtD\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x08UdtTuple\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtEnum2\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtTuple\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tUdtStruct\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\trecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x01\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fRecursiveToEnum\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fRecursiveToEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xec\x00\x00\x00\x04\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0erecursive_enum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03key\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x03\xe8\x00\x00\x07\xd0\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd0\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd0\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd0\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd0\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; + pub const WASM: &[u8] = b"\x00asm\x01\x00\x00\x00\x01N\r`\x01~\x01~`\x03~~~\x01~`\x02~~\x01~`\x04~~~~\x01~`\x02\x7f\x7f\x00`\x00\x00`\x03~\x7f\x7f\x01~`\x02\x7f\x7f\x01\x7f`\x05~\x7f\x7f\x7f\x7f\x00`\x02\x7f~\x00`\x01\x7f\x01~`\x03\x7f\x7f\x7f\x00`\x02\x7f\x7f\x01~\x02O\r\x01v\x013\x00\x00\x01v\x01h\x00\x01\x01i\x012\x00\x00\x01v\x011\x00\x02\x01i\x011\x00\x00\x01v\x018\x00\x00\x01m\x014\x00\x02\x01m\x011\x00\x02\x01v\x01g\x00\x02\x01b\x01j\x00\x02\x01m\x019\x00\x01\x01m\x01a\x00\x03\x01b\x01m\x00\x01\x03\x15\x14\x04\x05\x04\x06\x07\x08\t\t\t\x05\x05\x04\x02\x05\x00\n\x02\x0b\x0c\x05\x04\x05\x01p\x01\x04\x04\x05\x03\x01\x00\x11\x06!\x04\x7f\x01A\x80\x80\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xe8\x81\xc0\x00\x0b\x7f\x00A\xf0\x81\xc0\x00\x0b\x07L\x07\x06memory\x02\x00\x03add\x00\x19\trecursive\x00\x1b\x0erecursive_enum\x00\x1d\x01_\x03\x01\n__data_end\x03\x02\x0b__heap_base\x03\x03\t\t\x01\x00A\x01\x0b\x03\x0e\x16\x17\n\xf1\x1d\x14\x85\x07\x04\x01\x7f\x02~\x01\x7f\x01~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xaa\x80\xc0\x80\x00\x1aA\x00-\x00\x8e\x80\xc0\x80\x00\x1a \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\x9c\x80\xc0\x80\x00\x1aA\x00-\x00\x80\x80\xc0\x80\x00\x1a\x02@\x02@ \x01)\x03\x00\"\x03B\xff\x01\x83B\xcb\x00Q\r\x00 \x00A\x04:\x00\x00\x0c\x01\x0b \x03\x10\x80\x80\x80\x80\x00!\x04 \x02A\x006\x02\x10 \x02 \x037\x03\x08 \x02 \x04B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00\x02@\x02@\x02@\x02@ \x02)\x03\x18\"\x03B\x02Q\r\x00 \x03\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x03\xa7A\xff\x01q\"\x01A\xca\x00F\r\x00 \x01A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@ \x03A\xf4\x80\xc0\x80\x00A\x04\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x04\x00\x01\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04A\x00!\x05\x0c\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x03 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x03 \x03\xa7A\x01q\r\x03 \x02)\x03 !\x03A\x00!\x01\x02@\x03@ \x01A\x18F\r\x01 \x02A\x18j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03B\xff\x01\x83B\xcc\x00R\r\x03 \x03A\x98\x81\xc0\x80\x00A\x03 \x02A\x18jA\x03\x10\x92\x80\x80\x80\x00 \x02A0j \x02)\x03\x18\x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x038!\x04 \x02A0j \x02)\x03 \x10\x93\x80\x80\x80\x00 \x02(\x020\r\x03 \x02)\x03(\"\x06B\xff\x01\x83B\xcb\x00R\r\x03 \x02)\x038!\x03A\x01!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x02 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x02 \x03\xa7A\x01q\r\x02 \x02)\x03 \"\x03B\xff\x01\x83B\x04R\r\x02A\nA\x0fA\t \x03B \x88\xa7\"\x01A\x0fF\x1b \x01A\nF\x1b\"\x01A\tF\r\x02A\x02!\x05\x0c\x04\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x03B\x02Q\r\x01 \x03\xa7A\x01q\r\x01 \x02)\x03 \"\x03B\xff\x01\x83B\xcb\x00R\r\x01A\x00!\x01\x02@\x03@ \x01A\x10F\r\x01 \x02A0j \x01jB\x027\x03\x00 \x01A\x08j!\x01\x0c\x00\x0b\x0b \x03 \x02A0j\xadB \x86B\x04\x84B\x84\x80\x80\x80 \x10\x81\x80\x80\x80\x00\x1a \x02A\x18j \x02)\x030\x10\x93\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x01 \x02)\x038\"\x03B\xff\x01\x83B\xcb\x00R\r\x01 \x02)\x03 !\x04A\x03!\x05\x0c\x02\x0b \x00A\x04:\x00\x00\x0c\x03\x0b \x00A\x04:\x00\x00\x0c\x02\x0b\x0b \x00 \x067\x03\x18 \x00 \x037\x03\x10 \x00 \x047\x03\x08 \x00 \x01:\x00\x01 \x00 \x05:\x00\x00\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00\x0b\x02\x00\x0bJ\x02\x01~\x01\x7fB\x02!\x02\x02@ \x01(\x02\x08\"\x03 \x01(\x02\x0cO\r\x00 \x00 \x01)\x03\x00 \x03\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x007\x03\x08 \x01 \x03A\x01j6\x02\x08B\x00!\x02\x0b \x00 \x027\x03\x00\x0b\x1c\x00 \x00 \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8c\x80\x80\x80\x00\x0b\x19\x00\x02@ \x01 \x00I\r\x00 \x01 \x00k\x0f\x0b\x10\x9a\x80\x80\x80\x00\x00\x0b1\x00\x02@ \x02 \x04F\r\x00\x00\x0b \x00 \x01\xadB \x86B\x04\x84 \x03\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x8b\x80\x80\x80\x00\x1a\x0b]\x02\x01\x7f\x01~\x02@\x02@ \x01\xa7A\xff\x01q\"\x02A\xc1\x00F\r\x00\x02@ \x02A\x07F\r\x00B\x01!\x03B\x83\x90\x80\x80\x80\x01!\x01\x0c\x02\x0b \x01B\x08\x87!\x01B\x00!\x03\x0c\x01\x0bB\x00!\x03 \x01\x10\x82\x80\x80\x80\x00!\x01\x0b \x00 \x037\x03\x00 \x00 \x017\x03\x08\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcb\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xb5\x01\x02\x02\x7f\x02~#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00A\x00!\x03\x02@\x03@ \x03A\x10F\r\x01 \x02 \x03jB\x027\x03\x00 \x03A\x08j!\x03\x0c\x00\x0b\x0bB\x01!\x04\x02@ \x01B\xff\x01\x83B\xcc\x00R\r\x00 \x01A\xb0\x81\xc0\x80\x00A\x02 \x02A\x02\x10\x92\x80\x80\x80\x00\x02@ \x02)\x03\x00\"\x01\xa7A\xff\x01q\"\x03A\xca\x00F\r\x00 \x03A\x0eG\r\x01\x0b \x02)\x03\x08\"\x05B\xff\x01\x83B\xcc\x00R\r\x00 \x00 \x057\x03\x10 \x00 \x017\x03\x08B\x00!\x04\x0b \x00 \x047\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b(\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x82\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1aA\x00-\x00\xb8\x80\xc0\x80\x00\x1a\x0bC\x01\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x00A\x81\x80\x80\x80\x006\x02\x0c \x00(\x02\x0c\x1a \x00A\x83\x80\x80\x80\x006\x02\x08 \x00(\x02\x08\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1a\x0bx\x03\x01\x7f\x01~\x01\x7f#\x80\x80\x80\x80\x00A\x10k\"\x02$\x80\x80\x80\x80\x00B\x02!\x03\x02@ \x01(\x02\x08\"\x04 \x01(\x02\x0cO\r\x00 \x02 \x01)\x03\x00 \x04\xadB \x86B\x04\x84\x10\x83\x80\x80\x80\x00\x10\x93\x80\x80\x80\x00 \x02)\x03\x00!\x03 \x00 \x02)\x03\x087\x03\x08 \x01 \x04A\x01j6\x02\x08\x0b \x00 \x037\x03\x00 \x02A\x10j$\x80\x80\x80\x80\x00\x0b\xd6\x04\x04\x02\x7f\x01~\x01\x7f\x05~#\x80\x80\x80\x80\x00A\xc0\x00k\"\x02$\x80\x80\x80\x80\x00 \x02 \x017\x03\x08 \x02 \x007\x03\x00 \x02A\x10j \x02\x10\x8d\x80\x80\x80\x00\x02@\x02@\x02@ \x02-\x00\x10\"\x03A\x04F\r\x00 \x02)\x03 !\x01 \x02)\x03\x18!\x04 \x021\x00\x11!\x00 \x02A\x10j \x02A\x08j\x10\x8d\x80\x80\x80\x00 \x02-\x00\x10\"\x05A\x04F\r\x00 \x02)\x03 !\x06 \x02)\x03\x18!\x07 \x021\x00\x11!\x08B\x00!\tB\x00!\n\x02@\x02@\x02@\x02@ \x03\x0e\x04\x05\x02\x01\x00\x05\x0b \x01\x10\x80\x80\x80\x80\x00!\x00 \x02A\x006\x028 \x02 \x017\x030 \x02 \x00B \x88>\x02\x02\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x00 \x00\xa7A\x01q\r\x00\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x01\x0b\x02@\x02@\x02@\x02@\x02@\x02@ \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x01\x00\x06\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x05 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18A\x01F\r\x05 \x01B\xff\x01\x83B\x04R\r\x05 \x02)\x03(\"\x00 \x01B\x84\x80\x80\x80p\x83\"\x01\x10\x86\x80\x80\x80\x00B\x01R\r\x01 \x00 \x01\x10\x87\x80\x80\x80\x00\"\x00B\xff\x01\x83B\xcb\x00R\r\x05 \x00\x10\x80\x80\x80\x80\x00!\x01 \x02A\x006\x02\x10 \x02 \x007\x03\x08 \x02 \x01B \x88>\x02\x14 \x02A\x18j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x03\x18\"\x00B\x02Q\r\x05 \x00\xa7A\x01q\r\x05\x02@ \x02)\x03 \"\x00\xa7A\xff\x01q\"\x04A\xca\x00F\r\x00 \x04A\x0eG\r\x06\x0b \x00A\xd8\x81\xc0\x80\x00A\x02\x10\x90\x80\x80\x80\x00B \x88\xa7\x0e\x02\x02\x03\x05\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x04 \x01B\xff\x01\x83B\x04R\r\x04\x0bB\x02!\x00\x0c\x02\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00\r\x02B\x00!\x00\x0c\x01\x0b \x02(\x02\x10 \x02(\x02\x14\x10\x91\x80\x80\x80\x00A\x01K\r\x01 \x02A0j \x02A\x08j\x10\x8f\x80\x80\x80\x00 \x02)\x030\"\x00B\x02Q\r\x01 \x00\xa7A\x01q\r\x01 \x02A\x18j \x02)\x038\x10\x95\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02)\x03(!\x05 \x02)\x03 !\x03B\x01!\x00\x0b \x02A\x81\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1a \x02A\x83\x80\x80\x80\x006\x02\x18 \x02(\x02\x18\x1aA\x00-\x00\xd4\x80\xc0\x80\x00\x1aA\x00-\x00\xc6\x80\xc0\x80\x00\x1aB\x02!\x01\x02@ \x00B\x02Q\r\x00\x02@ \x00\xa7A\x01qE\r\x00 \x02A\x18jA\xcc\x81\xc0\x80\x00A\t\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x02 \x02)\x03 !\x00 \x02 \x057\x03 \x02 \x037\x03\x18 \x02 \x02A\x18j\x10\x9c\x80\x80\x80\x007\x03 \x02 \x007\x03\x18 \x02A\x18jA\x02\x10\x9f\x80\x80\x80\x00!\x01\x0c\x01\x0b \x02A\x18jA\xc0\x81\xc0\x80\x00A\x0c\x10\x9e\x80\x80\x80\x00 \x02(\x02\x18\r\x01 \x02 \x02)\x03 7\x03\x18 \x02A\x18jA\x01\x10\x9f\x80\x80\x80\x00!\x01\x0b \x02A\xc0\x00j$\x80\x80\x80\x80\x00 \x01\x0f\x0b\x00\x0b\xd6\x01\x02\x01~\x03\x7f\x02@\x02@ \x02A\tK\r\x00B\x00!\x03A\x00!\x04\x03@\x02@ \x04A\tG\r\x00 \x03B\x08\x86B\x0e\x84!\x03\x0c\x03\x0bA\x01!\x05\x02@ \x01 \x04j-\x00\x00\"\x06A\xdf\x00F\r\x00\x02@\x02@ \x06APjA\xff\x01qA\nI\r\x00 \x06A\xbf\x7fjA\xff\x01qA\x1aI\r\x01 \x06A\x9f\x7fjA\xff\x01qA\x1aO\r\x04 \x06AEj!\x05\x0c\x02\x0b \x06ARj!\x05\x0c\x01\x0b \x06AKj!\x05\x0b \x03B\x06\x86 \x05\xadB\xff\x01\x83\x84!\x03 \x04A\x01j!\x04\x0c\x00\x0b\x0b \x01\xadB \x86B\x04\x84 \x02\xadB \x86B\x04\x84\x10\x89\x80\x80\x80\x00!\x03\x0b \x00B\x007\x03\x00 \x00 \x037\x03\x08\x0b\x1a\x00 \x00\xadB \x86B\x04\x84 \x01\xadB \x86B\x04\x84\x10\x88\x80\x80\x80\x00\x0b\x03\x00\x00\x0b\x0b\xf2\x01\x01\x00A\x80\x80\xc0\x00\x0b\xe8\x01SpEcV16\xc1\xe9J;\xca\xdb\x9eSpEcV1\xaf\xf7\x93\xba\x9eM\xde\x9aSpEcV1\xeb\x9f\x12&\x9av(*SpEcV1\x16\'d8\xff\xc9\xb1\xf8SpEcV1\x80\x08\x81O\x9a\x159\x1aSpEcV1W,\x11\xe8!z\xa8\xaaSpEcV1i\xd3Ie{\xa2q\xbaUdtAUdtBUdtCUdtD\x00\x00b\x00\x10\x00\x04\x00\x00\x00f\x00\x10\x00\x04\x00\x00\x00j\x00\x10\x00\x04\x00\x00\x00n\x00\x10\x00\x04\x00\x00\x00abc\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00\x96\x00\x10\x00\x01\x00\x00\x00\x94\x00\x10\x00\x01\x00\x00\x00\x95\x00\x10\x00\x01\x00\x00\x00NotRecursiveRecursive\x00\x00\x00\xc0\x00\x10\x00\x0c\x00\x00\x00\xcc\x00\x10\x00\t\x00\x00\x00\x00\x9b\x1a\x0econtractspecv0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03add\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd16\xc1\xe9J;\xca\xdb\x9e\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x07\xd16\xc1\xe9J;\xca\xdb\x9e\x00\x00\x00\x01\x00\x00\x00\x07\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07UdtEnum\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04UdtA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtB\x00\x00\x00\x01\x00\x00\x07\xd1\x16\'d8\xff\xc9\xb1\xf8\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtC\x00\x00\x00\x01\x00\x00\x07\xd1\xaf\xf7\x93\xba\x9eM\xde\x9a\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04UdtD\x00\x00\x00\x01\x00\x00\x07\xd1\xeb\x9f\x12&\x9av(*\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtEnum2\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01A\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x01B\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08UdtTuple\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x010\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x011\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\tUdtStruct\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01c\x00\x00\x00\x00\x00\x03\xea\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\trecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd1\x80\x08\x81O\x9a\x159\x1a\x00\x00\x00\x01\x00\x00\x03\xe8\x00\x00\x07\xd1\x80\x08\x81O\x9a\x159\x1a\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cUdtRecursive\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xea\x00\x00\x07\xd1\x80\x08\x81O\x9a\x159\x1a\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\rRecursiveEnum\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cNotRecursive\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\tRecursive\x00\x00\x00\x00\x00\x00\x01\x00\x00\x07\xd1i\xd3Ie{\xa2q\xba\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fRecursiveToEnum\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x01b\x00\x00\x00\x00\x00\x03\xec\x00\x00\x00\x04\x00\x00\x07\xd1W,\x11\xe8!z\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0erecursive_enum\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x01a\x00\x00\x00\x00\x00\x07\xd1W,\x11\xe8!z\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x03key\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x03\xe9\x00\x00\x03\xe8\x00\x00\x07\xd1W,\x11\xe8!z\xa8\xaa\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\xe3Context of a single authorized call performed by an address.\n\nCustom account contracts that implement `__check_auth` special function\nreceive a list of `Context` values corresponding to all the calls that\nneed to be authorized.\x00\x00\x00\x00\x00\x00\x00\x00\x07Context\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x14Contract invocation.\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x01\x00\x00\x00=Contract that has a constructor with no arguments is created.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00DContract that has a constructor with 1 or more arguments is created.\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00\xbdAuthorization context of a single contract call.\n\nThis struct corresponds to a `require_auth_for_args` call for an address\nfrom `contract` function with `fn_name` name and `args` arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0fContractContext\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08contract\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x07fn_name\x00\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00_Contract executable used for creating a new contract and used in\n`CreateContractHostFnContext`.\x00\x00\x00\x00\x00\x00\x00\x00\x12ContractExecutable\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x008Value of contract node in InvokerContractAuthEntry tree.\x00\x00\x00\x00\x00\x00\x00\x15SubContractInvocation\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x07context\x00\x00\x00\x07\xd1\xf1\xf9\x90\x07E*e\xfd\x00\x00\x00\x00\x00\x00\x00\x0fsub_invocations\x00\x00\x00\x03\xea\x00\x00\x07\xd1|t\x84\\\xe9\x99\xb5W\x00\x00\x00\x02\x00\x00\x01/A node in the tree of authorizations performed on behalf of the current\ncontract as invoker of the contracts deeper in the call stack.\n\nThis is used as an argument of `authorize_as_current_contract` host function.\n\nThis tree corresponds `require_auth[_for_args]` calls on behalf of the\ncurrent contract.\x00\x00\x00\x00\x00\x00\x00\x00\x18InvokerContractAuthEntry\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x12Invoke a contract.\x00\x00\x00\x00\x00\x08Contract\x00\x00\x00\x01\x00\x00\x07\xd1\xbf\xa7\xd1\xa5Lh\x8e\xb2\x00\x00\x00\x01\x00\x00\x005Create a contract passing 0 arguments to constructor.\x00\x00\x00\x00\x00\x00\x14CreateContractHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\x85A+\'\x04\xb5z\x18\x00\x00\x00\x01\x00\x00\x00=Create a contract passing 0 or more arguments to constructor.\x00\x00\x00\x00\x00\x00\x1cCreateContractWithCtorHostFn\x00\x00\x00\x01\x00\x00\x07\xd1\xfb\x0e[\xb2\xb0\xab\xd7\xfe\x00\x00\x00\x01\x00\x00\x00vAuthorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1bCreateContractHostFnContext\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\xd6Authorization context for `create_contract` host function that creates a\nnew contract on behalf of authorizer address.\nThis is the same as `CreateContractHostFnContext`, but also has\ncontract constructor arguments.\x00\x00\x00\x00\x00\x00\x00\x00\x00*CreateContractWithConstructorHostFnContext\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x10constructor_args\x00\x00\x03\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nexecutable\x00\x00\x00\x00\x07\xd1\xb6\xb1Hy\xda\xca\xaf\xcc\x00\x00\x00\x00\x00\x00\x00\x04salt\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\nExecutable\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04Wasm\x00\x00\x00\x01\x00\x00\x03\xee\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0cStellarAsset\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07Account\x00\x00\x1e\x11contractenvmetav0\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00O\x0econtractmetav0\x00\x00\x00\x00\x00\x00\x00\x05rsver\x00\x00\x00\x00\x00\x00\x061.91.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12rssdk_spec_shaking\x00\x00\x00\x00\x00\x012\x00\x00\x00"; pub trait Contract { fn add(env: soroban_sdk::Env, a: UdtEnum, b: UdtEnum) -> i64; fn recursive(env: soroban_sdk::Env, a: UdtRecursive) -> Option; @@ -4976,6 +5255,43 @@ mod test_with_wasm { UdtTuple::__SPEC_XDR_REF.const_to_xdr() } } + impl UdtTuple { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtTuple"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtTuple::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtTuple::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UdtTuple { #[doc(hidden)] #[inline(always)] @@ -5444,9 +5760,51 @@ mod test_with_wasm { UdtStruct::__SPEC_XDR_REF.const_to_xdr() } } - impl soroban_sdk::SpecShakingMarker for UdtStruct { + impl UdtStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"c"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }, + ); #[doc(hidden)] - #[inline(always)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } + impl soroban_sdk::SpecShakingMarker for UdtStruct { + #[doc(hidden)] + #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); ::spec_shaking_marker(); @@ -5969,11 +6327,9 @@ mod test_with_wasm { name: soroban_sdk::xdr::StringMRef::new(b"b"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UdtRecursive", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -5986,6 +6342,45 @@ mod test_with_wasm { UdtRecursive::__SPEC_XDR_REF.const_to_xdr() } } + impl UdtRecursive { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UdtRecursive { #[doc(hidden)] #[inline(always)] @@ -6461,11 +6856,9 @@ mod test_with_wasm { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"RecursiveEnum", - ), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -6478,6 +6871,46 @@ mod test_with_wasm { RecursiveToEnum::__SPEC_XDR_REF.const_to_xdr() } } + impl RecursiveToEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveToEnum"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( + &soroban_sdk::xdr::ScSpecTypeMapRef { + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for RecursiveToEnum { #[doc(hidden)] #[inline(always)] @@ -6992,6 +7425,48 @@ mod test_with_wasm { ContractContext::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"contract"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Address, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"fn_name"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractContext::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractContext { #[doc(hidden)] #[inline(always)] @@ -7538,9 +8013,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"context"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"ContractContext"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -7549,11 +8024,9 @@ mod test_with_wasm { name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"InvokerContractAuthEntry", - ), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -7566,6 +8039,47 @@ mod test_with_wasm { SubContractInvocation::__SPEC_XDR_REF.const_to_xdr() } } + impl SubContractInvocation { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"SubContractInvocation"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"context"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"sub_invocations"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + SubContractInvocation::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for SubContractInvocation { #[doc(hidden)] #[inline(always)] @@ -8050,11 +8564,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -8073,6 +8585,44 @@ mod test_with_wasm { CreateContractHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"CreateContractHostFnContext"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractHostFnContext::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractHostFnContext { #[doc(hidden)] #[inline(always)] @@ -8600,11 +9150,9 @@ mod test_with_wasm { soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"executable"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractExecutable", - ), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -8624,6 +9172,57 @@ mod test_with_wasm { CreateContractWithConstructorHostFnContext::__SPEC_XDR_REF.const_to_xdr() } } + impl CreateContractWithConstructorHostFnContext { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0( + soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithConstructorHostFnContext", + ), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"constructor_args"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Val, + }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"executable"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"salt"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + }, + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_xdr_len()] = + CreateContractWithConstructorHostFnContext::__SPEC_XDR_CANONICAL_REF + .const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for CreateContractWithConstructorHostFnContext { #[doc(hidden)] #[inline(always)] @@ -9250,11 +9849,9 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UdtStruct", - ), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -9265,11 +9862,9 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UdtEnum2", - ), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -9280,11 +9875,9 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"UdtTuple", - ), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -9297,6 +9890,68 @@ mod test_with_wasm { UdtEnum::__SPEC_XDR_REF.const_to_xdr() } } + impl UdtEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtA"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UdtEnum { #[doc(hidden)] #[inline(always)] @@ -10002,11 +10657,9 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"RecursiveToEnum", - ), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -10019,6 +10672,46 @@ mod test_with_wasm { RecursiveEnum::__SPEC_XDR_REF.const_to_xdr() } } + impl RecursiveEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for RecursiveEnum { #[doc(hidden)] #[inline(always)] @@ -10602,7 +11295,58 @@ mod test_with_wasm { pub static __SPEC_XDR_TYPE_CONTEXT: [u8; Context::__SPEC_XDR_REF.const_xdr_len()] = Context::spec_xdr(); impl Context { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Context"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { + Context::__SPEC_XDR_REF.const_to_xdr() + } + } + impl Context { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -10614,12 +11358,8 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"ContractContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -10631,12 +11371,8 @@ mod test_with_wasm { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -10648,12 +11384,8 @@ mod test_with_wasm { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -10661,8 +11393,16 @@ mod test_with_wasm { ]), }, ); - pub const fn spec_xdr() -> [u8; Context::__SPEC_XDR_REF.const_xdr_len()] { - Context::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Context::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Context::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for Context { @@ -11358,6 +12098,40 @@ mod test_with_wasm { ContractExecutable::__SPEC_XDR_REF.const_to_xdr() } } + impl ContractExecutable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"ContractExecutable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + ContractExecutable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for ContractExecutable { #[doc(hidden)] #[inline(always)] @@ -11899,7 +12673,59 @@ mod test_with_wasm { InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] = InvokerContractAuthEntry::spec_xdr(); impl InvokerContractAuthEntry { - const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + const __SPEC_XDR_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"InvokerContractAuthEntry"), + cases: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Contract"), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0(soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new( + b"CreateContractWithCtorHostFn", + ), + type_: soroban_sdk::xdr::VecMRef::new( + &[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2(soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), + }), + ], + ), + }), + ], + ), + }); + pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] + { + InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + } + } + impl InvokerContractAuthEntry { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( soroban_sdk::xdr::ScSpecUdtUnionV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), @@ -11911,12 +12737,8 @@ mod test_with_wasm { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Contract"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"SubContractInvocation", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -11928,12 +12750,8 @@ mod test_with_wasm { b"CreateContractHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -11945,12 +12763,8 @@ mod test_with_wasm { b"CreateContractWithCtorHostFn", ), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new( - b"CreateContractWithConstructorHostFnContext", - ), - }, + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, ), ]), }, @@ -11958,9 +12772,16 @@ mod test_with_wasm { ]), }, ); - pub const fn spec_xdr() -> [u8; InvokerContractAuthEntry::__SPEC_XDR_REF.const_xdr_len()] - { - InvokerContractAuthEntry::__SPEC_XDR_REF.const_to_xdr() + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + InvokerContractAuthEntry::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] } } impl soroban_sdk::SpecShakingMarker for InvokerContractAuthEntry { @@ -12730,6 +13551,52 @@ mod test_with_wasm { Executable::__SPEC_XDR_REF.const_to_xdr() } } + impl Executable { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0( + soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Executable"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Wasm"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::BytesN( + soroban_sdk::xdr::ScSpecTypeBytesN { n: 32u32 }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"StellarAsset"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Account"), + }, + ), + ]), + }, + ); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Executable::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Executable::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for Executable { #[doc(hidden)] #[inline(always)] @@ -13304,6 +14171,37 @@ mod test_with_wasm { UdtEnum2::__SPEC_XDR_REF.const_to_xdr() } } + impl UdtEnum2 { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum2"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 15u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } + } impl soroban_sdk::SpecShakingMarker for UdtEnum2 { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_udt_wasm32v1-none.rs b/tests-expanded/test_udt_wasm32v1-none.rs index adf1211af..76db5f27f 100644 --- a/tests-expanded/test_udt_wasm32v1-none.rs +++ b/tests-expanded/test_udt_wasm32v1-none.rs @@ -75,6 +75,37 @@ impl UdtEnum2 { UdtEnum2::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtEnum2 { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtEnumV0(soroban_sdk::xdr::ScSpecUdtEnumV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum2"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"A"), + value: 10u32, + }, + soroban_sdk::xdr::ScSpecUdtEnumCaseV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"B"), + value: 15u32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum2::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtEnum2 { #[doc(hidden)] #[inline(always)] @@ -209,9 +240,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtStruct"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -222,9 +253,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum2"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -235,9 +266,9 @@ impl UdtEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtTuple"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -249,6 +280,66 @@ impl UdtEnum { UdtEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtA"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtB"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtC"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtD"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtEnum { #[doc(hidden)] #[inline(always)] @@ -257,7 +348,7 @@ impl soroban_sdk::SpecShakingMarker for UdtEnum { ::spec_shaking_marker(); ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xf3\xb0\xab@i\rH\xb4"; + static MARKER: [u8; 14usize] = *b"SpEcV16\xc1\xe9J;\xca\xdb\x9e"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -437,6 +528,41 @@ impl UdtTuple { UdtTuple::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtTuple { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtTuple"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"0"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"1"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtTuple::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtTuple::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtTuple { #[doc(hidden)] #[inline(always)] @@ -581,6 +707,46 @@ impl UdtStruct { UdtStruct::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtStruct { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtStruct"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"c"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::I64, + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtStruct::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtStruct::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtStruct { #[doc(hidden)] #[inline(always)] @@ -715,9 +881,9 @@ impl UdtRecursive { name: soroban_sdk::xdr::StringMRef::new(b"b"), type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( &soroban_sdk::xdr::ScSpecTypeVecRef { - element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -729,6 +895,43 @@ impl UdtRecursive { UdtRecursive::__SPEC_XDR_REF.const_to_xdr() } } +impl UdtRecursive { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Vec( + &soroban_sdk::xdr::ScSpecTypeVecRef { + element_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + UdtRecursive::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for UdtRecursive { #[doc(hidden)] #[inline(always)] @@ -736,7 +939,7 @@ impl soroban_sdk::SpecShakingMarker for UdtRecursive { ::spec_shaking_marker(); as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xc8\x12\x91\xfe\xd7\x13\xf5\x9c"; + static MARKER: [u8; 14usize] = *b"SpEcV1\x80\x08\x81O\x9a\x159\x1a"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -859,9 +1062,9 @@ impl RecursiveToEnum { type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( &soroban_sdk::xdr::ScSpecTypeMapRef { key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -873,6 +1076,44 @@ impl RecursiveToEnum { RecursiveToEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl RecursiveToEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveToEnum"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"a"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Symbol, + }, + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"b"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::Map( + &soroban_sdk::xdr::ScSpecTypeMapRef { + key_type: &soroban_sdk::xdr::ScSpecTypeDefRef::U32, + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + }, + ), + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveToEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for RecursiveToEnum { #[doc(hidden)] #[inline(always)] @@ -880,7 +1121,7 @@ impl soroban_sdk::SpecShakingMarker for RecursiveToEnum { ::spec_shaking_marker(); as soroban_sdk::SpecShakingMarker>::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xe1oU\xdb\xd47\x98\x14"; + static MARKER: [u8; 14usize] = *b"SpEcV1i\xd3Ie{\xa2q\xba"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1010,9 +1251,9 @@ impl RecursiveEnum { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), type_: soroban_sdk::xdr::VecMRef::new(&[ - soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveToEnum"), + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), ]), @@ -1024,13 +1265,51 @@ impl RecursiveEnum { RecursiveEnum::__SPEC_XDR_REF.const_to_xdr() } } +impl RecursiveEnum { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtUnionV0(soroban_sdk::xdr::ScSpecUdtUnionV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + cases: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::VoidV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseVoidV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"NotRecursive"), + }, + ), + soroban_sdk::xdr::ScSpecUdtUnionCaseV0Ref::TupleV0( + soroban_sdk::xdr::ScSpecUdtUnionCaseTupleV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Recursive"), + type_: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { id: [0u8; 8] }, + ), + ]), + }, + ), + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + RecursiveEnum::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for RecursiveEnum { #[doc(hidden)] #[inline(always)] fn spec_shaking_marker() { ::spec_shaking_marker(); { - static MARKER: [u8; 14usize] = *b"SpEcV1\xff{V \xab\r\xdcd"; + static MARKER: [u8; 14usize] = *b"SpEcV1W,\x11\xe8!z\xa8\xaa"; let _ = unsafe { ::core::ptr::read_volatile(MARKER.as_ptr()) }; } } @@ -1178,18 +1457,18 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"b"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1220,17 +1499,17 @@ impl Contract { inputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }]), outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"UdtRecursive"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1263,9 +1542,9 @@ impl Contract { soroban_sdk::xdr::ScSpecFunctionInputV0Ref { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::StringMRef::new(b"a"), - type_: soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, @@ -1279,9 +1558,9 @@ impl Contract { &soroban_sdk::xdr::ScSpecTypeResultRef { ok_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Option( &soroban_sdk::xdr::ScSpecTypeOptionRef { - value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"RecursiveEnum"), + value_type: &soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, ), }, diff --git a/tests-expanded/test_workspace_contract_tests.rs b/tests-expanded/test_workspace_contract_tests.rs index d9ede7582..12bf4aaa2 100644 --- a/tests-expanded/test_workspace_contract_tests.rs +++ b/tests-expanded/test_workspace_contract_tests.rs @@ -158,9 +158,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"value")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Value"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_workspace_contract_wasm32v1-none.rs b/tests-expanded/test_workspace_contract_wasm32v1-none.rs index 1d4d90cf9..559ce1bb8 100644 --- a/tests-expanded/test_workspace_contract_wasm32v1-none.rs +++ b/tests-expanded/test_workspace_contract_wasm32v1-none.rs @@ -47,9 +47,9 @@ impl Contract { doc: soroban_sdk::xdr::StringMRef::new(b""), name: soroban_sdk::xdr::ScSymbolRef(soroban_sdk::xdr::StringMRef::new(b"value")), inputs: soroban_sdk::xdr::VecMRef::new(&[]), - outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::Udt( - soroban_sdk::xdr::ScSpecTypeUdtRef { - name: soroban_sdk::xdr::StringMRef::new(b"Value"), + outputs: soroban_sdk::xdr::VecMRef::new(&[soroban_sdk::xdr::ScSpecTypeDefRef::UdtV2( + soroban_sdk::xdr::ScSpecTypeUdtv2 { + id: ::spec_type_id(), }, )]), }); diff --git a/tests-expanded/test_workspace_lib_tests.rs b/tests-expanded/test_workspace_lib_tests.rs index 64cf0088e..732f810e7 100644 --- a/tests-expanded/test_workspace_lib_tests.rs +++ b/tests-expanded/test_workspace_lib_tests.rs @@ -52,6 +52,32 @@ impl Value { Value::__SPEC_XDR_REF.const_to_xdr() } } +impl Value { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Value"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"value"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Value::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Value::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Value { #[doc(hidden)] #[inline(always)] diff --git a/tests-expanded/test_workspace_lib_wasm32v1-none.rs b/tests-expanded/test_workspace_lib_wasm32v1-none.rs index 0f7c35c7d..c7a9efe4a 100644 --- a/tests-expanded/test_workspace_lib_wasm32v1-none.rs +++ b/tests-expanded/test_workspace_lib_wasm32v1-none.rs @@ -53,6 +53,32 @@ impl Value { Value::__SPEC_XDR_REF.const_to_xdr() } } +impl Value { + const __SPEC_XDR_CANONICAL_REF: soroban_sdk::xdr::ScSpecEntryRef<'static> = + soroban_sdk::xdr::ScSpecEntryRef::UdtStructV0(soroban_sdk::xdr::ScSpecUdtStructV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + lib: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"Value"), + fields: soroban_sdk::xdr::VecMRef::new(&[ + soroban_sdk::xdr::ScSpecUdtStructFieldV0Ref { + doc: soroban_sdk::xdr::StringMRef::new(b""), + name: soroban_sdk::xdr::StringMRef::new(b"value"), + type_: soroban_sdk::xdr::ScSpecTypeDefRef::I32, + }, + ]), + }); + #[doc(hidden)] + pub const fn spec_type_id() -> [u8; 8] { + let xdr: [u8; Value::__SPEC_XDR_CANONICAL_REF.const_xdr_len()] = + Value::__SPEC_XDR_CANONICAL_REF.const_to_xdr(); + let hash = soroban_sdk::reexports_for_macros::sha2_const::Sha256::new() + .update(&xdr) + .finalize(); + [ + hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], + ] + } +} impl soroban_sdk::SpecShakingMarker for Value { #[doc(hidden)] #[inline(always)] diff --git a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json index 4cc622e37..2c4b59345 100644 --- a/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json +++ b/tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "1e6754d03ceb8f9ae201f6ffbccb5f129c6a985c78a99ad291da9e8b4256e877" + "wasm": "789c4f7e8809bc897476348615bca0fcbe8bdcb434edebfa1b3e24712b274fef" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "1e6754d03ceb8f9ae201f6ffbccb5f129c6a985c78a99ad291da9e8b4256e877" + "wasm": "789c4f7e8809bc897476348615bca0fcbe8bdcb434edebfa1b3e24712b274fef" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "1e6754d03ceb8f9ae201f6ffbccb5f129c6a985c78a99ad291da9e8b4256e877", - "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c743200df150e636f6e747261637473706563763000000000000000000000000465786563000000000000000100000010000000000000000000000005657865633200000000000000000000010000001000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "789c4f7e8809bc897476348615bca0fcbe8bdcb434edebfa1b3e24712b274fef", + "code": "0061736d0100000001110360027e7e017e6000017e60027f7f017e02070101620169000003040301020105030100110621047f01418080c0000b7f00418f80c0000b7f00418f80c0000b7f00419080c0000b073806066d656d6f72790200046578656300010565786563320003015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030a3e031000418080c0800041071082808080000b1a002000ad4220864204842001ad4220864204841080808080000b1000418780c0800041081082808080000b0b180100418080c0000b0f64656661756c7464656661756c743200ff130e636f6e747261637473706563763000000000000000000000000465786563000000000000000100000010000000000000000000000005657865633200000000000000000000010000001000000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/attributes/test_snapshots/test/test_cfg_items.1.json b/tests/attributes/test_snapshots/test/test_cfg_items.1.json index 2a570769c..cd5db3100 100644 --- a/tests/attributes/test_snapshots/test/test_cfg_items.1.json +++ b/tests/attributes/test_snapshots/test/test_cfg_items.1.json @@ -63,7 +63,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events/test_snapshots/test/test_event.1.json b/tests/events/test_snapshots/test/test_event.1.json index 6dd213725..54764485f 100644 --- a/tests/events/test_snapshots/test/test_event.1.json +++ b/tests/events/test_snapshots/test/test_event.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events/test_snapshots/test/test_event_with_option_none.1.json b/tests/events/test_snapshots/test/test_event_with_option_none.1.json index e8b11407b..c88b4302f 100644 --- a/tests/events/test_snapshots/test/test_event_with_option_none.1.json +++ b/tests/events/test_snapshots/test/test_event_with_option_none.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json b/tests/events/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json index e350f74b7..907ba9a37 100644 --- a/tests/events/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json +++ b/tests/events/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events_ref/test_snapshots/test/test_event.1.json b/tests/events_ref/test_snapshots/test/test_event.1.json index 6dd213725..54764485f 100644 --- a/tests/events_ref/test_snapshots/test/test_event.1.json +++ b/tests/events_ref/test_snapshots/test/test_event.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events_ref/test_snapshots/test/test_event_with_option_none.1.json b/tests/events_ref/test_snapshots/test/test_event_with_option_none.1.json index e8b11407b..c88b4302f 100644 --- a/tests/events_ref/test_snapshots/test/test_event_with_option_none.1.json +++ b/tests/events_ref/test_snapshots/test/test_event_with_option_none.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/events_ref/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json b/tests/events_ref/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json index e350f74b7..907ba9a37 100644 --- a/tests/events_ref/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json +++ b/tests/events_ref/test_snapshots/test/test_no_events_recorded_for_failed_call.1.json @@ -62,7 +62,7 @@ "event": { "ext": "v0", "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "type_": "contract", + "type": "contract", "body": { "v0": { "topics": [ diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json index fb835e0be..bca0d0164 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000ff140e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json index fb835e0be..bca0d0164 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000ff140e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/tuples/test_snapshots/test/test_wasm_void.1.json b/tests/tuples/test_snapshots/test/test_wasm_void.1.json index fb835e0be..bca0d0164 100644 --- a/tests/tuples/test_snapshots/test/test_wasm_void.1.json +++ b/tests/tuples/test_snapshots/test/test_wasm_void.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "constructor_args": [] } @@ -71,7 +71,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e" + "wasm": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8" }, "storage": null } @@ -105,8 +105,8 @@ } } }, - "hash": "438f1f12ad771daeab9d67b2493c4b6bf855ff145633a9a21793c7818711858e", - "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000df160e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "ea8c0c07528d4649ae228d83f9e3e8ee4bc59ee1e02be4cc4e6e5c6fb18b3ca8", + "code": "0061736d01000000011f0560017e017e60027e7e017e60037e7e7e017e60037e7f7f0060027f7f017e021904016901320000016901310000017601670001017601680002030605000304000005030100100621047f01418080c0000b7f00418080c0000b7f00418080c0000b7f00418080c0000b074507066d656d6f72790200067475706c65310004067475706c6532000707766f69645f666e0008015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030ac803057801017f23808080800041106b220124808080800002400240200042ff018342cb00520d00200142023703082000200141086a41011085808080002001290308220042ff01834204510d010b000b2001200042848080807083370308200141086a41011086808080002100200141106a24808080800020000b1d0020002001ad4220864204842002ad4220864204841083808080001a0b1a002000ad4220864204842001ad4220864204841082808080000bff0102027f017e23808080800041106b2201248080808000024002400240200042ff018342cb00520d00410021020240034020024110460d01200120026a4202370300200241086a21020c000b0b2000200141021085808080002001290300220342ff01834204520d0020012903082200a741ff0171220241c100460d0120024107470d00200042088721000c020b000b200010808080800021000b0240024020004280808080808080c0007c42ffffffffffffffff00560d00200042088642078421000c010b200010818080800021000b200120003703082001200342848080807083370300200141021086808080002100200141106a24808080800020000b13000240200042ff01834202510d00000b42020b0b090100418080c0000b0000ff140e636f6e74726163747370656376300000000000000000000000067475706c6531000000000001000000000000000361726700000003ed000000010000000400000001000003ed00000001000000040000000000000000000000067475706c6532000000000001000000000000000361726700000003ed00000002000000040000000700000001000003ed000000020000000400000007000000000000000000000007766f69645f666e00000000010000000000000008766f69645f61726700000002000000010000000200000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_add.1.json b/tests/udt/test_snapshots/test_with_wasm/test_add.1.json index d675e226e..128a7d058 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_add.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_add.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be80153704563563136c1e94a3bcadb9e537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f85370456356318008814f9a15391a537045635631572c11e8217aa8aa53704563563169d349657ba271ba556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc00100009000000009b1a0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d136c1e94a3bcadb9e000000000000000162000000000007d136c1e94a3bcadb9e000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d116276438ffc9b1f80000000100000000000000045564744300000001000007d1aff793ba9e4dde9a0000000100000000000000045564744400000001000007d1eb9f12269a76282a00000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d18008814f9a15391a00000001000003e8000007d18008814f9a15391a0000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d18008814f9a15391a0000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d169d349657ba271ba0000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d1572c11e8217aa8aa00000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d1572c11e8217aa8aa00000000000000036b6579000000000400000001000003e9000003e8000007d1572c11e8217aa8aa0000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json b/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json index 1781da73e..dfd7b7658 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "constructor_args": [] } @@ -73,7 +73,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "storage": null } @@ -107,8 +107,8 @@ } } }, - "hash": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be80153704563563136c1e94a3bcadb9e537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f85370456356318008814f9a15391a537045635631572c11e8217aa8aa53704563563169d349657ba271ba556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc00100009000000009b1a0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d136c1e94a3bcadb9e000000000000000162000000000007d136c1e94a3bcadb9e000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d116276438ffc9b1f80000000100000000000000045564744300000001000007d1aff793ba9e4dde9a0000000100000000000000045564744400000001000007d1eb9f12269a76282a00000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d18008814f9a15391a00000001000003e8000007d18008814f9a15391a0000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d18008814f9a15391a0000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d169d349657ba271ba0000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d1572c11e8217aa8aa00000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d1572c11e8217aa8aa00000000000000036b6579000000000400000001000003e9000003e8000007d1572c11e8217aa8aa0000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0" diff --git a/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json b/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json index d675e226e..128a7d058 100644 --- a/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json +++ b/tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json @@ -18,7 +18,7 @@ } }, "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "constructor_args": [] } @@ -72,7 +72,7 @@ "val": { "contract_instance": { "executable": { - "wasm": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8" + "wasm": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d" }, "storage": null } @@ -106,8 +106,8 @@ } } }, - "hash": "cee8cee5c65722e1840b6247fb957c4a04e806c17cdf2b7f7cd58d2e9e3e22c8", - "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be801537045635631f3b0ab40690d48b4537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f8537045635631c81291fed713f59c537045635631ff7b5620ab0ddc64537045635631e16f55dbd4379814556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc0010000900000000db1c0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d000000007556474456e756d00000000000000000162000000000007d000000007556474456e756d00000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d0000000095564745374727563740000000000000100000000000000045564744300000001000007d000000008556474456e756d320000000100000000000000045564744400000001000007d0000000085564745475706c6500000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d00000000c55647452656375727369766500000001000003e8000007d00000000c5564745265637572736976650000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d00000000c5564745265637572736976650000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d00000000f526563757273697665546f456e756d000000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d00000000d526563757273697665456e756d00000000000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d00000000d526563757273697665456e756d00000000000000000000036b6579000000000400000001000003e9000003e8000007d00000000d526563757273697665456e756d0000000000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d00000000f436f6e7472616374436f6e7465787400000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e74657874000000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e74657874000000000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d00000000f436f6e7472616374436f6e7465787400000000000000000f7375625f696e766f636174696f6e7300000003ea000007d000000018496e766f6b6572436f6e747261637441757468456e747279000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d000000015537562436f6e7472616374496e766f636174696f6e0000000000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d00000001b437265617465436f6e7472616374486f7374466e436f6e7465787400000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d00000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e7465787400000000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d000000012436f6e747261637445786563757461626c650000000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" + "hash": "f1ef9c5a82aa3d3d624a91a9fde9f8f0b58b6fb30b570fe705402059383aad5d", + "code": "0061736d01000000014e0d60017e017e60037e7e7e017e60027e7e017e60047e7e7e7e017e60027f7f0060000060037e7f7f017e60027f7f017f60057e7f7f7f7f0060027f7e0060017f017e60037f7f7f0060027f7f017e024f0d017601330000017601680001016901320000017601310002016901310000017601380000016d01340002016d013100020176016700020162016a0002016d01390001016d016100030162016d00010315140405040607080909090505040205000a020b0c050405017001040405030100110621047f01418080c0000b7f0041e881c0000b7f0041e881c0000b7f0041f081c0000b074c07066d656d6f7279020003616464001909726563757273697665001b0e7265637572736976655f656e756d001d015f03010a5f5f646174615f656e6403020b5f5f686561705f6261736503030909010041010b030e16170af11d14850704017f027e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a41002d00aa80c080001a41002d008e80c080001a200241818080800036021820022802181a41002d009c80c080001a41002d008080c080001a024002402001290300220342ff018342cb00510d00200041043a00000c010b200310808080800021042002410036021020022003370308200220044220883e0214200241186a200241086a108f808080000240024002400240200229031822034202510d002003a74101710d00024020022903202203a741ff0171220141ca00460d002001410e470d010b0240024002400240200341f480c080004104109080808000422088a70e0400010203050b200228021020022802141091808080000d04410021050c050b2002280210200228021410918080800041014b0d03200241186a200241086a108f80808000200229031822034202510d032003a74101710d0320022903202103410021010240034020014118460d01200241186a20016a4202370300200141086a21010c000b0b200342ff018342cc00520d032003419881c080004103200241186a4103109280808000200241306a200229031810938080800020022802300d0320022903382104200241306a200229032010938080800020022802300d032002290328220642ff018342cb00520d0320022903382103410121050c040b2002280210200228021410918080800041014b0d02200241186a200241086a108f80808000200229031822034202510d022003a74101710d022002290320220342ff01834204520d02410a410f41092003422088a72201410f461b2001410a461b22014109460d02410221050c040b2002280210200228021410918080800041014b0d01200241186a200241086a108f80808000200229031822034202510d012003a74101710d012002290320220342ff018342cb00520d01410021010240034020014110460d01200241306a20016a4202370300200141086a21010c000b0b2003200241306aad4220864204844284808080201081808080001a200241186a200229033010938080800020022802184101460d012002290338220342ff018342cb00520d0120022903202104410321050c020b200041043a00000c030b200041043a00000c020b0b200020063703182000200337031020002004370308200020013a0001200020053a00000b200241c0006a2480808080000b02000b4a02017e017f42022102024020012802082203200128020c4f0d00200020012903002003ad4220864204841083808080003703082001200341016a360208420021020b200020023703000b1c0020002001ad4220864204842002ad422086420484108c808080000b1900024020012000490d00200120006b0f0b109a80808000000b3100024020022004460d00000b20002001ad4220864204842003ad4220864204842002ad422086420484108b808080001a0b5d02017f017e024002402001a741ff0171220241c100460d00024020024107460d00420121034283908080800121010c020b20014208872101420021030c010b42002103200110828080800021010b20002003370300200020013703080bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cb00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000bb50102027f027e23808080800041106b2202248080808000410021030240034020034110460d01200220036a4202370300200341086a21030c000b0b420121040240200142ff018342cc00520d00200141b081c08000410220024102109280808000024020022903002201a741ff0171220341ca00460d002003410e470d010b2002290308220542ff018342cc00520d002000200537031020002001370308420021040b20002004370300200241106a2480808080000b2801017f23808080800041106b220041828080800036020c200028020c1a41002d00b880c080001a0b4301017f23808080800041106b220041818080800036020c200028020c1a200041838080800036020820002802081a41002d00d480c080001a41002d00c680c080001a0b7803017f017e017f23808080800041106b220224808080800042022103024020012802082204200128020c4f0d00200220012903002004ad42208642048410838080800010938080800020022903002103200020022903083703082001200441016a3602080b20002003370300200241106a2480808080000bd60404027f017e017f057e23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002108d8080800002400240024020022d001022034104460d00200229032021012002290318210420023100112100200241106a200241086a108d8080800020022d001022054104460d00200229032021062002290318210720023100112108420021094200210a024002400240024020030e0405020100050b200110808080800021002002410036023820022001370330200220004220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0620022903182200420053200120007c2200200153470d06200021010c000b0b2000210a0c030b2001420053200420017c220a20045373450d020c030b2001420053200420017c220a20045373450d010c020b000b0240024002400240024020050e0404020100040b200610808080800021012002410036023820022006370330200220014220883e023c420021010340200241106a200241306a109880808000200229031022004202510d032000a74101710d0520022903182200420053200120007c2200200153470d05200021010c000b0b200821090c020b2006420053200720067c2209200753730d020c010b2001420053200720017c2209200753730d010b2009420053200a20097c2201200a53730d000240024020014280808080808080c0007c42ffffffffffffffff00560d00200142088642078421010c010b200110848080800021010b200241c0006a24808080800020010f0b109a80808000000b090010a080808000000bf90102017f017e23808080800041206b2201248080808000200141828080800036020820012802081a41002d00b880c080001a200141086a2000109480808000024020012802084101460d00024002402001290318220010808080800042ffffffff0f560d00200141828080800036020820012802081a41002d00b880c080001a420221000c010b200141086a200010858080800010948080800020012802084101460d012001290310210020012903182102200141828080800036020820012802081a41002d00b880c080001a2001200237031020012000370308200141086a109c8080800021000b200141206a24808080800020000f0b000b240041b081c08000ad4220864204842000ad422086420484428480808020108a808080000b850704017f017e017f017e23808080800041c0006b2202248080808000200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a0240200042ff018342cb00520d00200010808080800021032002410036021020022000370308200220034220883e0214200241186a200241086a108f80808000200229031822004202510d002000a74101710d00024020022903202200a741ff0171220441ca00460d002004410e470d010b024002400240024002400240200041d881c080004102109080808000422088a70e020100060b2002280210200228021410918080800041014b0d05200241306a200241086a108f80808000200229033022004202510d052000a74101710d05200241186a200229033810958080800020022802184101460d05200142ff01834204520d052002290328220020014284808080708322011086808080004201520d0120002001108780808000220042ff018342cb00520d05200010808080800021012002410036021020022000370308200220014220883e0214200241186a200241086a108f80808000200229031822004202510d052000a74101710d05024020022903202200a741ff0171220441ca00460d002004410e470d060b200041d881c080004102109080808000422088a70e020203050b200228021020022802141091808080000d04200142ff01834204520d040b420221000c020b200228021020022802141091808080000d02420021000c010b2002280210200228021410918080800041014b0d01200241306a200241086a108f80808000200229033022004202510d012000a74101710d01200241186a200229033810958080800020022802180d012002290328210520022903202103420121000b200241818080800036021820022802181a200241838080800036021820022802181a41002d00d480c080001a41002d00c680c080001a42022101024020004202510d0002402000a7410171450d00200241186a41cc81c080004109109e8080800020022802180d022002290320210020022005370320200220033703182002200241186a109c8080800037032020022000370318200241186a4102109f8080800021010c010b200241186a41c081c08000410c109e8080800020022802180d0120022002290320370318200241186a4101109f8080800021010b200241c0006a24808080800020010f0b000bd60102017e037f02400240200241094b0d0042002103410021040340024020044109470d002003420886420e8421030c030b410121050240200120046a2d0000220641df00460d0002400240200641506a41ff0171410a490d00200641bf7f6a41ff0171411a490d012006419f7f6a41ff0171411a4f0d04200641456a21050c020b200641526a21050c010b2006414b6a21050b20034206862005ad42ff0183842103200441016a21040c000b0b2001ad4220864204842002ad42208642048410898080800021030b20004200370300200020033703080b1a002000ad4220864204842001ad4220864204841088808080000b0300000b0bf2010100418080c0000be80153704563563136c1e94a3bcadb9e537045635631aff793ba9e4dde9a537045635631eb9f12269a76282a53704563563116276438ffc9b1f85370456356318008814f9a15391a537045635631572c11e8217aa8aa53704563563169d349657ba271ba556474415564744255647443556474440000620010000400000066001000040000006a001000040000006e0010000400000061626300940010000100000095001000010000009600100001000000940010000100000095001000010000004e6f74526563757273697665526563757273697665000000c00010000c000000cc00100009000000009b1a0e636f6e74726163747370656376300000000000000000000000036164640000000002000000000000000161000000000007d136c1e94a3bcadb9e000000000000000162000000000007d136c1e94a3bcadb9e000000010000000700000002000000000000000000000007556474456e756d0000000004000000000000000000000004556474410000000100000000000000045564744200000001000007d116276438ffc9b1f80000000100000000000000045564744300000001000007d1aff793ba9e4dde9a0000000100000000000000045564744400000001000007d1eb9f12269a76282a00000003000000000000000000000008556474456e756d32000000020000000000000001410000000000000a0000000000000001420000000000000f000000010000000000000000000000085564745475706c650000000200000000000000013000000000000007000000000000000131000000000003ea0000000700000001000000000000000000000009556474537472756374000000000000030000000000000001610000000000000700000000000000016200000000000007000000000000000163000000000003ea0000000700000000000000000000000972656375727369766500000000000001000000000000000161000000000007d18008814f9a15391a00000001000003e8000007d18008814f9a15391a0000000100000000000000000000000c5564745265637572736976650000000200000000000000016100000000000011000000000000000162000000000003ea000007d18008814f9a15391a0000000200000000000000000000000d526563757273697665456e756d0000000000000200000000000000000000000c4e6f7452656375727369766500000001000000000000000952656375727369766500000000000001000007d169d349657ba271ba0000000100000000000000000000000f526563757273697665546f456e756d000000000200000000000000016100000000000011000000000000000162000000000003ec00000004000007d1572c11e8217aa8aa00000000000000000000000e7265637572736976655f656e756d000000000002000000000000000161000000000007d1572c11e8217aa8aa00000000000000036b6579000000000400000001000003e9000003e8000007d1572c11e8217aa8aa0000000300000002000000e3436f6e74657874206f6620612073696e676c6520617574686f72697a65642063616c6c20706572666f726d656420627920616e20616464726573732e0a0a437573746f6d206163636f756e7420636f6e747261637473207468617420696d706c656d656e7420605f5f636865636b5f6175746860207370656369616c2066756e6374696f6e0a726563656976652061206c697374206f662060436f6e74657874602076616c75657320636f72726573706f6e64696e6720746f20616c6c207468652063616c6c7320746861740a6e65656420746f20626520617574686f72697a65642e000000000000000007436f6e7465787400000000030000000100000014436f6e747261637420696e766f636174696f6e2e00000008436f6e747261637400000001000007d1f1f99007452a65fd000000010000003d436f6e7472616374207468617420686173206120636f6e7374727563746f722077697468206e6f20617267756d656e747320697320637265617465642e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a180000000100000044436f6e7472616374207468617420686173206120636f6e7374727563746f7220776974682031206f72206d6f726520617267756d656e747320697320637265617465642e0000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe00000001000000bd417574686f72697a6174696f6e20636f6e74657874206f6620612073696e676c6520636f6e74726163742063616c6c2e0a0a546869732073747275637420636f72726573706f6e647320746f20612060726571756972655f617574685f666f725f61726773602063616c6c20666f7220616e20616464726573730a66726f6d2060636f6e7472616374602066756e6374696f6e20776974682060666e5f6e616d6560206e616d6520616e642060617267736020617267756d656e74732e000000000000000000000f436f6e7472616374436f6e746578740000000003000000000000000461726773000003ea000000000000000000000008636f6e7472616374000000130000000000000007666e5f6e616d650000000011000000020000005f436f6e74726163742065786563757461626c65207573656420666f72206372656174696e672061206e657720636f6e747261637420616e64207573656420696e0a60437265617465436f6e7472616374486f7374466e436f6e74657874602e000000000000000012436f6e747261637445786563757461626c650000000000010000000100000000000000045761736d00000001000003ee00000020000000010000003856616c7565206f6620636f6e7472616374206e6f646520696e20496e766f6b6572436f6e747261637441757468456e74727920747265652e0000000000000015537562436f6e7472616374496e766f636174696f6e000000000000020000000000000007636f6e7465787400000007d1f1f99007452a65fd000000000000000f7375625f696e766f636174696f6e7300000003ea000007d17c74845ce999b557000000020000012f41206e6f646520696e207468652074726565206f6620617574686f72697a6174696f6e7320706572666f726d6564206f6e20626568616c66206f66207468652063757272656e740a636f6e747261637420617320696e766f6b6572206f662074686520636f6e7472616374732064656570657220696e207468652063616c6c20737461636b2e0a0a54686973206973207573656420617320616e20617267756d656e74206f662060617574686f72697a655f61735f63757272656e745f636f6e74726163746020686f73742066756e6374696f6e2e0a0a54686973207472656520636f72726573706f6e64732060726571756972655f617574685b5f666f725f617267735d602063616c6c73206f6e20626568616c66206f66207468650a63757272656e7420636f6e74726163742e000000000000000018496e766f6b6572436f6e747261637441757468456e747279000000030000000100000012496e766f6b65206120636f6e74726163742e000000000008436f6e747261637400000001000007d1bfa7d1a54c688eb20000000100000035437265617465206120636f6e74726163742070617373696e67203020617267756d656e747320746f20636f6e7374727563746f722e00000000000014437265617465436f6e7472616374486f7374466e00000001000007d185412b2704b57a18000000010000003d437265617465206120636f6e74726163742070617373696e672030206f72206d6f726520617267756d656e747320746f20636f6e7374727563746f722e0000000000001c437265617465436f6e74726163745769746843746f72486f7374466e00000001000007d1fb0e5bb2b0abd7fe0000000100000076417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0000000000000000001b437265617465436f6e7472616374486f7374466e436f6e746578740000000002000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee0000002000000001000000d6417574686f72697a6174696f6e20636f6e7465787420666f7220606372656174655f636f6e74726163746020686f73742066756e6374696f6e2074686174206372656174657320610a6e657720636f6e7472616374206f6e20626568616c66206f6620617574686f72697a657220616464726573732e0a54686973206973207468652073616d652061732060437265617465436f6e7472616374486f7374466e436f6e74657874602c2062757420616c736f206861730a636f6e747261637420636f6e7374727563746f7220617267756d656e74732e0000000000000000002a437265617465436f6e747261637457697468436f6e7374727563746f72486f7374466e436f6e746578740000000000030000000000000010636f6e7374727563746f725f61726773000003ea00000000000000000000000a65786563757461626c650000000007d1b6b14879dacaafcc000000000000000473616c74000003ee000000200000000200000000000000000000000a45786563757461626c650000000000030000000100000000000000045761736d00000001000003ee0000002000000000000000000000000c5374656c6c617241737365740000000000000000000000074163636f756e7400001e11636f6e7472616374656e766d6574617630000000000000001b00000000004f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39312e3000000000000000000012727373646b5f737065635f7368616b696e6700000000000132000000" } }, "ext": "v0"