diff --git a/Cargo.lock b/Cargo.lock index 1afb9810e..f5b269f74 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -745,7 +745,7 @@ dependencies = [ [[package]] name = "stellar-xdr" -version = "27.0.0" +version = "28.0.0" dependencies = [ "arbitrary", "base64", diff --git a/Cargo.toml b/Cargo.toml index 1c07174be..c7307747a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ homepage = "https://github.com/stellar/rs-stellar-xdr" repository = "https://github.com/stellar/rs-stellar-xdr" authors = ["Stellar Development Foundation "] license = "Apache-2.0" -version = "27.0.0" +version = "28.0.0" edition = "2021" rust-version = "1.84.0" @@ -48,6 +48,7 @@ alloc = ["dep:hex", "dep:stellar-strkey", "escape-bytes/alloc", "dep:ethnum"] # Features from the XDR test_feature = [] cap_0083 = [] +cap_0084_muxed_contract = [] cap_0085_executable_ref = [] # Features available without any new dependencies. diff --git a/src/generated.rs b/src/generated.rs index 750fe02b1..bf52d63b1 100644 --- a/src/generated.rs +++ b/src/generated.rs @@ -4366,6 +4366,9 @@ pub use sc_address_type::*; mod muxed_ed25519_account; #[allow(unused_imports)] pub use muxed_ed25519_account::*; +mod muxed_contract; +#[allow(unused_imports)] +pub use muxed_contract::*; mod sc_address; #[allow(unused_imports)] pub use sc_address::*; diff --git a/src/generated/muxed_contract.rs b/src/generated/muxed_contract.rs new file mode 100644 index 000000000..9201397ba --- /dev/null +++ b/src/generated/muxed_contract.rs @@ -0,0 +1,58 @@ +#[allow(unused_imports, clippy::wildcard_imports)] +use super::*; + +/// MuxedContract is an XDR Struct defined as: +/// +/// ```text +/// struct MuxedContract +/// { +/// uint64 id; +/// ContractID contractId; +/// }; +/// ``` +/// +#[cfg(feature = "cap_0084_muxed_contract")] +#[cfg_attr(feature = "alloc", derive(Default))] +#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] +#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)] +#[cfg_attr(feature = "arbitrary", derive(Arbitrary))] +#[cfg_attr( + all(feature = "serde", feature = "alloc"), + serde_with::serde_as, + derive(serde::Serialize, serde::Deserialize), + serde(rename_all = "snake_case") +)] +#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] +pub struct MuxedContract { + #[cfg_attr( + all(feature = "serde", feature = "alloc"), + serde_as(as = "NumberOrString") + )] + pub id: u64, + pub contract_id: ContractId, +} + +#[cfg(feature = "cap_0084_muxed_contract")] +impl ReadXdr for MuxedContract { + #[cfg(feature = "std")] + fn read_xdr(r: &mut Limited) -> Result { + r.with_limited_depth(|r| { + Ok(Self { + id: u64::read_xdr(r)?, + contract_id: ContractId::read_xdr(r)?, + }) + }) + } +} + +#[cfg(feature = "cap_0084_muxed_contract")] +impl WriteXdr for MuxedContract { + #[cfg(feature = "std")] + fn write_xdr(&self, w: &mut Limited) -> Result<(), Error> { + w.with_limited_depth(|w| { + self.id.write_xdr(w)?; + self.contract_id.write_xdr(w)?; + Ok(()) + }) + } +} diff --git a/src/generated/sc_address.rs b/src/generated/sc_address.rs index b43d91129..f77a58a8f 100644 --- a/src/generated/sc_address.rs +++ b/src/generated/sc_address.rs @@ -16,6 +16,10 @@ use super::*; /// ClaimableBalanceID claimableBalanceId; /// case SC_ADDRESS_TYPE_LIQUIDITY_POOL: /// PoolID liquidityPoolId; +/// #ifdef CAP_0084_MUXED_CONTRACT +/// case SC_ADDRESS_TYPE_MUXED_CONTRACT: +/// MuxedContract muxedContract; +/// #endif /// }; /// ``` /// @@ -34,6 +38,8 @@ pub enum ScAddress { MuxedAccount(MuxedEd25519Account), ClaimableBalance(ClaimableBalanceId), LiquidityPool(PoolId), + #[cfg(feature = "cap_0084_muxed_contract")] + MuxedContract(MuxedContract), } #[cfg(feature = "alloc")] @@ -50,6 +56,8 @@ impl ScAddress { ScAddressType::MuxedAccount, ScAddressType::ClaimableBalance, ScAddressType::LiquidityPool, + #[cfg(feature = "cap_0084_muxed_contract")] + ScAddressType::MuxedContract, ]; pub const VARIANTS: [ScAddressType; Self::_VARIANTS.len()] = { let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()]; @@ -66,6 +74,8 @@ impl ScAddress { "MuxedAccount", "ClaimableBalance", "LiquidityPool", + #[cfg(feature = "cap_0084_muxed_contract")] + "MuxedContract", ]; pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = { let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()]; @@ -85,6 +95,8 @@ impl ScAddress { Self::MuxedAccount(_) => "MuxedAccount", Self::ClaimableBalance(_) => "ClaimableBalance", Self::LiquidityPool(_) => "LiquidityPool", + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(_) => "MuxedContract", } } @@ -97,6 +109,8 @@ impl ScAddress { Self::MuxedAccount(_) => ScAddressType::MuxedAccount, Self::ClaimableBalance(_) => ScAddressType::ClaimableBalance, Self::LiquidityPool(_) => ScAddressType::LiquidityPool, + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(_) => ScAddressType::MuxedContract, } } @@ -144,6 +158,8 @@ impl ReadXdr for ScAddress { Self::ClaimableBalance(ClaimableBalanceId::read_xdr(r)?) } ScAddressType::LiquidityPool => Self::LiquidityPool(PoolId::read_xdr(r)?), + #[cfg(feature = "cap_0084_muxed_contract")] + ScAddressType::MuxedContract => Self::MuxedContract(MuxedContract::read_xdr(r)?), #[allow(unreachable_patterns)] _ => return Err(Error::Invalid), }; @@ -164,6 +180,8 @@ impl WriteXdr for ScAddress { Self::MuxedAccount(v) => v.write_xdr(w)?, Self::ClaimableBalance(v) => v.write_xdr(w)?, Self::LiquidityPool(v) => v.write_xdr(w)?, + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(v) => v.write_xdr(w)?, }; Ok(()) }) diff --git a/src/generated/sc_address_type.rs b/src/generated/sc_address_type.rs index 033e8dbe7..761630ee4 100644 --- a/src/generated/sc_address_type.rs +++ b/src/generated/sc_address_type.rs @@ -11,6 +11,10 @@ use super::*; /// SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, /// SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, /// SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 +/// #ifdef CAP_0084_MUXED_CONTRACT +/// , +/// SC_ADDRESS_TYPE_MUXED_CONTRACT = 5 +/// #endif /// }; /// ``` /// @@ -32,6 +36,8 @@ pub enum ScAddressType { MuxedAccount = 2, ClaimableBalance = 3, LiquidityPool = 4, + #[cfg(feature = "cap_0084_muxed_contract")] + MuxedContract = 5, } impl ScAddressType { @@ -41,6 +47,8 @@ impl ScAddressType { ScAddressType::MuxedAccount, ScAddressType::ClaimableBalance, ScAddressType::LiquidityPool, + #[cfg(feature = "cap_0084_muxed_contract")] + ScAddressType::MuxedContract, ]; pub const VARIANTS: [ScAddressType; Self::_VARIANTS.len()] = { let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()]; @@ -57,6 +65,8 @@ impl ScAddressType { "MuxedAccount", "ClaimableBalance", "LiquidityPool", + #[cfg(feature = "cap_0084_muxed_contract")] + "MuxedContract", ]; pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = { let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()]; @@ -76,6 +86,8 @@ impl ScAddressType { Self::MuxedAccount => "MuxedAccount", Self::ClaimableBalance => "ClaimableBalance", Self::LiquidityPool => "LiquidityPool", + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract => "MuxedContract", } } @@ -116,6 +128,8 @@ impl TryFrom for ScAddressType { 2 => ScAddressType::MuxedAccount, 3 => ScAddressType::ClaimableBalance, 4 => ScAddressType::LiquidityPool, + #[cfg(feature = "cap_0084_muxed_contract")] + 5 => ScAddressType::MuxedContract, #[allow(unreachable_patterns)] _ => return Err(Error::Invalid), }; diff --git a/src/generated/type_enum.rs b/src/generated/type_enum.rs index 9853dc61d..6f30db648 100644 --- a/src/generated/type_enum.rs +++ b/src/generated/type_enum.rs @@ -90,6 +90,8 @@ pub enum TypeVariant { ContractExecutableType, ScAddressType, MuxedEd25519Account, + #[cfg(feature = "cap_0084_muxed_contract")] + MuxedContract, ScAddress, #[cfg(feature = "cap_0085_executable_ref")] ContractExecutableExternalRef, @@ -572,6 +574,8 @@ impl TypeVariant { TypeVariant::ContractExecutableType, TypeVariant::ScAddressType, TypeVariant::MuxedEd25519Account, + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract, TypeVariant::ScAddress, #[cfg(feature = "cap_0085_executable_ref")] TypeVariant::ContractExecutableExternalRef, @@ -1060,6 +1064,8 @@ impl TypeVariant { "ContractExecutableType", "ScAddressType", "MuxedEd25519Account", + #[cfg(feature = "cap_0084_muxed_contract")] + "MuxedContract", "ScAddress", #[cfg(feature = "cap_0085_executable_ref")] "ContractExecutableExternalRef", @@ -1554,6 +1560,8 @@ impl TypeVariant { Self::ContractExecutableType => "ContractExecutableType", Self::ScAddressType => "ScAddressType", Self::MuxedEd25519Account => "MuxedEd25519Account", + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract => "MuxedContract", Self::ScAddress => "ScAddress", #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef => "ContractExecutableExternalRef", @@ -2089,6 +2097,8 @@ impl TypeVariant { Self::ContractExecutableType => gen.into_root_schema_for::(), Self::ScAddressType => gen.into_root_schema_for::(), Self::MuxedEd25519Account => gen.into_root_schema_for::(), + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract => gen.into_root_schema_for::(), Self::ScAddress => gen.into_root_schema_for::(), #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef => { @@ -2797,6 +2807,8 @@ impl core::str::FromStr for TypeVariant { "ContractExecutableType" => Ok(Self::ContractExecutableType), "ScAddressType" => Ok(Self::ScAddressType), "MuxedEd25519Account" => Ok(Self::MuxedEd25519Account), + #[cfg(feature = "cap_0084_muxed_contract")] + "MuxedContract" => Ok(Self::MuxedContract), "ScAddress" => Ok(Self::ScAddress), #[cfg(feature = "cap_0085_executable_ref")] "ContractExecutableExternalRef" => Ok(Self::ContractExecutableExternalRef), @@ -3315,6 +3327,8 @@ pub enum Type { ContractExecutableType(Box), ScAddressType(Box), MuxedEd25519Account(Box), + #[cfg(feature = "cap_0084_muxed_contract")] + MuxedContract(Box), ScAddress(Box), #[cfg(feature = "cap_0085_executable_ref")] ContractExecutableExternalRef(Box), @@ -3799,6 +3813,8 @@ impl Type { TypeVariant::ContractExecutableType, TypeVariant::ScAddressType, TypeVariant::MuxedEd25519Account, + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract, TypeVariant::ScAddress, #[cfg(feature = "cap_0085_executable_ref")] TypeVariant::ContractExecutableExternalRef, @@ -4287,6 +4303,8 @@ impl Type { "ContractExecutableType", "ScAddressType", "MuxedEd25519Account", + #[cfg(feature = "cap_0084_muxed_contract")] + "MuxedContract", "ScAddress", #[cfg(feature = "cap_0085_executable_ref")] "ContractExecutableExternalRef", @@ -5039,6 +5057,10 @@ impl Type { MuxedEd25519Account::read_xdr(r)?, ))) }), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => r.with_limited_depth(|r| { + Ok(Self::MuxedContract(Box::new(MuxedContract::read_xdr(r)?))) + }), TypeVariant::ScAddress => { r.with_limited_depth(|r| Ok(Self::ScAddress(Box::new(ScAddress::read_xdr(r)?)))) } @@ -7174,6 +7196,11 @@ impl Type { ReadXdrIter::<_, MuxedEd25519Account>::new(&mut r.inner, r.limits.clone()) .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t)))), ), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => Box::new( + ReadXdrIter::<_, MuxedContract>::new(&mut r.inner, r.limits.clone()) + .map(|r| r.map(|t| Self::MuxedContract(Box::new(t)))), + ), TypeVariant::ScAddress => Box::new( ReadXdrIter::<_, ScAddress>::new(&mut r.inner, r.limits.clone()) .map(|r| r.map(|t| Self::ScAddress(Box::new(t)))), @@ -9269,6 +9296,11 @@ impl Type { ReadXdrIter::<_, Frame>::new(&mut r.inner, r.limits.clone()) .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t.0)))), ), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => Box::new( + ReadXdrIter::<_, Frame>::new(&mut r.inner, r.limits.clone()) + .map(|r| r.map(|t| Self::MuxedContract(Box::new(t.0)))), + ), TypeVariant::ScAddress => Box::new( ReadXdrIter::<_, Frame>::new(&mut r.inner, r.limits.clone()) .map(|r| r.map(|t| Self::ScAddress(Box::new(t.0)))), @@ -11592,6 +11624,11 @@ impl Type { ReadXdrIter::<_, MuxedEd25519Account>::new(dec, r.limits.clone()) .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t)))), ), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => Box::new( + ReadXdrIter::<_, MuxedContract>::new(dec, r.limits.clone()) + .map(|r| r.map(|t| Self::MuxedContract(Box::new(t)))), + ), TypeVariant::ScAddress => Box::new( ReadXdrIter::<_, ScAddress>::new(dec, r.limits.clone()) .map(|r| r.map(|t| Self::ScAddress(Box::new(t)))), @@ -13462,6 +13499,10 @@ impl Type { TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new( serde_json::from_reader(r)?, ))), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => { + Ok(Self::MuxedContract(Box::new(serde_json::from_reader(r)?))) + } TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new(serde_json::from_reader(r)?))), #[cfg(feature = "cap_0085_executable_ref")] TypeVariant::ContractExecutableExternalRef => Ok(Self::ContractExecutableExternalRef( @@ -14813,6 +14854,10 @@ impl Type { TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new( serde::de::Deserialize::deserialize(r)?, ))), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => Ok(Self::MuxedContract(Box::new( + serde::de::Deserialize::deserialize(r)?, + ))), TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new( serde::de::Deserialize::deserialize(r)?, ))), @@ -16502,6 +16547,12 @@ impl Type { }) .map(|t| Self::MuxedEd25519Account(Box::new(t))) .map_err(Error::Json), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => serde_ignored::deserialize(r, |path| { + ignored.borrow_mut().push(path.to_string()); + }) + .map(|t| Self::MuxedContract(Box::new(t))) + .map_err(Error::Json), TypeVariant::ScAddress => serde_ignored::deserialize(r, |path| { ignored.borrow_mut().push(path.to_string()); }) @@ -18757,6 +18808,10 @@ impl Type { TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new( MuxedEd25519Account::arbitrary(u)?, ))), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => { + Ok(Self::MuxedContract(Box::new(MuxedContract::arbitrary(u)?))) + } TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new(ScAddress::arbitrary(u)?))), #[cfg(feature = "cap_0085_executable_ref")] TypeVariant::ContractExecutableExternalRef => Ok(Self::ContractExecutableExternalRef( @@ -19992,6 +20047,8 @@ impl Type { TypeVariant::ContractExecutableType => Self::ContractExecutableType(Box::default()), TypeVariant::ScAddressType => Self::ScAddressType(Box::default()), TypeVariant::MuxedEd25519Account => Self::MuxedEd25519Account(Box::default()), + #[cfg(feature = "cap_0084_muxed_contract")] + TypeVariant::MuxedContract => Self::MuxedContract(Box::default()), TypeVariant::ScAddress => Self::ScAddress(Box::default()), #[cfg(feature = "cap_0085_executable_ref")] TypeVariant::ContractExecutableExternalRef => { @@ -20650,6 +20707,8 @@ impl Type { Self::ContractExecutableType(ref v) => v.as_ref(), Self::ScAddressType(ref v) => v.as_ref(), Self::MuxedEd25519Account(ref v) => v.as_ref(), + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(ref v) => v.as_ref(), Self::ScAddress(ref v) => v.as_ref(), #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef(ref v) => v.as_ref(), @@ -21140,6 +21199,8 @@ impl Type { Self::ContractExecutableType(_) => "ContractExecutableType", Self::ScAddressType(_) => "ScAddressType", Self::MuxedEd25519Account(_) => "MuxedEd25519Account", + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(_) => "MuxedContract", Self::ScAddress(_) => "ScAddress", #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef(_) => "ContractExecutableExternalRef", @@ -21666,6 +21727,8 @@ impl Type { Self::ContractExecutableType(_) => TypeVariant::ContractExecutableType, Self::ScAddressType(_) => TypeVariant::ScAddressType, Self::MuxedEd25519Account(_) => TypeVariant::MuxedEd25519Account, + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(_) => TypeVariant::MuxedContract, Self::ScAddress(_) => TypeVariant::ScAddress, #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef(_) => TypeVariant::ContractExecutableExternalRef, @@ -22230,6 +22293,8 @@ impl WriteXdr for Type { Self::ContractExecutableType(v) => v.write_xdr(w), Self::ScAddressType(v) => v.write_xdr(w), Self::MuxedEd25519Account(v) => v.write_xdr(w), + #[cfg(feature = "cap_0084_muxed_contract")] + Self::MuxedContract(v) => v.write_xdr(w), Self::ScAddress(v) => v.write_xdr(w), #[cfg(feature = "cap_0085_executable_ref")] Self::ContractExecutableExternalRef(v) => v.write_xdr(w), diff --git a/src/lib.rs b/src/lib.rs index f71192b82..f7a8ac7d3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -121,6 +121,8 @@ pub const VERSION: Version = Version { "test_feature", #[cfg(feature = "cap_0083")] "cap_0083", + #[cfg(feature = "cap_0084_muxed_contract")] + "cap_0084_muxed_contract", #[cfg(feature = "cap_0085_executable_ref")] "cap_0085_executable_ref", ], diff --git a/src/str.rs b/src/str.rs index 26cff8bd5..0efddfda7 100644 --- a/src/str.rs +++ b/src/str.rs @@ -361,6 +361,11 @@ impl core::fmt::Display for ScAddress { } ScAddress::ClaimableBalance(claimable_balance_id) => claimable_balance_id.fmt(f), ScAddress::LiquidityPool(pool_id) => pool_id.fmt(f), + // Muxed contract addresses (CAP-0084) have no strkey encoding yet + // (stellar-strkey has no variant for them), so there is no string + // representation to produce. Flagged for human review. + #[cfg(feature = "cap_0084_muxed_contract")] + ScAddress::MuxedContract(_) => Err(core::fmt::Error), } } } diff --git a/xdr b/xdr index 8d1c926a5..13fc2c35b 160000 --- a/xdr +++ b/xdr @@ -1 +1 @@ -Subproject commit 8d1c926a5e5d9167d0fc7327b5dad06dc1ec4fd7 +Subproject commit 13fc2c35b0a029f46feb0cd745caa1da441a2464 diff --git a/xdr-definitions-json/xdr.json b/xdr-definitions-json/xdr.json index dc6a85054..70976edf1 100644 --- a/xdr-definitions-json/xdr.json +++ b/xdr-definitions-json/xdr.json @@ -3467,7 +3467,7 @@ { "kind": "enum", "name": "SCAddressType", - "source": "enum SCAddressType\n{\n SC_ADDRESS_TYPE_ACCOUNT = 0,\n SC_ADDRESS_TYPE_CONTRACT = 1,\n SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2,\n SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3,\n SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4\n};", + "source": "enum SCAddressType\n{\n SC_ADDRESS_TYPE_ACCOUNT = 0,\n SC_ADDRESS_TYPE_CONTRACT = 1,\n SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2,\n SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3,\n SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4\n#ifdef CAP_0084_MUXED_CONTRACT\n ,\n SC_ADDRESS_TYPE_MUXED_CONTRACT = 5\n#endif\n};", "file_index": 5, "member_prefix": "SC_ADDRESS_TYPE_", "members": [ @@ -3520,7 +3520,7 @@ "kind": "union", "name": "SCAddress", "fixed_size": null, - "source": "union SCAddress switch (SCAddressType type)\n{\ncase SC_ADDRESS_TYPE_ACCOUNT:\n AccountID accountId;\ncase SC_ADDRESS_TYPE_CONTRACT:\n ContractID contractId;\ncase SC_ADDRESS_TYPE_MUXED_ACCOUNT:\n MuxedEd25519Account muxedAccount;\ncase SC_ADDRESS_TYPE_CLAIMABLE_BALANCE:\n ClaimableBalanceID claimableBalanceId;\ncase SC_ADDRESS_TYPE_LIQUIDITY_POOL:\n PoolID liquidityPoolId;\n};", + "source": "union SCAddress switch (SCAddressType type)\n{\ncase SC_ADDRESS_TYPE_ACCOUNT:\n AccountID accountId;\ncase SC_ADDRESS_TYPE_CONTRACT:\n ContractID contractId;\ncase SC_ADDRESS_TYPE_MUXED_ACCOUNT:\n MuxedEd25519Account muxedAccount;\ncase SC_ADDRESS_TYPE_CLAIMABLE_BALANCE:\n ClaimableBalanceID claimableBalanceId;\ncase SC_ADDRESS_TYPE_LIQUIDITY_POOL:\n PoolID liquidityPoolId;\n#ifdef CAP_0084_MUXED_CONTRACT\ncase SC_ADDRESS_TYPE_MUXED_CONTRACT:\n MuxedContract muxedContract;\n#endif\n};", "file_index": 5, "discriminant": { "name": "type", diff --git a/xdr-json/ScAddressType.json b/xdr-json/ScAddressType.json index 1dad7bd41..79ffd709d 100644 --- a/xdr-json/ScAddressType.json +++ b/xdr-json/ScAddressType.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2019-09/schema", "title": "ScAddressType", - "description": "ScAddressType is an XDR Enum defined as:\n\n```text enum SCAddressType { SC_ADDRESS_TYPE_ACCOUNT = 0, SC_ADDRESS_TYPE_CONTRACT = 1, SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 }; ```", + "description": "ScAddressType is an XDR Enum defined as:\n\n```text enum SCAddressType { SC_ADDRESS_TYPE_ACCOUNT = 0, SC_ADDRESS_TYPE_CONTRACT = 1, SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2, SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3, SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4 #ifdef CAP_0084_MUXED_CONTRACT , SC_ADDRESS_TYPE_MUXED_CONTRACT = 5 #endif }; ```", "type": "string", "enum": [ "account", diff --git a/xdr-version b/xdr-version index d37cb84e0..44150dfa4 100644 --- a/xdr-version +++ b/xdr-version @@ -1 +1 @@ -8d1c926a5e5d9167d0fc7327b5dad06dc1ec4fd7 \ No newline at end of file +13fc2c35b0a029f46feb0cd745caa1da441a2464 \ No newline at end of file