From 2cc584a29082a54a896369936342060362e95e81 Mon Sep 17 00:00:00 2001 From: Prajwal U Date: Thu, 29 Oct 2026 14:06:26 +0530 Subject: [PATCH] feat(statics): onboard plume, arc, and xrp tokens for CSHLD-2081 ## Problem Client-requested tokens from CSHLD-2081 (plume, arc, and xrp subset) were not supported: the three WisdomTree funds on Plume mainnet, ZAR Universal on ARC, and ZAR Universal on XRP had no statics definitions, so wallets, pricing, and UI could not recognize them. ## Goal Make the five tokens available as ungated tokens by adding statics definitions. ## Fix - Add erc20Token definitions for plume:flttx, plume:wtgxx, and plume:wtsix on Networks.main.plume (18 decimals, contract addresses verified on-chain via explorer and eth_call), with the same Singapore-excluded features as the existing WisdomTree entries. - Add arcusdc:zaru (18 decimals) and xrp:zaru (issuer rwu15x3fKT6M8vADi6vrrR5nUXimkhagQf, currency code 5A415255 zero-padded to 40 hex digits, 15 decimals). - Add SUPPORTS_ERC20 to the plume and tplume base coins; without it the new plume tokens would not be recognized as ERC-20 supported (same gap previously fixed for arcusdc/tarcusdc). ## Testing Statics tsc build passes; the full statics unit suite passes; the built package resolves all five tokens with the expected decimals, contracts, and networks, and reports SUPPORTS_ERC20 for plume/tplume. Ticket: CSHLD-2081 Co-Authored-By: Claude Sonnet 4.6 --- modules/statics/src/allCoinsAndTokens.ts | 54 ++++++++++++++++++++++++ modules/statics/src/base.ts | 7 +++ 2 files changed, 61 insertions(+) diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index 3ef3a699d40..4352ce2fbad 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2538,6 +2538,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.SUPPORTS_ERC20, ] ), account( @@ -2576,6 +2577,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.SUPPORTS_ERC20, ] ), account( @@ -5374,6 +5376,15 @@ export const allCoinsAndTokens = [ UnderlyingAsset['arcusdc:usdau'], Networks.main.arcusdc ), + erc20Token( + '152f7e3f-53ac-4a59-b948-3bc1932c9443', + 'arcusdc:zaru', + 'ZAR Universal', + 18, + '0xe205b4e7ac03e3f7b2060c3edf2171aa7126c0d5', + UnderlyingAsset['arcusdc:zaru'], + Networks.main.arcusdc + ), // Scroll mainnet tokens erc20Token( @@ -5786,6 +5797,38 @@ export const allCoinsAndTokens = [ Networks.test.morpheth ), + // Plume mainnet tokens + erc20Token( + '49cdbef2-ac4c-41da-be11-180fefbd3c5f', + 'plume:flttx', + 'WisdomTree Floating Rate Treasury Digital Fund', + 18, + '0x3a446721a8818c8dde3eb9bfa5bb3cd9e8532109', + UnderlyingAsset['plume:flttx'], + Networks.main.plume, + AccountCoin.DEFAULT_FEATURES_EXCLUDE_SINGAPORE + ), + erc20Token( + 'c39909c2-575a-46a4-8119-6ab3b7a2ac3d', + 'plume:wtgxx', + 'WisdomTree Government Money Market Digital Fund', + 18, + '0xcf7a8813bd3bdaf70a9f46d310ce1ee8d80a4f5a', + UnderlyingAsset['plume:wtgxx'], + Networks.main.plume, + AccountCoin.DEFAULT_FEATURES_EXCLUDE_SINGAPORE + ), + erc20Token( + '0e4f2f7b-36ad-4896-85ce-2931ae8fb491', + 'plume:wtsix', + 'WisdomTree Short-Duration Income Digital Fund', + 18, + '0xdb6c0e250383bce1659df87621d8a85fcb2e91e1', + UnderlyingAsset['plume:wtsix'], + Networks.main.plume, + AccountCoin.DEFAULT_FEATURES_EXCLUDE_SINGAPORE + ), + // Plume testnet tokens erc20Token( '67a140e3-c73e-4984-af13-7b1555ee3ff3', @@ -8444,6 +8487,17 @@ export const allCoinsAndTokens = [ 'circle.com', UnderlyingAsset['xrp:usdc'] ), + xrpToken( + '232d2dee-399b-42b8-978c-aab3bb989b8f', + 'xrp:zaru', + 'ZAR Universal', + 15, + 'rwu15x3fKT6M8vADi6vrrR5nUXimkhagQf', + '5A41525500000000000000000000000000000000', + 'rwu15x3fKT6M8vADi6vrrR5nUXimkhagQf::5A41525500000000000000000000000000000000', + 'zaru.network', + UnderlyingAsset['xrp:zaru'] + ), xrpToken( '5067c3e5-51f2-4209-a842-d4450436245a', 'xrp:eurcv', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index ee2d41cad26..e5de5eb6e5a 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -3966,6 +3966,11 @@ export enum UnderlyingAsset { // MegaEth testnet tokens 'tmegaeth:tmt' = 'tmegaeth:tmt', + // Plume mainnet tokens + 'plume:flttx' = 'plume:flttx', + 'plume:wtgxx' = 'plume:wtgxx', + 'plume:wtsix' = 'plume:wtsix', + // Plume testnet tokens 'tplume:usdc' = 'tplume:usdc', @@ -4357,6 +4362,7 @@ export enum UnderlyingAsset { 'xrp:eurcv' = 'xrp:eurcv', 'xrp:aau' = 'xrp:aau', 'xrp:fiuaxrp' = 'xrp:fiuaxrp', + 'xrp:zaru' = 'xrp:zaru', // XRP MPT mainnet tokens 'xrp:kld' = 'xrp:kld', 'xrp:key' = 'xrp:key', @@ -4772,6 +4778,7 @@ export enum UnderlyingAsset { 'arcusdc:eurc' = 'arcusdc:eurc', 'arcusdc:usyc' = 'arcusdc:usyc', 'arcusdc:usdau' = 'arcusdc:usdau', // CECHO-2426 + 'arcusdc:zaru' = 'arcusdc:zaru', // Scroll mainnet tokens 'scrolleth:scr' = 'scrolleth:scr',