@veridex/sdk 1.0.0-beta.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/LICENSE +170 -21
  2. package/README.md +574 -117
  3. package/dist/EVMClient-DtqvdfUP.d.mts +376 -0
  4. package/dist/auth/prepareAuth.d.mts +25 -0
  5. package/dist/auth/prepareAuth.js +2406 -0
  6. package/dist/auth/prepareAuth.js.map +1 -0
  7. package/dist/auth/prepareAuth.mjs +151 -0
  8. package/dist/auth/prepareAuth.mjs.map +1 -0
  9. package/dist/chains/aptos/index.d.mts +6 -5
  10. package/dist/chains/aptos/index.js +66 -39
  11. package/dist/chains/aptos/index.js.map +1 -1
  12. package/dist/chains/aptos/index.mjs +5 -547
  13. package/dist/chains/aptos/index.mjs.map +1 -1
  14. package/dist/chains/avalanche/index.d.mts +137 -0
  15. package/dist/chains/avalanche/index.js +1555 -0
  16. package/dist/chains/avalanche/index.js.map +1 -0
  17. package/dist/chains/avalanche/index.mjs +10 -0
  18. package/dist/chains/avalanche/index.mjs.map +1 -0
  19. package/dist/chains/evm/index.d.mts +5 -3
  20. package/dist/chains/evm/index.js +165 -3
  21. package/dist/chains/evm/index.js.map +1 -1
  22. package/dist/chains/evm/index.mjs +8 -1200
  23. package/dist/chains/evm/index.mjs.map +1 -1
  24. package/dist/chains/solana/index.d.mts +1 -1
  25. package/dist/chains/solana/index.js.map +1 -1
  26. package/dist/chains/solana/index.mjs +4 -486
  27. package/dist/chains/solana/index.mjs.map +1 -1
  28. package/dist/chains/stacks/index.d.mts +559 -0
  29. package/dist/chains/stacks/index.js +1207 -0
  30. package/dist/chains/stacks/index.js.map +1 -0
  31. package/dist/chains/stacks/index.mjs +71 -0
  32. package/dist/chains/stacks/index.mjs.map +1 -0
  33. package/dist/chains/starknet/index.d.mts +3 -3
  34. package/dist/chains/starknet/index.js.map +1 -1
  35. package/dist/chains/starknet/index.mjs +5 -503
  36. package/dist/chains/starknet/index.mjs.map +1 -1
  37. package/dist/chains/sui/index.d.mts +2 -2
  38. package/dist/chains/sui/index.js.map +1 -1
  39. package/dist/chains/sui/index.mjs +5 -529
  40. package/dist/chains/sui/index.mjs.map +1 -1
  41. package/dist/chunk-5T6KPH7A.mjs +1082 -0
  42. package/dist/chunk-5T6KPH7A.mjs.map +1 -0
  43. package/dist/chunk-72ZA3OYQ.mjs +20 -0
  44. package/dist/chunk-72ZA3OYQ.mjs.map +1 -0
  45. package/dist/chunk-EFIURACP.mjs +438 -0
  46. package/dist/chunk-EFIURACP.mjs.map +1 -0
  47. package/dist/chunk-F3YAGZSW.mjs +269 -0
  48. package/dist/chunk-F3YAGZSW.mjs.map +1 -0
  49. package/dist/chunk-GWJRKDSA.mjs +549 -0
  50. package/dist/chunk-GWJRKDSA.mjs.map +1 -0
  51. package/dist/chunk-M3MM4YMF.mjs +417 -0
  52. package/dist/chunk-M3MM4YMF.mjs.map +1 -0
  53. package/dist/chunk-N4A2RMUN.mjs +216 -0
  54. package/dist/chunk-N4A2RMUN.mjs.map +1 -0
  55. package/dist/chunk-NUWSMJFJ.mjs +179 -0
  56. package/dist/chunk-NUWSMJFJ.mjs.map +1 -0
  57. package/dist/chunk-OVMMTL6H.mjs +330 -0
  58. package/dist/chunk-OVMMTL6H.mjs.map +1 -0
  59. package/dist/chunk-PDHZ5X5O.mjs +565 -0
  60. package/dist/chunk-PDHZ5X5O.mjs.map +1 -0
  61. package/dist/chunk-PRHNGA4G.mjs +464 -0
  62. package/dist/chunk-PRHNGA4G.mjs.map +1 -0
  63. package/dist/chunk-Q5O3M5LP.mjs +422 -0
  64. package/dist/chunk-Q5O3M5LP.mjs.map +1 -0
  65. package/dist/chunk-QDO6NQ7P.mjs +840 -0
  66. package/dist/chunk-QDO6NQ7P.mjs.map +1 -0
  67. package/dist/chunk-QT4ZZ4GM.mjs +509 -0
  68. package/dist/chunk-QT4ZZ4GM.mjs.map +1 -0
  69. package/dist/chunk-USDA5JTN.mjs +1249 -0
  70. package/dist/chunk-USDA5JTN.mjs.map +1 -0
  71. package/dist/chunk-V636MIV3.mjs +52 -0
  72. package/dist/chunk-V636MIV3.mjs.map +1 -0
  73. package/dist/chunk-X7BZMSPQ.mjs +407 -0
  74. package/dist/chunk-X7BZMSPQ.mjs.map +1 -0
  75. package/dist/chunk-YCUJZ6Z7.mjs +829 -0
  76. package/dist/chunk-YCUJZ6Z7.mjs.map +1 -0
  77. package/dist/constants.d.mts +1 -1
  78. package/dist/constants.js +26 -12
  79. package/dist/constants.js.map +1 -1
  80. package/dist/constants.mjs +16 -375
  81. package/dist/constants.mjs.map +1 -1
  82. package/dist/index-DDalBhAm.d.mts +243 -0
  83. package/dist/index.d.mts +2508 -556
  84. package/dist/index.js +14576 -9628
  85. package/dist/index.js.map +1 -1
  86. package/dist/index.mjs +4108 -7840
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/passkey.d.mts +182 -0
  89. package/dist/passkey.js +914 -0
  90. package/dist/passkey.js.map +1 -0
  91. package/dist/passkey.mjs +15 -0
  92. package/dist/passkey.mjs.map +1 -0
  93. package/dist/payload.js.map +1 -1
  94. package/dist/payload.mjs +25 -244
  95. package/dist/payload.mjs.map +1 -1
  96. package/dist/portfolio-V347KZOL.mjs +13 -0
  97. package/dist/portfolio-V347KZOL.mjs.map +1 -0
  98. package/dist/queries/index.js +145 -12
  99. package/dist/queries/index.js.map +1 -1
  100. package/dist/queries/index.mjs +14 -1496
  101. package/dist/queries/index.mjs.map +1 -1
  102. package/dist/{types-FJL7j6gQ.d.ts → types-B7V5VNbO.d.mts} +6 -2
  103. package/dist/{types-ChIsqCiw.d.mts → types-DP2CQT8p.d.mts} +12 -1
  104. package/dist/types.d.mts +16 -0
  105. package/dist/types.js.map +1 -1
  106. package/dist/utils.js +25 -11
  107. package/dist/utils.js.map +1 -1
  108. package/dist/utils.mjs +19 -371
  109. package/dist/utils.mjs.map +1 -1
  110. package/dist/wormhole.js.map +1 -1
  111. package/dist/wormhole.mjs +25 -397
  112. package/dist/wormhole.mjs.map +1 -1
  113. package/package.json +28 -3
  114. package/scripts/patch-noble-curves.js +78 -0
  115. package/dist/chains/aptos/index.d.ts +0 -145
  116. package/dist/chains/evm/index.d.ts +0 -5
  117. package/dist/chains/solana/index.d.ts +0 -116
  118. package/dist/chains/starknet/index.d.ts +0 -172
  119. package/dist/chains/sui/index.d.ts +0 -182
  120. package/dist/constants.d.ts +0 -150
  121. package/dist/index-0NXfbk0z.d.ts +0 -637
  122. package/dist/index-D0dLVjTA.d.mts +0 -637
  123. package/dist/index.d.ts +0 -3123
  124. package/dist/payload.d.ts +0 -125
  125. package/dist/queries/index.d.ts +0 -148
  126. package/dist/types-ChIsqCiw.d.ts +0 -565
  127. package/dist/types-FJL7j6gQ.d.mts +0 -172
  128. package/dist/types.d.ts +0 -407
  129. package/dist/utils.d.ts +0 -81
  130. package/dist/wormhole.d.ts +0 -167
@@ -0,0 +1,840 @@
1
+ // src/featureFlags.ts
2
+ var DEFAULT_FLAGS = {
3
+ multiHub: false,
4
+ primaryHub: "base"
5
+ };
6
+ var _flags = { ...DEFAULT_FLAGS };
7
+ function getFeatureFlags() {
8
+ return { ..._flags };
9
+ }
10
+ function setFeatureFlags(flags) {
11
+ _flags = { ..._flags, ...flags };
12
+ }
13
+ function resetFeatureFlags() {
14
+ _flags = { ...DEFAULT_FLAGS };
15
+ }
16
+ function isMultiHubEnabled() {
17
+ return _flags.multiHub;
18
+ }
19
+ function getEffectivePrimaryHub() {
20
+ if (!_flags.multiHub) {
21
+ return "base";
22
+ }
23
+ return _flags.primaryHub;
24
+ }
25
+
26
+ // src/presets.ts
27
+ var CHAIN_NAMES = {
28
+ // EVM L2s (Hub-capable)
29
+ BASE: "base",
30
+ OPTIMISM: "optimism",
31
+ ARBITRUM: "arbitrum",
32
+ SCROLL: "scroll",
33
+ BLAST: "blast",
34
+ MANTLE: "mantle",
35
+ // EVM L1s
36
+ ETHEREUM: "ethereum",
37
+ POLYGON: "polygon",
38
+ BSC: "bsc",
39
+ AVALANCHE: "avalanche",
40
+ FANTOM: "fantom",
41
+ CELO: "celo",
42
+ MOONBEAM: "moonbeam",
43
+ // EVM L1s (High Performance)
44
+ MONAD: "monad",
45
+ // Non-EVM
46
+ SOLANA: "solana",
47
+ APTOS: "aptos",
48
+ SUI: "sui",
49
+ STARKNET: "starknet",
50
+ STACKS: "stacks",
51
+ NEAR: "near",
52
+ SEI: "sei"
53
+ };
54
+ var CHAIN_PRESETS = {
55
+ // ────────────────────────────────────────────────────────────────────────
56
+ // BASE - Primary Hub Chain
57
+ // ────────────────────────────────────────────────────────────────────────
58
+ base: {
59
+ displayName: "Base",
60
+ type: "evm",
61
+ canBeHub: true,
62
+ testnet: {
63
+ name: "Base Sepolia",
64
+ chainId: 84532,
65
+ wormholeChainId: 10004,
66
+ rpcUrl: "https://sepolia.base.org",
67
+ explorerUrl: "https://sepolia.basescan.org",
68
+ isEvm: true,
69
+ contracts: {
70
+ hub: "0x23a39c294891703146c3607e1FEEB5Fe78F7F28d",
71
+ vaultFactory: "0x31e8dc9428575334739754Ab2bdB0E8b9Dc707FD",
72
+ vaultImplementation: "0xD65E996CD6d5B01689dc54ad30B51f1D88a100f5",
73
+ wormholeCoreBridge: "0x79A1027a6A159502049F10906D333EC57E95F083",
74
+ tokenBridge: "0x86F55A04690fd7815A3D802bD587e83eA888B239"
75
+ }
76
+ },
77
+ mainnet: {
78
+ name: "Base",
79
+ chainId: 8453,
80
+ wormholeChainId: 30,
81
+ rpcUrl: "https://mainnet.base.org",
82
+ explorerUrl: "https://basescan.org",
83
+ isEvm: true,
84
+ contracts: {
85
+ // TODO: Deploy mainnet contracts
86
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
87
+ tokenBridge: "0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627"
88
+ }
89
+ }
90
+ },
91
+ // ────────────────────────────────────────────────────────────────────────
92
+ // OPTIMISM - Secondary Hub / Spoke
93
+ // ────────────────────────────────────────────────────────────────────────
94
+ optimism: {
95
+ displayName: "Optimism",
96
+ type: "evm",
97
+ canBeHub: true,
98
+ testnet: {
99
+ name: "Optimism Sepolia",
100
+ chainId: 11155420,
101
+ wormholeChainId: 10005,
102
+ rpcUrl: "https://sepolia.optimism.io",
103
+ explorerUrl: "https://sepolia-optimism.etherscan.io",
104
+ isEvm: true,
105
+ contracts: {
106
+ vaultFactory: "0x347feeaBB5655a7a80b56D8D554DA30BE6c28225",
107
+ vaultImplementation: "0x26C4FD8fC66150ef5964562F7A69271fB0cd02A4",
108
+ wormholeCoreBridge: "0x31377888146f3253211EFEf5c676D41ECe7D58Fe",
109
+ tokenBridge: "0x99737Ec4B815d816c49A385943baf0380e75c0Ac"
110
+ }
111
+ },
112
+ mainnet: {
113
+ name: "Optimism",
114
+ chainId: 10,
115
+ wormholeChainId: 24,
116
+ rpcUrl: "https://mainnet.optimism.io",
117
+ explorerUrl: "https://optimistic.etherscan.io",
118
+ isEvm: true,
119
+ contracts: {
120
+ wormholeCoreBridge: "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722",
121
+ tokenBridge: "0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b"
122
+ }
123
+ }
124
+ },
125
+ // ────────────────────────────────────────────────────────────────────────
126
+ // ARBITRUM
127
+ // ────────────────────────────────────────────────────────────────────────
128
+ arbitrum: {
129
+ displayName: "Arbitrum",
130
+ type: "evm",
131
+ canBeHub: true,
132
+ testnet: {
133
+ name: "Arbitrum Sepolia",
134
+ chainId: 421614,
135
+ wormholeChainId: 10003,
136
+ rpcUrl: "https://sepolia-rollup.arbitrum.io/rpc",
137
+ explorerUrl: "https://sepolia.arbiscan.io",
138
+ isEvm: true,
139
+ contracts: {
140
+ vaultFactory: "0x708eEE22621A64CDF51d98d3e8D97902D7dF52dD",
141
+ vaultImplementation: "0x9f74Dc14A98E59df7AEC5571a2B9E329153dF5Cd",
142
+ wormholeCoreBridge: "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35",
143
+ tokenBridge: "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e"
144
+ }
145
+ },
146
+ mainnet: {
147
+ name: "Arbitrum",
148
+ chainId: 42161,
149
+ wormholeChainId: 23,
150
+ rpcUrl: "https://arb1.arbitrum.io/rpc",
151
+ explorerUrl: "https://arbiscan.io",
152
+ isEvm: true,
153
+ contracts: {
154
+ wormholeCoreBridge: "0xa5f208e072434bC67592E4C49C1B991BA79BCA46",
155
+ tokenBridge: "0x0b2402144Bb366A632D14B83F244D2e0e21bD39c"
156
+ }
157
+ }
158
+ },
159
+ // ────────────────────────────────────────────────────────────────────────
160
+ // ETHEREUM
161
+ // ────────────────────────────────────────────────────────────────────────
162
+ ethereum: {
163
+ displayName: "Ethereum",
164
+ type: "evm",
165
+ canBeHub: false,
166
+ testnet: {
167
+ name: "Sepolia",
168
+ chainId: 11155111,
169
+ wormholeChainId: 10002,
170
+ rpcUrl: "https://ethereum-sepolia-rpc.publicnode.com",
171
+ explorerUrl: "https://sepolia.etherscan.io",
172
+ isEvm: true,
173
+ contracts: {
174
+ vaultFactory: "0x52a6dc19C11b3B53B434Fc7f6D31F8b62ed18F0a",
175
+ vaultImplementation: "0xfab72dd1fd3AD79f738B49506f32251B60c95f01",
176
+ wormholeCoreBridge: "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78",
177
+ tokenBridge: "0xDB5492265f6038831E89f495670FF909aDe94bd9"
178
+ }
179
+ },
180
+ mainnet: {
181
+ name: "Ethereum",
182
+ chainId: 1,
183
+ wormholeChainId: 2,
184
+ rpcUrl: "https://eth.llamarpc.com",
185
+ explorerUrl: "https://etherscan.io",
186
+ isEvm: true,
187
+ contracts: {
188
+ wormholeCoreBridge: "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
189
+ tokenBridge: "0x3ee18B2214AFF97000D974cf647E7C347E8fa585"
190
+ }
191
+ }
192
+ },
193
+ // ────────────────────────────────────────────────────────────────────────
194
+ // POLYGON
195
+ // ────────────────────────────────────────────────────────────────────────
196
+ polygon: {
197
+ displayName: "Polygon",
198
+ type: "evm",
199
+ canBeHub: false,
200
+ testnet: {
201
+ name: "Polygon Amoy",
202
+ chainId: 80002,
203
+ wormholeChainId: 10007,
204
+ rpcUrl: "https://rpc-amoy.polygon.technology",
205
+ explorerUrl: "https://amoy.polygonscan.com",
206
+ isEvm: true,
207
+ contracts: {
208
+ wormholeCoreBridge: "0x0CBE91CF822c73C2315FB05100C2F714765d5c20",
209
+ tokenBridge: "0x0290FB167208Af455bB137780163b7B7a9a10C16"
210
+ }
211
+ },
212
+ mainnet: {
213
+ name: "Polygon",
214
+ chainId: 137,
215
+ wormholeChainId: 5,
216
+ rpcUrl: "https://polygon-rpc.com",
217
+ explorerUrl: "https://polygonscan.com",
218
+ isEvm: true,
219
+ contracts: {
220
+ wormholeCoreBridge: "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7",
221
+ tokenBridge: "0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE"
222
+ }
223
+ }
224
+ },
225
+ // ────────────────────────────────────────────────────────────────────────
226
+ // BSC
227
+ // ────────────────────────────────────────────────────────────────────────
228
+ bsc: {
229
+ displayName: "BNB Chain",
230
+ type: "evm",
231
+ canBeHub: false,
232
+ testnet: {
233
+ name: "BSC Testnet",
234
+ chainId: 97,
235
+ wormholeChainId: 4,
236
+ rpcUrl: "https://data-seed-prebsc-1-s1.binance.org:8545",
237
+ explorerUrl: "https://testnet.bscscan.com",
238
+ isEvm: true,
239
+ contracts: {
240
+ wormholeCoreBridge: "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D",
241
+ tokenBridge: "0x9dcF9D205C9De35334D646BeE44b2D2859712A09"
242
+ }
243
+ },
244
+ mainnet: {
245
+ name: "BNB Chain",
246
+ chainId: 56,
247
+ wormholeChainId: 4,
248
+ rpcUrl: "https://bsc-dataseed.binance.org",
249
+ explorerUrl: "https://bscscan.com",
250
+ isEvm: true,
251
+ contracts: {
252
+ wormholeCoreBridge: "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
253
+ tokenBridge: "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7"
254
+ }
255
+ }
256
+ },
257
+ // ────────────────────────────────────────────────────────────────────────
258
+ // AVALANCHE — ACP-204 Native P-256 + ICM Teleporter + Hub-Capable
259
+ // ────────────────────────────────────────────────────────────────────────
260
+ avalanche: {
261
+ displayName: "Avalanche",
262
+ type: "evm",
263
+ canBeHub: true,
264
+ // ACP-204 provides native P-256 at 0x0100 (6,900 gas)
265
+ testnet: {
266
+ name: "Avalanche Fuji",
267
+ chainId: 43113,
268
+ wormholeChainId: 6,
269
+ rpcUrl: "https://api.avax-test.network/ext/bc/C/rpc",
270
+ explorerUrl: "https://testnet.snowtrace.io",
271
+ isEvm: true,
272
+ contracts: {
273
+ // Veridex Hub (deployed via deploy-avalanche.ts)
274
+ hub: "",
275
+ // No Hub on Fuji — Hub is on Base Sepolia
276
+ vaultFactory: "0x9e9716442e908A9b61F11432cC38024DD390cd2a",
277
+ vaultImplementation: "0xE0b9919ffDf3415355Db369C8FfA5Dd4e000052c",
278
+ // Wormhole bridges (canonical Fuji addresses)
279
+ wormholeCoreBridge: "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C",
280
+ tokenBridge: "0x61E44E506Ca5659E6c0bba9b678586fA2d729756",
281
+ // Avalanche-specific: ACP-204 P-256 verifier wrapper
282
+ p256Verifier: "0xB5d29EA1E2e90A24D6506E2a6a269506a12974CC",
283
+ // Avalanche-specific: ICM Spoke for cross-L1 session bridging
284
+ icmSpoke: "0x9fCFC608086539A69839EfA9628884dB75ac07D0",
285
+ // Chainlink price feeds (Fuji testnet)
286
+ chainlinkAvaxUsd: "0x5498BB86BC934c8D34FDA08E81D444153d0D06aD",
287
+ chainlinkUsdcUsd: "0x7898AcCC83587C3C55116c5230C17a6Cd9C71bad",
288
+ chainlinkUsdtUsd: "0x7898AcCC83587C3C55116c5230C17a6Cd9C71bad"
289
+ },
290
+ hubChainId: 10004
291
+ // Base Sepolia (primary Hub)
292
+ },
293
+ mainnet: {
294
+ name: "Avalanche",
295
+ chainId: 43114,
296
+ wormholeChainId: 6,
297
+ rpcUrl: "https://api.avax.network/ext/bc/C/rpc",
298
+ explorerUrl: "https://snowtrace.io",
299
+ isEvm: true,
300
+ contracts: {
301
+ wormholeCoreBridge: "0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c",
302
+ tokenBridge: "0x0e082F06FF657D94310cB8cE8B0D9a04541d8052",
303
+ // Chainlink price feeds (Avalanche mainnet)
304
+ chainlinkAvaxUsd: "0x0A77230d17318075983913bC2145DB16C7366156",
305
+ chainlinkUsdcUsd: "0xF096872672F44d6EBA71458D74fe67F9a77a23B9",
306
+ chainlinkUsdtUsd: "0xEBE676ee90Fe1112671f19b6B7459bC678B67e8a"
307
+ }
308
+ }
309
+ },
310
+ // ────────────────────────────────────────────────────────────────────────
311
+ // SCROLL
312
+ // ────────────────────────────────────────────────────────────────────────
313
+ scroll: {
314
+ displayName: "Scroll",
315
+ type: "evm",
316
+ canBeHub: false,
317
+ testnet: {
318
+ name: "Scroll Sepolia",
319
+ chainId: 534351,
320
+ wormholeChainId: 34,
321
+ rpcUrl: "https://sepolia-rpc.scroll.io",
322
+ explorerUrl: "https://sepolia.scrollscan.com",
323
+ isEvm: true,
324
+ contracts: {
325
+ wormholeCoreBridge: "0x055F47F1250012C6B20c436570a76e52c17Af2D5",
326
+ tokenBridge: "0x22427d90B7dA3fA4642F7025A854c7254E4e45BF"
327
+ }
328
+ },
329
+ mainnet: {
330
+ name: "Scroll",
331
+ chainId: 534352,
332
+ wormholeChainId: 34,
333
+ rpcUrl: "https://rpc.scroll.io",
334
+ explorerUrl: "https://scrollscan.com",
335
+ isEvm: true,
336
+ contracts: {
337
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
338
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
339
+ }
340
+ }
341
+ },
342
+ // ────────────────────────────────────────────────────────────────────────
343
+ // BLAST
344
+ // ────────────────────────────────────────────────────────────────────────
345
+ blast: {
346
+ displayName: "Blast",
347
+ type: "evm",
348
+ canBeHub: false,
349
+ testnet: {
350
+ name: "Blast Sepolia",
351
+ chainId: 168587773,
352
+ wormholeChainId: 36,
353
+ rpcUrl: "https://sepolia.blast.io",
354
+ explorerUrl: "https://sepolia.blastscan.io",
355
+ isEvm: true,
356
+ contracts: {
357
+ wormholeCoreBridge: "0x473e002D7add6fB67a4964F13bFd61280Ca46886",
358
+ tokenBridge: "0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2"
359
+ }
360
+ },
361
+ mainnet: {
362
+ name: "Blast",
363
+ chainId: 81457,
364
+ wormholeChainId: 36,
365
+ rpcUrl: "https://rpc.blast.io",
366
+ explorerUrl: "https://blastscan.io",
367
+ isEvm: true,
368
+ contracts: {
369
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
370
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
371
+ }
372
+ }
373
+ },
374
+ // ────────────────────────────────────────────────────────────────────────
375
+ // MANTLE
376
+ // ────────────────────────────────────────────────────────────────────────
377
+ mantle: {
378
+ displayName: "Mantle",
379
+ type: "evm",
380
+ canBeHub: false,
381
+ testnet: {
382
+ name: "Mantle Sepolia",
383
+ chainId: 5003,
384
+ wormholeChainId: 35,
385
+ rpcUrl: "https://rpc.sepolia.mantle.xyz",
386
+ explorerUrl: "https://sepolia.mantlescan.xyz",
387
+ isEvm: true,
388
+ contracts: {
389
+ wormholeCoreBridge: "0x376428e7f26D5867e69201b275553C45B09EE090",
390
+ tokenBridge: "0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D"
391
+ }
392
+ },
393
+ mainnet: {
394
+ name: "Mantle",
395
+ chainId: 5e3,
396
+ wormholeChainId: 35,
397
+ rpcUrl: "https://rpc.mantle.xyz",
398
+ explorerUrl: "https://mantlescan.xyz",
399
+ isEvm: true,
400
+ contracts: {
401
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
402
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
403
+ }
404
+ }
405
+ },
406
+ // ────────────────────────────────────────────────────────────────────────
407
+ // FANTOM
408
+ // ────────────────────────────────────────────────────────────────────────
409
+ fantom: {
410
+ displayName: "Fantom",
411
+ type: "evm",
412
+ canBeHub: false,
413
+ testnet: {
414
+ name: "Fantom Testnet",
415
+ chainId: 4002,
416
+ wormholeChainId: 10,
417
+ rpcUrl: "https://rpc.testnet.fantom.network",
418
+ explorerUrl: "https://testnet.ftmscan.com",
419
+ isEvm: true,
420
+ contracts: {
421
+ wormholeCoreBridge: "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7",
422
+ tokenBridge: "0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8"
423
+ }
424
+ },
425
+ mainnet: {
426
+ name: "Fantom",
427
+ chainId: 250,
428
+ wormholeChainId: 10,
429
+ rpcUrl: "https://rpcapi.fantom.network",
430
+ explorerUrl: "https://ftmscan.com",
431
+ isEvm: true,
432
+ contracts: {
433
+ wormholeCoreBridge: "0x126783A6Cb203a3E35344528B26ca3a0489a1485",
434
+ tokenBridge: "0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2"
435
+ }
436
+ }
437
+ },
438
+ // ────────────────────────────────────────────────────────────────────────
439
+ // CELO
440
+ // ────────────────────────────────────────────────────────────────────────
441
+ celo: {
442
+ displayName: "Celo",
443
+ type: "evm",
444
+ canBeHub: false,
445
+ testnet: {
446
+ name: "Celo Alfajores",
447
+ chainId: 44787,
448
+ wormholeChainId: 14,
449
+ rpcUrl: "https://alfajores-forno.celo-testnet.org",
450
+ explorerUrl: "https://alfajores.celoscan.io",
451
+ isEvm: true,
452
+ contracts: {
453
+ wormholeCoreBridge: "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56",
454
+ tokenBridge: "0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153"
455
+ }
456
+ },
457
+ mainnet: {
458
+ name: "Celo",
459
+ chainId: 42220,
460
+ wormholeChainId: 14,
461
+ rpcUrl: "https://forno.celo.org",
462
+ explorerUrl: "https://celoscan.io",
463
+ isEvm: true,
464
+ contracts: {
465
+ wormholeCoreBridge: "0xa321448d90d4e5b0A732867c18eA198e75CAC48E",
466
+ tokenBridge: "0x796Dff6D74F3E27060B71255Fe517BFb23C93eed"
467
+ }
468
+ }
469
+ },
470
+ // ────────────────────────────────────────────────────────────────────────
471
+ // MOONBEAM
472
+ // ────────────────────────────────────────────────────────────────────────
473
+ moonbeam: {
474
+ displayName: "Moonbeam",
475
+ type: "evm",
476
+ canBeHub: false,
477
+ testnet: {
478
+ name: "Moonbase Alpha",
479
+ chainId: 1287,
480
+ wormholeChainId: 16,
481
+ rpcUrl: "https://rpc.api.moonbase.moonbeam.network",
482
+ explorerUrl: "https://moonbase.moonscan.io",
483
+ isEvm: true,
484
+ contracts: {
485
+ wormholeCoreBridge: "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901",
486
+ tokenBridge: "0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96"
487
+ }
488
+ },
489
+ mainnet: {
490
+ name: "Moonbeam",
491
+ chainId: 1284,
492
+ wormholeChainId: 16,
493
+ rpcUrl: "https://rpc.api.moonbeam.network",
494
+ explorerUrl: "https://moonscan.io",
495
+ isEvm: true,
496
+ contracts: {
497
+ wormholeCoreBridge: "0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3",
498
+ tokenBridge: "0xb1731c586ca89a23809861c6103F0b96B3F57D92"
499
+ }
500
+ }
501
+ },
502
+ // ────────────────────────────────────────────────────────────────────────
503
+ // MONAD - High-Performance L1 with EIP-7951 P256 + Agent Gateway
504
+ // ────────────────────────────────────────────────────────────────────────
505
+ monad: {
506
+ displayName: "Monad",
507
+ type: "evm",
508
+ canBeHub: true,
509
+ // Has native P-256 precompile (EIP-7951)
510
+ testnet: {
511
+ name: "Monad Testnet",
512
+ chainId: 10143,
513
+ wormholeChainId: 10048,
514
+ rpcUrl: "https://testnet-rpc.monad.xyz",
515
+ explorerUrl: "https://testnet.monadvision.com",
516
+ isEvm: true,
517
+ contracts: {
518
+ vaultFactory: "0x50F2c37584823A6cc293bd0d7647D558d05CA4C1",
519
+ vaultImplementation: "0x53d4D3943d0E524836f0B1955AbB216449F538fF",
520
+ wormholeCoreBridge: "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd",
521
+ // Agent Gateway contracts
522
+ serviceDirectory: "0x2d20f29E1f5B24294B3F125B47f2a22a7012a35E"
523
+ },
524
+ hubChainId: 10004
525
+ // Base Sepolia
526
+ },
527
+ mainnet: {
528
+ name: "Monad",
529
+ chainId: 143,
530
+ wormholeChainId: 0,
531
+ // TBD
532
+ rpcUrl: "https://rpc.monad.xyz",
533
+ explorerUrl: "https://monadscan.com",
534
+ isEvm: true,
535
+ contracts: {
536
+ wormholeCoreBridge: "0x194B123c5E96B9b2E49763619985790Dc241CAC0",
537
+ tokenBridge: "0x0B2719cdA2F10595369e6673ceA3Ee2EDFa13BA7"
538
+ }
539
+ }
540
+ },
541
+ // ────────────────────────────────────────────────────────────────────────
542
+ // SEI
543
+ // ────────────────────────────────────────────────────────────────────────
544
+ sei: {
545
+ displayName: "Sei",
546
+ type: "evm",
547
+ canBeHub: false,
548
+ testnet: {
549
+ name: "Sei Atlantic-2",
550
+ chainId: 1328,
551
+ wormholeChainId: 40,
552
+ rpcUrl: "https://evm-rpc-testnet.sei-apis.com",
553
+ explorerUrl: "https://seitrace.com/?chain=atlantic-2",
554
+ isEvm: true,
555
+ contracts: {
556
+ vaultFactory: "0x07F608AFf6d63b68029488b726d895c4Bb593038",
557
+ vaultImplementation: "0xD66153fccFB6731fB6c4944FbD607ba86A76a1f6",
558
+ wormholeCoreBridge: "0x0000000000000000000000000000000000000000"
559
+ }
560
+ },
561
+ mainnet: {
562
+ name: "Sei",
563
+ chainId: 1329,
564
+ wormholeChainId: 32,
565
+ rpcUrl: "https://evm-rpc.sei-apis.com",
566
+ explorerUrl: "https://seitrace.com",
567
+ isEvm: true,
568
+ contracts: {
569
+ wormholeCoreBridge: "0x0000000000000000000000000000000000000000"
570
+ }
571
+ }
572
+ },
573
+ // ────────────────────────────────────────────────────────────────────────
574
+ // SOLANA
575
+ // ────────────────────────────────────────────────────────────────────────
576
+ solana: {
577
+ displayName: "Solana",
578
+ type: "solana",
579
+ canBeHub: false,
580
+ testnet: {
581
+ name: "Solana Devnet",
582
+ chainId: 0,
583
+ wormholeChainId: 1,
584
+ rpcUrl: "https://api.devnet.solana.com",
585
+ explorerUrl: "https://explorer.solana.com",
586
+ isEvm: false,
587
+ contracts: {
588
+ hub: "AnyXHsqq9c2BiW4WgBcj6Aye7Ua7a7L7iSuwpfJxECJM",
589
+ wormholeCoreBridge: "3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",
590
+ tokenBridge: "DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe"
591
+ }
592
+ },
593
+ mainnet: {
594
+ name: "Solana",
595
+ chainId: 0,
596
+ wormholeChainId: 1,
597
+ rpcUrl: "https://api.mainnet-beta.solana.com",
598
+ explorerUrl: "https://explorer.solana.com",
599
+ isEvm: false,
600
+ contracts: {
601
+ wormholeCoreBridge: "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",
602
+ tokenBridge: "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"
603
+ }
604
+ }
605
+ },
606
+ // ────────────────────────────────────────────────────────────────────────
607
+ // APTOS
608
+ // ────────────────────────────────────────────────────────────────────────
609
+ aptos: {
610
+ displayName: "Aptos",
611
+ type: "aptos",
612
+ canBeHub: false,
613
+ testnet: {
614
+ name: "Aptos Testnet",
615
+ chainId: 0,
616
+ wormholeChainId: 22,
617
+ rpcUrl: "https://fullnode.testnet.aptoslabs.com/v1",
618
+ explorerUrl: "https://explorer.aptoslabs.com",
619
+ isEvm: false,
620
+ contracts: {
621
+ hub: "0x2935e5d434c383c8f8b8af3b9596aa78b7238c308b5b0fe2bbd19e248b6f018f",
622
+ wormholeCoreBridge: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
623
+ tokenBridge: "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f"
624
+ }
625
+ },
626
+ mainnet: {
627
+ name: "Aptos",
628
+ chainId: 0,
629
+ wormholeChainId: 22,
630
+ rpcUrl: "https://fullnode.mainnet.aptoslabs.com/v1",
631
+ explorerUrl: "https://explorer.aptoslabs.com",
632
+ isEvm: false,
633
+ contracts: {
634
+ wormholeCoreBridge: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
635
+ tokenBridge: "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f"
636
+ }
637
+ }
638
+ },
639
+ // ────────────────────────────────────────────────────────────────────────
640
+ // SUI
641
+ // ────────────────────────────────────────────────────────────────────────
642
+ sui: {
643
+ displayName: "Sui",
644
+ type: "sui",
645
+ canBeHub: false,
646
+ testnet: {
647
+ name: "Sui Testnet",
648
+ chainId: 0,
649
+ wormholeChainId: 21,
650
+ rpcUrl: "https://fullnode.testnet.sui.io:443",
651
+ explorerUrl: "https://suiscan.xyz/testnet",
652
+ isEvm: false,
653
+ contracts: {
654
+ hub: "0x7f6b9a3f9dba7ac6b20d180a9274f525c23a2a9f7e5445218c595c3696c55667",
655
+ wormholeCoreBridge: "0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790"
656
+ }
657
+ },
658
+ mainnet: {
659
+ name: "Sui",
660
+ chainId: 0,
661
+ wormholeChainId: 21,
662
+ rpcUrl: "https://fullnode.mainnet.sui.io:443",
663
+ explorerUrl: "https://suiscan.xyz/mainnet",
664
+ isEvm: false,
665
+ contracts: {
666
+ wormholeCoreBridge: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
667
+ }
668
+ }
669
+ },
670
+ // ────────────────────────────────────────────────────────────────────────
671
+ // STARKNET
672
+ // ────────────────────────────────────────────────────────────────────────
673
+ starknet: {
674
+ displayName: "Starknet",
675
+ type: "starknet",
676
+ canBeHub: false,
677
+ testnet: {
678
+ name: "Starknet Sepolia",
679
+ chainId: 0,
680
+ wormholeChainId: 50001,
681
+ // Custom bridge (non-Wormhole)
682
+ rpcUrl: "https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/tsOnfTBZDKMXcUA26OED-",
683
+ explorerUrl: "https://sepolia.starkscan.co",
684
+ isEvm: false,
685
+ contracts: {
686
+ hub: "0x46139177b8a1d7187cf35fbcddca637882a1d6f50d91f048c59d1322eee9ede",
687
+ wormholeCoreBridge: "0x700488242f8f03248b2311edddc394f0408a18c36181446eabd265067809c83"
688
+ },
689
+ hubChainId: 10004
690
+ // Base Sepolia
691
+ },
692
+ mainnet: {
693
+ name: "Starknet",
694
+ chainId: 0,
695
+ wormholeChainId: 50001,
696
+ rpcUrl: "https://starknet-mainnet.public.blastapi.io/rpc/v0_7",
697
+ explorerUrl: "https://starkscan.co",
698
+ isEvm: false,
699
+ contracts: {
700
+ // TODO: Deploy mainnet contracts
701
+ wormholeCoreBridge: ""
702
+ }
703
+ }
704
+ },
705
+ // ────────────────────────────────────────────────────────────────────────
706
+ // STACKS
707
+ // ────────────────────────────────────────────────────────────────────────
708
+ stacks: {
709
+ displayName: "Stacks",
710
+ type: "stacks",
711
+ canBeHub: false,
712
+ testnet: {
713
+ name: "Stacks Testnet",
714
+ chainId: 2147483648,
715
+ // CAIP-2: stacks:2147483648
716
+ wormholeChainId: 60,
717
+ // Official Wormhole chain ID for Stacks
718
+ rpcUrl: "https://api.testnet.hiro.so",
719
+ explorerUrl: "https://explorer.hiro.so/?chain=testnet",
720
+ isEvm: false,
721
+ contracts: {
722
+ // Spoke contract: identity + session management
723
+ hub: "ST398EE8PHNSACV2M9F5MYVVBSDS4ZZ0S44WCJ6KR.veridex-spoke",
724
+ // Vault contract: STX/sBTC custody
725
+ vaultFactory: "ST398EE8PHNSACV2M9F5MYVVBSDS4ZZ0S44WCJ6KR.veridex-vault",
726
+ wormholeCoreBridge: "",
727
+ // Phase 2: Wormhole integration contracts
728
+ wormholeVerifier: "ST398EE8PHNSACV2M9F5MYVVBSDS4ZZ0S44WCJ6KR.veridex-wormhole-verifier",
729
+ vaultVaa: "ST398EE8PHNSACV2M9F5MYVVBSDS4ZZ0S44WCJ6KR.veridex-vault-vaa"
730
+ },
731
+ hubChainId: 10004
732
+ // Base Sepolia
733
+ },
734
+ mainnet: {
735
+ name: "Stacks",
736
+ chainId: 1,
737
+ // CAIP-2: stacks:1
738
+ wormholeChainId: 60,
739
+ rpcUrl: "https://api.hiro.so",
740
+ explorerUrl: "https://explorer.hiro.so",
741
+ isEvm: false,
742
+ contracts: {
743
+ // TODO: Deploy mainnet contracts
744
+ wormholeCoreBridge: ""
745
+ }
746
+ }
747
+ },
748
+ // ────────────────────────────────────────────────────────────────────────
749
+ // NEAR
750
+ // ────────────────────────────────────────────────────────────────────────
751
+ near: {
752
+ displayName: "Near",
753
+ type: "near",
754
+ canBeHub: false,
755
+ testnet: {
756
+ name: "Near Testnet",
757
+ chainId: 0,
758
+ wormholeChainId: 15,
759
+ rpcUrl: "https://rpc.testnet.near.org",
760
+ explorerUrl: "https://explorer.testnet.near.org",
761
+ isEvm: false,
762
+ contracts: {
763
+ wormholeCoreBridge: "wormhole.wormhole.testnet",
764
+ tokenBridge: "token.wormhole.testnet"
765
+ }
766
+ },
767
+ mainnet: {
768
+ name: "Near",
769
+ chainId: 0,
770
+ wormholeChainId: 15,
771
+ rpcUrl: "https://rpc.mainnet.near.org",
772
+ explorerUrl: "https://explorer.near.org",
773
+ isEvm: false,
774
+ contracts: {
775
+ wormholeCoreBridge: "contract.wormhole_crypto.near",
776
+ tokenBridge: "contract.portalbridge.near"
777
+ }
778
+ }
779
+ }
780
+ };
781
+ function getChainConfig(chain, network = "testnet") {
782
+ const preset = CHAIN_PRESETS[chain];
783
+ if (!preset) {
784
+ throw new Error(
785
+ `Unknown chain: "${chain}". Supported chains: ${Object.keys(CHAIN_PRESETS).join(", ")}`
786
+ );
787
+ }
788
+ return preset[network];
789
+ }
790
+ function getChainPreset(chain) {
791
+ const preset = CHAIN_PRESETS[chain];
792
+ if (!preset) {
793
+ throw new Error(
794
+ `Unknown chain: "${chain}". Supported chains: ${Object.keys(CHAIN_PRESETS).join(", ")}`
795
+ );
796
+ }
797
+ return preset;
798
+ }
799
+ function getSupportedChains() {
800
+ return Object.keys(CHAIN_PRESETS);
801
+ }
802
+ function getHubChains() {
803
+ if (!isMultiHubEnabled()) {
804
+ const primary = getEffectivePrimaryHub();
805
+ return [primary];
806
+ }
807
+ return Object.entries(CHAIN_PRESETS).filter(([_, preset]) => preset.canBeHub).map(([name]) => name);
808
+ }
809
+ function isChainSupported(chain) {
810
+ return chain in CHAIN_PRESETS;
811
+ }
812
+ function isHubChain(chain) {
813
+ if (!isMultiHubEnabled()) {
814
+ return chain === getEffectivePrimaryHub();
815
+ }
816
+ const preset = CHAIN_PRESETS[chain];
817
+ return preset?.canBeHub ?? false;
818
+ }
819
+ function getDefaultHub(network = "testnet") {
820
+ const primary = getEffectivePrimaryHub();
821
+ return CHAIN_PRESETS[primary][network];
822
+ }
823
+
824
+ export {
825
+ getFeatureFlags,
826
+ setFeatureFlags,
827
+ resetFeatureFlags,
828
+ isMultiHubEnabled,
829
+ getEffectivePrimaryHub,
830
+ CHAIN_NAMES,
831
+ CHAIN_PRESETS,
832
+ getChainConfig,
833
+ getChainPreset,
834
+ getSupportedChains,
835
+ getHubChains,
836
+ isChainSupported,
837
+ isHubChain,
838
+ getDefaultHub
839
+ };
840
+ //# sourceMappingURL=chunk-QDO6NQ7P.mjs.map