From df64c9232b84f97fd6f968315fa04c8db48b0f2e Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Mon, 4 Mar 2024 21:39:48 +1000 Subject: [PATCH 01/25] Add schemars::JsonSchema derives to all types --- Cargo.lock | 42 ++ Cargo.toml | 3 +- Makefile | 2 +- src/curr/generated.rs | 911 +++++++++++++++++++++++------------------- src/next/generated.rs | 911 +++++++++++++++++++++++------------------- 5 files changed, 1027 insertions(+), 842 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 29685c68..e6675654 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -244,6 +244,12 @@ dependencies = [ "syn 1.0.98", ] +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "escape-bytes" version = "0.1.1" @@ -415,6 +421,30 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +[[package]] +name = "schemars" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.98", +] + [[package]] name = "scratch" version = "1.0.2" @@ -441,6 +471,17 @@ dependencies = [ "syn 2.0.15", ] +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.98", +] + [[package]] name = "serde_json" version = "1.0.89" @@ -501,6 +542,7 @@ dependencies = [ "crate-git-revision", "escape-bytes", "hex", + "schemars", "serde", "serde_json", "serde_with", diff --git a/Cargo.toml b/Cargo.toml index 08501c81..e29ae380 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,7 @@ arbitrary = {version = "1.1.3", features = ["derive"], optional = true} clap = { version = "4.2.4", default-features = false, features = ["std", "derive", "usage", "help"], optional = true } serde_json = { version = "1.0.89", optional = true } thiserror = { version = "1.0.37", optional = true } +schemars = { version = "0.8.16", optional = true } [dev_dependencies] serde_json = "1.0.89" @@ -42,7 +43,7 @@ next = [] # Features dependent on optional dependencies. base64 = ["std", "dep:base64"] -serde = ["alloc", "dep:serde", "dep:serde_with", "hex/serde"] +serde = ["alloc", "dep:serde", "dep:serde_with", "hex/serde", "dep:schemars"] serde_json = ["std", "serde", "dep:serde_json"] arbitrary = ["std", "dep:arbitrary"] hex = [] diff --git a/Makefile b/Makefile index 2e14d4f8..56404a5e 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=e2cac557162d99b12ae73b846cf3d5bfe16636de +XDRGEN_VERSION=8cb548165a86ef3de504d68159948f852ad7e988 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 8bde0fbc..61fc873a 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -931,7 +931,10 @@ impl WriteXdr for [T; N] { #[cfg(feature = "alloc")] #[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr( + feature = "serde", + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema) +)] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct VecM(Vec); @@ -1337,7 +1340,11 @@ impl WriteXdr for VecM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct BytesM(Vec); @@ -1718,7 +1725,11 @@ impl WriteXdr for BytesM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct StringM(Vec); @@ -2088,7 +2099,7 @@ impl WriteXdr for StringM { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Frame(pub T) @@ -2755,7 +2766,7 @@ mod test { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -2863,7 +2874,7 @@ impl AsRef<[u8]> for Value { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpBallot { @@ -2911,7 +2922,7 @@ impl WriteXdr for ScpBallot { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -3027,7 +3038,7 @@ impl WriteXdr for ScpStatementType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpNomination { @@ -3079,7 +3090,7 @@ impl WriteXdr for ScpNomination { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementPrepare { @@ -3139,7 +3150,7 @@ impl WriteXdr for ScpStatementPrepare { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementConfirm { @@ -3194,7 +3205,7 @@ impl WriteXdr for ScpStatementConfirm { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementExternalize { @@ -3269,7 +3280,7 @@ impl WriteXdr for ScpStatementExternalize { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -3423,7 +3434,7 @@ impl WriteXdr for ScpStatementPledges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatement { @@ -3471,7 +3482,7 @@ impl WriteXdr for ScpStatement { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpEnvelope { @@ -3517,7 +3528,7 @@ impl WriteXdr for ScpEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpQuorumSet { @@ -3565,7 +3576,7 @@ impl WriteXdr for ScpQuorumSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractExecutionLanesV0 { @@ -3615,7 +3626,7 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractComputeV0 { @@ -3696,7 +3707,7 @@ impl WriteXdr for ConfigSettingContractComputeV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractLedgerCostV0 { @@ -3779,7 +3790,7 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractHistoricalDataV0 { @@ -3823,7 +3834,7 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractEventsV0 { @@ -3873,7 +3884,7 @@ impl WriteXdr for ConfigSettingContractEventsV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractBandwidthV0 { @@ -3969,7 +3980,7 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -4186,7 +4197,7 @@ impl WriteXdr for ContractCostType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractCostParamEntry { @@ -4253,7 +4264,7 @@ impl WriteXdr for ContractCostParamEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StateArchivalSettings { @@ -4322,7 +4333,7 @@ impl WriteXdr for StateArchivalSettings { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct EvictionIterator { @@ -4375,7 +4386,7 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -4496,7 +4507,7 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -4693,7 +4704,7 @@ impl WriteXdr for ConfigSettingId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -4919,7 +4930,7 @@ impl WriteXdr for ConfigSettingEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5021,7 +5032,7 @@ impl WriteXdr for ScEnvMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -5122,7 +5133,7 @@ impl WriteXdr for ScEnvMetaEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScMetaV0 { @@ -5167,7 +5178,7 @@ impl WriteXdr for ScMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5269,7 +5280,7 @@ impl WriteXdr for ScMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -5406,7 +5417,7 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5630,7 +5641,7 @@ impl WriteXdr for ScSpecType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeOption { @@ -5672,7 +5683,7 @@ impl WriteXdr for ScSpecTypeOption { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeResult { @@ -5716,7 +5727,7 @@ impl WriteXdr for ScSpecTypeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeVec { @@ -5758,7 +5769,7 @@ impl WriteXdr for ScSpecTypeVec { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeMap { @@ -5802,7 +5813,7 @@ impl WriteXdr for ScSpecTypeMap { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeTuple { @@ -5843,7 +5854,7 @@ impl WriteXdr for ScSpecTypeTuple { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeBytesN { @@ -5884,7 +5895,7 @@ impl WriteXdr for ScSpecTypeBytesN { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeUdt { @@ -5958,7 +5969,7 @@ impl WriteXdr for ScSpecTypeUdt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -6230,7 +6241,7 @@ impl WriteXdr for ScSpecTypeDef { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtStructFieldV0 { @@ -6280,7 +6291,7 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtStructV0 { @@ -6331,7 +6342,7 @@ impl WriteXdr for ScSpecUdtStructV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionCaseVoidV0 { @@ -6377,7 +6388,7 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionCaseTupleV0 { @@ -6426,7 +6437,7 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -6536,7 +6547,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -6649,7 +6660,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionV0 { @@ -6701,7 +6712,7 @@ impl WriteXdr for ScSpecUdtUnionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtEnumCaseV0 { @@ -6751,7 +6762,7 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtEnumV0 { @@ -6803,7 +6814,7 @@ impl WriteXdr for ScSpecUdtEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtErrorEnumCaseV0 { @@ -6853,7 +6864,7 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtErrorEnumV0 { @@ -6905,7 +6916,7 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecFunctionInputV0 { @@ -6955,7 +6966,7 @@ impl WriteXdr for ScSpecFunctionInputV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecFunctionV0 { @@ -7010,7 +7021,7 @@ impl WriteXdr for ScSpecFunctionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7144,7 +7155,7 @@ impl WriteXdr for ScSpecEntryKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -7327,7 +7338,7 @@ impl WriteXdr for ScSpecEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7546,7 +7557,7 @@ impl WriteXdr for ScValType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7697,7 +7708,7 @@ impl WriteXdr for ScErrorType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7858,7 +7869,7 @@ impl WriteXdr for ScErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -8015,7 +8026,7 @@ impl WriteXdr for ScError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UInt128Parts { @@ -8059,7 +8070,7 @@ impl WriteXdr for UInt128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Int128Parts { @@ -8105,7 +8116,7 @@ impl WriteXdr for Int128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UInt256Parts { @@ -8157,7 +8168,7 @@ impl WriteXdr for UInt256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Int256Parts { @@ -8209,7 +8220,7 @@ impl WriteXdr for Int256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -8319,7 +8330,7 @@ impl WriteXdr for ContractExecutableType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -8427,7 +8438,7 @@ impl WriteXdr for ContractExecutable { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -8534,7 +8545,11 @@ impl WriteXdr for ScAddressType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum ScAddress { @@ -8642,7 +8657,7 @@ pub const SCSYMBOL_LIMIT: u64 = 32; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8747,7 +8762,7 @@ impl AsRef<[ScVal]> for ScVec { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8852,7 +8867,7 @@ impl AsRef<[ScMapEntry]> for ScMap { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8957,7 +8972,7 @@ impl AsRef<[u8]> for ScBytes { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -9062,7 +9077,7 @@ impl AsRef<[u8]> for ScString { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -9168,7 +9183,7 @@ impl AsRef<[u8]> for ScSymbol { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScNonceKey { @@ -9209,7 +9224,7 @@ impl WriteXdr for ScNonceKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScContractInstance { @@ -9311,7 +9326,7 @@ impl WriteXdr for ScContractInstance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9563,7 +9578,7 @@ impl WriteXdr for ScVal { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScMapEntry { @@ -9611,7 +9626,7 @@ impl WriteXdr for ScMapEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9716,7 +9731,7 @@ impl WriteXdr for StoredTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StoredDebugTransactionSet { @@ -9765,7 +9780,7 @@ impl WriteXdr for StoredDebugTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PersistedScpStateV0 { @@ -9814,7 +9829,7 @@ impl WriteXdr for PersistedScpStateV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PersistedScpStateV1 { @@ -9862,7 +9877,7 @@ impl WriteXdr for PersistedScpStateV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9962,7 +9977,11 @@ impl WriteXdr for PersistedScpState { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Thresholds(pub [u8; 4]); @@ -10081,7 +10100,7 @@ impl AsRef<[u8]> for Thresholds { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10186,7 +10205,7 @@ impl AsRef<[u8]> for String32 { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10290,7 +10309,7 @@ impl AsRef<[u8]> for String64 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10346,7 +10365,7 @@ impl WriteXdr for SequenceNumber { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10450,7 +10469,7 @@ impl AsRef<[u8]> for DataValue { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10505,7 +10524,11 @@ impl WriteXdr for PoolId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct AssetCode4(pub [u8; 4]); @@ -10606,7 +10629,11 @@ impl AsRef<[u8]> for AssetCode4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct AssetCode12(pub [u8; 12]); @@ -10714,7 +10741,7 @@ impl AsRef<[u8]> for AssetCode12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -10836,7 +10863,11 @@ impl WriteXdr for AssetType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum AssetCode { @@ -10939,7 +10970,7 @@ impl WriteXdr for AssetCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AlphaNum4 { @@ -10984,7 +11015,7 @@ impl WriteXdr for AlphaNum4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AlphaNum12 { @@ -11038,7 +11069,7 @@ impl WriteXdr for AlphaNum12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -11151,7 +11182,7 @@ impl WriteXdr for Asset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Price { @@ -11196,7 +11227,7 @@ impl WriteXdr for Price { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Liabilities { @@ -11244,7 +11275,7 @@ impl WriteXdr for Liabilities { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11368,7 +11399,7 @@ impl WriteXdr for ThresholdIndexes { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11518,7 +11549,7 @@ impl WriteXdr for LedgerEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Signer { @@ -11576,7 +11607,7 @@ impl WriteXdr for Signer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11716,7 +11747,7 @@ pub const MAX_SIGNERS: u64 = 20; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -11782,7 +11813,7 @@ impl WriteXdr for SponsorshipDescriptor { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV3 { @@ -11833,7 +11864,7 @@ impl WriteXdr for AccountEntryExtensionV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -11947,7 +11978,7 @@ impl WriteXdr for AccountEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV2 { @@ -12001,7 +12032,7 @@ impl WriteXdr for AccountEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12113,7 +12144,7 @@ impl WriteXdr for AccountEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV1 { @@ -12161,7 +12192,7 @@ impl WriteXdr for AccountEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12288,7 +12319,7 @@ impl WriteXdr for AccountEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntry { @@ -12364,7 +12395,7 @@ impl WriteXdr for AccountEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -12503,7 +12534,7 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -12616,7 +12647,7 @@ impl WriteXdr for LiquidityPoolType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12737,7 +12768,7 @@ impl WriteXdr for TrustLineAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12842,7 +12873,7 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntryExtensionV2 { @@ -12890,7 +12921,7 @@ impl WriteXdr for TrustLineEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13002,7 +13033,7 @@ impl WriteXdr for TrustLineEntryV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntryV1 { @@ -13062,7 +13093,7 @@ impl WriteXdr for TrustLineEntryV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13193,7 +13224,7 @@ impl WriteXdr for TrustLineEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntry { @@ -13252,7 +13283,7 @@ impl WriteXdr for TrustLineEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -13362,7 +13393,7 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13480,7 +13511,7 @@ impl WriteXdr for OfferEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct OfferEntry { @@ -13544,7 +13575,7 @@ impl WriteXdr for OfferEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13652,7 +13683,7 @@ impl WriteXdr for DataEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DataEntry { @@ -13708,7 +13739,7 @@ impl WriteXdr for DataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -13850,7 +13881,7 @@ impl WriteXdr for ClaimPredicateType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13992,7 +14023,7 @@ impl WriteXdr for ClaimPredicate { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14093,7 +14124,7 @@ impl WriteXdr for ClaimantType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimantV0 { @@ -14143,7 +14174,7 @@ impl WriteXdr for ClaimantV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14242,7 +14273,7 @@ impl WriteXdr for Claimant { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14345,7 +14376,7 @@ impl WriteXdr for ClaimableBalanceIdType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14449,7 +14480,7 @@ impl WriteXdr for ClaimableBalanceId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14560,7 +14591,7 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14665,7 +14696,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimableBalanceEntryExtensionV1 { @@ -14713,7 +14744,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14836,7 +14867,7 @@ impl WriteXdr for ClaimableBalanceEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimableBalanceEntry { @@ -14891,7 +14922,7 @@ impl WriteXdr for ClaimableBalanceEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolConstantProductParameters { @@ -14944,7 +14975,7 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolEntryConstantProduct { @@ -15008,7 +15039,7 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15128,7 +15159,7 @@ impl WriteXdr for LiquidityPoolEntryBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolEntry { @@ -15173,7 +15204,7 @@ impl WriteXdr for LiquidityPoolEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -15283,7 +15314,7 @@ impl WriteXdr for ContractDataDurability { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractDataEntry { @@ -15338,7 +15369,7 @@ impl WriteXdr for ContractDataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractCodeEntry { @@ -15386,7 +15417,7 @@ impl WriteXdr for ContractCodeEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TtlEntry { @@ -15432,7 +15463,7 @@ impl WriteXdr for TtlEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15537,7 +15568,7 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerEntryExtensionV1 { @@ -15601,7 +15632,7 @@ impl WriteXdr for LedgerEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15780,7 +15811,7 @@ impl WriteXdr for LedgerEntryData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15918,7 +15949,7 @@ impl WriteXdr for LedgerEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerEntry { @@ -15965,7 +15996,7 @@ impl WriteXdr for LedgerEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyAccount { @@ -16007,7 +16038,7 @@ impl WriteXdr for LedgerKeyAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyTrustLine { @@ -16052,7 +16083,7 @@ impl WriteXdr for LedgerKeyTrustLine { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyOffer { @@ -16097,7 +16128,7 @@ impl WriteXdr for LedgerKeyOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyData { @@ -16141,7 +16172,7 @@ impl WriteXdr for LedgerKeyData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyClaimableBalance { @@ -16182,7 +16213,7 @@ impl WriteXdr for LedgerKeyClaimableBalance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyLiquidityPool { @@ -16225,7 +16256,7 @@ impl WriteXdr for LedgerKeyLiquidityPool { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyContractData { @@ -16272,7 +16303,7 @@ impl WriteXdr for LedgerKeyContractData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyContractCode { @@ -16313,7 +16344,7 @@ impl WriteXdr for LedgerKeyContractCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyConfigSetting { @@ -16355,7 +16386,7 @@ impl WriteXdr for LedgerKeyConfigSetting { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyTtl { @@ -16457,7 +16488,7 @@ impl WriteXdr for LedgerKeyTtl { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -16642,7 +16673,7 @@ impl WriteXdr for LedgerKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -16789,7 +16820,7 @@ impl WriteXdr for EnvelopeType { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -16898,7 +16929,7 @@ impl AsRef<[u8]> for UpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17002,7 +17033,7 @@ impl WriteXdr for StellarValueType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseValueSignature { @@ -17050,7 +17081,7 @@ impl WriteXdr for LedgerCloseValueSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17171,7 +17202,7 @@ impl WriteXdr for StellarValueExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StellarValue { @@ -17232,7 +17263,7 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17344,7 +17375,7 @@ impl WriteXdr for LedgerHeaderFlags { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17449,7 +17480,7 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeaderExtensionV1 { @@ -17497,7 +17528,7 @@ impl WriteXdr for LedgerHeaderExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17635,7 +17666,7 @@ impl WriteXdr for LedgerHeaderExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeader { @@ -17725,7 +17756,7 @@ impl WriteXdr for LedgerHeader { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17859,7 +17890,7 @@ impl WriteXdr for LedgerUpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigUpgradeSetKey { @@ -17920,7 +17951,7 @@ impl WriteXdr for ConfigUpgradeSetKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18065,7 +18096,7 @@ impl WriteXdr for LedgerUpgrade { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigUpgradeSet { @@ -18112,7 +18143,7 @@ impl WriteXdr for ConfigUpgradeSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -18229,7 +18260,7 @@ impl WriteXdr for BucketEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18336,7 +18367,7 @@ impl WriteXdr for BucketMetadataExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BucketMetadata { @@ -18388,7 +18419,7 @@ impl WriteXdr for BucketMetadata { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18510,7 +18541,7 @@ impl WriteXdr for BucketEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -18612,7 +18643,7 @@ impl WriteXdr for TxSetComponentType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TxSetComponentTxsMaybeDiscountedFee { @@ -18662,7 +18693,7 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18769,7 +18800,7 @@ impl WriteXdr for TxSetComponent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18868,7 +18899,7 @@ impl WriteXdr for TransactionPhase { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSet { @@ -18913,7 +18944,7 @@ impl WriteXdr for TransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSetV1 { @@ -18960,7 +18991,7 @@ impl WriteXdr for TransactionSetV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19059,7 +19090,7 @@ impl WriteXdr for GeneralizedTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultPair { @@ -19103,7 +19134,7 @@ impl WriteXdr for TransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultSet { @@ -19148,7 +19179,7 @@ impl WriteXdr for TransactionResultSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19262,7 +19293,7 @@ impl WriteXdr for TransactionHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionHistoryEntry { @@ -19311,7 +19342,7 @@ impl WriteXdr for TransactionHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19418,7 +19449,7 @@ impl WriteXdr for TransactionHistoryResultEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionHistoryResultEntry { @@ -19467,7 +19498,7 @@ impl WriteXdr for TransactionHistoryResultEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19574,7 +19605,7 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeaderHistoryEntry { @@ -19622,7 +19653,7 @@ impl WriteXdr for LedgerHeaderHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerScpMessages { @@ -19667,7 +19698,7 @@ impl WriteXdr for LedgerScpMessages { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpHistoryEntryV0 { @@ -19713,7 +19744,7 @@ impl WriteXdr for ScpHistoryEntryV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19815,7 +19846,7 @@ impl WriteXdr for ScpHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -19937,7 +19968,7 @@ impl WriteXdr for LedgerEntryChangeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20053,7 +20084,7 @@ impl WriteXdr for LedgerEntryChange { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -20160,7 +20191,7 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct OperationMeta { @@ -20202,7 +20233,7 @@ impl WriteXdr for OperationMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV1 { @@ -20250,7 +20281,7 @@ impl WriteXdr for TransactionMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV2 { @@ -20300,7 +20331,7 @@ impl WriteXdr for TransactionMetaV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -20411,7 +20442,7 @@ impl WriteXdr for ContractEventType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractEventV0 { @@ -20461,7 +20492,7 @@ impl WriteXdr for ContractEventV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20575,7 +20606,7 @@ impl WriteXdr for ContractEventBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractEvent { @@ -20626,7 +20657,7 @@ impl WriteXdr for ContractEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DiagnosticEvent { @@ -20679,7 +20710,7 @@ impl WriteXdr for DiagnosticEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanTransactionMeta { @@ -20737,7 +20768,7 @@ impl WriteXdr for SorobanTransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV3 { @@ -20791,7 +20822,7 @@ impl WriteXdr for TransactionMetaV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeHostFunctionSuccessPreImage { @@ -20843,7 +20874,7 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20958,7 +20989,7 @@ impl WriteXdr for TransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultMeta { @@ -21006,7 +21037,7 @@ impl WriteXdr for TransactionResultMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UpgradeEntryMeta { @@ -21063,7 +21094,7 @@ impl WriteXdr for UpgradeEntryMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseMetaV0 { @@ -21144,7 +21175,7 @@ impl WriteXdr for LedgerCloseMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseMetaV1 { @@ -21213,7 +21244,7 @@ impl WriteXdr for LedgerCloseMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -21321,7 +21352,7 @@ impl WriteXdr for LedgerCloseMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -21440,7 +21471,7 @@ impl WriteXdr for ErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SError { @@ -21484,7 +21515,7 @@ impl WriteXdr for SError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SendMore { @@ -21526,7 +21557,7 @@ impl WriteXdr for SendMore { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SendMoreExtended { @@ -21572,7 +21603,7 @@ impl WriteXdr for SendMoreExtended { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AuthCert { @@ -21627,7 +21658,7 @@ impl WriteXdr for AuthCert { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Hello { @@ -21700,7 +21731,7 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Auth { @@ -21743,7 +21774,7 @@ impl WriteXdr for Auth { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -21850,7 +21881,7 @@ impl WriteXdr for IpAddrType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -21962,7 +21993,7 @@ impl WriteXdr for PeerAddressIp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PeerAddress { @@ -22039,7 +22070,7 @@ impl WriteXdr for PeerAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22239,7 +22270,7 @@ impl WriteXdr for MessageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DontHave { @@ -22284,7 +22315,7 @@ impl WriteXdr for DontHave { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22386,7 +22417,7 @@ impl WriteXdr for SurveyMessageCommandType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22494,7 +22525,7 @@ impl WriteXdr for SurveyMessageResponseType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SurveyRequestMessage { @@ -22548,7 +22579,7 @@ impl WriteXdr for SurveyRequestMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SignedSurveyRequestMessage { @@ -22590,7 +22621,7 @@ impl WriteXdr for SignedSurveyRequestMessage { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -22701,7 +22732,7 @@ impl AsRef<[u8]> for EncryptedBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SurveyResponseMessage { @@ -22755,7 +22786,7 @@ impl WriteXdr for SurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SignedSurveyResponseMessage { @@ -22815,7 +22846,7 @@ impl WriteXdr for SignedSurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PeerStats { @@ -22896,7 +22927,7 @@ impl WriteXdr for PeerStats { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23007,7 +23038,7 @@ impl AsRef<[PeerStats]> for PeerStatList { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TopologyResponseBodyV0 { @@ -23064,7 +23095,7 @@ impl WriteXdr for TopologyResponseBodyV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TopologyResponseBodyV1 { @@ -23124,7 +23155,7 @@ impl WriteXdr for TopologyResponseBodyV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23235,7 +23266,7 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23342,7 +23373,7 @@ impl AsRef<[Hash]> for TxAdvertVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FloodAdvert { @@ -23389,7 +23420,7 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23496,7 +23527,7 @@ impl AsRef<[Hash]> for TxDemandVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FloodDemand { @@ -23584,7 +23615,7 @@ impl WriteXdr for FloodDemand { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23829,7 +23860,7 @@ impl WriteXdr for StellarMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AuthenticatedMessageV0 { @@ -23883,7 +23914,7 @@ impl WriteXdr for AuthenticatedMessageV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23991,7 +24022,7 @@ pub const MAX_OPS_PER_TX: u64 = 100; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -24096,7 +24127,11 @@ impl WriteXdr for LiquidityPoolParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct MuxedAccountMed25519 { pub id: u64, @@ -24147,7 +24182,11 @@ impl WriteXdr for MuxedAccountMed25519 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { @@ -24252,7 +24291,7 @@ impl WriteXdr for MuxedAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DecoratedSignature { @@ -24323,7 +24362,7 @@ impl WriteXdr for DecoratedSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -24558,7 +24597,7 @@ impl WriteXdr for OperationType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateAccountOp { @@ -24604,7 +24643,7 @@ impl WriteXdr for CreateAccountOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PaymentOp { @@ -24660,7 +24699,7 @@ impl WriteXdr for PaymentOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictReceiveOp { @@ -24725,7 +24764,7 @@ impl WriteXdr for PathPaymentStrictReceiveOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictSendOp { @@ -24787,7 +24826,7 @@ impl WriteXdr for PathPaymentStrictSendOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageSellOfferOp { @@ -24847,7 +24886,7 @@ impl WriteXdr for ManageSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageBuyOfferOp { @@ -24903,7 +24942,7 @@ impl WriteXdr for ManageBuyOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreatePassiveSellOfferOp { @@ -24968,7 +25007,7 @@ impl WriteXdr for CreatePassiveSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SetOptionsOp { @@ -25046,7 +25085,7 @@ impl WriteXdr for SetOptionsOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -25168,7 +25207,7 @@ impl WriteXdr for ChangeTrustAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ChangeTrustOp { @@ -25216,7 +25255,7 @@ impl WriteXdr for ChangeTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AllowTrustOp { @@ -25264,7 +25303,7 @@ impl WriteXdr for AllowTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageDataOp { @@ -25308,7 +25347,7 @@ impl WriteXdr for ManageDataOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BumpSequenceOp { @@ -25351,7 +25390,7 @@ impl WriteXdr for BumpSequenceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateClaimableBalanceOp { @@ -25398,7 +25437,7 @@ impl WriteXdr for CreateClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimClaimableBalanceOp { @@ -25439,7 +25478,7 @@ impl WriteXdr for ClaimClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BeginSponsoringFutureReservesOp { @@ -25482,7 +25521,7 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -25589,7 +25628,7 @@ impl WriteXdr for RevokeSponsorshipType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct RevokeSponsorshipOpSigner { @@ -25641,7 +25680,7 @@ impl WriteXdr for RevokeSponsorshipOpSigner { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -25751,7 +25790,7 @@ impl WriteXdr for RevokeSponsorshipOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClawbackOp { @@ -25798,7 +25837,7 @@ impl WriteXdr for ClawbackOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClawbackClaimableBalanceOp { @@ -25843,7 +25882,7 @@ impl WriteXdr for ClawbackClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SetTrustLineFlagsOp { @@ -25905,7 +25944,7 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolDepositOp { @@ -25961,7 +26000,7 @@ impl WriteXdr for LiquidityPoolDepositOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolWithdrawOp { @@ -26014,7 +26053,7 @@ impl WriteXdr for LiquidityPoolWithdrawOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26127,7 +26166,7 @@ impl WriteXdr for HostFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26234,7 +26273,7 @@ impl WriteXdr for ContractIdPreimageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractIdPreimageFromAddress { @@ -26286,7 +26325,7 @@ impl WriteXdr for ContractIdPreimageFromAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26395,7 +26434,7 @@ impl WriteXdr for ContractIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateContractArgs { @@ -26440,7 +26479,7 @@ impl WriteXdr for CreateContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeContractArgs { @@ -26493,7 +26532,7 @@ impl WriteXdr for InvokeContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26614,7 +26653,7 @@ impl WriteXdr for HostFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26724,7 +26763,7 @@ impl WriteXdr for SorobanAuthorizedFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26836,7 +26875,7 @@ impl WriteXdr for SorobanAuthorizedFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAuthorizedInvocation { @@ -26883,7 +26922,7 @@ impl WriteXdr for SorobanAuthorizedInvocation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAddressCredentials { @@ -26935,7 +26974,7 @@ impl WriteXdr for SorobanAddressCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -27045,7 +27084,7 @@ impl WriteXdr for SorobanCredentialsType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -27154,7 +27193,7 @@ impl WriteXdr for SorobanCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAuthorizationEntry { @@ -27201,7 +27240,7 @@ impl WriteXdr for SorobanAuthorizationEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeHostFunctionOp { @@ -27246,7 +27285,7 @@ impl WriteXdr for InvokeHostFunctionOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ExtendFootprintTtlOp { @@ -27290,7 +27329,7 @@ impl WriteXdr for ExtendFootprintTtlOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct RestoreFootprintOp { @@ -27385,7 +27424,7 @@ impl WriteXdr for RestoreFootprintOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -27765,7 +27804,7 @@ impl WriteXdr for OperationBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Operation { @@ -27811,7 +27850,7 @@ impl WriteXdr for Operation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageOperationId { @@ -27862,7 +27901,7 @@ impl WriteXdr for HashIdPreimageOperationId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageRevokeId { @@ -27916,7 +27955,7 @@ impl WriteXdr for HashIdPreimageRevokeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageContractId { @@ -27963,7 +28002,7 @@ impl WriteXdr for HashIdPreimageContractId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageSorobanAuthorization { @@ -28043,7 +28082,7 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28177,7 +28216,7 @@ impl WriteXdr for HashIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -28305,7 +28344,7 @@ impl WriteXdr for MemoType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28430,7 +28469,7 @@ impl WriteXdr for Memo { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TimeBounds { @@ -28475,7 +28514,7 @@ impl WriteXdr for TimeBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerBounds { @@ -28547,7 +28586,7 @@ impl WriteXdr for LedgerBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PreconditionsV2 { @@ -28606,7 +28645,7 @@ impl WriteXdr for PreconditionsV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -28722,7 +28761,7 @@ impl WriteXdr for PreconditionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28835,7 +28874,7 @@ impl WriteXdr for Preconditions { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerFootprint { @@ -28887,7 +28926,7 @@ impl WriteXdr for LedgerFootprint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanResources { @@ -28948,7 +28987,7 @@ impl WriteXdr for SorobanResources { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanTransactionData { @@ -28997,7 +29036,7 @@ impl WriteXdr for SorobanTransactionData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29106,7 +29145,7 @@ impl WriteXdr for TransactionV0Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV0 { @@ -29168,7 +29207,7 @@ impl WriteXdr for TransactionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV0Envelope { @@ -29216,7 +29255,7 @@ impl WriteXdr for TransactionV0Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29343,7 +29382,7 @@ impl WriteXdr for TransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Transaction { @@ -29405,7 +29444,7 @@ impl WriteXdr for Transaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV1Envelope { @@ -29451,7 +29490,7 @@ impl WriteXdr for TransactionV1Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29551,7 +29590,7 @@ impl WriteXdr for FeeBumpTransactionInnerTx { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29662,7 +29701,7 @@ impl WriteXdr for FeeBumpTransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FeeBumpTransaction { @@ -29715,7 +29754,7 @@ impl WriteXdr for FeeBumpTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FeeBumpTransactionEnvelope { @@ -29765,7 +29804,7 @@ impl WriteXdr for FeeBumpTransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29884,7 +29923,7 @@ impl WriteXdr for TransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29996,7 +30035,7 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSignaturePayload { @@ -30043,7 +30082,7 @@ impl WriteXdr for TransactionSignaturePayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30163,7 +30202,7 @@ impl WriteXdr for ClaimAtomType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimOfferAtomV0 { @@ -30229,7 +30268,7 @@ impl WriteXdr for ClaimOfferAtomV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimOfferAtom { @@ -30293,7 +30332,7 @@ impl WriteXdr for ClaimOfferAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimLiquidityAtom { @@ -30352,7 +30391,7 @@ impl WriteXdr for ClaimLiquidityAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -30475,7 +30514,7 @@ impl WriteXdr for ClaimAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30606,7 +30645,7 @@ impl WriteXdr for CreateAccountResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -30749,7 +30788,7 @@ impl WriteXdr for CreateAccountResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30910,7 +30949,7 @@ impl WriteXdr for PaymentResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -31100,7 +31139,7 @@ impl WriteXdr for PaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -31266,7 +31305,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SimplePaymentResult { @@ -31314,7 +31353,7 @@ impl WriteXdr for SimplePaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictReceiveResultSuccess { @@ -31380,7 +31419,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -31593,7 +31632,7 @@ impl WriteXdr for PathPaymentStrictReceiveResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -31758,7 +31797,7 @@ impl WriteXdr for PathPaymentStrictSendResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictSendResultSuccess { @@ -31823,7 +31862,7 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32035,7 +32074,7 @@ impl WriteXdr for PathPaymentStrictSendResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32202,7 +32241,7 @@ impl WriteXdr for ManageSellOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32317,7 +32356,7 @@ impl WriteXdr for ManageOfferEffect { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32440,7 +32479,7 @@ impl WriteXdr for ManageOfferSuccessResultOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageOfferSuccessResult { @@ -32499,7 +32538,7 @@ impl WriteXdr for ManageOfferSuccessResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32708,7 +32747,7 @@ impl WriteXdr for ManageSellOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32887,7 +32926,7 @@ impl WriteXdr for ManageBuyOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33089,7 +33128,7 @@ impl WriteXdr for ManageBuyOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33256,7 +33295,7 @@ impl WriteXdr for SetOptionsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33443,7 +33482,7 @@ impl WriteXdr for SetOptionsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33598,7 +33637,7 @@ impl WriteXdr for ChangeTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33769,7 +33808,7 @@ impl WriteXdr for ChangeTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33912,7 +33951,7 @@ impl WriteXdr for AllowTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34067,7 +34106,7 @@ impl WriteXdr for AllowTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34216,7 +34255,7 @@ impl WriteXdr for AccountMergeResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34371,7 +34410,7 @@ impl WriteXdr for AccountMergeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34476,7 +34515,7 @@ impl WriteXdr for InflationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InflationPayout { @@ -34524,7 +34563,7 @@ impl WriteXdr for InflationPayout { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34639,7 +34678,7 @@ impl WriteXdr for InflationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34770,7 +34809,7 @@ impl WriteXdr for ManageDataResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34904,7 +34943,7 @@ impl WriteXdr for ManageDataResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35014,7 +35053,7 @@ impl WriteXdr for BumpSequenceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35126,7 +35165,7 @@ impl WriteXdr for BumpSequenceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35264,7 +35303,7 @@ impl WriteXdr for CreateClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35410,7 +35449,7 @@ impl WriteXdr for CreateClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35547,7 +35586,7 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35692,7 +35731,7 @@ impl WriteXdr for ClaimClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35814,7 +35853,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35939,7 +35978,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36050,7 +36089,7 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36166,7 +36205,7 @@ impl WriteXdr for EndSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36303,7 +36342,7 @@ impl WriteXdr for RevokeSponsorshipResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36449,7 +36488,7 @@ impl WriteXdr for RevokeSponsorshipResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36580,7 +36619,7 @@ impl WriteXdr for ClawbackResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36717,7 +36756,7 @@ impl WriteXdr for ClawbackResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36839,7 +36878,7 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36969,7 +37008,7 @@ impl WriteXdr for ClawbackClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37106,7 +37145,7 @@ impl WriteXdr for SetTrustLineFlagsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37259,7 +37298,7 @@ impl WriteXdr for SetTrustLineFlagsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37408,7 +37447,7 @@ impl WriteXdr for LiquidityPoolDepositResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37572,7 +37611,7 @@ impl WriteXdr for LiquidityPoolDepositResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37709,7 +37748,7 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37856,7 +37895,7 @@ impl WriteXdr for LiquidityPoolWithdrawResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37993,7 +38032,7 @@ impl WriteXdr for InvokeHostFunctionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38142,7 +38181,7 @@ impl WriteXdr for InvokeHostFunctionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38267,7 +38306,7 @@ impl WriteXdr for ExtendFootprintTtlResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38402,7 +38441,7 @@ impl WriteXdr for ExtendFootprintTtlResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38527,7 +38566,7 @@ impl WriteXdr for RestoreFootprintResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38663,7 +38702,7 @@ impl WriteXdr for RestoreFootprintResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38851,7 +38890,7 @@ impl WriteXdr for OperationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39239,7 +39278,7 @@ impl WriteXdr for OperationResultTr { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39406,7 +39445,7 @@ impl WriteXdr for OperationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -39621,7 +39660,7 @@ impl WriteXdr for TransactionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39841,7 +39880,7 @@ impl WriteXdr for InnerTransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39974,7 +40013,7 @@ impl WriteXdr for InnerTransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InnerTransactionResult { @@ -40022,7 +40061,7 @@ impl WriteXdr for InnerTransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InnerTransactionResultPair { @@ -40089,7 +40128,7 @@ impl WriteXdr for InnerTransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40327,7 +40366,7 @@ impl WriteXdr for TransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40461,7 +40500,7 @@ impl WriteXdr for TransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResult { @@ -40505,7 +40544,11 @@ impl WriteXdr for TransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Hash(pub [u8; 32]); @@ -40623,7 +40666,11 @@ impl AsRef<[u8]> for Hash { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Uint256(pub [u8; 32]); @@ -40773,7 +40820,7 @@ pub type Int64 = i64; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -40828,7 +40875,7 @@ impl WriteXdr for TimePoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -40888,7 +40935,7 @@ impl WriteXdr for Duration { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40993,7 +41040,7 @@ impl WriteXdr for ExtensionPoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41118,7 +41165,7 @@ impl WriteXdr for CryptoKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41222,7 +41269,7 @@ impl WriteXdr for PublicKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41339,7 +41386,11 @@ impl WriteXdr for SignerKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum PublicKey { @@ -41441,7 +41492,11 @@ impl WriteXdr for PublicKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, @@ -41500,7 +41555,11 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum SignerKey { @@ -41618,7 +41677,7 @@ impl WriteXdr for SignerKey { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -41722,7 +41781,11 @@ impl AsRef<[u8]> for Signature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct SignatureHint(pub [u8; 4]); @@ -41840,7 +41903,11 @@ impl AsRef<[u8]> for SignatureHint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -41894,7 +41961,11 @@ impl WriteXdr for NodeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -41951,7 +42022,7 @@ impl WriteXdr for AccountId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Curve25519Secret { @@ -41992,7 +42063,7 @@ impl WriteXdr for Curve25519Secret { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Curve25519Public { @@ -42033,7 +42104,7 @@ impl WriteXdr for Curve25519Public { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HmacSha256Key { @@ -42074,7 +42145,7 @@ impl WriteXdr for HmacSha256Key { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HmacSha256Mac { @@ -42105,7 +42176,7 @@ impl WriteXdr for HmacSha256Mac { #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub enum TypeVariant { @@ -44267,7 +44338,7 @@ impl core::str::FromStr for TypeVariant { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case"), serde(untagged) )] diff --git a/src/next/generated.rs b/src/next/generated.rs index 205a26e0..7209a83c 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -931,7 +931,10 @@ impl WriteXdr for [T; N] { #[cfg(feature = "alloc")] #[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] -#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +#[cfg_attr( + feature = "serde", + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema) +)] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct VecM(Vec); @@ -1337,7 +1340,11 @@ impl WriteXdr for VecM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct BytesM(Vec); @@ -1718,7 +1725,11 @@ impl WriteXdr for BytesM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct StringM(Vec); @@ -2088,7 +2099,7 @@ impl WriteXdr for StringM { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Frame(pub T) @@ -2755,7 +2766,7 @@ mod test { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -2863,7 +2874,7 @@ impl AsRef<[u8]> for Value { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpBallot { @@ -2911,7 +2922,7 @@ impl WriteXdr for ScpBallot { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -3027,7 +3038,7 @@ impl WriteXdr for ScpStatementType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpNomination { @@ -3079,7 +3090,7 @@ impl WriteXdr for ScpNomination { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementPrepare { @@ -3139,7 +3150,7 @@ impl WriteXdr for ScpStatementPrepare { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementConfirm { @@ -3194,7 +3205,7 @@ impl WriteXdr for ScpStatementConfirm { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatementExternalize { @@ -3269,7 +3280,7 @@ impl WriteXdr for ScpStatementExternalize { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -3423,7 +3434,7 @@ impl WriteXdr for ScpStatementPledges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpStatement { @@ -3471,7 +3482,7 @@ impl WriteXdr for ScpStatement { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpEnvelope { @@ -3517,7 +3528,7 @@ impl WriteXdr for ScpEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpQuorumSet { @@ -3565,7 +3576,7 @@ impl WriteXdr for ScpQuorumSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractExecutionLanesV0 { @@ -3615,7 +3626,7 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractComputeV0 { @@ -3696,7 +3707,7 @@ impl WriteXdr for ConfigSettingContractComputeV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractLedgerCostV0 { @@ -3779,7 +3790,7 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractHistoricalDataV0 { @@ -3823,7 +3834,7 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractEventsV0 { @@ -3873,7 +3884,7 @@ impl WriteXdr for ConfigSettingContractEventsV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigSettingContractBandwidthV0 { @@ -3969,7 +3980,7 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -4186,7 +4197,7 @@ impl WriteXdr for ContractCostType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractCostParamEntry { @@ -4253,7 +4264,7 @@ impl WriteXdr for ContractCostParamEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StateArchivalSettings { @@ -4322,7 +4333,7 @@ impl WriteXdr for StateArchivalSettings { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct EvictionIterator { @@ -4375,7 +4386,7 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -4496,7 +4507,7 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -4693,7 +4704,7 @@ impl WriteXdr for ConfigSettingId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -4919,7 +4930,7 @@ impl WriteXdr for ConfigSettingEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5021,7 +5032,7 @@ impl WriteXdr for ScEnvMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -5122,7 +5133,7 @@ impl WriteXdr for ScEnvMetaEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScMetaV0 { @@ -5167,7 +5178,7 @@ impl WriteXdr for ScMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5269,7 +5280,7 @@ impl WriteXdr for ScMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -5406,7 +5417,7 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -5630,7 +5641,7 @@ impl WriteXdr for ScSpecType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeOption { @@ -5672,7 +5683,7 @@ impl WriteXdr for ScSpecTypeOption { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeResult { @@ -5716,7 +5727,7 @@ impl WriteXdr for ScSpecTypeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeVec { @@ -5758,7 +5769,7 @@ impl WriteXdr for ScSpecTypeVec { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeMap { @@ -5802,7 +5813,7 @@ impl WriteXdr for ScSpecTypeMap { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeTuple { @@ -5843,7 +5854,7 @@ impl WriteXdr for ScSpecTypeTuple { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeBytesN { @@ -5884,7 +5895,7 @@ impl WriteXdr for ScSpecTypeBytesN { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecTypeUdt { @@ -5958,7 +5969,7 @@ impl WriteXdr for ScSpecTypeUdt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -6230,7 +6241,7 @@ impl WriteXdr for ScSpecTypeDef { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtStructFieldV0 { @@ -6280,7 +6291,7 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtStructV0 { @@ -6331,7 +6342,7 @@ impl WriteXdr for ScSpecUdtStructV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionCaseVoidV0 { @@ -6377,7 +6388,7 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionCaseTupleV0 { @@ -6426,7 +6437,7 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -6536,7 +6547,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -6649,7 +6660,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtUnionV0 { @@ -6701,7 +6712,7 @@ impl WriteXdr for ScSpecUdtUnionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtEnumCaseV0 { @@ -6751,7 +6762,7 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtEnumV0 { @@ -6803,7 +6814,7 @@ impl WriteXdr for ScSpecUdtEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtErrorEnumCaseV0 { @@ -6853,7 +6864,7 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecUdtErrorEnumV0 { @@ -6905,7 +6916,7 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecFunctionInputV0 { @@ -6955,7 +6966,7 @@ impl WriteXdr for ScSpecFunctionInputV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScSpecFunctionV0 { @@ -7010,7 +7021,7 @@ impl WriteXdr for ScSpecFunctionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7144,7 +7155,7 @@ impl WriteXdr for ScSpecEntryKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -7327,7 +7338,7 @@ impl WriteXdr for ScSpecEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7546,7 +7557,7 @@ impl WriteXdr for ScValType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7697,7 +7708,7 @@ impl WriteXdr for ScErrorType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -7858,7 +7869,7 @@ impl WriteXdr for ScErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -8015,7 +8026,7 @@ impl WriteXdr for ScError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UInt128Parts { @@ -8059,7 +8070,7 @@ impl WriteXdr for UInt128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Int128Parts { @@ -8105,7 +8116,7 @@ impl WriteXdr for Int128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UInt256Parts { @@ -8157,7 +8168,7 @@ impl WriteXdr for UInt256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Int256Parts { @@ -8209,7 +8220,7 @@ impl WriteXdr for Int256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -8319,7 +8330,7 @@ impl WriteXdr for ContractExecutableType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -8427,7 +8438,7 @@ impl WriteXdr for ContractExecutable { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -8534,7 +8545,11 @@ impl WriteXdr for ScAddressType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum ScAddress { @@ -8642,7 +8657,7 @@ pub const SCSYMBOL_LIMIT: u64 = 32; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8747,7 +8762,7 @@ impl AsRef<[ScVal]> for ScVec { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8852,7 +8867,7 @@ impl AsRef<[ScMapEntry]> for ScMap { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -8957,7 +8972,7 @@ impl AsRef<[u8]> for ScBytes { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -9062,7 +9077,7 @@ impl AsRef<[u8]> for ScString { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -9168,7 +9183,7 @@ impl AsRef<[u8]> for ScSymbol { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScNonceKey { @@ -9209,7 +9224,7 @@ impl WriteXdr for ScNonceKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScContractInstance { @@ -9311,7 +9326,7 @@ impl WriteXdr for ScContractInstance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9563,7 +9578,7 @@ impl WriteXdr for ScVal { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScMapEntry { @@ -9611,7 +9626,7 @@ impl WriteXdr for ScMapEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9716,7 +9731,7 @@ impl WriteXdr for StoredTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StoredDebugTransactionSet { @@ -9765,7 +9780,7 @@ impl WriteXdr for StoredDebugTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PersistedScpStateV0 { @@ -9814,7 +9829,7 @@ impl WriteXdr for PersistedScpStateV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PersistedScpStateV1 { @@ -9862,7 +9877,7 @@ impl WriteXdr for PersistedScpStateV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -9962,7 +9977,11 @@ impl WriteXdr for PersistedScpState { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Thresholds(pub [u8; 4]); @@ -10081,7 +10100,7 @@ impl AsRef<[u8]> for Thresholds { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10186,7 +10205,7 @@ impl AsRef<[u8]> for String32 { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10290,7 +10309,7 @@ impl AsRef<[u8]> for String64 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10346,7 +10365,7 @@ impl WriteXdr for SequenceNumber { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10450,7 +10469,7 @@ impl AsRef<[u8]> for DataValue { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -10505,7 +10524,11 @@ impl WriteXdr for PoolId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct AssetCode4(pub [u8; 4]); @@ -10606,7 +10629,11 @@ impl AsRef<[u8]> for AssetCode4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct AssetCode12(pub [u8; 12]); @@ -10714,7 +10741,7 @@ impl AsRef<[u8]> for AssetCode12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -10836,7 +10863,11 @@ impl WriteXdr for AssetType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum AssetCode { @@ -10939,7 +10970,7 @@ impl WriteXdr for AssetCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AlphaNum4 { @@ -10984,7 +11015,7 @@ impl WriteXdr for AlphaNum4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AlphaNum12 { @@ -11038,7 +11069,7 @@ impl WriteXdr for AlphaNum12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -11151,7 +11182,7 @@ impl WriteXdr for Asset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Price { @@ -11196,7 +11227,7 @@ impl WriteXdr for Price { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Liabilities { @@ -11244,7 +11275,7 @@ impl WriteXdr for Liabilities { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11368,7 +11399,7 @@ impl WriteXdr for ThresholdIndexes { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11518,7 +11549,7 @@ impl WriteXdr for LedgerEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Signer { @@ -11576,7 +11607,7 @@ impl WriteXdr for Signer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -11716,7 +11747,7 @@ pub const MAX_SIGNERS: u64 = 20; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -11782,7 +11813,7 @@ impl WriteXdr for SponsorshipDescriptor { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV3 { @@ -11833,7 +11864,7 @@ impl WriteXdr for AccountEntryExtensionV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -11947,7 +11978,7 @@ impl WriteXdr for AccountEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV2 { @@ -12001,7 +12032,7 @@ impl WriteXdr for AccountEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12113,7 +12144,7 @@ impl WriteXdr for AccountEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntryExtensionV1 { @@ -12161,7 +12192,7 @@ impl WriteXdr for AccountEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12288,7 +12319,7 @@ impl WriteXdr for AccountEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AccountEntry { @@ -12364,7 +12395,7 @@ impl WriteXdr for AccountEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -12503,7 +12534,7 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -12616,7 +12647,7 @@ impl WriteXdr for LiquidityPoolType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12737,7 +12768,7 @@ impl WriteXdr for TrustLineAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -12842,7 +12873,7 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntryExtensionV2 { @@ -12890,7 +12921,7 @@ impl WriteXdr for TrustLineEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13002,7 +13033,7 @@ impl WriteXdr for TrustLineEntryV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntryV1 { @@ -13062,7 +13093,7 @@ impl WriteXdr for TrustLineEntryV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13193,7 +13224,7 @@ impl WriteXdr for TrustLineEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TrustLineEntry { @@ -13252,7 +13283,7 @@ impl WriteXdr for TrustLineEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -13362,7 +13393,7 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13480,7 +13511,7 @@ impl WriteXdr for OfferEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct OfferEntry { @@ -13544,7 +13575,7 @@ impl WriteXdr for OfferEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13652,7 +13683,7 @@ impl WriteXdr for DataEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DataEntry { @@ -13708,7 +13739,7 @@ impl WriteXdr for DataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -13850,7 +13881,7 @@ impl WriteXdr for ClaimPredicateType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -13992,7 +14023,7 @@ impl WriteXdr for ClaimPredicate { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14093,7 +14124,7 @@ impl WriteXdr for ClaimantType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimantV0 { @@ -14143,7 +14174,7 @@ impl WriteXdr for ClaimantV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14242,7 +14273,7 @@ impl WriteXdr for Claimant { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14345,7 +14376,7 @@ impl WriteXdr for ClaimableBalanceIdType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14449,7 +14480,7 @@ impl WriteXdr for ClaimableBalanceId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -14560,7 +14591,7 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14665,7 +14696,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimableBalanceEntryExtensionV1 { @@ -14713,7 +14744,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -14836,7 +14867,7 @@ impl WriteXdr for ClaimableBalanceEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimableBalanceEntry { @@ -14891,7 +14922,7 @@ impl WriteXdr for ClaimableBalanceEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolConstantProductParameters { @@ -14944,7 +14975,7 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolEntryConstantProduct { @@ -15008,7 +15039,7 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15128,7 +15159,7 @@ impl WriteXdr for LiquidityPoolEntryBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolEntry { @@ -15173,7 +15204,7 @@ impl WriteXdr for LiquidityPoolEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -15283,7 +15314,7 @@ impl WriteXdr for ContractDataDurability { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractDataEntry { @@ -15338,7 +15369,7 @@ impl WriteXdr for ContractDataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractCodeEntry { @@ -15386,7 +15417,7 @@ impl WriteXdr for ContractCodeEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TtlEntry { @@ -15432,7 +15463,7 @@ impl WriteXdr for TtlEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15537,7 +15568,7 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerEntryExtensionV1 { @@ -15601,7 +15632,7 @@ impl WriteXdr for LedgerEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15780,7 +15811,7 @@ impl WriteXdr for LedgerEntryData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -15918,7 +15949,7 @@ impl WriteXdr for LedgerEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerEntry { @@ -15965,7 +15996,7 @@ impl WriteXdr for LedgerEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyAccount { @@ -16007,7 +16038,7 @@ impl WriteXdr for LedgerKeyAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyTrustLine { @@ -16052,7 +16083,7 @@ impl WriteXdr for LedgerKeyTrustLine { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyOffer { @@ -16097,7 +16128,7 @@ impl WriteXdr for LedgerKeyOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyData { @@ -16141,7 +16172,7 @@ impl WriteXdr for LedgerKeyData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyClaimableBalance { @@ -16182,7 +16213,7 @@ impl WriteXdr for LedgerKeyClaimableBalance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyLiquidityPool { @@ -16225,7 +16256,7 @@ impl WriteXdr for LedgerKeyLiquidityPool { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyContractData { @@ -16272,7 +16303,7 @@ impl WriteXdr for LedgerKeyContractData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyContractCode { @@ -16313,7 +16344,7 @@ impl WriteXdr for LedgerKeyContractCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyConfigSetting { @@ -16355,7 +16386,7 @@ impl WriteXdr for LedgerKeyConfigSetting { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerKeyTtl { @@ -16457,7 +16488,7 @@ impl WriteXdr for LedgerKeyTtl { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -16642,7 +16673,7 @@ impl WriteXdr for LedgerKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -16789,7 +16820,7 @@ impl WriteXdr for EnvelopeType { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -16898,7 +16929,7 @@ impl AsRef<[u8]> for UpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17002,7 +17033,7 @@ impl WriteXdr for StellarValueType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseValueSignature { @@ -17050,7 +17081,7 @@ impl WriteXdr for LedgerCloseValueSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17171,7 +17202,7 @@ impl WriteXdr for StellarValueExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct StellarValue { @@ -17232,7 +17263,7 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17344,7 +17375,7 @@ impl WriteXdr for LedgerHeaderFlags { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17449,7 +17480,7 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeaderExtensionV1 { @@ -17497,7 +17528,7 @@ impl WriteXdr for LedgerHeaderExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -17635,7 +17666,7 @@ impl WriteXdr for LedgerHeaderExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeader { @@ -17725,7 +17756,7 @@ impl WriteXdr for LedgerHeader { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -17859,7 +17890,7 @@ impl WriteXdr for LedgerUpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigUpgradeSetKey { @@ -17920,7 +17951,7 @@ impl WriteXdr for ConfigUpgradeSetKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18065,7 +18096,7 @@ impl WriteXdr for LedgerUpgrade { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ConfigUpgradeSet { @@ -18112,7 +18143,7 @@ impl WriteXdr for ConfigUpgradeSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -18229,7 +18260,7 @@ impl WriteXdr for BucketEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18336,7 +18367,7 @@ impl WriteXdr for BucketMetadataExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BucketMetadata { @@ -18388,7 +18419,7 @@ impl WriteXdr for BucketMetadata { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18510,7 +18541,7 @@ impl WriteXdr for BucketEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -18612,7 +18643,7 @@ impl WriteXdr for TxSetComponentType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TxSetComponentTxsMaybeDiscountedFee { @@ -18662,7 +18693,7 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18769,7 +18800,7 @@ impl WriteXdr for TxSetComponent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -18868,7 +18899,7 @@ impl WriteXdr for TransactionPhase { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSet { @@ -18913,7 +18944,7 @@ impl WriteXdr for TransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSetV1 { @@ -18960,7 +18991,7 @@ impl WriteXdr for TransactionSetV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19059,7 +19090,7 @@ impl WriteXdr for GeneralizedTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultPair { @@ -19103,7 +19134,7 @@ impl WriteXdr for TransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultSet { @@ -19148,7 +19179,7 @@ impl WriteXdr for TransactionResultSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19262,7 +19293,7 @@ impl WriteXdr for TransactionHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionHistoryEntry { @@ -19311,7 +19342,7 @@ impl WriteXdr for TransactionHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19418,7 +19449,7 @@ impl WriteXdr for TransactionHistoryResultEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionHistoryResultEntry { @@ -19467,7 +19498,7 @@ impl WriteXdr for TransactionHistoryResultEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19574,7 +19605,7 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerHeaderHistoryEntry { @@ -19622,7 +19653,7 @@ impl WriteXdr for LedgerHeaderHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerScpMessages { @@ -19667,7 +19698,7 @@ impl WriteXdr for LedgerScpMessages { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ScpHistoryEntryV0 { @@ -19713,7 +19744,7 @@ impl WriteXdr for ScpHistoryEntryV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -19815,7 +19846,7 @@ impl WriteXdr for ScpHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -19937,7 +19968,7 @@ impl WriteXdr for LedgerEntryChangeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20053,7 +20084,7 @@ impl WriteXdr for LedgerEntryChange { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -20160,7 +20191,7 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct OperationMeta { @@ -20202,7 +20233,7 @@ impl WriteXdr for OperationMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV1 { @@ -20250,7 +20281,7 @@ impl WriteXdr for TransactionMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV2 { @@ -20300,7 +20331,7 @@ impl WriteXdr for TransactionMetaV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -20411,7 +20442,7 @@ impl WriteXdr for ContractEventType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractEventV0 { @@ -20461,7 +20492,7 @@ impl WriteXdr for ContractEventV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20575,7 +20606,7 @@ impl WriteXdr for ContractEventBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractEvent { @@ -20626,7 +20657,7 @@ impl WriteXdr for ContractEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DiagnosticEvent { @@ -20679,7 +20710,7 @@ impl WriteXdr for DiagnosticEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanTransactionMeta { @@ -20737,7 +20768,7 @@ impl WriteXdr for SorobanTransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionMetaV3 { @@ -20791,7 +20822,7 @@ impl WriteXdr for TransactionMetaV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeHostFunctionSuccessPreImage { @@ -20843,7 +20874,7 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -20958,7 +20989,7 @@ impl WriteXdr for TransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResultMeta { @@ -21006,7 +21037,7 @@ impl WriteXdr for TransactionResultMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct UpgradeEntryMeta { @@ -21063,7 +21094,7 @@ impl WriteXdr for UpgradeEntryMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseMetaV0 { @@ -21144,7 +21175,7 @@ impl WriteXdr for LedgerCloseMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerCloseMetaV1 { @@ -21213,7 +21244,7 @@ impl WriteXdr for LedgerCloseMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -21321,7 +21352,7 @@ impl WriteXdr for LedgerCloseMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -21440,7 +21471,7 @@ impl WriteXdr for ErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SError { @@ -21484,7 +21515,7 @@ impl WriteXdr for SError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SendMore { @@ -21526,7 +21557,7 @@ impl WriteXdr for SendMore { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SendMoreExtended { @@ -21572,7 +21603,7 @@ impl WriteXdr for SendMoreExtended { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AuthCert { @@ -21627,7 +21658,7 @@ impl WriteXdr for AuthCert { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Hello { @@ -21700,7 +21731,7 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Auth { @@ -21743,7 +21774,7 @@ impl WriteXdr for Auth { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -21850,7 +21881,7 @@ impl WriteXdr for IpAddrType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -21962,7 +21993,7 @@ impl WriteXdr for PeerAddressIp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PeerAddress { @@ -22039,7 +22070,7 @@ impl WriteXdr for PeerAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22239,7 +22270,7 @@ impl WriteXdr for MessageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DontHave { @@ -22284,7 +22315,7 @@ impl WriteXdr for DontHave { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22386,7 +22417,7 @@ impl WriteXdr for SurveyMessageCommandType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -22494,7 +22525,7 @@ impl WriteXdr for SurveyMessageResponseType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SurveyRequestMessage { @@ -22548,7 +22579,7 @@ impl WriteXdr for SurveyRequestMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SignedSurveyRequestMessage { @@ -22590,7 +22621,7 @@ impl WriteXdr for SignedSurveyRequestMessage { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -22701,7 +22732,7 @@ impl AsRef<[u8]> for EncryptedBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SurveyResponseMessage { @@ -22755,7 +22786,7 @@ impl WriteXdr for SurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SignedSurveyResponseMessage { @@ -22815,7 +22846,7 @@ impl WriteXdr for SignedSurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PeerStats { @@ -22896,7 +22927,7 @@ impl WriteXdr for PeerStats { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23007,7 +23038,7 @@ impl AsRef<[PeerStats]> for PeerStatList { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TopologyResponseBodyV0 { @@ -23064,7 +23095,7 @@ impl WriteXdr for TopologyResponseBodyV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TopologyResponseBodyV1 { @@ -23124,7 +23155,7 @@ impl WriteXdr for TopologyResponseBodyV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23235,7 +23266,7 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23342,7 +23373,7 @@ impl AsRef<[Hash]> for TxAdvertVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FloodAdvert { @@ -23389,7 +23420,7 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -23496,7 +23527,7 @@ impl AsRef<[Hash]> for TxDemandVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FloodDemand { @@ -23584,7 +23615,7 @@ impl WriteXdr for FloodDemand { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23829,7 +23860,7 @@ impl WriteXdr for StellarMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AuthenticatedMessageV0 { @@ -23883,7 +23914,7 @@ impl WriteXdr for AuthenticatedMessageV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -23991,7 +24022,7 @@ pub const MAX_OPS_PER_TX: u64 = 100; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -24096,7 +24127,11 @@ impl WriteXdr for LiquidityPoolParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct MuxedAccountMed25519 { pub id: u64, @@ -24147,7 +24182,11 @@ impl WriteXdr for MuxedAccountMed25519 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { @@ -24252,7 +24291,7 @@ impl WriteXdr for MuxedAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct DecoratedSignature { @@ -24323,7 +24362,7 @@ impl WriteXdr for DecoratedSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -24558,7 +24597,7 @@ impl WriteXdr for OperationType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateAccountOp { @@ -24604,7 +24643,7 @@ impl WriteXdr for CreateAccountOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PaymentOp { @@ -24660,7 +24699,7 @@ impl WriteXdr for PaymentOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictReceiveOp { @@ -24725,7 +24764,7 @@ impl WriteXdr for PathPaymentStrictReceiveOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictSendOp { @@ -24787,7 +24826,7 @@ impl WriteXdr for PathPaymentStrictSendOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageSellOfferOp { @@ -24847,7 +24886,7 @@ impl WriteXdr for ManageSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageBuyOfferOp { @@ -24903,7 +24942,7 @@ impl WriteXdr for ManageBuyOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreatePassiveSellOfferOp { @@ -24968,7 +25007,7 @@ impl WriteXdr for CreatePassiveSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SetOptionsOp { @@ -25046,7 +25085,7 @@ impl WriteXdr for SetOptionsOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -25168,7 +25207,7 @@ impl WriteXdr for ChangeTrustAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ChangeTrustOp { @@ -25216,7 +25255,7 @@ impl WriteXdr for ChangeTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct AllowTrustOp { @@ -25264,7 +25303,7 @@ impl WriteXdr for AllowTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageDataOp { @@ -25308,7 +25347,7 @@ impl WriteXdr for ManageDataOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BumpSequenceOp { @@ -25351,7 +25390,7 @@ impl WriteXdr for BumpSequenceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateClaimableBalanceOp { @@ -25398,7 +25437,7 @@ impl WriteXdr for CreateClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimClaimableBalanceOp { @@ -25439,7 +25478,7 @@ impl WriteXdr for ClaimClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct BeginSponsoringFutureReservesOp { @@ -25482,7 +25521,7 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -25589,7 +25628,7 @@ impl WriteXdr for RevokeSponsorshipType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct RevokeSponsorshipOpSigner { @@ -25641,7 +25680,7 @@ impl WriteXdr for RevokeSponsorshipOpSigner { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -25751,7 +25790,7 @@ impl WriteXdr for RevokeSponsorshipOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClawbackOp { @@ -25798,7 +25837,7 @@ impl WriteXdr for ClawbackOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClawbackClaimableBalanceOp { @@ -25843,7 +25882,7 @@ impl WriteXdr for ClawbackClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SetTrustLineFlagsOp { @@ -25905,7 +25944,7 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolDepositOp { @@ -25961,7 +26000,7 @@ impl WriteXdr for LiquidityPoolDepositOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LiquidityPoolWithdrawOp { @@ -26014,7 +26053,7 @@ impl WriteXdr for LiquidityPoolWithdrawOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26127,7 +26166,7 @@ impl WriteXdr for HostFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26234,7 +26273,7 @@ impl WriteXdr for ContractIdPreimageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ContractIdPreimageFromAddress { @@ -26286,7 +26325,7 @@ impl WriteXdr for ContractIdPreimageFromAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26395,7 +26434,7 @@ impl WriteXdr for ContractIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct CreateContractArgs { @@ -26440,7 +26479,7 @@ impl WriteXdr for CreateContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeContractArgs { @@ -26493,7 +26532,7 @@ impl WriteXdr for InvokeContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26614,7 +26653,7 @@ impl WriteXdr for HostFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -26724,7 +26763,7 @@ impl WriteXdr for SorobanAuthorizedFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -26836,7 +26875,7 @@ impl WriteXdr for SorobanAuthorizedFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAuthorizedInvocation { @@ -26883,7 +26922,7 @@ impl WriteXdr for SorobanAuthorizedInvocation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAddressCredentials { @@ -26935,7 +26974,7 @@ impl WriteXdr for SorobanAddressCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -27045,7 +27084,7 @@ impl WriteXdr for SorobanCredentialsType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -27154,7 +27193,7 @@ impl WriteXdr for SorobanCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanAuthorizationEntry { @@ -27201,7 +27240,7 @@ impl WriteXdr for SorobanAuthorizationEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InvokeHostFunctionOp { @@ -27246,7 +27285,7 @@ impl WriteXdr for InvokeHostFunctionOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ExtendFootprintTtlOp { @@ -27290,7 +27329,7 @@ impl WriteXdr for ExtendFootprintTtlOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct RestoreFootprintOp { @@ -27385,7 +27424,7 @@ impl WriteXdr for RestoreFootprintOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -27765,7 +27804,7 @@ impl WriteXdr for OperationBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Operation { @@ -27811,7 +27850,7 @@ impl WriteXdr for Operation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageOperationId { @@ -27862,7 +27901,7 @@ impl WriteXdr for HashIdPreimageOperationId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageRevokeId { @@ -27916,7 +27955,7 @@ impl WriteXdr for HashIdPreimageRevokeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageContractId { @@ -27963,7 +28002,7 @@ impl WriteXdr for HashIdPreimageContractId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HashIdPreimageSorobanAuthorization { @@ -28043,7 +28082,7 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28177,7 +28216,7 @@ impl WriteXdr for HashIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -28305,7 +28344,7 @@ impl WriteXdr for MemoType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28430,7 +28469,7 @@ impl WriteXdr for Memo { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TimeBounds { @@ -28475,7 +28514,7 @@ impl WriteXdr for TimeBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerBounds { @@ -28547,7 +28586,7 @@ impl WriteXdr for LedgerBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PreconditionsV2 { @@ -28606,7 +28645,7 @@ impl WriteXdr for PreconditionsV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -28722,7 +28761,7 @@ impl WriteXdr for PreconditionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -28835,7 +28874,7 @@ impl WriteXdr for Preconditions { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct LedgerFootprint { @@ -28887,7 +28926,7 @@ impl WriteXdr for LedgerFootprint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanResources { @@ -28948,7 +28987,7 @@ impl WriteXdr for SorobanResources { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SorobanTransactionData { @@ -28997,7 +29036,7 @@ impl WriteXdr for SorobanTransactionData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29106,7 +29145,7 @@ impl WriteXdr for TransactionV0Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV0 { @@ -29168,7 +29207,7 @@ impl WriteXdr for TransactionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV0Envelope { @@ -29216,7 +29255,7 @@ impl WriteXdr for TransactionV0Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29343,7 +29382,7 @@ impl WriteXdr for TransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Transaction { @@ -29405,7 +29444,7 @@ impl WriteXdr for Transaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionV1Envelope { @@ -29451,7 +29490,7 @@ impl WriteXdr for TransactionV1Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29551,7 +29590,7 @@ impl WriteXdr for FeeBumpTransactionInnerTx { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29662,7 +29701,7 @@ impl WriteXdr for FeeBumpTransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FeeBumpTransaction { @@ -29715,7 +29754,7 @@ impl WriteXdr for FeeBumpTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct FeeBumpTransactionEnvelope { @@ -29765,7 +29804,7 @@ impl WriteXdr for FeeBumpTransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29884,7 +29923,7 @@ impl WriteXdr for TransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -29996,7 +30035,7 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionSignaturePayload { @@ -30043,7 +30082,7 @@ impl WriteXdr for TransactionSignaturePayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30163,7 +30202,7 @@ impl WriteXdr for ClaimAtomType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimOfferAtomV0 { @@ -30229,7 +30268,7 @@ impl WriteXdr for ClaimOfferAtomV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimOfferAtom { @@ -30293,7 +30332,7 @@ impl WriteXdr for ClaimOfferAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ClaimLiquidityAtom { @@ -30352,7 +30391,7 @@ impl WriteXdr for ClaimLiquidityAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -30475,7 +30514,7 @@ impl WriteXdr for ClaimAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30606,7 +30645,7 @@ impl WriteXdr for CreateAccountResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -30749,7 +30788,7 @@ impl WriteXdr for CreateAccountResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -30910,7 +30949,7 @@ impl WriteXdr for PaymentResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -31100,7 +31139,7 @@ impl WriteXdr for PaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -31266,7 +31305,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct SimplePaymentResult { @@ -31314,7 +31353,7 @@ impl WriteXdr for SimplePaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictReceiveResultSuccess { @@ -31380,7 +31419,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -31593,7 +31632,7 @@ impl WriteXdr for PathPaymentStrictReceiveResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -31758,7 +31797,7 @@ impl WriteXdr for PathPaymentStrictSendResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct PathPaymentStrictSendResultSuccess { @@ -31823,7 +31862,7 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32035,7 +32074,7 @@ impl WriteXdr for PathPaymentStrictSendResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32202,7 +32241,7 @@ impl WriteXdr for ManageSellOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32317,7 +32356,7 @@ impl WriteXdr for ManageOfferEffect { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32440,7 +32479,7 @@ impl WriteXdr for ManageOfferSuccessResultOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct ManageOfferSuccessResult { @@ -32499,7 +32538,7 @@ impl WriteXdr for ManageOfferSuccessResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -32708,7 +32747,7 @@ impl WriteXdr for ManageSellOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -32887,7 +32926,7 @@ impl WriteXdr for ManageBuyOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33089,7 +33128,7 @@ impl WriteXdr for ManageBuyOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33256,7 +33295,7 @@ impl WriteXdr for SetOptionsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33443,7 +33482,7 @@ impl WriteXdr for SetOptionsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33598,7 +33637,7 @@ impl WriteXdr for ChangeTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -33769,7 +33808,7 @@ impl WriteXdr for ChangeTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -33912,7 +33951,7 @@ impl WriteXdr for AllowTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34067,7 +34106,7 @@ impl WriteXdr for AllowTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34216,7 +34255,7 @@ impl WriteXdr for AccountMergeResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34371,7 +34410,7 @@ impl WriteXdr for AccountMergeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34476,7 +34515,7 @@ impl WriteXdr for InflationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InflationPayout { @@ -34524,7 +34563,7 @@ impl WriteXdr for InflationPayout { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34639,7 +34678,7 @@ impl WriteXdr for InflationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -34770,7 +34809,7 @@ impl WriteXdr for ManageDataResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -34904,7 +34943,7 @@ impl WriteXdr for ManageDataResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35014,7 +35053,7 @@ impl WriteXdr for BumpSequenceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35126,7 +35165,7 @@ impl WriteXdr for BumpSequenceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35264,7 +35303,7 @@ impl WriteXdr for CreateClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35410,7 +35449,7 @@ impl WriteXdr for CreateClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35547,7 +35586,7 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35692,7 +35731,7 @@ impl WriteXdr for ClaimClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -35814,7 +35853,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -35939,7 +35978,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36050,7 +36089,7 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36166,7 +36205,7 @@ impl WriteXdr for EndSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36303,7 +36342,7 @@ impl WriteXdr for RevokeSponsorshipResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36449,7 +36488,7 @@ impl WriteXdr for RevokeSponsorshipResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36580,7 +36619,7 @@ impl WriteXdr for ClawbackResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36717,7 +36756,7 @@ impl WriteXdr for ClawbackResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -36839,7 +36878,7 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -36969,7 +37008,7 @@ impl WriteXdr for ClawbackClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37106,7 +37145,7 @@ impl WriteXdr for SetTrustLineFlagsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37259,7 +37298,7 @@ impl WriteXdr for SetTrustLineFlagsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37408,7 +37447,7 @@ impl WriteXdr for LiquidityPoolDepositResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37572,7 +37611,7 @@ impl WriteXdr for LiquidityPoolDepositResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37709,7 +37748,7 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -37856,7 +37895,7 @@ impl WriteXdr for LiquidityPoolWithdrawResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -37993,7 +38032,7 @@ impl WriteXdr for InvokeHostFunctionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38142,7 +38181,7 @@ impl WriteXdr for InvokeHostFunctionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38267,7 +38306,7 @@ impl WriteXdr for ExtendFootprintTtlResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38402,7 +38441,7 @@ impl WriteXdr for ExtendFootprintTtlResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38527,7 +38566,7 @@ impl WriteXdr for RestoreFootprintResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -38663,7 +38702,7 @@ impl WriteXdr for RestoreFootprintResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -38851,7 +38890,7 @@ impl WriteXdr for OperationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39239,7 +39278,7 @@ impl WriteXdr for OperationResultTr { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39406,7 +39445,7 @@ impl WriteXdr for OperationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -39621,7 +39660,7 @@ impl WriteXdr for TransactionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39841,7 +39880,7 @@ impl WriteXdr for InnerTransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -39974,7 +40013,7 @@ impl WriteXdr for InnerTransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InnerTransactionResult { @@ -40022,7 +40061,7 @@ impl WriteXdr for InnerTransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct InnerTransactionResultPair { @@ -40089,7 +40128,7 @@ impl WriteXdr for InnerTransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40327,7 +40366,7 @@ impl WriteXdr for TransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40461,7 +40500,7 @@ impl WriteXdr for TransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct TransactionResult { @@ -40505,7 +40544,11 @@ impl WriteXdr for TransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Hash(pub [u8; 32]); @@ -40623,7 +40666,11 @@ impl AsRef<[u8]> for Hash { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct Uint256(pub [u8; 32]); @@ -40773,7 +40820,7 @@ pub type Int64 = i64; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -40828,7 +40875,7 @@ impl WriteXdr for TimePoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -40888,7 +40935,7 @@ impl WriteXdr for Duration { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[allow(clippy::large_enum_variant)] @@ -40993,7 +41040,7 @@ impl WriteXdr for ExtensionPoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41118,7 +41165,7 @@ impl WriteXdr for CryptoKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41222,7 +41269,7 @@ impl WriteXdr for PublicKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[repr(i32)] @@ -41339,7 +41386,11 @@ impl WriteXdr for SignerKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum PublicKey { @@ -41441,7 +41492,11 @@ impl WriteXdr for PublicKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, @@ -41500,7 +41555,11 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[allow(clippy::large_enum_variant)] pub enum SignerKey { @@ -41618,7 +41677,7 @@ impl WriteXdr for SignerKey { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] #[derive(Debug)] @@ -41722,7 +41781,11 @@ impl AsRef<[u8]> for Signature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] pub struct SignatureHint(pub [u8; 4]); @@ -41840,7 +41903,11 @@ impl AsRef<[u8]> for SignatureHint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -41894,7 +41961,11 @@ impl WriteXdr for NodeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) + derive( + serde_with::SerializeDisplay, + serde_with::DeserializeFromStr, + schemars::JsonSchema + ) )] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -41951,7 +42022,7 @@ impl WriteXdr for AccountId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Curve25519Secret { @@ -41992,7 +42063,7 @@ impl WriteXdr for Curve25519Secret { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct Curve25519Public { @@ -42033,7 +42104,7 @@ impl WriteXdr for Curve25519Public { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HmacSha256Key { @@ -42074,7 +42145,7 @@ impl WriteXdr for HmacSha256Key { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub struct HmacSha256Mac { @@ -42105,7 +42176,7 @@ impl WriteXdr for HmacSha256Mac { #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case") )] pub enum TypeVariant { @@ -44267,7 +44338,7 @@ impl core::str::FromStr for TypeVariant { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize), + derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), serde(rename_all = "snake_case"), serde(untagged) )] From 3a547ec3836b4e8eeb15f16b707853ea19d21266 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Mon, 4 Mar 2024 21:50:51 +1000 Subject: [PATCH 02/25] add test --- Cargo.toml | 1 + tests/serde_tx_schema.rs | 3434 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 3435 insertions(+) create mode 100644 tests/serde_tx_schema.rs diff --git a/Cargo.toml b/Cargo.toml index e29ae380..96c8f82e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ schemars = { version = "0.8.16", optional = true } [dev_dependencies] serde_json = "1.0.89" +schemars = "0.8.16" [features] default = ["std", "curr"] diff --git a/tests/serde_tx_schema.rs b/tests/serde_tx_schema.rs new file mode 100644 index 00000000..83757f0a --- /dev/null +++ b/tests/serde_tx_schema.rs @@ -0,0 +1,3434 @@ +#![cfg(feature = "curr")] +#![cfg(all(feature = "std", feature = "serde"))] + +use stellar_xdr::curr as stellar_xdr; +use stellar_xdr::TransactionEnvelope; + +#[cfg(feature = "curr")] +#[test] +fn test_serde_tx_schema() -> Result<(), Box> { + let schema = schemars::schema_for!(TransactionEnvelope); + let s = serde_json::to_string_pretty(&schema)?; + println!("{s}"); + assert_eq!( + s, + r##"{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "TransactionEnvelope", + "description": "TransactionEnvelope is an XDR Union defines as:\n\n```text union TransactionEnvelope switch (EnvelopeType type) { case ENVELOPE_TYPE_TX_V0: TransactionV0Envelope v0; case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; case ENVELOPE_TYPE_TX_FEE_BUMP: FeeBumpTransactionEnvelope feeBump; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "tx_v0" + ], + "properties": { + "tx_v0": { + "$ref": "#/definitions/TransactionV0Envelope" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "tx" + ], + "properties": { + "tx": { + "$ref": "#/definitions/TransactionV1Envelope" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "tx_fee_bump" + ], + "properties": { + "tx_fee_bump": { + "$ref": "#/definitions/FeeBumpTransactionEnvelope" + } + }, + "additionalProperties": false + } + ], + "definitions": { + "AccountId": { + "description": "AccountId is an XDR Typedef defines as:\n\n```text typedef PublicKey AccountID; ```", + "allOf": [ + { + "$ref": "#/definitions/PublicKey" + } + ] + }, + "AllowTrustOp": { + "description": "AllowTrustOp is an XDR Struct defines as:\n\n```text struct AllowTrustOp { AccountID trustor; AssetCode asset;\n\n// One of 0, AUTHORIZED_FLAG, or AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG uint32 authorize; }; ```", + "type": "object", + "required": [ + "asset", + "authorize", + "trustor" + ], + "properties": { + "asset": { + "$ref": "#/definitions/AssetCode" + }, + "authorize": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trustor": { + "$ref": "#/definitions/AccountId" + } + } + }, + "AlphaNum12": { + "description": "AlphaNum12 is an XDR Struct defines as:\n\n```text struct AlphaNum12 { AssetCode12 assetCode; AccountID issuer; }; ```", + "type": "object", + "required": [ + "asset_code", + "issuer" + ], + "properties": { + "asset_code": { + "$ref": "#/definitions/AssetCode12" + }, + "issuer": { + "$ref": "#/definitions/AccountId" + } + } + }, + "AlphaNum4": { + "description": "AlphaNum4 is an XDR Struct defines as:\n\n```text struct AlphaNum4 { AssetCode4 assetCode; AccountID issuer; }; ```", + "type": "object", + "required": [ + "asset_code", + "issuer" + ], + "properties": { + "asset_code": { + "$ref": "#/definitions/AssetCode4" + }, + "issuer": { + "$ref": "#/definitions/AccountId" + } + } + }, + "Asset": { + "description": "Asset is an XDR Union defines as:\n\n```text union Asset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\n// add other asset types here in the future }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "native" + ] + }, + { + "type": "object", + "required": [ + "credit_alphanum4" + ], + "properties": { + "credit_alphanum4": { + "$ref": "#/definitions/AlphaNum4" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "credit_alphanum12" + ], + "properties": { + "credit_alphanum12": { + "$ref": "#/definitions/AlphaNum12" + } + }, + "additionalProperties": false + } + ] + }, + "AssetCode": { + "description": "AssetCode is an XDR Union defines as:\n\n```text union AssetCode switch (AssetType type) { case ASSET_TYPE_CREDIT_ALPHANUM4: AssetCode4 assetCode4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AssetCode12 assetCode12;\n\n// add other asset types here in the future }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "CreditAlphanum4" + ], + "properties": { + "CreditAlphanum4": { + "$ref": "#/definitions/AssetCode4" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "CreditAlphanum12" + ], + "properties": { + "CreditAlphanum12": { + "$ref": "#/definitions/AssetCode12" + } + }, + "additionalProperties": false + } + ] + }, + "AssetCode12": { + "description": "AssetCode12 is an XDR Typedef defines as:\n\n```text typedef opaque AssetCode12[12]; ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 12, + "minItems": 12 + }, + "AssetCode4": { + "description": "AssetCode4 is an XDR Typedef defines as:\n\n```text typedef opaque AssetCode4[4]; ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 4, + "minItems": 4 + }, + "BeginSponsoringFutureReservesOp": { + "description": "BeginSponsoringFutureReservesOp is an XDR Struct defines as:\n\n```text struct BeginSponsoringFutureReservesOp { AccountID sponsoredID; }; ```", + "type": "object", + "required": [ + "sponsored_id" + ], + "properties": { + "sponsored_id": { + "$ref": "#/definitions/AccountId" + } + } + }, + "BumpSequenceOp": { + "description": "BumpSequenceOp is an XDR Struct defines as:\n\n```text struct BumpSequenceOp { SequenceNumber bumpTo; }; ```", + "type": "object", + "required": [ + "bump_to" + ], + "properties": { + "bump_to": { + "$ref": "#/definitions/SequenceNumber" + } + } + }, + "BytesM_for_4294967295": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "BytesM_for_64": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "ChangeTrustAsset": { + "description": "ChangeTrustAsset is an XDR Union defines as:\n\n```text union ChangeTrustAsset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\ncase ASSET_TYPE_POOL_SHARE: LiquidityPoolParameters liquidityPool;\n\n// add other asset types here in the future }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "native" + ] + }, + { + "type": "object", + "required": [ + "credit_alphanum4" + ], + "properties": { + "credit_alphanum4": { + "$ref": "#/definitions/AlphaNum4" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "credit_alphanum12" + ], + "properties": { + "credit_alphanum12": { + "$ref": "#/definitions/AlphaNum12" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "pool_share" + ], + "properties": { + "pool_share": { + "$ref": "#/definitions/LiquidityPoolParameters" + } + }, + "additionalProperties": false + } + ] + }, + "ChangeTrustOp": { + "description": "ChangeTrustOp is an XDR Struct defines as:\n\n```text struct ChangeTrustOp { ChangeTrustAsset line;\n\n// if limit is set to 0, deletes the trust line int64 limit; }; ```", + "type": "object", + "required": [ + "limit", + "line" + ], + "properties": { + "limit": { + "type": "integer", + "format": "int64" + }, + "line": { + "$ref": "#/definitions/ChangeTrustAsset" + } + } + }, + "ClaimClaimableBalanceOp": { + "description": "ClaimClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct ClaimClaimableBalanceOp { ClaimableBalanceID balanceID; }; ```", + "type": "object", + "required": [ + "balance_id" + ], + "properties": { + "balance_id": { + "$ref": "#/definitions/ClaimableBalanceId" + } + } + }, + "ClaimPredicate": { + "description": "ClaimPredicate is an XDR Union defines as:\n\n```text union ClaimPredicate switch (ClaimPredicateType type) { case CLAIM_PREDICATE_UNCONDITIONAL: void; case CLAIM_PREDICATE_AND: ClaimPredicate andPredicates<2>; case CLAIM_PREDICATE_OR: ClaimPredicate orPredicates<2>; case CLAIM_PREDICATE_NOT: ClaimPredicate* notPredicate; case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME: int64 absBefore; // Predicate will be true if closeTime < absBefore case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME: int64 relBefore; // Seconds since closeTime of the ledger in which the // ClaimableBalanceEntry was created }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "unconditional" + ] + }, + { + "type": "object", + "required": [ + "and" + ], + "properties": { + "and": { + "$ref": "#/definitions/VecM_for_ClaimPredicate_and_2" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "or" + ], + "properties": { + "or": { + "$ref": "#/definitions/VecM_for_ClaimPredicate_and_2" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "not" + ], + "properties": { + "not": { + "anyOf": [ + { + "$ref": "#/definitions/ClaimPredicate" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "before_absolute_time" + ], + "properties": { + "before_absolute_time": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "before_relative_time" + ], + "properties": { + "before_relative_time": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + } + ] + }, + "ClaimableBalanceId": { + "description": "ClaimableBalanceId is an XDR Union defines as:\n\n```text union ClaimableBalanceID switch (ClaimableBalanceIDType type) { case CLAIMABLE_BALANCE_ID_TYPE_V0: Hash v0; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "claimable_balance_id_type_v0" + ], + "properties": { + "claimable_balance_id_type_v0": { + "$ref": "#/definitions/Hash" + } + }, + "additionalProperties": false + } + ] + }, + "Claimant": { + "description": "Claimant is an XDR Union defines as:\n\n```text union Claimant switch (ClaimantType type) { case CLAIMANT_TYPE_V0: struct { AccountID destination; // The account that can use this condition ClaimPredicate predicate; // Claimable if predicate is true } v0; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "claimant_type_v0" + ], + "properties": { + "claimant_type_v0": { + "$ref": "#/definitions/ClaimantV0" + } + }, + "additionalProperties": false + } + ] + }, + "ClaimantV0": { + "description": "ClaimantV0 is an XDR NestedStruct defines as:\n\n```text struct { AccountID destination; // The account that can use this condition ClaimPredicate predicate; // Claimable if predicate is true } ```", + "type": "object", + "required": [ + "destination", + "predicate" + ], + "properties": { + "destination": { + "$ref": "#/definitions/AccountId" + }, + "predicate": { + "$ref": "#/definitions/ClaimPredicate" + } + } + }, + "ClawbackClaimableBalanceOp": { + "description": "ClawbackClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct ClawbackClaimableBalanceOp { ClaimableBalanceID balanceID; }; ```", + "type": "object", + "required": [ + "balance_id" + ], + "properties": { + "balance_id": { + "$ref": "#/definitions/ClaimableBalanceId" + } + } + }, + "ClawbackOp": { + "description": "ClawbackOp is an XDR Struct defines as:\n\n```text struct ClawbackOp { Asset asset; MuxedAccount from; int64 amount; }; ```", + "type": "object", + "required": [ + "amount", + "asset", + "from" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "asset": { + "$ref": "#/definitions/Asset" + }, + "from": { + "$ref": "#/definitions/MuxedAccount" + } + } + }, + "ConfigSettingId": { + "description": "ConfigSettingId is an XDR Enum defines as:\n\n```text enum ConfigSettingID { CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES = 0, CONFIG_SETTING_CONTRACT_COMPUTE_V0 = 1, CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 = 2, CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 = 3, CONFIG_SETTING_CONTRACT_EVENTS_V0 = 4, CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 = 5, CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS = 6, CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES = 7, CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES = 8, CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, CONFIG_SETTING_STATE_ARCHIVAL = 10, CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, CONFIG_SETTING_EVICTION_ITERATOR = 13 }; ```", + "type": "string", + "enum": [ + "contract_max_size_bytes", + "contract_compute_v0", + "contract_ledger_cost_v0", + "contract_historical_data_v0", + "contract_events_v0", + "contract_bandwidth_v0", + "contract_cost_params_cpu_instructions", + "contract_cost_params_memory_bytes", + "contract_data_key_size_bytes", + "contract_data_entry_size_bytes", + "state_archival", + "contract_execution_lanes", + "bucketlist_size_window", + "eviction_iterator" + ] + }, + "ContractDataDurability": { + "description": "ContractDataDurability is an XDR Enum defines as:\n\n```text enum ContractDataDurability { TEMPORARY = 0, PERSISTENT = 1 }; ```", + "type": "string", + "enum": [ + "temporary", + "persistent" + ] + }, + "ContractExecutable": { + "description": "ContractExecutable is an XDR Union defines as:\n\n```text union ContractExecutable switch (ContractExecutableType type) { case CONTRACT_EXECUTABLE_WASM: Hash wasm_hash; case CONTRACT_EXECUTABLE_STELLAR_ASSET: void; }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "stellar_asset" + ] + }, + { + "type": "object", + "required": [ + "wasm" + ], + "properties": { + "wasm": { + "$ref": "#/definitions/Hash" + } + }, + "additionalProperties": false + } + ] + }, + "ContractIdPreimage": { + "description": "ContractIdPreimage is an XDR Union defines as:\n\n```text union ContractIDPreimage switch (ContractIDPreimageType type) { case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: struct { SCAddress address; uint256 salt; } fromAddress; case CONTRACT_ID_PREIMAGE_FROM_ASSET: Asset fromAsset; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "$ref": "#/definitions/ContractIdPreimageFromAddress" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "asset" + ], + "properties": { + "asset": { + "$ref": "#/definitions/Asset" + } + }, + "additionalProperties": false + } + ] + }, + "ContractIdPreimageFromAddress": { + "description": "ContractIdPreimageFromAddress is an XDR NestedStruct defines as:\n\n```text struct { SCAddress address; uint256 salt; } ```", + "type": "object", + "required": [ + "address", + "salt" + ], + "properties": { + "address": { + "$ref": "#/definitions/ScAddress" + }, + "salt": { + "$ref": "#/definitions/Uint256" + } + } + }, + "CreateAccountOp": { + "description": "CreateAccountOp is an XDR Struct defines as:\n\n```text struct CreateAccountOp { AccountID destination; // account to create int64 startingBalance; // amount they end up with }; ```", + "type": "object", + "required": [ + "destination", + "starting_balance" + ], + "properties": { + "destination": { + "$ref": "#/definitions/AccountId" + }, + "starting_balance": { + "type": "integer", + "format": "int64" + } + } + }, + "CreateClaimableBalanceOp": { + "description": "CreateClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct CreateClaimableBalanceOp { Asset asset; int64 amount; Claimant claimants<10>; }; ```", + "type": "object", + "required": [ + "amount", + "asset", + "claimants" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "asset": { + "$ref": "#/definitions/Asset" + }, + "claimants": { + "$ref": "#/definitions/VecM_for_Claimant_and_10" + } + } + }, + "CreateContractArgs": { + "description": "CreateContractArgs is an XDR Struct defines as:\n\n```text struct CreateContractArgs { ContractIDPreimage contractIDPreimage; ContractExecutable executable; }; ```", + "type": "object", + "required": [ + "contract_id_preimage", + "executable" + ], + "properties": { + "contract_id_preimage": { + "$ref": "#/definitions/ContractIdPreimage" + }, + "executable": { + "$ref": "#/definitions/ContractExecutable" + } + } + }, + "CreatePassiveSellOfferOp": { + "description": "CreatePassiveSellOfferOp is an XDR Struct defines as:\n\n```text struct CreatePassiveSellOfferOp { Asset selling; // A Asset buying; // B int64 amount; // amount taker gets Price price; // cost of A in terms of B }; ```", + "type": "object", + "required": [ + "amount", + "buying", + "price", + "selling" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "buying": { + "$ref": "#/definitions/Asset" + }, + "price": { + "$ref": "#/definitions/Price" + }, + "selling": { + "$ref": "#/definitions/Asset" + } + } + }, + "DataValue": { + "description": "DataValue is an XDR Typedef defines as:\n\n```text typedef opaque DataValue<64>; ```", + "allOf": [ + { + "$ref": "#/definitions/BytesM_for_64" + } + ] + }, + "DecoratedSignature": { + "description": "DecoratedSignature is an XDR Struct defines as:\n\n```text struct DecoratedSignature { SignatureHint hint; // last 4 bytes of the public key, used as a hint Signature signature; // actual signature }; ```", + "type": "object", + "required": [ + "hint", + "signature" + ], + "properties": { + "hint": { + "$ref": "#/definitions/SignatureHint" + }, + "signature": { + "$ref": "#/definitions/Signature" + } + } + }, + "Duration": { + "description": "Duration is an XDR Typedef defines as:\n\n```text typedef uint64 Duration; ```", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "ExtendFootprintTtlOp": { + "description": "ExtendFootprintTtlOp is an XDR Struct defines as:\n\n```text struct ExtendFootprintTTLOp { ExtensionPoint ext; uint32 extendTo; }; ```", + "type": "object", + "required": [ + "ext", + "extend_to" + ], + "properties": { + "ext": { + "$ref": "#/definitions/ExtensionPoint" + }, + "extend_to": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "ExtensionPoint": { + "description": "ExtensionPoint is an XDR Union defines as:\n\n```text union ExtensionPoint switch (int v) { case 0: void; }; ```", + "type": "string", + "enum": [ + "v0" + ] + }, + "FeeBumpTransaction": { + "description": "FeeBumpTransaction is an XDR Struct defines as:\n\n```text struct FeeBumpTransaction { MuxedAccount feeSource; int64 fee; union switch (EnvelopeType type) { case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; } innerTx; union switch (int v) { case 0: void; } ext; }; ```", + "type": "object", + "required": [ + "ext", + "fee", + "fee_source", + "inner_tx" + ], + "properties": { + "ext": { + "$ref": "#/definitions/FeeBumpTransactionExt" + }, + "fee": { + "type": "integer", + "format": "int64" + }, + "fee_source": { + "$ref": "#/definitions/MuxedAccount" + }, + "inner_tx": { + "$ref": "#/definitions/FeeBumpTransactionInnerTx" + } + } + }, + "FeeBumpTransactionEnvelope": { + "description": "FeeBumpTransactionEnvelope is an XDR Struct defines as:\n\n```text struct FeeBumpTransactionEnvelope { FeeBumpTransaction tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", + "type": "object", + "required": [ + "signatures", + "tx" + ], + "properties": { + "signatures": { + "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" + }, + "tx": { + "$ref": "#/definitions/FeeBumpTransaction" + } + } + }, + "FeeBumpTransactionExt": { + "description": "FeeBumpTransactionExt is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; } ```", + "type": "string", + "enum": [ + "v0" + ] + }, + "FeeBumpTransactionInnerTx": { + "description": "FeeBumpTransactionInnerTx is an XDR NestedUnion defines as:\n\n```text union switch (EnvelopeType type) { case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; } ```", + "oneOf": [ + { + "type": "object", + "required": [ + "tx" + ], + "properties": { + "tx": { + "$ref": "#/definitions/TransactionV1Envelope" + } + }, + "additionalProperties": false + } + ] + }, + "Hash": { + "description": "Hash is an XDR Typedef defines as:\n\n```text typedef opaque Hash[32]; ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32 + }, + "HostFunction": { + "description": "HostFunction is an XDR Union defines as:\n\n```text union HostFunction switch (HostFunctionType type) { case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: InvokeContractArgs invokeContract; case HOST_FUNCTION_TYPE_CREATE_CONTRACT: CreateContractArgs createContract; case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: opaque wasm<>; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "invoke_contract" + ], + "properties": { + "invoke_contract": { + "$ref": "#/definitions/InvokeContractArgs" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_contract" + ], + "properties": { + "create_contract": { + "$ref": "#/definitions/CreateContractArgs" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "upload_contract_wasm" + ], + "properties": { + "upload_contract_wasm": { + "$ref": "#/definitions/BytesM_for_4294967295" + } + }, + "additionalProperties": false + } + ] + }, + "Int128Parts": { + "description": "Int128Parts is an XDR Struct defines as:\n\n```text struct Int128Parts { int64 hi; uint64 lo; }; ```", + "type": "object", + "required": [ + "hi", + "lo" + ], + "properties": { + "hi": { + "type": "integer", + "format": "int64" + }, + "lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "Int256Parts": { + "description": "Int256Parts is an XDR Struct defines as:\n\n```text struct Int256Parts { int64 hi_hi; uint64 hi_lo; uint64 lo_hi; uint64 lo_lo; }; ```", + "type": "object", + "required": [ + "hi_hi", + "hi_lo", + "lo_hi", + "lo_lo" + ], + "properties": { + "hi_hi": { + "type": "integer", + "format": "int64" + }, + "hi_lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "lo_hi": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "lo_lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "InvokeContractArgs": { + "description": "InvokeContractArgs is an XDR Struct defines as:\n\n```text struct InvokeContractArgs { SCAddress contractAddress; SCSymbol functionName; SCVal args<>; }; ```", + "type": "object", + "required": [ + "args", + "contract_address", + "function_name" + ], + "properties": { + "args": { + "$ref": "#/definitions/VecM_for_ScVal_and_4294967295" + }, + "contract_address": { + "$ref": "#/definitions/ScAddress" + }, + "function_name": { + "$ref": "#/definitions/ScSymbol" + } + } + }, + "InvokeHostFunctionOp": { + "description": "InvokeHostFunctionOp is an XDR Struct defines as:\n\n```text struct InvokeHostFunctionOp { // Host function to invoke. HostFunction hostFunction; // Per-address authorizations for this host function. SorobanAuthorizationEntry auth<>; }; ```", + "type": "object", + "required": [ + "auth", + "host_function" + ], + "properties": { + "auth": { + "$ref": "#/definitions/VecM_for_SorobanAuthorizationEntry_and_4294967295" + }, + "host_function": { + "$ref": "#/definitions/HostFunction" + } + } + }, + "LedgerBounds": { + "description": "LedgerBounds is an XDR Struct defines as:\n\n```text struct LedgerBounds { uint32 minLedger; uint32 maxLedger; // 0 here means no maxLedger }; ```", + "type": "object", + "required": [ + "max_ledger", + "min_ledger" + ], + "properties": { + "max_ledger": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "min_ledger": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "LedgerFootprint": { + "description": "LedgerFootprint is an XDR Struct defines as:\n\n```text struct LedgerFootprint { LedgerKey readOnly<>; LedgerKey readWrite<>; }; ```", + "type": "object", + "required": [ + "read_only", + "read_write" + ], + "properties": { + "read_only": { + "$ref": "#/definitions/VecM_for_LedgerKey_and_4294967295" + }, + "read_write": { + "$ref": "#/definitions/VecM_for_LedgerKey_and_4294967295" + } + } + }, + "LedgerKey": { + "description": "LedgerKey is an XDR Union defines as:\n\n```text union LedgerKey switch (LedgerEntryType type) { case ACCOUNT: struct { AccountID accountID; } account;\n\ncase TRUSTLINE: struct { AccountID accountID; TrustLineAsset asset; } trustLine;\n\ncase OFFER: struct { AccountID sellerID; int64 offerID; } offer;\n\ncase DATA: struct { AccountID accountID; string64 dataName; } data;\n\ncase CLAIMABLE_BALANCE: struct { ClaimableBalanceID balanceID; } claimableBalance;\n\ncase LIQUIDITY_POOL: struct { PoolID liquidityPoolID; } liquidityPool; case CONTRACT_DATA: struct { SCAddress contract; SCVal key; ContractDataDurability durability; } contractData; case CONTRACT_CODE: struct { Hash hash; } contractCode; case CONFIG_SETTING: struct { ConfigSettingID configSettingID; } configSetting; case TTL: struct { // Hash of the LedgerKey that is associated with this TTLEntry Hash keyHash; } ttl; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "account" + ], + "properties": { + "account": { + "$ref": "#/definitions/LedgerKeyAccount" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "trustline" + ], + "properties": { + "trustline": { + "$ref": "#/definitions/LedgerKeyTrustLine" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "offer" + ], + "properties": { + "offer": { + "$ref": "#/definitions/LedgerKeyOffer" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "$ref": "#/definitions/LedgerKeyData" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "claimable_balance" + ], + "properties": { + "claimable_balance": { + "$ref": "#/definitions/LedgerKeyClaimableBalance" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "liquidity_pool" + ], + "properties": { + "liquidity_pool": { + "$ref": "#/definitions/LedgerKeyLiquidityPool" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract_data" + ], + "properties": { + "contract_data": { + "$ref": "#/definitions/LedgerKeyContractData" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract_code" + ], + "properties": { + "contract_code": { + "$ref": "#/definitions/LedgerKeyContractCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "config_setting" + ], + "properties": { + "config_setting": { + "$ref": "#/definitions/LedgerKeyConfigSetting" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ttl" + ], + "properties": { + "ttl": { + "$ref": "#/definitions/LedgerKeyTtl" + } + }, + "additionalProperties": false + } + ] + }, + "LedgerKeyAccount": { + "description": "LedgerKeyAccount is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; } ```", + "type": "object", + "required": [ + "account_id" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + } + } + }, + "LedgerKeyClaimableBalance": { + "description": "LedgerKeyClaimableBalance is an XDR NestedStruct defines as:\n\n```text struct { ClaimableBalanceID balanceID; } ```", + "type": "object", + "required": [ + "balance_id" + ], + "properties": { + "balance_id": { + "$ref": "#/definitions/ClaimableBalanceId" + } + } + }, + "LedgerKeyConfigSetting": { + "description": "LedgerKeyConfigSetting is an XDR NestedStruct defines as:\n\n```text struct { ConfigSettingID configSettingID; } ```", + "type": "object", + "required": [ + "config_setting_id" + ], + "properties": { + "config_setting_id": { + "$ref": "#/definitions/ConfigSettingId" + } + } + }, + "LedgerKeyContractCode": { + "description": "LedgerKeyContractCode is an XDR NestedStruct defines as:\n\n```text struct { Hash hash; } ```", + "type": "object", + "required": [ + "hash" + ], + "properties": { + "hash": { + "$ref": "#/definitions/Hash" + } + } + }, + "LedgerKeyContractData": { + "description": "LedgerKeyContractData is an XDR NestedStruct defines as:\n\n```text struct { SCAddress contract; SCVal key; ContractDataDurability durability; } ```", + "type": "object", + "required": [ + "contract", + "durability", + "key" + ], + "properties": { + "contract": { + "$ref": "#/definitions/ScAddress" + }, + "durability": { + "$ref": "#/definitions/ContractDataDurability" + }, + "key": { + "$ref": "#/definitions/ScVal" + } + } + }, + "LedgerKeyData": { + "description": "LedgerKeyData is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; string64 dataName; } ```", + "type": "object", + "required": [ + "account_id", + "data_name" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "data_name": { + "$ref": "#/definitions/String64" + } + } + }, + "LedgerKeyLiquidityPool": { + "description": "LedgerKeyLiquidityPool is an XDR NestedStruct defines as:\n\n```text struct { PoolID liquidityPoolID; } ```", + "type": "object", + "required": [ + "liquidity_pool_id" + ], + "properties": { + "liquidity_pool_id": { + "$ref": "#/definitions/PoolId" + } + } + }, + "LedgerKeyOffer": { + "description": "LedgerKeyOffer is an XDR NestedStruct defines as:\n\n```text struct { AccountID sellerID; int64 offerID; } ```", + "type": "object", + "required": [ + "offer_id", + "seller_id" + ], + "properties": { + "offer_id": { + "type": "integer", + "format": "int64" + }, + "seller_id": { + "$ref": "#/definitions/AccountId" + } + } + }, + "LedgerKeyTrustLine": { + "description": "LedgerKeyTrustLine is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; TrustLineAsset asset; } ```", + "type": "object", + "required": [ + "account_id", + "asset" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "asset": { + "$ref": "#/definitions/TrustLineAsset" + } + } + }, + "LedgerKeyTtl": { + "description": "LedgerKeyTtl is an XDR NestedStruct defines as:\n\n```text struct { // Hash of the LedgerKey that is associated with this TTLEntry Hash keyHash; } ```", + "type": "object", + "required": [ + "key_hash" + ], + "properties": { + "key_hash": { + "$ref": "#/definitions/Hash" + } + } + }, + "LiquidityPoolConstantProductParameters": { + "description": "LiquidityPoolConstantProductParameters is an XDR Struct defines as:\n\n```text struct LiquidityPoolConstantProductParameters { Asset assetA; // assetA < assetB Asset assetB; int32 fee; // Fee is in basis points, so the actual rate is (fee/100)% }; ```", + "type": "object", + "required": [ + "asset_a", + "asset_b", + "fee" + ], + "properties": { + "asset_a": { + "$ref": "#/definitions/Asset" + }, + "asset_b": { + "$ref": "#/definitions/Asset" + }, + "fee": { + "type": "integer", + "format": "int32" + } + } + }, + "LiquidityPoolDepositOp": { + "description": "LiquidityPoolDepositOp is an XDR Struct defines as:\n\n```text struct LiquidityPoolDepositOp { PoolID liquidityPoolID; int64 maxAmountA; // maximum amount of first asset to deposit int64 maxAmountB; // maximum amount of second asset to deposit Price minPrice; // minimum depositA/depositB Price maxPrice; // maximum depositA/depositB }; ```", + "type": "object", + "required": [ + "liquidity_pool_id", + "max_amount_a", + "max_amount_b", + "max_price", + "min_price" + ], + "properties": { + "liquidity_pool_id": { + "$ref": "#/definitions/PoolId" + }, + "max_amount_a": { + "type": "integer", + "format": "int64" + }, + "max_amount_b": { + "type": "integer", + "format": "int64" + }, + "max_price": { + "$ref": "#/definitions/Price" + }, + "min_price": { + "$ref": "#/definitions/Price" + } + } + }, + "LiquidityPoolParameters": { + "description": "LiquidityPoolParameters is an XDR Union defines as:\n\n```text union LiquidityPoolParameters switch (LiquidityPoolType type) { case LIQUIDITY_POOL_CONSTANT_PRODUCT: LiquidityPoolConstantProductParameters constantProduct; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "liquidity_pool_constant_product" + ], + "properties": { + "liquidity_pool_constant_product": { + "$ref": "#/definitions/LiquidityPoolConstantProductParameters" + } + }, + "additionalProperties": false + } + ] + }, + "LiquidityPoolWithdrawOp": { + "description": "LiquidityPoolWithdrawOp is an XDR Struct defines as:\n\n```text struct LiquidityPoolWithdrawOp { PoolID liquidityPoolID; int64 amount; // amount of pool shares to withdraw int64 minAmountA; // minimum amount of first asset to withdraw int64 minAmountB; // minimum amount of second asset to withdraw }; ```", + "type": "object", + "required": [ + "amount", + "liquidity_pool_id", + "min_amount_a", + "min_amount_b" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "liquidity_pool_id": { + "$ref": "#/definitions/PoolId" + }, + "min_amount_a": { + "type": "integer", + "format": "int64" + }, + "min_amount_b": { + "type": "integer", + "format": "int64" + } + } + }, + "ManageBuyOfferOp": { + "description": "ManageBuyOfferOp is an XDR Struct defines as:\n\n```text struct ManageBuyOfferOp { Asset selling; Asset buying; int64 buyAmount; // amount being bought. if set to 0, delete the offer Price price; // price of thing being bought in terms of what you are // selling\n\n// 0=create a new offer, otherwise edit an existing offer int64 offerID; }; ```", + "type": "object", + "required": [ + "buy_amount", + "buying", + "offer_id", + "price", + "selling" + ], + "properties": { + "buy_amount": { + "type": "integer", + "format": "int64" + }, + "buying": { + "$ref": "#/definitions/Asset" + }, + "offer_id": { + "type": "integer", + "format": "int64" + }, + "price": { + "$ref": "#/definitions/Price" + }, + "selling": { + "$ref": "#/definitions/Asset" + } + } + }, + "ManageDataOp": { + "description": "ManageDataOp is an XDR Struct defines as:\n\n```text struct ManageDataOp { string64 dataName; DataValue* dataValue; // set to null to clear }; ```", + "type": "object", + "required": [ + "data_name" + ], + "properties": { + "data_name": { + "$ref": "#/definitions/String64" + }, + "data_value": { + "anyOf": [ + { + "$ref": "#/definitions/DataValue" + }, + { + "type": "null" + } + ] + } + } + }, + "ManageSellOfferOp": { + "description": "ManageSellOfferOp is an XDR Struct defines as:\n\n```text struct ManageSellOfferOp { Asset selling; Asset buying; int64 amount; // amount being sold. if set to 0, delete the offer Price price; // price of thing being sold in terms of what you are buying\n\n// 0=create a new offer, otherwise edit an existing offer int64 offerID; }; ```", + "type": "object", + "required": [ + "amount", + "buying", + "offer_id", + "price", + "selling" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "buying": { + "$ref": "#/definitions/Asset" + }, + "offer_id": { + "type": "integer", + "format": "int64" + }, + "price": { + "$ref": "#/definitions/Price" + }, + "selling": { + "$ref": "#/definitions/Asset" + } + } + }, + "Memo": { + "description": "Memo is an XDR Union defines as:\n\n```text union Memo switch (MemoType type) { case MEMO_NONE: void; case MEMO_TEXT: string text<28>; case MEMO_ID: uint64 id; case MEMO_HASH: Hash hash; // the hash of what to pull from the content server case MEMO_RETURN: Hash retHash; // the hash of the tx you are rejecting }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "none" + ] + }, + { + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "$ref": "#/definitions/StringM_for_28" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "hash" + ], + "properties": { + "hash": { + "$ref": "#/definitions/Hash" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "return" + ], + "properties": { + "return": { + "$ref": "#/definitions/Hash" + } + }, + "additionalProperties": false + } + ] + }, + "MuxedAccount": { + "description": "MuxedAccount is an XDR Union defines as:\n\n```text union MuxedAccount switch (CryptoKeyType type) { case KEY_TYPE_ED25519: uint256 ed25519; case KEY_TYPE_MUXED_ED25519: struct { uint64 id; uint256 ed25519; } med25519; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "Ed25519" + ], + "properties": { + "Ed25519": { + "$ref": "#/definitions/Uint256" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "MuxedEd25519" + ], + "properties": { + "MuxedEd25519": { + "$ref": "#/definitions/MuxedAccountMed25519" + } + }, + "additionalProperties": false + } + ] + }, + "MuxedAccountMed25519": { + "description": "MuxedAccountMed25519 is an XDR NestedStruct defines as:\n\n```text struct { uint64 id; uint256 ed25519; } ```", + "type": "object", + "required": [ + "ed25519", + "id" + ], + "properties": { + "ed25519": { + "$ref": "#/definitions/Uint256" + }, + "id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "Operation": { + "description": "Operation is an XDR Struct defines as:\n\n```text struct Operation { // sourceAccount is the account used to run the operation // if not set, the runtime defaults to \"sourceAccount\" specified at // the transaction level MuxedAccount* sourceAccount;\n\nunion switch (OperationType type) { case CREATE_ACCOUNT: CreateAccountOp createAccountOp; case PAYMENT: PaymentOp paymentOp; case PATH_PAYMENT_STRICT_RECEIVE: PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp; case MANAGE_SELL_OFFER: ManageSellOfferOp manageSellOfferOp; case CREATE_PASSIVE_SELL_OFFER: CreatePassiveSellOfferOp createPassiveSellOfferOp; case SET_OPTIONS: SetOptionsOp setOptionsOp; case CHANGE_TRUST: ChangeTrustOp changeTrustOp; case ALLOW_TRUST: AllowTrustOp allowTrustOp; case ACCOUNT_MERGE: MuxedAccount destination; case INFLATION: void; case MANAGE_DATA: ManageDataOp manageDataOp; case BUMP_SEQUENCE: BumpSequenceOp bumpSequenceOp; case MANAGE_BUY_OFFER: ManageBuyOfferOp manageBuyOfferOp; case PATH_PAYMENT_STRICT_SEND: PathPaymentStrictSendOp pathPaymentStrictSendOp; case CREATE_CLAIMABLE_BALANCE: CreateClaimableBalanceOp createClaimableBalanceOp; case CLAIM_CLAIMABLE_BALANCE: ClaimClaimableBalanceOp claimClaimableBalanceOp; case BEGIN_SPONSORING_FUTURE_RESERVES: BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp; case END_SPONSORING_FUTURE_RESERVES: void; case REVOKE_SPONSORSHIP: RevokeSponsorshipOp revokeSponsorshipOp; case CLAWBACK: ClawbackOp clawbackOp; case CLAWBACK_CLAIMABLE_BALANCE: ClawbackClaimableBalanceOp clawbackClaimableBalanceOp; case SET_TRUST_LINE_FLAGS: SetTrustLineFlagsOp setTrustLineFlagsOp; case LIQUIDITY_POOL_DEPOSIT: LiquidityPoolDepositOp liquidityPoolDepositOp; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; case INVOKE_HOST_FUNCTION: InvokeHostFunctionOp invokeHostFunctionOp; case EXTEND_FOOTPRINT_TTL: ExtendFootprintTTLOp extendFootprintTTLOp; case RESTORE_FOOTPRINT: RestoreFootprintOp restoreFootprintOp; } body; }; ```", + "type": "object", + "required": [ + "body" + ], + "properties": { + "body": { + "$ref": "#/definitions/OperationBody" + }, + "source_account": { + "anyOf": [ + { + "$ref": "#/definitions/MuxedAccount" + }, + { + "type": "null" + } + ] + } + } + }, + "OperationBody": { + "description": "OperationBody is an XDR NestedUnion defines as:\n\n```text union switch (OperationType type) { case CREATE_ACCOUNT: CreateAccountOp createAccountOp; case PAYMENT: PaymentOp paymentOp; case PATH_PAYMENT_STRICT_RECEIVE: PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp; case MANAGE_SELL_OFFER: ManageSellOfferOp manageSellOfferOp; case CREATE_PASSIVE_SELL_OFFER: CreatePassiveSellOfferOp createPassiveSellOfferOp; case SET_OPTIONS: SetOptionsOp setOptionsOp; case CHANGE_TRUST: ChangeTrustOp changeTrustOp; case ALLOW_TRUST: AllowTrustOp allowTrustOp; case ACCOUNT_MERGE: MuxedAccount destination; case INFLATION: void; case MANAGE_DATA: ManageDataOp manageDataOp; case BUMP_SEQUENCE: BumpSequenceOp bumpSequenceOp; case MANAGE_BUY_OFFER: ManageBuyOfferOp manageBuyOfferOp; case PATH_PAYMENT_STRICT_SEND: PathPaymentStrictSendOp pathPaymentStrictSendOp; case CREATE_CLAIMABLE_BALANCE: CreateClaimableBalanceOp createClaimableBalanceOp; case CLAIM_CLAIMABLE_BALANCE: ClaimClaimableBalanceOp claimClaimableBalanceOp; case BEGIN_SPONSORING_FUTURE_RESERVES: BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp; case END_SPONSORING_FUTURE_RESERVES: void; case REVOKE_SPONSORSHIP: RevokeSponsorshipOp revokeSponsorshipOp; case CLAWBACK: ClawbackOp clawbackOp; case CLAWBACK_CLAIMABLE_BALANCE: ClawbackClaimableBalanceOp clawbackClaimableBalanceOp; case SET_TRUST_LINE_FLAGS: SetTrustLineFlagsOp setTrustLineFlagsOp; case LIQUIDITY_POOL_DEPOSIT: LiquidityPoolDepositOp liquidityPoolDepositOp; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; case INVOKE_HOST_FUNCTION: InvokeHostFunctionOp invokeHostFunctionOp; case EXTEND_FOOTPRINT_TTL: ExtendFootprintTTLOp extendFootprintTTLOp; case RESTORE_FOOTPRINT: RestoreFootprintOp restoreFootprintOp; } ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "inflation", + "end_sponsoring_future_reserves" + ] + }, + { + "type": "object", + "required": [ + "create_account" + ], + "properties": { + "create_account": { + "$ref": "#/definitions/CreateAccountOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "payment" + ], + "properties": { + "payment": { + "$ref": "#/definitions/PaymentOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "path_payment_strict_receive" + ], + "properties": { + "path_payment_strict_receive": { + "$ref": "#/definitions/PathPaymentStrictReceiveOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "manage_sell_offer" + ], + "properties": { + "manage_sell_offer": { + "$ref": "#/definitions/ManageSellOfferOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_passive_sell_offer" + ], + "properties": { + "create_passive_sell_offer": { + "$ref": "#/definitions/CreatePassiveSellOfferOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_options" + ], + "properties": { + "set_options": { + "$ref": "#/definitions/SetOptionsOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "change_trust" + ], + "properties": { + "change_trust": { + "$ref": "#/definitions/ChangeTrustOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "allow_trust" + ], + "properties": { + "allow_trust": { + "$ref": "#/definitions/AllowTrustOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "account_merge" + ], + "properties": { + "account_merge": { + "$ref": "#/definitions/MuxedAccount" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "manage_data" + ], + "properties": { + "manage_data": { + "$ref": "#/definitions/ManageDataOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "bump_sequence" + ], + "properties": { + "bump_sequence": { + "$ref": "#/definitions/BumpSequenceOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "manage_buy_offer" + ], + "properties": { + "manage_buy_offer": { + "$ref": "#/definitions/ManageBuyOfferOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "path_payment_strict_send" + ], + "properties": { + "path_payment_strict_send": { + "$ref": "#/definitions/PathPaymentStrictSendOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_claimable_balance" + ], + "properties": { + "create_claimable_balance": { + "$ref": "#/definitions/CreateClaimableBalanceOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "claim_claimable_balance" + ], + "properties": { + "claim_claimable_balance": { + "$ref": "#/definitions/ClaimClaimableBalanceOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "begin_sponsoring_future_reserves" + ], + "properties": { + "begin_sponsoring_future_reserves": { + "$ref": "#/definitions/BeginSponsoringFutureReservesOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "revoke_sponsorship" + ], + "properties": { + "revoke_sponsorship": { + "$ref": "#/definitions/RevokeSponsorshipOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "clawback" + ], + "properties": { + "clawback": { + "$ref": "#/definitions/ClawbackOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "clawback_claimable_balance" + ], + "properties": { + "clawback_claimable_balance": { + "$ref": "#/definitions/ClawbackClaimableBalanceOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "set_trust_line_flags" + ], + "properties": { + "set_trust_line_flags": { + "$ref": "#/definitions/SetTrustLineFlagsOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "liquidity_pool_deposit" + ], + "properties": { + "liquidity_pool_deposit": { + "$ref": "#/definitions/LiquidityPoolDepositOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "liquidity_pool_withdraw" + ], + "properties": { + "liquidity_pool_withdraw": { + "$ref": "#/definitions/LiquidityPoolWithdrawOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "invoke_host_function" + ], + "properties": { + "invoke_host_function": { + "$ref": "#/definitions/InvokeHostFunctionOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "extend_footprint_ttl" + ], + "properties": { + "extend_footprint_ttl": { + "$ref": "#/definitions/ExtendFootprintTtlOp" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "restore_footprint" + ], + "properties": { + "restore_footprint": { + "$ref": "#/definitions/RestoreFootprintOp" + } + }, + "additionalProperties": false + } + ] + }, + "PathPaymentStrictReceiveOp": { + "description": "PathPaymentStrictReceiveOp is an XDR Struct defines as:\n\n```text struct PathPaymentStrictReceiveOp { Asset sendAsset; // asset we pay with int64 sendMax; // the maximum amount of sendAsset to // send (excluding fees). // The operation will fail if can't be met\n\nMuxedAccount destination; // recipient of the payment Asset destAsset; // what they end up with int64 destAmount; // amount they end up with\n\nAsset path<5>; // additional hops it must go through to get there }; ```", + "type": "object", + "required": [ + "dest_amount", + "dest_asset", + "destination", + "path", + "send_asset", + "send_max" + ], + "properties": { + "dest_amount": { + "type": "integer", + "format": "int64" + }, + "dest_asset": { + "$ref": "#/definitions/Asset" + }, + "destination": { + "$ref": "#/definitions/MuxedAccount" + }, + "path": { + "$ref": "#/definitions/VecM_for_Asset_and_5" + }, + "send_asset": { + "$ref": "#/definitions/Asset" + }, + "send_max": { + "type": "integer", + "format": "int64" + } + } + }, + "PathPaymentStrictSendOp": { + "description": "PathPaymentStrictSendOp is an XDR Struct defines as:\n\n```text struct PathPaymentStrictSendOp { Asset sendAsset; // asset we pay with int64 sendAmount; // amount of sendAsset to send (excluding fees)\n\nMuxedAccount destination; // recipient of the payment Asset destAsset; // what they end up with int64 destMin; // the minimum amount of dest asset to // be received // The operation will fail if it can't be met\n\nAsset path<5>; // additional hops it must go through to get there }; ```", + "type": "object", + "required": [ + "dest_asset", + "dest_min", + "destination", + "path", + "send_amount", + "send_asset" + ], + "properties": { + "dest_asset": { + "$ref": "#/definitions/Asset" + }, + "dest_min": { + "type": "integer", + "format": "int64" + }, + "destination": { + "$ref": "#/definitions/MuxedAccount" + }, + "path": { + "$ref": "#/definitions/VecM_for_Asset_and_5" + }, + "send_amount": { + "type": "integer", + "format": "int64" + }, + "send_asset": { + "$ref": "#/definitions/Asset" + } + } + }, + "PaymentOp": { + "description": "PaymentOp is an XDR Struct defines as:\n\n```text struct PaymentOp { MuxedAccount destination; // recipient of the payment Asset asset; // what they end up with int64 amount; // amount they end up with }; ```", + "type": "object", + "required": [ + "amount", + "asset", + "destination" + ], + "properties": { + "amount": { + "type": "integer", + "format": "int64" + }, + "asset": { + "$ref": "#/definitions/Asset" + }, + "destination": { + "$ref": "#/definitions/MuxedAccount" + } + } + }, + "PoolId": { + "description": "PoolId is an XDR Typedef defines as:\n\n```text typedef Hash PoolID; ```", + "allOf": [ + { + "$ref": "#/definitions/Hash" + } + ] + }, + "Preconditions": { + "description": "Preconditions is an XDR Union defines as:\n\n```text union Preconditions switch (PreconditionType type) { case PRECOND_NONE: void; case PRECOND_TIME: TimeBounds timeBounds; case PRECOND_V2: PreconditionsV2 v2; }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "none" + ] + }, + { + "type": "object", + "required": [ + "time" + ], + "properties": { + "time": { + "$ref": "#/definitions/TimeBounds" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "v2" + ], + "properties": { + "v2": { + "$ref": "#/definitions/PreconditionsV2" + } + }, + "additionalProperties": false + } + ] + }, + "PreconditionsV2": { + "description": "PreconditionsV2 is an XDR Struct defines as:\n\n```text struct PreconditionsV2 { TimeBounds* timeBounds;\n\n// Transaction only valid for ledger numbers n such that // minLedger <= n < maxLedger (if maxLedger == 0, then // only minLedger is checked) LedgerBounds* ledgerBounds;\n\n// If NULL, only valid when sourceAccount's sequence number // is seqNum - 1. Otherwise, valid when sourceAccount's // sequence number n satisfies minSeqNum <= n < tx.seqNum. // Note that after execution the account's sequence number // is always raised to tx.seqNum, and a transaction is not // valid if tx.seqNum is too high to ensure replay protection. SequenceNumber* minSeqNum;\n\n// For the transaction to be valid, the current ledger time must // be at least minSeqAge greater than sourceAccount's seqTime. Duration minSeqAge;\n\n// For the transaction to be valid, the current ledger number // must be at least minSeqLedgerGap greater than sourceAccount's // seqLedger. uint32 minSeqLedgerGap;\n\n// For the transaction to be valid, there must be a signature // corresponding to every Signer in this array, even if the // signature is not otherwise required by the sourceAccount or // operations. SignerKey extraSigners<2>; }; ```", + "type": "object", + "required": [ + "extra_signers", + "min_seq_age", + "min_seq_ledger_gap" + ], + "properties": { + "extra_signers": { + "$ref": "#/definitions/VecM_for_SignerKey_and_2" + }, + "ledger_bounds": { + "anyOf": [ + { + "$ref": "#/definitions/LedgerBounds" + }, + { + "type": "null" + } + ] + }, + "min_seq_age": { + "$ref": "#/definitions/Duration" + }, + "min_seq_ledger_gap": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "min_seq_num": { + "anyOf": [ + { + "$ref": "#/definitions/SequenceNumber" + }, + { + "type": "null" + } + ] + }, + "time_bounds": { + "anyOf": [ + { + "$ref": "#/definitions/TimeBounds" + }, + { + "type": "null" + } + ] + } + } + }, + "Price": { + "description": "Price is an XDR Struct defines as:\n\n```text struct Price { int32 n; // numerator int32 d; // denominator }; ```", + "type": "object", + "required": [ + "d", + "n" + ], + "properties": { + "d": { + "type": "integer", + "format": "int32" + }, + "n": { + "type": "integer", + "format": "int32" + } + } + }, + "PublicKey": { + "description": "PublicKey is an XDR Union defines as:\n\n```text union PublicKey switch (PublicKeyType type) { case PUBLIC_KEY_TYPE_ED25519: uint256 ed25519; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "PublicKeyTypeEd25519" + ], + "properties": { + "PublicKeyTypeEd25519": { + "$ref": "#/definitions/Uint256" + } + }, + "additionalProperties": false + } + ] + }, + "RestoreFootprintOp": { + "description": "RestoreFootprintOp is an XDR Struct defines as:\n\n```text struct RestoreFootprintOp { ExtensionPoint ext; }; ```", + "type": "object", + "required": [ + "ext" + ], + "properties": { + "ext": { + "$ref": "#/definitions/ExtensionPoint" + } + } + }, + "RevokeSponsorshipOp": { + "description": "RevokeSponsorshipOp is an XDR Union defines as:\n\n```text union RevokeSponsorshipOp switch (RevokeSponsorshipType type) { case REVOKE_SPONSORSHIP_LEDGER_ENTRY: LedgerKey ledgerKey; case REVOKE_SPONSORSHIP_SIGNER: struct { AccountID accountID; SignerKey signerKey; } signer; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "ledger_entry" + ], + "properties": { + "ledger_entry": { + "$ref": "#/definitions/LedgerKey" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "signer" + ], + "properties": { + "signer": { + "$ref": "#/definitions/RevokeSponsorshipOpSigner" + } + }, + "additionalProperties": false + } + ] + }, + "RevokeSponsorshipOpSigner": { + "description": "RevokeSponsorshipOpSigner is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; SignerKey signerKey; } ```", + "type": "object", + "required": [ + "account_id", + "signer_key" + ], + "properties": { + "account_id": { + "$ref": "#/definitions/AccountId" + }, + "signer_key": { + "$ref": "#/definitions/SignerKey" + } + } + }, + "ScAddress": { + "description": "ScAddress is an XDR Union defines as:\n\n```text union SCAddress switch (SCAddressType type) { case SC_ADDRESS_TYPE_ACCOUNT: AccountID accountId; case SC_ADDRESS_TYPE_CONTRACT: Hash contractId; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "Account" + ], + "properties": { + "Account": { + "$ref": "#/definitions/AccountId" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Contract" + ], + "properties": { + "Contract": { + "$ref": "#/definitions/Hash" + } + }, + "additionalProperties": false + } + ] + }, + "ScBytes": { + "description": "ScBytes is an XDR Typedef defines as:\n\n```text typedef opaque SCBytes<>; ```", + "allOf": [ + { + "$ref": "#/definitions/BytesM_for_4294967295" + } + ] + }, + "ScContractInstance": { + "description": "ScContractInstance is an XDR Struct defines as:\n\n```text struct SCContractInstance { ContractExecutable executable; SCMap* storage; }; ```", + "type": "object", + "required": [ + "executable" + ], + "properties": { + "executable": { + "$ref": "#/definitions/ContractExecutable" + }, + "storage": { + "anyOf": [ + { + "$ref": "#/definitions/ScMap" + }, + { + "type": "null" + } + ] + } + } + }, + "ScError": { + "description": "ScError is an XDR Union defines as:\n\n```text union SCError switch (SCErrorType type) { case SCE_CONTRACT: uint32 contractCode; case SCE_WASM_VM: case SCE_CONTEXT: case SCE_STORAGE: case SCE_OBJECT: case SCE_CRYPTO: case SCE_EVENTS: case SCE_BUDGET: case SCE_VALUE: case SCE_AUTH: SCErrorCode code; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "contract" + ], + "properties": { + "contract": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "wasm_vm" + ], + "properties": { + "wasm_vm": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "context" + ], + "properties": { + "context": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "storage" + ], + "properties": { + "storage": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "object" + ], + "properties": { + "object": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "crypto" + ], + "properties": { + "crypto": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "events" + ], + "properties": { + "events": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "budget" + ], + "properties": { + "budget": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "auth" + ], + "properties": { + "auth": { + "$ref": "#/definitions/ScErrorCode" + } + }, + "additionalProperties": false + } + ] + }, + "ScErrorCode": { + "description": "ScErrorCode is an XDR Enum defines as:\n\n```text enum SCErrorCode { SCEC_ARITH_DOMAIN = 0, // Some arithmetic was undefined (overflow, divide-by-zero). SCEC_INDEX_BOUNDS = 1, // Something was indexed beyond its bounds. SCEC_INVALID_INPUT = 2, // User provided some otherwise-bad data. SCEC_MISSING_VALUE = 3, // Some value was required but not provided. SCEC_EXISTING_VALUE = 4, // Some value was provided where not allowed. SCEC_EXCEEDED_LIMIT = 5, // Some arbitrary limit -- gas or otherwise -- was hit. SCEC_INVALID_ACTION = 6, // Data was valid but action requested was not. SCEC_INTERNAL_ERROR = 7, // The host detected an error in its own logic. SCEC_UNEXPECTED_TYPE = 8, // Some type wasn't as expected. SCEC_UNEXPECTED_SIZE = 9 // Something's size wasn't as expected. }; ```", + "type": "string", + "enum": [ + "arith_domain", + "index_bounds", + "invalid_input", + "missing_value", + "existing_value", + "exceeded_limit", + "invalid_action", + "internal_error", + "unexpected_type", + "unexpected_size" + ] + }, + "ScMap": { + "description": "ScMap is an XDR Typedef defines as:\n\n```text typedef SCMapEntry SCMap<>; ```", + "allOf": [ + { + "$ref": "#/definitions/VecM_for_ScMapEntry_and_4294967295" + } + ] + }, + "ScMapEntry": { + "description": "ScMapEntry is an XDR Struct defines as:\n\n```text struct SCMapEntry { SCVal key; SCVal val; }; ```", + "type": "object", + "required": [ + "key", + "val" + ], + "properties": { + "key": { + "$ref": "#/definitions/ScVal" + }, + "val": { + "$ref": "#/definitions/ScVal" + } + } + }, + "ScNonceKey": { + "description": "ScNonceKey is an XDR Struct defines as:\n\n```text struct SCNonceKey { int64 nonce; }; ```", + "type": "object", + "required": [ + "nonce" + ], + "properties": { + "nonce": { + "type": "integer", + "format": "int64" + } + } + }, + "ScString": { + "description": "ScString is an XDR Typedef defines as:\n\n```text typedef string SCString<>; ```", + "allOf": [ + { + "$ref": "#/definitions/StringM_for_4294967295" + } + ] + }, + "ScSymbol": { + "description": "ScSymbol is an XDR Typedef defines as:\n\n```text typedef string SCSymbol; ```", + "allOf": [ + { + "$ref": "#/definitions/StringM_for_32" + } + ] + }, + "ScVal": { + "description": "ScVal is an XDR Union defines as:\n\n```text union SCVal switch (SCValType type) {\n\ncase SCV_BOOL: bool b; case SCV_VOID: void; case SCV_ERROR: SCError error;\n\ncase SCV_U32: uint32 u32; case SCV_I32: int32 i32;\n\ncase SCV_U64: uint64 u64; case SCV_I64: int64 i64; case SCV_TIMEPOINT: TimePoint timepoint; case SCV_DURATION: Duration duration;\n\ncase SCV_U128: UInt128Parts u128; case SCV_I128: Int128Parts i128;\n\ncase SCV_U256: UInt256Parts u256; case SCV_I256: Int256Parts i256;\n\ncase SCV_BYTES: SCBytes bytes; case SCV_STRING: SCString str; case SCV_SYMBOL: SCSymbol sym;\n\n// Vec and Map are recursive so need to live // behind an option, due to xdrpp limitations. case SCV_VEC: SCVec *vec; case SCV_MAP: SCMap *map;\n\ncase SCV_ADDRESS: SCAddress address;\n\n// Special SCVals reserved for system-constructed contract-data // ledger keys, not generally usable elsewhere. case SCV_LEDGER_KEY_CONTRACT_INSTANCE: void; case SCV_LEDGER_KEY_NONCE: SCNonceKey nonce_key;\n\ncase SCV_CONTRACT_INSTANCE: SCContractInstance instance; }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "void", + "ledger_key_contract_instance" + ] + }, + { + "type": "object", + "required": [ + "bool" + ], + "properties": { + "bool": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "$ref": "#/definitions/ScError" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "u32" + ], + "properties": { + "u32": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "i32" + ], + "properties": { + "i32": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "u64" + ], + "properties": { + "u64": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "i64" + ], + "properties": { + "i64": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "timepoint" + ], + "properties": { + "timepoint": { + "$ref": "#/definitions/TimePoint" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "duration" + ], + "properties": { + "duration": { + "$ref": "#/definitions/Duration" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "u128" + ], + "properties": { + "u128": { + "$ref": "#/definitions/UInt128Parts" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "i128" + ], + "properties": { + "i128": { + "$ref": "#/definitions/Int128Parts" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "u256" + ], + "properties": { + "u256": { + "$ref": "#/definitions/UInt256Parts" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "i256" + ], + "properties": { + "i256": { + "$ref": "#/definitions/Int256Parts" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "bytes" + ], + "properties": { + "bytes": { + "$ref": "#/definitions/ScBytes" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "string" + ], + "properties": { + "string": { + "$ref": "#/definitions/ScString" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "symbol" + ], + "properties": { + "symbol": { + "$ref": "#/definitions/ScSymbol" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "vec" + ], + "properties": { + "vec": { + "anyOf": [ + { + "$ref": "#/definitions/ScVec" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "map" + ], + "properties": { + "map": { + "anyOf": [ + { + "$ref": "#/definitions/ScMap" + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "$ref": "#/definitions/ScAddress" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "ledger_key_nonce" + ], + "properties": { + "ledger_key_nonce": { + "$ref": "#/definitions/ScNonceKey" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "contract_instance" + ], + "properties": { + "contract_instance": { + "$ref": "#/definitions/ScContractInstance" + } + }, + "additionalProperties": false + } + ] + }, + "ScVec": { + "description": "ScVec is an XDR Typedef defines as:\n\n```text typedef SCVal SCVec<>; ```", + "allOf": [ + { + "$ref": "#/definitions/VecM_for_ScVal_and_4294967295" + } + ] + }, + "SequenceNumber": { + "description": "SequenceNumber is an XDR Typedef defines as:\n\n```text typedef int64 SequenceNumber; ```", + "type": "integer", + "format": "int64" + }, + "SetOptionsOp": { + "description": "SetOptionsOp is an XDR Struct defines as:\n\n```text struct SetOptionsOp { AccountID* inflationDest; // sets the inflation destination\n\nuint32* clearFlags; // which flags to clear uint32* setFlags; // which flags to set\n\n// account threshold manipulation uint32* masterWeight; // weight of the master account uint32* lowThreshold; uint32* medThreshold; uint32* highThreshold;\n\nstring32* homeDomain; // sets the home domain\n\n// Add, update or remove a signer for the account // signer is deleted if the weight is 0 Signer* signer; }; ```", + "type": "object", + "properties": { + "clear_flags": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "high_threshold": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "home_domain": { + "anyOf": [ + { + "$ref": "#/definitions/String32" + }, + { + "type": "null" + } + ] + }, + "inflation_dest": { + "anyOf": [ + { + "$ref": "#/definitions/AccountId" + }, + { + "type": "null" + } + ] + }, + "low_threshold": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "master_weight": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "med_threshold": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "set_flags": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + }, + "signer": { + "anyOf": [ + { + "$ref": "#/definitions/Signer" + }, + { + "type": "null" + } + ] + } + } + }, + "SetTrustLineFlagsOp": { + "description": "SetTrustLineFlagsOp is an XDR Struct defines as:\n\n```text struct SetTrustLineFlagsOp { AccountID trustor; Asset asset;\n\nuint32 clearFlags; // which flags to clear uint32 setFlags; // which flags to set }; ```", + "type": "object", + "required": [ + "asset", + "clear_flags", + "set_flags", + "trustor" + ], + "properties": { + "asset": { + "$ref": "#/definitions/Asset" + }, + "clear_flags": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "set_flags": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "trustor": { + "$ref": "#/definitions/AccountId" + } + } + }, + "Signature": { + "description": "Signature is an XDR Typedef defines as:\n\n```text typedef opaque Signature<64>; ```", + "allOf": [ + { + "$ref": "#/definitions/BytesM_for_64" + } + ] + }, + "SignatureHint": { + "description": "SignatureHint is an XDR Typedef defines as:\n\n```text typedef opaque SignatureHint[4]; ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 4, + "minItems": 4 + }, + "Signer": { + "description": "Signer is an XDR Struct defines as:\n\n```text struct Signer { SignerKey key; uint32 weight; // really only need 1 byte }; ```", + "type": "object", + "required": [ + "key", + "weight" + ], + "properties": { + "key": { + "$ref": "#/definitions/SignerKey" + }, + "weight": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "SignerKey": { + "description": "SignerKey is an XDR Union defines as:\n\n```text union SignerKey switch (SignerKeyType type) { case SIGNER_KEY_TYPE_ED25519: uint256 ed25519; case SIGNER_KEY_TYPE_PRE_AUTH_TX: /* SHA-256 Hash of TransactionSignaturePayload structure */ uint256 preAuthTx; case SIGNER_KEY_TYPE_HASH_X: /* Hash of random 256 bit preimage X */ uint256 hashX; case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: struct { /* Public key that must sign the payload. */ uint256 ed25519; /* Payload to be raw signed by ed25519. */ opaque payload<64>; } ed25519SignedPayload; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "Ed25519" + ], + "properties": { + "Ed25519": { + "$ref": "#/definitions/Uint256" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "PreAuthTx" + ], + "properties": { + "PreAuthTx": { + "$ref": "#/definitions/Uint256" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "HashX" + ], + "properties": { + "HashX": { + "$ref": "#/definitions/Uint256" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "Ed25519SignedPayload" + ], + "properties": { + "Ed25519SignedPayload": { + "$ref": "#/definitions/SignerKeyEd25519SignedPayload" + } + }, + "additionalProperties": false + } + ] + }, + "SignerKeyEd25519SignedPayload": { + "description": "SignerKeyEd25519SignedPayload is an XDR NestedStruct defines as:\n\n```text struct { /* Public key that must sign the payload. */ uint256 ed25519; /* Payload to be raw signed by ed25519. */ opaque payload<64>; } ```", + "type": "object", + "required": [ + "ed25519", + "payload" + ], + "properties": { + "ed25519": { + "$ref": "#/definitions/Uint256" + }, + "payload": { + "$ref": "#/definitions/BytesM_for_64" + } + } + }, + "SorobanAddressCredentials": { + "description": "SorobanAddressCredentials is an XDR Struct defines as:\n\n```text struct SorobanAddressCredentials { SCAddress address; int64 nonce; uint32 signatureExpirationLedger; SCVal signature; }; ```", + "type": "object", + "required": [ + "address", + "nonce", + "signature", + "signature_expiration_ledger" + ], + "properties": { + "address": { + "$ref": "#/definitions/ScAddress" + }, + "nonce": { + "type": "integer", + "format": "int64" + }, + "signature": { + "$ref": "#/definitions/ScVal" + }, + "signature_expiration_ledger": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "SorobanAuthorizationEntry": { + "description": "SorobanAuthorizationEntry is an XDR Struct defines as:\n\n```text struct SorobanAuthorizationEntry { SorobanCredentials credentials; SorobanAuthorizedInvocation rootInvocation; }; ```", + "type": "object", + "required": [ + "credentials", + "root_invocation" + ], + "properties": { + "credentials": { + "$ref": "#/definitions/SorobanCredentials" + }, + "root_invocation": { + "$ref": "#/definitions/SorobanAuthorizedInvocation" + } + } + }, + "SorobanAuthorizedFunction": { + "description": "SorobanAuthorizedFunction is an XDR Union defines as:\n\n```text union SorobanAuthorizedFunction switch (SorobanAuthorizedFunctionType type) { case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: InvokeContractArgs contractFn; case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: CreateContractArgs createContractHostFn; }; ```", + "oneOf": [ + { + "type": "object", + "required": [ + "contract_fn" + ], + "properties": { + "contract_fn": { + "$ref": "#/definitions/InvokeContractArgs" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "create_contract_host_fn" + ], + "properties": { + "create_contract_host_fn": { + "$ref": "#/definitions/CreateContractArgs" + } + }, + "additionalProperties": false + } + ] + }, + "SorobanAuthorizedInvocation": { + "description": "SorobanAuthorizedInvocation is an XDR Struct defines as:\n\n```text struct SorobanAuthorizedInvocation { SorobanAuthorizedFunction function; SorobanAuthorizedInvocation subInvocations<>; }; ```", + "type": "object", + "required": [ + "function", + "sub_invocations" + ], + "properties": { + "function": { + "$ref": "#/definitions/SorobanAuthorizedFunction" + }, + "sub_invocations": { + "$ref": "#/definitions/VecM_for_SorobanAuthorizedInvocation_and_4294967295" + } + } + }, + "SorobanCredentials": { + "description": "SorobanCredentials is an XDR Union defines as:\n\n```text union SorobanCredentials switch (SorobanCredentialsType type) { case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: void; case SOROBAN_CREDENTIALS_ADDRESS: SorobanAddressCredentials address; }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "source_account" + ] + }, + { + "type": "object", + "required": [ + "address" + ], + "properties": { + "address": { + "$ref": "#/definitions/SorobanAddressCredentials" + } + }, + "additionalProperties": false + } + ] + }, + "SorobanResources": { + "description": "SorobanResources is an XDR Struct defines as:\n\n```text struct SorobanResources { // The ledger footprint of the transaction. LedgerFootprint footprint; // The maximum number of instructions this transaction can use uint32 instructions;\n\n// The maximum number of bytes this transaction can read from ledger uint32 readBytes; // The maximum number of bytes this transaction can write to ledger uint32 writeBytes; }; ```", + "type": "object", + "required": [ + "footprint", + "instructions", + "read_bytes", + "write_bytes" + ], + "properties": { + "footprint": { + "$ref": "#/definitions/LedgerFootprint" + }, + "instructions": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "read_bytes": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "write_bytes": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + } + } + }, + "SorobanTransactionData": { + "description": "SorobanTransactionData is an XDR Struct defines as:\n\n```text struct SorobanTransactionData { ExtensionPoint ext; SorobanResources resources; // Amount of the transaction `fee` allocated to the Soroban resource fees. // The fraction of `resourceFee` corresponding to `resources` specified // above is *not* refundable (i.e. fees for instructions, ledger I/O), as // well as fees for the transaction size. // The remaining part of the fee is refundable and the charged value is // based on the actual consumption of refundable resources (events, ledger // rent bumps). // The `inclusionFee` used for prioritization of the transaction is defined // as `tx.fee - resourceFee`. int64 resourceFee; }; ```", + "type": "object", + "required": [ + "ext", + "resource_fee", + "resources" + ], + "properties": { + "ext": { + "$ref": "#/definitions/ExtensionPoint" + }, + "resource_fee": { + "type": "integer", + "format": "int64" + }, + "resources": { + "$ref": "#/definitions/SorobanResources" + } + } + }, + "String32": { + "description": "String32 is an XDR Typedef defines as:\n\n```text typedef string string32<32>; ```", + "allOf": [ + { + "$ref": "#/definitions/StringM_for_32" + } + ] + }, + "String64": { + "description": "String64 is an XDR Typedef defines as:\n\n```text typedef string string64<64>; ```", + "allOf": [ + { + "$ref": "#/definitions/StringM_for_64" + } + ] + }, + "StringM_for_28": { + "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "StringM_for_32": { + "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "StringM_for_4294967295": { + "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "StringM_for_64": { + "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + }, + "TimeBounds": { + "description": "TimeBounds is an XDR Struct defines as:\n\n```text struct TimeBounds { TimePoint minTime; TimePoint maxTime; // 0 here means no maxTime }; ```", + "type": "object", + "required": [ + "max_time", + "min_time" + ], + "properties": { + "max_time": { + "$ref": "#/definitions/TimePoint" + }, + "min_time": { + "$ref": "#/definitions/TimePoint" + } + } + }, + "TimePoint": { + "description": "TimePoint is an XDR Typedef defines as:\n\n```text typedef uint64 TimePoint; ```", + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "Transaction": { + "description": "Transaction is an XDR Struct defines as:\n\n```text struct Transaction { // account used to run the transaction MuxedAccount sourceAccount;\n\n// the fee the sourceAccount will pay uint32 fee;\n\n// sequence number to consume in the account SequenceNumber seqNum;\n\n// validity conditions Preconditions cond;\n\nMemo memo;\n\nOperation operations;\n\n// reserved for future use union switch (int v) { case 0: void; case 1: SorobanTransactionData sorobanData; } ext; }; ```", + "type": "object", + "required": [ + "cond", + "ext", + "fee", + "memo", + "operations", + "seq_num", + "source_account" + ], + "properties": { + "cond": { + "$ref": "#/definitions/Preconditions" + }, + "ext": { + "$ref": "#/definitions/TransactionExt" + }, + "fee": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "memo": { + "$ref": "#/definitions/Memo" + }, + "operations": { + "$ref": "#/definitions/VecM_for_Operation_and_100" + }, + "seq_num": { + "$ref": "#/definitions/SequenceNumber" + }, + "source_account": { + "$ref": "#/definitions/MuxedAccount" + } + } + }, + "TransactionExt": { + "description": "TransactionExt is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; case 1: SorobanTransactionData sorobanData; } ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "v0" + ] + }, + { + "type": "object", + "required": [ + "v1" + ], + "properties": { + "v1": { + "$ref": "#/definitions/SorobanTransactionData" + } + }, + "additionalProperties": false + } + ] + }, + "TransactionV0": { + "description": "TransactionV0 is an XDR Struct defines as:\n\n```text struct TransactionV0 { uint256 sourceAccountEd25519; uint32 fee; SequenceNumber seqNum; TimeBounds* timeBounds; Memo memo; Operation operations; union switch (int v) { case 0: void; } ext; }; ```", + "type": "object", + "required": [ + "ext", + "fee", + "memo", + "operations", + "seq_num", + "source_account_ed25519" + ], + "properties": { + "ext": { + "$ref": "#/definitions/TransactionV0Ext" + }, + "fee": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "memo": { + "$ref": "#/definitions/Memo" + }, + "operations": { + "$ref": "#/definitions/VecM_for_Operation_and_100" + }, + "seq_num": { + "$ref": "#/definitions/SequenceNumber" + }, + "source_account_ed25519": { + "$ref": "#/definitions/Uint256" + }, + "time_bounds": { + "anyOf": [ + { + "$ref": "#/definitions/TimeBounds" + }, + { + "type": "null" + } + ] + } + } + }, + "TransactionV0Envelope": { + "description": "TransactionV0Envelope is an XDR Struct defines as:\n\n```text struct TransactionV0Envelope { TransactionV0 tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", + "type": "object", + "required": [ + "signatures", + "tx" + ], + "properties": { + "signatures": { + "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" + }, + "tx": { + "$ref": "#/definitions/TransactionV0" + } + } + }, + "TransactionV0Ext": { + "description": "TransactionV0Ext is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; } ```", + "type": "string", + "enum": [ + "v0" + ] + }, + "TransactionV1Envelope": { + "description": "TransactionV1Envelope is an XDR Struct defines as:\n\n```text struct TransactionV1Envelope { Transaction tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", + "type": "object", + "required": [ + "signatures", + "tx" + ], + "properties": { + "signatures": { + "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" + }, + "tx": { + "$ref": "#/definitions/Transaction" + } + } + }, + "TrustLineAsset": { + "description": "TrustLineAsset is an XDR Union defines as:\n\n```text union TrustLineAsset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\ncase ASSET_TYPE_POOL_SHARE: PoolID liquidityPoolID;\n\n// add other asset types here in the future }; ```", + "oneOf": [ + { + "type": "string", + "enum": [ + "native" + ] + }, + { + "type": "object", + "required": [ + "credit_alphanum4" + ], + "properties": { + "credit_alphanum4": { + "$ref": "#/definitions/AlphaNum4" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "credit_alphanum12" + ], + "properties": { + "credit_alphanum12": { + "$ref": "#/definitions/AlphaNum12" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "pool_share" + ], + "properties": { + "pool_share": { + "$ref": "#/definitions/PoolId" + } + }, + "additionalProperties": false + } + ] + }, + "UInt128Parts": { + "description": "UInt128Parts is an XDR Struct defines as:\n\n```text struct UInt128Parts { uint64 hi; uint64 lo; }; ```", + "type": "object", + "required": [ + "hi", + "lo" + ], + "properties": { + "hi": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "UInt256Parts": { + "description": "UInt256Parts is an XDR Struct defines as:\n\n```text struct UInt256Parts { uint64 hi_hi; uint64 hi_lo; uint64 lo_hi; uint64 lo_lo; }; ```", + "type": "object", + "required": [ + "hi_hi", + "hi_lo", + "lo_hi", + "lo_lo" + ], + "properties": { + "hi_hi": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "hi_lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "lo_hi": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "lo_lo": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + } + }, + "Uint256": { + "description": "Uint256 is an XDR Typedef defines as:\n\n```text typedef opaque uint256[32]; ```", + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32 + }, + "VecM_for_Asset_and_5": { + "type": "array", + "items": { + "$ref": "#/definitions/Asset" + } + }, + "VecM_for_ClaimPredicate_and_2": { + "type": "array", + "items": { + "$ref": "#/definitions/ClaimPredicate" + } + }, + "VecM_for_Claimant_and_10": { + "type": "array", + "items": { + "$ref": "#/definitions/Claimant" + } + }, + "VecM_for_DecoratedSignature_and_20": { + "type": "array", + "items": { + "$ref": "#/definitions/DecoratedSignature" + } + }, + "VecM_for_LedgerKey_and_4294967295": { + "type": "array", + "items": { + "$ref": "#/definitions/LedgerKey" + } + }, + "VecM_for_Operation_and_100": { + "type": "array", + "items": { + "$ref": "#/definitions/Operation" + } + }, + "VecM_for_ScMapEntry_and_4294967295": { + "type": "array", + "items": { + "$ref": "#/definitions/ScMapEntry" + } + }, + "VecM_for_ScVal_and_4294967295": { + "type": "array", + "items": { + "$ref": "#/definitions/ScVal" + } + }, + "VecM_for_SignerKey_and_2": { + "type": "array", + "items": { + "$ref": "#/definitions/SignerKey" + } + }, + "VecM_for_SorobanAuthorizationEntry_and_4294967295": { + "type": "array", + "items": { + "$ref": "#/definitions/SorobanAuthorizationEntry" + } + }, + "VecM_for_SorobanAuthorizedInvocation_and_4294967295": { + "type": "array", + "items": { + "$ref": "#/definitions/SorobanAuthorizedInvocation" + } + } + } +}"##, + ); + + Ok(()) +} From ca57d82f9912029ac191c09b852cbbcb9ac87660 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Mon, 4 Mar 2024 21:51:46 +1000 Subject: [PATCH 03/25] remove unused dev dep --- Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 96c8f82e..e29ae380 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,6 @@ schemars = { version = "0.8.16", optional = true } [dev_dependencies] serde_json = "1.0.89" -schemars = "0.8.16" [features] default = ["std", "curr"] From 3146219326e993566c00d8e26d562740b08a169b Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:59:24 +1000 Subject: [PATCH 04/25] silence clippy warning --- tests/serde_tx_schema.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/serde_tx_schema.rs b/tests/serde_tx_schema.rs index 83757f0a..336dfe4e 100644 --- a/tests/serde_tx_schema.rs +++ b/tests/serde_tx_schema.rs @@ -5,6 +5,7 @@ use stellar_xdr::curr as stellar_xdr; use stellar_xdr::TransactionEnvelope; #[cfg(feature = "curr")] +#[allow(clippy::too_many_lines)] #[test] fn test_serde_tx_schema() -> Result<(), Box> { let schema = schemars::schema_for!(TransactionEnvelope); From ddb4b4d4efaaa119e289c5d069457656eeef4d6c Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:33:39 +1000 Subject: [PATCH 05/25] regen with new feature and manual impls from willem --- Makefile | 3 +- src/curr/generated.rs | 2691 +++++++++++++++++++++++++++++++++-------- src/next/generated.rs | 2691 +++++++++++++++++++++++++++++++++-------- 3 files changed, 4402 insertions(+), 983 deletions(-) diff --git a/Makefile b/Makefile index 56404a5e..be3fac70 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,8 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=8cb548165a86ef3de504d68159948f852ad7e988 +XDRGEN_VERSION=8cfcc1a17472b933724c5b9501e4d33a680b09b1 +# LOCAL_XDRGEN=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 61fc873a..5ef665cd 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -931,10 +931,7 @@ impl WriteXdr for [T; N] { #[cfg(feature = "alloc")] #[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] -#[cfg_attr( - feature = "serde", - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema) -)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct VecM(Vec); @@ -959,6 +956,26 @@ impl Default for VecM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for VecM { + fn schema_name() -> String { + format!("VecM<{}, {}>", T::schema_name(), MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + mut_array(Vec::::json_schema(gen), |array| { + schemars::schema::ArrayValidation { + max_items: Some(MAX), + ..array + } + }) + } +} + impl VecM { pub const MAX_LEN: usize = { MAX as usize }; @@ -1340,11 +1357,7 @@ impl WriteXdr for VecM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct BytesM(Vec); @@ -1398,6 +1411,38 @@ impl Deref for BytesM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for BytesM { + fn schema_name() -> String { + format!("BytesM<{}>", MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + min_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + ..string + }) + } else { + schema_ + } + } +} + impl Default for BytesM { fn default() -> Self { Self(Vec::default()) @@ -1725,11 +1770,7 @@ impl WriteXdr for BytesM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct StringM(Vec); @@ -1790,6 +1831,26 @@ impl Default for StringM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for StringM { + fn schema_name() -> String { + format!("StringM<{}>", MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + mut_string(String::json_schema(gen), |string| { + schemars::schema::StringValidation { + max_length: Some(MAX), + ..string + } + }) + } +} + impl StringM { pub const MAX_LEN: usize = { MAX as usize }; @@ -2099,13 +2160,28 @@ impl WriteXdr for StringM { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] pub struct Frame(pub T) where T: ReadXdr; +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for Frame { + fn schema_name() -> String { + format!("Frame<{}>", T::schema_name()) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + T::json_schema(gen) + } +} + impl ReadXdr for Frame where T: ReadXdr, @@ -2130,6 +2206,35 @@ where } } +fn mut_array( + schema: schemars::schema::Schema, + f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, +) -> schemars::schema::Schema { + if let schemars::schema::Schema::Object(mut schema) = schema { + if let Some(array) = schema.array.clone() { + schema.array = Some(Box::new(f(*array))); + } + schema.into() + } else { + schema + } +} + +fn mut_string( + schema: schemars::schema::Schema, + f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, +) -> schemars::schema::Schema { + if let schemars::schema::Schema::Object(mut schema) = schema { + let string = *schema.string.unwrap_or_default().clone(); + let s = f(string); + schema.string = Some(Box::new(s)); + + schema.into() + } else { + schema + } +} + #[cfg(all(test, feature = "std"))] mod tests { use std::io::Cursor; @@ -2766,9 +2871,13 @@ mod test { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Value(pub BytesM); @@ -2874,9 +2983,13 @@ impl AsRef<[u8]> for Value { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpBallot { pub counter: u32, pub value: Value, @@ -2922,9 +3035,13 @@ impl WriteXdr for ScpBallot { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScpStatementType { Prepare = 0, @@ -3038,9 +3155,13 @@ impl WriteXdr for ScpStatementType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpNomination { pub quorum_set_hash: Hash, pub votes: VecM, @@ -3090,9 +3211,13 @@ impl WriteXdr for ScpNomination { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementPrepare { pub quorum_set_hash: Hash, pub ballot: ScpBallot, @@ -3150,9 +3275,13 @@ impl WriteXdr for ScpStatementPrepare { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementConfirm { pub ballot: ScpBallot, pub n_prepared: u32, @@ -3205,9 +3334,13 @@ impl WriteXdr for ScpStatementConfirm { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementExternalize { pub commit: ScpBallot, pub n_h: u32, @@ -3280,9 +3413,13 @@ impl WriteXdr for ScpStatementExternalize { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScpStatementPledges { Prepare(ScpStatementPrepare), @@ -3434,9 +3571,13 @@ impl WriteXdr for ScpStatementPledges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatement { pub node_id: NodeId, pub slot_index: u64, @@ -3482,9 +3623,13 @@ impl WriteXdr for ScpStatement { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpEnvelope { pub statement: ScpStatement, pub signature: Signature, @@ -3528,9 +3673,13 @@ impl WriteXdr for ScpEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpQuorumSet { pub threshold: u32, pub validators: VecM, @@ -3576,9 +3725,13 @@ impl WriteXdr for ScpQuorumSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractExecutionLanesV0 { pub ledger_max_tx_count: u32, } @@ -3626,9 +3779,13 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractComputeV0 { pub ledger_max_instructions: i64, pub tx_max_instructions: i64, @@ -3707,9 +3864,13 @@ impl WriteXdr for ConfigSettingContractComputeV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractLedgerCostV0 { pub ledger_max_read_ledger_entries: u32, pub ledger_max_read_bytes: u32, @@ -3790,9 +3951,13 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractHistoricalDataV0 { pub fee_historical1_kb: i64, } @@ -3834,9 +3999,13 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractEventsV0 { pub tx_max_contract_events_size_bytes: u32, pub fee_contract_events1_kb: i64, @@ -3884,9 +4053,13 @@ impl WriteXdr for ConfigSettingContractEventsV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractBandwidthV0 { pub ledger_max_txs_size_bytes: u32, pub tx_max_size_bytes: u32, @@ -3980,9 +4153,13 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractCostType { WasmInsnExec = 0, @@ -4197,9 +4374,13 @@ impl WriteXdr for ContractCostType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractCostParamEntry { pub ext: ExtensionPoint, pub const_term: i64, @@ -4264,9 +4445,13 @@ impl WriteXdr for ContractCostParamEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StateArchivalSettings { pub max_entry_ttl: u32, pub min_temporary_ttl: u32, @@ -4333,9 +4518,13 @@ impl WriteXdr for StateArchivalSettings { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct EvictionIterator { pub bucket_list_level: u32, pub is_curr_bucket: bool, @@ -4386,9 +4575,13 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ContractCostParams(pub VecM); @@ -4507,9 +4700,13 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ConfigSettingId { ContractMaxSizeBytes = 0, @@ -4704,9 +4901,13 @@ impl WriteXdr for ConfigSettingId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ConfigSettingEntry { ContractMaxSizeBytes(u32), @@ -4930,9 +5131,13 @@ impl WriteXdr for ConfigSettingEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScEnvMetaKind { ScEnvMetaKindInterfaceVersion = 0, @@ -5032,9 +5237,13 @@ impl WriteXdr for ScEnvMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScEnvMetaEntry { ScEnvMetaKindInterfaceVersion(u64), @@ -5133,9 +5342,13 @@ impl WriteXdr for ScEnvMetaEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScMetaV0 { pub key: StringM, pub val: StringM, @@ -5178,9 +5391,13 @@ impl WriteXdr for ScMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScMetaKind { ScMetaV0 = 0, @@ -5280,9 +5497,13 @@ impl WriteXdr for ScMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScMetaEntry { ScMetaV0(ScMetaV0), @@ -5417,9 +5638,13 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecType { Val = 0, @@ -5641,9 +5866,13 @@ impl WriteXdr for ScSpecType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeOption { pub value_type: Box, } @@ -5683,9 +5912,13 @@ impl WriteXdr for ScSpecTypeOption { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeResult { pub ok_type: Box, pub error_type: Box, @@ -5727,9 +5960,13 @@ impl WriteXdr for ScSpecTypeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeVec { pub element_type: Box, } @@ -5769,9 +6006,13 @@ impl WriteXdr for ScSpecTypeVec { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeMap { pub key_type: Box, pub value_type: Box, @@ -5813,9 +6054,13 @@ impl WriteXdr for ScSpecTypeMap { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeTuple { pub value_types: VecM, } @@ -5854,9 +6099,13 @@ impl WriteXdr for ScSpecTypeTuple { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeBytesN { pub n: u32, } @@ -5895,9 +6144,13 @@ impl WriteXdr for ScSpecTypeBytesN { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeUdt { pub name: StringM<60>, } @@ -5969,9 +6222,13 @@ impl WriteXdr for ScSpecTypeUdt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecTypeDef { Val, @@ -6241,9 +6498,13 @@ impl WriteXdr for ScSpecTypeDef { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtStructFieldV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6291,9 +6552,13 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtStructV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6342,9 +6607,13 @@ impl WriteXdr for ScSpecUdtStructV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionCaseVoidV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6388,9 +6657,13 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionCaseTupleV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6437,9 +6710,13 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecUdtUnionCaseV0Kind { VoidV0 = 0, @@ -6547,9 +6824,13 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecUdtUnionCaseV0 { VoidV0(ScSpecUdtUnionCaseVoidV0), @@ -6660,9 +6941,13 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6712,9 +6997,13 @@ impl WriteXdr for ScSpecUdtUnionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6762,9 +7051,13 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6814,9 +7107,13 @@ impl WriteXdr for ScSpecUdtEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtErrorEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6864,9 +7161,13 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtErrorEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6916,9 +7217,13 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecFunctionInputV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6966,9 +7271,13 @@ impl WriteXdr for ScSpecFunctionInputV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecFunctionV0 { pub doc: StringM<1024>, pub name: ScSymbol, @@ -7021,9 +7330,13 @@ impl WriteXdr for ScSpecFunctionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecEntryKind { FunctionV0 = 0, @@ -7155,9 +7468,13 @@ impl WriteXdr for ScSpecEntryKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecEntry { FunctionV0(ScSpecFunctionV0), @@ -7338,9 +7655,13 @@ impl WriteXdr for ScSpecEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScValType { Bool = 0, @@ -7557,9 +7878,13 @@ impl WriteXdr for ScValType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScErrorType { Contract = 0, @@ -7708,9 +8033,13 @@ impl WriteXdr for ScErrorType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScErrorCode { ArithDomain = 0, @@ -7869,9 +8198,13 @@ impl WriteXdr for ScErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScError { Contract(u32), @@ -8026,9 +8359,13 @@ impl WriteXdr for ScError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UInt128Parts { pub hi: u64, pub lo: u64, @@ -8070,9 +8407,13 @@ impl WriteXdr for UInt128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Int128Parts { pub hi: i64, pub lo: u64, @@ -8116,9 +8457,13 @@ impl WriteXdr for Int128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UInt256Parts { pub hi_hi: u64, pub hi_lo: u64, @@ -8168,9 +8513,13 @@ impl WriteXdr for UInt256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Int256Parts { pub hi_hi: i64, pub hi_lo: u64, @@ -8220,9 +8569,13 @@ impl WriteXdr for Int256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractExecutableType { Wasm = 0, @@ -8330,9 +8683,13 @@ impl WriteXdr for ContractExecutableType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractExecutable { Wasm(Hash), @@ -8438,9 +8795,13 @@ impl WriteXdr for ContractExecutable { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScAddressType { Account = 0, @@ -8545,11 +8906,11 @@ impl WriteXdr for ScAddressType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum ScAddress { @@ -8657,9 +9018,13 @@ pub const SCSYMBOL_LIMIT: u64 = 32; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScVec(pub VecM); @@ -8762,9 +9127,13 @@ impl AsRef<[ScVal]> for ScVec { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScMap(pub VecM); @@ -8867,9 +9236,13 @@ impl AsRef<[ScMapEntry]> for ScMap { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScBytes(pub BytesM); @@ -8972,9 +9345,13 @@ impl AsRef<[u8]> for ScBytes { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScString(pub StringM); @@ -9077,9 +9454,13 @@ impl AsRef<[u8]> for ScString { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScSymbol(pub StringM<32>); @@ -9183,9 +9564,13 @@ impl AsRef<[u8]> for ScSymbol { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScNonceKey { pub nonce: i64, } @@ -9224,9 +9609,13 @@ impl WriteXdr for ScNonceKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScContractInstance { pub executable: ContractExecutable, pub storage: Option, @@ -9326,9 +9715,13 @@ impl WriteXdr for ScContractInstance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScVal { Bool(bool), @@ -9578,9 +9971,13 @@ impl WriteXdr for ScVal { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScMapEntry { pub key: ScVal, pub val: ScVal, @@ -9626,9 +10023,13 @@ impl WriteXdr for ScMapEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StoredTransactionSet { V0(TransactionSet), @@ -9731,9 +10132,13 @@ impl WriteXdr for StoredTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StoredDebugTransactionSet { pub tx_set: StoredTransactionSet, pub ledger_seq: u32, @@ -9780,9 +10185,13 @@ impl WriteXdr for StoredDebugTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PersistedScpStateV0 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -9829,9 +10238,13 @@ impl WriteXdr for PersistedScpStateV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PersistedScpStateV1 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -9877,9 +10290,13 @@ impl WriteXdr for PersistedScpStateV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PersistedScpState { V0(PersistedScpStateV0), @@ -9977,11 +10394,11 @@ impl WriteXdr for PersistedScpState { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Thresholds(pub [u8; 4]); @@ -10100,9 +10517,13 @@ impl AsRef<[u8]> for Thresholds { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct String32(pub StringM<32>); @@ -10205,9 +10626,13 @@ impl AsRef<[u8]> for String32 { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct String64(pub StringM<64>); @@ -10309,9 +10734,13 @@ impl AsRef<[u8]> for String64 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct SequenceNumber(pub i64); @@ -10365,9 +10794,13 @@ impl WriteXdr for SequenceNumber { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct DataValue(pub BytesM<64>); @@ -10469,9 +10902,13 @@ impl AsRef<[u8]> for DataValue { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct PoolId(pub Hash); @@ -10524,11 +10961,11 @@ impl WriteXdr for PoolId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct AssetCode4(pub [u8; 4]); @@ -10629,11 +11066,11 @@ impl AsRef<[u8]> for AssetCode4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct AssetCode12(pub [u8; 12]); @@ -10741,9 +11178,13 @@ impl AsRef<[u8]> for AssetCode12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AssetType { Native = 0, @@ -10863,11 +11304,11 @@ impl WriteXdr for AssetType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum AssetCode { @@ -10970,9 +11411,13 @@ impl WriteXdr for AssetCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AlphaNum4 { pub asset_code: AssetCode4, pub issuer: AccountId, @@ -11015,9 +11460,13 @@ impl WriteXdr for AlphaNum4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AlphaNum12 { pub asset_code: AssetCode12, pub issuer: AccountId, @@ -11069,9 +11518,13 @@ impl WriteXdr for AlphaNum12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Asset { Native, @@ -11182,9 +11635,13 @@ impl WriteXdr for Asset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Price { pub n: i32, pub d: i32, @@ -11227,9 +11684,13 @@ impl WriteXdr for Price { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Liabilities { pub buying: i64, pub selling: i64, @@ -11275,9 +11736,13 @@ impl WriteXdr for Liabilities { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ThresholdIndexes { MasterWeight = 0, @@ -11399,9 +11864,13 @@ impl WriteXdr for ThresholdIndexes { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerEntryType { Account = 0, @@ -11549,9 +12018,13 @@ impl WriteXdr for LedgerEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Signer { pub key: SignerKey, pub weight: u32, @@ -11607,9 +12080,13 @@ impl WriteXdr for Signer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AccountFlags { RequiredFlag = 1, @@ -11747,9 +12224,13 @@ pub const MAX_SIGNERS: u64 = 20; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct SponsorshipDescriptor(pub Option); @@ -11813,9 +12294,13 @@ impl WriteXdr for SponsorshipDescriptor { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV3 { pub ext: ExtensionPoint, pub seq_ledger: u32, @@ -11864,9 +12349,13 @@ impl WriteXdr for AccountEntryExtensionV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV2Ext { V0, @@ -11978,9 +12467,13 @@ impl WriteXdr for AccountEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV2 { pub num_sponsored: u32, pub num_sponsoring: u32, @@ -12032,9 +12525,13 @@ impl WriteXdr for AccountEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV1Ext { V0, @@ -12144,9 +12641,13 @@ impl WriteXdr for AccountEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV1 { pub liabilities: Liabilities, pub ext: AccountEntryExtensionV1Ext, @@ -12192,9 +12693,13 @@ impl WriteXdr for AccountEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExt { V0, @@ -12319,9 +12824,13 @@ impl WriteXdr for AccountEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntry { pub account_id: AccountId, pub balance: i64, @@ -12395,9 +12904,13 @@ impl WriteXdr for AccountEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TrustLineFlags { AuthorizedFlag = 1, @@ -12534,9 +13047,13 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolType { LiquidityPoolConstantProduct = 0, @@ -12647,9 +13164,13 @@ impl WriteXdr for LiquidityPoolType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineAsset { Native, @@ -12768,9 +13289,13 @@ impl WriteXdr for TrustLineAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExtensionV2Ext { V0, @@ -12873,9 +13398,13 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntryExtensionV2 { pub liquidity_pool_use_count: i32, pub ext: TrustLineEntryExtensionV2Ext, @@ -12921,9 +13450,13 @@ impl WriteXdr for TrustLineEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryV1Ext { V0, @@ -13033,9 +13566,13 @@ impl WriteXdr for TrustLineEntryV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntryV1 { pub liabilities: Liabilities, pub ext: TrustLineEntryV1Ext, @@ -13093,9 +13630,13 @@ impl WriteXdr for TrustLineEntryV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExt { V0, @@ -13224,9 +13765,13 @@ impl WriteXdr for TrustLineEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntry { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -13283,9 +13828,13 @@ impl WriteXdr for TrustLineEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OfferEntryFlags { PassiveFlag = 1, @@ -13393,9 +13942,13 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OfferEntryExt { V0, @@ -13511,9 +14064,13 @@ impl WriteXdr for OfferEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct OfferEntry { pub seller_id: AccountId, pub offer_id: i64, @@ -13575,9 +14132,13 @@ impl WriteXdr for OfferEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum DataEntryExt { V0, @@ -13683,9 +14244,13 @@ impl WriteXdr for DataEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DataEntry { pub account_id: AccountId, pub data_name: String64, @@ -13739,9 +14304,13 @@ impl WriteXdr for DataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimPredicateType { Unconditional = 0, @@ -13881,9 +14450,13 @@ impl WriteXdr for ClaimPredicateType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimPredicate { Unconditional, @@ -14023,9 +14596,13 @@ impl WriteXdr for ClaimPredicate { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimantType { ClaimantTypeV0 = 0, @@ -14124,9 +14701,13 @@ impl WriteXdr for ClaimantType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimantV0 { pub destination: AccountId, pub predicate: ClaimPredicate, @@ -14174,9 +14755,13 @@ impl WriteXdr for ClaimantV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Claimant { ClaimantTypeV0(ClaimantV0), @@ -14273,9 +14858,13 @@ impl WriteXdr for Claimant { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimableBalanceIdType { ClaimableBalanceIdTypeV0 = 0, @@ -14376,9 +14965,13 @@ impl WriteXdr for ClaimableBalanceIdType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceId { ClaimableBalanceIdTypeV0(Hash), @@ -14480,9 +15073,13 @@ impl WriteXdr for ClaimableBalanceId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimableBalanceFlags { ClaimableBalanceClawbackEnabledFlag = 1, @@ -14591,9 +15188,13 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExtensionV1Ext { V0, @@ -14696,9 +15297,13 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimableBalanceEntryExtensionV1 { pub ext: ClaimableBalanceEntryExtensionV1Ext, pub flags: u32, @@ -14744,9 +15349,13 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExt { V0, @@ -14867,9 +15476,13 @@ impl WriteXdr for ClaimableBalanceEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimableBalanceEntry { pub balance_id: ClaimableBalanceId, pub claimants: VecM, @@ -14922,9 +15535,13 @@ impl WriteXdr for ClaimableBalanceEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolConstantProductParameters { pub asset_a: Asset, pub asset_b: Asset, @@ -14975,9 +15592,13 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolEntryConstantProduct { pub params: LiquidityPoolConstantProductParameters, pub reserve_a: i64, @@ -15039,9 +15660,13 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolEntryBody { LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct), @@ -15159,9 +15784,13 @@ impl WriteXdr for LiquidityPoolEntryBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolEntry { pub liquidity_pool_id: PoolId, pub body: LiquidityPoolEntryBody, @@ -15204,9 +15833,13 @@ impl WriteXdr for LiquidityPoolEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractDataDurability { Temporary = 0, @@ -15314,9 +15947,13 @@ impl WriteXdr for ContractDataDurability { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractDataEntry { pub ext: ExtensionPoint, pub contract: ScAddress, @@ -15369,9 +16006,13 @@ impl WriteXdr for ContractDataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractCodeEntry { pub ext: ExtensionPoint, pub hash: Hash, @@ -15417,9 +16058,13 @@ impl WriteXdr for ContractCodeEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TtlEntry { pub key_hash: Hash, pub live_until_ledger_seq: u32, @@ -15463,9 +16108,13 @@ impl WriteXdr for TtlEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExtensionV1Ext { V0, @@ -15568,9 +16217,13 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerEntryExtensionV1 { pub sponsoring_id: SponsorshipDescriptor, pub ext: LedgerEntryExtensionV1Ext, @@ -15632,9 +16285,13 @@ impl WriteXdr for LedgerEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryData { Account(AccountEntry), @@ -15811,9 +16468,13 @@ impl WriteXdr for LedgerEntryData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExt { V0, @@ -15949,9 +16610,13 @@ impl WriteXdr for LedgerEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerEntry { pub last_modified_ledger_seq: u32, pub data: LedgerEntryData, @@ -15996,9 +16661,13 @@ impl WriteXdr for LedgerEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyAccount { pub account_id: AccountId, } @@ -16038,9 +16707,13 @@ impl WriteXdr for LedgerKeyAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyTrustLine { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -16083,9 +16756,13 @@ impl WriteXdr for LedgerKeyTrustLine { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyOffer { pub seller_id: AccountId, pub offer_id: i64, @@ -16128,9 +16805,13 @@ impl WriteXdr for LedgerKeyOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyData { pub account_id: AccountId, pub data_name: String64, @@ -16172,9 +16853,13 @@ impl WriteXdr for LedgerKeyData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyClaimableBalance { pub balance_id: ClaimableBalanceId, } @@ -16213,9 +16898,13 @@ impl WriteXdr for LedgerKeyClaimableBalance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyLiquidityPool { pub liquidity_pool_id: PoolId, } @@ -16256,9 +16945,13 @@ impl WriteXdr for LedgerKeyLiquidityPool { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyContractData { pub contract: ScAddress, pub key: ScVal, @@ -16303,9 +16996,13 @@ impl WriteXdr for LedgerKeyContractData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyContractCode { pub hash: Hash, } @@ -16344,9 +17041,13 @@ impl WriteXdr for LedgerKeyContractCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyConfigSetting { pub config_setting_id: ConfigSettingId, } @@ -16386,9 +17087,13 @@ impl WriteXdr for LedgerKeyConfigSetting { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyTtl { pub key_hash: Hash, } @@ -16488,9 +17193,13 @@ impl WriteXdr for LedgerKeyTtl { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerKey { Account(LedgerKeyAccount), @@ -16673,9 +17382,13 @@ impl WriteXdr for LedgerKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum EnvelopeType { TxV0 = 0, @@ -16820,9 +17533,13 @@ impl WriteXdr for EnvelopeType { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct UpgradeType(pub BytesM<128>); @@ -16929,9 +17646,13 @@ impl AsRef<[u8]> for UpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum StellarValueType { Basic = 0, @@ -17033,9 +17754,13 @@ impl WriteXdr for StellarValueType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseValueSignature { pub node_id: NodeId, pub signature: Signature, @@ -17081,9 +17806,13 @@ impl WriteXdr for LedgerCloseValueSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StellarValueExt { Basic, @@ -17202,9 +17931,13 @@ impl WriteXdr for StellarValueExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StellarValue { pub tx_set_hash: Hash, pub close_time: TimePoint, @@ -17263,9 +17996,13 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerHeaderFlags { TradingFlag = 1, @@ -17375,9 +18112,13 @@ impl WriteXdr for LedgerHeaderFlags { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExtensionV1Ext { V0, @@ -17480,9 +18221,13 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeaderExtensionV1 { pub flags: u32, pub ext: LedgerHeaderExtensionV1Ext, @@ -17528,9 +18273,13 @@ impl WriteXdr for LedgerHeaderExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExt { V0, @@ -17666,9 +18415,13 @@ impl WriteXdr for LedgerHeaderExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeader { pub ledger_version: u32, pub previous_ledger_hash: Hash, @@ -17756,9 +18509,13 @@ impl WriteXdr for LedgerHeader { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerUpgradeType { Version = 1, @@ -17890,9 +18647,13 @@ impl WriteXdr for LedgerUpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigUpgradeSetKey { pub contract_id: Hash, pub content_hash: Hash, @@ -17951,9 +18712,13 @@ impl WriteXdr for ConfigUpgradeSetKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerUpgrade { Version(u32), @@ -18096,9 +18861,13 @@ impl WriteXdr for LedgerUpgrade { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigUpgradeSet { pub updated_entry: VecM, } @@ -18143,9 +18912,13 @@ impl WriteXdr for ConfigUpgradeSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BucketEntryType { Metaentry = -1, @@ -18260,9 +19033,13 @@ impl WriteXdr for BucketEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BucketMetadataExt { V0, @@ -18367,9 +19144,13 @@ impl WriteXdr for BucketMetadataExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BucketMetadata { pub ledger_version: u32, pub ext: BucketMetadataExt, @@ -18419,9 +19200,13 @@ impl WriteXdr for BucketMetadata { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BucketEntry { Liveentry(LedgerEntry), @@ -18541,9 +19326,13 @@ impl WriteXdr for BucketEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TxSetComponentType { TxsetCompTxsMaybeDiscountedFee = 0, @@ -18643,9 +19432,13 @@ impl WriteXdr for TxSetComponentType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TxSetComponentTxsMaybeDiscountedFee { pub base_fee: Option, pub txs: VecM, @@ -18693,9 +19486,13 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TxSetComponent { TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee), @@ -18800,9 +19597,13 @@ impl WriteXdr for TxSetComponent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionPhase { V0(VecM), @@ -18899,9 +19700,13 @@ impl WriteXdr for TransactionPhase { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSet { pub previous_ledger_hash: Hash, pub txs: VecM, @@ -18944,9 +19749,13 @@ impl WriteXdr for TransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSetV1 { pub previous_ledger_hash: Hash, pub phases: VecM, @@ -18991,9 +19800,13 @@ impl WriteXdr for TransactionSetV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum GeneralizedTransactionSet { V1(TransactionSetV1), @@ -19090,9 +19903,13 @@ impl WriteXdr for GeneralizedTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultPair { pub transaction_hash: Hash, pub result: TransactionResult, @@ -19134,9 +19951,13 @@ impl WriteXdr for TransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultSet { pub results: VecM, } @@ -19179,9 +20000,13 @@ impl WriteXdr for TransactionResultSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryEntryExt { V0, @@ -19293,9 +20118,13 @@ impl WriteXdr for TransactionHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionHistoryEntry { pub ledger_seq: u32, pub tx_set: TransactionSet, @@ -19342,9 +20171,13 @@ impl WriteXdr for TransactionHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryResultEntryExt { V0, @@ -19449,9 +20282,13 @@ impl WriteXdr for TransactionHistoryResultEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionHistoryResultEntry { pub ledger_seq: u32, pub tx_result_set: TransactionResultSet, @@ -19498,9 +20335,13 @@ impl WriteXdr for TransactionHistoryResultEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderHistoryEntryExt { V0, @@ -19605,9 +20446,13 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeaderHistoryEntry { pub hash: Hash, pub header: LedgerHeader, @@ -19653,9 +20498,13 @@ impl WriteXdr for LedgerHeaderHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerScpMessages { pub ledger_seq: u32, pub messages: VecM, @@ -19698,9 +20547,13 @@ impl WriteXdr for LedgerScpMessages { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpHistoryEntryV0 { pub quorum_sets: VecM, pub ledger_messages: LedgerScpMessages, @@ -19744,9 +20597,13 @@ impl WriteXdr for ScpHistoryEntryV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScpHistoryEntry { V0(ScpHistoryEntryV0), @@ -19846,9 +20703,13 @@ impl WriteXdr for ScpHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerEntryChangeType { Created = 0, @@ -19968,9 +20829,13 @@ impl WriteXdr for LedgerEntryChangeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryChange { Created(LedgerEntry), @@ -20084,9 +20949,13 @@ impl WriteXdr for LedgerEntryChange { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct LedgerEntryChanges(pub VecM); @@ -20191,9 +21060,13 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct OperationMeta { pub changes: LedgerEntryChanges, } @@ -20233,9 +21106,13 @@ impl WriteXdr for OperationMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV1 { pub tx_changes: LedgerEntryChanges, pub operations: VecM, @@ -20281,9 +21158,13 @@ impl WriteXdr for TransactionMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV2 { pub tx_changes_before: LedgerEntryChanges, pub operations: VecM, @@ -20331,9 +21212,13 @@ impl WriteXdr for TransactionMetaV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractEventType { System = 0, @@ -20442,9 +21327,13 @@ impl WriteXdr for ContractEventType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractEventV0 { pub topics: VecM, pub data: ScVal, @@ -20492,9 +21381,13 @@ impl WriteXdr for ContractEventV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractEventBody { V0(ContractEventV0), @@ -20606,9 +21499,13 @@ impl WriteXdr for ContractEventBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractEvent { pub ext: ExtensionPoint, pub contract_id: Option, @@ -20657,9 +21554,13 @@ impl WriteXdr for ContractEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DiagnosticEvent { pub in_successful_contract_call: bool, pub event: ContractEvent, @@ -20710,9 +21611,13 @@ impl WriteXdr for DiagnosticEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanTransactionMeta { pub ext: ExtensionPoint, pub events: VecM, @@ -20768,9 +21673,13 @@ impl WriteXdr for SorobanTransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV3 { pub ext: ExtensionPoint, pub tx_changes_before: LedgerEntryChanges, @@ -20822,9 +21731,13 @@ impl WriteXdr for TransactionMetaV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeHostFunctionSuccessPreImage { pub return_value: ScVal, pub events: VecM, @@ -20874,9 +21787,13 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionMeta { V0(VecM), @@ -20989,9 +21906,13 @@ impl WriteXdr for TransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultMeta { pub result: TransactionResultPair, pub fee_processing: LedgerEntryChanges, @@ -21037,9 +21958,13 @@ impl WriteXdr for TransactionResultMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UpgradeEntryMeta { pub upgrade: LedgerUpgrade, pub changes: LedgerEntryChanges, @@ -21094,9 +22019,13 @@ impl WriteXdr for UpgradeEntryMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseMetaV0 { pub ledger_header: LedgerHeaderHistoryEntry, pub tx_set: TransactionSet, @@ -21175,9 +22104,13 @@ impl WriteXdr for LedgerCloseMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseMetaV1 { pub ext: ExtensionPoint, pub ledger_header: LedgerHeaderHistoryEntry, @@ -21244,9 +22177,13 @@ impl WriteXdr for LedgerCloseMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMeta { V0(LedgerCloseMetaV0), @@ -21352,9 +22289,13 @@ impl WriteXdr for LedgerCloseMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ErrorCode { Misc = 0, @@ -21471,9 +22412,13 @@ impl WriteXdr for ErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SError { pub code: ErrorCode, pub msg: StringM<100>, @@ -21515,9 +22460,13 @@ impl WriteXdr for SError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SendMore { pub num_messages: u32, } @@ -21557,9 +22506,13 @@ impl WriteXdr for SendMore { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SendMoreExtended { pub num_messages: u32, pub num_bytes: u32, @@ -21603,9 +22556,13 @@ impl WriteXdr for SendMoreExtended { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AuthCert { pub pubkey: Curve25519Public, pub expiration: u64, @@ -21658,9 +22615,13 @@ impl WriteXdr for AuthCert { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Hello { pub ledger_version: u32, pub overlay_version: u32, @@ -21731,9 +22692,13 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Auth { pub flags: i32, } @@ -21774,9 +22739,13 @@ impl WriteXdr for Auth { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum IpAddrType { IPv4 = 0, @@ -21881,9 +22850,13 @@ impl WriteXdr for IpAddrType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PeerAddressIp { IPv4([u8; 4]), @@ -21993,9 +22966,13 @@ impl WriteXdr for PeerAddressIp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PeerAddress { pub ip: PeerAddressIp, pub port: u32, @@ -22070,9 +23047,13 @@ impl WriteXdr for PeerAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum MessageType { ErrorMsg = 0, @@ -22270,9 +23251,13 @@ impl WriteXdr for MessageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DontHave { pub type_: MessageType, pub req_hash: Uint256, @@ -22315,9 +23300,13 @@ impl WriteXdr for DontHave { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SurveyMessageCommandType { SurveyTopology = 0, @@ -22417,9 +23406,13 @@ impl WriteXdr for SurveyMessageCommandType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SurveyMessageResponseType { V0 = 0, @@ -22525,9 +23518,13 @@ impl WriteXdr for SurveyMessageResponseType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SurveyRequestMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -22579,9 +23576,13 @@ impl WriteXdr for SurveyRequestMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SignedSurveyRequestMessage { pub request_signature: Signature, pub request: SurveyRequestMessage, @@ -22621,9 +23622,13 @@ impl WriteXdr for SignedSurveyRequestMessage { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct EncryptedBody(pub BytesM<64000>); @@ -22732,9 +23737,13 @@ impl AsRef<[u8]> for EncryptedBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SurveyResponseMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -22786,9 +23795,13 @@ impl WriteXdr for SurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SignedSurveyResponseMessage { pub response_signature: Signature, pub response: SurveyResponseMessage, @@ -22846,9 +23859,13 @@ impl WriteXdr for SignedSurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PeerStats { pub id: NodeId, pub version_str: StringM<100>, @@ -22927,9 +23944,13 @@ impl WriteXdr for PeerStats { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct PeerStatList(pub VecM); @@ -23038,9 +24059,13 @@ impl AsRef<[PeerStats]> for PeerStatList { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TopologyResponseBodyV0 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -23095,9 +24120,13 @@ impl WriteXdr for TopologyResponseBodyV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TopologyResponseBodyV1 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -23155,9 +24184,13 @@ impl WriteXdr for TopologyResponseBodyV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SurveyResponseBody { V0(TopologyResponseBodyV0), @@ -23266,9 +24299,13 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TxAdvertVector(pub VecM); @@ -23373,9 +24410,13 @@ impl AsRef<[Hash]> for TxAdvertVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FloodAdvert { pub tx_hashes: TxAdvertVector, } @@ -23420,9 +24461,13 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TxDemandVector(pub VecM); @@ -23527,9 +24572,13 @@ impl AsRef<[Hash]> for TxDemandVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FloodDemand { pub tx_hashes: TxDemandVector, } @@ -23615,9 +24664,13 @@ impl WriteXdr for FloodDemand { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StellarMessage { ErrorMsg(SError), @@ -23860,9 +24913,13 @@ impl WriteXdr for StellarMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AuthenticatedMessageV0 { pub sequence: u64, pub message: StellarMessage, @@ -23914,9 +24971,13 @@ impl WriteXdr for AuthenticatedMessageV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AuthenticatedMessage { V0(AuthenticatedMessageV0), @@ -24022,9 +25083,13 @@ pub const MAX_OPS_PER_TX: u64 = 100; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolParameters { LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters), @@ -24127,11 +25192,11 @@ impl WriteXdr for LiquidityPoolParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct MuxedAccountMed25519 { pub id: u64, @@ -24182,11 +25247,11 @@ impl WriteXdr for MuxedAccountMed25519 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { @@ -24291,9 +25356,13 @@ impl WriteXdr for MuxedAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DecoratedSignature { pub hint: SignatureHint, pub signature: Signature, @@ -24362,9 +25431,13 @@ impl WriteXdr for DecoratedSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OperationType { CreateAccount = 0, @@ -24597,9 +25670,13 @@ impl WriteXdr for OperationType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateAccountOp { pub destination: AccountId, pub starting_balance: i64, @@ -24643,9 +25720,13 @@ impl WriteXdr for CreateAccountOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PaymentOp { pub destination: MuxedAccount, pub asset: Asset, @@ -24699,9 +25780,13 @@ impl WriteXdr for PaymentOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictReceiveOp { pub send_asset: Asset, pub send_max: i64, @@ -24764,9 +25849,13 @@ impl WriteXdr for PathPaymentStrictReceiveOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictSendOp { pub send_asset: Asset, pub send_amount: i64, @@ -24826,9 +25915,13 @@ impl WriteXdr for PathPaymentStrictSendOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -24886,9 +25979,13 @@ impl WriteXdr for ManageSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageBuyOfferOp { pub selling: Asset, pub buying: Asset, @@ -24942,9 +26039,13 @@ impl WriteXdr for ManageBuyOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreatePassiveSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -25007,9 +26108,13 @@ impl WriteXdr for CreatePassiveSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SetOptionsOp { pub inflation_dest: Option, pub clear_flags: Option, @@ -25085,9 +26190,13 @@ impl WriteXdr for SetOptionsOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustAsset { Native, @@ -25207,9 +26316,13 @@ impl WriteXdr for ChangeTrustAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ChangeTrustOp { pub line: ChangeTrustAsset, pub limit: i64, @@ -25255,9 +26368,13 @@ impl WriteXdr for ChangeTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AllowTrustOp { pub trustor: AccountId, pub asset: AssetCode, @@ -25303,9 +26420,13 @@ impl WriteXdr for AllowTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageDataOp { pub data_name: String64, pub data_value: Option, @@ -25347,9 +26468,13 @@ impl WriteXdr for ManageDataOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BumpSequenceOp { pub bump_to: SequenceNumber, } @@ -25390,9 +26515,13 @@ impl WriteXdr for BumpSequenceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateClaimableBalanceOp { pub asset: Asset, pub amount: i64, @@ -25437,9 +26566,13 @@ impl WriteXdr for CreateClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -25478,9 +26611,13 @@ impl WriteXdr for ClaimClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BeginSponsoringFutureReservesOp { pub sponsored_id: AccountId, } @@ -25521,9 +26658,13 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RevokeSponsorshipType { LedgerEntry = 0, @@ -25628,9 +26769,13 @@ impl WriteXdr for RevokeSponsorshipType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct RevokeSponsorshipOpSigner { pub account_id: AccountId, pub signer_key: SignerKey, @@ -25680,9 +26825,13 @@ impl WriteXdr for RevokeSponsorshipOpSigner { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipOp { LedgerEntry(LedgerKey), @@ -25790,9 +26939,13 @@ impl WriteXdr for RevokeSponsorshipOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClawbackOp { pub asset: Asset, pub from: MuxedAccount, @@ -25837,9 +26990,13 @@ impl WriteXdr for ClawbackOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClawbackClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -25882,9 +27039,13 @@ impl WriteXdr for ClawbackClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SetTrustLineFlagsOp { pub trustor: AccountId, pub asset: Asset, @@ -25944,9 +27105,13 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolDepositOp { pub liquidity_pool_id: PoolId, pub max_amount_a: i64, @@ -26000,9 +27165,13 @@ impl WriteXdr for LiquidityPoolDepositOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolWithdrawOp { pub liquidity_pool_id: PoolId, pub amount: i64, @@ -26053,9 +27222,13 @@ impl WriteXdr for LiquidityPoolWithdrawOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum HostFunctionType { InvokeContract = 0, @@ -26166,9 +27339,13 @@ impl WriteXdr for HostFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractIdPreimageType { Address = 0, @@ -26273,9 +27450,13 @@ impl WriteXdr for ContractIdPreimageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractIdPreimageFromAddress { pub address: ScAddress, pub salt: Uint256, @@ -26325,9 +27506,13 @@ impl WriteXdr for ContractIdPreimageFromAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractIdPreimage { Address(ContractIdPreimageFromAddress), @@ -26434,9 +27619,13 @@ impl WriteXdr for ContractIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateContractArgs { pub contract_id_preimage: ContractIdPreimage, pub executable: ContractExecutable, @@ -26479,9 +27668,13 @@ impl WriteXdr for CreateContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeContractArgs { pub contract_address: ScAddress, pub function_name: ScSymbol, @@ -26532,9 +27725,13 @@ impl WriteXdr for InvokeContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum HostFunction { InvokeContract(InvokeContractArgs), @@ -26653,9 +27850,13 @@ impl WriteXdr for HostFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SorobanAuthorizedFunctionType { ContractFn = 0, @@ -26763,9 +27964,13 @@ impl WriteXdr for SorobanAuthorizedFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SorobanAuthorizedFunction { ContractFn(InvokeContractArgs), @@ -26875,9 +28080,13 @@ impl WriteXdr for SorobanAuthorizedFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAuthorizedInvocation { pub function: SorobanAuthorizedFunction, pub sub_invocations: VecM, @@ -26922,9 +28131,13 @@ impl WriteXdr for SorobanAuthorizedInvocation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAddressCredentials { pub address: ScAddress, pub nonce: i64, @@ -26974,9 +28187,13 @@ impl WriteXdr for SorobanAddressCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SorobanCredentialsType { SourceAccount = 0, @@ -27084,9 +28301,13 @@ impl WriteXdr for SorobanCredentialsType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SorobanCredentials { SourceAccount, @@ -27193,9 +28414,13 @@ impl WriteXdr for SorobanCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAuthorizationEntry { pub credentials: SorobanCredentials, pub root_invocation: SorobanAuthorizedInvocation, @@ -27240,9 +28465,13 @@ impl WriteXdr for SorobanAuthorizationEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeHostFunctionOp { pub host_function: HostFunction, pub auth: VecM, @@ -27285,9 +28514,13 @@ impl WriteXdr for InvokeHostFunctionOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ExtendFootprintTtlOp { pub ext: ExtensionPoint, pub extend_to: u32, @@ -27329,9 +28562,13 @@ impl WriteXdr for ExtendFootprintTtlOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct RestoreFootprintOp { pub ext: ExtensionPoint, } @@ -27424,9 +28661,13 @@ impl WriteXdr for RestoreFootprintOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationBody { CreateAccount(CreateAccountOp), @@ -27804,9 +29045,13 @@ impl WriteXdr for OperationBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Operation { pub source_account: Option, pub body: OperationBody, @@ -27850,9 +29095,13 @@ impl WriteXdr for Operation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageOperationId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -27901,9 +29150,13 @@ impl WriteXdr for HashIdPreimageOperationId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageRevokeId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -27955,9 +29208,13 @@ impl WriteXdr for HashIdPreimageRevokeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageContractId { pub network_id: Hash, pub contract_id_preimage: ContractIdPreimage, @@ -28002,9 +29259,13 @@ impl WriteXdr for HashIdPreimageContractId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageSorobanAuthorization { pub network_id: Hash, pub nonce: i64, @@ -28082,9 +29343,13 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum HashIdPreimage { OpId(HashIdPreimageOperationId), @@ -28216,9 +29481,13 @@ impl WriteXdr for HashIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum MemoType { None = 0, @@ -28344,9 +29613,13 @@ impl WriteXdr for MemoType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Memo { None, @@ -28469,9 +29742,13 @@ impl WriteXdr for Memo { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TimeBounds { pub min_time: TimePoint, pub max_time: TimePoint, @@ -28514,9 +29791,13 @@ impl WriteXdr for TimeBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerBounds { pub min_ledger: u32, pub max_ledger: u32, @@ -28586,9 +29867,13 @@ impl WriteXdr for LedgerBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PreconditionsV2 { pub time_bounds: Option, pub ledger_bounds: Option, @@ -28645,9 +29930,13 @@ impl WriteXdr for PreconditionsV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PreconditionType { None = 0, @@ -28761,9 +30050,13 @@ impl WriteXdr for PreconditionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Preconditions { None, @@ -28874,9 +30167,13 @@ impl WriteXdr for Preconditions { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerFootprint { pub read_only: VecM, pub read_write: VecM, @@ -28926,9 +30223,13 @@ impl WriteXdr for LedgerFootprint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanResources { pub footprint: LedgerFootprint, pub instructions: u32, @@ -28987,9 +30288,13 @@ impl WriteXdr for SorobanResources { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanTransactionData { pub ext: ExtensionPoint, pub resources: SorobanResources, @@ -29036,9 +30341,13 @@ impl WriteXdr for SorobanTransactionData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionV0Ext { V0, @@ -29145,9 +30454,13 @@ impl WriteXdr for TransactionV0Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV0 { pub source_account_ed25519: Uint256, pub fee: u32, @@ -29207,9 +30520,13 @@ impl WriteXdr for TransactionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV0Envelope { pub tx: TransactionV0, pub signatures: VecM, @@ -29255,9 +30572,13 @@ impl WriteXdr for TransactionV0Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionExt { V0, @@ -29382,9 +30703,13 @@ impl WriteXdr for TransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Transaction { pub source_account: MuxedAccount, pub fee: u32, @@ -29444,9 +30769,13 @@ impl WriteXdr for Transaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV1Envelope { pub tx: Transaction, pub signatures: VecM, @@ -29490,9 +30819,13 @@ impl WriteXdr for TransactionV1Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionInnerTx { Tx(TransactionV1Envelope), @@ -29590,9 +30923,13 @@ impl WriteXdr for FeeBumpTransactionInnerTx { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionExt { V0, @@ -29701,9 +31038,13 @@ impl WriteXdr for FeeBumpTransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FeeBumpTransaction { pub fee_source: MuxedAccount, pub fee: i64, @@ -29754,9 +31095,13 @@ impl WriteXdr for FeeBumpTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FeeBumpTransactionEnvelope { pub tx: FeeBumpTransaction, pub signatures: VecM, @@ -29804,9 +31149,13 @@ impl WriteXdr for FeeBumpTransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionEnvelope { TxV0(TransactionV0Envelope), @@ -29923,9 +31272,13 @@ impl WriteXdr for TransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionSignaturePayloadTaggedTransaction { Tx(Transaction), @@ -30035,9 +31388,13 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSignaturePayload { pub network_id: Hash, pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction, @@ -30082,9 +31439,13 @@ impl WriteXdr for TransactionSignaturePayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimAtomType { V0 = 0, @@ -30202,9 +31563,13 @@ impl WriteXdr for ClaimAtomType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimOfferAtomV0 { pub seller_ed25519: Uint256, pub offer_id: i64, @@ -30268,9 +31633,13 @@ impl WriteXdr for ClaimOfferAtomV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimOfferAtom { pub seller_id: AccountId, pub offer_id: i64, @@ -30332,9 +31701,13 @@ impl WriteXdr for ClaimOfferAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimLiquidityAtom { pub liquidity_pool_id: PoolId, pub asset_sold: Asset, @@ -30391,9 +31764,13 @@ impl WriteXdr for ClaimLiquidityAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimAtom { V0(ClaimOfferAtomV0), @@ -30514,9 +31891,13 @@ impl WriteXdr for ClaimAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CreateAccountResultCode { Success = 0, @@ -30645,9 +32026,13 @@ impl WriteXdr for CreateAccountResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum CreateAccountResult { Success, @@ -30788,9 +32173,13 @@ impl WriteXdr for CreateAccountResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PaymentResultCode { Success = 0, @@ -30949,9 +32338,13 @@ impl WriteXdr for PaymentResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PaymentResult { Success, @@ -31139,9 +32532,13 @@ impl WriteXdr for PaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PathPaymentStrictReceiveResultCode { Success = 0, @@ -31305,9 +32702,13 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SimplePaymentResult { pub destination: AccountId, pub asset: Asset, @@ -31353,9 +32754,13 @@ impl WriteXdr for SimplePaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictReceiveResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -31419,9 +32824,13 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictReceiveResult { Success(PathPaymentStrictReceiveResultSuccess), @@ -31632,9 +33041,13 @@ impl WriteXdr for PathPaymentStrictReceiveResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PathPaymentStrictSendResultCode { Success = 0, @@ -31797,9 +33210,13 @@ impl WriteXdr for PathPaymentStrictSendResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictSendResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -31862,9 +33279,13 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictSendResult { Success(PathPaymentStrictSendResultSuccess), @@ -32074,9 +33495,13 @@ impl WriteXdr for PathPaymentStrictSendResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageSellOfferResultCode { Success = 0, @@ -32241,9 +33666,13 @@ impl WriteXdr for ManageSellOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageOfferEffect { Created = 0, @@ -32356,9 +33785,13 @@ impl WriteXdr for ManageOfferEffect { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageOfferSuccessResultOffer { Created(OfferEntry), @@ -32479,9 +33912,13 @@ impl WriteXdr for ManageOfferSuccessResultOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageOfferSuccessResult { pub offers_claimed: VecM, pub offer: ManageOfferSuccessResultOffer, @@ -32538,9 +33975,13 @@ impl WriteXdr for ManageOfferSuccessResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageSellOfferResult { Success(ManageOfferSuccessResult), @@ -32747,9 +34188,13 @@ impl WriteXdr for ManageSellOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageBuyOfferResultCode { Success = 0, @@ -32926,9 +34371,13 @@ impl WriteXdr for ManageBuyOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageBuyOfferResult { Success(ManageOfferSuccessResult), @@ -33128,9 +34577,13 @@ impl WriteXdr for ManageBuyOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SetOptionsResultCode { Success = 0, @@ -33295,9 +34748,13 @@ impl WriteXdr for SetOptionsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SetOptionsResult { Success, @@ -33482,9 +34939,13 @@ impl WriteXdr for SetOptionsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ChangeTrustResultCode { Success = 0, @@ -33637,9 +35098,13 @@ impl WriteXdr for ChangeTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustResult { Success, @@ -33808,9 +35273,13 @@ impl WriteXdr for ChangeTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AllowTrustResultCode { Success = 0, @@ -33951,9 +35420,13 @@ impl WriteXdr for AllowTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AllowTrustResult { Success, @@ -34106,9 +35579,13 @@ impl WriteXdr for AllowTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AccountMergeResultCode { Success = 0, @@ -34255,9 +35732,13 @@ impl WriteXdr for AccountMergeResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountMergeResult { Success(i64), @@ -34410,9 +35891,13 @@ impl WriteXdr for AccountMergeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum InflationResultCode { Success = 0, @@ -34515,9 +36000,13 @@ impl WriteXdr for InflationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InflationPayout { pub destination: AccountId, pub amount: i64, @@ -34563,9 +36052,13 @@ impl WriteXdr for InflationPayout { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InflationResult { Success(VecM), @@ -34678,9 +36171,13 @@ impl WriteXdr for InflationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageDataResultCode { Success = 0, @@ -34809,9 +36306,13 @@ impl WriteXdr for ManageDataResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageDataResult { Success, @@ -34943,9 +36444,13 @@ impl WriteXdr for ManageDataResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BumpSequenceResultCode { Success = 0, @@ -35053,9 +36558,13 @@ impl WriteXdr for BumpSequenceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BumpSequenceResult { Success, @@ -35165,9 +36674,13 @@ impl WriteXdr for BumpSequenceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CreateClaimableBalanceResultCode { Success = 0, @@ -35303,9 +36816,13 @@ impl WriteXdr for CreateClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum CreateClaimableBalanceResult { Success(ClaimableBalanceId), @@ -35449,9 +36966,13 @@ impl WriteXdr for CreateClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimClaimableBalanceResultCode { Success = 0, @@ -35586,9 +37107,13 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimClaimableBalanceResult { Success, @@ -35731,9 +37256,13 @@ impl WriteXdr for ClaimClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BeginSponsoringFutureReservesResultCode { Success = 0, @@ -35853,9 +37382,13 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BeginSponsoringFutureReservesResult { Success, @@ -35978,9 +37511,13 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum EndSponsoringFutureReservesResultCode { Success = 0, @@ -36089,9 +37626,13 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum EndSponsoringFutureReservesResult { Success, @@ -36205,9 +37746,13 @@ impl WriteXdr for EndSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RevokeSponsorshipResultCode { Success = 0, @@ -36342,9 +37887,13 @@ impl WriteXdr for RevokeSponsorshipResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipResult { Success, @@ -36488,9 +38037,13 @@ impl WriteXdr for RevokeSponsorshipResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClawbackResultCode { Success = 0, @@ -36619,9 +38172,13 @@ impl WriteXdr for ClawbackResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClawbackResult { Success, @@ -36756,9 +38313,13 @@ impl WriteXdr for ClawbackResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClawbackClaimableBalanceResultCode { Success = 0, @@ -36878,9 +38439,13 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClawbackClaimableBalanceResult { Success, @@ -37008,9 +38573,13 @@ impl WriteXdr for ClawbackClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SetTrustLineFlagsResultCode { Success = 0, @@ -37145,9 +38714,13 @@ impl WriteXdr for SetTrustLineFlagsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SetTrustLineFlagsResult { Success, @@ -37298,9 +38871,13 @@ impl WriteXdr for SetTrustLineFlagsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolDepositResultCode { Success = 0, @@ -37447,9 +39024,13 @@ impl WriteXdr for LiquidityPoolDepositResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolDepositResult { Success, @@ -37611,9 +39192,13 @@ impl WriteXdr for LiquidityPoolDepositResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolWithdrawResultCode { Success = 0, @@ -37748,9 +39333,13 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolWithdrawResult { Success, @@ -37895,9 +39484,13 @@ impl WriteXdr for LiquidityPoolWithdrawResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum InvokeHostFunctionResultCode { Success = 0, @@ -38032,9 +39625,13 @@ impl WriteXdr for InvokeHostFunctionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InvokeHostFunctionResult { Success(Hash), @@ -38181,9 +39778,13 @@ impl WriteXdr for InvokeHostFunctionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ExtendFootprintTtlResultCode { Success = 0, @@ -38306,9 +39907,13 @@ impl WriteXdr for ExtendFootprintTtlResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ExtendFootprintTtlResult { Success, @@ -38441,9 +40046,13 @@ impl WriteXdr for ExtendFootprintTtlResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RestoreFootprintResultCode { Success = 0, @@ -38566,9 +40175,13 @@ impl WriteXdr for RestoreFootprintResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RestoreFootprintResult { Success, @@ -38702,9 +40315,13 @@ impl WriteXdr for RestoreFootprintResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OperationResultCode { OpInner = 0, @@ -38890,9 +40507,13 @@ impl WriteXdr for OperationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationResultTr { CreateAccount(CreateAccountResult), @@ -39278,9 +40899,13 @@ impl WriteXdr for OperationResultTr { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationResult { OpInner(OperationResultTr), @@ -39445,9 +41070,13 @@ impl WriteXdr for OperationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TransactionResultCode { TxFeeBumpInnerSuccess = 1, @@ -39660,9 +41289,13 @@ impl WriteXdr for TransactionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultResult { TxSuccess(VecM), @@ -39880,9 +41513,13 @@ impl WriteXdr for InnerTransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultExt { V0, @@ -40013,9 +41650,13 @@ impl WriteXdr for InnerTransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InnerTransactionResult { pub fee_charged: i64, pub result: InnerTransactionResultResult, @@ -40061,9 +41702,13 @@ impl WriteXdr for InnerTransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InnerTransactionResultPair { pub transaction_hash: Hash, pub result: InnerTransactionResult, @@ -40128,9 +41773,13 @@ impl WriteXdr for InnerTransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionResultResult { TxFeeBumpInnerSuccess(InnerTransactionResultPair), @@ -40366,9 +42015,13 @@ impl WriteXdr for TransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionResultExt { V0, @@ -40500,9 +42153,13 @@ impl WriteXdr for TransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResult { pub fee_charged: i64, pub result: TransactionResultResult, @@ -40544,11 +42201,11 @@ impl WriteXdr for TransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Hash(pub [u8; 32]); @@ -40666,11 +42323,11 @@ impl AsRef<[u8]> for Hash { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Uint256(pub [u8; 32]); @@ -40820,9 +42477,13 @@ pub type Int64 = i64; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TimePoint(pub u64); @@ -40875,9 +42536,13 @@ impl WriteXdr for TimePoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Duration(pub u64); @@ -40935,9 +42600,13 @@ impl WriteXdr for Duration { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ExtensionPoint { V0, @@ -41040,9 +42709,13 @@ impl WriteXdr for ExtensionPoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CryptoKeyType { Ed25519 = 0, @@ -41165,9 +42838,13 @@ impl WriteXdr for CryptoKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PublicKeyType { PublicKeyTypeEd25519 = 0, @@ -41269,9 +42946,13 @@ impl WriteXdr for PublicKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SignerKeyType { Ed25519 = 0, @@ -41386,11 +43067,11 @@ impl WriteXdr for SignerKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum PublicKey { @@ -41492,11 +43173,11 @@ impl WriteXdr for PublicKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, @@ -41555,11 +43236,11 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum SignerKey { @@ -41677,9 +43358,13 @@ impl WriteXdr for SignerKey { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Signature(pub BytesM<64>); @@ -41781,11 +43466,11 @@ impl AsRef<[u8]> for Signature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct SignatureHint(pub [u8; 4]); @@ -41903,11 +43588,11 @@ impl AsRef<[u8]> for SignatureHint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -41961,11 +43646,11 @@ impl WriteXdr for NodeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -42022,9 +43707,13 @@ impl WriteXdr for AccountId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Curve25519Secret { pub key: [u8; 32], } @@ -42063,9 +43752,13 @@ impl WriteXdr for Curve25519Secret { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Curve25519Public { pub key: [u8; 32], } @@ -42104,9 +43797,13 @@ impl WriteXdr for Curve25519Public { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HmacSha256Key { pub key: [u8; 32], } @@ -42145,9 +43842,13 @@ impl WriteXdr for HmacSha256Key { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HmacSha256Mac { pub mac: [u8; 32], } @@ -42176,9 +43877,13 @@ impl WriteXdr for HmacSha256Mac { #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub enum TypeVariant { Value, ScpBallot, @@ -44338,10 +46043,14 @@ impl core::str::FromStr for TypeVariant { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case"), serde(untagged) )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub enum Type { Value(Box), ScpBallot(Box), diff --git a/src/next/generated.rs b/src/next/generated.rs index 7209a83c..647a234e 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -931,10 +931,7 @@ impl WriteXdr for [T; N] { #[cfg(feature = "alloc")] #[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] -#[cfg_attr( - feature = "serde", - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema) -)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct VecM(Vec); @@ -959,6 +956,26 @@ impl Default for VecM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for VecM { + fn schema_name() -> String { + format!("VecM<{}, {}>", T::schema_name(), MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + mut_array(Vec::::json_schema(gen), |array| { + schemars::schema::ArrayValidation { + max_items: Some(MAX), + ..array + } + }) + } +} + impl VecM { pub const MAX_LEN: usize = { MAX as usize }; @@ -1340,11 +1357,7 @@ impl WriteXdr for VecM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct BytesM(Vec); @@ -1398,6 +1411,38 @@ impl Deref for BytesM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for BytesM { + fn schema_name() -> String { + format!("BytesM<{}>", MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + min_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + ..string + }) + } else { + schema_ + } + } +} + impl Default for BytesM { fn default() -> Self { Self(Vec::default()) @@ -1725,11 +1770,7 @@ impl WriteXdr for BytesM { #[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( feature = "serde", - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] pub struct StringM(Vec); @@ -1790,6 +1831,26 @@ impl Default for StringM { } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for StringM { + fn schema_name() -> String { + format!("StringM<{}>", MAX) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + mut_string(String::json_schema(gen), |string| { + schemars::schema::StringValidation { + max_length: Some(MAX), + ..string + } + }) + } +} + impl StringM { pub const MAX_LEN: usize = { MAX as usize }; @@ -2099,13 +2160,28 @@ impl WriteXdr for StringM { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] pub struct Frame(pub T) where T: ReadXdr; +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +impl schemars::JsonSchema for Frame { + fn schema_name() -> String { + format!("Frame<{}>", T::schema_name()) + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + T::json_schema(gen) + } +} + impl ReadXdr for Frame where T: ReadXdr, @@ -2130,6 +2206,35 @@ where } } +fn mut_array( + schema: schemars::schema::Schema, + f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, +) -> schemars::schema::Schema { + if let schemars::schema::Schema::Object(mut schema) = schema { + if let Some(array) = schema.array.clone() { + schema.array = Some(Box::new(f(*array))); + } + schema.into() + } else { + schema + } +} + +fn mut_string( + schema: schemars::schema::Schema, + f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, +) -> schemars::schema::Schema { + if let schemars::schema::Schema::Object(mut schema) = schema { + let string = *schema.string.unwrap_or_default().clone(); + let s = f(string); + schema.string = Some(Box::new(s)); + + schema.into() + } else { + schema + } +} + #[cfg(all(test, feature = "std"))] mod tests { use std::io::Cursor; @@ -2766,9 +2871,13 @@ mod test { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Value(pub BytesM); @@ -2874,9 +2983,13 @@ impl AsRef<[u8]> for Value { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpBallot { pub counter: u32, pub value: Value, @@ -2922,9 +3035,13 @@ impl WriteXdr for ScpBallot { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScpStatementType { Prepare = 0, @@ -3038,9 +3155,13 @@ impl WriteXdr for ScpStatementType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpNomination { pub quorum_set_hash: Hash, pub votes: VecM, @@ -3090,9 +3211,13 @@ impl WriteXdr for ScpNomination { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementPrepare { pub quorum_set_hash: Hash, pub ballot: ScpBallot, @@ -3150,9 +3275,13 @@ impl WriteXdr for ScpStatementPrepare { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementConfirm { pub ballot: ScpBallot, pub n_prepared: u32, @@ -3205,9 +3334,13 @@ impl WriteXdr for ScpStatementConfirm { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatementExternalize { pub commit: ScpBallot, pub n_h: u32, @@ -3280,9 +3413,13 @@ impl WriteXdr for ScpStatementExternalize { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScpStatementPledges { Prepare(ScpStatementPrepare), @@ -3434,9 +3571,13 @@ impl WriteXdr for ScpStatementPledges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpStatement { pub node_id: NodeId, pub slot_index: u64, @@ -3482,9 +3623,13 @@ impl WriteXdr for ScpStatement { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpEnvelope { pub statement: ScpStatement, pub signature: Signature, @@ -3528,9 +3673,13 @@ impl WriteXdr for ScpEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpQuorumSet { pub threshold: u32, pub validators: VecM, @@ -3576,9 +3725,13 @@ impl WriteXdr for ScpQuorumSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractExecutionLanesV0 { pub ledger_max_tx_count: u32, } @@ -3626,9 +3779,13 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractComputeV0 { pub ledger_max_instructions: i64, pub tx_max_instructions: i64, @@ -3707,9 +3864,13 @@ impl WriteXdr for ConfigSettingContractComputeV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractLedgerCostV0 { pub ledger_max_read_ledger_entries: u32, pub ledger_max_read_bytes: u32, @@ -3790,9 +3951,13 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractHistoricalDataV0 { pub fee_historical1_kb: i64, } @@ -3834,9 +3999,13 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractEventsV0 { pub tx_max_contract_events_size_bytes: u32, pub fee_contract_events1_kb: i64, @@ -3884,9 +4053,13 @@ impl WriteXdr for ConfigSettingContractEventsV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigSettingContractBandwidthV0 { pub ledger_max_txs_size_bytes: u32, pub tx_max_size_bytes: u32, @@ -3980,9 +4153,13 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractCostType { WasmInsnExec = 0, @@ -4197,9 +4374,13 @@ impl WriteXdr for ContractCostType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractCostParamEntry { pub ext: ExtensionPoint, pub const_term: i64, @@ -4264,9 +4445,13 @@ impl WriteXdr for ContractCostParamEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StateArchivalSettings { pub max_entry_ttl: u32, pub min_temporary_ttl: u32, @@ -4333,9 +4518,13 @@ impl WriteXdr for StateArchivalSettings { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct EvictionIterator { pub bucket_list_level: u32, pub is_curr_bucket: bool, @@ -4386,9 +4575,13 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ContractCostParams(pub VecM); @@ -4507,9 +4700,13 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ConfigSettingId { ContractMaxSizeBytes = 0, @@ -4704,9 +4901,13 @@ impl WriteXdr for ConfigSettingId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ConfigSettingEntry { ContractMaxSizeBytes(u32), @@ -4930,9 +5131,13 @@ impl WriteXdr for ConfigSettingEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScEnvMetaKind { ScEnvMetaKindInterfaceVersion = 0, @@ -5032,9 +5237,13 @@ impl WriteXdr for ScEnvMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScEnvMetaEntry { ScEnvMetaKindInterfaceVersion(u64), @@ -5133,9 +5342,13 @@ impl WriteXdr for ScEnvMetaEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScMetaV0 { pub key: StringM, pub val: StringM, @@ -5178,9 +5391,13 @@ impl WriteXdr for ScMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScMetaKind { ScMetaV0 = 0, @@ -5280,9 +5497,13 @@ impl WriteXdr for ScMetaKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScMetaEntry { ScMetaV0(ScMetaV0), @@ -5417,9 +5638,13 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecType { Val = 0, @@ -5641,9 +5866,13 @@ impl WriteXdr for ScSpecType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeOption { pub value_type: Box, } @@ -5683,9 +5912,13 @@ impl WriteXdr for ScSpecTypeOption { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeResult { pub ok_type: Box, pub error_type: Box, @@ -5727,9 +5960,13 @@ impl WriteXdr for ScSpecTypeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeVec { pub element_type: Box, } @@ -5769,9 +6006,13 @@ impl WriteXdr for ScSpecTypeVec { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeMap { pub key_type: Box, pub value_type: Box, @@ -5813,9 +6054,13 @@ impl WriteXdr for ScSpecTypeMap { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeTuple { pub value_types: VecM, } @@ -5854,9 +6099,13 @@ impl WriteXdr for ScSpecTypeTuple { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeBytesN { pub n: u32, } @@ -5895,9 +6144,13 @@ impl WriteXdr for ScSpecTypeBytesN { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecTypeUdt { pub name: StringM<60>, } @@ -5969,9 +6222,13 @@ impl WriteXdr for ScSpecTypeUdt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecTypeDef { Val, @@ -6241,9 +6498,13 @@ impl WriteXdr for ScSpecTypeDef { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtStructFieldV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6291,9 +6552,13 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtStructV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6342,9 +6607,13 @@ impl WriteXdr for ScSpecUdtStructV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionCaseVoidV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6388,9 +6657,13 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionCaseTupleV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6437,9 +6710,13 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecUdtUnionCaseV0Kind { VoidV0 = 0, @@ -6547,9 +6824,13 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecUdtUnionCaseV0 { VoidV0(ScSpecUdtUnionCaseVoidV0), @@ -6660,9 +6941,13 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtUnionV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6712,9 +6997,13 @@ impl WriteXdr for ScSpecUdtUnionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6762,9 +7051,13 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6814,9 +7107,13 @@ impl WriteXdr for ScSpecUdtEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtErrorEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6864,9 +7161,13 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecUdtErrorEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6916,9 +7217,13 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecFunctionInputV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6966,9 +7271,13 @@ impl WriteXdr for ScSpecFunctionInputV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScSpecFunctionV0 { pub doc: StringM<1024>, pub name: ScSymbol, @@ -7021,9 +7330,13 @@ impl WriteXdr for ScSpecFunctionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScSpecEntryKind { FunctionV0 = 0, @@ -7155,9 +7468,13 @@ impl WriteXdr for ScSpecEntryKind { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScSpecEntry { FunctionV0(ScSpecFunctionV0), @@ -7338,9 +7655,13 @@ impl WriteXdr for ScSpecEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScValType { Bool = 0, @@ -7557,9 +7878,13 @@ impl WriteXdr for ScValType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScErrorType { Contract = 0, @@ -7708,9 +8033,13 @@ impl WriteXdr for ScErrorType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScErrorCode { ArithDomain = 0, @@ -7869,9 +8198,13 @@ impl WriteXdr for ScErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScError { Contract(u32), @@ -8026,9 +8359,13 @@ impl WriteXdr for ScError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UInt128Parts { pub hi: u64, pub lo: u64, @@ -8070,9 +8407,13 @@ impl WriteXdr for UInt128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Int128Parts { pub hi: i64, pub lo: u64, @@ -8116,9 +8457,13 @@ impl WriteXdr for Int128Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UInt256Parts { pub hi_hi: u64, pub hi_lo: u64, @@ -8168,9 +8513,13 @@ impl WriteXdr for UInt256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Int256Parts { pub hi_hi: i64, pub hi_lo: u64, @@ -8220,9 +8569,13 @@ impl WriteXdr for Int256Parts { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractExecutableType { Wasm = 0, @@ -8330,9 +8683,13 @@ impl WriteXdr for ContractExecutableType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractExecutable { Wasm(Hash), @@ -8438,9 +8795,13 @@ impl WriteXdr for ContractExecutable { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ScAddressType { Account = 0, @@ -8545,11 +8906,11 @@ impl WriteXdr for ScAddressType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum ScAddress { @@ -8657,9 +9018,13 @@ pub const SCSYMBOL_LIMIT: u64 = 32; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScVec(pub VecM); @@ -8762,9 +9127,13 @@ impl AsRef<[ScVal]> for ScVec { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScMap(pub VecM); @@ -8867,9 +9236,13 @@ impl AsRef<[ScMapEntry]> for ScMap { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScBytes(pub BytesM); @@ -8972,9 +9345,13 @@ impl AsRef<[u8]> for ScBytes { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScString(pub StringM); @@ -9077,9 +9454,13 @@ impl AsRef<[u8]> for ScString { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct ScSymbol(pub StringM<32>); @@ -9183,9 +9564,13 @@ impl AsRef<[u8]> for ScSymbol { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScNonceKey { pub nonce: i64, } @@ -9224,9 +9609,13 @@ impl WriteXdr for ScNonceKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScContractInstance { pub executable: ContractExecutable, pub storage: Option, @@ -9326,9 +9715,13 @@ impl WriteXdr for ScContractInstance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScVal { Bool(bool), @@ -9578,9 +9971,13 @@ impl WriteXdr for ScVal { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScMapEntry { pub key: ScVal, pub val: ScVal, @@ -9626,9 +10023,13 @@ impl WriteXdr for ScMapEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StoredTransactionSet { V0(TransactionSet), @@ -9731,9 +10132,13 @@ impl WriteXdr for StoredTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StoredDebugTransactionSet { pub tx_set: StoredTransactionSet, pub ledger_seq: u32, @@ -9780,9 +10185,13 @@ impl WriteXdr for StoredDebugTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PersistedScpStateV0 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -9829,9 +10238,13 @@ impl WriteXdr for PersistedScpStateV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PersistedScpStateV1 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -9877,9 +10290,13 @@ impl WriteXdr for PersistedScpStateV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PersistedScpState { V0(PersistedScpStateV0), @@ -9977,11 +10394,11 @@ impl WriteXdr for PersistedScpState { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Thresholds(pub [u8; 4]); @@ -10100,9 +10517,13 @@ impl AsRef<[u8]> for Thresholds { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct String32(pub StringM<32>); @@ -10205,9 +10626,13 @@ impl AsRef<[u8]> for String32 { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct String64(pub StringM<64>); @@ -10309,9 +10734,13 @@ impl AsRef<[u8]> for String64 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct SequenceNumber(pub i64); @@ -10365,9 +10794,13 @@ impl WriteXdr for SequenceNumber { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct DataValue(pub BytesM<64>); @@ -10469,9 +10902,13 @@ impl AsRef<[u8]> for DataValue { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct PoolId(pub Hash); @@ -10524,11 +10961,11 @@ impl WriteXdr for PoolId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct AssetCode4(pub [u8; 4]); @@ -10629,11 +11066,11 @@ impl AsRef<[u8]> for AssetCode4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct AssetCode12(pub [u8; 12]); @@ -10741,9 +11178,13 @@ impl AsRef<[u8]> for AssetCode12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AssetType { Native = 0, @@ -10863,11 +11304,11 @@ impl WriteXdr for AssetType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum AssetCode { @@ -10970,9 +11411,13 @@ impl WriteXdr for AssetCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AlphaNum4 { pub asset_code: AssetCode4, pub issuer: AccountId, @@ -11015,9 +11460,13 @@ impl WriteXdr for AlphaNum4 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AlphaNum12 { pub asset_code: AssetCode12, pub issuer: AccountId, @@ -11069,9 +11518,13 @@ impl WriteXdr for AlphaNum12 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Asset { Native, @@ -11182,9 +11635,13 @@ impl WriteXdr for Asset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Price { pub n: i32, pub d: i32, @@ -11227,9 +11684,13 @@ impl WriteXdr for Price { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Liabilities { pub buying: i64, pub selling: i64, @@ -11275,9 +11736,13 @@ impl WriteXdr for Liabilities { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ThresholdIndexes { MasterWeight = 0, @@ -11399,9 +11864,13 @@ impl WriteXdr for ThresholdIndexes { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerEntryType { Account = 0, @@ -11549,9 +12018,13 @@ impl WriteXdr for LedgerEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Signer { pub key: SignerKey, pub weight: u32, @@ -11607,9 +12080,13 @@ impl WriteXdr for Signer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AccountFlags { RequiredFlag = 1, @@ -11747,9 +12224,13 @@ pub const MAX_SIGNERS: u64 = 20; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct SponsorshipDescriptor(pub Option); @@ -11813,9 +12294,13 @@ impl WriteXdr for SponsorshipDescriptor { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV3 { pub ext: ExtensionPoint, pub seq_ledger: u32, @@ -11864,9 +12349,13 @@ impl WriteXdr for AccountEntryExtensionV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV2Ext { V0, @@ -11978,9 +12467,13 @@ impl WriteXdr for AccountEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV2 { pub num_sponsored: u32, pub num_sponsoring: u32, @@ -12032,9 +12525,13 @@ impl WriteXdr for AccountEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV1Ext { V0, @@ -12144,9 +12641,13 @@ impl WriteXdr for AccountEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntryExtensionV1 { pub liabilities: Liabilities, pub ext: AccountEntryExtensionV1Ext, @@ -12192,9 +12693,13 @@ impl WriteXdr for AccountEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExt { V0, @@ -12319,9 +12824,13 @@ impl WriteXdr for AccountEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AccountEntry { pub account_id: AccountId, pub balance: i64, @@ -12395,9 +12904,13 @@ impl WriteXdr for AccountEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TrustLineFlags { AuthorizedFlag = 1, @@ -12534,9 +13047,13 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolType { LiquidityPoolConstantProduct = 0, @@ -12647,9 +13164,13 @@ impl WriteXdr for LiquidityPoolType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineAsset { Native, @@ -12768,9 +13289,13 @@ impl WriteXdr for TrustLineAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExtensionV2Ext { V0, @@ -12873,9 +13398,13 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntryExtensionV2 { pub liquidity_pool_use_count: i32, pub ext: TrustLineEntryExtensionV2Ext, @@ -12921,9 +13450,13 @@ impl WriteXdr for TrustLineEntryExtensionV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryV1Ext { V0, @@ -13033,9 +13566,13 @@ impl WriteXdr for TrustLineEntryV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntryV1 { pub liabilities: Liabilities, pub ext: TrustLineEntryV1Ext, @@ -13093,9 +13630,13 @@ impl WriteXdr for TrustLineEntryV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExt { V0, @@ -13224,9 +13765,13 @@ impl WriteXdr for TrustLineEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TrustLineEntry { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -13283,9 +13828,13 @@ impl WriteXdr for TrustLineEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OfferEntryFlags { PassiveFlag = 1, @@ -13393,9 +13942,13 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OfferEntryExt { V0, @@ -13511,9 +14064,13 @@ impl WriteXdr for OfferEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct OfferEntry { pub seller_id: AccountId, pub offer_id: i64, @@ -13575,9 +14132,13 @@ impl WriteXdr for OfferEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum DataEntryExt { V0, @@ -13683,9 +14244,13 @@ impl WriteXdr for DataEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DataEntry { pub account_id: AccountId, pub data_name: String64, @@ -13739,9 +14304,13 @@ impl WriteXdr for DataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimPredicateType { Unconditional = 0, @@ -13881,9 +14450,13 @@ impl WriteXdr for ClaimPredicateType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimPredicate { Unconditional, @@ -14023,9 +14596,13 @@ impl WriteXdr for ClaimPredicate { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimantType { ClaimantTypeV0 = 0, @@ -14124,9 +14701,13 @@ impl WriteXdr for ClaimantType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimantV0 { pub destination: AccountId, pub predicate: ClaimPredicate, @@ -14174,9 +14755,13 @@ impl WriteXdr for ClaimantV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Claimant { ClaimantTypeV0(ClaimantV0), @@ -14273,9 +14858,13 @@ impl WriteXdr for Claimant { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimableBalanceIdType { ClaimableBalanceIdTypeV0 = 0, @@ -14376,9 +14965,13 @@ impl WriteXdr for ClaimableBalanceIdType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceId { ClaimableBalanceIdTypeV0(Hash), @@ -14480,9 +15073,13 @@ impl WriteXdr for ClaimableBalanceId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimableBalanceFlags { ClaimableBalanceClawbackEnabledFlag = 1, @@ -14591,9 +15188,13 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExtensionV1Ext { V0, @@ -14696,9 +15297,13 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimableBalanceEntryExtensionV1 { pub ext: ClaimableBalanceEntryExtensionV1Ext, pub flags: u32, @@ -14744,9 +15349,13 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExt { V0, @@ -14867,9 +15476,13 @@ impl WriteXdr for ClaimableBalanceEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimableBalanceEntry { pub balance_id: ClaimableBalanceId, pub claimants: VecM, @@ -14922,9 +15535,13 @@ impl WriteXdr for ClaimableBalanceEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolConstantProductParameters { pub asset_a: Asset, pub asset_b: Asset, @@ -14975,9 +15592,13 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolEntryConstantProduct { pub params: LiquidityPoolConstantProductParameters, pub reserve_a: i64, @@ -15039,9 +15660,13 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolEntryBody { LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct), @@ -15159,9 +15784,13 @@ impl WriteXdr for LiquidityPoolEntryBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolEntry { pub liquidity_pool_id: PoolId, pub body: LiquidityPoolEntryBody, @@ -15204,9 +15833,13 @@ impl WriteXdr for LiquidityPoolEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractDataDurability { Temporary = 0, @@ -15314,9 +15947,13 @@ impl WriteXdr for ContractDataDurability { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractDataEntry { pub ext: ExtensionPoint, pub contract: ScAddress, @@ -15369,9 +16006,13 @@ impl WriteXdr for ContractDataEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractCodeEntry { pub ext: ExtensionPoint, pub hash: Hash, @@ -15417,9 +16058,13 @@ impl WriteXdr for ContractCodeEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TtlEntry { pub key_hash: Hash, pub live_until_ledger_seq: u32, @@ -15463,9 +16108,13 @@ impl WriteXdr for TtlEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExtensionV1Ext { V0, @@ -15568,9 +16217,13 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerEntryExtensionV1 { pub sponsoring_id: SponsorshipDescriptor, pub ext: LedgerEntryExtensionV1Ext, @@ -15632,9 +16285,13 @@ impl WriteXdr for LedgerEntryExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryData { Account(AccountEntry), @@ -15811,9 +16468,13 @@ impl WriteXdr for LedgerEntryData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExt { V0, @@ -15949,9 +16610,13 @@ impl WriteXdr for LedgerEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerEntry { pub last_modified_ledger_seq: u32, pub data: LedgerEntryData, @@ -15996,9 +16661,13 @@ impl WriteXdr for LedgerEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyAccount { pub account_id: AccountId, } @@ -16038,9 +16707,13 @@ impl WriteXdr for LedgerKeyAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyTrustLine { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -16083,9 +16756,13 @@ impl WriteXdr for LedgerKeyTrustLine { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyOffer { pub seller_id: AccountId, pub offer_id: i64, @@ -16128,9 +16805,13 @@ impl WriteXdr for LedgerKeyOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyData { pub account_id: AccountId, pub data_name: String64, @@ -16172,9 +16853,13 @@ impl WriteXdr for LedgerKeyData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyClaimableBalance { pub balance_id: ClaimableBalanceId, } @@ -16213,9 +16898,13 @@ impl WriteXdr for LedgerKeyClaimableBalance { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyLiquidityPool { pub liquidity_pool_id: PoolId, } @@ -16256,9 +16945,13 @@ impl WriteXdr for LedgerKeyLiquidityPool { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyContractData { pub contract: ScAddress, pub key: ScVal, @@ -16303,9 +16996,13 @@ impl WriteXdr for LedgerKeyContractData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyContractCode { pub hash: Hash, } @@ -16344,9 +17041,13 @@ impl WriteXdr for LedgerKeyContractCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyConfigSetting { pub config_setting_id: ConfigSettingId, } @@ -16386,9 +17087,13 @@ impl WriteXdr for LedgerKeyConfigSetting { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerKeyTtl { pub key_hash: Hash, } @@ -16488,9 +17193,13 @@ impl WriteXdr for LedgerKeyTtl { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerKey { Account(LedgerKeyAccount), @@ -16673,9 +17382,13 @@ impl WriteXdr for LedgerKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum EnvelopeType { TxV0 = 0, @@ -16820,9 +17533,13 @@ impl WriteXdr for EnvelopeType { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct UpgradeType(pub BytesM<128>); @@ -16929,9 +17646,13 @@ impl AsRef<[u8]> for UpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum StellarValueType { Basic = 0, @@ -17033,9 +17754,13 @@ impl WriteXdr for StellarValueType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseValueSignature { pub node_id: NodeId, pub signature: Signature, @@ -17081,9 +17806,13 @@ impl WriteXdr for LedgerCloseValueSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StellarValueExt { Basic, @@ -17202,9 +17931,13 @@ impl WriteXdr for StellarValueExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct StellarValue { pub tx_set_hash: Hash, pub close_time: TimePoint, @@ -17263,9 +17996,13 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerHeaderFlags { TradingFlag = 1, @@ -17375,9 +18112,13 @@ impl WriteXdr for LedgerHeaderFlags { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExtensionV1Ext { V0, @@ -17480,9 +18221,13 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeaderExtensionV1 { pub flags: u32, pub ext: LedgerHeaderExtensionV1Ext, @@ -17528,9 +18273,13 @@ impl WriteXdr for LedgerHeaderExtensionV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExt { V0, @@ -17666,9 +18415,13 @@ impl WriteXdr for LedgerHeaderExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeader { pub ledger_version: u32, pub previous_ledger_hash: Hash, @@ -17756,9 +18509,13 @@ impl WriteXdr for LedgerHeader { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerUpgradeType { Version = 1, @@ -17890,9 +18647,13 @@ impl WriteXdr for LedgerUpgradeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigUpgradeSetKey { pub contract_id: Hash, pub content_hash: Hash, @@ -17951,9 +18712,13 @@ impl WriteXdr for ConfigUpgradeSetKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerUpgrade { Version(u32), @@ -18096,9 +18861,13 @@ impl WriteXdr for LedgerUpgrade { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ConfigUpgradeSet { pub updated_entry: VecM, } @@ -18143,9 +18912,13 @@ impl WriteXdr for ConfigUpgradeSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BucketEntryType { Metaentry = -1, @@ -18260,9 +19033,13 @@ impl WriteXdr for BucketEntryType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BucketMetadataExt { V0, @@ -18367,9 +19144,13 @@ impl WriteXdr for BucketMetadataExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BucketMetadata { pub ledger_version: u32, pub ext: BucketMetadataExt, @@ -18419,9 +19200,13 @@ impl WriteXdr for BucketMetadata { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BucketEntry { Liveentry(LedgerEntry), @@ -18541,9 +19326,13 @@ impl WriteXdr for BucketEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TxSetComponentType { TxsetCompTxsMaybeDiscountedFee = 0, @@ -18643,9 +19432,13 @@ impl WriteXdr for TxSetComponentType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TxSetComponentTxsMaybeDiscountedFee { pub base_fee: Option, pub txs: VecM, @@ -18693,9 +19486,13 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TxSetComponent { TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee), @@ -18800,9 +19597,13 @@ impl WriteXdr for TxSetComponent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionPhase { V0(VecM), @@ -18899,9 +19700,13 @@ impl WriteXdr for TransactionPhase { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSet { pub previous_ledger_hash: Hash, pub txs: VecM, @@ -18944,9 +19749,13 @@ impl WriteXdr for TransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSetV1 { pub previous_ledger_hash: Hash, pub phases: VecM, @@ -18991,9 +19800,13 @@ impl WriteXdr for TransactionSetV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum GeneralizedTransactionSet { V1(TransactionSetV1), @@ -19090,9 +19903,13 @@ impl WriteXdr for GeneralizedTransactionSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultPair { pub transaction_hash: Hash, pub result: TransactionResult, @@ -19134,9 +19951,13 @@ impl WriteXdr for TransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultSet { pub results: VecM, } @@ -19179,9 +20000,13 @@ impl WriteXdr for TransactionResultSet { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryEntryExt { V0, @@ -19293,9 +20118,13 @@ impl WriteXdr for TransactionHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionHistoryEntry { pub ledger_seq: u32, pub tx_set: TransactionSet, @@ -19342,9 +20171,13 @@ impl WriteXdr for TransactionHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryResultEntryExt { V0, @@ -19449,9 +20282,13 @@ impl WriteXdr for TransactionHistoryResultEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionHistoryResultEntry { pub ledger_seq: u32, pub tx_result_set: TransactionResultSet, @@ -19498,9 +20335,13 @@ impl WriteXdr for TransactionHistoryResultEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderHistoryEntryExt { V0, @@ -19605,9 +20446,13 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerHeaderHistoryEntry { pub hash: Hash, pub header: LedgerHeader, @@ -19653,9 +20498,13 @@ impl WriteXdr for LedgerHeaderHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerScpMessages { pub ledger_seq: u32, pub messages: VecM, @@ -19698,9 +20547,13 @@ impl WriteXdr for LedgerScpMessages { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ScpHistoryEntryV0 { pub quorum_sets: VecM, pub ledger_messages: LedgerScpMessages, @@ -19744,9 +20597,13 @@ impl WriteXdr for ScpHistoryEntryV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ScpHistoryEntry { V0(ScpHistoryEntryV0), @@ -19846,9 +20703,13 @@ impl WriteXdr for ScpHistoryEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LedgerEntryChangeType { Created = 0, @@ -19968,9 +20829,13 @@ impl WriteXdr for LedgerEntryChangeType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryChange { Created(LedgerEntry), @@ -20084,9 +20949,13 @@ impl WriteXdr for LedgerEntryChange { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct LedgerEntryChanges(pub VecM); @@ -20191,9 +21060,13 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct OperationMeta { pub changes: LedgerEntryChanges, } @@ -20233,9 +21106,13 @@ impl WriteXdr for OperationMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV1 { pub tx_changes: LedgerEntryChanges, pub operations: VecM, @@ -20281,9 +21158,13 @@ impl WriteXdr for TransactionMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV2 { pub tx_changes_before: LedgerEntryChanges, pub operations: VecM, @@ -20331,9 +21212,13 @@ impl WriteXdr for TransactionMetaV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractEventType { System = 0, @@ -20442,9 +21327,13 @@ impl WriteXdr for ContractEventType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractEventV0 { pub topics: VecM, pub data: ScVal, @@ -20492,9 +21381,13 @@ impl WriteXdr for ContractEventV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractEventBody { V0(ContractEventV0), @@ -20606,9 +21499,13 @@ impl WriteXdr for ContractEventBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractEvent { pub ext: ExtensionPoint, pub contract_id: Option, @@ -20657,9 +21554,13 @@ impl WriteXdr for ContractEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DiagnosticEvent { pub in_successful_contract_call: bool, pub event: ContractEvent, @@ -20710,9 +21611,13 @@ impl WriteXdr for DiagnosticEvent { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanTransactionMeta { pub ext: ExtensionPoint, pub events: VecM, @@ -20768,9 +21673,13 @@ impl WriteXdr for SorobanTransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionMetaV3 { pub ext: ExtensionPoint, pub tx_changes_before: LedgerEntryChanges, @@ -20822,9 +21731,13 @@ impl WriteXdr for TransactionMetaV3 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeHostFunctionSuccessPreImage { pub return_value: ScVal, pub events: VecM, @@ -20874,9 +21787,13 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionMeta { V0(VecM), @@ -20989,9 +21906,13 @@ impl WriteXdr for TransactionMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResultMeta { pub result: TransactionResultPair, pub fee_processing: LedgerEntryChanges, @@ -21037,9 +21958,13 @@ impl WriteXdr for TransactionResultMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct UpgradeEntryMeta { pub upgrade: LedgerUpgrade, pub changes: LedgerEntryChanges, @@ -21094,9 +22019,13 @@ impl WriteXdr for UpgradeEntryMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseMetaV0 { pub ledger_header: LedgerHeaderHistoryEntry, pub tx_set: TransactionSet, @@ -21175,9 +22104,13 @@ impl WriteXdr for LedgerCloseMetaV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerCloseMetaV1 { pub ext: ExtensionPoint, pub ledger_header: LedgerHeaderHistoryEntry, @@ -21244,9 +22177,13 @@ impl WriteXdr for LedgerCloseMetaV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMeta { V0(LedgerCloseMetaV0), @@ -21352,9 +22289,13 @@ impl WriteXdr for LedgerCloseMeta { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ErrorCode { Misc = 0, @@ -21471,9 +22412,13 @@ impl WriteXdr for ErrorCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SError { pub code: ErrorCode, pub msg: StringM<100>, @@ -21515,9 +22460,13 @@ impl WriteXdr for SError { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SendMore { pub num_messages: u32, } @@ -21557,9 +22506,13 @@ impl WriteXdr for SendMore { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SendMoreExtended { pub num_messages: u32, pub num_bytes: u32, @@ -21603,9 +22556,13 @@ impl WriteXdr for SendMoreExtended { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AuthCert { pub pubkey: Curve25519Public, pub expiration: u64, @@ -21658,9 +22615,13 @@ impl WriteXdr for AuthCert { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Hello { pub ledger_version: u32, pub overlay_version: u32, @@ -21731,9 +22692,13 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Auth { pub flags: i32, } @@ -21774,9 +22739,13 @@ impl WriteXdr for Auth { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum IpAddrType { IPv4 = 0, @@ -21881,9 +22850,13 @@ impl WriteXdr for IpAddrType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PeerAddressIp { IPv4([u8; 4]), @@ -21993,9 +22966,13 @@ impl WriteXdr for PeerAddressIp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PeerAddress { pub ip: PeerAddressIp, pub port: u32, @@ -22070,9 +23047,13 @@ impl WriteXdr for PeerAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum MessageType { ErrorMsg = 0, @@ -22270,9 +23251,13 @@ impl WriteXdr for MessageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DontHave { pub type_: MessageType, pub req_hash: Uint256, @@ -22315,9 +23300,13 @@ impl WriteXdr for DontHave { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SurveyMessageCommandType { SurveyTopology = 0, @@ -22417,9 +23406,13 @@ impl WriteXdr for SurveyMessageCommandType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SurveyMessageResponseType { V0 = 0, @@ -22525,9 +23518,13 @@ impl WriteXdr for SurveyMessageResponseType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SurveyRequestMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -22579,9 +23576,13 @@ impl WriteXdr for SurveyRequestMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SignedSurveyRequestMessage { pub request_signature: Signature, pub request: SurveyRequestMessage, @@ -22621,9 +23622,13 @@ impl WriteXdr for SignedSurveyRequestMessage { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct EncryptedBody(pub BytesM<64000>); @@ -22732,9 +23737,13 @@ impl AsRef<[u8]> for EncryptedBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SurveyResponseMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -22786,9 +23795,13 @@ impl WriteXdr for SurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SignedSurveyResponseMessage { pub response_signature: Signature, pub response: SurveyResponseMessage, @@ -22846,9 +23859,13 @@ impl WriteXdr for SignedSurveyResponseMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PeerStats { pub id: NodeId, pub version_str: StringM<100>, @@ -22927,9 +23944,13 @@ impl WriteXdr for PeerStats { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct PeerStatList(pub VecM); @@ -23038,9 +24059,13 @@ impl AsRef<[PeerStats]> for PeerStatList { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TopologyResponseBodyV0 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -23095,9 +24120,13 @@ impl WriteXdr for TopologyResponseBodyV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TopologyResponseBodyV1 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -23155,9 +24184,13 @@ impl WriteXdr for TopologyResponseBodyV1 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SurveyResponseBody { V0(TopologyResponseBodyV0), @@ -23266,9 +24299,13 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TxAdvertVector(pub VecM); @@ -23373,9 +24410,13 @@ impl AsRef<[Hash]> for TxAdvertVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FloodAdvert { pub tx_hashes: TxAdvertVector, } @@ -23420,9 +24461,13 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TxDemandVector(pub VecM); @@ -23527,9 +24572,13 @@ impl AsRef<[Hash]> for TxDemandVector { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FloodDemand { pub tx_hashes: TxDemandVector, } @@ -23615,9 +24664,13 @@ impl WriteXdr for FloodDemand { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum StellarMessage { ErrorMsg(SError), @@ -23860,9 +24913,13 @@ impl WriteXdr for StellarMessage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AuthenticatedMessageV0 { pub sequence: u64, pub message: StellarMessage, @@ -23914,9 +24971,13 @@ impl WriteXdr for AuthenticatedMessageV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AuthenticatedMessage { V0(AuthenticatedMessageV0), @@ -24022,9 +25083,13 @@ pub const MAX_OPS_PER_TX: u64 = 100; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolParameters { LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters), @@ -24127,11 +25192,11 @@ impl WriteXdr for LiquidityPoolParameters { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct MuxedAccountMed25519 { pub id: u64, @@ -24182,11 +25247,11 @@ impl WriteXdr for MuxedAccountMed25519 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { @@ -24291,9 +25356,13 @@ impl WriteXdr for MuxedAccount { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct DecoratedSignature { pub hint: SignatureHint, pub signature: Signature, @@ -24362,9 +25431,13 @@ impl WriteXdr for DecoratedSignature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OperationType { CreateAccount = 0, @@ -24597,9 +25670,13 @@ impl WriteXdr for OperationType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateAccountOp { pub destination: AccountId, pub starting_balance: i64, @@ -24643,9 +25720,13 @@ impl WriteXdr for CreateAccountOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PaymentOp { pub destination: MuxedAccount, pub asset: Asset, @@ -24699,9 +25780,13 @@ impl WriteXdr for PaymentOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictReceiveOp { pub send_asset: Asset, pub send_max: i64, @@ -24764,9 +25849,13 @@ impl WriteXdr for PathPaymentStrictReceiveOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictSendOp { pub send_asset: Asset, pub send_amount: i64, @@ -24826,9 +25915,13 @@ impl WriteXdr for PathPaymentStrictSendOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -24886,9 +25979,13 @@ impl WriteXdr for ManageSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageBuyOfferOp { pub selling: Asset, pub buying: Asset, @@ -24942,9 +26039,13 @@ impl WriteXdr for ManageBuyOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreatePassiveSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -25007,9 +26108,13 @@ impl WriteXdr for CreatePassiveSellOfferOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SetOptionsOp { pub inflation_dest: Option, pub clear_flags: Option, @@ -25085,9 +26190,13 @@ impl WriteXdr for SetOptionsOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustAsset { Native, @@ -25207,9 +26316,13 @@ impl WriteXdr for ChangeTrustAsset { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ChangeTrustOp { pub line: ChangeTrustAsset, pub limit: i64, @@ -25255,9 +26368,13 @@ impl WriteXdr for ChangeTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct AllowTrustOp { pub trustor: AccountId, pub asset: AssetCode, @@ -25303,9 +26420,13 @@ impl WriteXdr for AllowTrustOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageDataOp { pub data_name: String64, pub data_value: Option, @@ -25347,9 +26468,13 @@ impl WriteXdr for ManageDataOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BumpSequenceOp { pub bump_to: SequenceNumber, } @@ -25390,9 +26515,13 @@ impl WriteXdr for BumpSequenceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateClaimableBalanceOp { pub asset: Asset, pub amount: i64, @@ -25437,9 +26566,13 @@ impl WriteXdr for CreateClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -25478,9 +26611,13 @@ impl WriteXdr for ClaimClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct BeginSponsoringFutureReservesOp { pub sponsored_id: AccountId, } @@ -25521,9 +26658,13 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RevokeSponsorshipType { LedgerEntry = 0, @@ -25628,9 +26769,13 @@ impl WriteXdr for RevokeSponsorshipType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct RevokeSponsorshipOpSigner { pub account_id: AccountId, pub signer_key: SignerKey, @@ -25680,9 +26825,13 @@ impl WriteXdr for RevokeSponsorshipOpSigner { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipOp { LedgerEntry(LedgerKey), @@ -25790,9 +26939,13 @@ impl WriteXdr for RevokeSponsorshipOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClawbackOp { pub asset: Asset, pub from: MuxedAccount, @@ -25837,9 +26990,13 @@ impl WriteXdr for ClawbackOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClawbackClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -25882,9 +27039,13 @@ impl WriteXdr for ClawbackClaimableBalanceOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SetTrustLineFlagsOp { pub trustor: AccountId, pub asset: Asset, @@ -25944,9 +27105,13 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolDepositOp { pub liquidity_pool_id: PoolId, pub max_amount_a: i64, @@ -26000,9 +27165,13 @@ impl WriteXdr for LiquidityPoolDepositOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LiquidityPoolWithdrawOp { pub liquidity_pool_id: PoolId, pub amount: i64, @@ -26053,9 +27222,13 @@ impl WriteXdr for LiquidityPoolWithdrawOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum HostFunctionType { InvokeContract = 0, @@ -26166,9 +27339,13 @@ impl WriteXdr for HostFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ContractIdPreimageType { Address = 0, @@ -26273,9 +27450,13 @@ impl WriteXdr for ContractIdPreimageType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ContractIdPreimageFromAddress { pub address: ScAddress, pub salt: Uint256, @@ -26325,9 +27506,13 @@ impl WriteXdr for ContractIdPreimageFromAddress { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ContractIdPreimage { Address(ContractIdPreimageFromAddress), @@ -26434,9 +27619,13 @@ impl WriteXdr for ContractIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct CreateContractArgs { pub contract_id_preimage: ContractIdPreimage, pub executable: ContractExecutable, @@ -26479,9 +27668,13 @@ impl WriteXdr for CreateContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeContractArgs { pub contract_address: ScAddress, pub function_name: ScSymbol, @@ -26532,9 +27725,13 @@ impl WriteXdr for InvokeContractArgs { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum HostFunction { InvokeContract(InvokeContractArgs), @@ -26653,9 +27850,13 @@ impl WriteXdr for HostFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SorobanAuthorizedFunctionType { ContractFn = 0, @@ -26763,9 +27964,13 @@ impl WriteXdr for SorobanAuthorizedFunctionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SorobanAuthorizedFunction { ContractFn(InvokeContractArgs), @@ -26875,9 +28080,13 @@ impl WriteXdr for SorobanAuthorizedFunction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAuthorizedInvocation { pub function: SorobanAuthorizedFunction, pub sub_invocations: VecM, @@ -26922,9 +28131,13 @@ impl WriteXdr for SorobanAuthorizedInvocation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAddressCredentials { pub address: ScAddress, pub nonce: i64, @@ -26974,9 +28187,13 @@ impl WriteXdr for SorobanAddressCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SorobanCredentialsType { SourceAccount = 0, @@ -27084,9 +28301,13 @@ impl WriteXdr for SorobanCredentialsType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SorobanCredentials { SourceAccount, @@ -27193,9 +28414,13 @@ impl WriteXdr for SorobanCredentials { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanAuthorizationEntry { pub credentials: SorobanCredentials, pub root_invocation: SorobanAuthorizedInvocation, @@ -27240,9 +28465,13 @@ impl WriteXdr for SorobanAuthorizationEntry { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InvokeHostFunctionOp { pub host_function: HostFunction, pub auth: VecM, @@ -27285,9 +28514,13 @@ impl WriteXdr for InvokeHostFunctionOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ExtendFootprintTtlOp { pub ext: ExtensionPoint, pub extend_to: u32, @@ -27329,9 +28562,13 @@ impl WriteXdr for ExtendFootprintTtlOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct RestoreFootprintOp { pub ext: ExtensionPoint, } @@ -27424,9 +28661,13 @@ impl WriteXdr for RestoreFootprintOp { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationBody { CreateAccount(CreateAccountOp), @@ -27804,9 +29045,13 @@ impl WriteXdr for OperationBody { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Operation { pub source_account: Option, pub body: OperationBody, @@ -27850,9 +29095,13 @@ impl WriteXdr for Operation { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageOperationId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -27901,9 +29150,13 @@ impl WriteXdr for HashIdPreimageOperationId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageRevokeId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -27955,9 +29208,13 @@ impl WriteXdr for HashIdPreimageRevokeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageContractId { pub network_id: Hash, pub contract_id_preimage: ContractIdPreimage, @@ -28002,9 +29259,13 @@ impl WriteXdr for HashIdPreimageContractId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HashIdPreimageSorobanAuthorization { pub network_id: Hash, pub nonce: i64, @@ -28082,9 +29343,13 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum HashIdPreimage { OpId(HashIdPreimageOperationId), @@ -28216,9 +29481,13 @@ impl WriteXdr for HashIdPreimage { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum MemoType { None = 0, @@ -28344,9 +29613,13 @@ impl WriteXdr for MemoType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Memo { None, @@ -28469,9 +29742,13 @@ impl WriteXdr for Memo { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TimeBounds { pub min_time: TimePoint, pub max_time: TimePoint, @@ -28514,9 +29791,13 @@ impl WriteXdr for TimeBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerBounds { pub min_ledger: u32, pub max_ledger: u32, @@ -28586,9 +29867,13 @@ impl WriteXdr for LedgerBounds { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PreconditionsV2 { pub time_bounds: Option, pub ledger_bounds: Option, @@ -28645,9 +29930,13 @@ impl WriteXdr for PreconditionsV2 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PreconditionType { None = 0, @@ -28761,9 +30050,13 @@ impl WriteXdr for PreconditionType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum Preconditions { None, @@ -28874,9 +30167,13 @@ impl WriteXdr for Preconditions { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct LedgerFootprint { pub read_only: VecM, pub read_write: VecM, @@ -28926,9 +30223,13 @@ impl WriteXdr for LedgerFootprint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanResources { pub footprint: LedgerFootprint, pub instructions: u32, @@ -28987,9 +30288,13 @@ impl WriteXdr for SorobanResources { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SorobanTransactionData { pub ext: ExtensionPoint, pub resources: SorobanResources, @@ -29036,9 +30341,13 @@ impl WriteXdr for SorobanTransactionData { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionV0Ext { V0, @@ -29145,9 +30454,13 @@ impl WriteXdr for TransactionV0Ext { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV0 { pub source_account_ed25519: Uint256, pub fee: u32, @@ -29207,9 +30520,13 @@ impl WriteXdr for TransactionV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV0Envelope { pub tx: TransactionV0, pub signatures: VecM, @@ -29255,9 +30572,13 @@ impl WriteXdr for TransactionV0Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionExt { V0, @@ -29382,9 +30703,13 @@ impl WriteXdr for TransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Transaction { pub source_account: MuxedAccount, pub fee: u32, @@ -29444,9 +30769,13 @@ impl WriteXdr for Transaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionV1Envelope { pub tx: Transaction, pub signatures: VecM, @@ -29490,9 +30819,13 @@ impl WriteXdr for TransactionV1Envelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionInnerTx { Tx(TransactionV1Envelope), @@ -29590,9 +30923,13 @@ impl WriteXdr for FeeBumpTransactionInnerTx { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionExt { V0, @@ -29701,9 +31038,13 @@ impl WriteXdr for FeeBumpTransactionExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FeeBumpTransaction { pub fee_source: MuxedAccount, pub fee: i64, @@ -29754,9 +31095,13 @@ impl WriteXdr for FeeBumpTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct FeeBumpTransactionEnvelope { pub tx: FeeBumpTransaction, pub signatures: VecM, @@ -29804,9 +31149,13 @@ impl WriteXdr for FeeBumpTransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionEnvelope { TxV0(TransactionV0Envelope), @@ -29923,9 +31272,13 @@ impl WriteXdr for TransactionEnvelope { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionSignaturePayloadTaggedTransaction { Tx(Transaction), @@ -30035,9 +31388,13 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionSignaturePayload { pub network_id: Hash, pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction, @@ -30082,9 +31439,13 @@ impl WriteXdr for TransactionSignaturePayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimAtomType { V0 = 0, @@ -30202,9 +31563,13 @@ impl WriteXdr for ClaimAtomType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimOfferAtomV0 { pub seller_ed25519: Uint256, pub offer_id: i64, @@ -30268,9 +31633,13 @@ impl WriteXdr for ClaimOfferAtomV0 { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimOfferAtom { pub seller_id: AccountId, pub offer_id: i64, @@ -30332,9 +31701,13 @@ impl WriteXdr for ClaimOfferAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ClaimLiquidityAtom { pub liquidity_pool_id: PoolId, pub asset_sold: Asset, @@ -30391,9 +31764,13 @@ impl WriteXdr for ClaimLiquidityAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimAtom { V0(ClaimOfferAtomV0), @@ -30514,9 +31891,13 @@ impl WriteXdr for ClaimAtom { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CreateAccountResultCode { Success = 0, @@ -30645,9 +32026,13 @@ impl WriteXdr for CreateAccountResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum CreateAccountResult { Success, @@ -30788,9 +32173,13 @@ impl WriteXdr for CreateAccountResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PaymentResultCode { Success = 0, @@ -30949,9 +32338,13 @@ impl WriteXdr for PaymentResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PaymentResult { Success, @@ -31139,9 +32532,13 @@ impl WriteXdr for PaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PathPaymentStrictReceiveResultCode { Success = 0, @@ -31305,9 +32702,13 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct SimplePaymentResult { pub destination: AccountId, pub asset: Asset, @@ -31353,9 +32754,13 @@ impl WriteXdr for SimplePaymentResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictReceiveResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -31419,9 +32824,13 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictReceiveResult { Success(PathPaymentStrictReceiveResultSuccess), @@ -31632,9 +33041,13 @@ impl WriteXdr for PathPaymentStrictReceiveResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PathPaymentStrictSendResultCode { Success = 0, @@ -31797,9 +33210,13 @@ impl WriteXdr for PathPaymentStrictSendResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct PathPaymentStrictSendResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -31862,9 +33279,13 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictSendResult { Success(PathPaymentStrictSendResultSuccess), @@ -32074,9 +33495,13 @@ impl WriteXdr for PathPaymentStrictSendResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageSellOfferResultCode { Success = 0, @@ -32241,9 +33666,13 @@ impl WriteXdr for ManageSellOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageOfferEffect { Created = 0, @@ -32356,9 +33785,13 @@ impl WriteXdr for ManageOfferEffect { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageOfferSuccessResultOffer { Created(OfferEntry), @@ -32479,9 +33912,13 @@ impl WriteXdr for ManageOfferSuccessResultOffer { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct ManageOfferSuccessResult { pub offers_claimed: VecM, pub offer: ManageOfferSuccessResultOffer, @@ -32538,9 +33975,13 @@ impl WriteXdr for ManageOfferSuccessResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageSellOfferResult { Success(ManageOfferSuccessResult), @@ -32747,9 +34188,13 @@ impl WriteXdr for ManageSellOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageBuyOfferResultCode { Success = 0, @@ -32926,9 +34371,13 @@ impl WriteXdr for ManageBuyOfferResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageBuyOfferResult { Success(ManageOfferSuccessResult), @@ -33128,9 +34577,13 @@ impl WriteXdr for ManageBuyOfferResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SetOptionsResultCode { Success = 0, @@ -33295,9 +34748,13 @@ impl WriteXdr for SetOptionsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SetOptionsResult { Success, @@ -33482,9 +34939,13 @@ impl WriteXdr for SetOptionsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ChangeTrustResultCode { Success = 0, @@ -33637,9 +35098,13 @@ impl WriteXdr for ChangeTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustResult { Success, @@ -33808,9 +35273,13 @@ impl WriteXdr for ChangeTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AllowTrustResultCode { Success = 0, @@ -33951,9 +35420,13 @@ impl WriteXdr for AllowTrustResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AllowTrustResult { Success, @@ -34106,9 +35579,13 @@ impl WriteXdr for AllowTrustResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum AccountMergeResultCode { Success = 0, @@ -34255,9 +35732,13 @@ impl WriteXdr for AccountMergeResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum AccountMergeResult { Success(i64), @@ -34410,9 +35891,13 @@ impl WriteXdr for AccountMergeResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum InflationResultCode { Success = 0, @@ -34515,9 +36000,13 @@ impl WriteXdr for InflationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InflationPayout { pub destination: AccountId, pub amount: i64, @@ -34563,9 +36052,13 @@ impl WriteXdr for InflationPayout { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InflationResult { Success(VecM), @@ -34678,9 +36171,13 @@ impl WriteXdr for InflationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ManageDataResultCode { Success = 0, @@ -34809,9 +36306,13 @@ impl WriteXdr for ManageDataResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ManageDataResult { Success, @@ -34943,9 +36444,13 @@ impl WriteXdr for ManageDataResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BumpSequenceResultCode { Success = 0, @@ -35053,9 +36558,13 @@ impl WriteXdr for BumpSequenceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BumpSequenceResult { Success, @@ -35165,9 +36674,13 @@ impl WriteXdr for BumpSequenceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CreateClaimableBalanceResultCode { Success = 0, @@ -35303,9 +36816,13 @@ impl WriteXdr for CreateClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum CreateClaimableBalanceResult { Success(ClaimableBalanceId), @@ -35449,9 +36966,13 @@ impl WriteXdr for CreateClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClaimClaimableBalanceResultCode { Success = 0, @@ -35586,9 +37107,13 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClaimClaimableBalanceResult { Success, @@ -35731,9 +37256,13 @@ impl WriteXdr for ClaimClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum BeginSponsoringFutureReservesResultCode { Success = 0, @@ -35853,9 +37382,13 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum BeginSponsoringFutureReservesResult { Success, @@ -35978,9 +37511,13 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum EndSponsoringFutureReservesResultCode { Success = 0, @@ -36089,9 +37626,13 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum EndSponsoringFutureReservesResult { Success, @@ -36205,9 +37746,13 @@ impl WriteXdr for EndSponsoringFutureReservesResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RevokeSponsorshipResultCode { Success = 0, @@ -36342,9 +37887,13 @@ impl WriteXdr for RevokeSponsorshipResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipResult { Success, @@ -36488,9 +38037,13 @@ impl WriteXdr for RevokeSponsorshipResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClawbackResultCode { Success = 0, @@ -36619,9 +38172,13 @@ impl WriteXdr for ClawbackResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClawbackResult { Success, @@ -36756,9 +38313,13 @@ impl WriteXdr for ClawbackResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ClawbackClaimableBalanceResultCode { Success = 0, @@ -36878,9 +38439,13 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ClawbackClaimableBalanceResult { Success, @@ -37008,9 +38573,13 @@ impl WriteXdr for ClawbackClaimableBalanceResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SetTrustLineFlagsResultCode { Success = 0, @@ -37145,9 +38714,13 @@ impl WriteXdr for SetTrustLineFlagsResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum SetTrustLineFlagsResult { Success, @@ -37298,9 +38871,13 @@ impl WriteXdr for SetTrustLineFlagsResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolDepositResultCode { Success = 0, @@ -37447,9 +39024,13 @@ impl WriteXdr for LiquidityPoolDepositResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolDepositResult { Success, @@ -37611,9 +39192,13 @@ impl WriteXdr for LiquidityPoolDepositResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum LiquidityPoolWithdrawResultCode { Success = 0, @@ -37748,9 +39333,13 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolWithdrawResult { Success, @@ -37895,9 +39484,13 @@ impl WriteXdr for LiquidityPoolWithdrawResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum InvokeHostFunctionResultCode { Success = 0, @@ -38032,9 +39625,13 @@ impl WriteXdr for InvokeHostFunctionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InvokeHostFunctionResult { Success(Hash), @@ -38181,9 +39778,13 @@ impl WriteXdr for InvokeHostFunctionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum ExtendFootprintTtlResultCode { Success = 0, @@ -38306,9 +39907,13 @@ impl WriteXdr for ExtendFootprintTtlResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ExtendFootprintTtlResult { Success, @@ -38441,9 +40046,13 @@ impl WriteXdr for ExtendFootprintTtlResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum RestoreFootprintResultCode { Success = 0, @@ -38566,9 +40175,13 @@ impl WriteXdr for RestoreFootprintResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum RestoreFootprintResult { Success, @@ -38702,9 +40315,13 @@ impl WriteXdr for RestoreFootprintResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum OperationResultCode { OpInner = 0, @@ -38890,9 +40507,13 @@ impl WriteXdr for OperationResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationResultTr { CreateAccount(CreateAccountResult), @@ -39278,9 +40899,13 @@ impl WriteXdr for OperationResultTr { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum OperationResult { OpInner(OperationResultTr), @@ -39445,9 +41070,13 @@ impl WriteXdr for OperationResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum TransactionResultCode { TxFeeBumpInnerSuccess = 1, @@ -39660,9 +41289,13 @@ impl WriteXdr for TransactionResultCode { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultResult { TxSuccess(VecM), @@ -39880,9 +41513,13 @@ impl WriteXdr for InnerTransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultExt { V0, @@ -40013,9 +41650,13 @@ impl WriteXdr for InnerTransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InnerTransactionResult { pub fee_charged: i64, pub result: InnerTransactionResultResult, @@ -40061,9 +41702,13 @@ impl WriteXdr for InnerTransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct InnerTransactionResultPair { pub transaction_hash: Hash, pub result: InnerTransactionResult, @@ -40128,9 +41773,13 @@ impl WriteXdr for InnerTransactionResultPair { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionResultResult { TxFeeBumpInnerSuccess(InnerTransactionResultPair), @@ -40366,9 +42015,13 @@ impl WriteXdr for TransactionResultResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum TransactionResultExt { V0, @@ -40500,9 +42153,13 @@ impl WriteXdr for TransactionResultExt { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct TransactionResult { pub fee_charged: i64, pub result: TransactionResultResult, @@ -40544,11 +42201,11 @@ impl WriteXdr for TransactionResult { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Hash(pub [u8; 32]); @@ -40666,11 +42323,11 @@ impl AsRef<[u8]> for Hash { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct Uint256(pub [u8; 32]); @@ -40820,9 +42477,13 @@ pub type Int64 = i64; #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct TimePoint(pub u64); @@ -40875,9 +42536,13 @@ impl WriteXdr for TimePoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Duration(pub u64); @@ -40935,9 +42600,13 @@ impl WriteXdr for Duration { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[allow(clippy::large_enum_variant)] pub enum ExtensionPoint { V0, @@ -41040,9 +42709,13 @@ impl WriteXdr for ExtensionPoint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum CryptoKeyType { Ed25519 = 0, @@ -41165,9 +42838,13 @@ impl WriteXdr for CryptoKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum PublicKeyType { PublicKeyTypeEd25519 = 0, @@ -41269,9 +42946,13 @@ impl WriteXdr for PublicKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[repr(i32)] pub enum SignerKeyType { Ed25519 = 0, @@ -41386,11 +43067,11 @@ impl WriteXdr for SignerKeyType { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum PublicKey { @@ -41492,11 +43173,11 @@ impl WriteXdr for PublicKey { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, @@ -41555,11 +43236,11 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[allow(clippy::large_enum_variant)] pub enum SignerKey { @@ -41677,9 +43358,13 @@ impl WriteXdr for SignerKey { #[derive(Default)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] #[derive(Debug)] pub struct Signature(pub BytesM<64>); @@ -41781,11 +43466,11 @@ impl AsRef<[u8]> for Signature { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] pub struct SignatureHint(pub [u8; 4]); @@ -41903,11 +43588,11 @@ impl AsRef<[u8]> for SignatureHint { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -41961,11 +43646,11 @@ impl WriteXdr for NodeId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive( - serde_with::SerializeDisplay, - serde_with::DeserializeFromStr, - schemars::JsonSchema - ) + derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) +)] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) )] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -42022,9 +43707,13 @@ impl WriteXdr for AccountId { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Curve25519Secret { pub key: [u8; 32], } @@ -42063,9 +43752,13 @@ impl WriteXdr for Curve25519Secret { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct Curve25519Public { pub key: [u8; 32], } @@ -42104,9 +43797,13 @@ impl WriteXdr for Curve25519Public { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HmacSha256Key { pub key: [u8; 32], } @@ -42145,9 +43842,13 @@ impl WriteXdr for HmacSha256Key { #[cfg_attr(feature = "arbitrary", derive(Arbitrary))] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub struct HmacSha256Mac { pub mac: [u8; 32], } @@ -42176,9 +43877,13 @@ impl WriteXdr for HmacSha256Mac { #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub enum TypeVariant { Value, ScpBallot, @@ -44338,10 +46043,14 @@ impl core::str::FromStr for TypeVariant { #[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), - derive(serde::Serialize, serde::Deserialize, schemars::JsonSchema), + derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case"), serde(untagged) )] +#[cfg_attr( + all(feature = "schemars", feature = "serde", feature = "alloc"), + derive(schemars::JsonSchema) +)] pub enum Type { Value(Box), ScpBallot(Box), From 52bb627c3936bafa0622597c30fe5e1f67dd2e0d Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Thu, 7 Mar 2024 20:12:27 +1000 Subject: [PATCH 06/25] upd --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index be3fac70..81f2851a 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=8cfcc1a17472b933724c5b9501e4d33a680b09b1 +XDRGEN_VERSION=6499bc7413bf3ecd413916bbb82dfb04bc71a0a0 # LOCAL_XDRGEN=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 From 5329bbfdd3e1ebfbebba6e2e4df46b0fb2477bfd Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 8 Mar 2024 08:05:28 +1000 Subject: [PATCH 07/25] fix --- src/curr/generated.rs | 2 ++ src/next/generated.rs | 2 ++ tests/serde_tx_schema.rs | 3 +-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 5ef665cd..5c83148c 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -2206,6 +2206,7 @@ where } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] fn mut_array( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, @@ -2220,6 +2221,7 @@ fn mut_array( } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] fn mut_string( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, diff --git a/src/next/generated.rs b/src/next/generated.rs index 647a234e..cb3fca93 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -2206,6 +2206,7 @@ where } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] fn mut_array( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, @@ -2220,6 +2221,7 @@ fn mut_array( } } +#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] fn mut_string( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, diff --git a/tests/serde_tx_schema.rs b/tests/serde_tx_schema.rs index 336dfe4e..4da1775c 100644 --- a/tests/serde_tx_schema.rs +++ b/tests/serde_tx_schema.rs @@ -1,10 +1,9 @@ #![cfg(feature = "curr")] -#![cfg(all(feature = "std", feature = "serde"))] +#![cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] use stellar_xdr::curr as stellar_xdr; use stellar_xdr::TransactionEnvelope; -#[cfg(feature = "curr")] #[allow(clippy::too_many_lines)] #[test] fn test_serde_tx_schema() -> Result<(), Box> { From bea9cecfe95023d54b8bfac72ed9313269bfdfa9 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 8 Mar 2024 23:37:14 +1000 Subject: [PATCH 08/25] upd --- Cargo.toml | 3 +- Makefile | 8 +- src/curr/generated.rs | 2280 +++++++------------------ src/next/generated.rs | 2280 +++++++------------------ tests/serde_tx_schema.rs | 3423 +------------------------------------- 5 files changed, 1219 insertions(+), 6775 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e29ae380..20d1cda7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,8 +43,9 @@ next = [] # Features dependent on optional dependencies. base64 = ["std", "dep:base64"] -serde = ["alloc", "dep:serde", "dep:serde_with", "hex/serde", "dep:schemars"] +serde = ["alloc", "dep:serde", "dep:serde_with", "hex/serde"] serde_json = ["std", "serde", "dep:serde_json"] +schemars = ["alloc", "serde", "serde_json", "dep:schemars"] arbitrary = ["std", "dep:arbitrary"] hex = [] diff --git a/Makefile b/Makefile index 81f2851a..a39a4b2d 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,8 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=6499bc7413bf3ecd413916bbb82dfb04bc71a0a0 -# LOCAL_XDRGEN=1 +XDRGEN_VERSION=c95a5bd7f9dff8dff53cadcef3014ceb69ab7088 +# XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 @@ -35,7 +35,7 @@ generate: src/curr/generated.rs xdr/curr-version src/next/generated.rs xdr/next- src/curr/generated.rs: $(sort $(wildcard xdr/curr/*.x)) > $@ -ifeq ($(LOCAL_XDRGEN),) +ifeq ($(XDRGEN_LOCAL),) docker run -i --rm -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ gem install specific_install -v 0.3.8 && \ gem specific_install https://github.com/stellar/xdrgen.git -b $(XDRGEN_VERSION) && \ @@ -54,7 +54,7 @@ xdr/curr-version: $(wildcard .git/modules/xdr/curr/**/*) $(wildcard xdr/curr/*.x src/next/generated.rs: $(sort $(wildcard xdr/next/*.x)) > $@ -ifeq ($(LOCAL_XDRGEN),) +ifeq ($(XDRGEN_LOCAL),) docker run -i --rm -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ gem install specific_install -v 0.3.8 && \ gem specific_install https://github.com/stellar/xdrgen.git -b $(XDRGEN_VERSION) && \ diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 5c83148c..bb53ece6 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -956,7 +956,7 @@ impl Default for VecM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for VecM { fn schema_name() -> String { format!("VecM<{}, {}>", T::schema_name(), MAX) @@ -1411,10 +1411,10 @@ impl Deref for BytesM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for BytesM { fn schema_name() -> String { - format!("BytesM<{}>", MAX) + format!("BytesM<{MAX}>") } fn is_referenceable() -> bool { @@ -1433,8 +1433,8 @@ impl schemars::JsonSchema for BytesM { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), - min_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + max_length: Some(MAX * 2), + min_length: None, ..string }) } else { @@ -1831,10 +1831,10 @@ impl Default for StringM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for StringM { fn schema_name() -> String { - format!("StringM<{}>", MAX) + format!("StringM<{MAX}>") } fn is_referenceable() -> bool { @@ -2167,7 +2167,7 @@ pub struct Frame(pub T) where T: ReadXdr; -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for Frame { fn schema_name() -> String { format!("Frame<{}>", T::schema_name()) @@ -2206,7 +2206,7 @@ where } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] fn mut_array( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, @@ -2221,7 +2221,7 @@ fn mut_array( } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] fn mut_string( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, @@ -2876,10 +2876,7 @@ mod test { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Value(pub BytesM); @@ -2988,10 +2985,7 @@ impl AsRef<[u8]> for Value { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpBallot { pub counter: u32, pub value: Value, @@ -3040,10 +3034,7 @@ impl WriteXdr for ScpBallot { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScpStatementType { Prepare = 0, @@ -3160,10 +3151,7 @@ impl WriteXdr for ScpStatementType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpNomination { pub quorum_set_hash: Hash, pub votes: VecM, @@ -3216,10 +3204,7 @@ impl WriteXdr for ScpNomination { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementPrepare { pub quorum_set_hash: Hash, pub ballot: ScpBallot, @@ -3280,10 +3265,7 @@ impl WriteXdr for ScpStatementPrepare { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementConfirm { pub ballot: ScpBallot, pub n_prepared: u32, @@ -3339,10 +3321,7 @@ impl WriteXdr for ScpStatementConfirm { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementExternalize { pub commit: ScpBallot, pub n_h: u32, @@ -3418,10 +3397,7 @@ impl WriteXdr for ScpStatementExternalize { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScpStatementPledges { Prepare(ScpStatementPrepare), @@ -3576,10 +3552,7 @@ impl WriteXdr for ScpStatementPledges { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatement { pub node_id: NodeId, pub slot_index: u64, @@ -3628,10 +3601,7 @@ impl WriteXdr for ScpStatement { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpEnvelope { pub statement: ScpStatement, pub signature: Signature, @@ -3678,10 +3648,7 @@ impl WriteXdr for ScpEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpQuorumSet { pub threshold: u32, pub validators: VecM, @@ -3730,10 +3697,7 @@ impl WriteXdr for ScpQuorumSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractExecutionLanesV0 { pub ledger_max_tx_count: u32, } @@ -3784,10 +3748,7 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractComputeV0 { pub ledger_max_instructions: i64, pub tx_max_instructions: i64, @@ -3869,10 +3830,7 @@ impl WriteXdr for ConfigSettingContractComputeV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractLedgerCostV0 { pub ledger_max_read_ledger_entries: u32, pub ledger_max_read_bytes: u32, @@ -3956,10 +3914,7 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractHistoricalDataV0 { pub fee_historical1_kb: i64, } @@ -4004,10 +3959,7 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractEventsV0 { pub tx_max_contract_events_size_bytes: u32, pub fee_contract_events1_kb: i64, @@ -4058,10 +4010,7 @@ impl WriteXdr for ConfigSettingContractEventsV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractBandwidthV0 { pub ledger_max_txs_size_bytes: u32, pub tx_max_size_bytes: u32, @@ -4158,10 +4107,7 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractCostType { WasmInsnExec = 0, @@ -4379,10 +4325,7 @@ impl WriteXdr for ContractCostType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCostParamEntry { pub ext: ExtensionPoint, pub const_term: i64, @@ -4450,10 +4393,7 @@ impl WriteXdr for ContractCostParamEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StateArchivalSettings { pub max_entry_ttl: u32, pub min_temporary_ttl: u32, @@ -4523,10 +4463,7 @@ impl WriteXdr for StateArchivalSettings { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct EvictionIterator { pub bucket_list_level: u32, pub is_curr_bucket: bool, @@ -4580,10 +4517,7 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ContractCostParams(pub VecM); @@ -4705,10 +4639,7 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ConfigSettingId { ContractMaxSizeBytes = 0, @@ -4906,10 +4837,7 @@ impl WriteXdr for ConfigSettingId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ConfigSettingEntry { ContractMaxSizeBytes(u32), @@ -5136,10 +5064,7 @@ impl WriteXdr for ConfigSettingEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScEnvMetaKind { ScEnvMetaKindInterfaceVersion = 0, @@ -5242,10 +5167,7 @@ impl WriteXdr for ScEnvMetaKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScEnvMetaEntry { ScEnvMetaKindInterfaceVersion(u64), @@ -5347,10 +5269,7 @@ impl WriteXdr for ScEnvMetaEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScMetaV0 { pub key: StringM, pub val: StringM, @@ -5396,10 +5315,7 @@ impl WriteXdr for ScMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScMetaKind { ScMetaV0 = 0, @@ -5502,10 +5418,7 @@ impl WriteXdr for ScMetaKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScMetaEntry { ScMetaV0(ScMetaV0), @@ -5643,10 +5556,7 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecType { Val = 0, @@ -5871,10 +5781,7 @@ impl WriteXdr for ScSpecType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeOption { pub value_type: Box, } @@ -5917,10 +5824,7 @@ impl WriteXdr for ScSpecTypeOption { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeResult { pub ok_type: Box, pub error_type: Box, @@ -5965,10 +5869,7 @@ impl WriteXdr for ScSpecTypeResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeVec { pub element_type: Box, } @@ -6011,10 +5912,7 @@ impl WriteXdr for ScSpecTypeVec { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeMap { pub key_type: Box, pub value_type: Box, @@ -6059,10 +5957,7 @@ impl WriteXdr for ScSpecTypeMap { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeTuple { pub value_types: VecM, } @@ -6104,10 +5999,7 @@ impl WriteXdr for ScSpecTypeTuple { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeBytesN { pub n: u32, } @@ -6149,10 +6041,7 @@ impl WriteXdr for ScSpecTypeBytesN { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeUdt { pub name: StringM<60>, } @@ -6227,10 +6116,7 @@ impl WriteXdr for ScSpecTypeUdt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecTypeDef { Val, @@ -6503,10 +6389,7 @@ impl WriteXdr for ScSpecTypeDef { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtStructFieldV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6557,10 +6440,7 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtStructV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6612,10 +6492,7 @@ impl WriteXdr for ScSpecUdtStructV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionCaseVoidV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6662,10 +6539,7 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionCaseTupleV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6715,10 +6589,7 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecUdtUnionCaseV0Kind { VoidV0 = 0, @@ -6829,10 +6700,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecUdtUnionCaseV0 { VoidV0(ScSpecUdtUnionCaseVoidV0), @@ -6946,10 +6814,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7002,10 +6867,7 @@ impl WriteXdr for ScSpecUdtUnionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -7056,10 +6918,7 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7112,10 +6971,7 @@ impl WriteXdr for ScSpecUdtEnumV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtErrorEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -7166,10 +7022,7 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtErrorEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7222,10 +7075,7 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecFunctionInputV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -7276,10 +7126,7 @@ impl WriteXdr for ScSpecFunctionInputV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecFunctionV0 { pub doc: StringM<1024>, pub name: ScSymbol, @@ -7335,10 +7182,7 @@ impl WriteXdr for ScSpecFunctionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecEntryKind { FunctionV0 = 0, @@ -7473,10 +7317,7 @@ impl WriteXdr for ScSpecEntryKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecEntry { FunctionV0(ScSpecFunctionV0), @@ -7660,10 +7501,7 @@ impl WriteXdr for ScSpecEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScValType { Bool = 0, @@ -7883,10 +7721,7 @@ impl WriteXdr for ScValType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScErrorType { Contract = 0, @@ -8038,10 +7873,7 @@ impl WriteXdr for ScErrorType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScErrorCode { ArithDomain = 0, @@ -8203,10 +8035,7 @@ impl WriteXdr for ScErrorCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScError { Contract(u32), @@ -8364,10 +8193,7 @@ impl WriteXdr for ScError { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UInt128Parts { pub hi: u64, pub lo: u64, @@ -8412,10 +8238,7 @@ impl WriteXdr for UInt128Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Int128Parts { pub hi: i64, pub lo: u64, @@ -8462,10 +8285,7 @@ impl WriteXdr for Int128Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UInt256Parts { pub hi_hi: u64, pub hi_lo: u64, @@ -8518,10 +8338,7 @@ impl WriteXdr for UInt256Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Int256Parts { pub hi_hi: i64, pub hi_lo: u64, @@ -8574,10 +8391,7 @@ impl WriteXdr for Int256Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractExecutableType { Wasm = 0, @@ -8688,10 +8502,7 @@ impl WriteXdr for ContractExecutableType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractExecutable { Wasm(Hash), @@ -8800,10 +8611,7 @@ impl WriteXdr for ContractExecutable { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScAddressType { Account = 0, @@ -8910,10 +8718,7 @@ impl WriteXdr for ScAddressType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScAddress { Account(AccountId), @@ -9023,10 +8828,7 @@ pub const SCSYMBOL_LIMIT: u64 = 32; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScVec(pub VecM); @@ -9132,10 +8934,7 @@ impl AsRef<[ScVal]> for ScVec { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScMap(pub VecM); @@ -9241,10 +9040,7 @@ impl AsRef<[ScMapEntry]> for ScMap { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScBytes(pub BytesM); @@ -9350,10 +9146,7 @@ impl AsRef<[u8]> for ScBytes { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScString(pub StringM); @@ -9459,10 +9252,7 @@ impl AsRef<[u8]> for ScString { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScSymbol(pub StringM<32>); @@ -9569,10 +9359,7 @@ impl AsRef<[u8]> for ScSymbol { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScNonceKey { pub nonce: i64, } @@ -9614,10 +9401,7 @@ impl WriteXdr for ScNonceKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScContractInstance { pub executable: ContractExecutable, pub storage: Option, @@ -9720,10 +9504,7 @@ impl WriteXdr for ScContractInstance { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScVal { Bool(bool), @@ -9976,10 +9757,7 @@ impl WriteXdr for ScVal { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScMapEntry { pub key: ScVal, pub val: ScVal, @@ -10028,10 +9806,7 @@ impl WriteXdr for ScMapEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StoredTransactionSet { V0(TransactionSet), @@ -10137,10 +9912,7 @@ impl WriteXdr for StoredTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StoredDebugTransactionSet { pub tx_set: StoredTransactionSet, pub ledger_seq: u32, @@ -10190,10 +9962,7 @@ impl WriteXdr for StoredDebugTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PersistedScpStateV0 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -10243,10 +10012,7 @@ impl WriteXdr for PersistedScpStateV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PersistedScpStateV1 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -10295,10 +10061,7 @@ impl WriteXdr for PersistedScpStateV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PersistedScpState { V0(PersistedScpStateV0), @@ -10398,10 +10161,6 @@ impl WriteXdr for PersistedScpState { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Thresholds(pub [u8; 4]); impl core::fmt::Debug for Thresholds { @@ -10432,6 +10191,37 @@ impl core::str::FromStr for Thresholds { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Thresholds { + fn schema_name() -> String { + "Thresholds".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: Thresholds) -> Self { @@ -10522,10 +10312,7 @@ impl AsRef<[u8]> for Thresholds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct String32(pub StringM<32>); @@ -10631,10 +10418,7 @@ impl AsRef<[u8]> for String32 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct String64(pub StringM<64>); @@ -10739,10 +10523,7 @@ impl AsRef<[u8]> for String64 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct SequenceNumber(pub i64); @@ -10799,10 +10580,7 @@ impl WriteXdr for SequenceNumber { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct DataValue(pub BytesM<64>); @@ -10907,10 +10685,7 @@ impl AsRef<[u8]> for DataValue { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct PoolId(pub Hash); @@ -10965,10 +10740,6 @@ impl WriteXdr for PoolId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct AssetCode4(pub [u8; 4]); impl core::fmt::Debug for AssetCode4 { @@ -10982,6 +10753,37 @@ impl core::fmt::Debug for AssetCode4 { Ok(()) } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for AssetCode4 { + fn schema_name() -> String { + "AssetCode4".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: AssetCode4) -> Self { @@ -11070,10 +10872,6 @@ impl AsRef<[u8]> for AssetCode4 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct AssetCode12(pub [u8; 12]); impl core::fmt::Debug for AssetCode12 { @@ -11087,6 +10885,37 @@ impl core::fmt::Debug for AssetCode12 { Ok(()) } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for AssetCode12 { + fn schema_name() -> String { + "AssetCode12".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(12 * 2), + min_length: Some(12 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 12] { #[must_use] fn from(x: AssetCode12) -> Self { @@ -11183,10 +11012,7 @@ impl AsRef<[u8]> for AssetCode12 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AssetType { Native = 0, @@ -11308,10 +11134,7 @@ impl WriteXdr for AssetType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AssetCode { CreditAlphanum4(AssetCode4), @@ -11416,10 +11239,7 @@ impl WriteXdr for AssetCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AlphaNum4 { pub asset_code: AssetCode4, pub issuer: AccountId, @@ -11465,10 +11285,7 @@ impl WriteXdr for AlphaNum4 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AlphaNum12 { pub asset_code: AssetCode12, pub issuer: AccountId, @@ -11523,10 +11340,7 @@ impl WriteXdr for AlphaNum12 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Asset { Native, @@ -11640,10 +11454,7 @@ impl WriteXdr for Asset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Price { pub n: i32, pub d: i32, @@ -11689,10 +11500,7 @@ impl WriteXdr for Price { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Liabilities { pub buying: i64, pub selling: i64, @@ -11741,10 +11549,7 @@ impl WriteXdr for Liabilities { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ThresholdIndexes { MasterWeight = 0, @@ -11869,10 +11674,7 @@ impl WriteXdr for ThresholdIndexes { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerEntryType { Account = 0, @@ -12023,10 +11825,7 @@ impl WriteXdr for LedgerEntryType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Signer { pub key: SignerKey, pub weight: u32, @@ -12085,10 +11884,7 @@ impl WriteXdr for Signer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AccountFlags { RequiredFlag = 1, @@ -12229,10 +12025,7 @@ pub const MAX_SIGNERS: u64 = 20; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct SponsorshipDescriptor(pub Option); @@ -12299,10 +12092,7 @@ impl WriteXdr for SponsorshipDescriptor { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV3 { pub ext: ExtensionPoint, pub seq_ledger: u32, @@ -12354,10 +12144,7 @@ impl WriteXdr for AccountEntryExtensionV3 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV2Ext { V0, @@ -12472,10 +12259,7 @@ impl WriteXdr for AccountEntryExtensionV2Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV2 { pub num_sponsored: u32, pub num_sponsoring: u32, @@ -12530,10 +12314,7 @@ impl WriteXdr for AccountEntryExtensionV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV1Ext { V0, @@ -12646,10 +12427,7 @@ impl WriteXdr for AccountEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV1 { pub liabilities: Liabilities, pub ext: AccountEntryExtensionV1Ext, @@ -12698,10 +12476,7 @@ impl WriteXdr for AccountEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExt { V0, @@ -12829,10 +12604,7 @@ impl WriteXdr for AccountEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntry { pub account_id: AccountId, pub balance: i64, @@ -12909,10 +12681,7 @@ impl WriteXdr for AccountEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TrustLineFlags { AuthorizedFlag = 1, @@ -13052,10 +12821,7 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolType { LiquidityPoolConstantProduct = 0, @@ -13169,10 +12935,7 @@ impl WriteXdr for LiquidityPoolType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineAsset { Native, @@ -13294,10 +13057,7 @@ impl WriteXdr for TrustLineAsset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExtensionV2Ext { V0, @@ -13403,10 +13163,7 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntryExtensionV2 { pub liquidity_pool_use_count: i32, pub ext: TrustLineEntryExtensionV2Ext, @@ -13455,10 +13212,7 @@ impl WriteXdr for TrustLineEntryExtensionV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryV1Ext { V0, @@ -13571,10 +13325,7 @@ impl WriteXdr for TrustLineEntryV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntryV1 { pub liabilities: Liabilities, pub ext: TrustLineEntryV1Ext, @@ -13635,10 +13386,7 @@ impl WriteXdr for TrustLineEntryV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExt { V0, @@ -13770,10 +13518,7 @@ impl WriteXdr for TrustLineEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntry { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -13833,10 +13578,7 @@ impl WriteXdr for TrustLineEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OfferEntryFlags { PassiveFlag = 1, @@ -13947,10 +13689,7 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OfferEntryExt { V0, @@ -14069,10 +13808,7 @@ impl WriteXdr for OfferEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct OfferEntry { pub seller_id: AccountId, pub offer_id: i64, @@ -14137,10 +13873,7 @@ impl WriteXdr for OfferEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum DataEntryExt { V0, @@ -14249,10 +13982,7 @@ impl WriteXdr for DataEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DataEntry { pub account_id: AccountId, pub data_name: String64, @@ -14309,10 +14039,7 @@ impl WriteXdr for DataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimPredicateType { Unconditional = 0, @@ -14455,10 +14182,7 @@ impl WriteXdr for ClaimPredicateType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimPredicate { Unconditional, @@ -14601,10 +14325,7 @@ impl WriteXdr for ClaimPredicate { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimantType { ClaimantTypeV0 = 0, @@ -14706,10 +14427,7 @@ impl WriteXdr for ClaimantType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimantV0 { pub destination: AccountId, pub predicate: ClaimPredicate, @@ -14760,10 +14478,7 @@ impl WriteXdr for ClaimantV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Claimant { ClaimantTypeV0(ClaimantV0), @@ -14863,10 +14578,7 @@ impl WriteXdr for Claimant { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimableBalanceIdType { ClaimableBalanceIdTypeV0 = 0, @@ -14970,10 +14682,7 @@ impl WriteXdr for ClaimableBalanceIdType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceId { ClaimableBalanceIdTypeV0(Hash), @@ -15078,10 +14787,7 @@ impl WriteXdr for ClaimableBalanceId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimableBalanceFlags { ClaimableBalanceClawbackEnabledFlag = 1, @@ -15193,10 +14899,7 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExtensionV1Ext { V0, @@ -15302,10 +15005,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimableBalanceEntryExtensionV1 { pub ext: ClaimableBalanceEntryExtensionV1Ext, pub flags: u32, @@ -15354,10 +15054,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExt { V0, @@ -15481,10 +15178,7 @@ impl WriteXdr for ClaimableBalanceEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimableBalanceEntry { pub balance_id: ClaimableBalanceId, pub claimants: VecM, @@ -15540,10 +15234,7 @@ impl WriteXdr for ClaimableBalanceEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolConstantProductParameters { pub asset_a: Asset, pub asset_b: Asset, @@ -15597,10 +15288,7 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolEntryConstantProduct { pub params: LiquidityPoolConstantProductParameters, pub reserve_a: i64, @@ -15665,10 +15353,7 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolEntryBody { LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct), @@ -15789,10 +15474,7 @@ impl WriteXdr for LiquidityPoolEntryBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolEntry { pub liquidity_pool_id: PoolId, pub body: LiquidityPoolEntryBody, @@ -15838,10 +15520,7 @@ impl WriteXdr for LiquidityPoolEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractDataDurability { Temporary = 0, @@ -15952,10 +15631,7 @@ impl WriteXdr for ContractDataDurability { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractDataEntry { pub ext: ExtensionPoint, pub contract: ScAddress, @@ -16011,10 +15687,7 @@ impl WriteXdr for ContractDataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeEntry { pub ext: ExtensionPoint, pub hash: Hash, @@ -16063,10 +15736,7 @@ impl WriteXdr for ContractCodeEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TtlEntry { pub key_hash: Hash, pub live_until_ledger_seq: u32, @@ -16113,10 +15783,7 @@ impl WriteXdr for TtlEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExtensionV1Ext { V0, @@ -16222,10 +15889,7 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerEntryExtensionV1 { pub sponsoring_id: SponsorshipDescriptor, pub ext: LedgerEntryExtensionV1Ext, @@ -16290,10 +15954,7 @@ impl WriteXdr for LedgerEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryData { Account(AccountEntry), @@ -16473,10 +16134,7 @@ impl WriteXdr for LedgerEntryData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExt { V0, @@ -16615,10 +16273,7 @@ impl WriteXdr for LedgerEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerEntry { pub last_modified_ledger_seq: u32, pub data: LedgerEntryData, @@ -16666,10 +16321,7 @@ impl WriteXdr for LedgerEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyAccount { pub account_id: AccountId, } @@ -16712,10 +16364,7 @@ impl WriteXdr for LedgerKeyAccount { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyTrustLine { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -16761,10 +16410,7 @@ impl WriteXdr for LedgerKeyTrustLine { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyOffer { pub seller_id: AccountId, pub offer_id: i64, @@ -16810,10 +16456,7 @@ impl WriteXdr for LedgerKeyOffer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyData { pub account_id: AccountId, pub data_name: String64, @@ -16858,10 +16501,7 @@ impl WriteXdr for LedgerKeyData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyClaimableBalance { pub balance_id: ClaimableBalanceId, } @@ -16903,10 +16543,7 @@ impl WriteXdr for LedgerKeyClaimableBalance { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyLiquidityPool { pub liquidity_pool_id: PoolId, } @@ -16950,10 +16587,7 @@ impl WriteXdr for LedgerKeyLiquidityPool { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyContractData { pub contract: ScAddress, pub key: ScVal, @@ -17001,10 +16635,7 @@ impl WriteXdr for LedgerKeyContractData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyContractCode { pub hash: Hash, } @@ -17046,10 +16677,7 @@ impl WriteXdr for LedgerKeyContractCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyConfigSetting { pub config_setting_id: ConfigSettingId, } @@ -17092,10 +16720,7 @@ impl WriteXdr for LedgerKeyConfigSetting { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyTtl { pub key_hash: Hash, } @@ -17198,10 +16823,7 @@ impl WriteXdr for LedgerKeyTtl { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerKey { Account(LedgerKeyAccount), @@ -17387,10 +17009,7 @@ impl WriteXdr for LedgerKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum EnvelopeType { TxV0 = 0, @@ -17538,10 +17157,7 @@ impl WriteXdr for EnvelopeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct UpgradeType(pub BytesM<128>); @@ -17651,10 +17267,7 @@ impl AsRef<[u8]> for UpgradeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum StellarValueType { Basic = 0, @@ -17759,10 +17372,7 @@ impl WriteXdr for StellarValueType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseValueSignature { pub node_id: NodeId, pub signature: Signature, @@ -17811,10 +17421,7 @@ impl WriteXdr for LedgerCloseValueSignature { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StellarValueExt { Basic, @@ -17936,10 +17543,7 @@ impl WriteXdr for StellarValueExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StellarValue { pub tx_set_hash: Hash, pub close_time: TimePoint, @@ -18001,10 +17605,7 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerHeaderFlags { TradingFlag = 1, @@ -18117,10 +17718,7 @@ impl WriteXdr for LedgerHeaderFlags { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExtensionV1Ext { V0, @@ -18226,10 +17824,7 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeaderExtensionV1 { pub flags: u32, pub ext: LedgerHeaderExtensionV1Ext, @@ -18278,10 +17873,7 @@ impl WriteXdr for LedgerHeaderExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExt { V0, @@ -18420,10 +18012,7 @@ impl WriteXdr for LedgerHeaderExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeader { pub ledger_version: u32, pub previous_ledger_hash: Hash, @@ -18514,10 +18103,7 @@ impl WriteXdr for LedgerHeader { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerUpgradeType { Version = 1, @@ -18652,10 +18238,7 @@ impl WriteXdr for LedgerUpgradeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigUpgradeSetKey { pub contract_id: Hash, pub content_hash: Hash, @@ -18717,10 +18300,7 @@ impl WriteXdr for ConfigUpgradeSetKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerUpgrade { Version(u32), @@ -18866,10 +18446,7 @@ impl WriteXdr for LedgerUpgrade { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigUpgradeSet { pub updated_entry: VecM, } @@ -18917,10 +18494,7 @@ impl WriteXdr for ConfigUpgradeSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BucketEntryType { Metaentry = -1, @@ -19038,10 +18612,7 @@ impl WriteXdr for BucketEntryType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BucketMetadataExt { V0, @@ -19149,10 +18720,7 @@ impl WriteXdr for BucketMetadataExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BucketMetadata { pub ledger_version: u32, pub ext: BucketMetadataExt, @@ -19205,10 +18773,7 @@ impl WriteXdr for BucketMetadata { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BucketEntry { Liveentry(LedgerEntry), @@ -19331,10 +18896,7 @@ impl WriteXdr for BucketEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TxSetComponentType { TxsetCompTxsMaybeDiscountedFee = 0, @@ -19437,10 +18999,7 @@ impl WriteXdr for TxSetComponentType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TxSetComponentTxsMaybeDiscountedFee { pub base_fee: Option, pub txs: VecM, @@ -19491,10 +19050,7 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TxSetComponent { TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee), @@ -19602,10 +19158,7 @@ impl WriteXdr for TxSetComponent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionPhase { V0(VecM), @@ -19705,10 +19258,7 @@ impl WriteXdr for TransactionPhase { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSet { pub previous_ledger_hash: Hash, pub txs: VecM, @@ -19754,10 +19304,7 @@ impl WriteXdr for TransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSetV1 { pub previous_ledger_hash: Hash, pub phases: VecM, @@ -19805,10 +19352,7 @@ impl WriteXdr for TransactionSetV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum GeneralizedTransactionSet { V1(TransactionSetV1), @@ -19908,10 +19452,7 @@ impl WriteXdr for GeneralizedTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultPair { pub transaction_hash: Hash, pub result: TransactionResult, @@ -19956,10 +19497,7 @@ impl WriteXdr for TransactionResultPair { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultSet { pub results: VecM, } @@ -20005,10 +19543,7 @@ impl WriteXdr for TransactionResultSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryEntryExt { V0, @@ -20123,10 +19658,7 @@ impl WriteXdr for TransactionHistoryEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionHistoryEntry { pub ledger_seq: u32, pub tx_set: TransactionSet, @@ -20176,10 +19708,7 @@ impl WriteXdr for TransactionHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryResultEntryExt { V0, @@ -20287,10 +19816,7 @@ impl WriteXdr for TransactionHistoryResultEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionHistoryResultEntry { pub ledger_seq: u32, pub tx_result_set: TransactionResultSet, @@ -20340,10 +19866,7 @@ impl WriteXdr for TransactionHistoryResultEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderHistoryEntryExt { V0, @@ -20451,10 +19974,7 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeaderHistoryEntry { pub hash: Hash, pub header: LedgerHeader, @@ -20503,10 +20023,7 @@ impl WriteXdr for LedgerHeaderHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerScpMessages { pub ledger_seq: u32, pub messages: VecM, @@ -20552,10 +20069,7 @@ impl WriteXdr for LedgerScpMessages { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpHistoryEntryV0 { pub quorum_sets: VecM, pub ledger_messages: LedgerScpMessages, @@ -20602,10 +20116,7 @@ impl WriteXdr for ScpHistoryEntryV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScpHistoryEntry { V0(ScpHistoryEntryV0), @@ -20708,10 +20219,7 @@ impl WriteXdr for ScpHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerEntryChangeType { Created = 0, @@ -20834,10 +20342,7 @@ impl WriteXdr for LedgerEntryChangeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryChange { Created(LedgerEntry), @@ -20954,10 +20459,7 @@ impl WriteXdr for LedgerEntryChange { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct LedgerEntryChanges(pub VecM); @@ -21065,10 +20567,7 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct OperationMeta { pub changes: LedgerEntryChanges, } @@ -21111,10 +20610,7 @@ impl WriteXdr for OperationMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV1 { pub tx_changes: LedgerEntryChanges, pub operations: VecM, @@ -21163,10 +20659,7 @@ impl WriteXdr for TransactionMetaV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV2 { pub tx_changes_before: LedgerEntryChanges, pub operations: VecM, @@ -21217,10 +20710,7 @@ impl WriteXdr for TransactionMetaV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractEventType { System = 0, @@ -21332,10 +20822,7 @@ impl WriteXdr for ContractEventType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractEventV0 { pub topics: VecM, pub data: ScVal, @@ -21386,10 +20873,7 @@ impl WriteXdr for ContractEventV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractEventBody { V0(ContractEventV0), @@ -21504,10 +20988,7 @@ impl WriteXdr for ContractEventBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractEvent { pub ext: ExtensionPoint, pub contract_id: Option, @@ -21559,10 +21040,7 @@ impl WriteXdr for ContractEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DiagnosticEvent { pub in_successful_contract_call: bool, pub event: ContractEvent, @@ -21616,10 +21094,7 @@ impl WriteXdr for DiagnosticEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionMeta { pub ext: ExtensionPoint, pub events: VecM, @@ -21678,10 +21153,7 @@ impl WriteXdr for SorobanTransactionMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV3 { pub ext: ExtensionPoint, pub tx_changes_before: LedgerEntryChanges, @@ -21736,10 +21208,7 @@ impl WriteXdr for TransactionMetaV3 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeHostFunctionSuccessPreImage { pub return_value: ScVal, pub events: VecM, @@ -21792,10 +21261,7 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionMeta { V0(VecM), @@ -21911,10 +21377,7 @@ impl WriteXdr for TransactionMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultMeta { pub result: TransactionResultPair, pub fee_processing: LedgerEntryChanges, @@ -21963,10 +21426,7 @@ impl WriteXdr for TransactionResultMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UpgradeEntryMeta { pub upgrade: LedgerUpgrade, pub changes: LedgerEntryChanges, @@ -22024,10 +21484,7 @@ impl WriteXdr for UpgradeEntryMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaV0 { pub ledger_header: LedgerHeaderHistoryEntry, pub tx_set: TransactionSet, @@ -22109,10 +21566,7 @@ impl WriteXdr for LedgerCloseMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaV1 { pub ext: ExtensionPoint, pub ledger_header: LedgerHeaderHistoryEntry, @@ -22182,10 +21636,7 @@ impl WriteXdr for LedgerCloseMetaV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMeta { V0(LedgerCloseMetaV0), @@ -22294,10 +21745,7 @@ impl WriteXdr for LedgerCloseMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ErrorCode { Misc = 0, @@ -22417,10 +21865,7 @@ impl WriteXdr for ErrorCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SError { pub code: ErrorCode, pub msg: StringM<100>, @@ -22465,10 +21910,7 @@ impl WriteXdr for SError { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SendMore { pub num_messages: u32, } @@ -22511,10 +21953,7 @@ impl WriteXdr for SendMore { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SendMoreExtended { pub num_messages: u32, pub num_bytes: u32, @@ -22561,10 +22000,7 @@ impl WriteXdr for SendMoreExtended { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AuthCert { pub pubkey: Curve25519Public, pub expiration: u64, @@ -22620,10 +22056,7 @@ impl WriteXdr for AuthCert { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Hello { pub ledger_version: u32, pub overlay_version: u32, @@ -22697,10 +22130,7 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Auth { pub flags: i32, } @@ -22744,10 +22174,7 @@ impl WriteXdr for Auth { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum IpAddrType { IPv4 = 0, @@ -22855,10 +22282,7 @@ impl WriteXdr for IpAddrType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PeerAddressIp { IPv4([u8; 4]), @@ -22971,10 +22395,7 @@ impl WriteXdr for PeerAddressIp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PeerAddress { pub ip: PeerAddressIp, pub port: u32, @@ -23052,10 +22473,7 @@ impl WriteXdr for PeerAddress { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum MessageType { ErrorMsg = 0, @@ -23256,10 +22674,7 @@ impl WriteXdr for MessageType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DontHave { pub type_: MessageType, pub req_hash: Uint256, @@ -23305,10 +22720,7 @@ impl WriteXdr for DontHave { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SurveyMessageCommandType { SurveyTopology = 0, @@ -23411,10 +22823,7 @@ impl WriteXdr for SurveyMessageCommandType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SurveyMessageResponseType { V0 = 0, @@ -23523,10 +22932,7 @@ impl WriteXdr for SurveyMessageResponseType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SurveyRequestMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -23581,10 +22987,7 @@ impl WriteXdr for SurveyRequestMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignedSurveyRequestMessage { pub request_signature: Signature, pub request: SurveyRequestMessage, @@ -23627,10 +23030,7 @@ impl WriteXdr for SignedSurveyRequestMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct EncryptedBody(pub BytesM<64000>); @@ -23742,10 +23142,7 @@ impl AsRef<[u8]> for EncryptedBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SurveyResponseMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -23800,10 +23197,7 @@ impl WriteXdr for SurveyResponseMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignedSurveyResponseMessage { pub response_signature: Signature, pub response: SurveyResponseMessage, @@ -23864,10 +23258,7 @@ impl WriteXdr for SignedSurveyResponseMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PeerStats { pub id: NodeId, pub version_str: StringM<100>, @@ -23949,10 +23340,7 @@ impl WriteXdr for PeerStats { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct PeerStatList(pub VecM); @@ -24064,10 +23452,7 @@ impl AsRef<[PeerStats]> for PeerStatList { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TopologyResponseBodyV0 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -24125,10 +23510,7 @@ impl WriteXdr for TopologyResponseBodyV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TopologyResponseBodyV1 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -24189,10 +23571,7 @@ impl WriteXdr for TopologyResponseBodyV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SurveyResponseBody { V0(TopologyResponseBodyV0), @@ -24304,10 +23683,7 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TxAdvertVector(pub VecM); @@ -24415,10 +23791,7 @@ impl AsRef<[Hash]> for TxAdvertVector { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FloodAdvert { pub tx_hashes: TxAdvertVector, } @@ -24466,10 +23839,7 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TxDemandVector(pub VecM); @@ -24577,10 +23947,7 @@ impl AsRef<[Hash]> for TxDemandVector { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FloodDemand { pub tx_hashes: TxDemandVector, } @@ -24669,10 +24036,7 @@ impl WriteXdr for FloodDemand { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StellarMessage { ErrorMsg(SError), @@ -24918,10 +24282,7 @@ impl WriteXdr for StellarMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AuthenticatedMessageV0 { pub sequence: u64, pub message: StellarMessage, @@ -24976,10 +24337,7 @@ impl WriteXdr for AuthenticatedMessageV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AuthenticatedMessage { V0(AuthenticatedMessageV0), @@ -25088,10 +24446,7 @@ pub const MAX_OPS_PER_TX: u64 = 100; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolParameters { LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters), @@ -25196,10 +24551,7 @@ impl WriteXdr for LiquidityPoolParameters { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct MuxedAccountMed25519 { pub id: u64, pub ed25519: Uint256, @@ -25251,10 +24603,7 @@ impl WriteXdr for MuxedAccountMed25519 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { Ed25519(Uint256), @@ -25361,10 +24710,7 @@ impl WriteXdr for MuxedAccount { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DecoratedSignature { pub hint: SignatureHint, pub signature: Signature, @@ -25436,10 +24782,7 @@ impl WriteXdr for DecoratedSignature { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OperationType { CreateAccount = 0, @@ -25675,10 +25018,7 @@ impl WriteXdr for OperationType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateAccountOp { pub destination: AccountId, pub starting_balance: i64, @@ -25725,10 +25065,7 @@ impl WriteXdr for CreateAccountOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PaymentOp { pub destination: MuxedAccount, pub asset: Asset, @@ -25785,10 +25122,7 @@ impl WriteXdr for PaymentOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictReceiveOp { pub send_asset: Asset, pub send_max: i64, @@ -25854,10 +25188,7 @@ impl WriteXdr for PathPaymentStrictReceiveOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictSendOp { pub send_asset: Asset, pub send_amount: i64, @@ -25920,10 +25251,7 @@ impl WriteXdr for PathPaymentStrictSendOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -25984,10 +25312,7 @@ impl WriteXdr for ManageSellOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageBuyOfferOp { pub selling: Asset, pub buying: Asset, @@ -26044,10 +25369,7 @@ impl WriteXdr for ManageBuyOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreatePassiveSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -26113,10 +25435,7 @@ impl WriteXdr for CreatePassiveSellOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SetOptionsOp { pub inflation_dest: Option, pub clear_flags: Option, @@ -26195,10 +25514,7 @@ impl WriteXdr for SetOptionsOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustAsset { Native, @@ -26321,10 +25637,7 @@ impl WriteXdr for ChangeTrustAsset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ChangeTrustOp { pub line: ChangeTrustAsset, pub limit: i64, @@ -26373,10 +25686,7 @@ impl WriteXdr for ChangeTrustOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AllowTrustOp { pub trustor: AccountId, pub asset: AssetCode, @@ -26425,10 +25735,7 @@ impl WriteXdr for AllowTrustOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageDataOp { pub data_name: String64, pub data_value: Option, @@ -26473,10 +25780,7 @@ impl WriteXdr for ManageDataOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BumpSequenceOp { pub bump_to: SequenceNumber, } @@ -26520,10 +25824,7 @@ impl WriteXdr for BumpSequenceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateClaimableBalanceOp { pub asset: Asset, pub amount: i64, @@ -26571,10 +25872,7 @@ impl WriteXdr for CreateClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -26616,10 +25914,7 @@ impl WriteXdr for ClaimClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BeginSponsoringFutureReservesOp { pub sponsored_id: AccountId, } @@ -26663,10 +25958,7 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RevokeSponsorshipType { LedgerEntry = 0, @@ -26774,10 +26066,7 @@ impl WriteXdr for RevokeSponsorshipType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct RevokeSponsorshipOpSigner { pub account_id: AccountId, pub signer_key: SignerKey, @@ -26830,10 +26119,7 @@ impl WriteXdr for RevokeSponsorshipOpSigner { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipOp { LedgerEntry(LedgerKey), @@ -26944,10 +26230,7 @@ impl WriteXdr for RevokeSponsorshipOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClawbackOp { pub asset: Asset, pub from: MuxedAccount, @@ -26995,10 +26278,7 @@ impl WriteXdr for ClawbackOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClawbackClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -27044,10 +26324,7 @@ impl WriteXdr for ClawbackClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SetTrustLineFlagsOp { pub trustor: AccountId, pub asset: Asset, @@ -27110,10 +26387,7 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolDepositOp { pub liquidity_pool_id: PoolId, pub max_amount_a: i64, @@ -27170,10 +26444,7 @@ impl WriteXdr for LiquidityPoolDepositOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolWithdrawOp { pub liquidity_pool_id: PoolId, pub amount: i64, @@ -27227,10 +26498,7 @@ impl WriteXdr for LiquidityPoolWithdrawOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum HostFunctionType { InvokeContract = 0, @@ -27344,10 +26612,7 @@ impl WriteXdr for HostFunctionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractIdPreimageType { Address = 0, @@ -27455,10 +26720,7 @@ impl WriteXdr for ContractIdPreimageType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractIdPreimageFromAddress { pub address: ScAddress, pub salt: Uint256, @@ -27511,10 +26773,7 @@ impl WriteXdr for ContractIdPreimageFromAddress { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractIdPreimage { Address(ContractIdPreimageFromAddress), @@ -27624,10 +26883,7 @@ impl WriteXdr for ContractIdPreimage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateContractArgs { pub contract_id_preimage: ContractIdPreimage, pub executable: ContractExecutable, @@ -27673,10 +26929,7 @@ impl WriteXdr for CreateContractArgs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeContractArgs { pub contract_address: ScAddress, pub function_name: ScSymbol, @@ -27730,10 +26983,7 @@ impl WriteXdr for InvokeContractArgs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum HostFunction { InvokeContract(InvokeContractArgs), @@ -27855,10 +27105,7 @@ impl WriteXdr for HostFunction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SorobanAuthorizedFunctionType { ContractFn = 0, @@ -27969,10 +27216,7 @@ impl WriteXdr for SorobanAuthorizedFunctionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanAuthorizedFunction { ContractFn(InvokeContractArgs), @@ -28085,10 +27329,7 @@ impl WriteXdr for SorobanAuthorizedFunction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAuthorizedInvocation { pub function: SorobanAuthorizedFunction, pub sub_invocations: VecM, @@ -28136,10 +27377,7 @@ impl WriteXdr for SorobanAuthorizedInvocation { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAddressCredentials { pub address: ScAddress, pub nonce: i64, @@ -28192,10 +27430,7 @@ impl WriteXdr for SorobanAddressCredentials { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SorobanCredentialsType { SourceAccount = 0, @@ -28306,10 +27541,7 @@ impl WriteXdr for SorobanCredentialsType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanCredentials { SourceAccount, @@ -28419,10 +27651,7 @@ impl WriteXdr for SorobanCredentials { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAuthorizationEntry { pub credentials: SorobanCredentials, pub root_invocation: SorobanAuthorizedInvocation, @@ -28470,10 +27699,7 @@ impl WriteXdr for SorobanAuthorizationEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeHostFunctionOp { pub host_function: HostFunction, pub auth: VecM, @@ -28519,10 +27745,7 @@ impl WriteXdr for InvokeHostFunctionOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ExtendFootprintTtlOp { pub ext: ExtensionPoint, pub extend_to: u32, @@ -28567,10 +27790,7 @@ impl WriteXdr for ExtendFootprintTtlOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct RestoreFootprintOp { pub ext: ExtensionPoint, } @@ -28666,10 +27886,7 @@ impl WriteXdr for RestoreFootprintOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationBody { CreateAccount(CreateAccountOp), @@ -29050,10 +28267,7 @@ impl WriteXdr for OperationBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Operation { pub source_account: Option, pub body: OperationBody, @@ -29100,10 +28314,7 @@ impl WriteXdr for Operation { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageOperationId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -29155,10 +28366,7 @@ impl WriteXdr for HashIdPreimageOperationId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageRevokeId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -29213,10 +28421,7 @@ impl WriteXdr for HashIdPreimageRevokeId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageContractId { pub network_id: Hash, pub contract_id_preimage: ContractIdPreimage, @@ -29264,10 +28469,7 @@ impl WriteXdr for HashIdPreimageContractId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageSorobanAuthorization { pub network_id: Hash, pub nonce: i64, @@ -29348,10 +28550,7 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum HashIdPreimage { OpId(HashIdPreimageOperationId), @@ -29486,10 +28685,7 @@ impl WriteXdr for HashIdPreimage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum MemoType { None = 0, @@ -29618,10 +28814,7 @@ impl WriteXdr for MemoType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Memo { None, @@ -29747,10 +28940,7 @@ impl WriteXdr for Memo { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TimeBounds { pub min_time: TimePoint, pub max_time: TimePoint, @@ -29796,10 +28986,7 @@ impl WriteXdr for TimeBounds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerBounds { pub min_ledger: u32, pub max_ledger: u32, @@ -29872,10 +29059,7 @@ impl WriteXdr for LedgerBounds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PreconditionsV2 { pub time_bounds: Option, pub ledger_bounds: Option, @@ -29935,10 +29119,7 @@ impl WriteXdr for PreconditionsV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PreconditionType { None = 0, @@ -30055,10 +29236,7 @@ impl WriteXdr for PreconditionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Preconditions { None, @@ -30172,10 +29350,7 @@ impl WriteXdr for Preconditions { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerFootprint { pub read_only: VecM, pub read_write: VecM, @@ -30228,10 +29403,7 @@ impl WriteXdr for LedgerFootprint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanResources { pub footprint: LedgerFootprint, pub instructions: u32, @@ -30293,10 +29465,7 @@ impl WriteXdr for SorobanResources { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionData { pub ext: ExtensionPoint, pub resources: SorobanResources, @@ -30346,10 +29515,7 @@ impl WriteXdr for SorobanTransactionData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionV0Ext { V0, @@ -30459,10 +29625,7 @@ impl WriteXdr for TransactionV0Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV0 { pub source_account_ed25519: Uint256, pub fee: u32, @@ -30525,10 +29688,7 @@ impl WriteXdr for TransactionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV0Envelope { pub tx: TransactionV0, pub signatures: VecM, @@ -30577,10 +29737,7 @@ impl WriteXdr for TransactionV0Envelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionExt { V0, @@ -30708,10 +29865,7 @@ impl WriteXdr for TransactionExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Transaction { pub source_account: MuxedAccount, pub fee: u32, @@ -30774,10 +29928,7 @@ impl WriteXdr for Transaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV1Envelope { pub tx: Transaction, pub signatures: VecM, @@ -30824,10 +29975,7 @@ impl WriteXdr for TransactionV1Envelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionInnerTx { Tx(TransactionV1Envelope), @@ -30928,10 +30076,7 @@ impl WriteXdr for FeeBumpTransactionInnerTx { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionExt { V0, @@ -31043,10 +30188,7 @@ impl WriteXdr for FeeBumpTransactionExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FeeBumpTransaction { pub fee_source: MuxedAccount, pub fee: i64, @@ -31100,10 +30242,7 @@ impl WriteXdr for FeeBumpTransaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FeeBumpTransactionEnvelope { pub tx: FeeBumpTransaction, pub signatures: VecM, @@ -31154,10 +30293,7 @@ impl WriteXdr for FeeBumpTransactionEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionEnvelope { TxV0(TransactionV0Envelope), @@ -31277,10 +30413,7 @@ impl WriteXdr for TransactionEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionSignaturePayloadTaggedTransaction { Tx(Transaction), @@ -31393,10 +30526,7 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSignaturePayload { pub network_id: Hash, pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction, @@ -31444,10 +30574,7 @@ impl WriteXdr for TransactionSignaturePayload { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimAtomType { V0 = 0, @@ -31568,10 +30695,7 @@ impl WriteXdr for ClaimAtomType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimOfferAtomV0 { pub seller_ed25519: Uint256, pub offer_id: i64, @@ -31638,10 +30762,7 @@ impl WriteXdr for ClaimOfferAtomV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimOfferAtom { pub seller_id: AccountId, pub offer_id: i64, @@ -31706,10 +30827,7 @@ impl WriteXdr for ClaimOfferAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimLiquidityAtom { pub liquidity_pool_id: PoolId, pub asset_sold: Asset, @@ -31769,10 +30887,7 @@ impl WriteXdr for ClaimLiquidityAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimAtom { V0(ClaimOfferAtomV0), @@ -31896,10 +31011,7 @@ impl WriteXdr for ClaimAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CreateAccountResultCode { Success = 0, @@ -32031,10 +31143,7 @@ impl WriteXdr for CreateAccountResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum CreateAccountResult { Success, @@ -32178,10 +31287,7 @@ impl WriteXdr for CreateAccountResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PaymentResultCode { Success = 0, @@ -32343,10 +31449,7 @@ impl WriteXdr for PaymentResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PaymentResult { Success, @@ -32537,10 +31640,7 @@ impl WriteXdr for PaymentResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PathPaymentStrictReceiveResultCode { Success = 0, @@ -32707,10 +31807,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SimplePaymentResult { pub destination: AccountId, pub asset: Asset, @@ -32759,10 +31856,7 @@ impl WriteXdr for SimplePaymentResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictReceiveResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -32829,10 +31923,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictReceiveResult { Success(PathPaymentStrictReceiveResultSuccess), @@ -33046,10 +32137,7 @@ impl WriteXdr for PathPaymentStrictReceiveResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PathPaymentStrictSendResultCode { Success = 0, @@ -33215,10 +32303,7 @@ impl WriteXdr for PathPaymentStrictSendResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictSendResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -33284,10 +32369,7 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictSendResult { Success(PathPaymentStrictSendResultSuccess), @@ -33500,10 +32582,7 @@ impl WriteXdr for PathPaymentStrictSendResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageSellOfferResultCode { Success = 0, @@ -33671,10 +32750,7 @@ impl WriteXdr for ManageSellOfferResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageOfferEffect { Created = 0, @@ -33790,10 +32866,7 @@ impl WriteXdr for ManageOfferEffect { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageOfferSuccessResultOffer { Created(OfferEntry), @@ -33917,10 +32990,7 @@ impl WriteXdr for ManageOfferSuccessResultOffer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageOfferSuccessResult { pub offers_claimed: VecM, pub offer: ManageOfferSuccessResultOffer, @@ -33980,10 +33050,7 @@ impl WriteXdr for ManageOfferSuccessResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageSellOfferResult { Success(ManageOfferSuccessResult), @@ -34193,10 +33260,7 @@ impl WriteXdr for ManageSellOfferResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageBuyOfferResultCode { Success = 0, @@ -34376,10 +33440,7 @@ impl WriteXdr for ManageBuyOfferResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageBuyOfferResult { Success(ManageOfferSuccessResult), @@ -34582,10 +33643,7 @@ impl WriteXdr for ManageBuyOfferResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SetOptionsResultCode { Success = 0, @@ -34753,10 +33811,7 @@ impl WriteXdr for SetOptionsResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SetOptionsResult { Success, @@ -34944,10 +33999,7 @@ impl WriteXdr for SetOptionsResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ChangeTrustResultCode { Success = 0, @@ -35103,10 +34155,7 @@ impl WriteXdr for ChangeTrustResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustResult { Success, @@ -35278,10 +34327,7 @@ impl WriteXdr for ChangeTrustResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AllowTrustResultCode { Success = 0, @@ -35425,10 +34471,7 @@ impl WriteXdr for AllowTrustResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AllowTrustResult { Success, @@ -35584,10 +34627,7 @@ impl WriteXdr for AllowTrustResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AccountMergeResultCode { Success = 0, @@ -35737,10 +34777,7 @@ impl WriteXdr for AccountMergeResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountMergeResult { Success(i64), @@ -35896,10 +34933,7 @@ impl WriteXdr for AccountMergeResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum InflationResultCode { Success = 0, @@ -36005,10 +35039,7 @@ impl WriteXdr for InflationResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InflationPayout { pub destination: AccountId, pub amount: i64, @@ -36057,10 +35088,7 @@ impl WriteXdr for InflationPayout { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InflationResult { Success(VecM), @@ -36176,10 +35204,7 @@ impl WriteXdr for InflationResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageDataResultCode { Success = 0, @@ -36311,10 +35336,7 @@ impl WriteXdr for ManageDataResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageDataResult { Success, @@ -36449,10 +35471,7 @@ impl WriteXdr for ManageDataResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BumpSequenceResultCode { Success = 0, @@ -36563,10 +35582,7 @@ impl WriteXdr for BumpSequenceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BumpSequenceResult { Success, @@ -36679,10 +35695,7 @@ impl WriteXdr for BumpSequenceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CreateClaimableBalanceResultCode { Success = 0, @@ -36821,10 +35834,7 @@ impl WriteXdr for CreateClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum CreateClaimableBalanceResult { Success(ClaimableBalanceId), @@ -36971,10 +35981,7 @@ impl WriteXdr for CreateClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimClaimableBalanceResultCode { Success = 0, @@ -37112,10 +36119,7 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimClaimableBalanceResult { Success, @@ -37261,10 +36265,7 @@ impl WriteXdr for ClaimClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BeginSponsoringFutureReservesResultCode { Success = 0, @@ -37387,10 +36388,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BeginSponsoringFutureReservesResult { Success, @@ -37516,10 +36514,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum EndSponsoringFutureReservesResultCode { Success = 0, @@ -37631,10 +36626,7 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum EndSponsoringFutureReservesResult { Success, @@ -37751,10 +36743,7 @@ impl WriteXdr for EndSponsoringFutureReservesResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RevokeSponsorshipResultCode { Success = 0, @@ -37892,10 +36881,7 @@ impl WriteXdr for RevokeSponsorshipResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipResult { Success, @@ -38042,10 +37028,7 @@ impl WriteXdr for RevokeSponsorshipResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClawbackResultCode { Success = 0, @@ -38177,10 +37160,7 @@ impl WriteXdr for ClawbackResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClawbackResult { Success, @@ -38318,10 +37298,7 @@ impl WriteXdr for ClawbackResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClawbackClaimableBalanceResultCode { Success = 0, @@ -38444,10 +37421,7 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClawbackClaimableBalanceResult { Success, @@ -38578,10 +37552,7 @@ impl WriteXdr for ClawbackClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SetTrustLineFlagsResultCode { Success = 0, @@ -38719,10 +37690,7 @@ impl WriteXdr for SetTrustLineFlagsResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SetTrustLineFlagsResult { Success, @@ -38876,10 +37844,7 @@ impl WriteXdr for SetTrustLineFlagsResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolDepositResultCode { Success = 0, @@ -39029,10 +37994,7 @@ impl WriteXdr for LiquidityPoolDepositResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolDepositResult { Success, @@ -39197,10 +38159,7 @@ impl WriteXdr for LiquidityPoolDepositResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolWithdrawResultCode { Success = 0, @@ -39338,10 +38297,7 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolWithdrawResult { Success, @@ -39489,10 +38445,7 @@ impl WriteXdr for LiquidityPoolWithdrawResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum InvokeHostFunctionResultCode { Success = 0, @@ -39630,10 +38583,7 @@ impl WriteXdr for InvokeHostFunctionResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InvokeHostFunctionResult { Success(Hash), @@ -39783,10 +38733,7 @@ impl WriteXdr for InvokeHostFunctionResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ExtendFootprintTtlResultCode { Success = 0, @@ -39912,10 +38859,7 @@ impl WriteXdr for ExtendFootprintTtlResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ExtendFootprintTtlResult { Success, @@ -40051,10 +38995,7 @@ impl WriteXdr for ExtendFootprintTtlResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RestoreFootprintResultCode { Success = 0, @@ -40180,10 +39121,7 @@ impl WriteXdr for RestoreFootprintResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RestoreFootprintResult { Success, @@ -40320,10 +39258,7 @@ impl WriteXdr for RestoreFootprintResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OperationResultCode { OpInner = 0, @@ -40512,10 +39447,7 @@ impl WriteXdr for OperationResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationResultTr { CreateAccount(CreateAccountResult), @@ -40904,10 +39836,7 @@ impl WriteXdr for OperationResultTr { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationResult { OpInner(OperationResultTr), @@ -41075,10 +40004,7 @@ impl WriteXdr for OperationResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TransactionResultCode { TxFeeBumpInnerSuccess = 1, @@ -41294,10 +40220,7 @@ impl WriteXdr for TransactionResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultResult { TxSuccess(VecM), @@ -41518,10 +40441,7 @@ impl WriteXdr for InnerTransactionResultResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultExt { V0, @@ -41655,10 +40575,7 @@ impl WriteXdr for InnerTransactionResultExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InnerTransactionResult { pub fee_charged: i64, pub result: InnerTransactionResultResult, @@ -41707,10 +40624,7 @@ impl WriteXdr for InnerTransactionResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InnerTransactionResultPair { pub transaction_hash: Hash, pub result: InnerTransactionResult, @@ -41778,10 +40692,7 @@ impl WriteXdr for InnerTransactionResultPair { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionResultResult { TxFeeBumpInnerSuccess(InnerTransactionResultPair), @@ -42020,10 +40931,7 @@ impl WriteXdr for TransactionResultResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionResultExt { V0, @@ -42158,10 +41066,7 @@ impl WriteXdr for TransactionResultExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResult { pub fee_charged: i64, pub result: TransactionResultResult, @@ -42205,10 +41110,6 @@ impl WriteXdr for TransactionResult { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Hash(pub [u8; 32]); impl core::fmt::Debug for Hash { @@ -42239,6 +41140,37 @@ impl core::str::FromStr for Hash { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Hash { + fn schema_name() -> String { + "Hash".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(32 * 2), + min_length: Some(32 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 32] { #[must_use] fn from(x: Hash) -> Self { @@ -42327,10 +41259,6 @@ impl AsRef<[u8]> for Hash { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Uint256(pub [u8; 32]); impl core::fmt::Debug for Uint256 { @@ -42361,6 +41289,37 @@ impl core::str::FromStr for Uint256 { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Uint256 { + fn schema_name() -> String { + "Uint256".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(32 * 2), + min_length: Some(32 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 32] { #[must_use] fn from(x: Uint256) -> Self { @@ -42482,10 +41441,7 @@ pub type Int64 = i64; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TimePoint(pub u64); @@ -42541,10 +41497,7 @@ impl WriteXdr for TimePoint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Duration(pub u64); @@ -42605,10 +41558,7 @@ impl WriteXdr for Duration { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ExtensionPoint { V0, @@ -42714,10 +41664,7 @@ impl WriteXdr for ExtensionPoint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CryptoKeyType { Ed25519 = 0, @@ -42843,10 +41790,7 @@ impl WriteXdr for CryptoKeyType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PublicKeyType { PublicKeyTypeEd25519 = 0, @@ -42951,10 +41895,7 @@ impl WriteXdr for PublicKeyType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SignerKeyType { Ed25519 = 0, @@ -43071,10 +42012,7 @@ impl WriteXdr for SignerKeyType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PublicKey { PublicKeyTypeEd25519(Uint256), @@ -43177,10 +42115,7 @@ impl WriteXdr for PublicKey { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, pub payload: BytesM<64>, @@ -43240,10 +42175,7 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SignerKey { Ed25519(Uint256), @@ -43363,10 +42295,7 @@ impl WriteXdr for SignerKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Signature(pub BytesM<64>); @@ -43470,10 +42399,6 @@ impl AsRef<[u8]> for Signature { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct SignatureHint(pub [u8; 4]); impl core::fmt::Debug for SignatureHint { @@ -43504,6 +42429,37 @@ impl core::str::FromStr for SignatureHint { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for SignatureHint { + fn schema_name() -> String { + "SignatureHint".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: SignatureHint) -> Self { @@ -43592,10 +42548,7 @@ impl AsRef<[u8]> for SignatureHint { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -43650,10 +42603,7 @@ impl WriteXdr for NodeId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -43712,10 +42662,7 @@ impl WriteXdr for AccountId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Curve25519Secret { pub key: [u8; 32], } @@ -43757,10 +42704,7 @@ impl WriteXdr for Curve25519Secret { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Curve25519Public { pub key: [u8; 32], } @@ -43802,10 +42746,7 @@ impl WriteXdr for Curve25519Public { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HmacSha256Key { pub key: [u8; 32], } @@ -43847,10 +42788,7 @@ impl WriteXdr for HmacSha256Key { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HmacSha256Mac { pub mac: [u8; 32], } @@ -43882,10 +42820,7 @@ impl WriteXdr for HmacSha256Mac { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum TypeVariant { Value, ScpBallot, @@ -46049,10 +44984,7 @@ impl core::str::FromStr for TypeVariant { serde(rename_all = "snake_case"), serde(untagged) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum Type { Value(Box), ScpBallot(Box), diff --git a/src/next/generated.rs b/src/next/generated.rs index cb3fca93..cd4325c0 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -956,7 +956,7 @@ impl Default for VecM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for VecM { fn schema_name() -> String { format!("VecM<{}, {}>", T::schema_name(), MAX) @@ -1411,10 +1411,10 @@ impl Deref for BytesM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for BytesM { fn schema_name() -> String { - format!("BytesM<{}>", MAX) + format!("BytesM<{MAX}>") } fn is_referenceable() -> bool { @@ -1433,8 +1433,8 @@ impl schemars::JsonSchema for BytesM { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), - min_length: Some(((MAX.checked_mul(4).unwrap_or(u32::MAX) / 3) + 3) & !3), + max_length: Some(MAX * 2), + min_length: None, ..string }) } else { @@ -1831,10 +1831,10 @@ impl Default for StringM { } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for StringM { fn schema_name() -> String { - format!("StringM<{}>", MAX) + format!("StringM<{MAX}>") } fn is_referenceable() -> bool { @@ -2167,7 +2167,7 @@ pub struct Frame(pub T) where T: ReadXdr; -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] impl schemars::JsonSchema for Frame { fn schema_name() -> String { format!("Frame<{}>", T::schema_name()) @@ -2206,7 +2206,7 @@ where } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] fn mut_array( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, @@ -2221,7 +2221,7 @@ fn mut_array( } } -#[cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#[cfg(feature = "schemars")] fn mut_string( schema: schemars::schema::Schema, f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, @@ -2876,10 +2876,7 @@ mod test { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Value(pub BytesM); @@ -2988,10 +2985,7 @@ impl AsRef<[u8]> for Value { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpBallot { pub counter: u32, pub value: Value, @@ -3040,10 +3034,7 @@ impl WriteXdr for ScpBallot { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScpStatementType { Prepare = 0, @@ -3160,10 +3151,7 @@ impl WriteXdr for ScpStatementType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpNomination { pub quorum_set_hash: Hash, pub votes: VecM, @@ -3216,10 +3204,7 @@ impl WriteXdr for ScpNomination { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementPrepare { pub quorum_set_hash: Hash, pub ballot: ScpBallot, @@ -3280,10 +3265,7 @@ impl WriteXdr for ScpStatementPrepare { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementConfirm { pub ballot: ScpBallot, pub n_prepared: u32, @@ -3339,10 +3321,7 @@ impl WriteXdr for ScpStatementConfirm { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatementExternalize { pub commit: ScpBallot, pub n_h: u32, @@ -3418,10 +3397,7 @@ impl WriteXdr for ScpStatementExternalize { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScpStatementPledges { Prepare(ScpStatementPrepare), @@ -3576,10 +3552,7 @@ impl WriteXdr for ScpStatementPledges { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpStatement { pub node_id: NodeId, pub slot_index: u64, @@ -3628,10 +3601,7 @@ impl WriteXdr for ScpStatement { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpEnvelope { pub statement: ScpStatement, pub signature: Signature, @@ -3678,10 +3648,7 @@ impl WriteXdr for ScpEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpQuorumSet { pub threshold: u32, pub validators: VecM, @@ -3730,10 +3697,7 @@ impl WriteXdr for ScpQuorumSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractExecutionLanesV0 { pub ledger_max_tx_count: u32, } @@ -3784,10 +3748,7 @@ impl WriteXdr for ConfigSettingContractExecutionLanesV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractComputeV0 { pub ledger_max_instructions: i64, pub tx_max_instructions: i64, @@ -3869,10 +3830,7 @@ impl WriteXdr for ConfigSettingContractComputeV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractLedgerCostV0 { pub ledger_max_read_ledger_entries: u32, pub ledger_max_read_bytes: u32, @@ -3956,10 +3914,7 @@ impl WriteXdr for ConfigSettingContractLedgerCostV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractHistoricalDataV0 { pub fee_historical1_kb: i64, } @@ -4004,10 +3959,7 @@ impl WriteXdr for ConfigSettingContractHistoricalDataV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractEventsV0 { pub tx_max_contract_events_size_bytes: u32, pub fee_contract_events1_kb: i64, @@ -4058,10 +4010,7 @@ impl WriteXdr for ConfigSettingContractEventsV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigSettingContractBandwidthV0 { pub ledger_max_txs_size_bytes: u32, pub tx_max_size_bytes: u32, @@ -4158,10 +4107,7 @@ impl WriteXdr for ConfigSettingContractBandwidthV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractCostType { WasmInsnExec = 0, @@ -4379,10 +4325,7 @@ impl WriteXdr for ContractCostType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCostParamEntry { pub ext: ExtensionPoint, pub const_term: i64, @@ -4450,10 +4393,7 @@ impl WriteXdr for ContractCostParamEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StateArchivalSettings { pub max_entry_ttl: u32, pub min_temporary_ttl: u32, @@ -4523,10 +4463,7 @@ impl WriteXdr for StateArchivalSettings { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct EvictionIterator { pub bucket_list_level: u32, pub is_curr_bucket: bool, @@ -4580,10 +4517,7 @@ pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ContractCostParams(pub VecM); @@ -4705,10 +4639,7 @@ impl AsRef<[ContractCostParamEntry]> for ContractCostParams { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ConfigSettingId { ContractMaxSizeBytes = 0, @@ -4906,10 +4837,7 @@ impl WriteXdr for ConfigSettingId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ConfigSettingEntry { ContractMaxSizeBytes(u32), @@ -5136,10 +5064,7 @@ impl WriteXdr for ConfigSettingEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScEnvMetaKind { ScEnvMetaKindInterfaceVersion = 0, @@ -5242,10 +5167,7 @@ impl WriteXdr for ScEnvMetaKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScEnvMetaEntry { ScEnvMetaKindInterfaceVersion(u64), @@ -5347,10 +5269,7 @@ impl WriteXdr for ScEnvMetaEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScMetaV0 { pub key: StringM, pub val: StringM, @@ -5396,10 +5315,7 @@ impl WriteXdr for ScMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScMetaKind { ScMetaV0 = 0, @@ -5502,10 +5418,7 @@ impl WriteXdr for ScMetaKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScMetaEntry { ScMetaV0(ScMetaV0), @@ -5643,10 +5556,7 @@ pub const SC_SPEC_DOC_LIMIT: u64 = 1024; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecType { Val = 0, @@ -5871,10 +5781,7 @@ impl WriteXdr for ScSpecType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeOption { pub value_type: Box, } @@ -5917,10 +5824,7 @@ impl WriteXdr for ScSpecTypeOption { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeResult { pub ok_type: Box, pub error_type: Box, @@ -5965,10 +5869,7 @@ impl WriteXdr for ScSpecTypeResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeVec { pub element_type: Box, } @@ -6011,10 +5912,7 @@ impl WriteXdr for ScSpecTypeVec { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeMap { pub key_type: Box, pub value_type: Box, @@ -6059,10 +5957,7 @@ impl WriteXdr for ScSpecTypeMap { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeTuple { pub value_types: VecM, } @@ -6104,10 +5999,7 @@ impl WriteXdr for ScSpecTypeTuple { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeBytesN { pub n: u32, } @@ -6149,10 +6041,7 @@ impl WriteXdr for ScSpecTypeBytesN { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecTypeUdt { pub name: StringM<60>, } @@ -6227,10 +6116,7 @@ impl WriteXdr for ScSpecTypeUdt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecTypeDef { Val, @@ -6503,10 +6389,7 @@ impl WriteXdr for ScSpecTypeDef { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtStructFieldV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -6557,10 +6440,7 @@ impl WriteXdr for ScSpecUdtStructFieldV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtStructV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -6612,10 +6492,7 @@ impl WriteXdr for ScSpecUdtStructV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionCaseVoidV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6662,10 +6539,7 @@ impl WriteXdr for ScSpecUdtUnionCaseVoidV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionCaseTupleV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -6715,10 +6589,7 @@ impl WriteXdr for ScSpecUdtUnionCaseTupleV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecUdtUnionCaseV0Kind { VoidV0 = 0, @@ -6829,10 +6700,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0Kind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecUdtUnionCaseV0 { VoidV0(ScSpecUdtUnionCaseVoidV0), @@ -6946,10 +6814,7 @@ impl WriteXdr for ScSpecUdtUnionCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtUnionV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7002,10 +6867,7 @@ impl WriteXdr for ScSpecUdtUnionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -7056,10 +6918,7 @@ impl WriteXdr for ScSpecUdtEnumCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7112,10 +6971,7 @@ impl WriteXdr for ScSpecUdtEnumV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtErrorEnumCaseV0 { pub doc: StringM<1024>, pub name: StringM<60>, @@ -7166,10 +7022,7 @@ impl WriteXdr for ScSpecUdtErrorEnumCaseV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecUdtErrorEnumV0 { pub doc: StringM<1024>, pub lib: StringM<80>, @@ -7222,10 +7075,7 @@ impl WriteXdr for ScSpecUdtErrorEnumV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecFunctionInputV0 { pub doc: StringM<1024>, pub name: StringM<30>, @@ -7276,10 +7126,7 @@ impl WriteXdr for ScSpecFunctionInputV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScSpecFunctionV0 { pub doc: StringM<1024>, pub name: ScSymbol, @@ -7335,10 +7182,7 @@ impl WriteXdr for ScSpecFunctionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScSpecEntryKind { FunctionV0 = 0, @@ -7473,10 +7317,7 @@ impl WriteXdr for ScSpecEntryKind { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScSpecEntry { FunctionV0(ScSpecFunctionV0), @@ -7660,10 +7501,7 @@ impl WriteXdr for ScSpecEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScValType { Bool = 0, @@ -7883,10 +7721,7 @@ impl WriteXdr for ScValType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScErrorType { Contract = 0, @@ -8038,10 +7873,7 @@ impl WriteXdr for ScErrorType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScErrorCode { ArithDomain = 0, @@ -8203,10 +8035,7 @@ impl WriteXdr for ScErrorCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScError { Contract(u32), @@ -8364,10 +8193,7 @@ impl WriteXdr for ScError { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UInt128Parts { pub hi: u64, pub lo: u64, @@ -8412,10 +8238,7 @@ impl WriteXdr for UInt128Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Int128Parts { pub hi: i64, pub lo: u64, @@ -8462,10 +8285,7 @@ impl WriteXdr for Int128Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UInt256Parts { pub hi_hi: u64, pub hi_lo: u64, @@ -8518,10 +8338,7 @@ impl WriteXdr for UInt256Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Int256Parts { pub hi_hi: i64, pub hi_lo: u64, @@ -8574,10 +8391,7 @@ impl WriteXdr for Int256Parts { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractExecutableType { Wasm = 0, @@ -8688,10 +8502,7 @@ impl WriteXdr for ContractExecutableType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractExecutable { Wasm(Hash), @@ -8800,10 +8611,7 @@ impl WriteXdr for ContractExecutable { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ScAddressType { Account = 0, @@ -8910,10 +8718,7 @@ impl WriteXdr for ScAddressType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScAddress { Account(AccountId), @@ -9023,10 +8828,7 @@ pub const SCSYMBOL_LIMIT: u64 = 32; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScVec(pub VecM); @@ -9132,10 +8934,7 @@ impl AsRef<[ScVal]> for ScVec { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScMap(pub VecM); @@ -9241,10 +9040,7 @@ impl AsRef<[ScMapEntry]> for ScMap { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScBytes(pub BytesM); @@ -9350,10 +9146,7 @@ impl AsRef<[u8]> for ScBytes { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScString(pub StringM); @@ -9459,10 +9252,7 @@ impl AsRef<[u8]> for ScString { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct ScSymbol(pub StringM<32>); @@ -9569,10 +9359,7 @@ impl AsRef<[u8]> for ScSymbol { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScNonceKey { pub nonce: i64, } @@ -9614,10 +9401,7 @@ impl WriteXdr for ScNonceKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScContractInstance { pub executable: ContractExecutable, pub storage: Option, @@ -9720,10 +9504,7 @@ impl WriteXdr for ScContractInstance { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScVal { Bool(bool), @@ -9976,10 +9757,7 @@ impl WriteXdr for ScVal { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScMapEntry { pub key: ScVal, pub val: ScVal, @@ -10028,10 +9806,7 @@ impl WriteXdr for ScMapEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StoredTransactionSet { V0(TransactionSet), @@ -10137,10 +9912,7 @@ impl WriteXdr for StoredTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StoredDebugTransactionSet { pub tx_set: StoredTransactionSet, pub ledger_seq: u32, @@ -10190,10 +9962,7 @@ impl WriteXdr for StoredDebugTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PersistedScpStateV0 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -10243,10 +10012,7 @@ impl WriteXdr for PersistedScpStateV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PersistedScpStateV1 { pub scp_envelopes: VecM, pub quorum_sets: VecM, @@ -10295,10 +10061,7 @@ impl WriteXdr for PersistedScpStateV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PersistedScpState { V0(PersistedScpStateV0), @@ -10398,10 +10161,6 @@ impl WriteXdr for PersistedScpState { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Thresholds(pub [u8; 4]); impl core::fmt::Debug for Thresholds { @@ -10432,6 +10191,37 @@ impl core::str::FromStr for Thresholds { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Thresholds { + fn schema_name() -> String { + "Thresholds".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: Thresholds) -> Self { @@ -10522,10 +10312,7 @@ impl AsRef<[u8]> for Thresholds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct String32(pub StringM<32>); @@ -10631,10 +10418,7 @@ impl AsRef<[u8]> for String32 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct String64(pub StringM<64>); @@ -10739,10 +10523,7 @@ impl AsRef<[u8]> for String64 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct SequenceNumber(pub i64); @@ -10799,10 +10580,7 @@ impl WriteXdr for SequenceNumber { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct DataValue(pub BytesM<64>); @@ -10907,10 +10685,7 @@ impl AsRef<[u8]> for DataValue { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct PoolId(pub Hash); @@ -10965,10 +10740,6 @@ impl WriteXdr for PoolId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct AssetCode4(pub [u8; 4]); impl core::fmt::Debug for AssetCode4 { @@ -10982,6 +10753,37 @@ impl core::fmt::Debug for AssetCode4 { Ok(()) } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for AssetCode4 { + fn schema_name() -> String { + "AssetCode4".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: AssetCode4) -> Self { @@ -11070,10 +10872,6 @@ impl AsRef<[u8]> for AssetCode4 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct AssetCode12(pub [u8; 12]); impl core::fmt::Debug for AssetCode12 { @@ -11087,6 +10885,37 @@ impl core::fmt::Debug for AssetCode12 { Ok(()) } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for AssetCode12 { + fn schema_name() -> String { + "AssetCode12".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(12 * 2), + min_length: Some(12 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 12] { #[must_use] fn from(x: AssetCode12) -> Self { @@ -11183,10 +11012,7 @@ impl AsRef<[u8]> for AssetCode12 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AssetType { Native = 0, @@ -11308,10 +11134,7 @@ impl WriteXdr for AssetType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AssetCode { CreditAlphanum4(AssetCode4), @@ -11416,10 +11239,7 @@ impl WriteXdr for AssetCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AlphaNum4 { pub asset_code: AssetCode4, pub issuer: AccountId, @@ -11465,10 +11285,7 @@ impl WriteXdr for AlphaNum4 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AlphaNum12 { pub asset_code: AssetCode12, pub issuer: AccountId, @@ -11523,10 +11340,7 @@ impl WriteXdr for AlphaNum12 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Asset { Native, @@ -11640,10 +11454,7 @@ impl WriteXdr for Asset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Price { pub n: i32, pub d: i32, @@ -11689,10 +11500,7 @@ impl WriteXdr for Price { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Liabilities { pub buying: i64, pub selling: i64, @@ -11741,10 +11549,7 @@ impl WriteXdr for Liabilities { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ThresholdIndexes { MasterWeight = 0, @@ -11869,10 +11674,7 @@ impl WriteXdr for ThresholdIndexes { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerEntryType { Account = 0, @@ -12023,10 +11825,7 @@ impl WriteXdr for LedgerEntryType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Signer { pub key: SignerKey, pub weight: u32, @@ -12085,10 +11884,7 @@ impl WriteXdr for Signer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AccountFlags { RequiredFlag = 1, @@ -12229,10 +12025,7 @@ pub const MAX_SIGNERS: u64 = 20; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct SponsorshipDescriptor(pub Option); @@ -12299,10 +12092,7 @@ impl WriteXdr for SponsorshipDescriptor { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV3 { pub ext: ExtensionPoint, pub seq_ledger: u32, @@ -12354,10 +12144,7 @@ impl WriteXdr for AccountEntryExtensionV3 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV2Ext { V0, @@ -12472,10 +12259,7 @@ impl WriteXdr for AccountEntryExtensionV2Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV2 { pub num_sponsored: u32, pub num_sponsoring: u32, @@ -12530,10 +12314,7 @@ impl WriteXdr for AccountEntryExtensionV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExtensionV1Ext { V0, @@ -12646,10 +12427,7 @@ impl WriteXdr for AccountEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntryExtensionV1 { pub liabilities: Liabilities, pub ext: AccountEntryExtensionV1Ext, @@ -12698,10 +12476,7 @@ impl WriteXdr for AccountEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountEntryExt { V0, @@ -12829,10 +12604,7 @@ impl WriteXdr for AccountEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AccountEntry { pub account_id: AccountId, pub balance: i64, @@ -12909,10 +12681,7 @@ impl WriteXdr for AccountEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TrustLineFlags { AuthorizedFlag = 1, @@ -13052,10 +12821,7 @@ pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolType { LiquidityPoolConstantProduct = 0, @@ -13169,10 +12935,7 @@ impl WriteXdr for LiquidityPoolType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineAsset { Native, @@ -13294,10 +13057,7 @@ impl WriteXdr for TrustLineAsset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExtensionV2Ext { V0, @@ -13403,10 +13163,7 @@ impl WriteXdr for TrustLineEntryExtensionV2Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntryExtensionV2 { pub liquidity_pool_use_count: i32, pub ext: TrustLineEntryExtensionV2Ext, @@ -13455,10 +13212,7 @@ impl WriteXdr for TrustLineEntryExtensionV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryV1Ext { V0, @@ -13571,10 +13325,7 @@ impl WriteXdr for TrustLineEntryV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntryV1 { pub liabilities: Liabilities, pub ext: TrustLineEntryV1Ext, @@ -13635,10 +13386,7 @@ impl WriteXdr for TrustLineEntryV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TrustLineEntryExt { V0, @@ -13770,10 +13518,7 @@ impl WriteXdr for TrustLineEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TrustLineEntry { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -13833,10 +13578,7 @@ impl WriteXdr for TrustLineEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OfferEntryFlags { PassiveFlag = 1, @@ -13947,10 +13689,7 @@ pub const MASK_OFFERENTRY_FLAGS: u64 = 1; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OfferEntryExt { V0, @@ -14069,10 +13808,7 @@ impl WriteXdr for OfferEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct OfferEntry { pub seller_id: AccountId, pub offer_id: i64, @@ -14137,10 +13873,7 @@ impl WriteXdr for OfferEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum DataEntryExt { V0, @@ -14249,10 +13982,7 @@ impl WriteXdr for DataEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DataEntry { pub account_id: AccountId, pub data_name: String64, @@ -14309,10 +14039,7 @@ impl WriteXdr for DataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimPredicateType { Unconditional = 0, @@ -14455,10 +14182,7 @@ impl WriteXdr for ClaimPredicateType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimPredicate { Unconditional, @@ -14601,10 +14325,7 @@ impl WriteXdr for ClaimPredicate { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimantType { ClaimantTypeV0 = 0, @@ -14706,10 +14427,7 @@ impl WriteXdr for ClaimantType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimantV0 { pub destination: AccountId, pub predicate: ClaimPredicate, @@ -14760,10 +14478,7 @@ impl WriteXdr for ClaimantV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Claimant { ClaimantTypeV0(ClaimantV0), @@ -14863,10 +14578,7 @@ impl WriteXdr for Claimant { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimableBalanceIdType { ClaimableBalanceIdTypeV0 = 0, @@ -14970,10 +14682,7 @@ impl WriteXdr for ClaimableBalanceIdType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceId { ClaimableBalanceIdTypeV0(Hash), @@ -15078,10 +14787,7 @@ impl WriteXdr for ClaimableBalanceId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimableBalanceFlags { ClaimableBalanceClawbackEnabledFlag = 1, @@ -15193,10 +14899,7 @@ pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExtensionV1Ext { V0, @@ -15302,10 +15005,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimableBalanceEntryExtensionV1 { pub ext: ClaimableBalanceEntryExtensionV1Ext, pub flags: u32, @@ -15354,10 +15054,7 @@ impl WriteXdr for ClaimableBalanceEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimableBalanceEntryExt { V0, @@ -15481,10 +15178,7 @@ impl WriteXdr for ClaimableBalanceEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimableBalanceEntry { pub balance_id: ClaimableBalanceId, pub claimants: VecM, @@ -15540,10 +15234,7 @@ impl WriteXdr for ClaimableBalanceEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolConstantProductParameters { pub asset_a: Asset, pub asset_b: Asset, @@ -15597,10 +15288,7 @@ impl WriteXdr for LiquidityPoolConstantProductParameters { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolEntryConstantProduct { pub params: LiquidityPoolConstantProductParameters, pub reserve_a: i64, @@ -15665,10 +15353,7 @@ impl WriteXdr for LiquidityPoolEntryConstantProduct { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolEntryBody { LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct), @@ -15789,10 +15474,7 @@ impl WriteXdr for LiquidityPoolEntryBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolEntry { pub liquidity_pool_id: PoolId, pub body: LiquidityPoolEntryBody, @@ -15838,10 +15520,7 @@ impl WriteXdr for LiquidityPoolEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractDataDurability { Temporary = 0, @@ -15952,10 +15631,7 @@ impl WriteXdr for ContractDataDurability { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractDataEntry { pub ext: ExtensionPoint, pub contract: ScAddress, @@ -16011,10 +15687,7 @@ impl WriteXdr for ContractDataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeEntry { pub ext: ExtensionPoint, pub hash: Hash, @@ -16063,10 +15736,7 @@ impl WriteXdr for ContractCodeEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TtlEntry { pub key_hash: Hash, pub live_until_ledger_seq: u32, @@ -16113,10 +15783,7 @@ impl WriteXdr for TtlEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExtensionV1Ext { V0, @@ -16222,10 +15889,7 @@ impl WriteXdr for LedgerEntryExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerEntryExtensionV1 { pub sponsoring_id: SponsorshipDescriptor, pub ext: LedgerEntryExtensionV1Ext, @@ -16290,10 +15954,7 @@ impl WriteXdr for LedgerEntryExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryData { Account(AccountEntry), @@ -16473,10 +16134,7 @@ impl WriteXdr for LedgerEntryData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryExt { V0, @@ -16615,10 +16273,7 @@ impl WriteXdr for LedgerEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerEntry { pub last_modified_ledger_seq: u32, pub data: LedgerEntryData, @@ -16666,10 +16321,7 @@ impl WriteXdr for LedgerEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyAccount { pub account_id: AccountId, } @@ -16712,10 +16364,7 @@ impl WriteXdr for LedgerKeyAccount { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyTrustLine { pub account_id: AccountId, pub asset: TrustLineAsset, @@ -16761,10 +16410,7 @@ impl WriteXdr for LedgerKeyTrustLine { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyOffer { pub seller_id: AccountId, pub offer_id: i64, @@ -16810,10 +16456,7 @@ impl WriteXdr for LedgerKeyOffer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyData { pub account_id: AccountId, pub data_name: String64, @@ -16858,10 +16501,7 @@ impl WriteXdr for LedgerKeyData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyClaimableBalance { pub balance_id: ClaimableBalanceId, } @@ -16903,10 +16543,7 @@ impl WriteXdr for LedgerKeyClaimableBalance { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyLiquidityPool { pub liquidity_pool_id: PoolId, } @@ -16950,10 +16587,7 @@ impl WriteXdr for LedgerKeyLiquidityPool { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyContractData { pub contract: ScAddress, pub key: ScVal, @@ -17001,10 +16635,7 @@ impl WriteXdr for LedgerKeyContractData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyContractCode { pub hash: Hash, } @@ -17046,10 +16677,7 @@ impl WriteXdr for LedgerKeyContractCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyConfigSetting { pub config_setting_id: ConfigSettingId, } @@ -17092,10 +16720,7 @@ impl WriteXdr for LedgerKeyConfigSetting { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerKeyTtl { pub key_hash: Hash, } @@ -17198,10 +16823,7 @@ impl WriteXdr for LedgerKeyTtl { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerKey { Account(LedgerKeyAccount), @@ -17387,10 +17009,7 @@ impl WriteXdr for LedgerKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum EnvelopeType { TxV0 = 0, @@ -17538,10 +17157,7 @@ impl WriteXdr for EnvelopeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct UpgradeType(pub BytesM<128>); @@ -17651,10 +17267,7 @@ impl AsRef<[u8]> for UpgradeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum StellarValueType { Basic = 0, @@ -17759,10 +17372,7 @@ impl WriteXdr for StellarValueType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseValueSignature { pub node_id: NodeId, pub signature: Signature, @@ -17811,10 +17421,7 @@ impl WriteXdr for LedgerCloseValueSignature { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StellarValueExt { Basic, @@ -17936,10 +17543,7 @@ impl WriteXdr for StellarValueExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct StellarValue { pub tx_set_hash: Hash, pub close_time: TimePoint, @@ -18001,10 +17605,7 @@ pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerHeaderFlags { TradingFlag = 1, @@ -18117,10 +17718,7 @@ impl WriteXdr for LedgerHeaderFlags { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExtensionV1Ext { V0, @@ -18226,10 +17824,7 @@ impl WriteXdr for LedgerHeaderExtensionV1Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeaderExtensionV1 { pub flags: u32, pub ext: LedgerHeaderExtensionV1Ext, @@ -18278,10 +17873,7 @@ impl WriteXdr for LedgerHeaderExtensionV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderExt { V0, @@ -18420,10 +18012,7 @@ impl WriteXdr for LedgerHeaderExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeader { pub ledger_version: u32, pub previous_ledger_hash: Hash, @@ -18514,10 +18103,7 @@ impl WriteXdr for LedgerHeader { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerUpgradeType { Version = 1, @@ -18652,10 +18238,7 @@ impl WriteXdr for LedgerUpgradeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigUpgradeSetKey { pub contract_id: Hash, pub content_hash: Hash, @@ -18717,10 +18300,7 @@ impl WriteXdr for ConfigUpgradeSetKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerUpgrade { Version(u32), @@ -18866,10 +18446,7 @@ impl WriteXdr for LedgerUpgrade { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ConfigUpgradeSet { pub updated_entry: VecM, } @@ -18917,10 +18494,7 @@ impl WriteXdr for ConfigUpgradeSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BucketEntryType { Metaentry = -1, @@ -19038,10 +18612,7 @@ impl WriteXdr for BucketEntryType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BucketMetadataExt { V0, @@ -19149,10 +18720,7 @@ impl WriteXdr for BucketMetadataExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BucketMetadata { pub ledger_version: u32, pub ext: BucketMetadataExt, @@ -19205,10 +18773,7 @@ impl WriteXdr for BucketMetadata { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BucketEntry { Liveentry(LedgerEntry), @@ -19331,10 +18896,7 @@ impl WriteXdr for BucketEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TxSetComponentType { TxsetCompTxsMaybeDiscountedFee = 0, @@ -19437,10 +18999,7 @@ impl WriteXdr for TxSetComponentType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TxSetComponentTxsMaybeDiscountedFee { pub base_fee: Option, pub txs: VecM, @@ -19491,10 +19050,7 @@ impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TxSetComponent { TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee), @@ -19602,10 +19158,7 @@ impl WriteXdr for TxSetComponent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionPhase { V0(VecM), @@ -19705,10 +19258,7 @@ impl WriteXdr for TransactionPhase { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSet { pub previous_ledger_hash: Hash, pub txs: VecM, @@ -19754,10 +19304,7 @@ impl WriteXdr for TransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSetV1 { pub previous_ledger_hash: Hash, pub phases: VecM, @@ -19805,10 +19352,7 @@ impl WriteXdr for TransactionSetV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum GeneralizedTransactionSet { V1(TransactionSetV1), @@ -19908,10 +19452,7 @@ impl WriteXdr for GeneralizedTransactionSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultPair { pub transaction_hash: Hash, pub result: TransactionResult, @@ -19956,10 +19497,7 @@ impl WriteXdr for TransactionResultPair { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultSet { pub results: VecM, } @@ -20005,10 +19543,7 @@ impl WriteXdr for TransactionResultSet { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryEntryExt { V0, @@ -20123,10 +19658,7 @@ impl WriteXdr for TransactionHistoryEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionHistoryEntry { pub ledger_seq: u32, pub tx_set: TransactionSet, @@ -20176,10 +19708,7 @@ impl WriteXdr for TransactionHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionHistoryResultEntryExt { V0, @@ -20287,10 +19816,7 @@ impl WriteXdr for TransactionHistoryResultEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionHistoryResultEntry { pub ledger_seq: u32, pub tx_result_set: TransactionResultSet, @@ -20340,10 +19866,7 @@ impl WriteXdr for TransactionHistoryResultEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerHeaderHistoryEntryExt { V0, @@ -20451,10 +19974,7 @@ impl WriteXdr for LedgerHeaderHistoryEntryExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerHeaderHistoryEntry { pub hash: Hash, pub header: LedgerHeader, @@ -20503,10 +20023,7 @@ impl WriteXdr for LedgerHeaderHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerScpMessages { pub ledger_seq: u32, pub messages: VecM, @@ -20552,10 +20069,7 @@ impl WriteXdr for LedgerScpMessages { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ScpHistoryEntryV0 { pub quorum_sets: VecM, pub ledger_messages: LedgerScpMessages, @@ -20602,10 +20116,7 @@ impl WriteXdr for ScpHistoryEntryV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScpHistoryEntry { V0(ScpHistoryEntryV0), @@ -20708,10 +20219,7 @@ impl WriteXdr for ScpHistoryEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LedgerEntryChangeType { Created = 0, @@ -20834,10 +20342,7 @@ impl WriteXdr for LedgerEntryChangeType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerEntryChange { Created(LedgerEntry), @@ -20954,10 +20459,7 @@ impl WriteXdr for LedgerEntryChange { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct LedgerEntryChanges(pub VecM); @@ -21065,10 +20567,7 @@ impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct OperationMeta { pub changes: LedgerEntryChanges, } @@ -21111,10 +20610,7 @@ impl WriteXdr for OperationMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV1 { pub tx_changes: LedgerEntryChanges, pub operations: VecM, @@ -21163,10 +20659,7 @@ impl WriteXdr for TransactionMetaV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV2 { pub tx_changes_before: LedgerEntryChanges, pub operations: VecM, @@ -21217,10 +20710,7 @@ impl WriteXdr for TransactionMetaV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractEventType { System = 0, @@ -21332,10 +20822,7 @@ impl WriteXdr for ContractEventType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractEventV0 { pub topics: VecM, pub data: ScVal, @@ -21386,10 +20873,7 @@ impl WriteXdr for ContractEventV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractEventBody { V0(ContractEventV0), @@ -21504,10 +20988,7 @@ impl WriteXdr for ContractEventBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractEvent { pub ext: ExtensionPoint, pub contract_id: Option, @@ -21559,10 +21040,7 @@ impl WriteXdr for ContractEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DiagnosticEvent { pub in_successful_contract_call: bool, pub event: ContractEvent, @@ -21616,10 +21094,7 @@ impl WriteXdr for DiagnosticEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionMeta { pub ext: ExtensionPoint, pub events: VecM, @@ -21678,10 +21153,7 @@ impl WriteXdr for SorobanTransactionMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionMetaV3 { pub ext: ExtensionPoint, pub tx_changes_before: LedgerEntryChanges, @@ -21736,10 +21208,7 @@ impl WriteXdr for TransactionMetaV3 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeHostFunctionSuccessPreImage { pub return_value: ScVal, pub events: VecM, @@ -21792,10 +21261,7 @@ impl WriteXdr for InvokeHostFunctionSuccessPreImage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionMeta { V0(VecM), @@ -21911,10 +21377,7 @@ impl WriteXdr for TransactionMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResultMeta { pub result: TransactionResultPair, pub fee_processing: LedgerEntryChanges, @@ -21963,10 +21426,7 @@ impl WriteXdr for TransactionResultMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct UpgradeEntryMeta { pub upgrade: LedgerUpgrade, pub changes: LedgerEntryChanges, @@ -22024,10 +21484,7 @@ impl WriteXdr for UpgradeEntryMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaV0 { pub ledger_header: LedgerHeaderHistoryEntry, pub tx_set: TransactionSet, @@ -22109,10 +21566,7 @@ impl WriteXdr for LedgerCloseMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaV1 { pub ext: ExtensionPoint, pub ledger_header: LedgerHeaderHistoryEntry, @@ -22182,10 +21636,7 @@ impl WriteXdr for LedgerCloseMetaV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMeta { V0(LedgerCloseMetaV0), @@ -22294,10 +21745,7 @@ impl WriteXdr for LedgerCloseMeta { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ErrorCode { Misc = 0, @@ -22417,10 +21865,7 @@ impl WriteXdr for ErrorCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SError { pub code: ErrorCode, pub msg: StringM<100>, @@ -22465,10 +21910,7 @@ impl WriteXdr for SError { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SendMore { pub num_messages: u32, } @@ -22511,10 +21953,7 @@ impl WriteXdr for SendMore { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SendMoreExtended { pub num_messages: u32, pub num_bytes: u32, @@ -22561,10 +22000,7 @@ impl WriteXdr for SendMoreExtended { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AuthCert { pub pubkey: Curve25519Public, pub expiration: u64, @@ -22620,10 +22056,7 @@ impl WriteXdr for AuthCert { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Hello { pub ledger_version: u32, pub overlay_version: u32, @@ -22697,10 +22130,7 @@ pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Auth { pub flags: i32, } @@ -22744,10 +22174,7 @@ impl WriteXdr for Auth { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum IpAddrType { IPv4 = 0, @@ -22855,10 +22282,7 @@ impl WriteXdr for IpAddrType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PeerAddressIp { IPv4([u8; 4]), @@ -22971,10 +22395,7 @@ impl WriteXdr for PeerAddressIp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PeerAddress { pub ip: PeerAddressIp, pub port: u32, @@ -23052,10 +22473,7 @@ impl WriteXdr for PeerAddress { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum MessageType { ErrorMsg = 0, @@ -23256,10 +22674,7 @@ impl WriteXdr for MessageType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DontHave { pub type_: MessageType, pub req_hash: Uint256, @@ -23305,10 +22720,7 @@ impl WriteXdr for DontHave { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SurveyMessageCommandType { SurveyTopology = 0, @@ -23411,10 +22823,7 @@ impl WriteXdr for SurveyMessageCommandType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SurveyMessageResponseType { V0 = 0, @@ -23523,10 +22932,7 @@ impl WriteXdr for SurveyMessageResponseType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SurveyRequestMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -23581,10 +22987,7 @@ impl WriteXdr for SurveyRequestMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignedSurveyRequestMessage { pub request_signature: Signature, pub request: SurveyRequestMessage, @@ -23627,10 +23030,7 @@ impl WriteXdr for SignedSurveyRequestMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct EncryptedBody(pub BytesM<64000>); @@ -23742,10 +23142,7 @@ impl AsRef<[u8]> for EncryptedBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SurveyResponseMessage { pub surveyor_peer_id: NodeId, pub surveyed_peer_id: NodeId, @@ -23800,10 +23197,7 @@ impl WriteXdr for SurveyResponseMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignedSurveyResponseMessage { pub response_signature: Signature, pub response: SurveyResponseMessage, @@ -23864,10 +23258,7 @@ impl WriteXdr for SignedSurveyResponseMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PeerStats { pub id: NodeId, pub version_str: StringM<100>, @@ -23949,10 +23340,7 @@ impl WriteXdr for PeerStats { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct PeerStatList(pub VecM); @@ -24064,10 +23452,7 @@ impl AsRef<[PeerStats]> for PeerStatList { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TopologyResponseBodyV0 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -24125,10 +23510,7 @@ impl WriteXdr for TopologyResponseBodyV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TopologyResponseBodyV1 { pub inbound_peers: PeerStatList, pub outbound_peers: PeerStatList, @@ -24189,10 +23571,7 @@ impl WriteXdr for TopologyResponseBodyV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SurveyResponseBody { V0(TopologyResponseBodyV0), @@ -24304,10 +23683,7 @@ pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TxAdvertVector(pub VecM); @@ -24415,10 +23791,7 @@ impl AsRef<[Hash]> for TxAdvertVector { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FloodAdvert { pub tx_hashes: TxAdvertVector, } @@ -24466,10 +23839,7 @@ pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TxDemandVector(pub VecM); @@ -24577,10 +23947,7 @@ impl AsRef<[Hash]> for TxDemandVector { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FloodDemand { pub tx_hashes: TxDemandVector, } @@ -24669,10 +24036,7 @@ impl WriteXdr for FloodDemand { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum StellarMessage { ErrorMsg(SError), @@ -24918,10 +24282,7 @@ impl WriteXdr for StellarMessage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AuthenticatedMessageV0 { pub sequence: u64, pub message: StellarMessage, @@ -24976,10 +24337,7 @@ impl WriteXdr for AuthenticatedMessageV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AuthenticatedMessage { V0(AuthenticatedMessageV0), @@ -25088,10 +24446,7 @@ pub const MAX_OPS_PER_TX: u64 = 100; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolParameters { LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters), @@ -25196,10 +24551,7 @@ impl WriteXdr for LiquidityPoolParameters { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct MuxedAccountMed25519 { pub id: u64, pub ed25519: Uint256, @@ -25251,10 +24603,7 @@ impl WriteXdr for MuxedAccountMed25519 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { Ed25519(Uint256), @@ -25361,10 +24710,7 @@ impl WriteXdr for MuxedAccount { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct DecoratedSignature { pub hint: SignatureHint, pub signature: Signature, @@ -25436,10 +24782,7 @@ impl WriteXdr for DecoratedSignature { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OperationType { CreateAccount = 0, @@ -25675,10 +25018,7 @@ impl WriteXdr for OperationType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateAccountOp { pub destination: AccountId, pub starting_balance: i64, @@ -25725,10 +25065,7 @@ impl WriteXdr for CreateAccountOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PaymentOp { pub destination: MuxedAccount, pub asset: Asset, @@ -25785,10 +25122,7 @@ impl WriteXdr for PaymentOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictReceiveOp { pub send_asset: Asset, pub send_max: i64, @@ -25854,10 +25188,7 @@ impl WriteXdr for PathPaymentStrictReceiveOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictSendOp { pub send_asset: Asset, pub send_amount: i64, @@ -25920,10 +25251,7 @@ impl WriteXdr for PathPaymentStrictSendOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -25984,10 +25312,7 @@ impl WriteXdr for ManageSellOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageBuyOfferOp { pub selling: Asset, pub buying: Asset, @@ -26044,10 +25369,7 @@ impl WriteXdr for ManageBuyOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreatePassiveSellOfferOp { pub selling: Asset, pub buying: Asset, @@ -26113,10 +25435,7 @@ impl WriteXdr for CreatePassiveSellOfferOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SetOptionsOp { pub inflation_dest: Option, pub clear_flags: Option, @@ -26195,10 +25514,7 @@ impl WriteXdr for SetOptionsOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustAsset { Native, @@ -26321,10 +25637,7 @@ impl WriteXdr for ChangeTrustAsset { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ChangeTrustOp { pub line: ChangeTrustAsset, pub limit: i64, @@ -26373,10 +25686,7 @@ impl WriteXdr for ChangeTrustOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct AllowTrustOp { pub trustor: AccountId, pub asset: AssetCode, @@ -26425,10 +25735,7 @@ impl WriteXdr for AllowTrustOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageDataOp { pub data_name: String64, pub data_value: Option, @@ -26473,10 +25780,7 @@ impl WriteXdr for ManageDataOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BumpSequenceOp { pub bump_to: SequenceNumber, } @@ -26520,10 +25824,7 @@ impl WriteXdr for BumpSequenceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateClaimableBalanceOp { pub asset: Asset, pub amount: i64, @@ -26571,10 +25872,7 @@ impl WriteXdr for CreateClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -26616,10 +25914,7 @@ impl WriteXdr for ClaimClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct BeginSponsoringFutureReservesOp { pub sponsored_id: AccountId, } @@ -26663,10 +25958,7 @@ impl WriteXdr for BeginSponsoringFutureReservesOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RevokeSponsorshipType { LedgerEntry = 0, @@ -26774,10 +26066,7 @@ impl WriteXdr for RevokeSponsorshipType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct RevokeSponsorshipOpSigner { pub account_id: AccountId, pub signer_key: SignerKey, @@ -26830,10 +26119,7 @@ impl WriteXdr for RevokeSponsorshipOpSigner { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipOp { LedgerEntry(LedgerKey), @@ -26944,10 +26230,7 @@ impl WriteXdr for RevokeSponsorshipOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClawbackOp { pub asset: Asset, pub from: MuxedAccount, @@ -26995,10 +26278,7 @@ impl WriteXdr for ClawbackOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClawbackClaimableBalanceOp { pub balance_id: ClaimableBalanceId, } @@ -27044,10 +26324,7 @@ impl WriteXdr for ClawbackClaimableBalanceOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SetTrustLineFlagsOp { pub trustor: AccountId, pub asset: Asset, @@ -27110,10 +26387,7 @@ pub const LIQUIDITY_POOL_FEE_V18: u64 = 30; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolDepositOp { pub liquidity_pool_id: PoolId, pub max_amount_a: i64, @@ -27170,10 +26444,7 @@ impl WriteXdr for LiquidityPoolDepositOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LiquidityPoolWithdrawOp { pub liquidity_pool_id: PoolId, pub amount: i64, @@ -27227,10 +26498,7 @@ impl WriteXdr for LiquidityPoolWithdrawOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum HostFunctionType { InvokeContract = 0, @@ -27344,10 +26612,7 @@ impl WriteXdr for HostFunctionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ContractIdPreimageType { Address = 0, @@ -27455,10 +26720,7 @@ impl WriteXdr for ContractIdPreimageType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractIdPreimageFromAddress { pub address: ScAddress, pub salt: Uint256, @@ -27511,10 +26773,7 @@ impl WriteXdr for ContractIdPreimageFromAddress { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractIdPreimage { Address(ContractIdPreimageFromAddress), @@ -27624,10 +26883,7 @@ impl WriteXdr for ContractIdPreimage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct CreateContractArgs { pub contract_id_preimage: ContractIdPreimage, pub executable: ContractExecutable, @@ -27673,10 +26929,7 @@ impl WriteXdr for CreateContractArgs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeContractArgs { pub contract_address: ScAddress, pub function_name: ScSymbol, @@ -27730,10 +26983,7 @@ impl WriteXdr for InvokeContractArgs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum HostFunction { InvokeContract(InvokeContractArgs), @@ -27855,10 +27105,7 @@ impl WriteXdr for HostFunction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SorobanAuthorizedFunctionType { ContractFn = 0, @@ -27969,10 +27216,7 @@ impl WriteXdr for SorobanAuthorizedFunctionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanAuthorizedFunction { ContractFn(InvokeContractArgs), @@ -28085,10 +27329,7 @@ impl WriteXdr for SorobanAuthorizedFunction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAuthorizedInvocation { pub function: SorobanAuthorizedFunction, pub sub_invocations: VecM, @@ -28136,10 +27377,7 @@ impl WriteXdr for SorobanAuthorizedInvocation { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAddressCredentials { pub address: ScAddress, pub nonce: i64, @@ -28192,10 +27430,7 @@ impl WriteXdr for SorobanAddressCredentials { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SorobanCredentialsType { SourceAccount = 0, @@ -28306,10 +27541,7 @@ impl WriteXdr for SorobanCredentialsType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanCredentials { SourceAccount, @@ -28419,10 +27651,7 @@ impl WriteXdr for SorobanCredentials { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanAuthorizationEntry { pub credentials: SorobanCredentials, pub root_invocation: SorobanAuthorizedInvocation, @@ -28470,10 +27699,7 @@ impl WriteXdr for SorobanAuthorizationEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InvokeHostFunctionOp { pub host_function: HostFunction, pub auth: VecM, @@ -28519,10 +27745,7 @@ impl WriteXdr for InvokeHostFunctionOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ExtendFootprintTtlOp { pub ext: ExtensionPoint, pub extend_to: u32, @@ -28567,10 +27790,7 @@ impl WriteXdr for ExtendFootprintTtlOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct RestoreFootprintOp { pub ext: ExtensionPoint, } @@ -28666,10 +27886,7 @@ impl WriteXdr for RestoreFootprintOp { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationBody { CreateAccount(CreateAccountOp), @@ -29050,10 +28267,7 @@ impl WriteXdr for OperationBody { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Operation { pub source_account: Option, pub body: OperationBody, @@ -29100,10 +28314,7 @@ impl WriteXdr for Operation { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageOperationId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -29155,10 +28366,7 @@ impl WriteXdr for HashIdPreimageOperationId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageRevokeId { pub source_account: AccountId, pub seq_num: SequenceNumber, @@ -29213,10 +28421,7 @@ impl WriteXdr for HashIdPreimageRevokeId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageContractId { pub network_id: Hash, pub contract_id_preimage: ContractIdPreimage, @@ -29264,10 +28469,7 @@ impl WriteXdr for HashIdPreimageContractId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HashIdPreimageSorobanAuthorization { pub network_id: Hash, pub nonce: i64, @@ -29348,10 +28550,7 @@ impl WriteXdr for HashIdPreimageSorobanAuthorization { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum HashIdPreimage { OpId(HashIdPreimageOperationId), @@ -29486,10 +28685,7 @@ impl WriteXdr for HashIdPreimage { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum MemoType { None = 0, @@ -29618,10 +28814,7 @@ impl WriteXdr for MemoType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Memo { None, @@ -29747,10 +28940,7 @@ impl WriteXdr for Memo { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TimeBounds { pub min_time: TimePoint, pub max_time: TimePoint, @@ -29796,10 +28986,7 @@ impl WriteXdr for TimeBounds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerBounds { pub min_ledger: u32, pub max_ledger: u32, @@ -29872,10 +29059,7 @@ impl WriteXdr for LedgerBounds { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PreconditionsV2 { pub time_bounds: Option, pub ledger_bounds: Option, @@ -29935,10 +29119,7 @@ impl WriteXdr for PreconditionsV2 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PreconditionType { None = 0, @@ -30055,10 +29236,7 @@ impl WriteXdr for PreconditionType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum Preconditions { None, @@ -30172,10 +29350,7 @@ impl WriteXdr for Preconditions { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerFootprint { pub read_only: VecM, pub read_write: VecM, @@ -30228,10 +29403,7 @@ impl WriteXdr for LedgerFootprint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanResources { pub footprint: LedgerFootprint, pub instructions: u32, @@ -30293,10 +29465,7 @@ impl WriteXdr for SorobanResources { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionData { pub ext: ExtensionPoint, pub resources: SorobanResources, @@ -30346,10 +29515,7 @@ impl WriteXdr for SorobanTransactionData { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionV0Ext { V0, @@ -30459,10 +29625,7 @@ impl WriteXdr for TransactionV0Ext { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV0 { pub source_account_ed25519: Uint256, pub fee: u32, @@ -30525,10 +29688,7 @@ impl WriteXdr for TransactionV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV0Envelope { pub tx: TransactionV0, pub signatures: VecM, @@ -30577,10 +29737,7 @@ impl WriteXdr for TransactionV0Envelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionExt { V0, @@ -30708,10 +29865,7 @@ impl WriteXdr for TransactionExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Transaction { pub source_account: MuxedAccount, pub fee: u32, @@ -30774,10 +29928,7 @@ impl WriteXdr for Transaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionV1Envelope { pub tx: Transaction, pub signatures: VecM, @@ -30824,10 +29975,7 @@ impl WriteXdr for TransactionV1Envelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionInnerTx { Tx(TransactionV1Envelope), @@ -30928,10 +30076,7 @@ impl WriteXdr for FeeBumpTransactionInnerTx { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum FeeBumpTransactionExt { V0, @@ -31043,10 +30188,7 @@ impl WriteXdr for FeeBumpTransactionExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FeeBumpTransaction { pub fee_source: MuxedAccount, pub fee: i64, @@ -31100,10 +30242,7 @@ impl WriteXdr for FeeBumpTransaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct FeeBumpTransactionEnvelope { pub tx: FeeBumpTransaction, pub signatures: VecM, @@ -31154,10 +30293,7 @@ impl WriteXdr for FeeBumpTransactionEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionEnvelope { TxV0(TransactionV0Envelope), @@ -31277,10 +30413,7 @@ impl WriteXdr for TransactionEnvelope { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionSignaturePayloadTaggedTransaction { Tx(Transaction), @@ -31393,10 +30526,7 @@ impl WriteXdr for TransactionSignaturePayloadTaggedTransaction { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionSignaturePayload { pub network_id: Hash, pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction, @@ -31444,10 +30574,7 @@ impl WriteXdr for TransactionSignaturePayload { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimAtomType { V0 = 0, @@ -31568,10 +30695,7 @@ impl WriteXdr for ClaimAtomType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimOfferAtomV0 { pub seller_ed25519: Uint256, pub offer_id: i64, @@ -31638,10 +30762,7 @@ impl WriteXdr for ClaimOfferAtomV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimOfferAtom { pub seller_id: AccountId, pub offer_id: i64, @@ -31706,10 +30827,7 @@ impl WriteXdr for ClaimOfferAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ClaimLiquidityAtom { pub liquidity_pool_id: PoolId, pub asset_sold: Asset, @@ -31769,10 +30887,7 @@ impl WriteXdr for ClaimLiquidityAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimAtom { V0(ClaimOfferAtomV0), @@ -31896,10 +31011,7 @@ impl WriteXdr for ClaimAtom { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CreateAccountResultCode { Success = 0, @@ -32031,10 +31143,7 @@ impl WriteXdr for CreateAccountResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum CreateAccountResult { Success, @@ -32178,10 +31287,7 @@ impl WriteXdr for CreateAccountResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PaymentResultCode { Success = 0, @@ -32343,10 +31449,7 @@ impl WriteXdr for PaymentResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PaymentResult { Success, @@ -32537,10 +31640,7 @@ impl WriteXdr for PaymentResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PathPaymentStrictReceiveResultCode { Success = 0, @@ -32707,10 +31807,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SimplePaymentResult { pub destination: AccountId, pub asset: Asset, @@ -32759,10 +31856,7 @@ impl WriteXdr for SimplePaymentResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictReceiveResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -32829,10 +31923,7 @@ impl WriteXdr for PathPaymentStrictReceiveResultSuccess { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictReceiveResult { Success(PathPaymentStrictReceiveResultSuccess), @@ -33046,10 +32137,7 @@ impl WriteXdr for PathPaymentStrictReceiveResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PathPaymentStrictSendResultCode { Success = 0, @@ -33215,10 +32303,7 @@ impl WriteXdr for PathPaymentStrictSendResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct PathPaymentStrictSendResultSuccess { pub offers: VecM, pub last: SimplePaymentResult, @@ -33284,10 +32369,7 @@ impl WriteXdr for PathPaymentStrictSendResultSuccess { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PathPaymentStrictSendResult { Success(PathPaymentStrictSendResultSuccess), @@ -33500,10 +32582,7 @@ impl WriteXdr for PathPaymentStrictSendResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageSellOfferResultCode { Success = 0, @@ -33671,10 +32750,7 @@ impl WriteXdr for ManageSellOfferResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageOfferEffect { Created = 0, @@ -33790,10 +32866,7 @@ impl WriteXdr for ManageOfferEffect { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageOfferSuccessResultOffer { Created(OfferEntry), @@ -33917,10 +32990,7 @@ impl WriteXdr for ManageOfferSuccessResultOffer { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ManageOfferSuccessResult { pub offers_claimed: VecM, pub offer: ManageOfferSuccessResultOffer, @@ -33980,10 +33050,7 @@ impl WriteXdr for ManageOfferSuccessResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageSellOfferResult { Success(ManageOfferSuccessResult), @@ -34193,10 +33260,7 @@ impl WriteXdr for ManageSellOfferResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageBuyOfferResultCode { Success = 0, @@ -34376,10 +33440,7 @@ impl WriteXdr for ManageBuyOfferResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageBuyOfferResult { Success(ManageOfferSuccessResult), @@ -34582,10 +33643,7 @@ impl WriteXdr for ManageBuyOfferResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SetOptionsResultCode { Success = 0, @@ -34753,10 +33811,7 @@ impl WriteXdr for SetOptionsResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SetOptionsResult { Success, @@ -34944,10 +33999,7 @@ impl WriteXdr for SetOptionsResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ChangeTrustResultCode { Success = 0, @@ -35103,10 +34155,7 @@ impl WriteXdr for ChangeTrustResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ChangeTrustResult { Success, @@ -35278,10 +34327,7 @@ impl WriteXdr for ChangeTrustResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AllowTrustResultCode { Success = 0, @@ -35425,10 +34471,7 @@ impl WriteXdr for AllowTrustResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AllowTrustResult { Success, @@ -35584,10 +34627,7 @@ impl WriteXdr for AllowTrustResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum AccountMergeResultCode { Success = 0, @@ -35737,10 +34777,7 @@ impl WriteXdr for AccountMergeResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AccountMergeResult { Success(i64), @@ -35896,10 +34933,7 @@ impl WriteXdr for AccountMergeResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum InflationResultCode { Success = 0, @@ -36005,10 +35039,7 @@ impl WriteXdr for InflationResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InflationPayout { pub destination: AccountId, pub amount: i64, @@ -36057,10 +35088,7 @@ impl WriteXdr for InflationPayout { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InflationResult { Success(VecM), @@ -36176,10 +35204,7 @@ impl WriteXdr for InflationResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ManageDataResultCode { Success = 0, @@ -36311,10 +35336,7 @@ impl WriteXdr for ManageDataResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ManageDataResult { Success, @@ -36449,10 +35471,7 @@ impl WriteXdr for ManageDataResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BumpSequenceResultCode { Success = 0, @@ -36563,10 +35582,7 @@ impl WriteXdr for BumpSequenceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BumpSequenceResult { Success, @@ -36679,10 +35695,7 @@ impl WriteXdr for BumpSequenceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CreateClaimableBalanceResultCode { Success = 0, @@ -36821,10 +35834,7 @@ impl WriteXdr for CreateClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum CreateClaimableBalanceResult { Success(ClaimableBalanceId), @@ -36971,10 +35981,7 @@ impl WriteXdr for CreateClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClaimClaimableBalanceResultCode { Success = 0, @@ -37112,10 +36119,7 @@ impl WriteXdr for ClaimClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClaimClaimableBalanceResult { Success, @@ -37261,10 +36265,7 @@ impl WriteXdr for ClaimClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum BeginSponsoringFutureReservesResultCode { Success = 0, @@ -37387,10 +36388,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum BeginSponsoringFutureReservesResult { Success, @@ -37516,10 +36514,7 @@ impl WriteXdr for BeginSponsoringFutureReservesResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum EndSponsoringFutureReservesResultCode { Success = 0, @@ -37631,10 +36626,7 @@ impl WriteXdr for EndSponsoringFutureReservesResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum EndSponsoringFutureReservesResult { Success, @@ -37751,10 +36743,7 @@ impl WriteXdr for EndSponsoringFutureReservesResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RevokeSponsorshipResultCode { Success = 0, @@ -37892,10 +36881,7 @@ impl WriteXdr for RevokeSponsorshipResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RevokeSponsorshipResult { Success, @@ -38042,10 +37028,7 @@ impl WriteXdr for RevokeSponsorshipResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClawbackResultCode { Success = 0, @@ -38177,10 +37160,7 @@ impl WriteXdr for ClawbackResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClawbackResult { Success, @@ -38318,10 +37298,7 @@ impl WriteXdr for ClawbackResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ClawbackClaimableBalanceResultCode { Success = 0, @@ -38444,10 +37421,7 @@ impl WriteXdr for ClawbackClaimableBalanceResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ClawbackClaimableBalanceResult { Success, @@ -38578,10 +37552,7 @@ impl WriteXdr for ClawbackClaimableBalanceResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SetTrustLineFlagsResultCode { Success = 0, @@ -38719,10 +37690,7 @@ impl WriteXdr for SetTrustLineFlagsResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SetTrustLineFlagsResult { Success, @@ -38876,10 +37844,7 @@ impl WriteXdr for SetTrustLineFlagsResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolDepositResultCode { Success = 0, @@ -39029,10 +37994,7 @@ impl WriteXdr for LiquidityPoolDepositResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolDepositResult { Success, @@ -39197,10 +38159,7 @@ impl WriteXdr for LiquidityPoolDepositResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum LiquidityPoolWithdrawResultCode { Success = 0, @@ -39338,10 +38297,7 @@ impl WriteXdr for LiquidityPoolWithdrawResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LiquidityPoolWithdrawResult { Success, @@ -39489,10 +38445,7 @@ impl WriteXdr for LiquidityPoolWithdrawResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum InvokeHostFunctionResultCode { Success = 0, @@ -39630,10 +38583,7 @@ impl WriteXdr for InvokeHostFunctionResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InvokeHostFunctionResult { Success(Hash), @@ -39783,10 +38733,7 @@ impl WriteXdr for InvokeHostFunctionResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum ExtendFootprintTtlResultCode { Success = 0, @@ -39912,10 +38859,7 @@ impl WriteXdr for ExtendFootprintTtlResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ExtendFootprintTtlResult { Success, @@ -40051,10 +38995,7 @@ impl WriteXdr for ExtendFootprintTtlResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum RestoreFootprintResultCode { Success = 0, @@ -40180,10 +39121,7 @@ impl WriteXdr for RestoreFootprintResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum RestoreFootprintResult { Success, @@ -40320,10 +39258,7 @@ impl WriteXdr for RestoreFootprintResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum OperationResultCode { OpInner = 0, @@ -40512,10 +39447,7 @@ impl WriteXdr for OperationResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationResultTr { CreateAccount(CreateAccountResult), @@ -40904,10 +39836,7 @@ impl WriteXdr for OperationResultTr { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum OperationResult { OpInner(OperationResultTr), @@ -41075,10 +40004,7 @@ impl WriteXdr for OperationResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum TransactionResultCode { TxFeeBumpInnerSuccess = 1, @@ -41294,10 +40220,7 @@ impl WriteXdr for TransactionResultCode { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultResult { TxSuccess(VecM), @@ -41518,10 +40441,7 @@ impl WriteXdr for InnerTransactionResultResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum InnerTransactionResultExt { V0, @@ -41655,10 +40575,7 @@ impl WriteXdr for InnerTransactionResultExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InnerTransactionResult { pub fee_charged: i64, pub result: InnerTransactionResultResult, @@ -41707,10 +40624,7 @@ impl WriteXdr for InnerTransactionResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct InnerTransactionResultPair { pub transaction_hash: Hash, pub result: InnerTransactionResult, @@ -41778,10 +40692,7 @@ impl WriteXdr for InnerTransactionResultPair { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionResultResult { TxFeeBumpInnerSuccess(InnerTransactionResultPair), @@ -42020,10 +40931,7 @@ impl WriteXdr for TransactionResultResult { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum TransactionResultExt { V0, @@ -42158,10 +41066,7 @@ impl WriteXdr for TransactionResultExt { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct TransactionResult { pub fee_charged: i64, pub result: TransactionResultResult, @@ -42205,10 +41110,6 @@ impl WriteXdr for TransactionResult { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Hash(pub [u8; 32]); impl core::fmt::Debug for Hash { @@ -42239,6 +41140,37 @@ impl core::str::FromStr for Hash { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Hash { + fn schema_name() -> String { + "Hash".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(32 * 2), + min_length: Some(32 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 32] { #[must_use] fn from(x: Hash) -> Self { @@ -42327,10 +41259,6 @@ impl AsRef<[u8]> for Hash { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct Uint256(pub [u8; 32]); impl core::fmt::Debug for Uint256 { @@ -42361,6 +41289,37 @@ impl core::str::FromStr for Uint256 { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for Uint256 { + fn schema_name() -> String { + "Uint256".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(32 * 2), + min_length: Some(32 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 32] { #[must_use] fn from(x: Uint256) -> Self { @@ -42482,10 +41441,7 @@ pub type Int64 = i64; derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct TimePoint(pub u64); @@ -42541,10 +41497,7 @@ impl WriteXdr for TimePoint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Duration(pub u64); @@ -42605,10 +41558,7 @@ impl WriteXdr for Duration { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ExtensionPoint { V0, @@ -42714,10 +41664,7 @@ impl WriteXdr for ExtensionPoint { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum CryptoKeyType { Ed25519 = 0, @@ -42843,10 +41790,7 @@ impl WriteXdr for CryptoKeyType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum PublicKeyType { PublicKeyTypeEd25519 = 0, @@ -42951,10 +41895,7 @@ impl WriteXdr for PublicKeyType { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[repr(i32)] pub enum SignerKeyType { Ed25519 = 0, @@ -43071,10 +42012,7 @@ impl WriteXdr for SignerKeyType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PublicKey { PublicKeyTypeEd25519(Uint256), @@ -43177,10 +42115,7 @@ impl WriteXdr for PublicKey { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, pub payload: BytesM<64>, @@ -43240,10 +42175,7 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SignerKey { Ed25519(Uint256), @@ -43363,10 +42295,7 @@ impl WriteXdr for SignerKey { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct Signature(pub BytesM<64>); @@ -43470,10 +42399,6 @@ impl AsRef<[u8]> for Signature { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] pub struct SignatureHint(pub [u8; 4]); impl core::fmt::Debug for SignatureHint { @@ -43504,6 +42429,37 @@ impl core::str::FromStr for SignatureHint { hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into() } } +#[cfg(feature = "schemars")] +impl schemars::JsonSchema for SignatureHint { + fn schema_name() -> String { + "SignatureHint".to_string() + } + + fn is_referenceable() -> bool { + false + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let schema_ = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema_ { + schema.extensions.insert( + "contentEncoding".to_owned(), + serde_json::Value::String("hex".to_string()), + ); + schema.extensions.insert( + "contentMediaType".to_owned(), + serde_json::Value::String("application/binary".to_string()), + ); + mut_string(schema.into(), |string| schemars::schema::StringValidation { + max_length: Some(4 * 2), + min_length: Some(4 * 2), + ..string + }) + } else { + schema_ + } + } +} impl From for [u8; 4] { #[must_use] fn from(x: SignatureHint) -> Self { @@ -43592,10 +42548,7 @@ impl AsRef<[u8]> for SignatureHint { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -43650,10 +42603,7 @@ impl WriteXdr for NodeId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct AccountId(pub PublicKey); @@ -43712,10 +42662,7 @@ impl WriteXdr for AccountId { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Curve25519Secret { pub key: [u8; 32], } @@ -43757,10 +42704,7 @@ impl WriteXdr for Curve25519Secret { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct Curve25519Public { pub key: [u8; 32], } @@ -43802,10 +42746,7 @@ impl WriteXdr for Curve25519Public { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HmacSha256Key { pub key: [u8; 32], } @@ -43847,10 +42788,7 @@ impl WriteXdr for HmacSha256Key { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct HmacSha256Mac { pub mac: [u8; 32], } @@ -43882,10 +42820,7 @@ impl WriteXdr for HmacSha256Mac { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum TypeVariant { Value, ScpBallot, @@ -46049,10 +44984,7 @@ impl core::str::FromStr for TypeVariant { serde(rename_all = "snake_case"), serde(untagged) )] -#[cfg_attr( - all(feature = "schemars", feature = "serde", feature = "alloc"), - derive(schemars::JsonSchema) -)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum Type { Value(Box), ScpBallot(Box), diff --git a/tests/serde_tx_schema.rs b/tests/serde_tx_schema.rs index 4da1775c..1c4a95fc 100644 --- a/tests/serde_tx_schema.rs +++ b/tests/serde_tx_schema.rs @@ -2,3433 +2,12 @@ #![cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] use stellar_xdr::curr as stellar_xdr; -use stellar_xdr::TransactionEnvelope; #[allow(clippy::too_many_lines)] #[test] fn test_serde_tx_schema() -> Result<(), Box> { - let schema = schemars::schema_for!(TransactionEnvelope); + let schema = schemars::schema_for!(stellar_xdr::ScVal); let s = serde_json::to_string_pretty(&schema)?; println!("{s}"); - assert_eq!( - s, - r##"{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "TransactionEnvelope", - "description": "TransactionEnvelope is an XDR Union defines as:\n\n```text union TransactionEnvelope switch (EnvelopeType type) { case ENVELOPE_TYPE_TX_V0: TransactionV0Envelope v0; case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; case ENVELOPE_TYPE_TX_FEE_BUMP: FeeBumpTransactionEnvelope feeBump; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "tx_v0" - ], - "properties": { - "tx_v0": { - "$ref": "#/definitions/TransactionV0Envelope" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "tx" - ], - "properties": { - "tx": { - "$ref": "#/definitions/TransactionV1Envelope" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "tx_fee_bump" - ], - "properties": { - "tx_fee_bump": { - "$ref": "#/definitions/FeeBumpTransactionEnvelope" - } - }, - "additionalProperties": false - } - ], - "definitions": { - "AccountId": { - "description": "AccountId is an XDR Typedef defines as:\n\n```text typedef PublicKey AccountID; ```", - "allOf": [ - { - "$ref": "#/definitions/PublicKey" - } - ] - }, - "AllowTrustOp": { - "description": "AllowTrustOp is an XDR Struct defines as:\n\n```text struct AllowTrustOp { AccountID trustor; AssetCode asset;\n\n// One of 0, AUTHORIZED_FLAG, or AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG uint32 authorize; }; ```", - "type": "object", - "required": [ - "asset", - "authorize", - "trustor" - ], - "properties": { - "asset": { - "$ref": "#/definitions/AssetCode" - }, - "authorize": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "trustor": { - "$ref": "#/definitions/AccountId" - } - } - }, - "AlphaNum12": { - "description": "AlphaNum12 is an XDR Struct defines as:\n\n```text struct AlphaNum12 { AssetCode12 assetCode; AccountID issuer; }; ```", - "type": "object", - "required": [ - "asset_code", - "issuer" - ], - "properties": { - "asset_code": { - "$ref": "#/definitions/AssetCode12" - }, - "issuer": { - "$ref": "#/definitions/AccountId" - } - } - }, - "AlphaNum4": { - "description": "AlphaNum4 is an XDR Struct defines as:\n\n```text struct AlphaNum4 { AssetCode4 assetCode; AccountID issuer; }; ```", - "type": "object", - "required": [ - "asset_code", - "issuer" - ], - "properties": { - "asset_code": { - "$ref": "#/definitions/AssetCode4" - }, - "issuer": { - "$ref": "#/definitions/AccountId" - } - } - }, - "Asset": { - "description": "Asset is an XDR Union defines as:\n\n```text union Asset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\n// add other asset types here in the future }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "native" - ] - }, - { - "type": "object", - "required": [ - "credit_alphanum4" - ], - "properties": { - "credit_alphanum4": { - "$ref": "#/definitions/AlphaNum4" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "credit_alphanum12" - ], - "properties": { - "credit_alphanum12": { - "$ref": "#/definitions/AlphaNum12" - } - }, - "additionalProperties": false - } - ] - }, - "AssetCode": { - "description": "AssetCode is an XDR Union defines as:\n\n```text union AssetCode switch (AssetType type) { case ASSET_TYPE_CREDIT_ALPHANUM4: AssetCode4 assetCode4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AssetCode12 assetCode12;\n\n// add other asset types here in the future }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "CreditAlphanum4" - ], - "properties": { - "CreditAlphanum4": { - "$ref": "#/definitions/AssetCode4" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "CreditAlphanum12" - ], - "properties": { - "CreditAlphanum12": { - "$ref": "#/definitions/AssetCode12" - } - }, - "additionalProperties": false - } - ] - }, - "AssetCode12": { - "description": "AssetCode12 is an XDR Typedef defines as:\n\n```text typedef opaque AssetCode12[12]; ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 12, - "minItems": 12 - }, - "AssetCode4": { - "description": "AssetCode4 is an XDR Typedef defines as:\n\n```text typedef opaque AssetCode4[4]; ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 4, - "minItems": 4 - }, - "BeginSponsoringFutureReservesOp": { - "description": "BeginSponsoringFutureReservesOp is an XDR Struct defines as:\n\n```text struct BeginSponsoringFutureReservesOp { AccountID sponsoredID; }; ```", - "type": "object", - "required": [ - "sponsored_id" - ], - "properties": { - "sponsored_id": { - "$ref": "#/definitions/AccountId" - } - } - }, - "BumpSequenceOp": { - "description": "BumpSequenceOp is an XDR Struct defines as:\n\n```text struct BumpSequenceOp { SequenceNumber bumpTo; }; ```", - "type": "object", - "required": [ - "bump_to" - ], - "properties": { - "bump_to": { - "$ref": "#/definitions/SequenceNumber" - } - } - }, - "BytesM_for_4294967295": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "BytesM_for_64": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "ChangeTrustAsset": { - "description": "ChangeTrustAsset is an XDR Union defines as:\n\n```text union ChangeTrustAsset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\ncase ASSET_TYPE_POOL_SHARE: LiquidityPoolParameters liquidityPool;\n\n// add other asset types here in the future }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "native" - ] - }, - { - "type": "object", - "required": [ - "credit_alphanum4" - ], - "properties": { - "credit_alphanum4": { - "$ref": "#/definitions/AlphaNum4" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "credit_alphanum12" - ], - "properties": { - "credit_alphanum12": { - "$ref": "#/definitions/AlphaNum12" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "pool_share" - ], - "properties": { - "pool_share": { - "$ref": "#/definitions/LiquidityPoolParameters" - } - }, - "additionalProperties": false - } - ] - }, - "ChangeTrustOp": { - "description": "ChangeTrustOp is an XDR Struct defines as:\n\n```text struct ChangeTrustOp { ChangeTrustAsset line;\n\n// if limit is set to 0, deletes the trust line int64 limit; }; ```", - "type": "object", - "required": [ - "limit", - "line" - ], - "properties": { - "limit": { - "type": "integer", - "format": "int64" - }, - "line": { - "$ref": "#/definitions/ChangeTrustAsset" - } - } - }, - "ClaimClaimableBalanceOp": { - "description": "ClaimClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct ClaimClaimableBalanceOp { ClaimableBalanceID balanceID; }; ```", - "type": "object", - "required": [ - "balance_id" - ], - "properties": { - "balance_id": { - "$ref": "#/definitions/ClaimableBalanceId" - } - } - }, - "ClaimPredicate": { - "description": "ClaimPredicate is an XDR Union defines as:\n\n```text union ClaimPredicate switch (ClaimPredicateType type) { case CLAIM_PREDICATE_UNCONDITIONAL: void; case CLAIM_PREDICATE_AND: ClaimPredicate andPredicates<2>; case CLAIM_PREDICATE_OR: ClaimPredicate orPredicates<2>; case CLAIM_PREDICATE_NOT: ClaimPredicate* notPredicate; case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME: int64 absBefore; // Predicate will be true if closeTime < absBefore case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME: int64 relBefore; // Seconds since closeTime of the ledger in which the // ClaimableBalanceEntry was created }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "unconditional" - ] - }, - { - "type": "object", - "required": [ - "and" - ], - "properties": { - "and": { - "$ref": "#/definitions/VecM_for_ClaimPredicate_and_2" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "or" - ], - "properties": { - "or": { - "$ref": "#/definitions/VecM_for_ClaimPredicate_and_2" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "not" - ], - "properties": { - "not": { - "anyOf": [ - { - "$ref": "#/definitions/ClaimPredicate" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "before_absolute_time" - ], - "properties": { - "before_absolute_time": { - "type": "integer", - "format": "int64" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "before_relative_time" - ], - "properties": { - "before_relative_time": { - "type": "integer", - "format": "int64" - } - }, - "additionalProperties": false - } - ] - }, - "ClaimableBalanceId": { - "description": "ClaimableBalanceId is an XDR Union defines as:\n\n```text union ClaimableBalanceID switch (ClaimableBalanceIDType type) { case CLAIMABLE_BALANCE_ID_TYPE_V0: Hash v0; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "claimable_balance_id_type_v0" - ], - "properties": { - "claimable_balance_id_type_v0": { - "$ref": "#/definitions/Hash" - } - }, - "additionalProperties": false - } - ] - }, - "Claimant": { - "description": "Claimant is an XDR Union defines as:\n\n```text union Claimant switch (ClaimantType type) { case CLAIMANT_TYPE_V0: struct { AccountID destination; // The account that can use this condition ClaimPredicate predicate; // Claimable if predicate is true } v0; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "claimant_type_v0" - ], - "properties": { - "claimant_type_v0": { - "$ref": "#/definitions/ClaimantV0" - } - }, - "additionalProperties": false - } - ] - }, - "ClaimantV0": { - "description": "ClaimantV0 is an XDR NestedStruct defines as:\n\n```text struct { AccountID destination; // The account that can use this condition ClaimPredicate predicate; // Claimable if predicate is true } ```", - "type": "object", - "required": [ - "destination", - "predicate" - ], - "properties": { - "destination": { - "$ref": "#/definitions/AccountId" - }, - "predicate": { - "$ref": "#/definitions/ClaimPredicate" - } - } - }, - "ClawbackClaimableBalanceOp": { - "description": "ClawbackClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct ClawbackClaimableBalanceOp { ClaimableBalanceID balanceID; }; ```", - "type": "object", - "required": [ - "balance_id" - ], - "properties": { - "balance_id": { - "$ref": "#/definitions/ClaimableBalanceId" - } - } - }, - "ClawbackOp": { - "description": "ClawbackOp is an XDR Struct defines as:\n\n```text struct ClawbackOp { Asset asset; MuxedAccount from; int64 amount; }; ```", - "type": "object", - "required": [ - "amount", - "asset", - "from" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "asset": { - "$ref": "#/definitions/Asset" - }, - "from": { - "$ref": "#/definitions/MuxedAccount" - } - } - }, - "ConfigSettingId": { - "description": "ConfigSettingId is an XDR Enum defines as:\n\n```text enum ConfigSettingID { CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES = 0, CONFIG_SETTING_CONTRACT_COMPUTE_V0 = 1, CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 = 2, CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 = 3, CONFIG_SETTING_CONTRACT_EVENTS_V0 = 4, CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 = 5, CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS = 6, CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES = 7, CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES = 8, CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9, CONFIG_SETTING_STATE_ARCHIVAL = 10, CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11, CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW = 12, CONFIG_SETTING_EVICTION_ITERATOR = 13 }; ```", - "type": "string", - "enum": [ - "contract_max_size_bytes", - "contract_compute_v0", - "contract_ledger_cost_v0", - "contract_historical_data_v0", - "contract_events_v0", - "contract_bandwidth_v0", - "contract_cost_params_cpu_instructions", - "contract_cost_params_memory_bytes", - "contract_data_key_size_bytes", - "contract_data_entry_size_bytes", - "state_archival", - "contract_execution_lanes", - "bucketlist_size_window", - "eviction_iterator" - ] - }, - "ContractDataDurability": { - "description": "ContractDataDurability is an XDR Enum defines as:\n\n```text enum ContractDataDurability { TEMPORARY = 0, PERSISTENT = 1 }; ```", - "type": "string", - "enum": [ - "temporary", - "persistent" - ] - }, - "ContractExecutable": { - "description": "ContractExecutable is an XDR Union defines as:\n\n```text union ContractExecutable switch (ContractExecutableType type) { case CONTRACT_EXECUTABLE_WASM: Hash wasm_hash; case CONTRACT_EXECUTABLE_STELLAR_ASSET: void; }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "stellar_asset" - ] - }, - { - "type": "object", - "required": [ - "wasm" - ], - "properties": { - "wasm": { - "$ref": "#/definitions/Hash" - } - }, - "additionalProperties": false - } - ] - }, - "ContractIdPreimage": { - "description": "ContractIdPreimage is an XDR Union defines as:\n\n```text union ContractIDPreimage switch (ContractIDPreimageType type) { case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: struct { SCAddress address; uint256 salt; } fromAddress; case CONTRACT_ID_PREIMAGE_FROM_ASSET: Asset fromAsset; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "$ref": "#/definitions/ContractIdPreimageFromAddress" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "asset" - ], - "properties": { - "asset": { - "$ref": "#/definitions/Asset" - } - }, - "additionalProperties": false - } - ] - }, - "ContractIdPreimageFromAddress": { - "description": "ContractIdPreimageFromAddress is an XDR NestedStruct defines as:\n\n```text struct { SCAddress address; uint256 salt; } ```", - "type": "object", - "required": [ - "address", - "salt" - ], - "properties": { - "address": { - "$ref": "#/definitions/ScAddress" - }, - "salt": { - "$ref": "#/definitions/Uint256" - } - } - }, - "CreateAccountOp": { - "description": "CreateAccountOp is an XDR Struct defines as:\n\n```text struct CreateAccountOp { AccountID destination; // account to create int64 startingBalance; // amount they end up with }; ```", - "type": "object", - "required": [ - "destination", - "starting_balance" - ], - "properties": { - "destination": { - "$ref": "#/definitions/AccountId" - }, - "starting_balance": { - "type": "integer", - "format": "int64" - } - } - }, - "CreateClaimableBalanceOp": { - "description": "CreateClaimableBalanceOp is an XDR Struct defines as:\n\n```text struct CreateClaimableBalanceOp { Asset asset; int64 amount; Claimant claimants<10>; }; ```", - "type": "object", - "required": [ - "amount", - "asset", - "claimants" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "asset": { - "$ref": "#/definitions/Asset" - }, - "claimants": { - "$ref": "#/definitions/VecM_for_Claimant_and_10" - } - } - }, - "CreateContractArgs": { - "description": "CreateContractArgs is an XDR Struct defines as:\n\n```text struct CreateContractArgs { ContractIDPreimage contractIDPreimage; ContractExecutable executable; }; ```", - "type": "object", - "required": [ - "contract_id_preimage", - "executable" - ], - "properties": { - "contract_id_preimage": { - "$ref": "#/definitions/ContractIdPreimage" - }, - "executable": { - "$ref": "#/definitions/ContractExecutable" - } - } - }, - "CreatePassiveSellOfferOp": { - "description": "CreatePassiveSellOfferOp is an XDR Struct defines as:\n\n```text struct CreatePassiveSellOfferOp { Asset selling; // A Asset buying; // B int64 amount; // amount taker gets Price price; // cost of A in terms of B }; ```", - "type": "object", - "required": [ - "amount", - "buying", - "price", - "selling" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "buying": { - "$ref": "#/definitions/Asset" - }, - "price": { - "$ref": "#/definitions/Price" - }, - "selling": { - "$ref": "#/definitions/Asset" - } - } - }, - "DataValue": { - "description": "DataValue is an XDR Typedef defines as:\n\n```text typedef opaque DataValue<64>; ```", - "allOf": [ - { - "$ref": "#/definitions/BytesM_for_64" - } - ] - }, - "DecoratedSignature": { - "description": "DecoratedSignature is an XDR Struct defines as:\n\n```text struct DecoratedSignature { SignatureHint hint; // last 4 bytes of the public key, used as a hint Signature signature; // actual signature }; ```", - "type": "object", - "required": [ - "hint", - "signature" - ], - "properties": { - "hint": { - "$ref": "#/definitions/SignatureHint" - }, - "signature": { - "$ref": "#/definitions/Signature" - } - } - }, - "Duration": { - "description": "Duration is an XDR Typedef defines as:\n\n```text typedef uint64 Duration; ```", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "ExtendFootprintTtlOp": { - "description": "ExtendFootprintTtlOp is an XDR Struct defines as:\n\n```text struct ExtendFootprintTTLOp { ExtensionPoint ext; uint32 extendTo; }; ```", - "type": "object", - "required": [ - "ext", - "extend_to" - ], - "properties": { - "ext": { - "$ref": "#/definitions/ExtensionPoint" - }, - "extend_to": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "ExtensionPoint": { - "description": "ExtensionPoint is an XDR Union defines as:\n\n```text union ExtensionPoint switch (int v) { case 0: void; }; ```", - "type": "string", - "enum": [ - "v0" - ] - }, - "FeeBumpTransaction": { - "description": "FeeBumpTransaction is an XDR Struct defines as:\n\n```text struct FeeBumpTransaction { MuxedAccount feeSource; int64 fee; union switch (EnvelopeType type) { case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; } innerTx; union switch (int v) { case 0: void; } ext; }; ```", - "type": "object", - "required": [ - "ext", - "fee", - "fee_source", - "inner_tx" - ], - "properties": { - "ext": { - "$ref": "#/definitions/FeeBumpTransactionExt" - }, - "fee": { - "type": "integer", - "format": "int64" - }, - "fee_source": { - "$ref": "#/definitions/MuxedAccount" - }, - "inner_tx": { - "$ref": "#/definitions/FeeBumpTransactionInnerTx" - } - } - }, - "FeeBumpTransactionEnvelope": { - "description": "FeeBumpTransactionEnvelope is an XDR Struct defines as:\n\n```text struct FeeBumpTransactionEnvelope { FeeBumpTransaction tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", - "type": "object", - "required": [ - "signatures", - "tx" - ], - "properties": { - "signatures": { - "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" - }, - "tx": { - "$ref": "#/definitions/FeeBumpTransaction" - } - } - }, - "FeeBumpTransactionExt": { - "description": "FeeBumpTransactionExt is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; } ```", - "type": "string", - "enum": [ - "v0" - ] - }, - "FeeBumpTransactionInnerTx": { - "description": "FeeBumpTransactionInnerTx is an XDR NestedUnion defines as:\n\n```text union switch (EnvelopeType type) { case ENVELOPE_TYPE_TX: TransactionV1Envelope v1; } ```", - "oneOf": [ - { - "type": "object", - "required": [ - "tx" - ], - "properties": { - "tx": { - "$ref": "#/definitions/TransactionV1Envelope" - } - }, - "additionalProperties": false - } - ] - }, - "Hash": { - "description": "Hash is an XDR Typedef defines as:\n\n```text typedef opaque Hash[32]; ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32 - }, - "HostFunction": { - "description": "HostFunction is an XDR Union defines as:\n\n```text union HostFunction switch (HostFunctionType type) { case HOST_FUNCTION_TYPE_INVOKE_CONTRACT: InvokeContractArgs invokeContract; case HOST_FUNCTION_TYPE_CREATE_CONTRACT: CreateContractArgs createContract; case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: opaque wasm<>; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "invoke_contract" - ], - "properties": { - "invoke_contract": { - "$ref": "#/definitions/InvokeContractArgs" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "create_contract" - ], - "properties": { - "create_contract": { - "$ref": "#/definitions/CreateContractArgs" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "upload_contract_wasm" - ], - "properties": { - "upload_contract_wasm": { - "$ref": "#/definitions/BytesM_for_4294967295" - } - }, - "additionalProperties": false - } - ] - }, - "Int128Parts": { - "description": "Int128Parts is an XDR Struct defines as:\n\n```text struct Int128Parts { int64 hi; uint64 lo; }; ```", - "type": "object", - "required": [ - "hi", - "lo" - ], - "properties": { - "hi": { - "type": "integer", - "format": "int64" - }, - "lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "Int256Parts": { - "description": "Int256Parts is an XDR Struct defines as:\n\n```text struct Int256Parts { int64 hi_hi; uint64 hi_lo; uint64 lo_hi; uint64 lo_lo; }; ```", - "type": "object", - "required": [ - "hi_hi", - "hi_lo", - "lo_hi", - "lo_lo" - ], - "properties": { - "hi_hi": { - "type": "integer", - "format": "int64" - }, - "hi_lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "lo_hi": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "lo_lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "InvokeContractArgs": { - "description": "InvokeContractArgs is an XDR Struct defines as:\n\n```text struct InvokeContractArgs { SCAddress contractAddress; SCSymbol functionName; SCVal args<>; }; ```", - "type": "object", - "required": [ - "args", - "contract_address", - "function_name" - ], - "properties": { - "args": { - "$ref": "#/definitions/VecM_for_ScVal_and_4294967295" - }, - "contract_address": { - "$ref": "#/definitions/ScAddress" - }, - "function_name": { - "$ref": "#/definitions/ScSymbol" - } - } - }, - "InvokeHostFunctionOp": { - "description": "InvokeHostFunctionOp is an XDR Struct defines as:\n\n```text struct InvokeHostFunctionOp { // Host function to invoke. HostFunction hostFunction; // Per-address authorizations for this host function. SorobanAuthorizationEntry auth<>; }; ```", - "type": "object", - "required": [ - "auth", - "host_function" - ], - "properties": { - "auth": { - "$ref": "#/definitions/VecM_for_SorobanAuthorizationEntry_and_4294967295" - }, - "host_function": { - "$ref": "#/definitions/HostFunction" - } - } - }, - "LedgerBounds": { - "description": "LedgerBounds is an XDR Struct defines as:\n\n```text struct LedgerBounds { uint32 minLedger; uint32 maxLedger; // 0 here means no maxLedger }; ```", - "type": "object", - "required": [ - "max_ledger", - "min_ledger" - ], - "properties": { - "max_ledger": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "min_ledger": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "LedgerFootprint": { - "description": "LedgerFootprint is an XDR Struct defines as:\n\n```text struct LedgerFootprint { LedgerKey readOnly<>; LedgerKey readWrite<>; }; ```", - "type": "object", - "required": [ - "read_only", - "read_write" - ], - "properties": { - "read_only": { - "$ref": "#/definitions/VecM_for_LedgerKey_and_4294967295" - }, - "read_write": { - "$ref": "#/definitions/VecM_for_LedgerKey_and_4294967295" - } - } - }, - "LedgerKey": { - "description": "LedgerKey is an XDR Union defines as:\n\n```text union LedgerKey switch (LedgerEntryType type) { case ACCOUNT: struct { AccountID accountID; } account;\n\ncase TRUSTLINE: struct { AccountID accountID; TrustLineAsset asset; } trustLine;\n\ncase OFFER: struct { AccountID sellerID; int64 offerID; } offer;\n\ncase DATA: struct { AccountID accountID; string64 dataName; } data;\n\ncase CLAIMABLE_BALANCE: struct { ClaimableBalanceID balanceID; } claimableBalance;\n\ncase LIQUIDITY_POOL: struct { PoolID liquidityPoolID; } liquidityPool; case CONTRACT_DATA: struct { SCAddress contract; SCVal key; ContractDataDurability durability; } contractData; case CONTRACT_CODE: struct { Hash hash; } contractCode; case CONFIG_SETTING: struct { ConfigSettingID configSettingID; } configSetting; case TTL: struct { // Hash of the LedgerKey that is associated with this TTLEntry Hash keyHash; } ttl; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "account" - ], - "properties": { - "account": { - "$ref": "#/definitions/LedgerKeyAccount" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "trustline" - ], - "properties": { - "trustline": { - "$ref": "#/definitions/LedgerKeyTrustLine" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "offer" - ], - "properties": { - "offer": { - "$ref": "#/definitions/LedgerKeyOffer" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "data" - ], - "properties": { - "data": { - "$ref": "#/definitions/LedgerKeyData" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "claimable_balance" - ], - "properties": { - "claimable_balance": { - "$ref": "#/definitions/LedgerKeyClaimableBalance" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "liquidity_pool" - ], - "properties": { - "liquidity_pool": { - "$ref": "#/definitions/LedgerKeyLiquidityPool" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "contract_data" - ], - "properties": { - "contract_data": { - "$ref": "#/definitions/LedgerKeyContractData" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "contract_code" - ], - "properties": { - "contract_code": { - "$ref": "#/definitions/LedgerKeyContractCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "config_setting" - ], - "properties": { - "config_setting": { - "$ref": "#/definitions/LedgerKeyConfigSetting" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "ttl" - ], - "properties": { - "ttl": { - "$ref": "#/definitions/LedgerKeyTtl" - } - }, - "additionalProperties": false - } - ] - }, - "LedgerKeyAccount": { - "description": "LedgerKeyAccount is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; } ```", - "type": "object", - "required": [ - "account_id" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" - } - } - }, - "LedgerKeyClaimableBalance": { - "description": "LedgerKeyClaimableBalance is an XDR NestedStruct defines as:\n\n```text struct { ClaimableBalanceID balanceID; } ```", - "type": "object", - "required": [ - "balance_id" - ], - "properties": { - "balance_id": { - "$ref": "#/definitions/ClaimableBalanceId" - } - } - }, - "LedgerKeyConfigSetting": { - "description": "LedgerKeyConfigSetting is an XDR NestedStruct defines as:\n\n```text struct { ConfigSettingID configSettingID; } ```", - "type": "object", - "required": [ - "config_setting_id" - ], - "properties": { - "config_setting_id": { - "$ref": "#/definitions/ConfigSettingId" - } - } - }, - "LedgerKeyContractCode": { - "description": "LedgerKeyContractCode is an XDR NestedStruct defines as:\n\n```text struct { Hash hash; } ```", - "type": "object", - "required": [ - "hash" - ], - "properties": { - "hash": { - "$ref": "#/definitions/Hash" - } - } - }, - "LedgerKeyContractData": { - "description": "LedgerKeyContractData is an XDR NestedStruct defines as:\n\n```text struct { SCAddress contract; SCVal key; ContractDataDurability durability; } ```", - "type": "object", - "required": [ - "contract", - "durability", - "key" - ], - "properties": { - "contract": { - "$ref": "#/definitions/ScAddress" - }, - "durability": { - "$ref": "#/definitions/ContractDataDurability" - }, - "key": { - "$ref": "#/definitions/ScVal" - } - } - }, - "LedgerKeyData": { - "description": "LedgerKeyData is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; string64 dataName; } ```", - "type": "object", - "required": [ - "account_id", - "data_name" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" - }, - "data_name": { - "$ref": "#/definitions/String64" - } - } - }, - "LedgerKeyLiquidityPool": { - "description": "LedgerKeyLiquidityPool is an XDR NestedStruct defines as:\n\n```text struct { PoolID liquidityPoolID; } ```", - "type": "object", - "required": [ - "liquidity_pool_id" - ], - "properties": { - "liquidity_pool_id": { - "$ref": "#/definitions/PoolId" - } - } - }, - "LedgerKeyOffer": { - "description": "LedgerKeyOffer is an XDR NestedStruct defines as:\n\n```text struct { AccountID sellerID; int64 offerID; } ```", - "type": "object", - "required": [ - "offer_id", - "seller_id" - ], - "properties": { - "offer_id": { - "type": "integer", - "format": "int64" - }, - "seller_id": { - "$ref": "#/definitions/AccountId" - } - } - }, - "LedgerKeyTrustLine": { - "description": "LedgerKeyTrustLine is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; TrustLineAsset asset; } ```", - "type": "object", - "required": [ - "account_id", - "asset" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" - }, - "asset": { - "$ref": "#/definitions/TrustLineAsset" - } - } - }, - "LedgerKeyTtl": { - "description": "LedgerKeyTtl is an XDR NestedStruct defines as:\n\n```text struct { // Hash of the LedgerKey that is associated with this TTLEntry Hash keyHash; } ```", - "type": "object", - "required": [ - "key_hash" - ], - "properties": { - "key_hash": { - "$ref": "#/definitions/Hash" - } - } - }, - "LiquidityPoolConstantProductParameters": { - "description": "LiquidityPoolConstantProductParameters is an XDR Struct defines as:\n\n```text struct LiquidityPoolConstantProductParameters { Asset assetA; // assetA < assetB Asset assetB; int32 fee; // Fee is in basis points, so the actual rate is (fee/100)% }; ```", - "type": "object", - "required": [ - "asset_a", - "asset_b", - "fee" - ], - "properties": { - "asset_a": { - "$ref": "#/definitions/Asset" - }, - "asset_b": { - "$ref": "#/definitions/Asset" - }, - "fee": { - "type": "integer", - "format": "int32" - } - } - }, - "LiquidityPoolDepositOp": { - "description": "LiquidityPoolDepositOp is an XDR Struct defines as:\n\n```text struct LiquidityPoolDepositOp { PoolID liquidityPoolID; int64 maxAmountA; // maximum amount of first asset to deposit int64 maxAmountB; // maximum amount of second asset to deposit Price minPrice; // minimum depositA/depositB Price maxPrice; // maximum depositA/depositB }; ```", - "type": "object", - "required": [ - "liquidity_pool_id", - "max_amount_a", - "max_amount_b", - "max_price", - "min_price" - ], - "properties": { - "liquidity_pool_id": { - "$ref": "#/definitions/PoolId" - }, - "max_amount_a": { - "type": "integer", - "format": "int64" - }, - "max_amount_b": { - "type": "integer", - "format": "int64" - }, - "max_price": { - "$ref": "#/definitions/Price" - }, - "min_price": { - "$ref": "#/definitions/Price" - } - } - }, - "LiquidityPoolParameters": { - "description": "LiquidityPoolParameters is an XDR Union defines as:\n\n```text union LiquidityPoolParameters switch (LiquidityPoolType type) { case LIQUIDITY_POOL_CONSTANT_PRODUCT: LiquidityPoolConstantProductParameters constantProduct; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "liquidity_pool_constant_product" - ], - "properties": { - "liquidity_pool_constant_product": { - "$ref": "#/definitions/LiquidityPoolConstantProductParameters" - } - }, - "additionalProperties": false - } - ] - }, - "LiquidityPoolWithdrawOp": { - "description": "LiquidityPoolWithdrawOp is an XDR Struct defines as:\n\n```text struct LiquidityPoolWithdrawOp { PoolID liquidityPoolID; int64 amount; // amount of pool shares to withdraw int64 minAmountA; // minimum amount of first asset to withdraw int64 minAmountB; // minimum amount of second asset to withdraw }; ```", - "type": "object", - "required": [ - "amount", - "liquidity_pool_id", - "min_amount_a", - "min_amount_b" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "liquidity_pool_id": { - "$ref": "#/definitions/PoolId" - }, - "min_amount_a": { - "type": "integer", - "format": "int64" - }, - "min_amount_b": { - "type": "integer", - "format": "int64" - } - } - }, - "ManageBuyOfferOp": { - "description": "ManageBuyOfferOp is an XDR Struct defines as:\n\n```text struct ManageBuyOfferOp { Asset selling; Asset buying; int64 buyAmount; // amount being bought. if set to 0, delete the offer Price price; // price of thing being bought in terms of what you are // selling\n\n// 0=create a new offer, otherwise edit an existing offer int64 offerID; }; ```", - "type": "object", - "required": [ - "buy_amount", - "buying", - "offer_id", - "price", - "selling" - ], - "properties": { - "buy_amount": { - "type": "integer", - "format": "int64" - }, - "buying": { - "$ref": "#/definitions/Asset" - }, - "offer_id": { - "type": "integer", - "format": "int64" - }, - "price": { - "$ref": "#/definitions/Price" - }, - "selling": { - "$ref": "#/definitions/Asset" - } - } - }, - "ManageDataOp": { - "description": "ManageDataOp is an XDR Struct defines as:\n\n```text struct ManageDataOp { string64 dataName; DataValue* dataValue; // set to null to clear }; ```", - "type": "object", - "required": [ - "data_name" - ], - "properties": { - "data_name": { - "$ref": "#/definitions/String64" - }, - "data_value": { - "anyOf": [ - { - "$ref": "#/definitions/DataValue" - }, - { - "type": "null" - } - ] - } - } - }, - "ManageSellOfferOp": { - "description": "ManageSellOfferOp is an XDR Struct defines as:\n\n```text struct ManageSellOfferOp { Asset selling; Asset buying; int64 amount; // amount being sold. if set to 0, delete the offer Price price; // price of thing being sold in terms of what you are buying\n\n// 0=create a new offer, otherwise edit an existing offer int64 offerID; }; ```", - "type": "object", - "required": [ - "amount", - "buying", - "offer_id", - "price", - "selling" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "buying": { - "$ref": "#/definitions/Asset" - }, - "offer_id": { - "type": "integer", - "format": "int64" - }, - "price": { - "$ref": "#/definitions/Price" - }, - "selling": { - "$ref": "#/definitions/Asset" - } - } - }, - "Memo": { - "description": "Memo is an XDR Union defines as:\n\n```text union Memo switch (MemoType type) { case MEMO_NONE: void; case MEMO_TEXT: string text<28>; case MEMO_ID: uint64 id; case MEMO_HASH: Hash hash; // the hash of what to pull from the content server case MEMO_RETURN: Hash retHash; // the hash of the tx you are rejecting }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "none" - ] - }, - { - "type": "object", - "required": [ - "text" - ], - "properties": { - "text": { - "$ref": "#/definitions/StringM_for_28" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "hash" - ], - "properties": { - "hash": { - "$ref": "#/definitions/Hash" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "return" - ], - "properties": { - "return": { - "$ref": "#/definitions/Hash" - } - }, - "additionalProperties": false - } - ] - }, - "MuxedAccount": { - "description": "MuxedAccount is an XDR Union defines as:\n\n```text union MuxedAccount switch (CryptoKeyType type) { case KEY_TYPE_ED25519: uint256 ed25519; case KEY_TYPE_MUXED_ED25519: struct { uint64 id; uint256 ed25519; } med25519; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "Ed25519" - ], - "properties": { - "Ed25519": { - "$ref": "#/definitions/Uint256" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "MuxedEd25519" - ], - "properties": { - "MuxedEd25519": { - "$ref": "#/definitions/MuxedAccountMed25519" - } - }, - "additionalProperties": false - } - ] - }, - "MuxedAccountMed25519": { - "description": "MuxedAccountMed25519 is an XDR NestedStruct defines as:\n\n```text struct { uint64 id; uint256 ed25519; } ```", - "type": "object", - "required": [ - "ed25519", - "id" - ], - "properties": { - "ed25519": { - "$ref": "#/definitions/Uint256" - }, - "id": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "Operation": { - "description": "Operation is an XDR Struct defines as:\n\n```text struct Operation { // sourceAccount is the account used to run the operation // if not set, the runtime defaults to \"sourceAccount\" specified at // the transaction level MuxedAccount* sourceAccount;\n\nunion switch (OperationType type) { case CREATE_ACCOUNT: CreateAccountOp createAccountOp; case PAYMENT: PaymentOp paymentOp; case PATH_PAYMENT_STRICT_RECEIVE: PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp; case MANAGE_SELL_OFFER: ManageSellOfferOp manageSellOfferOp; case CREATE_PASSIVE_SELL_OFFER: CreatePassiveSellOfferOp createPassiveSellOfferOp; case SET_OPTIONS: SetOptionsOp setOptionsOp; case CHANGE_TRUST: ChangeTrustOp changeTrustOp; case ALLOW_TRUST: AllowTrustOp allowTrustOp; case ACCOUNT_MERGE: MuxedAccount destination; case INFLATION: void; case MANAGE_DATA: ManageDataOp manageDataOp; case BUMP_SEQUENCE: BumpSequenceOp bumpSequenceOp; case MANAGE_BUY_OFFER: ManageBuyOfferOp manageBuyOfferOp; case PATH_PAYMENT_STRICT_SEND: PathPaymentStrictSendOp pathPaymentStrictSendOp; case CREATE_CLAIMABLE_BALANCE: CreateClaimableBalanceOp createClaimableBalanceOp; case CLAIM_CLAIMABLE_BALANCE: ClaimClaimableBalanceOp claimClaimableBalanceOp; case BEGIN_SPONSORING_FUTURE_RESERVES: BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp; case END_SPONSORING_FUTURE_RESERVES: void; case REVOKE_SPONSORSHIP: RevokeSponsorshipOp revokeSponsorshipOp; case CLAWBACK: ClawbackOp clawbackOp; case CLAWBACK_CLAIMABLE_BALANCE: ClawbackClaimableBalanceOp clawbackClaimableBalanceOp; case SET_TRUST_LINE_FLAGS: SetTrustLineFlagsOp setTrustLineFlagsOp; case LIQUIDITY_POOL_DEPOSIT: LiquidityPoolDepositOp liquidityPoolDepositOp; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; case INVOKE_HOST_FUNCTION: InvokeHostFunctionOp invokeHostFunctionOp; case EXTEND_FOOTPRINT_TTL: ExtendFootprintTTLOp extendFootprintTTLOp; case RESTORE_FOOTPRINT: RestoreFootprintOp restoreFootprintOp; } body; }; ```", - "type": "object", - "required": [ - "body" - ], - "properties": { - "body": { - "$ref": "#/definitions/OperationBody" - }, - "source_account": { - "anyOf": [ - { - "$ref": "#/definitions/MuxedAccount" - }, - { - "type": "null" - } - ] - } - } - }, - "OperationBody": { - "description": "OperationBody is an XDR NestedUnion defines as:\n\n```text union switch (OperationType type) { case CREATE_ACCOUNT: CreateAccountOp createAccountOp; case PAYMENT: PaymentOp paymentOp; case PATH_PAYMENT_STRICT_RECEIVE: PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp; case MANAGE_SELL_OFFER: ManageSellOfferOp manageSellOfferOp; case CREATE_PASSIVE_SELL_OFFER: CreatePassiveSellOfferOp createPassiveSellOfferOp; case SET_OPTIONS: SetOptionsOp setOptionsOp; case CHANGE_TRUST: ChangeTrustOp changeTrustOp; case ALLOW_TRUST: AllowTrustOp allowTrustOp; case ACCOUNT_MERGE: MuxedAccount destination; case INFLATION: void; case MANAGE_DATA: ManageDataOp manageDataOp; case BUMP_SEQUENCE: BumpSequenceOp bumpSequenceOp; case MANAGE_BUY_OFFER: ManageBuyOfferOp manageBuyOfferOp; case PATH_PAYMENT_STRICT_SEND: PathPaymentStrictSendOp pathPaymentStrictSendOp; case CREATE_CLAIMABLE_BALANCE: CreateClaimableBalanceOp createClaimableBalanceOp; case CLAIM_CLAIMABLE_BALANCE: ClaimClaimableBalanceOp claimClaimableBalanceOp; case BEGIN_SPONSORING_FUTURE_RESERVES: BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp; case END_SPONSORING_FUTURE_RESERVES: void; case REVOKE_SPONSORSHIP: RevokeSponsorshipOp revokeSponsorshipOp; case CLAWBACK: ClawbackOp clawbackOp; case CLAWBACK_CLAIMABLE_BALANCE: ClawbackClaimableBalanceOp clawbackClaimableBalanceOp; case SET_TRUST_LINE_FLAGS: SetTrustLineFlagsOp setTrustLineFlagsOp; case LIQUIDITY_POOL_DEPOSIT: LiquidityPoolDepositOp liquidityPoolDepositOp; case LIQUIDITY_POOL_WITHDRAW: LiquidityPoolWithdrawOp liquidityPoolWithdrawOp; case INVOKE_HOST_FUNCTION: InvokeHostFunctionOp invokeHostFunctionOp; case EXTEND_FOOTPRINT_TTL: ExtendFootprintTTLOp extendFootprintTTLOp; case RESTORE_FOOTPRINT: RestoreFootprintOp restoreFootprintOp; } ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "inflation", - "end_sponsoring_future_reserves" - ] - }, - { - "type": "object", - "required": [ - "create_account" - ], - "properties": { - "create_account": { - "$ref": "#/definitions/CreateAccountOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "payment" - ], - "properties": { - "payment": { - "$ref": "#/definitions/PaymentOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "path_payment_strict_receive" - ], - "properties": { - "path_payment_strict_receive": { - "$ref": "#/definitions/PathPaymentStrictReceiveOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "manage_sell_offer" - ], - "properties": { - "manage_sell_offer": { - "$ref": "#/definitions/ManageSellOfferOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "create_passive_sell_offer" - ], - "properties": { - "create_passive_sell_offer": { - "$ref": "#/definitions/CreatePassiveSellOfferOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "set_options" - ], - "properties": { - "set_options": { - "$ref": "#/definitions/SetOptionsOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "change_trust" - ], - "properties": { - "change_trust": { - "$ref": "#/definitions/ChangeTrustOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "allow_trust" - ], - "properties": { - "allow_trust": { - "$ref": "#/definitions/AllowTrustOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "account_merge" - ], - "properties": { - "account_merge": { - "$ref": "#/definitions/MuxedAccount" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "manage_data" - ], - "properties": { - "manage_data": { - "$ref": "#/definitions/ManageDataOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "bump_sequence" - ], - "properties": { - "bump_sequence": { - "$ref": "#/definitions/BumpSequenceOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "manage_buy_offer" - ], - "properties": { - "manage_buy_offer": { - "$ref": "#/definitions/ManageBuyOfferOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "path_payment_strict_send" - ], - "properties": { - "path_payment_strict_send": { - "$ref": "#/definitions/PathPaymentStrictSendOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "create_claimable_balance" - ], - "properties": { - "create_claimable_balance": { - "$ref": "#/definitions/CreateClaimableBalanceOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "claim_claimable_balance" - ], - "properties": { - "claim_claimable_balance": { - "$ref": "#/definitions/ClaimClaimableBalanceOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "begin_sponsoring_future_reserves" - ], - "properties": { - "begin_sponsoring_future_reserves": { - "$ref": "#/definitions/BeginSponsoringFutureReservesOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "revoke_sponsorship" - ], - "properties": { - "revoke_sponsorship": { - "$ref": "#/definitions/RevokeSponsorshipOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "clawback" - ], - "properties": { - "clawback": { - "$ref": "#/definitions/ClawbackOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "clawback_claimable_balance" - ], - "properties": { - "clawback_claimable_balance": { - "$ref": "#/definitions/ClawbackClaimableBalanceOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "set_trust_line_flags" - ], - "properties": { - "set_trust_line_flags": { - "$ref": "#/definitions/SetTrustLineFlagsOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "liquidity_pool_deposit" - ], - "properties": { - "liquidity_pool_deposit": { - "$ref": "#/definitions/LiquidityPoolDepositOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "liquidity_pool_withdraw" - ], - "properties": { - "liquidity_pool_withdraw": { - "$ref": "#/definitions/LiquidityPoolWithdrawOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "invoke_host_function" - ], - "properties": { - "invoke_host_function": { - "$ref": "#/definitions/InvokeHostFunctionOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "extend_footprint_ttl" - ], - "properties": { - "extend_footprint_ttl": { - "$ref": "#/definitions/ExtendFootprintTtlOp" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "restore_footprint" - ], - "properties": { - "restore_footprint": { - "$ref": "#/definitions/RestoreFootprintOp" - } - }, - "additionalProperties": false - } - ] - }, - "PathPaymentStrictReceiveOp": { - "description": "PathPaymentStrictReceiveOp is an XDR Struct defines as:\n\n```text struct PathPaymentStrictReceiveOp { Asset sendAsset; // asset we pay with int64 sendMax; // the maximum amount of sendAsset to // send (excluding fees). // The operation will fail if can't be met\n\nMuxedAccount destination; // recipient of the payment Asset destAsset; // what they end up with int64 destAmount; // amount they end up with\n\nAsset path<5>; // additional hops it must go through to get there }; ```", - "type": "object", - "required": [ - "dest_amount", - "dest_asset", - "destination", - "path", - "send_asset", - "send_max" - ], - "properties": { - "dest_amount": { - "type": "integer", - "format": "int64" - }, - "dest_asset": { - "$ref": "#/definitions/Asset" - }, - "destination": { - "$ref": "#/definitions/MuxedAccount" - }, - "path": { - "$ref": "#/definitions/VecM_for_Asset_and_5" - }, - "send_asset": { - "$ref": "#/definitions/Asset" - }, - "send_max": { - "type": "integer", - "format": "int64" - } - } - }, - "PathPaymentStrictSendOp": { - "description": "PathPaymentStrictSendOp is an XDR Struct defines as:\n\n```text struct PathPaymentStrictSendOp { Asset sendAsset; // asset we pay with int64 sendAmount; // amount of sendAsset to send (excluding fees)\n\nMuxedAccount destination; // recipient of the payment Asset destAsset; // what they end up with int64 destMin; // the minimum amount of dest asset to // be received // The operation will fail if it can't be met\n\nAsset path<5>; // additional hops it must go through to get there }; ```", - "type": "object", - "required": [ - "dest_asset", - "dest_min", - "destination", - "path", - "send_amount", - "send_asset" - ], - "properties": { - "dest_asset": { - "$ref": "#/definitions/Asset" - }, - "dest_min": { - "type": "integer", - "format": "int64" - }, - "destination": { - "$ref": "#/definitions/MuxedAccount" - }, - "path": { - "$ref": "#/definitions/VecM_for_Asset_and_5" - }, - "send_amount": { - "type": "integer", - "format": "int64" - }, - "send_asset": { - "$ref": "#/definitions/Asset" - } - } - }, - "PaymentOp": { - "description": "PaymentOp is an XDR Struct defines as:\n\n```text struct PaymentOp { MuxedAccount destination; // recipient of the payment Asset asset; // what they end up with int64 amount; // amount they end up with }; ```", - "type": "object", - "required": [ - "amount", - "asset", - "destination" - ], - "properties": { - "amount": { - "type": "integer", - "format": "int64" - }, - "asset": { - "$ref": "#/definitions/Asset" - }, - "destination": { - "$ref": "#/definitions/MuxedAccount" - } - } - }, - "PoolId": { - "description": "PoolId is an XDR Typedef defines as:\n\n```text typedef Hash PoolID; ```", - "allOf": [ - { - "$ref": "#/definitions/Hash" - } - ] - }, - "Preconditions": { - "description": "Preconditions is an XDR Union defines as:\n\n```text union Preconditions switch (PreconditionType type) { case PRECOND_NONE: void; case PRECOND_TIME: TimeBounds timeBounds; case PRECOND_V2: PreconditionsV2 v2; }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "none" - ] - }, - { - "type": "object", - "required": [ - "time" - ], - "properties": { - "time": { - "$ref": "#/definitions/TimeBounds" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "v2" - ], - "properties": { - "v2": { - "$ref": "#/definitions/PreconditionsV2" - } - }, - "additionalProperties": false - } - ] - }, - "PreconditionsV2": { - "description": "PreconditionsV2 is an XDR Struct defines as:\n\n```text struct PreconditionsV2 { TimeBounds* timeBounds;\n\n// Transaction only valid for ledger numbers n such that // minLedger <= n < maxLedger (if maxLedger == 0, then // only minLedger is checked) LedgerBounds* ledgerBounds;\n\n// If NULL, only valid when sourceAccount's sequence number // is seqNum - 1. Otherwise, valid when sourceAccount's // sequence number n satisfies minSeqNum <= n < tx.seqNum. // Note that after execution the account's sequence number // is always raised to tx.seqNum, and a transaction is not // valid if tx.seqNum is too high to ensure replay protection. SequenceNumber* minSeqNum;\n\n// For the transaction to be valid, the current ledger time must // be at least minSeqAge greater than sourceAccount's seqTime. Duration minSeqAge;\n\n// For the transaction to be valid, the current ledger number // must be at least minSeqLedgerGap greater than sourceAccount's // seqLedger. uint32 minSeqLedgerGap;\n\n// For the transaction to be valid, there must be a signature // corresponding to every Signer in this array, even if the // signature is not otherwise required by the sourceAccount or // operations. SignerKey extraSigners<2>; }; ```", - "type": "object", - "required": [ - "extra_signers", - "min_seq_age", - "min_seq_ledger_gap" - ], - "properties": { - "extra_signers": { - "$ref": "#/definitions/VecM_for_SignerKey_and_2" - }, - "ledger_bounds": { - "anyOf": [ - { - "$ref": "#/definitions/LedgerBounds" - }, - { - "type": "null" - } - ] - }, - "min_seq_age": { - "$ref": "#/definitions/Duration" - }, - "min_seq_ledger_gap": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "min_seq_num": { - "anyOf": [ - { - "$ref": "#/definitions/SequenceNumber" - }, - { - "type": "null" - } - ] - }, - "time_bounds": { - "anyOf": [ - { - "$ref": "#/definitions/TimeBounds" - }, - { - "type": "null" - } - ] - } - } - }, - "Price": { - "description": "Price is an XDR Struct defines as:\n\n```text struct Price { int32 n; // numerator int32 d; // denominator }; ```", - "type": "object", - "required": [ - "d", - "n" - ], - "properties": { - "d": { - "type": "integer", - "format": "int32" - }, - "n": { - "type": "integer", - "format": "int32" - } - } - }, - "PublicKey": { - "description": "PublicKey is an XDR Union defines as:\n\n```text union PublicKey switch (PublicKeyType type) { case PUBLIC_KEY_TYPE_ED25519: uint256 ed25519; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "PublicKeyTypeEd25519" - ], - "properties": { - "PublicKeyTypeEd25519": { - "$ref": "#/definitions/Uint256" - } - }, - "additionalProperties": false - } - ] - }, - "RestoreFootprintOp": { - "description": "RestoreFootprintOp is an XDR Struct defines as:\n\n```text struct RestoreFootprintOp { ExtensionPoint ext; }; ```", - "type": "object", - "required": [ - "ext" - ], - "properties": { - "ext": { - "$ref": "#/definitions/ExtensionPoint" - } - } - }, - "RevokeSponsorshipOp": { - "description": "RevokeSponsorshipOp is an XDR Union defines as:\n\n```text union RevokeSponsorshipOp switch (RevokeSponsorshipType type) { case REVOKE_SPONSORSHIP_LEDGER_ENTRY: LedgerKey ledgerKey; case REVOKE_SPONSORSHIP_SIGNER: struct { AccountID accountID; SignerKey signerKey; } signer; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "ledger_entry" - ], - "properties": { - "ledger_entry": { - "$ref": "#/definitions/LedgerKey" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "signer" - ], - "properties": { - "signer": { - "$ref": "#/definitions/RevokeSponsorshipOpSigner" - } - }, - "additionalProperties": false - } - ] - }, - "RevokeSponsorshipOpSigner": { - "description": "RevokeSponsorshipOpSigner is an XDR NestedStruct defines as:\n\n```text struct { AccountID accountID; SignerKey signerKey; } ```", - "type": "object", - "required": [ - "account_id", - "signer_key" - ], - "properties": { - "account_id": { - "$ref": "#/definitions/AccountId" - }, - "signer_key": { - "$ref": "#/definitions/SignerKey" - } - } - }, - "ScAddress": { - "description": "ScAddress is an XDR Union defines as:\n\n```text union SCAddress switch (SCAddressType type) { case SC_ADDRESS_TYPE_ACCOUNT: AccountID accountId; case SC_ADDRESS_TYPE_CONTRACT: Hash contractId; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "Account" - ], - "properties": { - "Account": { - "$ref": "#/definitions/AccountId" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "Contract" - ], - "properties": { - "Contract": { - "$ref": "#/definitions/Hash" - } - }, - "additionalProperties": false - } - ] - }, - "ScBytes": { - "description": "ScBytes is an XDR Typedef defines as:\n\n```text typedef opaque SCBytes<>; ```", - "allOf": [ - { - "$ref": "#/definitions/BytesM_for_4294967295" - } - ] - }, - "ScContractInstance": { - "description": "ScContractInstance is an XDR Struct defines as:\n\n```text struct SCContractInstance { ContractExecutable executable; SCMap* storage; }; ```", - "type": "object", - "required": [ - "executable" - ], - "properties": { - "executable": { - "$ref": "#/definitions/ContractExecutable" - }, - "storage": { - "anyOf": [ - { - "$ref": "#/definitions/ScMap" - }, - { - "type": "null" - } - ] - } - } - }, - "ScError": { - "description": "ScError is an XDR Union defines as:\n\n```text union SCError switch (SCErrorType type) { case SCE_CONTRACT: uint32 contractCode; case SCE_WASM_VM: case SCE_CONTEXT: case SCE_STORAGE: case SCE_OBJECT: case SCE_CRYPTO: case SCE_EVENTS: case SCE_BUDGET: case SCE_VALUE: case SCE_AUTH: SCErrorCode code; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "contract" - ], - "properties": { - "contract": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "wasm_vm" - ], - "properties": { - "wasm_vm": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "context" - ], - "properties": { - "context": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "storage" - ], - "properties": { - "storage": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "object" - ], - "properties": { - "object": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "crypto" - ], - "properties": { - "crypto": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "events" - ], - "properties": { - "events": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "budget" - ], - "properties": { - "budget": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "auth" - ], - "properties": { - "auth": { - "$ref": "#/definitions/ScErrorCode" - } - }, - "additionalProperties": false - } - ] - }, - "ScErrorCode": { - "description": "ScErrorCode is an XDR Enum defines as:\n\n```text enum SCErrorCode { SCEC_ARITH_DOMAIN = 0, // Some arithmetic was undefined (overflow, divide-by-zero). SCEC_INDEX_BOUNDS = 1, // Something was indexed beyond its bounds. SCEC_INVALID_INPUT = 2, // User provided some otherwise-bad data. SCEC_MISSING_VALUE = 3, // Some value was required but not provided. SCEC_EXISTING_VALUE = 4, // Some value was provided where not allowed. SCEC_EXCEEDED_LIMIT = 5, // Some arbitrary limit -- gas or otherwise -- was hit. SCEC_INVALID_ACTION = 6, // Data was valid but action requested was not. SCEC_INTERNAL_ERROR = 7, // The host detected an error in its own logic. SCEC_UNEXPECTED_TYPE = 8, // Some type wasn't as expected. SCEC_UNEXPECTED_SIZE = 9 // Something's size wasn't as expected. }; ```", - "type": "string", - "enum": [ - "arith_domain", - "index_bounds", - "invalid_input", - "missing_value", - "existing_value", - "exceeded_limit", - "invalid_action", - "internal_error", - "unexpected_type", - "unexpected_size" - ] - }, - "ScMap": { - "description": "ScMap is an XDR Typedef defines as:\n\n```text typedef SCMapEntry SCMap<>; ```", - "allOf": [ - { - "$ref": "#/definitions/VecM_for_ScMapEntry_and_4294967295" - } - ] - }, - "ScMapEntry": { - "description": "ScMapEntry is an XDR Struct defines as:\n\n```text struct SCMapEntry { SCVal key; SCVal val; }; ```", - "type": "object", - "required": [ - "key", - "val" - ], - "properties": { - "key": { - "$ref": "#/definitions/ScVal" - }, - "val": { - "$ref": "#/definitions/ScVal" - } - } - }, - "ScNonceKey": { - "description": "ScNonceKey is an XDR Struct defines as:\n\n```text struct SCNonceKey { int64 nonce; }; ```", - "type": "object", - "required": [ - "nonce" - ], - "properties": { - "nonce": { - "type": "integer", - "format": "int64" - } - } - }, - "ScString": { - "description": "ScString is an XDR Typedef defines as:\n\n```text typedef string SCString<>; ```", - "allOf": [ - { - "$ref": "#/definitions/StringM_for_4294967295" - } - ] - }, - "ScSymbol": { - "description": "ScSymbol is an XDR Typedef defines as:\n\n```text typedef string SCSymbol; ```", - "allOf": [ - { - "$ref": "#/definitions/StringM_for_32" - } - ] - }, - "ScVal": { - "description": "ScVal is an XDR Union defines as:\n\n```text union SCVal switch (SCValType type) {\n\ncase SCV_BOOL: bool b; case SCV_VOID: void; case SCV_ERROR: SCError error;\n\ncase SCV_U32: uint32 u32; case SCV_I32: int32 i32;\n\ncase SCV_U64: uint64 u64; case SCV_I64: int64 i64; case SCV_TIMEPOINT: TimePoint timepoint; case SCV_DURATION: Duration duration;\n\ncase SCV_U128: UInt128Parts u128; case SCV_I128: Int128Parts i128;\n\ncase SCV_U256: UInt256Parts u256; case SCV_I256: Int256Parts i256;\n\ncase SCV_BYTES: SCBytes bytes; case SCV_STRING: SCString str; case SCV_SYMBOL: SCSymbol sym;\n\n// Vec and Map are recursive so need to live // behind an option, due to xdrpp limitations. case SCV_VEC: SCVec *vec; case SCV_MAP: SCMap *map;\n\ncase SCV_ADDRESS: SCAddress address;\n\n// Special SCVals reserved for system-constructed contract-data // ledger keys, not generally usable elsewhere. case SCV_LEDGER_KEY_CONTRACT_INSTANCE: void; case SCV_LEDGER_KEY_NONCE: SCNonceKey nonce_key;\n\ncase SCV_CONTRACT_INSTANCE: SCContractInstance instance; }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "void", - "ledger_key_contract_instance" - ] - }, - { - "type": "object", - "required": [ - "bool" - ], - "properties": { - "bool": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "$ref": "#/definitions/ScError" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "u32" - ], - "properties": { - "u32": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "i32" - ], - "properties": { - "i32": { - "type": "integer", - "format": "int32" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "u64" - ], - "properties": { - "u64": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "i64" - ], - "properties": { - "i64": { - "type": "integer", - "format": "int64" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "timepoint" - ], - "properties": { - "timepoint": { - "$ref": "#/definitions/TimePoint" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "duration" - ], - "properties": { - "duration": { - "$ref": "#/definitions/Duration" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "u128" - ], - "properties": { - "u128": { - "$ref": "#/definitions/UInt128Parts" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "i128" - ], - "properties": { - "i128": { - "$ref": "#/definitions/Int128Parts" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "u256" - ], - "properties": { - "u256": { - "$ref": "#/definitions/UInt256Parts" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "i256" - ], - "properties": { - "i256": { - "$ref": "#/definitions/Int256Parts" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "bytes" - ], - "properties": { - "bytes": { - "$ref": "#/definitions/ScBytes" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "string" - ], - "properties": { - "string": { - "$ref": "#/definitions/ScString" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "symbol" - ], - "properties": { - "symbol": { - "$ref": "#/definitions/ScSymbol" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "vec" - ], - "properties": { - "vec": { - "anyOf": [ - { - "$ref": "#/definitions/ScVec" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "map" - ], - "properties": { - "map": { - "anyOf": [ - { - "$ref": "#/definitions/ScMap" - }, - { - "type": "null" - } - ] - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "$ref": "#/definitions/ScAddress" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "ledger_key_nonce" - ], - "properties": { - "ledger_key_nonce": { - "$ref": "#/definitions/ScNonceKey" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "contract_instance" - ], - "properties": { - "contract_instance": { - "$ref": "#/definitions/ScContractInstance" - } - }, - "additionalProperties": false - } - ] - }, - "ScVec": { - "description": "ScVec is an XDR Typedef defines as:\n\n```text typedef SCVal SCVec<>; ```", - "allOf": [ - { - "$ref": "#/definitions/VecM_for_ScVal_and_4294967295" - } - ] - }, - "SequenceNumber": { - "description": "SequenceNumber is an XDR Typedef defines as:\n\n```text typedef int64 SequenceNumber; ```", - "type": "integer", - "format": "int64" - }, - "SetOptionsOp": { - "description": "SetOptionsOp is an XDR Struct defines as:\n\n```text struct SetOptionsOp { AccountID* inflationDest; // sets the inflation destination\n\nuint32* clearFlags; // which flags to clear uint32* setFlags; // which flags to set\n\n// account threshold manipulation uint32* masterWeight; // weight of the master account uint32* lowThreshold; uint32* medThreshold; uint32* highThreshold;\n\nstring32* homeDomain; // sets the home domain\n\n// Add, update or remove a signer for the account // signer is deleted if the weight is 0 Signer* signer; }; ```", - "type": "object", - "properties": { - "clear_flags": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "high_threshold": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "home_domain": { - "anyOf": [ - { - "$ref": "#/definitions/String32" - }, - { - "type": "null" - } - ] - }, - "inflation_dest": { - "anyOf": [ - { - "$ref": "#/definitions/AccountId" - }, - { - "type": "null" - } - ] - }, - "low_threshold": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "master_weight": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "med_threshold": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "set_flags": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - }, - "signer": { - "anyOf": [ - { - "$ref": "#/definitions/Signer" - }, - { - "type": "null" - } - ] - } - } - }, - "SetTrustLineFlagsOp": { - "description": "SetTrustLineFlagsOp is an XDR Struct defines as:\n\n```text struct SetTrustLineFlagsOp { AccountID trustor; Asset asset;\n\nuint32 clearFlags; // which flags to clear uint32 setFlags; // which flags to set }; ```", - "type": "object", - "required": [ - "asset", - "clear_flags", - "set_flags", - "trustor" - ], - "properties": { - "asset": { - "$ref": "#/definitions/Asset" - }, - "clear_flags": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "set_flags": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "trustor": { - "$ref": "#/definitions/AccountId" - } - } - }, - "Signature": { - "description": "Signature is an XDR Typedef defines as:\n\n```text typedef opaque Signature<64>; ```", - "allOf": [ - { - "$ref": "#/definitions/BytesM_for_64" - } - ] - }, - "SignatureHint": { - "description": "SignatureHint is an XDR Typedef defines as:\n\n```text typedef opaque SignatureHint[4]; ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 4, - "minItems": 4 - }, - "Signer": { - "description": "Signer is an XDR Struct defines as:\n\n```text struct Signer { SignerKey key; uint32 weight; // really only need 1 byte }; ```", - "type": "object", - "required": [ - "key", - "weight" - ], - "properties": { - "key": { - "$ref": "#/definitions/SignerKey" - }, - "weight": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "SignerKey": { - "description": "SignerKey is an XDR Union defines as:\n\n```text union SignerKey switch (SignerKeyType type) { case SIGNER_KEY_TYPE_ED25519: uint256 ed25519; case SIGNER_KEY_TYPE_PRE_AUTH_TX: /* SHA-256 Hash of TransactionSignaturePayload structure */ uint256 preAuthTx; case SIGNER_KEY_TYPE_HASH_X: /* Hash of random 256 bit preimage X */ uint256 hashX; case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD: struct { /* Public key that must sign the payload. */ uint256 ed25519; /* Payload to be raw signed by ed25519. */ opaque payload<64>; } ed25519SignedPayload; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "Ed25519" - ], - "properties": { - "Ed25519": { - "$ref": "#/definitions/Uint256" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "PreAuthTx" - ], - "properties": { - "PreAuthTx": { - "$ref": "#/definitions/Uint256" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "HashX" - ], - "properties": { - "HashX": { - "$ref": "#/definitions/Uint256" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "Ed25519SignedPayload" - ], - "properties": { - "Ed25519SignedPayload": { - "$ref": "#/definitions/SignerKeyEd25519SignedPayload" - } - }, - "additionalProperties": false - } - ] - }, - "SignerKeyEd25519SignedPayload": { - "description": "SignerKeyEd25519SignedPayload is an XDR NestedStruct defines as:\n\n```text struct { /* Public key that must sign the payload. */ uint256 ed25519; /* Payload to be raw signed by ed25519. */ opaque payload<64>; } ```", - "type": "object", - "required": [ - "ed25519", - "payload" - ], - "properties": { - "ed25519": { - "$ref": "#/definitions/Uint256" - }, - "payload": { - "$ref": "#/definitions/BytesM_for_64" - } - } - }, - "SorobanAddressCredentials": { - "description": "SorobanAddressCredentials is an XDR Struct defines as:\n\n```text struct SorobanAddressCredentials { SCAddress address; int64 nonce; uint32 signatureExpirationLedger; SCVal signature; }; ```", - "type": "object", - "required": [ - "address", - "nonce", - "signature", - "signature_expiration_ledger" - ], - "properties": { - "address": { - "$ref": "#/definitions/ScAddress" - }, - "nonce": { - "type": "integer", - "format": "int64" - }, - "signature": { - "$ref": "#/definitions/ScVal" - }, - "signature_expiration_ledger": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "SorobanAuthorizationEntry": { - "description": "SorobanAuthorizationEntry is an XDR Struct defines as:\n\n```text struct SorobanAuthorizationEntry { SorobanCredentials credentials; SorobanAuthorizedInvocation rootInvocation; }; ```", - "type": "object", - "required": [ - "credentials", - "root_invocation" - ], - "properties": { - "credentials": { - "$ref": "#/definitions/SorobanCredentials" - }, - "root_invocation": { - "$ref": "#/definitions/SorobanAuthorizedInvocation" - } - } - }, - "SorobanAuthorizedFunction": { - "description": "SorobanAuthorizedFunction is an XDR Union defines as:\n\n```text union SorobanAuthorizedFunction switch (SorobanAuthorizedFunctionType type) { case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: InvokeContractArgs contractFn; case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN: CreateContractArgs createContractHostFn; }; ```", - "oneOf": [ - { - "type": "object", - "required": [ - "contract_fn" - ], - "properties": { - "contract_fn": { - "$ref": "#/definitions/InvokeContractArgs" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "create_contract_host_fn" - ], - "properties": { - "create_contract_host_fn": { - "$ref": "#/definitions/CreateContractArgs" - } - }, - "additionalProperties": false - } - ] - }, - "SorobanAuthorizedInvocation": { - "description": "SorobanAuthorizedInvocation is an XDR Struct defines as:\n\n```text struct SorobanAuthorizedInvocation { SorobanAuthorizedFunction function; SorobanAuthorizedInvocation subInvocations<>; }; ```", - "type": "object", - "required": [ - "function", - "sub_invocations" - ], - "properties": { - "function": { - "$ref": "#/definitions/SorobanAuthorizedFunction" - }, - "sub_invocations": { - "$ref": "#/definitions/VecM_for_SorobanAuthorizedInvocation_and_4294967295" - } - } - }, - "SorobanCredentials": { - "description": "SorobanCredentials is an XDR Union defines as:\n\n```text union SorobanCredentials switch (SorobanCredentialsType type) { case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT: void; case SOROBAN_CREDENTIALS_ADDRESS: SorobanAddressCredentials address; }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "source_account" - ] - }, - { - "type": "object", - "required": [ - "address" - ], - "properties": { - "address": { - "$ref": "#/definitions/SorobanAddressCredentials" - } - }, - "additionalProperties": false - } - ] - }, - "SorobanResources": { - "description": "SorobanResources is an XDR Struct defines as:\n\n```text struct SorobanResources { // The ledger footprint of the transaction. LedgerFootprint footprint; // The maximum number of instructions this transaction can use uint32 instructions;\n\n// The maximum number of bytes this transaction can read from ledger uint32 readBytes; // The maximum number of bytes this transaction can write to ledger uint32 writeBytes; }; ```", - "type": "object", - "required": [ - "footprint", - "instructions", - "read_bytes", - "write_bytes" - ], - "properties": { - "footprint": { - "$ref": "#/definitions/LedgerFootprint" - }, - "instructions": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "read_bytes": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "write_bytes": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "SorobanTransactionData": { - "description": "SorobanTransactionData is an XDR Struct defines as:\n\n```text struct SorobanTransactionData { ExtensionPoint ext; SorobanResources resources; // Amount of the transaction `fee` allocated to the Soroban resource fees. // The fraction of `resourceFee` corresponding to `resources` specified // above is *not* refundable (i.e. fees for instructions, ledger I/O), as // well as fees for the transaction size. // The remaining part of the fee is refundable and the charged value is // based on the actual consumption of refundable resources (events, ledger // rent bumps). // The `inclusionFee` used for prioritization of the transaction is defined // as `tx.fee - resourceFee`. int64 resourceFee; }; ```", - "type": "object", - "required": [ - "ext", - "resource_fee", - "resources" - ], - "properties": { - "ext": { - "$ref": "#/definitions/ExtensionPoint" - }, - "resource_fee": { - "type": "integer", - "format": "int64" - }, - "resources": { - "$ref": "#/definitions/SorobanResources" - } - } - }, - "String32": { - "description": "String32 is an XDR Typedef defines as:\n\n```text typedef string string32<32>; ```", - "allOf": [ - { - "$ref": "#/definitions/StringM_for_32" - } - ] - }, - "String64": { - "description": "String64 is an XDR Typedef defines as:\n\n```text typedef string string64<64>; ```", - "allOf": [ - { - "$ref": "#/definitions/StringM_for_64" - } - ] - }, - "StringM_for_28": { - "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "StringM_for_32": { - "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "StringM_for_4294967295": { - "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "StringM_for_64": { - "description": "A string type that contains arbitrary bytes.\n\nConvertible, fallibly, to/from a Rust UTF-8 String using [`TryFrom`]/[`TryInto`]/[`StringM::to_utf8_string`].\n\nConvertible, lossyly, to a Rust UTF-8 String using [`StringM::to_utf8_string_lossy`].\n\nConvertible to/from escaped printable-ASCII using [`Display`]/[`ToString`]/[`FromStr`].", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - } - }, - "TimeBounds": { - "description": "TimeBounds is an XDR Struct defines as:\n\n```text struct TimeBounds { TimePoint minTime; TimePoint maxTime; // 0 here means no maxTime }; ```", - "type": "object", - "required": [ - "max_time", - "min_time" - ], - "properties": { - "max_time": { - "$ref": "#/definitions/TimePoint" - }, - "min_time": { - "$ref": "#/definitions/TimePoint" - } - } - }, - "TimePoint": { - "description": "TimePoint is an XDR Typedef defines as:\n\n```text typedef uint64 TimePoint; ```", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "Transaction": { - "description": "Transaction is an XDR Struct defines as:\n\n```text struct Transaction { // account used to run the transaction MuxedAccount sourceAccount;\n\n// the fee the sourceAccount will pay uint32 fee;\n\n// sequence number to consume in the account SequenceNumber seqNum;\n\n// validity conditions Preconditions cond;\n\nMemo memo;\n\nOperation operations;\n\n// reserved for future use union switch (int v) { case 0: void; case 1: SorobanTransactionData sorobanData; } ext; }; ```", - "type": "object", - "required": [ - "cond", - "ext", - "fee", - "memo", - "operations", - "seq_num", - "source_account" - ], - "properties": { - "cond": { - "$ref": "#/definitions/Preconditions" - }, - "ext": { - "$ref": "#/definitions/TransactionExt" - }, - "fee": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "memo": { - "$ref": "#/definitions/Memo" - }, - "operations": { - "$ref": "#/definitions/VecM_for_Operation_and_100" - }, - "seq_num": { - "$ref": "#/definitions/SequenceNumber" - }, - "source_account": { - "$ref": "#/definitions/MuxedAccount" - } - } - }, - "TransactionExt": { - "description": "TransactionExt is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; case 1: SorobanTransactionData sorobanData; } ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "v0" - ] - }, - { - "type": "object", - "required": [ - "v1" - ], - "properties": { - "v1": { - "$ref": "#/definitions/SorobanTransactionData" - } - }, - "additionalProperties": false - } - ] - }, - "TransactionV0": { - "description": "TransactionV0 is an XDR Struct defines as:\n\n```text struct TransactionV0 { uint256 sourceAccountEd25519; uint32 fee; SequenceNumber seqNum; TimeBounds* timeBounds; Memo memo; Operation operations; union switch (int v) { case 0: void; } ext; }; ```", - "type": "object", - "required": [ - "ext", - "fee", - "memo", - "operations", - "seq_num", - "source_account_ed25519" - ], - "properties": { - "ext": { - "$ref": "#/definitions/TransactionV0Ext" - }, - "fee": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "memo": { - "$ref": "#/definitions/Memo" - }, - "operations": { - "$ref": "#/definitions/VecM_for_Operation_and_100" - }, - "seq_num": { - "$ref": "#/definitions/SequenceNumber" - }, - "source_account_ed25519": { - "$ref": "#/definitions/Uint256" - }, - "time_bounds": { - "anyOf": [ - { - "$ref": "#/definitions/TimeBounds" - }, - { - "type": "null" - } - ] - } - } - }, - "TransactionV0Envelope": { - "description": "TransactionV0Envelope is an XDR Struct defines as:\n\n```text struct TransactionV0Envelope { TransactionV0 tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", - "type": "object", - "required": [ - "signatures", - "tx" - ], - "properties": { - "signatures": { - "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" - }, - "tx": { - "$ref": "#/definitions/TransactionV0" - } - } - }, - "TransactionV0Ext": { - "description": "TransactionV0Ext is an XDR NestedUnion defines as:\n\n```text union switch (int v) { case 0: void; } ```", - "type": "string", - "enum": [ - "v0" - ] - }, - "TransactionV1Envelope": { - "description": "TransactionV1Envelope is an XDR Struct defines as:\n\n```text struct TransactionV1Envelope { Transaction tx; /* Each decorated signature is a signature over the SHA256 hash of * a TransactionSignaturePayload */ DecoratedSignature signatures<20>; }; ```", - "type": "object", - "required": [ - "signatures", - "tx" - ], - "properties": { - "signatures": { - "$ref": "#/definitions/VecM_for_DecoratedSignature_and_20" - }, - "tx": { - "$ref": "#/definitions/Transaction" - } - } - }, - "TrustLineAsset": { - "description": "TrustLineAsset is an XDR Union defines as:\n\n```text union TrustLineAsset switch (AssetType type) { case ASSET_TYPE_NATIVE: // Not credit void;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM4: AlphaNum4 alphaNum4;\n\ncase ASSET_TYPE_CREDIT_ALPHANUM12: AlphaNum12 alphaNum12;\n\ncase ASSET_TYPE_POOL_SHARE: PoolID liquidityPoolID;\n\n// add other asset types here in the future }; ```", - "oneOf": [ - { - "type": "string", - "enum": [ - "native" - ] - }, - { - "type": "object", - "required": [ - "credit_alphanum4" - ], - "properties": { - "credit_alphanum4": { - "$ref": "#/definitions/AlphaNum4" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "credit_alphanum12" - ], - "properties": { - "credit_alphanum12": { - "$ref": "#/definitions/AlphaNum12" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "pool_share" - ], - "properties": { - "pool_share": { - "$ref": "#/definitions/PoolId" - } - }, - "additionalProperties": false - } - ] - }, - "UInt128Parts": { - "description": "UInt128Parts is an XDR Struct defines as:\n\n```text struct UInt128Parts { uint64 hi; uint64 lo; }; ```", - "type": "object", - "required": [ - "hi", - "lo" - ], - "properties": { - "hi": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "UInt256Parts": { - "description": "UInt256Parts is an XDR Struct defines as:\n\n```text struct UInt256Parts { uint64 hi_hi; uint64 hi_lo; uint64 lo_hi; uint64 lo_lo; }; ```", - "type": "object", - "required": [ - "hi_hi", - "hi_lo", - "lo_hi", - "lo_lo" - ], - "properties": { - "hi_hi": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "hi_lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "lo_hi": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "lo_lo": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - } - }, - "Uint256": { - "description": "Uint256 is an XDR Typedef defines as:\n\n```text typedef opaque uint256[32]; ```", - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32 - }, - "VecM_for_Asset_and_5": { - "type": "array", - "items": { - "$ref": "#/definitions/Asset" - } - }, - "VecM_for_ClaimPredicate_and_2": { - "type": "array", - "items": { - "$ref": "#/definitions/ClaimPredicate" - } - }, - "VecM_for_Claimant_and_10": { - "type": "array", - "items": { - "$ref": "#/definitions/Claimant" - } - }, - "VecM_for_DecoratedSignature_and_20": { - "type": "array", - "items": { - "$ref": "#/definitions/DecoratedSignature" - } - }, - "VecM_for_LedgerKey_and_4294967295": { - "type": "array", - "items": { - "$ref": "#/definitions/LedgerKey" - } - }, - "VecM_for_Operation_and_100": { - "type": "array", - "items": { - "$ref": "#/definitions/Operation" - } - }, - "VecM_for_ScMapEntry_and_4294967295": { - "type": "array", - "items": { - "$ref": "#/definitions/ScMapEntry" - } - }, - "VecM_for_ScVal_and_4294967295": { - "type": "array", - "items": { - "$ref": "#/definitions/ScVal" - } - }, - "VecM_for_SignerKey_and_2": { - "type": "array", - "items": { - "$ref": "#/definitions/SignerKey" - } - }, - "VecM_for_SorobanAuthorizationEntry_and_4294967295": { - "type": "array", - "items": { - "$ref": "#/definitions/SorobanAuthorizationEntry" - } - }, - "VecM_for_SorobanAuthorizedInvocation_and_4294967295": { - "type": "array", - "items": { - "$ref": "#/definitions/SorobanAuthorizedInvocation" - } - } - } -}"##, - ); - Ok(()) } From f576c2ab56388df3f48b0a3e4d37894947e6c8e5 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Sat, 9 Mar 2024 01:29:00 +1000 Subject: [PATCH 09/25] fix overflow --- Makefile | 2 +- src/curr/generated.rs | 26 +++++++++++++------------- src/next/generated.rs | 26 +++++++++++++------------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index a39a4b2d..ac6f750a 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=c95a5bd7f9dff8dff53cadcef3014ceb69ab7088 +XDRGEN_VERSION=3f37191c1b26b39a4a8265a3824df6c3236cb120 # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 diff --git a/src/curr/generated.rs b/src/curr/generated.rs index bb53ece6..f9c57ea9 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -1433,7 +1433,7 @@ impl schemars::JsonSchema for BytesM { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(MAX * 2), + max_length: MAX.checked_mul(2).map(Some).unwrap_or_default(), min_length: None, ..string }) @@ -10213,8 +10213,8 @@ impl schemars::JsonSchema for Thresholds { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -10775,8 +10775,8 @@ impl schemars::JsonSchema for AssetCode4 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -10907,8 +10907,8 @@ impl schemars::JsonSchema for AssetCode12 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(12 * 2), - min_length: Some(12 * 2), + max_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -41162,8 +41162,8 @@ impl schemars::JsonSchema for Hash { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(32 * 2), - min_length: Some(32 * 2), + max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -41311,8 +41311,8 @@ impl schemars::JsonSchema for Uint256 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(32 * 2), - min_length: Some(32 * 2), + max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -42451,8 +42451,8 @@ impl schemars::JsonSchema for SignatureHint { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { diff --git a/src/next/generated.rs b/src/next/generated.rs index cd4325c0..d7a2201c 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -1433,7 +1433,7 @@ impl schemars::JsonSchema for BytesM { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(MAX * 2), + max_length: MAX.checked_mul(2).map(Some).unwrap_or_default(), min_length: None, ..string }) @@ -10213,8 +10213,8 @@ impl schemars::JsonSchema for Thresholds { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -10775,8 +10775,8 @@ impl schemars::JsonSchema for AssetCode4 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -10907,8 +10907,8 @@ impl schemars::JsonSchema for AssetCode12 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(12 * 2), - min_length: Some(12 * 2), + max_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -41162,8 +41162,8 @@ impl schemars::JsonSchema for Hash { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(32 * 2), - min_length: Some(32 * 2), + max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -41311,8 +41311,8 @@ impl schemars::JsonSchema for Uint256 { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(32 * 2), - min_length: Some(32 * 2), + max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { @@ -42451,8 +42451,8 @@ impl schemars::JsonSchema for SignatureHint { serde_json::Value::String("application/binary".to_string()), ); mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: Some(4 * 2), - min_length: Some(4 * 2), + max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), + min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string }) } else { From 7575d7fb826193336078c2264b085189ea9f8317 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Wed, 13 Mar 2024 22:19:08 +1000 Subject: [PATCH 10/25] add first version of command --- Cargo.toml | 2 +- Makefile | 4 +- src/bin/stellar-xdr/main.rs | 5 +- src/cli/mod.rs | 4 +- src/cli/types.rs | 12 +- src/cli/types/schema.rs | 73 ++++ src/curr/generated.rs | 846 ++++++++++++++++++++++++++++++++++++ src/next/generated.rs | 846 ++++++++++++++++++++++++++++++++++++ 8 files changed, 1786 insertions(+), 6 deletions(-) create mode 100644 src/cli/types/schema.rs diff --git a/Cargo.toml b/Cargo.toml index 20d1cda7..b536f781 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ arbitrary = ["std", "dep:arbitrary"] hex = [] # Features for the CLI. -cli = ["std", "curr", "next", "base64", "serde", "serde_json", "dep:clap", "dep:thiserror"] +cli = ["std", "curr", "next", "base64", "serde", "serde_json", "schemars", "dep:clap", "dep:thiserror"] [package.metadata.docs.rs] all-features = true diff --git a/Makefile b/Makefile index ac6f750a..237e3471 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=3f37191c1b26b39a4a8265a3824df6c3236cb120 +XDRGEN_VERSION=87d633c780260e2a30a28d7dc9571a790f5138fa # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 @@ -23,7 +23,7 @@ doc: RUSTDOCFLAGS="--cfg docs" cargo +nightly doc --package stellar-xdr --all-features $(CARGO_DOC_ARGS) install: - cargo install --path . --force --features cli + cargo install --locked --path . --force --features cli readme: cargo readme > README.md diff --git a/src/bin/stellar-xdr/main.rs b/src/bin/stellar-xdr/main.rs index 78ff30f3..2873708b 100644 --- a/src/bin/stellar-xdr/main.rs +++ b/src/bin/stellar-xdr/main.rs @@ -6,7 +6,10 @@ fn main() { if let Err(e) = cli::run(env::args_os()) { match e { cli::Error::Clap(e) => e.exit(), - cli::Error::Guess(_) | cli::Error::Decode(_) | cli::Error::Encode(_) => { + cli::Error::Types(_) + | cli::Error::Guess(_) + | cli::Error::Decode(_) + | cli::Error::Encode(_) => { Error::raw(clap::error::ErrorKind::ValueValidation, e).exit() } } diff --git a/src/cli/mod.rs b/src/cli/mod.rs index f8da43ad..9db33de0 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -34,7 +34,7 @@ impl Root { /// If the root command is configured with state that is invalid. pub fn run(&self) -> Result<(), Error> { match &self.cmd { - Cmd::Types(c) => c.run(&self.channel), + Cmd::Types(c) => c.run(&self.channel)?, Cmd::Guess(c) => c.run(&self.channel)?, Cmd::Decode(c) => c.run(&self.channel)?, Cmd::Encode(c) => c.run(&self.channel)?, @@ -77,6 +77,8 @@ pub enum Cmd { pub enum Error { #[error("{0}")] Clap(#[from] clap::Error), + #[error("{0}")] + Types(#[from] types::Error), #[error("error decoding XDR: {0}")] Guess(#[from] guess::Error), #[error("error reading file: {0}")] diff --git a/src/cli/types.rs b/src/cli/types.rs index a0ad2790..893a4c75 100644 --- a/src/cli/types.rs +++ b/src/cli/types.rs @@ -1,9 +1,16 @@ mod list; +mod schema; use clap::{Args, Subcommand}; use crate::cli::Channel; +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("{0}")] + SchemaError(#[from] schema::Error), +} + #[derive(Args, Debug, Clone)] #[command()] pub struct Cmd { @@ -14,12 +21,15 @@ pub struct Cmd { #[derive(Subcommand, Clone, Debug)] pub enum Sub { List(list::Cmd), + Schema(schema::Cmd), } impl Cmd { - pub fn run(&self, channel: &Channel) { + pub fn run(&self, channel: &Channel) -> Result<(), Error> { match &self.sub { Sub::List(c) => c.run(channel), + Sub::Schema(c) => c.run(channel)?, } + Ok(()) } } diff --git a/src/cli/types/schema.rs b/src/cli/types/schema.rs new file mode 100644 index 00000000..3354513b --- /dev/null +++ b/src/cli/types/schema.rs @@ -0,0 +1,73 @@ +use clap::{Args, ValueEnum}; + +use crate::cli::Channel; + +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("unknown type {0}, choose one of {1:?}")] + UnknownType(String, &'static [&'static str]), + #[error("error generating JSON: {0}")] + GenerateJson(#[from] serde_json::Error), +} + +#[derive(Args, Debug, Clone)] +#[command()] +pub struct Cmd { + /// XDR type to decode + #[arg(long)] + r#type: String, + + // Output format + #[arg(long, value_enum, default_value_t)] + output: OutputFormat, +} + +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, ValueEnum)] +pub enum OutputFormat { + JsonSchemaDraft7, +} + +impl Default for OutputFormat { + fn default() -> Self { + Self::JsonSchemaDraft7 + } +} + +macro_rules! run_x_case_for_type { + ($type:tt, $m:tt, $type_name:expr, $output:expr) => { + if $type_name == stringify!($type) { + match $output { + OutputFormat::JsonSchemaDraft7 => { + let schema = schemars::schema_for!(crate::$m::$type); + println!("{}", serde_json::to_string_pretty(&schema)?); + }, + } + } + }; +} + +macro_rules! run_x { + ($f:ident, $m:ident) => { + fn $f(&self) -> Result<(), Error> { + use std::str::FromStr; + let _ = crate::$m::TypeVariant::from_str(&self.r#type).map_err(|_| { + Error::UnknownType(self.r#type.clone(), &crate::$m::TypeVariant::VARIANTS_STR) + })?; + crate::$m::call_macro_with_each_type! { run_x_case_for_type, $m, {&self.r#type}, {self.output} } + Ok(()) + } + }; +} + +impl Cmd { + pub fn run(&self, channel: &Channel) -> Result<(), Error> { + match channel { + Channel::Curr => self.run_curr()?, + Channel::Next => self.run_next()?, + } + Ok(()) + } + + run_x!(run_curr, curr); + run_x!(run_next, next); +} diff --git a/src/curr/generated.rs b/src/curr/generated.rs index f9c57ea9..a38445e5 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -42814,6 +42814,852 @@ impl WriteXdr for HmacSha256Mac { } } +#[doc(hidden)] +#[macro_export] +macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f8cc9ceb6a6de8c91abcb1289 { + // The x-macro takes a single ident, the name of a macro to call ... + ($macro_to_call_back:ident, $($context:tt),*) => {{ + // ... and calls it back, once for each XDR type. + $macro_to_call_back!(Value, $($context),*); + + $macro_to_call_back!(ScpBallot, $($context),*); + + $macro_to_call_back!(ScpStatementType, $($context),*); + + $macro_to_call_back!(ScpNomination, $($context),*); + + $macro_to_call_back!(ScpStatement, $($context),*); + + $macro_to_call_back!(ScpStatementPledges, $($context),*); + + $macro_to_call_back!(ScpStatementPrepare, $($context),*); + + $macro_to_call_back!(ScpStatementConfirm, $($context),*); + + $macro_to_call_back!(ScpStatementExternalize, $($context),*); + + $macro_to_call_back!(ScpEnvelope, $($context),*); + + $macro_to_call_back!(ScpQuorumSet, $($context),*); + + $macro_to_call_back!(ConfigSettingContractExecutionLanesV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractComputeV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractLedgerCostV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractHistoricalDataV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractEventsV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractBandwidthV0, $($context),*); + + $macro_to_call_back!(ContractCostType, $($context),*); + + $macro_to_call_back!(ContractCostParamEntry, $($context),*); + + $macro_to_call_back!(StateArchivalSettings, $($context),*); + + $macro_to_call_back!(EvictionIterator, $($context),*); + + $macro_to_call_back!(ContractCostParams, $($context),*); + + $macro_to_call_back!(ConfigSettingId, $($context),*); + + $macro_to_call_back!(ConfigSettingEntry, $($context),*); + + $macro_to_call_back!(ScEnvMetaKind, $($context),*); + + $macro_to_call_back!(ScEnvMetaEntry, $($context),*); + + $macro_to_call_back!(ScMetaV0, $($context),*); + + $macro_to_call_back!(ScMetaKind, $($context),*); + + $macro_to_call_back!(ScMetaEntry, $($context),*); + + $macro_to_call_back!(ScSpecType, $($context),*); + + $macro_to_call_back!(ScSpecTypeOption, $($context),*); + + $macro_to_call_back!(ScSpecTypeResult, $($context),*); + + $macro_to_call_back!(ScSpecTypeVec, $($context),*); + + $macro_to_call_back!(ScSpecTypeMap, $($context),*); + + $macro_to_call_back!(ScSpecTypeTuple, $($context),*); + + $macro_to_call_back!(ScSpecTypeBytesN, $($context),*); + + $macro_to_call_back!(ScSpecTypeUdt, $($context),*); + + $macro_to_call_back!(ScSpecTypeDef, $($context),*); + + $macro_to_call_back!(ScSpecUdtStructFieldV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtStructV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseVoidV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseTupleV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseV0Kind, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtEnumCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtEnumV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtErrorEnumCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtErrorEnumV0, $($context),*); + + $macro_to_call_back!(ScSpecFunctionInputV0, $($context),*); + + $macro_to_call_back!(ScSpecFunctionV0, $($context),*); + + $macro_to_call_back!(ScSpecEntryKind, $($context),*); + + $macro_to_call_back!(ScSpecEntry, $($context),*); + + $macro_to_call_back!(ScValType, $($context),*); + + $macro_to_call_back!(ScErrorType, $($context),*); + + $macro_to_call_back!(ScErrorCode, $($context),*); + + $macro_to_call_back!(ScError, $($context),*); + + $macro_to_call_back!(UInt128Parts, $($context),*); + + $macro_to_call_back!(Int128Parts, $($context),*); + + $macro_to_call_back!(UInt256Parts, $($context),*); + + $macro_to_call_back!(Int256Parts, $($context),*); + + $macro_to_call_back!(ContractExecutableType, $($context),*); + + $macro_to_call_back!(ContractExecutable, $($context),*); + + $macro_to_call_back!(ScAddressType, $($context),*); + + $macro_to_call_back!(ScAddress, $($context),*); + + $macro_to_call_back!(ScVec, $($context),*); + + $macro_to_call_back!(ScMap, $($context),*); + + $macro_to_call_back!(ScBytes, $($context),*); + + $macro_to_call_back!(ScString, $($context),*); + + $macro_to_call_back!(ScSymbol, $($context),*); + + $macro_to_call_back!(ScNonceKey, $($context),*); + + $macro_to_call_back!(ScContractInstance, $($context),*); + + $macro_to_call_back!(ScVal, $($context),*); + + $macro_to_call_back!(ScMapEntry, $($context),*); + + $macro_to_call_back!(StoredTransactionSet, $($context),*); + + $macro_to_call_back!(StoredDebugTransactionSet, $($context),*); + + $macro_to_call_back!(PersistedScpStateV0, $($context),*); + + $macro_to_call_back!(PersistedScpStateV1, $($context),*); + + $macro_to_call_back!(PersistedScpState, $($context),*); + + $macro_to_call_back!(Thresholds, $($context),*); + + $macro_to_call_back!(String32, $($context),*); + + $macro_to_call_back!(String64, $($context),*); + + $macro_to_call_back!(SequenceNumber, $($context),*); + + $macro_to_call_back!(DataValue, $($context),*); + + $macro_to_call_back!(PoolId, $($context),*); + + $macro_to_call_back!(AssetCode4, $($context),*); + + $macro_to_call_back!(AssetCode12, $($context),*); + + $macro_to_call_back!(AssetType, $($context),*); + + $macro_to_call_back!(AssetCode, $($context),*); + + $macro_to_call_back!(AlphaNum4, $($context),*); + + $macro_to_call_back!(AlphaNum12, $($context),*); + + $macro_to_call_back!(Asset, $($context),*); + + $macro_to_call_back!(Price, $($context),*); + + $macro_to_call_back!(Liabilities, $($context),*); + + $macro_to_call_back!(ThresholdIndexes, $($context),*); + + $macro_to_call_back!(LedgerEntryType, $($context),*); + + $macro_to_call_back!(Signer, $($context),*); + + $macro_to_call_back!(AccountFlags, $($context),*); + + $macro_to_call_back!(SponsorshipDescriptor, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV3, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV2, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV2Ext, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV1, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(AccountEntry, $($context),*); + + $macro_to_call_back!(AccountEntryExt, $($context),*); + + $macro_to_call_back!(TrustLineFlags, $($context),*); + + $macro_to_call_back!(LiquidityPoolType, $($context),*); + + $macro_to_call_back!(TrustLineAsset, $($context),*); + + $macro_to_call_back!(TrustLineEntryExtensionV2, $($context),*); + + $macro_to_call_back!(TrustLineEntryExtensionV2Ext, $($context),*); + + $macro_to_call_back!(TrustLineEntry, $($context),*); + + $macro_to_call_back!(TrustLineEntryExt, $($context),*); + + $macro_to_call_back!(TrustLineEntryV1, $($context),*); + + $macro_to_call_back!(TrustLineEntryV1Ext, $($context),*); + + $macro_to_call_back!(OfferEntryFlags, $($context),*); + + $macro_to_call_back!(OfferEntry, $($context),*); + + $macro_to_call_back!(OfferEntryExt, $($context),*); + + $macro_to_call_back!(DataEntry, $($context),*); + + $macro_to_call_back!(DataEntryExt, $($context),*); + + $macro_to_call_back!(ClaimPredicateType, $($context),*); + + $macro_to_call_back!(ClaimPredicate, $($context),*); + + $macro_to_call_back!(ClaimantType, $($context),*); + + $macro_to_call_back!(Claimant, $($context),*); + + $macro_to_call_back!(ClaimantV0, $($context),*); + + $macro_to_call_back!(ClaimableBalanceIdType, $($context),*); + + $macro_to_call_back!(ClaimableBalanceId, $($context),*); + + $macro_to_call_back!(ClaimableBalanceFlags, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExtensionV1, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntry, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExt, $($context),*); + + $macro_to_call_back!(LiquidityPoolConstantProductParameters, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntry, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntryBody, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntryConstantProduct, $($context),*); + + $macro_to_call_back!(ContractDataDurability, $($context),*); + + $macro_to_call_back!(ContractDataEntry, $($context),*); + + $macro_to_call_back!(ContractCodeEntry, $($context),*); + + $macro_to_call_back!(TtlEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryExtensionV1, $($context),*); + + $macro_to_call_back!(LedgerEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(LedgerEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryData, $($context),*); + + $macro_to_call_back!(LedgerEntryExt, $($context),*); + + $macro_to_call_back!(LedgerKey, $($context),*); + + $macro_to_call_back!(LedgerKeyAccount, $($context),*); + + $macro_to_call_back!(LedgerKeyTrustLine, $($context),*); + + $macro_to_call_back!(LedgerKeyOffer, $($context),*); + + $macro_to_call_back!(LedgerKeyData, $($context),*); + + $macro_to_call_back!(LedgerKeyClaimableBalance, $($context),*); + + $macro_to_call_back!(LedgerKeyLiquidityPool, $($context),*); + + $macro_to_call_back!(LedgerKeyContractData, $($context),*); + + $macro_to_call_back!(LedgerKeyContractCode, $($context),*); + + $macro_to_call_back!(LedgerKeyConfigSetting, $($context),*); + + $macro_to_call_back!(LedgerKeyTtl, $($context),*); + + $macro_to_call_back!(EnvelopeType, $($context),*); + + $macro_to_call_back!(UpgradeType, $($context),*); + + $macro_to_call_back!(StellarValueType, $($context),*); + + $macro_to_call_back!(LedgerCloseValueSignature, $($context),*); + + $macro_to_call_back!(StellarValue, $($context),*); + + $macro_to_call_back!(StellarValueExt, $($context),*); + + $macro_to_call_back!(LedgerHeaderFlags, $($context),*); + + $macro_to_call_back!(LedgerHeaderExtensionV1, $($context),*); + + $macro_to_call_back!(LedgerHeaderExtensionV1Ext, $($context),*); + + $macro_to_call_back!(LedgerHeader, $($context),*); + + $macro_to_call_back!(LedgerHeaderExt, $($context),*); + + $macro_to_call_back!(LedgerUpgradeType, $($context),*); + + $macro_to_call_back!(ConfigUpgradeSetKey, $($context),*); + + $macro_to_call_back!(LedgerUpgrade, $($context),*); + + $macro_to_call_back!(ConfigUpgradeSet, $($context),*); + + $macro_to_call_back!(BucketEntryType, $($context),*); + + $macro_to_call_back!(BucketMetadata, $($context),*); + + $macro_to_call_back!(BucketMetadataExt, $($context),*); + + $macro_to_call_back!(BucketEntry, $($context),*); + + $macro_to_call_back!(TxSetComponentType, $($context),*); + + $macro_to_call_back!(TxSetComponent, $($context),*); + + $macro_to_call_back!(TxSetComponentTxsMaybeDiscountedFee, $($context),*); + + $macro_to_call_back!(TransactionPhase, $($context),*); + + $macro_to_call_back!(TransactionSet, $($context),*); + + $macro_to_call_back!(TransactionSetV1, $($context),*); + + $macro_to_call_back!(GeneralizedTransactionSet, $($context),*); + + $macro_to_call_back!(TransactionResultPair, $($context),*); + + $macro_to_call_back!(TransactionResultSet, $($context),*); + + $macro_to_call_back!(TransactionHistoryEntry, $($context),*); + + $macro_to_call_back!(TransactionHistoryEntryExt, $($context),*); + + $macro_to_call_back!(TransactionHistoryResultEntry, $($context),*); + + $macro_to_call_back!(TransactionHistoryResultEntryExt, $($context),*); + + $macro_to_call_back!(LedgerHeaderHistoryEntry, $($context),*); + + $macro_to_call_back!(LedgerHeaderHistoryEntryExt, $($context),*); + + $macro_to_call_back!(LedgerScpMessages, $($context),*); + + $macro_to_call_back!(ScpHistoryEntryV0, $($context),*); + + $macro_to_call_back!(ScpHistoryEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryChangeType, $($context),*); + + $macro_to_call_back!(LedgerEntryChange, $($context),*); + + $macro_to_call_back!(LedgerEntryChanges, $($context),*); + + $macro_to_call_back!(OperationMeta, $($context),*); + + $macro_to_call_back!(TransactionMetaV1, $($context),*); + + $macro_to_call_back!(TransactionMetaV2, $($context),*); + + $macro_to_call_back!(ContractEventType, $($context),*); + + $macro_to_call_back!(ContractEvent, $($context),*); + + $macro_to_call_back!(ContractEventBody, $($context),*); + + $macro_to_call_back!(ContractEventV0, $($context),*); + + $macro_to_call_back!(DiagnosticEvent, $($context),*); + + $macro_to_call_back!(SorobanTransactionMeta, $($context),*); + + $macro_to_call_back!(TransactionMetaV3, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionSuccessPreImage, $($context),*); + + $macro_to_call_back!(TransactionMeta, $($context),*); + + $macro_to_call_back!(TransactionResultMeta, $($context),*); + + $macro_to_call_back!(UpgradeEntryMeta, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaV0, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaV1, $($context),*); + + $macro_to_call_back!(LedgerCloseMeta, $($context),*); + + $macro_to_call_back!(ErrorCode, $($context),*); + + $macro_to_call_back!(SError, $($context),*); + + $macro_to_call_back!(SendMore, $($context),*); + + $macro_to_call_back!(SendMoreExtended, $($context),*); + + $macro_to_call_back!(AuthCert, $($context),*); + + $macro_to_call_back!(Hello, $($context),*); + + $macro_to_call_back!(Auth, $($context),*); + + $macro_to_call_back!(IpAddrType, $($context),*); + + $macro_to_call_back!(PeerAddress, $($context),*); + + $macro_to_call_back!(PeerAddressIp, $($context),*); + + $macro_to_call_back!(MessageType, $($context),*); + + $macro_to_call_back!(DontHave, $($context),*); + + $macro_to_call_back!(SurveyMessageCommandType, $($context),*); + + $macro_to_call_back!(SurveyMessageResponseType, $($context),*); + + $macro_to_call_back!(SurveyRequestMessage, $($context),*); + + $macro_to_call_back!(SignedSurveyRequestMessage, $($context),*); + + $macro_to_call_back!(EncryptedBody, $($context),*); + + $macro_to_call_back!(SurveyResponseMessage, $($context),*); + + $macro_to_call_back!(SignedSurveyResponseMessage, $($context),*); + + $macro_to_call_back!(PeerStats, $($context),*); + + $macro_to_call_back!(PeerStatList, $($context),*); + + $macro_to_call_back!(TopologyResponseBodyV0, $($context),*); + + $macro_to_call_back!(TopologyResponseBodyV1, $($context),*); + + $macro_to_call_back!(SurveyResponseBody, $($context),*); + + $macro_to_call_back!(TxAdvertVector, $($context),*); + + $macro_to_call_back!(FloodAdvert, $($context),*); + + $macro_to_call_back!(TxDemandVector, $($context),*); + + $macro_to_call_back!(FloodDemand, $($context),*); + + $macro_to_call_back!(StellarMessage, $($context),*); + + $macro_to_call_back!(AuthenticatedMessage, $($context),*); + + $macro_to_call_back!(AuthenticatedMessageV0, $($context),*); + + $macro_to_call_back!(LiquidityPoolParameters, $($context),*); + + $macro_to_call_back!(MuxedAccount, $($context),*); + + $macro_to_call_back!(MuxedAccountMed25519, $($context),*); + + $macro_to_call_back!(DecoratedSignature, $($context),*); + + $macro_to_call_back!(OperationType, $($context),*); + + $macro_to_call_back!(CreateAccountOp, $($context),*); + + $macro_to_call_back!(PaymentOp, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveOp, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendOp, $($context),*); + + $macro_to_call_back!(ManageSellOfferOp, $($context),*); + + $macro_to_call_back!(ManageBuyOfferOp, $($context),*); + + $macro_to_call_back!(CreatePassiveSellOfferOp, $($context),*); + + $macro_to_call_back!(SetOptionsOp, $($context),*); + + $macro_to_call_back!(ChangeTrustAsset, $($context),*); + + $macro_to_call_back!(ChangeTrustOp, $($context),*); + + $macro_to_call_back!(AllowTrustOp, $($context),*); + + $macro_to_call_back!(ManageDataOp, $($context),*); + + $macro_to_call_back!(BumpSequenceOp, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesOp, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipType, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipOp, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipOpSigner, $($context),*); + + $macro_to_call_back!(ClawbackOp, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsOp, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositOp, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawOp, $($context),*); + + $macro_to_call_back!(HostFunctionType, $($context),*); + + $macro_to_call_back!(ContractIdPreimageType, $($context),*); + + $macro_to_call_back!(ContractIdPreimage, $($context),*); + + $macro_to_call_back!(ContractIdPreimageFromAddress, $($context),*); + + $macro_to_call_back!(CreateContractArgs, $($context),*); + + $macro_to_call_back!(InvokeContractArgs, $($context),*); + + $macro_to_call_back!(HostFunction, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedFunctionType, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedFunction, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedInvocation, $($context),*); + + $macro_to_call_back!(SorobanAddressCredentials, $($context),*); + + $macro_to_call_back!(SorobanCredentialsType, $($context),*); + + $macro_to_call_back!(SorobanCredentials, $($context),*); + + $macro_to_call_back!(SorobanAuthorizationEntry, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionOp, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlOp, $($context),*); + + $macro_to_call_back!(RestoreFootprintOp, $($context),*); + + $macro_to_call_back!(Operation, $($context),*); + + $macro_to_call_back!(OperationBody, $($context),*); + + $macro_to_call_back!(HashIdPreimage, $($context),*); + + $macro_to_call_back!(HashIdPreimageOperationId, $($context),*); + + $macro_to_call_back!(HashIdPreimageRevokeId, $($context),*); + + $macro_to_call_back!(HashIdPreimageContractId, $($context),*); + + $macro_to_call_back!(HashIdPreimageSorobanAuthorization, $($context),*); + + $macro_to_call_back!(MemoType, $($context),*); + + $macro_to_call_back!(Memo, $($context),*); + + $macro_to_call_back!(TimeBounds, $($context),*); + + $macro_to_call_back!(LedgerBounds, $($context),*); + + $macro_to_call_back!(PreconditionsV2, $($context),*); + + $macro_to_call_back!(PreconditionType, $($context),*); + + $macro_to_call_back!(Preconditions, $($context),*); + + $macro_to_call_back!(LedgerFootprint, $($context),*); + + $macro_to_call_back!(SorobanResources, $($context),*); + + $macro_to_call_back!(SorobanTransactionData, $($context),*); + + $macro_to_call_back!(TransactionV0, $($context),*); + + $macro_to_call_back!(TransactionV0Ext, $($context),*); + + $macro_to_call_back!(TransactionV0Envelope, $($context),*); + + $macro_to_call_back!(Transaction, $($context),*); + + $macro_to_call_back!(TransactionExt, $($context),*); + + $macro_to_call_back!(TransactionV1Envelope, $($context),*); + + $macro_to_call_back!(FeeBumpTransaction, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionInnerTx, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionExt, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionEnvelope, $($context),*); + + $macro_to_call_back!(TransactionEnvelope, $($context),*); + + $macro_to_call_back!(TransactionSignaturePayload, $($context),*); + + $macro_to_call_back!(TransactionSignaturePayloadTaggedTransaction, $($context),*); + + $macro_to_call_back!(ClaimAtomType, $($context),*); + + $macro_to_call_back!(ClaimOfferAtomV0, $($context),*); + + $macro_to_call_back!(ClaimOfferAtom, $($context),*); + + $macro_to_call_back!(ClaimLiquidityAtom, $($context),*); + + $macro_to_call_back!(ClaimAtom, $($context),*); + + $macro_to_call_back!(CreateAccountResultCode, $($context),*); + + $macro_to_call_back!(CreateAccountResult, $($context),*); + + $macro_to_call_back!(PaymentResultCode, $($context),*); + + $macro_to_call_back!(PaymentResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResultCode, $($context),*); + + $macro_to_call_back!(SimplePaymentResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResultSuccess, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResultCode, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResultSuccess, $($context),*); + + $macro_to_call_back!(ManageSellOfferResultCode, $($context),*); + + $macro_to_call_back!(ManageOfferEffect, $($context),*); + + $macro_to_call_back!(ManageOfferSuccessResult, $($context),*); + + $macro_to_call_back!(ManageOfferSuccessResultOffer, $($context),*); + + $macro_to_call_back!(ManageSellOfferResult, $($context),*); + + $macro_to_call_back!(ManageBuyOfferResultCode, $($context),*); + + $macro_to_call_back!(ManageBuyOfferResult, $($context),*); + + $macro_to_call_back!(SetOptionsResultCode, $($context),*); + + $macro_to_call_back!(SetOptionsResult, $($context),*); + + $macro_to_call_back!(ChangeTrustResultCode, $($context),*); + + $macro_to_call_back!(ChangeTrustResult, $($context),*); + + $macro_to_call_back!(AllowTrustResultCode, $($context),*); + + $macro_to_call_back!(AllowTrustResult, $($context),*); + + $macro_to_call_back!(AccountMergeResultCode, $($context),*); + + $macro_to_call_back!(AccountMergeResult, $($context),*); + + $macro_to_call_back!(InflationResultCode, $($context),*); + + $macro_to_call_back!(InflationPayout, $($context),*); + + $macro_to_call_back!(InflationResult, $($context),*); + + $macro_to_call_back!(ManageDataResultCode, $($context),*); + + $macro_to_call_back!(ManageDataResult, $($context),*); + + $macro_to_call_back!(BumpSequenceResultCode, $($context),*); + + $macro_to_call_back!(BumpSequenceResult, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesResultCode, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesResult, $($context),*); + + $macro_to_call_back!(EndSponsoringFutureReservesResultCode, $($context),*); + + $macro_to_call_back!(EndSponsoringFutureReservesResult, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipResultCode, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipResult, $($context),*); + + $macro_to_call_back!(ClawbackResultCode, $($context),*); + + $macro_to_call_back!(ClawbackResult, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsResultCode, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsResult, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositResultCode, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositResult, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawResultCode, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawResult, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionResultCode, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionResult, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlResultCode, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlResult, $($context),*); + + $macro_to_call_back!(RestoreFootprintResultCode, $($context),*); + + $macro_to_call_back!(RestoreFootprintResult, $($context),*); + + $macro_to_call_back!(OperationResultCode, $($context),*); + + $macro_to_call_back!(OperationResult, $($context),*); + + $macro_to_call_back!(OperationResultTr, $($context),*); + + $macro_to_call_back!(TransactionResultCode, $($context),*); + + $macro_to_call_back!(InnerTransactionResult, $($context),*); + + $macro_to_call_back!(InnerTransactionResultResult, $($context),*); + + $macro_to_call_back!(InnerTransactionResultExt, $($context),*); + + $macro_to_call_back!(InnerTransactionResultPair, $($context),*); + + $macro_to_call_back!(TransactionResult, $($context),*); + + $macro_to_call_back!(TransactionResultResult, $($context),*); + + $macro_to_call_back!(TransactionResultExt, $($context),*); + + $macro_to_call_back!(Hash, $($context),*); + + $macro_to_call_back!(Uint256, $($context),*); + + $macro_to_call_back!(Uint32, $($context),*); + + $macro_to_call_back!(Int32, $($context),*); + + $macro_to_call_back!(Uint64, $($context),*); + + $macro_to_call_back!(Int64, $($context),*); + + $macro_to_call_back!(TimePoint, $($context),*); + + $macro_to_call_back!(Duration, $($context),*); + + $macro_to_call_back!(ExtensionPoint, $($context),*); + + $macro_to_call_back!(CryptoKeyType, $($context),*); + + $macro_to_call_back!(PublicKeyType, $($context),*); + + $macro_to_call_back!(SignerKeyType, $($context),*); + + $macro_to_call_back!(PublicKey, $($context),*); + + $macro_to_call_back!(SignerKey, $($context),*); + + $macro_to_call_back!(SignerKeyEd25519SignedPayload, $($context),*); + + $macro_to_call_back!(Signature, $($context),*); + + $macro_to_call_back!(SignatureHint, $($context),*); + + $macro_to_call_back!(NodeId, $($context),*); + + $macro_to_call_back!(AccountId, $($context),*); + + $macro_to_call_back!(Curve25519Secret, $($context),*); + + $macro_to_call_back!(Curve25519Public, $($context),*); + + $macro_to_call_back!(HmacSha256Key, $($context),*); + + $macro_to_call_back!(HmacSha256Mac, $($context),*); + + + }}; +} +pub use _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f8cc9ceb6a6de8c91abcb1289 as call_macro_with_each_type; #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), diff --git a/src/next/generated.rs b/src/next/generated.rs index d7a2201c..e8547b1d 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -42814,6 +42814,852 @@ impl WriteXdr for HmacSha256Mac { } } +#[doc(hidden)] +#[macro_export] +macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc2dcdebbad617637359bef05f { + // The x-macro takes a single ident, the name of a macro to call ... + ($macro_to_call_back:ident, $($context:tt),*) => {{ + // ... and calls it back, once for each XDR type. + $macro_to_call_back!(Value, $($context),*); + + $macro_to_call_back!(ScpBallot, $($context),*); + + $macro_to_call_back!(ScpStatementType, $($context),*); + + $macro_to_call_back!(ScpNomination, $($context),*); + + $macro_to_call_back!(ScpStatement, $($context),*); + + $macro_to_call_back!(ScpStatementPledges, $($context),*); + + $macro_to_call_back!(ScpStatementPrepare, $($context),*); + + $macro_to_call_back!(ScpStatementConfirm, $($context),*); + + $macro_to_call_back!(ScpStatementExternalize, $($context),*); + + $macro_to_call_back!(ScpEnvelope, $($context),*); + + $macro_to_call_back!(ScpQuorumSet, $($context),*); + + $macro_to_call_back!(ConfigSettingContractExecutionLanesV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractComputeV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractLedgerCostV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractHistoricalDataV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractEventsV0, $($context),*); + + $macro_to_call_back!(ConfigSettingContractBandwidthV0, $($context),*); + + $macro_to_call_back!(ContractCostType, $($context),*); + + $macro_to_call_back!(ContractCostParamEntry, $($context),*); + + $macro_to_call_back!(StateArchivalSettings, $($context),*); + + $macro_to_call_back!(EvictionIterator, $($context),*); + + $macro_to_call_back!(ContractCostParams, $($context),*); + + $macro_to_call_back!(ConfigSettingId, $($context),*); + + $macro_to_call_back!(ConfigSettingEntry, $($context),*); + + $macro_to_call_back!(ScEnvMetaKind, $($context),*); + + $macro_to_call_back!(ScEnvMetaEntry, $($context),*); + + $macro_to_call_back!(ScMetaV0, $($context),*); + + $macro_to_call_back!(ScMetaKind, $($context),*); + + $macro_to_call_back!(ScMetaEntry, $($context),*); + + $macro_to_call_back!(ScSpecType, $($context),*); + + $macro_to_call_back!(ScSpecTypeOption, $($context),*); + + $macro_to_call_back!(ScSpecTypeResult, $($context),*); + + $macro_to_call_back!(ScSpecTypeVec, $($context),*); + + $macro_to_call_back!(ScSpecTypeMap, $($context),*); + + $macro_to_call_back!(ScSpecTypeTuple, $($context),*); + + $macro_to_call_back!(ScSpecTypeBytesN, $($context),*); + + $macro_to_call_back!(ScSpecTypeUdt, $($context),*); + + $macro_to_call_back!(ScSpecTypeDef, $($context),*); + + $macro_to_call_back!(ScSpecUdtStructFieldV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtStructV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseVoidV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseTupleV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseV0Kind, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtUnionV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtEnumCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtEnumV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtErrorEnumCaseV0, $($context),*); + + $macro_to_call_back!(ScSpecUdtErrorEnumV0, $($context),*); + + $macro_to_call_back!(ScSpecFunctionInputV0, $($context),*); + + $macro_to_call_back!(ScSpecFunctionV0, $($context),*); + + $macro_to_call_back!(ScSpecEntryKind, $($context),*); + + $macro_to_call_back!(ScSpecEntry, $($context),*); + + $macro_to_call_back!(ScValType, $($context),*); + + $macro_to_call_back!(ScErrorType, $($context),*); + + $macro_to_call_back!(ScErrorCode, $($context),*); + + $macro_to_call_back!(ScError, $($context),*); + + $macro_to_call_back!(UInt128Parts, $($context),*); + + $macro_to_call_back!(Int128Parts, $($context),*); + + $macro_to_call_back!(UInt256Parts, $($context),*); + + $macro_to_call_back!(Int256Parts, $($context),*); + + $macro_to_call_back!(ContractExecutableType, $($context),*); + + $macro_to_call_back!(ContractExecutable, $($context),*); + + $macro_to_call_back!(ScAddressType, $($context),*); + + $macro_to_call_back!(ScAddress, $($context),*); + + $macro_to_call_back!(ScVec, $($context),*); + + $macro_to_call_back!(ScMap, $($context),*); + + $macro_to_call_back!(ScBytes, $($context),*); + + $macro_to_call_back!(ScString, $($context),*); + + $macro_to_call_back!(ScSymbol, $($context),*); + + $macro_to_call_back!(ScNonceKey, $($context),*); + + $macro_to_call_back!(ScContractInstance, $($context),*); + + $macro_to_call_back!(ScVal, $($context),*); + + $macro_to_call_back!(ScMapEntry, $($context),*); + + $macro_to_call_back!(StoredTransactionSet, $($context),*); + + $macro_to_call_back!(StoredDebugTransactionSet, $($context),*); + + $macro_to_call_back!(PersistedScpStateV0, $($context),*); + + $macro_to_call_back!(PersistedScpStateV1, $($context),*); + + $macro_to_call_back!(PersistedScpState, $($context),*); + + $macro_to_call_back!(Thresholds, $($context),*); + + $macro_to_call_back!(String32, $($context),*); + + $macro_to_call_back!(String64, $($context),*); + + $macro_to_call_back!(SequenceNumber, $($context),*); + + $macro_to_call_back!(DataValue, $($context),*); + + $macro_to_call_back!(PoolId, $($context),*); + + $macro_to_call_back!(AssetCode4, $($context),*); + + $macro_to_call_back!(AssetCode12, $($context),*); + + $macro_to_call_back!(AssetType, $($context),*); + + $macro_to_call_back!(AssetCode, $($context),*); + + $macro_to_call_back!(AlphaNum4, $($context),*); + + $macro_to_call_back!(AlphaNum12, $($context),*); + + $macro_to_call_back!(Asset, $($context),*); + + $macro_to_call_back!(Price, $($context),*); + + $macro_to_call_back!(Liabilities, $($context),*); + + $macro_to_call_back!(ThresholdIndexes, $($context),*); + + $macro_to_call_back!(LedgerEntryType, $($context),*); + + $macro_to_call_back!(Signer, $($context),*); + + $macro_to_call_back!(AccountFlags, $($context),*); + + $macro_to_call_back!(SponsorshipDescriptor, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV3, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV2, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV2Ext, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV1, $($context),*); + + $macro_to_call_back!(AccountEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(AccountEntry, $($context),*); + + $macro_to_call_back!(AccountEntryExt, $($context),*); + + $macro_to_call_back!(TrustLineFlags, $($context),*); + + $macro_to_call_back!(LiquidityPoolType, $($context),*); + + $macro_to_call_back!(TrustLineAsset, $($context),*); + + $macro_to_call_back!(TrustLineEntryExtensionV2, $($context),*); + + $macro_to_call_back!(TrustLineEntryExtensionV2Ext, $($context),*); + + $macro_to_call_back!(TrustLineEntry, $($context),*); + + $macro_to_call_back!(TrustLineEntryExt, $($context),*); + + $macro_to_call_back!(TrustLineEntryV1, $($context),*); + + $macro_to_call_back!(TrustLineEntryV1Ext, $($context),*); + + $macro_to_call_back!(OfferEntryFlags, $($context),*); + + $macro_to_call_back!(OfferEntry, $($context),*); + + $macro_to_call_back!(OfferEntryExt, $($context),*); + + $macro_to_call_back!(DataEntry, $($context),*); + + $macro_to_call_back!(DataEntryExt, $($context),*); + + $macro_to_call_back!(ClaimPredicateType, $($context),*); + + $macro_to_call_back!(ClaimPredicate, $($context),*); + + $macro_to_call_back!(ClaimantType, $($context),*); + + $macro_to_call_back!(Claimant, $($context),*); + + $macro_to_call_back!(ClaimantV0, $($context),*); + + $macro_to_call_back!(ClaimableBalanceIdType, $($context),*); + + $macro_to_call_back!(ClaimableBalanceId, $($context),*); + + $macro_to_call_back!(ClaimableBalanceFlags, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExtensionV1, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntry, $($context),*); + + $macro_to_call_back!(ClaimableBalanceEntryExt, $($context),*); + + $macro_to_call_back!(LiquidityPoolConstantProductParameters, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntry, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntryBody, $($context),*); + + $macro_to_call_back!(LiquidityPoolEntryConstantProduct, $($context),*); + + $macro_to_call_back!(ContractDataDurability, $($context),*); + + $macro_to_call_back!(ContractDataEntry, $($context),*); + + $macro_to_call_back!(ContractCodeEntry, $($context),*); + + $macro_to_call_back!(TtlEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryExtensionV1, $($context),*); + + $macro_to_call_back!(LedgerEntryExtensionV1Ext, $($context),*); + + $macro_to_call_back!(LedgerEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryData, $($context),*); + + $macro_to_call_back!(LedgerEntryExt, $($context),*); + + $macro_to_call_back!(LedgerKey, $($context),*); + + $macro_to_call_back!(LedgerKeyAccount, $($context),*); + + $macro_to_call_back!(LedgerKeyTrustLine, $($context),*); + + $macro_to_call_back!(LedgerKeyOffer, $($context),*); + + $macro_to_call_back!(LedgerKeyData, $($context),*); + + $macro_to_call_back!(LedgerKeyClaimableBalance, $($context),*); + + $macro_to_call_back!(LedgerKeyLiquidityPool, $($context),*); + + $macro_to_call_back!(LedgerKeyContractData, $($context),*); + + $macro_to_call_back!(LedgerKeyContractCode, $($context),*); + + $macro_to_call_back!(LedgerKeyConfigSetting, $($context),*); + + $macro_to_call_back!(LedgerKeyTtl, $($context),*); + + $macro_to_call_back!(EnvelopeType, $($context),*); + + $macro_to_call_back!(UpgradeType, $($context),*); + + $macro_to_call_back!(StellarValueType, $($context),*); + + $macro_to_call_back!(LedgerCloseValueSignature, $($context),*); + + $macro_to_call_back!(StellarValue, $($context),*); + + $macro_to_call_back!(StellarValueExt, $($context),*); + + $macro_to_call_back!(LedgerHeaderFlags, $($context),*); + + $macro_to_call_back!(LedgerHeaderExtensionV1, $($context),*); + + $macro_to_call_back!(LedgerHeaderExtensionV1Ext, $($context),*); + + $macro_to_call_back!(LedgerHeader, $($context),*); + + $macro_to_call_back!(LedgerHeaderExt, $($context),*); + + $macro_to_call_back!(LedgerUpgradeType, $($context),*); + + $macro_to_call_back!(ConfigUpgradeSetKey, $($context),*); + + $macro_to_call_back!(LedgerUpgrade, $($context),*); + + $macro_to_call_back!(ConfigUpgradeSet, $($context),*); + + $macro_to_call_back!(BucketEntryType, $($context),*); + + $macro_to_call_back!(BucketMetadata, $($context),*); + + $macro_to_call_back!(BucketMetadataExt, $($context),*); + + $macro_to_call_back!(BucketEntry, $($context),*); + + $macro_to_call_back!(TxSetComponentType, $($context),*); + + $macro_to_call_back!(TxSetComponent, $($context),*); + + $macro_to_call_back!(TxSetComponentTxsMaybeDiscountedFee, $($context),*); + + $macro_to_call_back!(TransactionPhase, $($context),*); + + $macro_to_call_back!(TransactionSet, $($context),*); + + $macro_to_call_back!(TransactionSetV1, $($context),*); + + $macro_to_call_back!(GeneralizedTransactionSet, $($context),*); + + $macro_to_call_back!(TransactionResultPair, $($context),*); + + $macro_to_call_back!(TransactionResultSet, $($context),*); + + $macro_to_call_back!(TransactionHistoryEntry, $($context),*); + + $macro_to_call_back!(TransactionHistoryEntryExt, $($context),*); + + $macro_to_call_back!(TransactionHistoryResultEntry, $($context),*); + + $macro_to_call_back!(TransactionHistoryResultEntryExt, $($context),*); + + $macro_to_call_back!(LedgerHeaderHistoryEntry, $($context),*); + + $macro_to_call_back!(LedgerHeaderHistoryEntryExt, $($context),*); + + $macro_to_call_back!(LedgerScpMessages, $($context),*); + + $macro_to_call_back!(ScpHistoryEntryV0, $($context),*); + + $macro_to_call_back!(ScpHistoryEntry, $($context),*); + + $macro_to_call_back!(LedgerEntryChangeType, $($context),*); + + $macro_to_call_back!(LedgerEntryChange, $($context),*); + + $macro_to_call_back!(LedgerEntryChanges, $($context),*); + + $macro_to_call_back!(OperationMeta, $($context),*); + + $macro_to_call_back!(TransactionMetaV1, $($context),*); + + $macro_to_call_back!(TransactionMetaV2, $($context),*); + + $macro_to_call_back!(ContractEventType, $($context),*); + + $macro_to_call_back!(ContractEvent, $($context),*); + + $macro_to_call_back!(ContractEventBody, $($context),*); + + $macro_to_call_back!(ContractEventV0, $($context),*); + + $macro_to_call_back!(DiagnosticEvent, $($context),*); + + $macro_to_call_back!(SorobanTransactionMeta, $($context),*); + + $macro_to_call_back!(TransactionMetaV3, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionSuccessPreImage, $($context),*); + + $macro_to_call_back!(TransactionMeta, $($context),*); + + $macro_to_call_back!(TransactionResultMeta, $($context),*); + + $macro_to_call_back!(UpgradeEntryMeta, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaV0, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaV1, $($context),*); + + $macro_to_call_back!(LedgerCloseMeta, $($context),*); + + $macro_to_call_back!(ErrorCode, $($context),*); + + $macro_to_call_back!(SError, $($context),*); + + $macro_to_call_back!(SendMore, $($context),*); + + $macro_to_call_back!(SendMoreExtended, $($context),*); + + $macro_to_call_back!(AuthCert, $($context),*); + + $macro_to_call_back!(Hello, $($context),*); + + $macro_to_call_back!(Auth, $($context),*); + + $macro_to_call_back!(IpAddrType, $($context),*); + + $macro_to_call_back!(PeerAddress, $($context),*); + + $macro_to_call_back!(PeerAddressIp, $($context),*); + + $macro_to_call_back!(MessageType, $($context),*); + + $macro_to_call_back!(DontHave, $($context),*); + + $macro_to_call_back!(SurveyMessageCommandType, $($context),*); + + $macro_to_call_back!(SurveyMessageResponseType, $($context),*); + + $macro_to_call_back!(SurveyRequestMessage, $($context),*); + + $macro_to_call_back!(SignedSurveyRequestMessage, $($context),*); + + $macro_to_call_back!(EncryptedBody, $($context),*); + + $macro_to_call_back!(SurveyResponseMessage, $($context),*); + + $macro_to_call_back!(SignedSurveyResponseMessage, $($context),*); + + $macro_to_call_back!(PeerStats, $($context),*); + + $macro_to_call_back!(PeerStatList, $($context),*); + + $macro_to_call_back!(TopologyResponseBodyV0, $($context),*); + + $macro_to_call_back!(TopologyResponseBodyV1, $($context),*); + + $macro_to_call_back!(SurveyResponseBody, $($context),*); + + $macro_to_call_back!(TxAdvertVector, $($context),*); + + $macro_to_call_back!(FloodAdvert, $($context),*); + + $macro_to_call_back!(TxDemandVector, $($context),*); + + $macro_to_call_back!(FloodDemand, $($context),*); + + $macro_to_call_back!(StellarMessage, $($context),*); + + $macro_to_call_back!(AuthenticatedMessage, $($context),*); + + $macro_to_call_back!(AuthenticatedMessageV0, $($context),*); + + $macro_to_call_back!(LiquidityPoolParameters, $($context),*); + + $macro_to_call_back!(MuxedAccount, $($context),*); + + $macro_to_call_back!(MuxedAccountMed25519, $($context),*); + + $macro_to_call_back!(DecoratedSignature, $($context),*); + + $macro_to_call_back!(OperationType, $($context),*); + + $macro_to_call_back!(CreateAccountOp, $($context),*); + + $macro_to_call_back!(PaymentOp, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveOp, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendOp, $($context),*); + + $macro_to_call_back!(ManageSellOfferOp, $($context),*); + + $macro_to_call_back!(ManageBuyOfferOp, $($context),*); + + $macro_to_call_back!(CreatePassiveSellOfferOp, $($context),*); + + $macro_to_call_back!(SetOptionsOp, $($context),*); + + $macro_to_call_back!(ChangeTrustAsset, $($context),*); + + $macro_to_call_back!(ChangeTrustOp, $($context),*); + + $macro_to_call_back!(AllowTrustOp, $($context),*); + + $macro_to_call_back!(ManageDataOp, $($context),*); + + $macro_to_call_back!(BumpSequenceOp, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesOp, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipType, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipOp, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipOpSigner, $($context),*); + + $macro_to_call_back!(ClawbackOp, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceOp, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsOp, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositOp, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawOp, $($context),*); + + $macro_to_call_back!(HostFunctionType, $($context),*); + + $macro_to_call_back!(ContractIdPreimageType, $($context),*); + + $macro_to_call_back!(ContractIdPreimage, $($context),*); + + $macro_to_call_back!(ContractIdPreimageFromAddress, $($context),*); + + $macro_to_call_back!(CreateContractArgs, $($context),*); + + $macro_to_call_back!(InvokeContractArgs, $($context),*); + + $macro_to_call_back!(HostFunction, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedFunctionType, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedFunction, $($context),*); + + $macro_to_call_back!(SorobanAuthorizedInvocation, $($context),*); + + $macro_to_call_back!(SorobanAddressCredentials, $($context),*); + + $macro_to_call_back!(SorobanCredentialsType, $($context),*); + + $macro_to_call_back!(SorobanCredentials, $($context),*); + + $macro_to_call_back!(SorobanAuthorizationEntry, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionOp, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlOp, $($context),*); + + $macro_to_call_back!(RestoreFootprintOp, $($context),*); + + $macro_to_call_back!(Operation, $($context),*); + + $macro_to_call_back!(OperationBody, $($context),*); + + $macro_to_call_back!(HashIdPreimage, $($context),*); + + $macro_to_call_back!(HashIdPreimageOperationId, $($context),*); + + $macro_to_call_back!(HashIdPreimageRevokeId, $($context),*); + + $macro_to_call_back!(HashIdPreimageContractId, $($context),*); + + $macro_to_call_back!(HashIdPreimageSorobanAuthorization, $($context),*); + + $macro_to_call_back!(MemoType, $($context),*); + + $macro_to_call_back!(Memo, $($context),*); + + $macro_to_call_back!(TimeBounds, $($context),*); + + $macro_to_call_back!(LedgerBounds, $($context),*); + + $macro_to_call_back!(PreconditionsV2, $($context),*); + + $macro_to_call_back!(PreconditionType, $($context),*); + + $macro_to_call_back!(Preconditions, $($context),*); + + $macro_to_call_back!(LedgerFootprint, $($context),*); + + $macro_to_call_back!(SorobanResources, $($context),*); + + $macro_to_call_back!(SorobanTransactionData, $($context),*); + + $macro_to_call_back!(TransactionV0, $($context),*); + + $macro_to_call_back!(TransactionV0Ext, $($context),*); + + $macro_to_call_back!(TransactionV0Envelope, $($context),*); + + $macro_to_call_back!(Transaction, $($context),*); + + $macro_to_call_back!(TransactionExt, $($context),*); + + $macro_to_call_back!(TransactionV1Envelope, $($context),*); + + $macro_to_call_back!(FeeBumpTransaction, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionInnerTx, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionExt, $($context),*); + + $macro_to_call_back!(FeeBumpTransactionEnvelope, $($context),*); + + $macro_to_call_back!(TransactionEnvelope, $($context),*); + + $macro_to_call_back!(TransactionSignaturePayload, $($context),*); + + $macro_to_call_back!(TransactionSignaturePayloadTaggedTransaction, $($context),*); + + $macro_to_call_back!(ClaimAtomType, $($context),*); + + $macro_to_call_back!(ClaimOfferAtomV0, $($context),*); + + $macro_to_call_back!(ClaimOfferAtom, $($context),*); + + $macro_to_call_back!(ClaimLiquidityAtom, $($context),*); + + $macro_to_call_back!(ClaimAtom, $($context),*); + + $macro_to_call_back!(CreateAccountResultCode, $($context),*); + + $macro_to_call_back!(CreateAccountResult, $($context),*); + + $macro_to_call_back!(PaymentResultCode, $($context),*); + + $macro_to_call_back!(PaymentResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResultCode, $($context),*); + + $macro_to_call_back!(SimplePaymentResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictReceiveResultSuccess, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResultCode, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResult, $($context),*); + + $macro_to_call_back!(PathPaymentStrictSendResultSuccess, $($context),*); + + $macro_to_call_back!(ManageSellOfferResultCode, $($context),*); + + $macro_to_call_back!(ManageOfferEffect, $($context),*); + + $macro_to_call_back!(ManageOfferSuccessResult, $($context),*); + + $macro_to_call_back!(ManageOfferSuccessResultOffer, $($context),*); + + $macro_to_call_back!(ManageSellOfferResult, $($context),*); + + $macro_to_call_back!(ManageBuyOfferResultCode, $($context),*); + + $macro_to_call_back!(ManageBuyOfferResult, $($context),*); + + $macro_to_call_back!(SetOptionsResultCode, $($context),*); + + $macro_to_call_back!(SetOptionsResult, $($context),*); + + $macro_to_call_back!(ChangeTrustResultCode, $($context),*); + + $macro_to_call_back!(ChangeTrustResult, $($context),*); + + $macro_to_call_back!(AllowTrustResultCode, $($context),*); + + $macro_to_call_back!(AllowTrustResult, $($context),*); + + $macro_to_call_back!(AccountMergeResultCode, $($context),*); + + $macro_to_call_back!(AccountMergeResult, $($context),*); + + $macro_to_call_back!(InflationResultCode, $($context),*); + + $macro_to_call_back!(InflationPayout, $($context),*); + + $macro_to_call_back!(InflationResult, $($context),*); + + $macro_to_call_back!(ManageDataResultCode, $($context),*); + + $macro_to_call_back!(ManageDataResult, $($context),*); + + $macro_to_call_back!(BumpSequenceResultCode, $($context),*); + + $macro_to_call_back!(BumpSequenceResult, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(CreateClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(ClaimClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesResultCode, $($context),*); + + $macro_to_call_back!(BeginSponsoringFutureReservesResult, $($context),*); + + $macro_to_call_back!(EndSponsoringFutureReservesResultCode, $($context),*); + + $macro_to_call_back!(EndSponsoringFutureReservesResult, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipResultCode, $($context),*); + + $macro_to_call_back!(RevokeSponsorshipResult, $($context),*); + + $macro_to_call_back!(ClawbackResultCode, $($context),*); + + $macro_to_call_back!(ClawbackResult, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceResultCode, $($context),*); + + $macro_to_call_back!(ClawbackClaimableBalanceResult, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsResultCode, $($context),*); + + $macro_to_call_back!(SetTrustLineFlagsResult, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositResultCode, $($context),*); + + $macro_to_call_back!(LiquidityPoolDepositResult, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawResultCode, $($context),*); + + $macro_to_call_back!(LiquidityPoolWithdrawResult, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionResultCode, $($context),*); + + $macro_to_call_back!(InvokeHostFunctionResult, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlResultCode, $($context),*); + + $macro_to_call_back!(ExtendFootprintTtlResult, $($context),*); + + $macro_to_call_back!(RestoreFootprintResultCode, $($context),*); + + $macro_to_call_back!(RestoreFootprintResult, $($context),*); + + $macro_to_call_back!(OperationResultCode, $($context),*); + + $macro_to_call_back!(OperationResult, $($context),*); + + $macro_to_call_back!(OperationResultTr, $($context),*); + + $macro_to_call_back!(TransactionResultCode, $($context),*); + + $macro_to_call_back!(InnerTransactionResult, $($context),*); + + $macro_to_call_back!(InnerTransactionResultResult, $($context),*); + + $macro_to_call_back!(InnerTransactionResultExt, $($context),*); + + $macro_to_call_back!(InnerTransactionResultPair, $($context),*); + + $macro_to_call_back!(TransactionResult, $($context),*); + + $macro_to_call_back!(TransactionResultResult, $($context),*); + + $macro_to_call_back!(TransactionResultExt, $($context),*); + + $macro_to_call_back!(Hash, $($context),*); + + $macro_to_call_back!(Uint256, $($context),*); + + $macro_to_call_back!(Uint32, $($context),*); + + $macro_to_call_back!(Int32, $($context),*); + + $macro_to_call_back!(Uint64, $($context),*); + + $macro_to_call_back!(Int64, $($context),*); + + $macro_to_call_back!(TimePoint, $($context),*); + + $macro_to_call_back!(Duration, $($context),*); + + $macro_to_call_back!(ExtensionPoint, $($context),*); + + $macro_to_call_back!(CryptoKeyType, $($context),*); + + $macro_to_call_back!(PublicKeyType, $($context),*); + + $macro_to_call_back!(SignerKeyType, $($context),*); + + $macro_to_call_back!(PublicKey, $($context),*); + + $macro_to_call_back!(SignerKey, $($context),*); + + $macro_to_call_back!(SignerKeyEd25519SignedPayload, $($context),*); + + $macro_to_call_back!(Signature, $($context),*); + + $macro_to_call_back!(SignatureHint, $($context),*); + + $macro_to_call_back!(NodeId, $($context),*); + + $macro_to_call_back!(AccountId, $($context),*); + + $macro_to_call_back!(Curve25519Secret, $($context),*); + + $macro_to_call_back!(Curve25519Public, $($context),*); + + $macro_to_call_back!(HmacSha256Key, $($context),*); + + $macro_to_call_back!(HmacSha256Mac, $($context),*); + + + }}; +} +pub use _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc2dcdebbad617637359bef05f as call_macro_with_each_type; #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), From db6d5a537a4c8368a3b81ce3278a715d71063797 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Wed, 13 Mar 2024 22:34:26 +1000 Subject: [PATCH 11/25] ping to draft7 --- src/cli/types/schema.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cli/types/schema.rs b/src/cli/types/schema.rs index 3354513b..dc124567 100644 --- a/src/cli/types/schema.rs +++ b/src/cli/types/schema.rs @@ -1,4 +1,5 @@ use clap::{Args, ValueEnum}; +use schemars::gen::SchemaSettings; use crate::cli::Channel; @@ -38,9 +39,11 @@ macro_rules! run_x_case_for_type { if $type_name == stringify!($type) { match $output { OutputFormat::JsonSchemaDraft7 => { - let schema = schemars::schema_for!(crate::$m::$type); + let settings = SchemaSettings::draft07(); + let generator = settings.into_generator(); + let schema = generator.into_root_schema_for::(); println!("{}", serde_json::to_string_pretty(&schema)?); - }, + } } } }; From ecb4216c7b1872c75416db4ba050b084e32af8dd Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:12:32 +1000 Subject: [PATCH 12/25] upd --- Makefile | 2 +- src/cli/types/schema.rs | 22 +- src/curr/generated.rs | 606 ++++++++++++++++++++++++++++++++++++++++ src/next/generated.rs | 606 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1218 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 237e3471..16df6c2a 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=87d633c780260e2a30a28d7dc9571a790f5138fa +XDRGEN_VERSION=4ea81a540e25623567badd1f7dd649cc46cf9f21 # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 diff --git a/src/cli/types/schema.rs b/src/cli/types/schema.rs index dc124567..ef5c7bc8 100644 --- a/src/cli/types/schema.rs +++ b/src/cli/types/schema.rs @@ -34,29 +34,17 @@ impl Default for OutputFormat { } } -macro_rules! run_x_case_for_type { - ($type:tt, $m:tt, $type_name:expr, $output:expr) => { - if $type_name == stringify!($type) { - match $output { - OutputFormat::JsonSchemaDraft7 => { - let settings = SchemaSettings::draft07(); - let generator = settings.into_generator(); - let schema = generator.into_root_schema_for::(); - println!("{}", serde_json::to_string_pretty(&schema)?); - } - } - } - }; -} - macro_rules! run_x { ($f:ident, $m:ident) => { fn $f(&self) -> Result<(), Error> { use std::str::FromStr; - let _ = crate::$m::TypeVariant::from_str(&self.r#type).map_err(|_| { + let r#type = crate::$m::TypeVariant::from_str(&self.r#type).map_err(|_| { Error::UnknownType(self.r#type.clone(), &crate::$m::TypeVariant::VARIANTS_STR) })?; - crate::$m::call_macro_with_each_type! { run_x_case_for_type, $m, {&self.r#type}, {self.output} } + let settings = SchemaSettings::draft07(); + let generator = settings.into_generator(); + let schema = r#type.json_schema(generator); + println!("{}", serde_json::to_string_pretty(&schema)?); Ok(()) } }; diff --git a/src/curr/generated.rs b/src/curr/generated.rs index a38445e5..c5cc787b 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -45366,6 +45366,612 @@ impl TypeVariant { pub const fn variants() -> [TypeVariant; 418] { Self::VARIANTS } + + #[cfg(feature = "schemars")] + #[must_use] + #[allow(clippy::too_many_lines)] + pub fn json_schema(&self, gen: schemars::gen::SchemaGenerator) -> schemars::schema::RootSchema { + match self { + Self::Value => gen.into_root_schema_for::(), + Self::ScpBallot => gen.into_root_schema_for::(), + Self::ScpStatementType => gen.into_root_schema_for::(), + Self::ScpNomination => gen.into_root_schema_for::(), + Self::ScpStatement => gen.into_root_schema_for::(), + Self::ScpStatementPledges => gen.into_root_schema_for::(), + Self::ScpStatementPrepare => gen.into_root_schema_for::(), + Self::ScpStatementConfirm => gen.into_root_schema_for::(), + Self::ScpStatementExternalize => gen.into_root_schema_for::(), + Self::ScpEnvelope => gen.into_root_schema_for::(), + Self::ScpQuorumSet => gen.into_root_schema_for::(), + Self::ConfigSettingContractExecutionLanesV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractComputeV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractLedgerCostV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractHistoricalDataV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractEventsV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractBandwidthV0 => { + gen.into_root_schema_for::() + } + Self::ContractCostType => gen.into_root_schema_for::(), + Self::ContractCostParamEntry => gen.into_root_schema_for::(), + Self::StateArchivalSettings => gen.into_root_schema_for::(), + Self::EvictionIterator => gen.into_root_schema_for::(), + Self::ContractCostParams => gen.into_root_schema_for::(), + Self::ConfigSettingId => gen.into_root_schema_for::(), + Self::ConfigSettingEntry => gen.into_root_schema_for::(), + Self::ScEnvMetaKind => gen.into_root_schema_for::(), + Self::ScEnvMetaEntry => gen.into_root_schema_for::(), + Self::ScMetaV0 => gen.into_root_schema_for::(), + Self::ScMetaKind => gen.into_root_schema_for::(), + Self::ScMetaEntry => gen.into_root_schema_for::(), + Self::ScSpecType => gen.into_root_schema_for::(), + Self::ScSpecTypeOption => gen.into_root_schema_for::(), + Self::ScSpecTypeResult => gen.into_root_schema_for::(), + Self::ScSpecTypeVec => gen.into_root_schema_for::(), + Self::ScSpecTypeMap => gen.into_root_schema_for::(), + Self::ScSpecTypeTuple => gen.into_root_schema_for::(), + Self::ScSpecTypeBytesN => gen.into_root_schema_for::(), + Self::ScSpecTypeUdt => gen.into_root_schema_for::(), + Self::ScSpecTypeDef => gen.into_root_schema_for::(), + Self::ScSpecUdtStructFieldV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtStructV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtUnionCaseVoidV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseTupleV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseV0Kind => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtUnionV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtEnumCaseV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtEnumV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtErrorEnumCaseV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtErrorEnumV0 => gen.into_root_schema_for::(), + Self::ScSpecFunctionInputV0 => gen.into_root_schema_for::(), + Self::ScSpecFunctionV0 => gen.into_root_schema_for::(), + Self::ScSpecEntryKind => gen.into_root_schema_for::(), + Self::ScSpecEntry => gen.into_root_schema_for::(), + Self::ScValType => gen.into_root_schema_for::(), + Self::ScErrorType => gen.into_root_schema_for::(), + Self::ScErrorCode => gen.into_root_schema_for::(), + Self::ScError => gen.into_root_schema_for::(), + Self::UInt128Parts => gen.into_root_schema_for::(), + Self::Int128Parts => gen.into_root_schema_for::(), + Self::UInt256Parts => gen.into_root_schema_for::(), + Self::Int256Parts => gen.into_root_schema_for::(), + Self::ContractExecutableType => gen.into_root_schema_for::(), + Self::ContractExecutable => gen.into_root_schema_for::(), + Self::ScAddressType => gen.into_root_schema_for::(), + Self::ScAddress => gen.into_root_schema_for::(), + Self::ScVec => gen.into_root_schema_for::(), + Self::ScMap => gen.into_root_schema_for::(), + Self::ScBytes => gen.into_root_schema_for::(), + Self::ScString => gen.into_root_schema_for::(), + Self::ScSymbol => gen.into_root_schema_for::(), + Self::ScNonceKey => gen.into_root_schema_for::(), + Self::ScContractInstance => gen.into_root_schema_for::(), + Self::ScVal => gen.into_root_schema_for::(), + Self::ScMapEntry => gen.into_root_schema_for::(), + Self::StoredTransactionSet => gen.into_root_schema_for::(), + Self::StoredDebugTransactionSet => { + gen.into_root_schema_for::() + } + Self::PersistedScpStateV0 => gen.into_root_schema_for::(), + Self::PersistedScpStateV1 => gen.into_root_schema_for::(), + Self::PersistedScpState => gen.into_root_schema_for::(), + Self::Thresholds => gen.into_root_schema_for::(), + Self::String32 => gen.into_root_schema_for::(), + Self::String64 => gen.into_root_schema_for::(), + Self::SequenceNumber => gen.into_root_schema_for::(), + Self::DataValue => gen.into_root_schema_for::(), + Self::PoolId => gen.into_root_schema_for::(), + Self::AssetCode4 => gen.into_root_schema_for::(), + Self::AssetCode12 => gen.into_root_schema_for::(), + Self::AssetType => gen.into_root_schema_for::(), + Self::AssetCode => gen.into_root_schema_for::(), + Self::AlphaNum4 => gen.into_root_schema_for::(), + Self::AlphaNum12 => gen.into_root_schema_for::(), + Self::Asset => gen.into_root_schema_for::(), + Self::Price => gen.into_root_schema_for::(), + Self::Liabilities => gen.into_root_schema_for::(), + Self::ThresholdIndexes => gen.into_root_schema_for::(), + Self::LedgerEntryType => gen.into_root_schema_for::(), + Self::Signer => gen.into_root_schema_for::(), + Self::AccountFlags => gen.into_root_schema_for::(), + Self::SponsorshipDescriptor => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV3 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV2 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV2Ext => { + gen.into_root_schema_for::() + } + Self::AccountEntryExtensionV1 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::AccountEntry => gen.into_root_schema_for::(), + Self::AccountEntryExt => gen.into_root_schema_for::(), + Self::TrustLineFlags => gen.into_root_schema_for::(), + Self::LiquidityPoolType => gen.into_root_schema_for::(), + Self::TrustLineAsset => gen.into_root_schema_for::(), + Self::TrustLineEntryExtensionV2 => { + gen.into_root_schema_for::() + } + Self::TrustLineEntryExtensionV2Ext => { + gen.into_root_schema_for::() + } + Self::TrustLineEntry => gen.into_root_schema_for::(), + Self::TrustLineEntryExt => gen.into_root_schema_for::(), + Self::TrustLineEntryV1 => gen.into_root_schema_for::(), + Self::TrustLineEntryV1Ext => gen.into_root_schema_for::(), + Self::OfferEntryFlags => gen.into_root_schema_for::(), + Self::OfferEntry => gen.into_root_schema_for::(), + Self::OfferEntryExt => gen.into_root_schema_for::(), + Self::DataEntry => gen.into_root_schema_for::(), + Self::DataEntryExt => gen.into_root_schema_for::(), + Self::ClaimPredicateType => gen.into_root_schema_for::(), + Self::ClaimPredicate => gen.into_root_schema_for::(), + Self::ClaimantType => gen.into_root_schema_for::(), + Self::Claimant => gen.into_root_schema_for::(), + Self::ClaimantV0 => gen.into_root_schema_for::(), + Self::ClaimableBalanceIdType => gen.into_root_schema_for::(), + Self::ClaimableBalanceId => gen.into_root_schema_for::(), + Self::ClaimableBalanceFlags => gen.into_root_schema_for::(), + Self::ClaimableBalanceEntryExtensionV1 => { + gen.into_root_schema_for::() + } + Self::ClaimableBalanceEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::ClaimableBalanceEntry => gen.into_root_schema_for::(), + Self::ClaimableBalanceEntryExt => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolConstantProductParameters => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolEntry => gen.into_root_schema_for::(), + Self::LiquidityPoolEntryBody => gen.into_root_schema_for::(), + Self::LiquidityPoolEntryConstantProduct => { + gen.into_root_schema_for::() + } + Self::ContractDataDurability => gen.into_root_schema_for::(), + Self::ContractDataEntry => gen.into_root_schema_for::(), + Self::ContractCodeEntry => gen.into_root_schema_for::(), + Self::TtlEntry => gen.into_root_schema_for::(), + Self::LedgerEntryExtensionV1 => gen.into_root_schema_for::(), + Self::LedgerEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::LedgerEntry => gen.into_root_schema_for::(), + Self::LedgerEntryData => gen.into_root_schema_for::(), + Self::LedgerEntryExt => gen.into_root_schema_for::(), + Self::LedgerKey => gen.into_root_schema_for::(), + Self::LedgerKeyAccount => gen.into_root_schema_for::(), + Self::LedgerKeyTrustLine => gen.into_root_schema_for::(), + Self::LedgerKeyOffer => gen.into_root_schema_for::(), + Self::LedgerKeyData => gen.into_root_schema_for::(), + Self::LedgerKeyClaimableBalance => { + gen.into_root_schema_for::() + } + Self::LedgerKeyLiquidityPool => gen.into_root_schema_for::(), + Self::LedgerKeyContractData => gen.into_root_schema_for::(), + Self::LedgerKeyContractCode => gen.into_root_schema_for::(), + Self::LedgerKeyConfigSetting => gen.into_root_schema_for::(), + Self::LedgerKeyTtl => gen.into_root_schema_for::(), + Self::EnvelopeType => gen.into_root_schema_for::(), + Self::UpgradeType => gen.into_root_schema_for::(), + Self::StellarValueType => gen.into_root_schema_for::(), + Self::LedgerCloseValueSignature => { + gen.into_root_schema_for::() + } + Self::StellarValue => gen.into_root_schema_for::(), + Self::StellarValueExt => gen.into_root_schema_for::(), + Self::LedgerHeaderFlags => gen.into_root_schema_for::(), + Self::LedgerHeaderExtensionV1 => gen.into_root_schema_for::(), + Self::LedgerHeaderExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::LedgerHeader => gen.into_root_schema_for::(), + Self::LedgerHeaderExt => gen.into_root_schema_for::(), + Self::LedgerUpgradeType => gen.into_root_schema_for::(), + Self::ConfigUpgradeSetKey => gen.into_root_schema_for::(), + Self::LedgerUpgrade => gen.into_root_schema_for::(), + Self::ConfigUpgradeSet => gen.into_root_schema_for::(), + Self::BucketEntryType => gen.into_root_schema_for::(), + Self::BucketMetadata => gen.into_root_schema_for::(), + Self::BucketMetadataExt => gen.into_root_schema_for::(), + Self::BucketEntry => gen.into_root_schema_for::(), + Self::TxSetComponentType => gen.into_root_schema_for::(), + Self::TxSetComponent => gen.into_root_schema_for::(), + Self::TxSetComponentTxsMaybeDiscountedFee => { + gen.into_root_schema_for::() + } + Self::TransactionPhase => gen.into_root_schema_for::(), + Self::TransactionSet => gen.into_root_schema_for::(), + Self::TransactionSetV1 => gen.into_root_schema_for::(), + Self::GeneralizedTransactionSet => { + gen.into_root_schema_for::() + } + Self::TransactionResultPair => gen.into_root_schema_for::(), + Self::TransactionResultSet => gen.into_root_schema_for::(), + Self::TransactionHistoryEntry => gen.into_root_schema_for::(), + Self::TransactionHistoryEntryExt => { + gen.into_root_schema_for::() + } + Self::TransactionHistoryResultEntry => { + gen.into_root_schema_for::() + } + Self::TransactionHistoryResultEntryExt => { + gen.into_root_schema_for::() + } + Self::LedgerHeaderHistoryEntry => { + gen.into_root_schema_for::() + } + Self::LedgerHeaderHistoryEntryExt => { + gen.into_root_schema_for::() + } + Self::LedgerScpMessages => gen.into_root_schema_for::(), + Self::ScpHistoryEntryV0 => gen.into_root_schema_for::(), + Self::ScpHistoryEntry => gen.into_root_schema_for::(), + Self::LedgerEntryChangeType => gen.into_root_schema_for::(), + Self::LedgerEntryChange => gen.into_root_schema_for::(), + Self::LedgerEntryChanges => gen.into_root_schema_for::(), + Self::OperationMeta => gen.into_root_schema_for::(), + Self::TransactionMetaV1 => gen.into_root_schema_for::(), + Self::TransactionMetaV2 => gen.into_root_schema_for::(), + Self::ContractEventType => gen.into_root_schema_for::(), + Self::ContractEvent => gen.into_root_schema_for::(), + Self::ContractEventBody => gen.into_root_schema_for::(), + Self::ContractEventV0 => gen.into_root_schema_for::(), + Self::DiagnosticEvent => gen.into_root_schema_for::(), + Self::SorobanTransactionMeta => gen.into_root_schema_for::(), + Self::TransactionMetaV3 => gen.into_root_schema_for::(), + Self::InvokeHostFunctionSuccessPreImage => { + gen.into_root_schema_for::() + } + Self::TransactionMeta => gen.into_root_schema_for::(), + Self::TransactionResultMeta => gen.into_root_schema_for::(), + Self::UpgradeEntryMeta => gen.into_root_schema_for::(), + Self::LedgerCloseMetaV0 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaV1 => gen.into_root_schema_for::(), + Self::LedgerCloseMeta => gen.into_root_schema_for::(), + Self::ErrorCode => gen.into_root_schema_for::(), + Self::SError => gen.into_root_schema_for::(), + Self::SendMore => gen.into_root_schema_for::(), + Self::SendMoreExtended => gen.into_root_schema_for::(), + Self::AuthCert => gen.into_root_schema_for::(), + Self::Hello => gen.into_root_schema_for::(), + Self::Auth => gen.into_root_schema_for::(), + Self::IpAddrType => gen.into_root_schema_for::(), + Self::PeerAddress => gen.into_root_schema_for::(), + Self::PeerAddressIp => gen.into_root_schema_for::(), + Self::MessageType => gen.into_root_schema_for::(), + Self::DontHave => gen.into_root_schema_for::(), + Self::SurveyMessageCommandType => { + gen.into_root_schema_for::() + } + Self::SurveyMessageResponseType => { + gen.into_root_schema_for::() + } + Self::SurveyRequestMessage => gen.into_root_schema_for::(), + Self::SignedSurveyRequestMessage => { + gen.into_root_schema_for::() + } + Self::EncryptedBody => gen.into_root_schema_for::(), + Self::SurveyResponseMessage => gen.into_root_schema_for::(), + Self::SignedSurveyResponseMessage => { + gen.into_root_schema_for::() + } + Self::PeerStats => gen.into_root_schema_for::(), + Self::PeerStatList => gen.into_root_schema_for::(), + Self::TopologyResponseBodyV0 => gen.into_root_schema_for::(), + Self::TopologyResponseBodyV1 => gen.into_root_schema_for::(), + Self::SurveyResponseBody => gen.into_root_schema_for::(), + Self::TxAdvertVector => gen.into_root_schema_for::(), + Self::FloodAdvert => gen.into_root_schema_for::(), + Self::TxDemandVector => gen.into_root_schema_for::(), + Self::FloodDemand => gen.into_root_schema_for::(), + Self::StellarMessage => gen.into_root_schema_for::(), + Self::AuthenticatedMessage => gen.into_root_schema_for::(), + Self::AuthenticatedMessageV0 => gen.into_root_schema_for::(), + Self::LiquidityPoolParameters => gen.into_root_schema_for::(), + Self::MuxedAccount => gen.into_root_schema_for::(), + Self::MuxedAccountMed25519 => gen.into_root_schema_for::(), + Self::DecoratedSignature => gen.into_root_schema_for::(), + Self::OperationType => gen.into_root_schema_for::(), + Self::CreateAccountOp => gen.into_root_schema_for::(), + Self::PaymentOp => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveOp => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendOp => gen.into_root_schema_for::(), + Self::ManageSellOfferOp => gen.into_root_schema_for::(), + Self::ManageBuyOfferOp => gen.into_root_schema_for::(), + Self::CreatePassiveSellOfferOp => { + gen.into_root_schema_for::() + } + Self::SetOptionsOp => gen.into_root_schema_for::(), + Self::ChangeTrustAsset => gen.into_root_schema_for::(), + Self::ChangeTrustOp => gen.into_root_schema_for::(), + Self::AllowTrustOp => gen.into_root_schema_for::(), + Self::ManageDataOp => gen.into_root_schema_for::(), + Self::BumpSequenceOp => gen.into_root_schema_for::(), + Self::CreateClaimableBalanceOp => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceOp => gen.into_root_schema_for::(), + Self::BeginSponsoringFutureReservesOp => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipType => gen.into_root_schema_for::(), + Self::RevokeSponsorshipOp => gen.into_root_schema_for::(), + Self::RevokeSponsorshipOpSigner => { + gen.into_root_schema_for::() + } + Self::ClawbackOp => gen.into_root_schema_for::(), + Self::ClawbackClaimableBalanceOp => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsOp => gen.into_root_schema_for::(), + Self::LiquidityPoolDepositOp => gen.into_root_schema_for::(), + Self::LiquidityPoolWithdrawOp => gen.into_root_schema_for::(), + Self::HostFunctionType => gen.into_root_schema_for::(), + Self::ContractIdPreimageType => gen.into_root_schema_for::(), + Self::ContractIdPreimage => gen.into_root_schema_for::(), + Self::ContractIdPreimageFromAddress => { + gen.into_root_schema_for::() + } + Self::CreateContractArgs => gen.into_root_schema_for::(), + Self::InvokeContractArgs => gen.into_root_schema_for::(), + Self::HostFunction => gen.into_root_schema_for::(), + Self::SorobanAuthorizedFunctionType => { + gen.into_root_schema_for::() + } + Self::SorobanAuthorizedFunction => { + gen.into_root_schema_for::() + } + Self::SorobanAuthorizedInvocation => { + gen.into_root_schema_for::() + } + Self::SorobanAddressCredentials => { + gen.into_root_schema_for::() + } + Self::SorobanCredentialsType => gen.into_root_schema_for::(), + Self::SorobanCredentials => gen.into_root_schema_for::(), + Self::SorobanAuthorizationEntry => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionOp => gen.into_root_schema_for::(), + Self::ExtendFootprintTtlOp => gen.into_root_schema_for::(), + Self::RestoreFootprintOp => gen.into_root_schema_for::(), + Self::Operation => gen.into_root_schema_for::(), + Self::OperationBody => gen.into_root_schema_for::(), + Self::HashIdPreimage => gen.into_root_schema_for::(), + Self::HashIdPreimageOperationId => { + gen.into_root_schema_for::() + } + Self::HashIdPreimageRevokeId => gen.into_root_schema_for::(), + Self::HashIdPreimageContractId => { + gen.into_root_schema_for::() + } + Self::HashIdPreimageSorobanAuthorization => { + gen.into_root_schema_for::() + } + Self::MemoType => gen.into_root_schema_for::(), + Self::Memo => gen.into_root_schema_for::(), + Self::TimeBounds => gen.into_root_schema_for::(), + Self::LedgerBounds => gen.into_root_schema_for::(), + Self::PreconditionsV2 => gen.into_root_schema_for::(), + Self::PreconditionType => gen.into_root_schema_for::(), + Self::Preconditions => gen.into_root_schema_for::(), + Self::LedgerFootprint => gen.into_root_schema_for::(), + Self::SorobanResources => gen.into_root_schema_for::(), + Self::SorobanTransactionData => gen.into_root_schema_for::(), + Self::TransactionV0 => gen.into_root_schema_for::(), + Self::TransactionV0Ext => gen.into_root_schema_for::(), + Self::TransactionV0Envelope => gen.into_root_schema_for::(), + Self::Transaction => gen.into_root_schema_for::(), + Self::TransactionExt => gen.into_root_schema_for::(), + Self::TransactionV1Envelope => gen.into_root_schema_for::(), + Self::FeeBumpTransaction => gen.into_root_schema_for::(), + Self::FeeBumpTransactionInnerTx => { + gen.into_root_schema_for::() + } + Self::FeeBumpTransactionExt => gen.into_root_schema_for::(), + Self::FeeBumpTransactionEnvelope => { + gen.into_root_schema_for::() + } + Self::TransactionEnvelope => gen.into_root_schema_for::(), + Self::TransactionSignaturePayload => { + gen.into_root_schema_for::() + } + Self::TransactionSignaturePayloadTaggedTransaction => { + gen.into_root_schema_for::() + } + Self::ClaimAtomType => gen.into_root_schema_for::(), + Self::ClaimOfferAtomV0 => gen.into_root_schema_for::(), + Self::ClaimOfferAtom => gen.into_root_schema_for::(), + Self::ClaimLiquidityAtom => gen.into_root_schema_for::(), + Self::ClaimAtom => gen.into_root_schema_for::(), + Self::CreateAccountResultCode => gen.into_root_schema_for::(), + Self::CreateAccountResult => gen.into_root_schema_for::(), + Self::PaymentResultCode => gen.into_root_schema_for::(), + Self::PaymentResult => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveResultCode => { + gen.into_root_schema_for::() + } + Self::SimplePaymentResult => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveResult => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictReceiveResultSuccess => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResultCode => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResult => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResultSuccess => { + gen.into_root_schema_for::() + } + Self::ManageSellOfferResultCode => { + gen.into_root_schema_for::() + } + Self::ManageOfferEffect => gen.into_root_schema_for::(), + Self::ManageOfferSuccessResult => { + gen.into_root_schema_for::() + } + Self::ManageOfferSuccessResultOffer => { + gen.into_root_schema_for::() + } + Self::ManageSellOfferResult => gen.into_root_schema_for::(), + Self::ManageBuyOfferResultCode => { + gen.into_root_schema_for::() + } + Self::ManageBuyOfferResult => gen.into_root_schema_for::(), + Self::SetOptionsResultCode => gen.into_root_schema_for::(), + Self::SetOptionsResult => gen.into_root_schema_for::(), + Self::ChangeTrustResultCode => gen.into_root_schema_for::(), + Self::ChangeTrustResult => gen.into_root_schema_for::(), + Self::AllowTrustResultCode => gen.into_root_schema_for::(), + Self::AllowTrustResult => gen.into_root_schema_for::(), + Self::AccountMergeResultCode => gen.into_root_schema_for::(), + Self::AccountMergeResult => gen.into_root_schema_for::(), + Self::InflationResultCode => gen.into_root_schema_for::(), + Self::InflationPayout => gen.into_root_schema_for::(), + Self::InflationResult => gen.into_root_schema_for::(), + Self::ManageDataResultCode => gen.into_root_schema_for::(), + Self::ManageDataResult => gen.into_root_schema_for::(), + Self::BumpSequenceResultCode => gen.into_root_schema_for::(), + Self::BumpSequenceResult => gen.into_root_schema_for::(), + Self::CreateClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::CreateClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::BeginSponsoringFutureReservesResultCode => { + gen.into_root_schema_for::() + } + Self::BeginSponsoringFutureReservesResult => { + gen.into_root_schema_for::() + } + Self::EndSponsoringFutureReservesResultCode => { + gen.into_root_schema_for::() + } + Self::EndSponsoringFutureReservesResult => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipResultCode => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipResult => gen.into_root_schema_for::(), + Self::ClawbackResultCode => gen.into_root_schema_for::(), + Self::ClawbackResult => gen.into_root_schema_for::(), + Self::ClawbackClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::ClawbackClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsResultCode => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsResult => gen.into_root_schema_for::(), + Self::LiquidityPoolDepositResultCode => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolDepositResult => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolWithdrawResultCode => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolWithdrawResult => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionResultCode => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionResult => { + gen.into_root_schema_for::() + } + Self::ExtendFootprintTtlResultCode => { + gen.into_root_schema_for::() + } + Self::ExtendFootprintTtlResult => { + gen.into_root_schema_for::() + } + Self::RestoreFootprintResultCode => { + gen.into_root_schema_for::() + } + Self::RestoreFootprintResult => gen.into_root_schema_for::(), + Self::OperationResultCode => gen.into_root_schema_for::(), + Self::OperationResult => gen.into_root_schema_for::(), + Self::OperationResultTr => gen.into_root_schema_for::(), + Self::TransactionResultCode => gen.into_root_schema_for::(), + Self::InnerTransactionResult => gen.into_root_schema_for::(), + Self::InnerTransactionResultResult => { + gen.into_root_schema_for::() + } + Self::InnerTransactionResultExt => { + gen.into_root_schema_for::() + } + Self::InnerTransactionResultPair => { + gen.into_root_schema_for::() + } + Self::TransactionResult => gen.into_root_schema_for::(), + Self::TransactionResultResult => gen.into_root_schema_for::(), + Self::TransactionResultExt => gen.into_root_schema_for::(), + Self::Hash => gen.into_root_schema_for::(), + Self::Uint256 => gen.into_root_schema_for::(), + Self::Uint32 => gen.into_root_schema_for::(), + Self::Int32 => gen.into_root_schema_for::(), + Self::Uint64 => gen.into_root_schema_for::(), + Self::Int64 => gen.into_root_schema_for::(), + Self::TimePoint => gen.into_root_schema_for::(), + Self::Duration => gen.into_root_schema_for::(), + Self::ExtensionPoint => gen.into_root_schema_for::(), + Self::CryptoKeyType => gen.into_root_schema_for::(), + Self::PublicKeyType => gen.into_root_schema_for::(), + Self::SignerKeyType => gen.into_root_schema_for::(), + Self::PublicKey => gen.into_root_schema_for::(), + Self::SignerKey => gen.into_root_schema_for::(), + Self::SignerKeyEd25519SignedPayload => { + gen.into_root_schema_for::() + } + Self::Signature => gen.into_root_schema_for::(), + Self::SignatureHint => gen.into_root_schema_for::(), + Self::NodeId => gen.into_root_schema_for::(), + Self::AccountId => gen.into_root_schema_for::(), + Self::Curve25519Secret => gen.into_root_schema_for::(), + Self::Curve25519Public => gen.into_root_schema_for::(), + Self::HmacSha256Key => gen.into_root_schema_for::(), + Self::HmacSha256Mac => gen.into_root_schema_for::(), + } + } } impl Name for TypeVariant { diff --git a/src/next/generated.rs b/src/next/generated.rs index e8547b1d..3c7a959a 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -45366,6 +45366,612 @@ impl TypeVariant { pub const fn variants() -> [TypeVariant; 418] { Self::VARIANTS } + + #[cfg(feature = "schemars")] + #[must_use] + #[allow(clippy::too_many_lines)] + pub fn json_schema(&self, gen: schemars::gen::SchemaGenerator) -> schemars::schema::RootSchema { + match self { + Self::Value => gen.into_root_schema_for::(), + Self::ScpBallot => gen.into_root_schema_for::(), + Self::ScpStatementType => gen.into_root_schema_for::(), + Self::ScpNomination => gen.into_root_schema_for::(), + Self::ScpStatement => gen.into_root_schema_for::(), + Self::ScpStatementPledges => gen.into_root_schema_for::(), + Self::ScpStatementPrepare => gen.into_root_schema_for::(), + Self::ScpStatementConfirm => gen.into_root_schema_for::(), + Self::ScpStatementExternalize => gen.into_root_schema_for::(), + Self::ScpEnvelope => gen.into_root_schema_for::(), + Self::ScpQuorumSet => gen.into_root_schema_for::(), + Self::ConfigSettingContractExecutionLanesV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractComputeV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractLedgerCostV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractHistoricalDataV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractEventsV0 => { + gen.into_root_schema_for::() + } + Self::ConfigSettingContractBandwidthV0 => { + gen.into_root_schema_for::() + } + Self::ContractCostType => gen.into_root_schema_for::(), + Self::ContractCostParamEntry => gen.into_root_schema_for::(), + Self::StateArchivalSettings => gen.into_root_schema_for::(), + Self::EvictionIterator => gen.into_root_schema_for::(), + Self::ContractCostParams => gen.into_root_schema_for::(), + Self::ConfigSettingId => gen.into_root_schema_for::(), + Self::ConfigSettingEntry => gen.into_root_schema_for::(), + Self::ScEnvMetaKind => gen.into_root_schema_for::(), + Self::ScEnvMetaEntry => gen.into_root_schema_for::(), + Self::ScMetaV0 => gen.into_root_schema_for::(), + Self::ScMetaKind => gen.into_root_schema_for::(), + Self::ScMetaEntry => gen.into_root_schema_for::(), + Self::ScSpecType => gen.into_root_schema_for::(), + Self::ScSpecTypeOption => gen.into_root_schema_for::(), + Self::ScSpecTypeResult => gen.into_root_schema_for::(), + Self::ScSpecTypeVec => gen.into_root_schema_for::(), + Self::ScSpecTypeMap => gen.into_root_schema_for::(), + Self::ScSpecTypeTuple => gen.into_root_schema_for::(), + Self::ScSpecTypeBytesN => gen.into_root_schema_for::(), + Self::ScSpecTypeUdt => gen.into_root_schema_for::(), + Self::ScSpecTypeDef => gen.into_root_schema_for::(), + Self::ScSpecUdtStructFieldV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtStructV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtUnionCaseVoidV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseTupleV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseV0Kind => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtUnionCaseV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtUnionV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtEnumCaseV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtEnumV0 => gen.into_root_schema_for::(), + Self::ScSpecUdtErrorEnumCaseV0 => { + gen.into_root_schema_for::() + } + Self::ScSpecUdtErrorEnumV0 => gen.into_root_schema_for::(), + Self::ScSpecFunctionInputV0 => gen.into_root_schema_for::(), + Self::ScSpecFunctionV0 => gen.into_root_schema_for::(), + Self::ScSpecEntryKind => gen.into_root_schema_for::(), + Self::ScSpecEntry => gen.into_root_schema_for::(), + Self::ScValType => gen.into_root_schema_for::(), + Self::ScErrorType => gen.into_root_schema_for::(), + Self::ScErrorCode => gen.into_root_schema_for::(), + Self::ScError => gen.into_root_schema_for::(), + Self::UInt128Parts => gen.into_root_schema_for::(), + Self::Int128Parts => gen.into_root_schema_for::(), + Self::UInt256Parts => gen.into_root_schema_for::(), + Self::Int256Parts => gen.into_root_schema_for::(), + Self::ContractExecutableType => gen.into_root_schema_for::(), + Self::ContractExecutable => gen.into_root_schema_for::(), + Self::ScAddressType => gen.into_root_schema_for::(), + Self::ScAddress => gen.into_root_schema_for::(), + Self::ScVec => gen.into_root_schema_for::(), + Self::ScMap => gen.into_root_schema_for::(), + Self::ScBytes => gen.into_root_schema_for::(), + Self::ScString => gen.into_root_schema_for::(), + Self::ScSymbol => gen.into_root_schema_for::(), + Self::ScNonceKey => gen.into_root_schema_for::(), + Self::ScContractInstance => gen.into_root_schema_for::(), + Self::ScVal => gen.into_root_schema_for::(), + Self::ScMapEntry => gen.into_root_schema_for::(), + Self::StoredTransactionSet => gen.into_root_schema_for::(), + Self::StoredDebugTransactionSet => { + gen.into_root_schema_for::() + } + Self::PersistedScpStateV0 => gen.into_root_schema_for::(), + Self::PersistedScpStateV1 => gen.into_root_schema_for::(), + Self::PersistedScpState => gen.into_root_schema_for::(), + Self::Thresholds => gen.into_root_schema_for::(), + Self::String32 => gen.into_root_schema_for::(), + Self::String64 => gen.into_root_schema_for::(), + Self::SequenceNumber => gen.into_root_schema_for::(), + Self::DataValue => gen.into_root_schema_for::(), + Self::PoolId => gen.into_root_schema_for::(), + Self::AssetCode4 => gen.into_root_schema_for::(), + Self::AssetCode12 => gen.into_root_schema_for::(), + Self::AssetType => gen.into_root_schema_for::(), + Self::AssetCode => gen.into_root_schema_for::(), + Self::AlphaNum4 => gen.into_root_schema_for::(), + Self::AlphaNum12 => gen.into_root_schema_for::(), + Self::Asset => gen.into_root_schema_for::(), + Self::Price => gen.into_root_schema_for::(), + Self::Liabilities => gen.into_root_schema_for::(), + Self::ThresholdIndexes => gen.into_root_schema_for::(), + Self::LedgerEntryType => gen.into_root_schema_for::(), + Self::Signer => gen.into_root_schema_for::(), + Self::AccountFlags => gen.into_root_schema_for::(), + Self::SponsorshipDescriptor => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV3 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV2 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV2Ext => { + gen.into_root_schema_for::() + } + Self::AccountEntryExtensionV1 => gen.into_root_schema_for::(), + Self::AccountEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::AccountEntry => gen.into_root_schema_for::(), + Self::AccountEntryExt => gen.into_root_schema_for::(), + Self::TrustLineFlags => gen.into_root_schema_for::(), + Self::LiquidityPoolType => gen.into_root_schema_for::(), + Self::TrustLineAsset => gen.into_root_schema_for::(), + Self::TrustLineEntryExtensionV2 => { + gen.into_root_schema_for::() + } + Self::TrustLineEntryExtensionV2Ext => { + gen.into_root_schema_for::() + } + Self::TrustLineEntry => gen.into_root_schema_for::(), + Self::TrustLineEntryExt => gen.into_root_schema_for::(), + Self::TrustLineEntryV1 => gen.into_root_schema_for::(), + Self::TrustLineEntryV1Ext => gen.into_root_schema_for::(), + Self::OfferEntryFlags => gen.into_root_schema_for::(), + Self::OfferEntry => gen.into_root_schema_for::(), + Self::OfferEntryExt => gen.into_root_schema_for::(), + Self::DataEntry => gen.into_root_schema_for::(), + Self::DataEntryExt => gen.into_root_schema_for::(), + Self::ClaimPredicateType => gen.into_root_schema_for::(), + Self::ClaimPredicate => gen.into_root_schema_for::(), + Self::ClaimantType => gen.into_root_schema_for::(), + Self::Claimant => gen.into_root_schema_for::(), + Self::ClaimantV0 => gen.into_root_schema_for::(), + Self::ClaimableBalanceIdType => gen.into_root_schema_for::(), + Self::ClaimableBalanceId => gen.into_root_schema_for::(), + Self::ClaimableBalanceFlags => gen.into_root_schema_for::(), + Self::ClaimableBalanceEntryExtensionV1 => { + gen.into_root_schema_for::() + } + Self::ClaimableBalanceEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::ClaimableBalanceEntry => gen.into_root_schema_for::(), + Self::ClaimableBalanceEntryExt => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolConstantProductParameters => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolEntry => gen.into_root_schema_for::(), + Self::LiquidityPoolEntryBody => gen.into_root_schema_for::(), + Self::LiquidityPoolEntryConstantProduct => { + gen.into_root_schema_for::() + } + Self::ContractDataDurability => gen.into_root_schema_for::(), + Self::ContractDataEntry => gen.into_root_schema_for::(), + Self::ContractCodeEntry => gen.into_root_schema_for::(), + Self::TtlEntry => gen.into_root_schema_for::(), + Self::LedgerEntryExtensionV1 => gen.into_root_schema_for::(), + Self::LedgerEntryExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::LedgerEntry => gen.into_root_schema_for::(), + Self::LedgerEntryData => gen.into_root_schema_for::(), + Self::LedgerEntryExt => gen.into_root_schema_for::(), + Self::LedgerKey => gen.into_root_schema_for::(), + Self::LedgerKeyAccount => gen.into_root_schema_for::(), + Self::LedgerKeyTrustLine => gen.into_root_schema_for::(), + Self::LedgerKeyOffer => gen.into_root_schema_for::(), + Self::LedgerKeyData => gen.into_root_schema_for::(), + Self::LedgerKeyClaimableBalance => { + gen.into_root_schema_for::() + } + Self::LedgerKeyLiquidityPool => gen.into_root_schema_for::(), + Self::LedgerKeyContractData => gen.into_root_schema_for::(), + Self::LedgerKeyContractCode => gen.into_root_schema_for::(), + Self::LedgerKeyConfigSetting => gen.into_root_schema_for::(), + Self::LedgerKeyTtl => gen.into_root_schema_for::(), + Self::EnvelopeType => gen.into_root_schema_for::(), + Self::UpgradeType => gen.into_root_schema_for::(), + Self::StellarValueType => gen.into_root_schema_for::(), + Self::LedgerCloseValueSignature => { + gen.into_root_schema_for::() + } + Self::StellarValue => gen.into_root_schema_for::(), + Self::StellarValueExt => gen.into_root_schema_for::(), + Self::LedgerHeaderFlags => gen.into_root_schema_for::(), + Self::LedgerHeaderExtensionV1 => gen.into_root_schema_for::(), + Self::LedgerHeaderExtensionV1Ext => { + gen.into_root_schema_for::() + } + Self::LedgerHeader => gen.into_root_schema_for::(), + Self::LedgerHeaderExt => gen.into_root_schema_for::(), + Self::LedgerUpgradeType => gen.into_root_schema_for::(), + Self::ConfigUpgradeSetKey => gen.into_root_schema_for::(), + Self::LedgerUpgrade => gen.into_root_schema_for::(), + Self::ConfigUpgradeSet => gen.into_root_schema_for::(), + Self::BucketEntryType => gen.into_root_schema_for::(), + Self::BucketMetadata => gen.into_root_schema_for::(), + Self::BucketMetadataExt => gen.into_root_schema_for::(), + Self::BucketEntry => gen.into_root_schema_for::(), + Self::TxSetComponentType => gen.into_root_schema_for::(), + Self::TxSetComponent => gen.into_root_schema_for::(), + Self::TxSetComponentTxsMaybeDiscountedFee => { + gen.into_root_schema_for::() + } + Self::TransactionPhase => gen.into_root_schema_for::(), + Self::TransactionSet => gen.into_root_schema_for::(), + Self::TransactionSetV1 => gen.into_root_schema_for::(), + Self::GeneralizedTransactionSet => { + gen.into_root_schema_for::() + } + Self::TransactionResultPair => gen.into_root_schema_for::(), + Self::TransactionResultSet => gen.into_root_schema_for::(), + Self::TransactionHistoryEntry => gen.into_root_schema_for::(), + Self::TransactionHistoryEntryExt => { + gen.into_root_schema_for::() + } + Self::TransactionHistoryResultEntry => { + gen.into_root_schema_for::() + } + Self::TransactionHistoryResultEntryExt => { + gen.into_root_schema_for::() + } + Self::LedgerHeaderHistoryEntry => { + gen.into_root_schema_for::() + } + Self::LedgerHeaderHistoryEntryExt => { + gen.into_root_schema_for::() + } + Self::LedgerScpMessages => gen.into_root_schema_for::(), + Self::ScpHistoryEntryV0 => gen.into_root_schema_for::(), + Self::ScpHistoryEntry => gen.into_root_schema_for::(), + Self::LedgerEntryChangeType => gen.into_root_schema_for::(), + Self::LedgerEntryChange => gen.into_root_schema_for::(), + Self::LedgerEntryChanges => gen.into_root_schema_for::(), + Self::OperationMeta => gen.into_root_schema_for::(), + Self::TransactionMetaV1 => gen.into_root_schema_for::(), + Self::TransactionMetaV2 => gen.into_root_schema_for::(), + Self::ContractEventType => gen.into_root_schema_for::(), + Self::ContractEvent => gen.into_root_schema_for::(), + Self::ContractEventBody => gen.into_root_schema_for::(), + Self::ContractEventV0 => gen.into_root_schema_for::(), + Self::DiagnosticEvent => gen.into_root_schema_for::(), + Self::SorobanTransactionMeta => gen.into_root_schema_for::(), + Self::TransactionMetaV3 => gen.into_root_schema_for::(), + Self::InvokeHostFunctionSuccessPreImage => { + gen.into_root_schema_for::() + } + Self::TransactionMeta => gen.into_root_schema_for::(), + Self::TransactionResultMeta => gen.into_root_schema_for::(), + Self::UpgradeEntryMeta => gen.into_root_schema_for::(), + Self::LedgerCloseMetaV0 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaV1 => gen.into_root_schema_for::(), + Self::LedgerCloseMeta => gen.into_root_schema_for::(), + Self::ErrorCode => gen.into_root_schema_for::(), + Self::SError => gen.into_root_schema_for::(), + Self::SendMore => gen.into_root_schema_for::(), + Self::SendMoreExtended => gen.into_root_schema_for::(), + Self::AuthCert => gen.into_root_schema_for::(), + Self::Hello => gen.into_root_schema_for::(), + Self::Auth => gen.into_root_schema_for::(), + Self::IpAddrType => gen.into_root_schema_for::(), + Self::PeerAddress => gen.into_root_schema_for::(), + Self::PeerAddressIp => gen.into_root_schema_for::(), + Self::MessageType => gen.into_root_schema_for::(), + Self::DontHave => gen.into_root_schema_for::(), + Self::SurveyMessageCommandType => { + gen.into_root_schema_for::() + } + Self::SurveyMessageResponseType => { + gen.into_root_schema_for::() + } + Self::SurveyRequestMessage => gen.into_root_schema_for::(), + Self::SignedSurveyRequestMessage => { + gen.into_root_schema_for::() + } + Self::EncryptedBody => gen.into_root_schema_for::(), + Self::SurveyResponseMessage => gen.into_root_schema_for::(), + Self::SignedSurveyResponseMessage => { + gen.into_root_schema_for::() + } + Self::PeerStats => gen.into_root_schema_for::(), + Self::PeerStatList => gen.into_root_schema_for::(), + Self::TopologyResponseBodyV0 => gen.into_root_schema_for::(), + Self::TopologyResponseBodyV1 => gen.into_root_schema_for::(), + Self::SurveyResponseBody => gen.into_root_schema_for::(), + Self::TxAdvertVector => gen.into_root_schema_for::(), + Self::FloodAdvert => gen.into_root_schema_for::(), + Self::TxDemandVector => gen.into_root_schema_for::(), + Self::FloodDemand => gen.into_root_schema_for::(), + Self::StellarMessage => gen.into_root_schema_for::(), + Self::AuthenticatedMessage => gen.into_root_schema_for::(), + Self::AuthenticatedMessageV0 => gen.into_root_schema_for::(), + Self::LiquidityPoolParameters => gen.into_root_schema_for::(), + Self::MuxedAccount => gen.into_root_schema_for::(), + Self::MuxedAccountMed25519 => gen.into_root_schema_for::(), + Self::DecoratedSignature => gen.into_root_schema_for::(), + Self::OperationType => gen.into_root_schema_for::(), + Self::CreateAccountOp => gen.into_root_schema_for::(), + Self::PaymentOp => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveOp => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendOp => gen.into_root_schema_for::(), + Self::ManageSellOfferOp => gen.into_root_schema_for::(), + Self::ManageBuyOfferOp => gen.into_root_schema_for::(), + Self::CreatePassiveSellOfferOp => { + gen.into_root_schema_for::() + } + Self::SetOptionsOp => gen.into_root_schema_for::(), + Self::ChangeTrustAsset => gen.into_root_schema_for::(), + Self::ChangeTrustOp => gen.into_root_schema_for::(), + Self::AllowTrustOp => gen.into_root_schema_for::(), + Self::ManageDataOp => gen.into_root_schema_for::(), + Self::BumpSequenceOp => gen.into_root_schema_for::(), + Self::CreateClaimableBalanceOp => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceOp => gen.into_root_schema_for::(), + Self::BeginSponsoringFutureReservesOp => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipType => gen.into_root_schema_for::(), + Self::RevokeSponsorshipOp => gen.into_root_schema_for::(), + Self::RevokeSponsorshipOpSigner => { + gen.into_root_schema_for::() + } + Self::ClawbackOp => gen.into_root_schema_for::(), + Self::ClawbackClaimableBalanceOp => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsOp => gen.into_root_schema_for::(), + Self::LiquidityPoolDepositOp => gen.into_root_schema_for::(), + Self::LiquidityPoolWithdrawOp => gen.into_root_schema_for::(), + Self::HostFunctionType => gen.into_root_schema_for::(), + Self::ContractIdPreimageType => gen.into_root_schema_for::(), + Self::ContractIdPreimage => gen.into_root_schema_for::(), + Self::ContractIdPreimageFromAddress => { + gen.into_root_schema_for::() + } + Self::CreateContractArgs => gen.into_root_schema_for::(), + Self::InvokeContractArgs => gen.into_root_schema_for::(), + Self::HostFunction => gen.into_root_schema_for::(), + Self::SorobanAuthorizedFunctionType => { + gen.into_root_schema_for::() + } + Self::SorobanAuthorizedFunction => { + gen.into_root_schema_for::() + } + Self::SorobanAuthorizedInvocation => { + gen.into_root_schema_for::() + } + Self::SorobanAddressCredentials => { + gen.into_root_schema_for::() + } + Self::SorobanCredentialsType => gen.into_root_schema_for::(), + Self::SorobanCredentials => gen.into_root_schema_for::(), + Self::SorobanAuthorizationEntry => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionOp => gen.into_root_schema_for::(), + Self::ExtendFootprintTtlOp => gen.into_root_schema_for::(), + Self::RestoreFootprintOp => gen.into_root_schema_for::(), + Self::Operation => gen.into_root_schema_for::(), + Self::OperationBody => gen.into_root_schema_for::(), + Self::HashIdPreimage => gen.into_root_schema_for::(), + Self::HashIdPreimageOperationId => { + gen.into_root_schema_for::() + } + Self::HashIdPreimageRevokeId => gen.into_root_schema_for::(), + Self::HashIdPreimageContractId => { + gen.into_root_schema_for::() + } + Self::HashIdPreimageSorobanAuthorization => { + gen.into_root_schema_for::() + } + Self::MemoType => gen.into_root_schema_for::(), + Self::Memo => gen.into_root_schema_for::(), + Self::TimeBounds => gen.into_root_schema_for::(), + Self::LedgerBounds => gen.into_root_schema_for::(), + Self::PreconditionsV2 => gen.into_root_schema_for::(), + Self::PreconditionType => gen.into_root_schema_for::(), + Self::Preconditions => gen.into_root_schema_for::(), + Self::LedgerFootprint => gen.into_root_schema_for::(), + Self::SorobanResources => gen.into_root_schema_for::(), + Self::SorobanTransactionData => gen.into_root_schema_for::(), + Self::TransactionV0 => gen.into_root_schema_for::(), + Self::TransactionV0Ext => gen.into_root_schema_for::(), + Self::TransactionV0Envelope => gen.into_root_schema_for::(), + Self::Transaction => gen.into_root_schema_for::(), + Self::TransactionExt => gen.into_root_schema_for::(), + Self::TransactionV1Envelope => gen.into_root_schema_for::(), + Self::FeeBumpTransaction => gen.into_root_schema_for::(), + Self::FeeBumpTransactionInnerTx => { + gen.into_root_schema_for::() + } + Self::FeeBumpTransactionExt => gen.into_root_schema_for::(), + Self::FeeBumpTransactionEnvelope => { + gen.into_root_schema_for::() + } + Self::TransactionEnvelope => gen.into_root_schema_for::(), + Self::TransactionSignaturePayload => { + gen.into_root_schema_for::() + } + Self::TransactionSignaturePayloadTaggedTransaction => { + gen.into_root_schema_for::() + } + Self::ClaimAtomType => gen.into_root_schema_for::(), + Self::ClaimOfferAtomV0 => gen.into_root_schema_for::(), + Self::ClaimOfferAtom => gen.into_root_schema_for::(), + Self::ClaimLiquidityAtom => gen.into_root_schema_for::(), + Self::ClaimAtom => gen.into_root_schema_for::(), + Self::CreateAccountResultCode => gen.into_root_schema_for::(), + Self::CreateAccountResult => gen.into_root_schema_for::(), + Self::PaymentResultCode => gen.into_root_schema_for::(), + Self::PaymentResult => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveResultCode => { + gen.into_root_schema_for::() + } + Self::SimplePaymentResult => gen.into_root_schema_for::(), + Self::PathPaymentStrictReceiveResult => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictReceiveResultSuccess => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResultCode => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResult => { + gen.into_root_schema_for::() + } + Self::PathPaymentStrictSendResultSuccess => { + gen.into_root_schema_for::() + } + Self::ManageSellOfferResultCode => { + gen.into_root_schema_for::() + } + Self::ManageOfferEffect => gen.into_root_schema_for::(), + Self::ManageOfferSuccessResult => { + gen.into_root_schema_for::() + } + Self::ManageOfferSuccessResultOffer => { + gen.into_root_schema_for::() + } + Self::ManageSellOfferResult => gen.into_root_schema_for::(), + Self::ManageBuyOfferResultCode => { + gen.into_root_schema_for::() + } + Self::ManageBuyOfferResult => gen.into_root_schema_for::(), + Self::SetOptionsResultCode => gen.into_root_schema_for::(), + Self::SetOptionsResult => gen.into_root_schema_for::(), + Self::ChangeTrustResultCode => gen.into_root_schema_for::(), + Self::ChangeTrustResult => gen.into_root_schema_for::(), + Self::AllowTrustResultCode => gen.into_root_schema_for::(), + Self::AllowTrustResult => gen.into_root_schema_for::(), + Self::AccountMergeResultCode => gen.into_root_schema_for::(), + Self::AccountMergeResult => gen.into_root_schema_for::(), + Self::InflationResultCode => gen.into_root_schema_for::(), + Self::InflationPayout => gen.into_root_schema_for::(), + Self::InflationResult => gen.into_root_schema_for::(), + Self::ManageDataResultCode => gen.into_root_schema_for::(), + Self::ManageDataResult => gen.into_root_schema_for::(), + Self::BumpSequenceResultCode => gen.into_root_schema_for::(), + Self::BumpSequenceResult => gen.into_root_schema_for::(), + Self::CreateClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::CreateClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::ClaimClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::BeginSponsoringFutureReservesResultCode => { + gen.into_root_schema_for::() + } + Self::BeginSponsoringFutureReservesResult => { + gen.into_root_schema_for::() + } + Self::EndSponsoringFutureReservesResultCode => { + gen.into_root_schema_for::() + } + Self::EndSponsoringFutureReservesResult => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipResultCode => { + gen.into_root_schema_for::() + } + Self::RevokeSponsorshipResult => gen.into_root_schema_for::(), + Self::ClawbackResultCode => gen.into_root_schema_for::(), + Self::ClawbackResult => gen.into_root_schema_for::(), + Self::ClawbackClaimableBalanceResultCode => { + gen.into_root_schema_for::() + } + Self::ClawbackClaimableBalanceResult => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsResultCode => { + gen.into_root_schema_for::() + } + Self::SetTrustLineFlagsResult => gen.into_root_schema_for::(), + Self::LiquidityPoolDepositResultCode => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolDepositResult => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolWithdrawResultCode => { + gen.into_root_schema_for::() + } + Self::LiquidityPoolWithdrawResult => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionResultCode => { + gen.into_root_schema_for::() + } + Self::InvokeHostFunctionResult => { + gen.into_root_schema_for::() + } + Self::ExtendFootprintTtlResultCode => { + gen.into_root_schema_for::() + } + Self::ExtendFootprintTtlResult => { + gen.into_root_schema_for::() + } + Self::RestoreFootprintResultCode => { + gen.into_root_schema_for::() + } + Self::RestoreFootprintResult => gen.into_root_schema_for::(), + Self::OperationResultCode => gen.into_root_schema_for::(), + Self::OperationResult => gen.into_root_schema_for::(), + Self::OperationResultTr => gen.into_root_schema_for::(), + Self::TransactionResultCode => gen.into_root_schema_for::(), + Self::InnerTransactionResult => gen.into_root_schema_for::(), + Self::InnerTransactionResultResult => { + gen.into_root_schema_for::() + } + Self::InnerTransactionResultExt => { + gen.into_root_schema_for::() + } + Self::InnerTransactionResultPair => { + gen.into_root_schema_for::() + } + Self::TransactionResult => gen.into_root_schema_for::(), + Self::TransactionResultResult => gen.into_root_schema_for::(), + Self::TransactionResultExt => gen.into_root_schema_for::(), + Self::Hash => gen.into_root_schema_for::(), + Self::Uint256 => gen.into_root_schema_for::(), + Self::Uint32 => gen.into_root_schema_for::(), + Self::Int32 => gen.into_root_schema_for::(), + Self::Uint64 => gen.into_root_schema_for::(), + Self::Int64 => gen.into_root_schema_for::(), + Self::TimePoint => gen.into_root_schema_for::(), + Self::Duration => gen.into_root_schema_for::(), + Self::ExtensionPoint => gen.into_root_schema_for::(), + Self::CryptoKeyType => gen.into_root_schema_for::(), + Self::PublicKeyType => gen.into_root_schema_for::(), + Self::SignerKeyType => gen.into_root_schema_for::(), + Self::PublicKey => gen.into_root_schema_for::(), + Self::SignerKey => gen.into_root_schema_for::(), + Self::SignerKeyEd25519SignedPayload => { + gen.into_root_schema_for::() + } + Self::Signature => gen.into_root_schema_for::(), + Self::SignatureHint => gen.into_root_schema_for::(), + Self::NodeId => gen.into_root_schema_for::(), + Self::AccountId => gen.into_root_schema_for::(), + Self::Curve25519Secret => gen.into_root_schema_for::(), + Self::Curve25519Public => gen.into_root_schema_for::(), + Self::HmacSha256Key => gen.into_root_schema_for::(), + Self::HmacSha256Mac => gen.into_root_schema_for::(), + } + } } impl Name for TypeVariant { From bbfea62ace7fa51e5b103c40dc043ffe77c035a8 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Thu, 14 Mar 2024 18:55:30 +1000 Subject: [PATCH 13/25] group new features --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 36520adb..c892d9f2 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -7,7 +7,7 @@ on: merge_group: env: - CARGO_HACK_ARGS: --feature-powerset --exclude-features default --group-features base64,serde,arbitrary,hex + CARGO_HACK_ARGS: --feature-powerset --exclude-features default --group-features base64,serde,serde_json,schemars,arbitrary,hex jobs: From 017f7d6f3060f79c51c0af3dd503f317182500e7 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 15 Mar 2024 20:50:54 +1000 Subject: [PATCH 14/25] custom types --- Makefile | 22 ++++++++++--- src/cli/types/schema.rs | 8 +++-- src/curr/generated.rs | 71 ----------------------------------------- src/curr/jsonschema.rs | 28 ++++++++++++++++ src/curr/mod.rs | 1 + src/next/generated.rs | 71 ----------------------------------------- src/next/jsonschema.rs | 28 ++++++++++++++++ src/next/mod.rs | 1 + 8 files changed, 82 insertions(+), 148 deletions(-) create mode 100644 src/curr/jsonschema.rs create mode 100644 src/next/jsonschema.rs diff --git a/Makefile b/Makefile index 16df6c2a..bbfb2b3d 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,8 @@ XDRGEN_VERSION=4ea81a540e25623567badd1f7dd649cc46cf9f21 # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 +XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 +XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 all: build test @@ -39,12 +41,18 @@ ifeq ($(XDRGEN_LOCAL),) docker run -i --rm -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ gem install specific_install -v 0.3.8 && \ gem specific_install https://github.com/stellar/xdrgen.git -b $(XDRGEN_VERSION) && \ - xdrgen --language rust --namespace generated --output src/curr --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR) $^ \ + xdrgen --language rust --namespace generated --output src/curr \ + --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR) \ + --rust-types-custom-jsonschema-impl '$(XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_CURR)' \ + $^ \ ' else docker run -i --rm -v $$PWD/../xdrgen:/xdrgen -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ pushd /xdrgen && bundle install --deployment && rake install && popd && \ - xdrgen --language rust --namespace generated --output src/curr --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR) $^ \ + xdrgen --language rust --namespace generated --output src/curr \ + --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR) \ + --rust-types-custom-jsonschema-impl '$(XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_CURR)' \ + $^ \ ' endif rustfmt $@ @@ -58,12 +66,18 @@ ifeq ($(XDRGEN_LOCAL),) docker run -i --rm -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ gem install specific_install -v 0.3.8 && \ gem specific_install https://github.com/stellar/xdrgen.git -b $(XDRGEN_VERSION) && \ - xdrgen --language rust --namespace generated --output src/next --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT) $^ \ + xdrgen --language rust --namespace generated --output src/next \ + --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT) \ + --rust-types-custom-jsonschema-impl '$(XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_NEXT)' \ + $^ \ ' else docker run -i --rm -v $$PWD/../xdrgen:/xdrgen -v $$PWD:/wd -w /wd docker.io/library/ruby:latest /bin/bash -c '\ pushd /xdrgen && bundle install --deployment && rake install && popd && \ - xdrgen --language rust --namespace generated --output src/next --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT) $^ \ + xdrgen --language rust --namespace generated --output src/next \ + --rust-types-custom-str-impl $(XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT) \ + --rust-types-custom-jsonschema-impl '$(XDRGEN_TYPES_CUSTOM_JSONSCHEMA_IMPL_NEXT)' \ + $^ \ ' endif rustfmt $@ diff --git a/src/cli/types/schema.rs b/src/cli/types/schema.rs index ef5c7bc8..730ca6c0 100644 --- a/src/cli/types/schema.rs +++ b/src/cli/types/schema.rs @@ -26,11 +26,12 @@ pub struct Cmd { #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, ValueEnum)] pub enum OutputFormat { JsonSchemaDraft7, + JsonSchemaDraft201909, } impl Default for OutputFormat { fn default() -> Self { - Self::JsonSchemaDraft7 + Self::JsonSchemaDraft201909 } } @@ -41,7 +42,10 @@ macro_rules! run_x { let r#type = crate::$m::TypeVariant::from_str(&self.r#type).map_err(|_| { Error::UnknownType(self.r#type.clone(), &crate::$m::TypeVariant::VARIANTS_STR) })?; - let settings = SchemaSettings::draft07(); + let settings = match self.output { + OutputFormat::JsonSchemaDraft7 => SchemaSettings::draft07(), + OutputFormat::JsonSchemaDraft201909 => SchemaSettings::draft2019_09(), + }; let generator = settings.into_generator(); let schema = r#type.json_schema(generator); println!("{}", serde_json::to_string_pretty(&schema)?); diff --git a/src/curr/generated.rs b/src/curr/generated.rs index c5cc787b..86f1adaa 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -8718,7 +8718,6 @@ impl WriteXdr for ScAddressType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScAddress { Account(AccountId), @@ -10753,37 +10752,6 @@ impl core::fmt::Debug for AssetCode4 { Ok(()) } } -#[cfg(feature = "schemars")] -impl schemars::JsonSchema for AssetCode4 { - fn schema_name() -> String { - "AssetCode4".to_string() - } - - fn is_referenceable() -> bool { - false - } - - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { - schema.extensions.insert( - "contentEncoding".to_owned(), - serde_json::Value::String("hex".to_string()), - ); - schema.extensions.insert( - "contentMediaType".to_owned(), - serde_json::Value::String("application/binary".to_string()), - ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), - min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), - ..string - }) - } else { - schema_ - } - } -} impl From for [u8; 4] { #[must_use] fn from(x: AssetCode4) -> Self { @@ -10885,37 +10853,6 @@ impl core::fmt::Debug for AssetCode12 { Ok(()) } } -#[cfg(feature = "schemars")] -impl schemars::JsonSchema for AssetCode12 { - fn schema_name() -> String { - "AssetCode12".to_string() - } - - fn is_referenceable() -> bool { - false - } - - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { - schema.extensions.insert( - "contentEncoding".to_owned(), - serde_json::Value::String("hex".to_string()), - ); - schema.extensions.insert( - "contentMediaType".to_owned(), - serde_json::Value::String("application/binary".to_string()), - ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), - min_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), - ..string - }) - } else { - schema_ - } - } -} impl From for [u8; 12] { #[must_use] fn from(x: AssetCode12) -> Self { @@ -11134,7 +11071,6 @@ impl WriteXdr for AssetType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AssetCode { CreditAlphanum4(AssetCode4), @@ -24551,7 +24487,6 @@ impl WriteXdr for LiquidityPoolParameters { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct MuxedAccountMed25519 { pub id: u64, pub ed25519: Uint256, @@ -24603,7 +24538,6 @@ impl WriteXdr for MuxedAccountMed25519 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { Ed25519(Uint256), @@ -42012,7 +41946,6 @@ impl WriteXdr for SignerKeyType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PublicKey { PublicKeyTypeEd25519(Uint256), @@ -42115,7 +42048,6 @@ impl WriteXdr for PublicKey { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, pub payload: BytesM<64>, @@ -42175,7 +42107,6 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SignerKey { Ed25519(Uint256), @@ -42548,7 +42479,6 @@ impl AsRef<[u8]> for SignatureHint { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -42603,7 +42533,6 @@ impl WriteXdr for NodeId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct AccountId(pub PublicKey); diff --git a/src/curr/jsonschema.rs b/src/curr/jsonschema.rs new file mode 100644 index 00000000..ce23b940 --- /dev/null +++ b/src/curr/jsonschema.rs @@ -0,0 +1,28 @@ +#![cfg(feature = "schemars")] +use schemars::{gen::SchemaGenerator, schema::Schema, JsonSchema}; + +macro_rules! impl_json_schema_string { + ($type:ident) => { + impl JsonSchema for super::$type { + fn schema_name() -> String { + stringify!($type).to_string() + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + String::json_schema(gen) + } + } + }; +} + +impl_json_schema_string!(PublicKey); +impl_json_schema_string!(AccountId); +impl_json_schema_string!(MuxedAccount); +impl_json_schema_string!(MuxedAccountMed25519); +impl_json_schema_string!(SignerKey); +impl_json_schema_string!(SignerKeyEd25519SignedPayload); +impl_json_schema_string!(NodeId); +impl_json_schema_string!(ScAddress); +impl_json_schema_string!(AssetCode); +impl_json_schema_string!(AssetCode4); +impl_json_schema_string!(AssetCode12); diff --git a/src/curr/mod.rs b/src/curr/mod.rs index 288c1e2e..ec2f1e37 100644 --- a/src/curr/mod.rs +++ b/src/curr/mod.rs @@ -1,6 +1,7 @@ mod generated; pub use generated::*; +mod jsonschema; mod str; mod scval_conversions; diff --git a/src/next/generated.rs b/src/next/generated.rs index 3c7a959a..3d4048dc 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -8718,7 +8718,6 @@ impl WriteXdr for ScAddressType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ScAddress { Account(AccountId), @@ -10753,37 +10752,6 @@ impl core::fmt::Debug for AssetCode4 { Ok(()) } } -#[cfg(feature = "schemars")] -impl schemars::JsonSchema for AssetCode4 { - fn schema_name() -> String { - "AssetCode4".to_string() - } - - fn is_referenceable() -> bool { - false - } - - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { - schema.extensions.insert( - "contentEncoding".to_owned(), - serde_json::Value::String("hex".to_string()), - ); - schema.extensions.insert( - "contentMediaType".to_owned(), - serde_json::Value::String("application/binary".to_string()), - ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), - min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), - ..string - }) - } else { - schema_ - } - } -} impl From for [u8; 4] { #[must_use] fn from(x: AssetCode4) -> Self { @@ -10885,37 +10853,6 @@ impl core::fmt::Debug for AssetCode12 { Ok(()) } } -#[cfg(feature = "schemars")] -impl schemars::JsonSchema for AssetCode12 { - fn schema_name() -> String { - "AssetCode12".to_string() - } - - fn is_referenceable() -> bool { - false - } - - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { - schema.extensions.insert( - "contentEncoding".to_owned(), - serde_json::Value::String("hex".to_string()), - ); - schema.extensions.insert( - "contentMediaType".to_owned(), - serde_json::Value::String("application/binary".to_string()), - ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { - max_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), - min_length: 12_u32.checked_mul(2).map(Some).unwrap_or_default(), - ..string - }) - } else { - schema_ - } - } -} impl From for [u8; 12] { #[must_use] fn from(x: AssetCode12) -> Self { @@ -11134,7 +11071,6 @@ impl WriteXdr for AssetType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum AssetCode { CreditAlphanum4(AssetCode4), @@ -24551,7 +24487,6 @@ impl WriteXdr for LiquidityPoolParameters { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct MuxedAccountMed25519 { pub id: u64, pub ed25519: Uint256, @@ -24603,7 +24538,6 @@ impl WriteXdr for MuxedAccountMed25519 { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum MuxedAccount { Ed25519(Uint256), @@ -42012,7 +41946,6 @@ impl WriteXdr for SignerKeyType { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum PublicKey { PublicKeyTypeEd25519(Uint256), @@ -42115,7 +42048,6 @@ impl WriteXdr for PublicKey { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SignerKeyEd25519SignedPayload { pub ed25519: Uint256, pub payload: BytesM<64>, @@ -42175,7 +42107,6 @@ impl WriteXdr for SignerKeyEd25519SignedPayload { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SignerKey { Ed25519(Uint256), @@ -42548,7 +42479,6 @@ impl AsRef<[u8]> for SignatureHint { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct NodeId(pub PublicKey); @@ -42603,7 +42533,6 @@ impl WriteXdr for NodeId { all(feature = "serde", feature = "alloc"), derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr) )] -#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[derive(Debug)] pub struct AccountId(pub PublicKey); diff --git a/src/next/jsonschema.rs b/src/next/jsonschema.rs new file mode 100644 index 00000000..ce23b940 --- /dev/null +++ b/src/next/jsonschema.rs @@ -0,0 +1,28 @@ +#![cfg(feature = "schemars")] +use schemars::{gen::SchemaGenerator, schema::Schema, JsonSchema}; + +macro_rules! impl_json_schema_string { + ($type:ident) => { + impl JsonSchema for super::$type { + fn schema_name() -> String { + stringify!($type).to_string() + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + String::json_schema(gen) + } + } + }; +} + +impl_json_schema_string!(PublicKey); +impl_json_schema_string!(AccountId); +impl_json_schema_string!(MuxedAccount); +impl_json_schema_string!(MuxedAccountMed25519); +impl_json_schema_string!(SignerKey); +impl_json_schema_string!(SignerKeyEd25519SignedPayload); +impl_json_schema_string!(NodeId); +impl_json_schema_string!(ScAddress); +impl_json_schema_string!(AssetCode); +impl_json_schema_string!(AssetCode4); +impl_json_schema_string!(AssetCode12); diff --git a/src/next/mod.rs b/src/next/mod.rs index 288c1e2e..ec2f1e37 100644 --- a/src/next/mod.rs +++ b/src/next/mod.rs @@ -1,6 +1,7 @@ mod generated; pub use generated::*; +mod jsonschema; mod str; mod scval_conversions; From 48714cbff6cc9d3d30a623ed8ca7a9a5f0570d72 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 15 Mar 2024 23:12:02 +1000 Subject: [PATCH 15/25] upd --- Makefile | 2 +- src/curr/generated.rs | 130 ++++++++++++++++++------------------------ src/next/generated.rs | 130 ++++++++++++++++++------------------------ 3 files changed, 113 insertions(+), 149 deletions(-) diff --git a/Makefile b/Makefile index bbfb2b3d..825b8ec9 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=4ea81a540e25623567badd1f7dd649cc46cf9f21 +XDRGEN_VERSION=0a2611a2bc6b6f6bceacb72fe9321b0cb4d8ccd5 # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 86f1adaa..b429b8fb 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -967,12 +967,18 @@ impl schemars::JsonSchema for VecM schemars::schema::Schema { - mut_array(Vec::::json_schema(gen), |array| { - schemars::schema::ArrayValidation { - max_items: Some(MAX), - ..array - } - }) + let schema = Vec::::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { + if let Some(array) = schema.array.clone() { + schema.array = Some(Box::new(schemars::schema::ArrayValidation { + max_items: Some(MAX), + ..*array + })); + } + schema.into() + } else { + schema + } } } @@ -1422,8 +1428,8 @@ impl schemars::JsonSchema for BytesM { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -1432,13 +1438,15 @@ impl schemars::JsonSchema for BytesM { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: MAX.checked_mul(2).map(Some).unwrap_or_default(), min_length: None, ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -1837,17 +1845,18 @@ impl schemars::JsonSchema for StringM { format!("StringM<{MAX}>") } - fn is_referenceable() -> bool { - false - } - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - mut_string(String::json_schema(gen), |string| { - schemars::schema::StringValidation { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: Some(MAX), ..string - } - }) + })); + schema.into() + } else { + schema + } } } @@ -2173,10 +2182,6 @@ impl schemars::JsonSchema for Frame { format!("Frame<{}>", T::schema_name()) } - fn is_referenceable() -> bool { - false - } - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { T::json_schema(gen) } @@ -2206,37 +2211,6 @@ where } } -#[cfg(feature = "schemars")] -fn mut_array( - schema: schemars::schema::Schema, - f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, -) -> schemars::schema::Schema { - if let schemars::schema::Schema::Object(mut schema) = schema { - if let Some(array) = schema.array.clone() { - schema.array = Some(Box::new(f(*array))); - } - schema.into() - } else { - schema - } -} - -#[cfg(feature = "schemars")] -fn mut_string( - schema: schemars::schema::Schema, - f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, -) -> schemars::schema::Schema { - if let schemars::schema::Schema::Object(mut schema) = schema { - let string = *schema.string.unwrap_or_default().clone(); - let s = f(string); - schema.string = Some(Box::new(s)); - - schema.into() - } else { - schema - } -} - #[cfg(all(test, feature = "std"))] mod tests { use std::io::Cursor; @@ -10201,8 +10175,8 @@ impl schemars::JsonSchema for Thresholds { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -10211,13 +10185,15 @@ impl schemars::JsonSchema for Thresholds { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -41085,8 +41061,8 @@ impl schemars::JsonSchema for Hash { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -41095,13 +41071,15 @@ impl schemars::JsonSchema for Hash { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -41234,8 +41212,8 @@ impl schemars::JsonSchema for Uint256 { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -41244,13 +41222,15 @@ impl schemars::JsonSchema for Uint256 { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -42371,8 +42351,8 @@ impl schemars::JsonSchema for SignatureHint { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -42381,13 +42361,15 @@ impl schemars::JsonSchema for SignatureHint { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } diff --git a/src/next/generated.rs b/src/next/generated.rs index 3d4048dc..9c0b754d 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -967,12 +967,18 @@ impl schemars::JsonSchema for VecM schemars::schema::Schema { - mut_array(Vec::::json_schema(gen), |array| { - schemars::schema::ArrayValidation { - max_items: Some(MAX), - ..array - } - }) + let schema = Vec::::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { + if let Some(array) = schema.array.clone() { + schema.array = Some(Box::new(schemars::schema::ArrayValidation { + max_items: Some(MAX), + ..*array + })); + } + schema.into() + } else { + schema + } } } @@ -1422,8 +1428,8 @@ impl schemars::JsonSchema for BytesM { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -1432,13 +1438,15 @@ impl schemars::JsonSchema for BytesM { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: MAX.checked_mul(2).map(Some).unwrap_or_default(), min_length: None, ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -1837,17 +1845,18 @@ impl schemars::JsonSchema for StringM { format!("StringM<{MAX}>") } - fn is_referenceable() -> bool { - false - } - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - mut_string(String::json_schema(gen), |string| { - schemars::schema::StringValidation { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: Some(MAX), ..string - } - }) + })); + schema.into() + } else { + schema + } } } @@ -2173,10 +2182,6 @@ impl schemars::JsonSchema for Frame { format!("Frame<{}>", T::schema_name()) } - fn is_referenceable() -> bool { - false - } - fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { T::json_schema(gen) } @@ -2206,37 +2211,6 @@ where } } -#[cfg(feature = "schemars")] -fn mut_array( - schema: schemars::schema::Schema, - f: impl FnOnce(schemars::schema::ArrayValidation) -> schemars::schema::ArrayValidation, -) -> schemars::schema::Schema { - if let schemars::schema::Schema::Object(mut schema) = schema { - if let Some(array) = schema.array.clone() { - schema.array = Some(Box::new(f(*array))); - } - schema.into() - } else { - schema - } -} - -#[cfg(feature = "schemars")] -fn mut_string( - schema: schemars::schema::Schema, - f: impl FnOnce(schemars::schema::StringValidation) -> schemars::schema::StringValidation, -) -> schemars::schema::Schema { - if let schemars::schema::Schema::Object(mut schema) = schema { - let string = *schema.string.unwrap_or_default().clone(); - let s = f(string); - schema.string = Some(Box::new(s)); - - schema.into() - } else { - schema - } -} - #[cfg(all(test, feature = "std"))] mod tests { use std::io::Cursor; @@ -10201,8 +10175,8 @@ impl schemars::JsonSchema for Thresholds { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -10211,13 +10185,15 @@ impl schemars::JsonSchema for Thresholds { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -41085,8 +41061,8 @@ impl schemars::JsonSchema for Hash { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -41095,13 +41071,15 @@ impl schemars::JsonSchema for Hash { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -41234,8 +41212,8 @@ impl schemars::JsonSchema for Uint256 { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -41244,13 +41222,15 @@ impl schemars::JsonSchema for Uint256 { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } @@ -42371,8 +42351,8 @@ impl schemars::JsonSchema for SignatureHint { } fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { - let schema_ = String::json_schema(gen); - if let schemars::schema::Schema::Object(mut schema) = schema_ { + let schema = String::json_schema(gen); + if let schemars::schema::Schema::Object(mut schema) = schema { schema.extensions.insert( "contentEncoding".to_owned(), serde_json::Value::String("hex".to_string()), @@ -42381,13 +42361,15 @@ impl schemars::JsonSchema for SignatureHint { "contentMediaType".to_owned(), serde_json::Value::String("application/binary".to_string()), ); - mut_string(schema.into(), |string| schemars::schema::StringValidation { + let string = *schema.string.unwrap_or_default().clone(); + schema.string = Some(Box::new(schemars::schema::StringValidation { max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(), ..string - }) + })); + schema.into() } else { - schema_ + schema } } } From 9bf455072df8841c46b8d954f5b1284740372c98 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Thu, 14 Mar 2024 14:13:57 -0400 Subject: [PATCH 16/25] feat: add wasm-pack to allow publishing to npm --- Cargo.lock | 146 ++++++++++++++++++++------ Cargo.toml | 11 +- crates/stellar-xdr-wasm/.appveyor.yml | 11 ++ crates/stellar-xdr-wasm/.gitignore | 6 ++ crates/stellar-xdr-wasm/Cargo.toml | 27 +++++ crates/stellar-xdr-wasm/README.md | 84 +++++++++++++++ crates/stellar-xdr-wasm/src/lib.rs | 16 +++ crates/stellar-xdr-wasm/src/utils.rs | 11 ++ crates/stellar-xdr-wasm/tests/web.rs | 13 +++ src/lib.rs | 3 + src/schema.rs | 30 ++++++ 11 files changed, 326 insertions(+), 32 deletions(-) create mode 100644 crates/stellar-xdr-wasm/.appveyor.yml create mode 100644 crates/stellar-xdr-wasm/.gitignore create mode 100644 crates/stellar-xdr-wasm/Cargo.toml create mode 100644 crates/stellar-xdr-wasm/README.md create mode 100644 crates/stellar-xdr-wasm/src/lib.rs create mode 100644 crates/stellar-xdr-wasm/src/utils.rs create mode 100644 crates/stellar-xdr-wasm/tests/web.rs create mode 100644 src/schema.rs diff --git a/Cargo.lock b/Cargo.lock index e6675654..bdcc77f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -118,7 +118,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.52", ] [[package]] @@ -137,6 +137,16 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + [[package]] name = "core-foundation-sys" version = "0.8.3" @@ -219,7 +229,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.15", + "syn 2.0.52", ] [[package]] @@ -230,7 +240,7 @@ checksum = "7bfb82b62b1b8a2a9808fb4caf844ede819a76cfc23b2827d7f94eefb49551eb" dependencies = [ "darling_core", "quote", - "syn 2.0.15", + "syn 2.0.52", ] [[package]] @@ -332,9 +342,9 @@ checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -399,18 +409,18 @@ checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -445,6 +455,12 @@ dependencies = [ "syn 1.0.98", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scratch" version = "1.0.2" @@ -453,22 +469,31 @@ checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-json-wasm" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.52", ] [[package]] @@ -484,9 +509,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -518,7 +543,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.52", ] [[package]] @@ -550,6 +575,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "stellar-xdr-wasm" +version = "0.1.0" +dependencies = [ + "console_error_panic_hook", + "serde-json-wasm", + "serde_json", + "stellar-xdr", + "wasm-bindgen", + "wasm-bindgen-test", +] + [[package]] name = "strsim" version = "0.10.0" @@ -569,9 +606,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -633,9 +670,9 @@ checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -643,24 +680,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.52", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -668,22 +717,57 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.52", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-bindgen-test" +version = "0.3.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" +dependencies = [ + "console_error_panic_hook", + "js-sys", + "scoped-tls", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-bindgen-test-macro", +] + +[[package]] +name = "wasm-bindgen-test-macro" +version = "0.3.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "web-sys" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] name = "winapi" diff --git a/Cargo.toml b/Cargo.toml index b536f781..5e6a6405 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,9 +49,18 @@ schemars = ["alloc", "serde", "serde_json", "dep:schemars"] arbitrary = ["std", "dep:arbitrary"] hex = [] +wasm = ["std", "curr", "base64", "serde", "serde_json", "schemars", "dep:thiserror"] +# can also be compiled with --wasm32-wasi +cli = ["dep:clap", "wasm"] # Features for the CLI. -cli = ["std", "curr", "next", "base64", "serde", "serde_json", "schemars", "dep:clap", "dep:thiserror"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docs"] + +[workspace] +members = ["crates/*"] + +[profile.release] +# Tell `rustc` to optimize for small code size. +opt-level = "s" diff --git a/crates/stellar-xdr-wasm/.appveyor.yml b/crates/stellar-xdr-wasm/.appveyor.yml new file mode 100644 index 00000000..50910bd6 --- /dev/null +++ b/crates/stellar-xdr-wasm/.appveyor.yml @@ -0,0 +1,11 @@ +install: + - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe + - if not defined RUSTFLAGS rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain nightly + - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin + - rustc -V + - cargo -V + +build: false + +test_script: + - cargo test --locked diff --git a/crates/stellar-xdr-wasm/.gitignore b/crates/stellar-xdr-wasm/.gitignore new file mode 100644 index 00000000..4e301317 --- /dev/null +++ b/crates/stellar-xdr-wasm/.gitignore @@ -0,0 +1,6 @@ +/target +**/*.rs.bk +Cargo.lock +bin/ +pkg/ +wasm-pack.log diff --git a/crates/stellar-xdr-wasm/Cargo.toml b/crates/stellar-xdr-wasm/Cargo.toml new file mode 100644 index 00000000..6cef31e6 --- /dev/null +++ b/crates/stellar-xdr-wasm/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "stellar-xdr-wasm" +version = "0.1.0" +authors = ["Willem Wyndham "] +edition = "2018" + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +default = ["console_error_panic_hook"] + +[dependencies] +wasm-bindgen = "0.2.84" +stellar-xdr = { path = "../..", package = "stellar-xdr", features = ["wasm"]} + +# The `console_error_panic_hook` crate provides better debugging of panics by +# logging them with `console.error`. This is great for development, but requires +# all the `std::fmt` and `std::panicking` infrastructure, so isn't great for +# code size when deploying. +console_error_panic_hook = { version = "0.1.7", optional = true } +serde-json-wasm = "1.0.1" +serde_json = "1.0.114" + +[dev-dependencies] +wasm-bindgen-test = "0.3.34" + diff --git a/crates/stellar-xdr-wasm/README.md b/crates/stellar-xdr-wasm/README.md new file mode 100644 index 00000000..6b684085 --- /dev/null +++ b/crates/stellar-xdr-wasm/README.md @@ -0,0 +1,84 @@ +
+ +

wasm-pack-template

+ + A template for kick starting a Rust and WebAssembly project using wasm-pack. + +

+ Build Status +

+ +

+ Tutorial + | + Chat +

+ + Built with 🦀🕸 by The Rust and WebAssembly Working Group +
+ +## About + +[**📚 Read this template tutorial! 📚**][template-docs] + +This template is designed for compiling Rust libraries into WebAssembly and +publishing the resulting package to NPM. + +Be sure to check out [other `wasm-pack` tutorials online][tutorials] for other +templates and usages of `wasm-pack`. + +[tutorials]: https://rustwasm.github.io/docs/wasm-pack/tutorials/index.html +[template-docs]: https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html + +## 🚴 Usage + +### 🐑 Use `cargo generate` to Clone this Template + +[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate) + +``` +cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project +cd my-project +``` + +### 🛠️ Build with `wasm-pack build` + +``` +wasm-pack build +``` + +### 🔬 Test in Headless Browsers with `wasm-pack test` + +``` +wasm-pack test --headless --firefox +``` + +### 🎁 Publish to NPM with `wasm-pack publish` + +``` +wasm-pack publish +``` + +## 🔋 Batteries Included + +* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating + between WebAssembly and JavaScript. +* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook) + for logging panic messages to the developer console. +* `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you + +## License + +Licensed under either of + +* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally +submitted for inclusion in the work by you, as defined in the Apache-2.0 +license, shall be dual licensed as above, without any additional terms or +conditions. diff --git a/crates/stellar-xdr-wasm/src/lib.rs b/crates/stellar-xdr-wasm/src/lib.rs new file mode 100644 index 00000000..f3278a7f --- /dev/null +++ b/crates/stellar-xdr-wasm/src/lib.rs @@ -0,0 +1,16 @@ +mod utils; + +use std::convert::TryInto; + +use stellar_xdr::schema::Schema; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn schema() -> String { + let Schema(json_schema): Schema = stellar_xdr::curr::TypeVariant::Transaction.try_into().unwrap(); + let s = match serde_json::to_string(&json_schema) { + Ok(s) => s, + Err(e) => return format!("{{\"error\": \"{}\"}}", e), + }; + s +} diff --git a/crates/stellar-xdr-wasm/src/utils.rs b/crates/stellar-xdr-wasm/src/utils.rs new file mode 100644 index 00000000..c4be847e --- /dev/null +++ b/crates/stellar-xdr-wasm/src/utils.rs @@ -0,0 +1,11 @@ +#[allow(dead_code)] +pub fn set_panic_hook() { + // When the `console_error_panic_hook` feature is enabled, we can call the + // `set_panic_hook` function at least once during initialization, and then + // we will get better error messages if our code ever panics. + // + // For more details see + // https://github.com/rustwasm/console_error_panic_hook#readme + #[cfg(feature = "console_error_panic_hook")] + console_error_panic_hook::set_once(); +} diff --git a/crates/stellar-xdr-wasm/tests/web.rs b/crates/stellar-xdr-wasm/tests/web.rs new file mode 100644 index 00000000..de5c1daf --- /dev/null +++ b/crates/stellar-xdr-wasm/tests/web.rs @@ -0,0 +1,13 @@ +//! Test suite for the Web and headless browsers. + +#![cfg(target_arch = "wasm32")] + +extern crate wasm_bindgen_test; +use wasm_bindgen_test::*; + +wasm_bindgen_test_configure!(run_in_browser); + +#[wasm_bindgen_test] +fn pass() { + assert_eq!(1 + 1, 2); +} diff --git a/src/lib.rs b/src/lib.rs index e4c8d923..6fe5eea1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -126,3 +126,6 @@ pub mod next; #[cfg(feature = "cli")] pub mod cli; + +#[cfg(any(feature = "cli", feature = "wasm"))] +pub mod schema; diff --git a/src/schema.rs b/src/schema.rs new file mode 100644 index 00000000..da51ca82 --- /dev/null +++ b/src/schema.rs @@ -0,0 +1,30 @@ +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("unknown type {0}, choose one of {1:?}")] + UnknownType(String, &'static [&'static str]), + #[error("error generating JSON: {0}")] + GenerateJson(#[from] serde_json::Error), +} + +use schemars::gen::SchemaSettings; +use std::str::FromStr; + +impl TryFrom for Schema { + type Error = Error; + fn try_from(variant: crate::curr::TypeVariant) -> Result { + let settings = SchemaSettings::draft07(); + let generator = settings.into_generator(); + Ok(Schema(variant.json_schema(generator))) + } +} + +impl FromStr for Schema { + type Err = Error; + fn from_str(s: &str) -> Result { + s.parse::() + .map_err(|_| Error::UnknownType(s.to_string(), &crate::curr::TypeVariant::VARIANTS_STR))? + .try_into() + } +} + +pub struct Schema(pub schemars::schema::RootSchema); From 17efe8ff7b9ac634c31ef719913b1b5e7f617abb Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Thu, 14 Mar 2024 16:18:30 -0400 Subject: [PATCH 17/25] fix: return list of types --- crates/stellar-xdr-wasm/src/lib.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/crates/stellar-xdr-wasm/src/lib.rs b/crates/stellar-xdr-wasm/src/lib.rs index f3278a7f..d6776b36 100644 --- a/crates/stellar-xdr-wasm/src/lib.rs +++ b/crates/stellar-xdr-wasm/src/lib.rs @@ -1,13 +1,23 @@ mod utils; -use std::convert::TryInto; - -use stellar_xdr::schema::Schema; +use stellar_xdr::{curr::TypeVariant, schema::Schema}; use wasm_bindgen::prelude::*; #[wasm_bindgen] -pub fn schema() -> String { - let Schema(json_schema): Schema = stellar_xdr::curr::TypeVariant::Transaction.try_into().unwrap(); +pub fn type_variants() -> String { + format!( + "[{}]", + TypeVariant::VARIANTS_STR + .iter() + .map(|s| format!("{s:?}")) + .collect::>() + .join(", ") + ) +} + +#[wasm_bindgen] +pub fn schema(s: &str) -> String { + let Schema(json_schema): Schema = s.parse().unwrap(); let s = match serde_json::to_string(&json_schema) { Ok(s) => s, Err(e) => return format!("{{\"error\": \"{}\"}}", e), From c52da3d9d10e92fd6d51208c3f7261c87e35a8c1 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Mon, 18 Mar 2024 16:40:33 -0400 Subject: [PATCH 18/25] feat: add to_xdr and from_xdr --- .gitignore | 2 + crates/stellar-xdr-wasm/Cargo.toml | 1 + crates/stellar-xdr-wasm/src/lib.rs | 91 +++++++++++++++++++++++++++--- 3 files changed, 86 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index ea8c4bf7..bcd5559c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /target + +.DS_Store diff --git a/crates/stellar-xdr-wasm/Cargo.toml b/crates/stellar-xdr-wasm/Cargo.toml index 6cef31e6..df34f280 100644 --- a/crates/stellar-xdr-wasm/Cargo.toml +++ b/crates/stellar-xdr-wasm/Cargo.toml @@ -9,6 +9,7 @@ crate-type = ["cdylib", "rlib"] [features] default = ["console_error_panic_hook"] +schema = [] [dependencies] wasm-bindgen = "0.2.84" diff --git a/crates/stellar-xdr-wasm/src/lib.rs b/crates/stellar-xdr-wasm/src/lib.rs index d6776b36..30bfc4c7 100644 --- a/crates/stellar-xdr-wasm/src/lib.rs +++ b/crates/stellar-xdr-wasm/src/lib.rs @@ -1,6 +1,16 @@ mod utils; -use stellar_xdr::{curr::TypeVariant, schema::Schema}; +use std::{ + cmp, + convert::TryInto, + io::{self, Read}, + str::FromStr, +}; + +use stellar_xdr::{ + curr::{self, TypeVariant, WriteXdr}, + schema::Schema, +}; use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -15,12 +25,77 @@ pub fn type_variants() -> String { ) } +// #[cfg(feature = "schema")] #[wasm_bindgen] -pub fn schema(s: &str) -> String { - let Schema(json_schema): Schema = s.parse().unwrap(); - let s = match serde_json::to_string(&json_schema) { - Ok(s) => s, - Err(e) => return format!("{{\"error\": \"{}\"}}", e), - }; - s +pub fn schema(type_variant: &str) -> String { + let Schema(json_schema): Schema = type_variant.parse().unwrap(); + serde_json::to_string(&json_schema).unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")) +} + +#[wasm_bindgen] +pub fn transaction() -> String { + let Schema(json_schema): Schema = TypeVariant::Transaction.try_into().unwrap(); + serde_json::to_string(&json_schema).unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")) +} + +#[wasm_bindgen] +pub fn from_xdr(xdr_base64: String, variant: Option) -> String { + let mut f = curr::Limited::new(ResetRead::new(xdr_base64.as_bytes()), curr::Limits::none()); + for variant in variant + .map(|v| Some(vec![v.parse::().ok()?])) + .unwrap_or_else(|| Some(TypeVariant::VARIANTS.to_vec())) + .unwrap() + { + f.inner.reset(); + if let Ok(res) = curr::Type::read_xdr_to_end(variant, &mut f) { + return serde_json::to_string(&res) + .unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")); + } + } + "{\"error\": \"unknown type\"}".to_string() +} + +#[wasm_bindgen] +pub fn to_xdr(json_string: String, variant: String) -> String { + let r#type = TypeVariant::from_str(&variant).unwrap(); + let t = curr::Type::read_json(r#type, json_string.as_bytes()).unwrap(); + t.to_xdr_base64(curr::Limits::none()).unwrap() +} + +struct ResetRead { + read: R, + buf: Vec, + cursor: usize, +} + +impl ResetRead { + fn new(r: R) -> Self { + Self { + read: r, + buf: Vec::new(), + cursor: 0, + } + } + + fn reset(&mut self) { + self.cursor = 0; + } +} + +impl Read for ResetRead { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + // Read from the buffer first into buf. + let n = cmp::min(self.buf.len() - self.cursor, buf.len()); + buf[..n].copy_from_slice(&self.buf[self.cursor..self.cursor + n]); + // Read from the reader and cache the result in the buf if the buf is consumed. + if n < buf.len() { + let read_n = self.read.read(buf)?; + self.buf.extend_from_slice(&buf[n..n + read_n]); + self.cursor += n + read_n; + Ok(n + read_n) + } else { + self.cursor += n; + Ok(n) + } + } } From b10e4be6d6a1eb6226df2946983edaaf6f4481c2 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Tue, 19 Mar 2024 13:13:52 -0400 Subject: [PATCH 19/25] feat: use serde_json_wasm --- crates/stellar-xdr-wasm/src/lib.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/crates/stellar-xdr-wasm/src/lib.rs b/crates/stellar-xdr-wasm/src/lib.rs index 30bfc4c7..58a59daa 100644 --- a/crates/stellar-xdr-wasm/src/lib.rs +++ b/crates/stellar-xdr-wasm/src/lib.rs @@ -2,7 +2,6 @@ mod utils; use std::{ cmp, - convert::TryInto, io::{self, Read}, str::FromStr, }; @@ -27,15 +26,11 @@ pub fn type_variants() -> String { // #[cfg(feature = "schema")] #[wasm_bindgen] -pub fn schema(type_variant: &str) -> String { - let Schema(json_schema): Schema = type_variant.parse().unwrap(); - serde_json::to_string(&json_schema).unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")) -} - -#[wasm_bindgen] -pub fn transaction() -> String { - let Schema(json_schema): Schema = TypeVariant::Transaction.try_into().unwrap(); - serde_json::to_string(&json_schema).unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")) +pub fn schema(type_variant: &str) -> Result { + let Schema(json_schema): Schema = type_variant + .parse() + .map_err(|_| JsValue::from_str("unknown type"))?; + serde_json_wasm::to_string(&json_schema).map_err(|e| JsValue::from_str(&format!("{e:?}"))) } #[wasm_bindgen] @@ -48,7 +43,7 @@ pub fn from_xdr(xdr_base64: String, variant: Option) -> String { { f.inner.reset(); if let Ok(res) = curr::Type::read_xdr_to_end(variant, &mut f) { - return serde_json::to_string(&res) + return serde_json_wasm::to_string(&res) .unwrap_or_else(|e| format!("{{\"error\": \"{e}\"}}")); } } From 0a686f1225d132c0b200ba4b7fdc934c1a832f34 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 20 Mar 2024 17:15:59 -0400 Subject: [PATCH 20/25] feat: add titles to enum types for better readability --- src/schema.rs | 47 ++++++++++++++++++++++++++++++++++++---- tests/serde_tx_schema.rs | 9 ++++---- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/schema.rs b/src/schema.rs index da51ca82..d153eba3 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -6,13 +6,20 @@ pub enum Error { GenerateJson(#[from] serde_json::Error), } -use schemars::gen::SchemaSettings; +use schemars::{ + gen::SchemaSettings, + schema::SchemaObject, + visit::{self, Visitor}, +}; use std::str::FromStr; +pub struct Schema(pub schemars::schema::RootSchema); + impl TryFrom for Schema { type Error = Error; fn try_from(variant: crate::curr::TypeVariant) -> Result { - let settings = SchemaSettings::draft07(); + println!("hhh"); + let settings = SchemaSettings::draft07().with_visitor(ReplaceAdditionalProperties); let generator = settings.into_generator(); Ok(Schema(variant.json_schema(generator))) } @@ -22,9 +29,41 @@ impl FromStr for Schema { type Err = Error; fn from_str(s: &str) -> Result { s.parse::() - .map_err(|_| Error::UnknownType(s.to_string(), &crate::curr::TypeVariant::VARIANTS_STR))? + .map_err(|_| { + Error::UnknownType(s.to_string(), &crate::curr::TypeVariant::VARIANTS_STR) + })? .try_into() } } -pub struct Schema(pub schemars::schema::RootSchema); +/// This visitor will remote "additionalProperties" from all objects in the schema. +#[derive(Debug, Clone)] +pub struct ReplaceAdditionalProperties; + +impl Visitor for ReplaceAdditionalProperties { + fn visit_schema_object(&mut self, schema: &mut schemars::schema::SchemaObject) { + schema.object().additional_properties = None; + add_titles(schema.subschemas()); + visit::visit_schema_object(self, schema); + } +} + +/// This function will add titles to all one_of schemas in the schema. So that it is more readable. +/// E.g. it was `Option 1`, etc before +fn add_titles(sub_schema: &mut schemars::schema::SubschemaValidation) { + if let Some(ref mut one_of) = sub_schema.one_of { + one_of.iter_mut().for_each(|schema| { + if let schemars::schema::Schema::Object(ref mut obj) = schema { + if let Some(inner_obj) = &mut obj.object { + if let Some(title) = inner_obj.required.first() { + obj.metadata().title = Some(title.clone()); + } + } else if let Some(enum_values) = &obj.enum_values { + if let Some(title) = enum_values.get(2) { + obj.metadata().title = Some(title.to_string()); + } + } + } + }); + } +} diff --git a/tests/serde_tx_schema.rs b/tests/serde_tx_schema.rs index 1c4a95fc..6f7d9ea6 100644 --- a/tests/serde_tx_schema.rs +++ b/tests/serde_tx_schema.rs @@ -1,13 +1,12 @@ -#![cfg(feature = "curr")] -#![cfg(all(feature = "schemars", feature = "serde", feature = "alloc"))] +#![cfg(feature = "wasm")] -use stellar_xdr::curr as stellar_xdr; +use stellar_xdr::{curr::TypeVariant, schema::Schema}; #[allow(clippy::too_many_lines)] #[test] fn test_serde_tx_schema() -> Result<(), Box> { - let schema = schemars::schema_for!(stellar_xdr::ScVal); - let s = serde_json::to_string_pretty(&schema)?; + let schema: Schema = TypeVariant::ScVal.try_into()?; + let s = serde_json::to_string_pretty(&schema.0)?; println!("{s}"); Ok(()) } From fcf73ddaad6fd956018092bbf5129e633acea1ea Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 20 Mar 2024 20:38:13 -0400 Subject: [PATCH 21/25] feat: add build script --- README.md | 24 ++++++++++++++++++++++++ src/schema.rs | 1 - wasm-pack.sh | 23 +++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 wasm-pack.sh diff --git a/README.md b/README.md index 5ec42dc6..35b1d8ad 100644 --- a/README.md +++ b/README.md @@ -87,4 +87,28 @@ Parse a `BucketEntry` framed stream from a bucket file: stellar-xdr decode --type BucketEntry --input stream-framed --output json-formatted bucket.xdr ``` +## Wasm pack + +`wasm-pack.sh` will use [`wasm-pack`](https://rustwasm.github.io/wasm-pack/installer/) to build a npm package and use [yalc](https://github.com/wclr/yalc) pubilsh it locally. It uses the following environment variables: +- `PROFILE` - default `dev` +- `TARGETS` - default `bundler nodejs web no-modules` + +After running the script you can install the package corresponding target with yalc: + +``` +yalc add stellar-xdr-wasm-web +yalc link stellar-xdr-wasm-web +``` + +Then you can import package as normal + +```ts +import * as xdr from "stellar-xdr-wasm-web"; +``` + +#### cargo watch for changes + +``` +cargo watch -s "TARGETS=web ./wasm-pack.sh" +``` License: Apache-2.0 diff --git a/src/schema.rs b/src/schema.rs index d153eba3..7afccf39 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -8,7 +8,6 @@ pub enum Error { use schemars::{ gen::SchemaSettings, - schema::SchemaObject, visit::{self, Visitor}, }; use std::str::FromStr; diff --git a/wasm-pack.sh b/wasm-pack.sh new file mode 100755 index 00000000..90ad545f --- /dev/null +++ b/wasm-pack.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -e +alias npx='npx -y' +( + cd crates/stellar-xdr-wasm + # iterates over all targets and builds each on in it's on folder + for TARGET in ${TARGETS:-bundler nodejs web no-modules} ; do + OUT_DIR=pkg/$TARGET + npx wasm-pack build --"${PROFILE:-dev}" \ + --target "$TARGET" \ + --out-dir "$OUT_DIR" \ + --out-name "stellar-xdr-wasm-$TARGET" + ( + cd "$OUT_DIR"; + # shellcheck disable=SC2016 + npx node-jq --arg TARGET "stellar-xdr-wasm-$TARGET" \ + '.name = $TARGET' package.json > tmp.json; + mv tmp.json package.json; + npx yalc publish; + ) + done +) From 2d078c1fdce37aa64c44197b2d8ec19954a0bc09 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Tue, 9 Apr 2024 22:30:52 +1000 Subject: [PATCH 22/25] upd ver --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 825b8ec9..6d5c3911 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ CARGO_HACK_ARGS=--feature-powerset --exclude-features default --group-features b CARGO_DOC_ARGS?=--open -XDRGEN_VERSION=0a2611a2bc6b6f6bceacb72fe9321b0cb4d8ccd5 +XDRGEN_VERSION=736398401ba08dfa8f5fcb577c1d7ed935cc51de # XDRGEN_LOCAL=1 XDRGEN_TYPES_CUSTOM_STR_IMPL_CURR=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 XDRGEN_TYPES_CUSTOM_STR_IMPL_NEXT=PublicKey,AccountId,MuxedAccount,MuxedAccountMed25519,SignerKey,SignerKeyEd25519SignedPayload,NodeId,ScAddress,AssetCode,AssetCode4,AssetCode12 From 3a12f34c59467eed7d8958c8d057b5b8012d0425 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:56:21 +1000 Subject: [PATCH 23/25] update xdr --- src/curr/generated.rs | 36 ++++++++++++++++++++++++++++++++++-- src/next/generated.rs | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/curr/generated.rs b/src/curr/generated.rs index 0c59cbb1..2acfd47d 100644 --- a/src/curr/generated.rs +++ b/src/curr/generated.rs @@ -15765,6 +15765,7 @@ impl WriteXdr for ContractDataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeCostInputs { pub ext: ExtensionPoint, pub n_instructions: u32, @@ -15837,6 +15838,7 @@ impl WriteXdr for ContractCodeCostInputs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeEntryV1 { pub ext: ExtensionPoint, pub cost_inputs: ContractCodeCostInputs, @@ -15889,6 +15891,7 @@ impl WriteXdr for ContractCodeEntryV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractCodeEntryExt { V0, @@ -21431,6 +21434,7 @@ impl WriteXdr for DiagnosticEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionMetaExtV1 { pub ext: ExtensionPoint, pub total_non_refundable_resource_fee_charged: i64, @@ -21486,6 +21490,7 @@ impl WriteXdr for SorobanTransactionMetaExtV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanTransactionMetaExt { V0, @@ -22043,6 +22048,7 @@ impl WriteXdr for LedgerCloseMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaExtV1 { pub ext: ExtensionPoint, pub soroban_fee_write1_kb: i64, @@ -22091,6 +22097,7 @@ impl WriteXdr for LedgerCloseMetaExtV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMetaExt { V0, @@ -43469,7 +43476,7 @@ impl WriteXdr for HmacSha256Mac { #[doc(hidden)] #[macro_export] -macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f8cc9ceb6a6de8c91abcb1289 { +macro_rules! _call_macro_with_each_type_a8ec9d9a49f25ea23e8e612173231a39cfdf209abcfa15580b47b2a63e940f47 { // The x-macro takes a single ident, the name of a macro to call ... ($macro_to_call_back:ident, $($context:tt),*) => {{ // ... and calls it back, once for each XDR type. @@ -43749,8 +43756,14 @@ macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f $macro_to_call_back!(ContractDataEntry, $($context),*); + $macro_to_call_back!(ContractCodeCostInputs, $($context),*); + $macro_to_call_back!(ContractCodeEntry, $($context),*); + $macro_to_call_back!(ContractCodeEntryExt, $($context),*); + + $macro_to_call_back!(ContractCodeEntryV1, $($context),*); + $macro_to_call_back!(TtlEntry, $($context),*); $macro_to_call_back!(LedgerEntryExtensionV1, $($context),*); @@ -43881,6 +43894,10 @@ macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f $macro_to_call_back!(DiagnosticEvent, $($context),*); + $macro_to_call_back!(SorobanTransactionMetaExtV1, $($context),*); + + $macro_to_call_back!(SorobanTransactionMetaExt, $($context),*); + $macro_to_call_back!(SorobanTransactionMeta, $($context),*); $macro_to_call_back!(TransactionMetaV3, $($context),*); @@ -43895,6 +43912,10 @@ macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f $macro_to_call_back!(LedgerCloseMetaV0, $($context),*); + $macro_to_call_back!(LedgerCloseMetaExtV1, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaExt, $($context),*); + $macro_to_call_back!(LedgerCloseMetaV1, $($context),*); $macro_to_call_back!(LedgerCloseMeta, $($context),*); @@ -44312,7 +44333,7 @@ macro_rules! _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f }}; } -pub use _call_macro_with_each_type_8b45a57eccbfd886a69e4462ad26dd8a94d8874f8cc9ceb6a6de8c91abcb1289 as call_macro_with_each_type; +pub use _call_macro_with_each_type_a8ec9d9a49f25ea23e8e612173231a39cfdf209abcfa15580b47b2a63e940f47 as call_macro_with_each_type; #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), @@ -46231,7 +46252,10 @@ impl TypeVariant { } Self::ContractDataDurability => gen.into_root_schema_for::(), Self::ContractDataEntry => gen.into_root_schema_for::(), + Self::ContractCodeCostInputs => gen.into_root_schema_for::(), Self::ContractCodeEntry => gen.into_root_schema_for::(), + Self::ContractCodeEntryExt => gen.into_root_schema_for::(), + Self::ContractCodeEntryV1 => gen.into_root_schema_for::(), Self::TtlEntry => gen.into_root_schema_for::(), Self::LedgerEntryExtensionV1 => gen.into_root_schema_for::(), Self::LedgerEntryExtensionV1Ext => { @@ -46319,6 +46343,12 @@ impl TypeVariant { Self::ContractEventBody => gen.into_root_schema_for::(), Self::ContractEventV0 => gen.into_root_schema_for::(), Self::DiagnosticEvent => gen.into_root_schema_for::(), + Self::SorobanTransactionMetaExtV1 => { + gen.into_root_schema_for::() + } + Self::SorobanTransactionMetaExt => { + gen.into_root_schema_for::() + } Self::SorobanTransactionMeta => gen.into_root_schema_for::(), Self::TransactionMetaV3 => gen.into_root_schema_for::(), Self::InvokeHostFunctionSuccessPreImage => { @@ -46328,6 +46358,8 @@ impl TypeVariant { Self::TransactionResultMeta => gen.into_root_schema_for::(), Self::UpgradeEntryMeta => gen.into_root_schema_for::(), Self::LedgerCloseMetaV0 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaExtV1 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaExt => gen.into_root_schema_for::(), Self::LedgerCloseMetaV1 => gen.into_root_schema_for::(), Self::LedgerCloseMeta => gen.into_root_schema_for::(), Self::ErrorCode => gen.into_root_schema_for::(), diff --git a/src/next/generated.rs b/src/next/generated.rs index 189460cb..baea275c 100644 --- a/src/next/generated.rs +++ b/src/next/generated.rs @@ -15765,6 +15765,7 @@ impl WriteXdr for ContractDataEntry { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeCostInputs { pub ext: ExtensionPoint, pub n_instructions: u32, @@ -15837,6 +15838,7 @@ impl WriteXdr for ContractCodeCostInputs { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct ContractCodeEntryV1 { pub ext: ExtensionPoint, pub cost_inputs: ContractCodeCostInputs, @@ -15889,6 +15891,7 @@ impl WriteXdr for ContractCodeEntryV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum ContractCodeEntryExt { V0, @@ -21431,6 +21434,7 @@ impl WriteXdr for DiagnosticEvent { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct SorobanTransactionMetaExtV1 { pub ext: ExtensionPoint, pub total_non_refundable_resource_fee_charged: i64, @@ -21486,6 +21490,7 @@ impl WriteXdr for SorobanTransactionMetaExtV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum SorobanTransactionMetaExt { V0, @@ -22043,6 +22048,7 @@ impl WriteXdr for LedgerCloseMetaV0 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub struct LedgerCloseMetaExtV1 { pub ext: ExtensionPoint, pub soroban_fee_write1_kb: i64, @@ -22091,6 +22097,7 @@ impl WriteXdr for LedgerCloseMetaExtV1 { derive(serde::Serialize, serde::Deserialize), serde(rename_all = "snake_case") )] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[allow(clippy::large_enum_variant)] pub enum LedgerCloseMetaExt { V0, @@ -43469,7 +43476,7 @@ impl WriteXdr for HmacSha256Mac { #[doc(hidden)] #[macro_export] -macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc2dcdebbad617637359bef05f { +macro_rules! _call_macro_with_each_type_53647236d6ceadfee429747f7d6725f269c6917f9a37b47038496c410a3a8868 { // The x-macro takes a single ident, the name of a macro to call ... ($macro_to_call_back:ident, $($context:tt),*) => {{ // ... and calls it back, once for each XDR type. @@ -43749,8 +43756,14 @@ macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc $macro_to_call_back!(ContractDataEntry, $($context),*); + $macro_to_call_back!(ContractCodeCostInputs, $($context),*); + $macro_to_call_back!(ContractCodeEntry, $($context),*); + $macro_to_call_back!(ContractCodeEntryExt, $($context),*); + + $macro_to_call_back!(ContractCodeEntryV1, $($context),*); + $macro_to_call_back!(TtlEntry, $($context),*); $macro_to_call_back!(LedgerEntryExtensionV1, $($context),*); @@ -43881,6 +43894,10 @@ macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc $macro_to_call_back!(DiagnosticEvent, $($context),*); + $macro_to_call_back!(SorobanTransactionMetaExtV1, $($context),*); + + $macro_to_call_back!(SorobanTransactionMetaExt, $($context),*); + $macro_to_call_back!(SorobanTransactionMeta, $($context),*); $macro_to_call_back!(TransactionMetaV3, $($context),*); @@ -43895,6 +43912,10 @@ macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc $macro_to_call_back!(LedgerCloseMetaV0, $($context),*); + $macro_to_call_back!(LedgerCloseMetaExtV1, $($context),*); + + $macro_to_call_back!(LedgerCloseMetaExt, $($context),*); + $macro_to_call_back!(LedgerCloseMetaV1, $($context),*); $macro_to_call_back!(LedgerCloseMeta, $($context),*); @@ -44312,7 +44333,7 @@ macro_rules! _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc }}; } -pub use _call_macro_with_each_type_bac0bd9a01f0eecd4c0ebd32e9b5e6c490d95cdc2dcdebbad617637359bef05f as call_macro_with_each_type; +pub use _call_macro_with_each_type_53647236d6ceadfee429747f7d6725f269c6917f9a37b47038496c410a3a8868 as call_macro_with_each_type; #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] #[cfg_attr( all(feature = "serde", feature = "alloc"), @@ -46231,7 +46252,10 @@ impl TypeVariant { } Self::ContractDataDurability => gen.into_root_schema_for::(), Self::ContractDataEntry => gen.into_root_schema_for::(), + Self::ContractCodeCostInputs => gen.into_root_schema_for::(), Self::ContractCodeEntry => gen.into_root_schema_for::(), + Self::ContractCodeEntryExt => gen.into_root_schema_for::(), + Self::ContractCodeEntryV1 => gen.into_root_schema_for::(), Self::TtlEntry => gen.into_root_schema_for::(), Self::LedgerEntryExtensionV1 => gen.into_root_schema_for::(), Self::LedgerEntryExtensionV1Ext => { @@ -46319,6 +46343,12 @@ impl TypeVariant { Self::ContractEventBody => gen.into_root_schema_for::(), Self::ContractEventV0 => gen.into_root_schema_for::(), Self::DiagnosticEvent => gen.into_root_schema_for::(), + Self::SorobanTransactionMetaExtV1 => { + gen.into_root_schema_for::() + } + Self::SorobanTransactionMetaExt => { + gen.into_root_schema_for::() + } Self::SorobanTransactionMeta => gen.into_root_schema_for::(), Self::TransactionMetaV3 => gen.into_root_schema_for::(), Self::InvokeHostFunctionSuccessPreImage => { @@ -46328,6 +46358,8 @@ impl TypeVariant { Self::TransactionResultMeta => gen.into_root_schema_for::(), Self::UpgradeEntryMeta => gen.into_root_schema_for::(), Self::LedgerCloseMetaV0 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaExtV1 => gen.into_root_schema_for::(), + Self::LedgerCloseMetaExt => gen.into_root_schema_for::(), Self::LedgerCloseMetaV1 => gen.into_root_schema_for::(), Self::LedgerCloseMeta => gen.into_root_schema_for::(), Self::ErrorCode => gen.into_root_schema_for::(), From c0cfb75f7872d126d43659323b52e1e5777921b4 Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Thu, 11 Apr 2024 14:27:41 +1000 Subject: [PATCH 24/25] Few changes see description - Remove npx use native tools without wrappers that doesn't introduce the npm and versioning consistency concerns in CI. - Remove yalc as a developer who wishes to import the lib can choose to use yalc, the repo doesn't need to prescribe it. - Remove visitor that modifies the schema because it results in two sets of schema being exported from the lib, the one defined on the types, and the one returned by the function. Also the visitor's modification of union types was buggy resulting in titles on union arms that were incorrect. Since this change is focused on a JS language binding we can revisit improving the schema in a separate PR and ideally do it on the types itself. - Remove the Schema/TryFrom conversions as the pattern doesn't allow an importer to select the JSON Schema version, and encourage use of the schemars types for doing so. - Changed the size optimization profile to be limited to the binding crate instead of all the crates in the repo. - Remove the rlib crate-type because it is unnecessary and multiple crate-type's will cause rustc to abandon LTO, resulting in a larger .wasm file. - Remove appveyor config that isn't used in the repos CI. - Move the generation of the bindings into the Makefile where this repo defines all its targets. - Remove all wasm-pack targets except the default bundler since longer term we will probably use the bundler target combined with webpack to generate a UMD package that can be used in nodejs and in the browser. - Added types and exceptions to the wasmbind-gen functions so that the JS side can deal with arrays directly without having to decode JSON, and exceptions without having to decode errors from the JSON response that may conflict with valid JSON outputs. - Separated the guess functionality into a separate function and made it behave more like the CLI guess function in that it returns all valid values, not just the first. --- Cargo.lock | 37 ++- Cargo.toml | 24 +- Makefile | 10 + README.md | 26 +- bindings/js/Cargo.toml | 23 ++ .../js}/README.md | 0 bindings/js/pkg/README.md | 84 +++++ bindings/js/pkg/package.json | 16 + bindings/js/pkg/stellar-xdr.d.ts | 51 +++ bindings/js/pkg/stellar-xdr.js | 4 + bindings/js/pkg/stellar-xdr_bg.js | 312 ++++++++++++++++++ bindings/js/pkg/stellar-xdr_bg.wasm | Bin 0 -> 7987928 bytes bindings/js/pkg/stellar-xdr_bg.wasm.d.ts | 12 + bindings/js/src/lib.rs | 79 +++++ .../js}/src/utils.rs | 0 .../js}/tests/web.rs | 0 crates/stellar-xdr-wasm/.appveyor.yml | 11 - crates/stellar-xdr-wasm/.gitignore | 6 - crates/stellar-xdr-wasm/Cargo.toml | 28 -- crates/stellar-xdr-wasm/src/lib.rs | 96 ------ src/lib.rs | 13 +- src/schema.rs | 68 ---- wasm-pack.sh | 23 -- 23 files changed, 649 insertions(+), 274 deletions(-) create mode 100644 bindings/js/Cargo.toml rename {crates/stellar-xdr-wasm => bindings/js}/README.md (100%) create mode 100644 bindings/js/pkg/README.md create mode 100644 bindings/js/pkg/package.json create mode 100644 bindings/js/pkg/stellar-xdr.d.ts create mode 100644 bindings/js/pkg/stellar-xdr.js create mode 100644 bindings/js/pkg/stellar-xdr_bg.js create mode 100644 bindings/js/pkg/stellar-xdr_bg.wasm create mode 100644 bindings/js/pkg/stellar-xdr_bg.wasm.d.ts create mode 100644 bindings/js/src/lib.rs rename {crates/stellar-xdr-wasm => bindings/js}/src/utils.rs (100%) rename {crates/stellar-xdr-wasm => bindings/js}/tests/web.rs (100%) delete mode 100644 crates/stellar-xdr-wasm/.appveyor.yml delete mode 100644 crates/stellar-xdr-wasm/.gitignore delete mode 100644 crates/stellar-xdr-wasm/Cargo.toml delete mode 100644 crates/stellar-xdr-wasm/src/lib.rs delete mode 100644 src/schema.rs delete mode 100755 wasm-pack.sh diff --git a/Cargo.lock b/Cargo.lock index bdcc77f7..b0fe0d77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,6 +50,20 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +[[package]] +name = "bindings-js" +version = "0.0.0" +dependencies = [ + "console_error_panic_hook", + "schemars", + "serde-json-wasm", + "serde-wasm-bindgen", + "serde_json", + "stellar-xdr", + "wasm-bindgen", + "wasm-bindgen-test", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -485,6 +499,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_derive" version = "1.0.197" @@ -575,18 +600,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "stellar-xdr-wasm" -version = "0.1.0" -dependencies = [ - "console_error_panic_hook", - "serde-json-wasm", - "serde_json", - "stellar-xdr", - "wasm-bindgen", - "wasm-bindgen-test", -] - [[package]] name = "strsim" version = "0.10.0" diff --git a/Cargo.toml b/Cargo.toml index 5e6a6405..d50246db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,18 +49,28 @@ schemars = ["alloc", "serde", "serde_json", "dep:schemars"] arbitrary = ["std", "dep:arbitrary"] hex = [] -wasm = ["std", "curr", "base64", "serde", "serde_json", "schemars", "dep:thiserror"] -# can also be compiled with --wasm32-wasi -cli = ["dep:clap", "wasm"] -# Features for the CLI. +cli = ["std", "curr", "next", "base64", "serde", "serde_json", "schemars", "dep:thiserror", "dep:clap"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docs"] [workspace] -members = ["crates/*"] +members = [ + "bindings/js", +] [profile.release] -# Tell `rustc` to optimize for small code size. -opt-level = "s" +codegen-units = 1 +lto = true + +[profile.dev.package.bindings-js] +opt-level = "z" +debug = 0 +strip = "symbols" + +[profile.release.package.bindings-js] +opt-level = "z" +debug = 0 +strip = "symbols" +debug-assertions = false diff --git a/Makefile b/Makefile index 6d5c3911..46d946b9 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,16 @@ build: generate cargo hack clippy $(CARGO_HACK_ARGS) --all-targets cargo hack clippy $(CARGO_HACK_ARGS) --all-targets --release --target wasm32-unknown-unknown +generate-bindings: generate-bindings-js + +generate-bindings-js: + cd bindings/js \ + && rm -fr pkg \ + && wasm-pack build --"$${PROFILE:-dev}" --out-dir pkg --out-name stellar-xdr \ + && cat <<< "$$(jq '.name = "stellar-xdr"' pkg/package.json)" > pkg/package.json \ + && rm pkg/.gitignore \ + && ls -lah pkg + doc: cargo test --doc --all-features RUSTDOCFLAGS="--cfg docs" cargo +nightly doc --package stellar-xdr --all-features $(CARGO_DOC_ARGS) diff --git a/README.md b/README.md index 35b1d8ad..168e0b76 100644 --- a/README.md +++ b/README.md @@ -87,28 +87,14 @@ Parse a `BucketEntry` framed stream from a bucket file: stellar-xdr decode --type BucketEntry --input stream-framed --output json-formatted bucket.xdr ``` -## Wasm pack +##### Bindings -`wasm-pack.sh` will use [`wasm-pack`](https://rustwasm.github.io/wasm-pack/installer/) to build a npm package and use [yalc](https://github.com/wclr/yalc) pubilsh it locally. It uses the following environment variables: -- `PROFILE` - default `dev` -- `TARGETS` - default `bundler nodejs web no-modules` +The crate has language bindings in other languages, where the crate is +embedded as Wasm: -After running the script you can install the package corresponding target with yalc: +###### JavaScript/TypeScript -``` -yalc add stellar-xdr-wasm-web -yalc link stellar-xdr-wasm-web -``` - -Then you can import package as normal - -```ts -import * as xdr from "stellar-xdr-wasm-web"; -``` - -#### cargo watch for changes +The source repositories `bindings/js/pkg` directory contains a prebuilt +bundler (e.g. webpack, etc) compatible npm package. -``` -cargo watch -s "TARGETS=web ./wasm-pack.sh" -``` License: Apache-2.0 diff --git a/bindings/js/Cargo.toml b/bindings/js/Cargo.toml new file mode 100644 index 00000000..d3bdaee9 --- /dev/null +++ b/bindings/js/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "bindings-js" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[features] +default = ["console_error_panic_hook"] + +[dependencies] +wasm-bindgen = "0.2.84" +stellar-xdr = { path = "../..", package = "stellar-xdr", features = ["std", "curr", "base64", "serde", "serde_json", "schemars"]} +schemars = "0.8.16" +serde-wasm-bindgen = "0.6.5" +console_error_panic_hook = { version = "0.1.7", optional = true } +serde-json-wasm = "1.0.1" +serde_json = "1.0.114" + +[dev-dependencies] +wasm-bindgen-test = "0.3.34" + diff --git a/crates/stellar-xdr-wasm/README.md b/bindings/js/README.md similarity index 100% rename from crates/stellar-xdr-wasm/README.md rename to bindings/js/README.md diff --git a/bindings/js/pkg/README.md b/bindings/js/pkg/README.md new file mode 100644 index 00000000..6b684085 --- /dev/null +++ b/bindings/js/pkg/README.md @@ -0,0 +1,84 @@ +
+ +

wasm-pack-template

+ + A template for kick starting a Rust and WebAssembly project using wasm-pack. + +

+ Build Status +

+ +

+ Tutorial + | + Chat +

+ + Built with 🦀🕸 by The Rust and WebAssembly Working Group +
+ +## About + +[**📚 Read this template tutorial! 📚**][template-docs] + +This template is designed for compiling Rust libraries into WebAssembly and +publishing the resulting package to NPM. + +Be sure to check out [other `wasm-pack` tutorials online][tutorials] for other +templates and usages of `wasm-pack`. + +[tutorials]: https://rustwasm.github.io/docs/wasm-pack/tutorials/index.html +[template-docs]: https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html + +## 🚴 Usage + +### 🐑 Use `cargo generate` to Clone this Template + +[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate) + +``` +cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project +cd my-project +``` + +### 🛠️ Build with `wasm-pack build` + +``` +wasm-pack build +``` + +### 🔬 Test in Headless Browsers with `wasm-pack test` + +``` +wasm-pack test --headless --firefox +``` + +### 🎁 Publish to NPM with `wasm-pack publish` + +``` +wasm-pack publish +``` + +## 🔋 Batteries Included + +* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating + between WebAssembly and JavaScript. +* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook) + for logging panic messages to the developer console. +* `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you + +## License + +Licensed under either of + +* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) +* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally +submitted for inclusion in the work by you, as defined in the Apache-2.0 +license, shall be dual licensed as above, without any additional terms or +conditions. diff --git a/bindings/js/pkg/package.json b/bindings/js/pkg/package.json new file mode 100644 index 00000000..c346f722 --- /dev/null +++ b/bindings/js/pkg/package.json @@ -0,0 +1,16 @@ +{ + "name": "stellar-xdr", + "version": "0.0.0", + "files": [ + "stellar-xdr_bg.wasm", + "stellar-xdr.js", + "stellar-xdr_bg.js", + "stellar-xdr.d.ts" + ], + "module": "stellar-xdr.js", + "types": "stellar-xdr.d.ts", + "sideEffects": [ + "./stellar-xdr.js", + "./snippets/*" + ] +} diff --git a/bindings/js/pkg/stellar-xdr.d.ts b/bindings/js/pkg/stellar-xdr.d.ts new file mode 100644 index 00000000..c841add8 --- /dev/null +++ b/bindings/js/pkg/stellar-xdr.d.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +/* eslint-disable */ +/** +* Returns a list of XDR types. +* @returns {(string)[]} +*/ +export function types(): (string)[]; +/** +* Returns the JSON Schema for an XDR type. +* +* JSON Schema version Draft 7 is returned. +* @param {string} type_variant +* @returns {string} +*/ +export function schema(type_variant: string): string; +/** +* Identifies which XDR types the given XDR can decode to completely. +* +* Supports single XDR values only, not arrays, streams, or framed streams. +* @param {string} xdr_base64 +* @returns {(string)[]} +*/ +export function guess(xdr_base64: string): (string)[]; +/** +* Decodes the XDR into JSON. +* +* Accepts a XDR base64 string. +* +* Returns a JSON string. +* +* Unstable: The API of this function is unstable and will likely be changed to +* return a JsValue instead of a JSON string. +* @param {string} type_variant +* @param {string} xdr_base64 +* @returns {string} +*/ +export function decode(type_variant: string, xdr_base64: string): string; +/** +* Encodes to XDR from JSON. +* +* Accepts a JSON string. +* +* Returns an XDR base64 string. +* +* Unstable: The API of this function is unstable and will likely be changed to +* accept a JsValue instead of a JSON string. +* @param {string} type_variant +* @param {string} json +* @returns {string} +*/ +export function encode(type_variant: string, json: string): string; diff --git a/bindings/js/pkg/stellar-xdr.js b/bindings/js/pkg/stellar-xdr.js new file mode 100644 index 00000000..f9f7abec --- /dev/null +++ b/bindings/js/pkg/stellar-xdr.js @@ -0,0 +1,4 @@ +import * as wasm from "./stellar-xdr_bg.wasm"; +import { __wbg_set_wasm } from "./stellar-xdr_bg.js"; +__wbg_set_wasm(wasm); +export * from "./stellar-xdr_bg.js"; diff --git a/bindings/js/pkg/stellar-xdr_bg.js b/bindings/js/pkg/stellar-xdr_bg.js new file mode 100644 index 00000000..3b42fb65 --- /dev/null +++ b/bindings/js/pkg/stellar-xdr_bg.js @@ -0,0 +1,312 @@ +let wasm; +export function __wbg_set_wasm(val) { + wasm = val; +} + + +const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; + +let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + if (typeof(heap_next) !== 'number') throw new Error('corrupt heap'); + + heap[idx] = obj; + return idx; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +let cachedUint32Memory0 = null; + +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} +/** +* Returns a list of XDR types. +* @returns {(string)[]} +*/ +export function types() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.types(retptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_export_0(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +let WASM_VECTOR_LEN = 0; + +const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; + +let cachedTextEncoder = new lTextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (typeof(arg) !== 'string') throw new Error(`expected a string argument, found ${typeof(arg)}`); + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + if (ret.read !== arg.length) throw new Error('failed to pass whole string'); + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** +* Returns the JSON Schema for an XDR type. +* +* JSON Schema version Draft 7 is returned. +* @param {string} type_variant +* @returns {string} +*/ +export function schema(type_variant) { + let deferred3_0; + let deferred3_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(type_variant, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len0 = WASM_VECTOR_LEN; + wasm.schema(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr2 = r0; + var len2 = r1; + if (r3) { + ptr2 = 0; len2 = 0; + throw takeObject(r2); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export_0(deferred3_0, deferred3_1, 1); + } +} + +/** +* Identifies which XDR types the given XDR can decode to completely. +* +* Supports single XDR values only, not arrays, streams, or framed streams. +* @param {string} xdr_base64 +* @returns {(string)[]} +*/ +export function guess(xdr_base64) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(xdr_base64, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len0 = WASM_VECTOR_LEN; + wasm.guess(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v2 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_export_0(r0, r1 * 4, 4); + return v2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +/** +* Decodes the XDR into JSON. +* +* Accepts a XDR base64 string. +* +* Returns a JSON string. +* +* Unstable: The API of this function is unstable and will likely be changed to +* return a JsValue instead of a JSON string. +* @param {string} type_variant +* @param {string} xdr_base64 +* @returns {string} +*/ +export function decode(type_variant, xdr_base64) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(type_variant, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(xdr_base64, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len1 = WASM_VECTOR_LEN; + wasm.decode(retptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export_0(deferred4_0, deferred4_1, 1); + } +} + +/** +* Encodes to XDR from JSON. +* +* Accepts a JSON string. +* +* Returns an XDR base64 string. +* +* Unstable: The API of this function is unstable and will likely be changed to +* accept a JsValue instead of a JSON string. +* @param {string} type_variant +* @param {string} json +* @returns {string} +*/ +export function encode(type_variant, json) { + let deferred4_0; + let deferred4_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(type_variant, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(json, wasm.__wbindgen_export_1, wasm.__wbindgen_export_2); + const len1 = WASM_VECTOR_LEN; + wasm.encode(retptr, ptr0, len0, ptr1, len1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr3 = r0; + var len3 = r1; + if (r3) { + ptr3 = 0; len3 = 0; + throw takeObject(r2); + } + deferred4_0 = ptr3; + deferred4_1 = len3; + return getStringFromWasm0(ptr3, len3); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export_0(deferred4_0, deferred4_1, 1); + } +} + +export function __wbindgen_string_new(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; + +export function __wbindgen_throw(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + diff --git a/bindings/js/pkg/stellar-xdr_bg.wasm b/bindings/js/pkg/stellar-xdr_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bb21f56e1d0bda938a8fa4810d2393f9cba0bd4e GIT binary patch literal 7987928 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%0DB9)8D>$$2lF_vCzVf$bf8 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
  • g8i1D|1voC&ml7A(L5| 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�G+SgT*&;i#RS@a9Nw? z4W(wDCCQ+!sPYO4t*X2#%BwW5S->KW>lR#BWd-kpSa=Icf@)o2+JxFh!VL>H7O-@(cFQ77bc>^#=4}gD#L;6xk40|W-Lc@7 z1$Qj^U;`gWT_X3t_;3NcZ&;GZW$s@Q_fpblL7&C+ThMPw-W0E3W()D&rMiU)p{-^> z%mI?`S#Zx{1}*$A_K*dG77P&_ruRMm=TB~|vA#XZJMfJDzD2D2Bs{Rl|1KX&BM)hg zSimBVQ42;j+%XFtSTH8xN^p;a`iO*a3�qjYaN$Kek}Pg2zOe@sB}G3Tcw&QwyG2 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ΞI0vWlHDuvTG;0zXlwA-BHY>@ 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⪻*#@KdzMvB~X~JAkF4 z_TW&FyNlO7KXL&{@rxz<0OVbvpj}WZ9iZ^2AXh!~_LxElRXjFB3Wn-&3?3D6DA1`V zLQnC$y6@#l%n8HmS(vPD)L82m8i2x22NGqlK zh%=>5fS|(KSLhnw5jnA_SP(H(aG#n75qy9pOFt}?dM*W*iU3r^DY#TRSO!we*9B?a zULyU(oBb3_m2!hgT?M`Bskhk`N|oBIK`_QWU&d2;!FVC6Pq2>7ZcslqaHr%rVdM+d74X@>z(|xmN+`)#BnPX00giKwR+yANSX*ps{RjYh1s-di z9|3f(QSCM2xnAh2u%TEn>&9Z+P;48qZUVrT3Y#U`Ocv>lMJ}RT5nU;@Q&cPc9H3n75bH_@BHe&{#aCVk_K0~Enu`^VcHpj9 zV7(jrCEAY&-qnF(U{?|ya^6+Mwc6)9f}5j<`L#up1L%re3vNf8j-?cktE1ixkXBfQ zveI40^n z>Vj7U#)=4&Y+Et-Dv(xuXCQ)=D&kHqxU0UZh<#m5vsJn?RfU0f{8%R{%K=?sxlE^d zuMJC8xu{nxw^;NxTi4h?-mR78Di&T-!%|%y0AF#F91E|fVQESOz`}AJ%ej=scSG41 zBrGUc3P(X;fy25@7w`C>?n-o*?7d>UR}B72q6fuxU*Ib4i5J@)9|yOdN%xB;HC&#d_>J0rVBtC-lRQ1z=e4Sdc=!dR82s7qe1Tup0AwhS1UjZfB~4cg0dH z%2lWo#iciQ0J!8w)29SFmL`*1;H3LUo#+d0Kol$9NRYr&{aA3B45Z94Qb);fN*(}i zCn?MozhoSsT+!-aWe1ZT!Yj6{vD_LciDK4j6;+q;b-`=?b-`<4C^ftmhRHq*m*KqQ zRT3avu?;OL#H=H!72b*@1+0~zRU;ACxbGMhj3Mh-D=&a#HO{*WqYD1jcy(7x0xfZ4 zpZ@4Dc`aY}rSLN2s=&AMuM1uewW?R>DsWYkOTv_r{Bp&tQ%iUUs7`n*p{?pl6m%_k zT_7ti@KI0aPI*a~K{#5%?a52U`2}AJ^(w5Va3%|C3BW2fJzK`v80YW~LJ6FzJp6}w zGS0&|pVzxegr}nJg)%P0xQM&lC1Ej9Eio)1s?bx4S!rU4G)vIHrdnE308#~6DiNvF4M0?con*P$#-;*TQfqwr;8KCDTH7&wsCgK|u4ejbzLcNy zhImzc_KHg*%VS9ZS+%}IF>Avcf>!Yw0!14MMoU0c6{c^qrf&=Pz*#DJtmo55MO&qQ ziBClp@TrJLsbU9@^-97{?uUy{6~(N(O7cKWc1yDx%^oh)2~tTlm#AxdRS;3BKv1b* z|L3Sw%@LJKhXraL;&8AsuG%;9O>Y3IA}jvXA(5&8RS~ncln}EX;k`96sy+(EJ-M2TY7lN_SpRaD(6s%s@GWpU)QEdNDdJ;CH|dLzI3%>by1 z7!=VN?iZJcL3OsIEg`-cS<#_RA<~1RGXp>>as?ulX8eZwc>_H+5!qA# zdg_)RFkq;z3qGYaiuRyR2|dL%I*VZm94cbg`yx?w;HPMhW0Qwy4_GIn_TW&FYsc%M zAGv^}gqtD|6_Lsdo(M{%

    _tLs6;J9#aUR>II%g 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