@veridex/sdk 1.0.0-beta.21 → 1.0.0-beta.23

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 (113) hide show
  1. package/dist/EVMClient-CoOR_ywD.d.mts +332 -0
  2. package/dist/auth/prepareAuth.d.mts +1 -1
  3. package/dist/auth/prepareAuth.js +749 -3
  4. package/dist/auth/prepareAuth.js.map +1 -1
  5. package/dist/auth/prepareAuth.mjs +25 -1404
  6. package/dist/auth/prepareAuth.mjs.map +1 -1
  7. package/dist/chains/aptos/index.d.mts +1 -1
  8. package/dist/chains/aptos/index.mjs +5 -574
  9. package/dist/chains/aptos/index.mjs.map +1 -1
  10. package/dist/chains/avalanche/index.d.mts +137 -0
  11. package/dist/chains/avalanche/index.js +1407 -0
  12. package/dist/chains/avalanche/index.js.map +1 -0
  13. package/dist/chains/avalanche/index.mjs +10 -0
  14. package/dist/chains/avalanche/index.mjs.map +1 -0
  15. package/dist/chains/evm/index.d.mts +4 -2
  16. package/dist/chains/evm/index.mjs +8 -1200
  17. package/dist/chains/evm/index.mjs.map +1 -1
  18. package/dist/chains/solana/index.d.mts +1 -1
  19. package/dist/chains/solana/index.mjs +4 -486
  20. package/dist/chains/solana/index.mjs.map +1 -1
  21. package/dist/chains/stacks/index.d.mts +1 -1
  22. package/dist/chains/stacks/index.mjs +36 -1114
  23. package/dist/chains/stacks/index.mjs.map +1 -1
  24. package/dist/chains/starknet/index.d.mts +1 -1
  25. package/dist/chains/starknet/index.mjs +5 -503
  26. package/dist/chains/starknet/index.mjs.map +1 -1
  27. package/dist/chains/sui/index.d.mts +1 -1
  28. package/dist/chains/sui/index.mjs +5 -529
  29. package/dist/chains/sui/index.mjs.map +1 -1
  30. package/dist/chunk-3Q34PMHU.mjs +840 -0
  31. package/dist/chunk-3Q34PMHU.mjs.map +1 -0
  32. package/dist/chunk-72ZA3OYQ.mjs +20 -0
  33. package/dist/chunk-72ZA3OYQ.mjs.map +1 -0
  34. package/dist/chunk-7IEUU6LD.mjs +549 -0
  35. package/dist/chunk-7IEUU6LD.mjs.map +1 -0
  36. package/dist/chunk-ABLEEC5N.mjs +38 -0
  37. package/dist/chunk-ABLEEC5N.mjs.map +1 -0
  38. package/dist/chunk-AORSW75A.mjs +1101 -0
  39. package/dist/chunk-AORSW75A.mjs.map +1 -0
  40. package/dist/chunk-BKTCPT7P.mjs +269 -0
  41. package/dist/chunk-BKTCPT7P.mjs.map +1 -0
  42. package/dist/chunk-CCHASDAI.mjs +330 -0
  43. package/dist/chunk-CCHASDAI.mjs.map +1 -0
  44. package/dist/chunk-FQ2WU7PX.mjs +509 -0
  45. package/dist/chunk-FQ2WU7PX.mjs.map +1 -0
  46. package/dist/chunk-JO74ENTF.mjs +417 -0
  47. package/dist/chunk-JO74ENTF.mjs.map +1 -0
  48. package/dist/chunk-K73Y36KS.mjs +407 -0
  49. package/dist/chunk-K73Y36KS.mjs.map +1 -0
  50. package/dist/chunk-KHV3EP3I.mjs +179 -0
  51. package/dist/chunk-KHV3EP3I.mjs.map +1 -0
  52. package/dist/chunk-MMSTOW4F.mjs +722 -0
  53. package/dist/chunk-MMSTOW4F.mjs.map +1 -0
  54. package/dist/chunk-MWZ5UHCF.mjs +1082 -0
  55. package/dist/chunk-MWZ5UHCF.mjs.map +1 -0
  56. package/dist/chunk-NU6JGI7L.mjs +565 -0
  57. package/dist/chunk-NU6JGI7L.mjs.map +1 -0
  58. package/dist/chunk-PIC2Y5DF.mjs +422 -0
  59. package/dist/chunk-PIC2Y5DF.mjs.map +1 -0
  60. package/dist/chunk-PPN7BG3A.mjs +464 -0
  61. package/dist/chunk-PPN7BG3A.mjs.map +1 -0
  62. package/dist/chunk-RSV7J43V.mjs +438 -0
  63. package/dist/chunk-RSV7J43V.mjs.map +1 -0
  64. package/dist/chunk-UTT6KI7N.mjs +216 -0
  65. package/dist/chunk-UTT6KI7N.mjs.map +1 -0
  66. package/dist/constants.mjs +16 -389
  67. package/dist/constants.mjs.map +1 -1
  68. package/dist/index-Du1PoZqu.d.mts +216 -0
  69. package/dist/index.d.mts +131 -9
  70. package/dist/index.js +12064 -11594
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +4407 -12273
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/passkey.d.mts +142 -0
  75. package/dist/passkey.js +807 -0
  76. package/dist/passkey.js.map +1 -0
  77. package/dist/passkey.mjs +15 -0
  78. package/dist/passkey.mjs.map +1 -0
  79. package/dist/payload.mjs +25 -244
  80. package/dist/payload.mjs.map +1 -1
  81. package/dist/portfolio-UV3LLWKI.mjs +13 -0
  82. package/dist/portfolio-UV3LLWKI.mjs.map +1 -0
  83. package/dist/queries/index.js +39 -1
  84. package/dist/queries/index.js.map +1 -1
  85. package/dist/queries/index.mjs +14 -1591
  86. package/dist/queries/index.mjs.map +1 -1
  87. package/dist/{types-DakHNZIP.d.ts → types-Bmk689Lw.d.mts} +1 -1
  88. package/dist/types.d.mts +10 -0
  89. package/dist/types.js.map +1 -1
  90. package/dist/utils.mjs +19 -385
  91. package/dist/utils.mjs.map +1 -1
  92. package/dist/wormhole.mjs +25 -397
  93. package/dist/wormhole.mjs.map +1 -1
  94. package/package.json +17 -3
  95. package/scripts/patch-noble-curves.js +78 -0
  96. package/dist/auth/prepareAuth.d.ts +0 -25
  97. package/dist/chains/aptos/index.d.ts +0 -146
  98. package/dist/chains/evm/index.d.ts +0 -5
  99. package/dist/chains/solana/index.d.ts +0 -116
  100. package/dist/chains/stacks/index.d.ts +0 -559
  101. package/dist/chains/starknet/index.d.ts +0 -172
  102. package/dist/chains/sui/index.d.ts +0 -182
  103. package/dist/constants.d.ts +0 -150
  104. package/dist/index-Dy29mvBf.d.mts +0 -683
  105. package/dist/index-eXXqodd0.d.ts +0 -683
  106. package/dist/index.d.ts +0 -3442
  107. package/dist/payload.d.ts +0 -125
  108. package/dist/queries/index.d.ts +0 -148
  109. package/dist/types-DakHNZIP.d.mts +0 -571
  110. package/dist/types-DvFRnIBd.d.ts +0 -172
  111. package/dist/types.d.ts +0 -413
  112. package/dist/utils.d.ts +0 -81
  113. package/dist/wormhole.d.ts +0 -167
@@ -1419,6 +1419,752 @@ async function queryHubState(userKeyHash, apiKey, options) {
1419
1419
  return await withExponentialBackoff(doFetch, maxAttempts);
1420
1420
  }
1421
1421
 
1422
+ // src/featureFlags.ts
1423
+ var DEFAULT_FLAGS = {
1424
+ multiHub: false,
1425
+ primaryHub: "base"
1426
+ };
1427
+ var _flags = { ...DEFAULT_FLAGS };
1428
+ function getEffectivePrimaryHub() {
1429
+ if (!_flags.multiHub) {
1430
+ return "base";
1431
+ }
1432
+ return _flags.primaryHub;
1433
+ }
1434
+
1435
+ // src/presets.ts
1436
+ var CHAIN_PRESETS = {
1437
+ // ────────────────────────────────────────────────────────────────────────
1438
+ // BASE - Primary Hub Chain
1439
+ // ────────────────────────────────────────────────────────────────────────
1440
+ base: {
1441
+ displayName: "Base",
1442
+ type: "evm",
1443
+ canBeHub: true,
1444
+ testnet: {
1445
+ name: "Base Sepolia",
1446
+ chainId: 84532,
1447
+ wormholeChainId: 10004,
1448
+ rpcUrl: "https://sepolia.base.org",
1449
+ explorerUrl: "https://sepolia.basescan.org",
1450
+ isEvm: true,
1451
+ contracts: {
1452
+ hub: "0x66D87dE68327f48A099c5B9bE97020Feab9a7c82",
1453
+ vaultFactory: "0xCFaEb5652aa2Ee60b2229dC8895B4159749C7e53",
1454
+ vaultImplementation: "0x0d13367C16c6f0B24eD275CC67C7D9f42878285c",
1455
+ wormholeCoreBridge: "0x79A1027a6A159502049F10906D333EC57E95F083",
1456
+ tokenBridge: "0x86F55A04690fd7815A3D802bD587e83eA888B239"
1457
+ }
1458
+ },
1459
+ mainnet: {
1460
+ name: "Base",
1461
+ chainId: 8453,
1462
+ wormholeChainId: 30,
1463
+ rpcUrl: "https://mainnet.base.org",
1464
+ explorerUrl: "https://basescan.org",
1465
+ isEvm: true,
1466
+ contracts: {
1467
+ // TODO: Deploy mainnet contracts
1468
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
1469
+ tokenBridge: "0x8d2de8d2f73F1F4cAB472AC9A881C9b123C79627"
1470
+ }
1471
+ }
1472
+ },
1473
+ // ────────────────────────────────────────────────────────────────────────
1474
+ // OPTIMISM - Secondary Hub / Spoke
1475
+ // ────────────────────────────────────────────────────────────────────────
1476
+ optimism: {
1477
+ displayName: "Optimism",
1478
+ type: "evm",
1479
+ canBeHub: true,
1480
+ testnet: {
1481
+ name: "Optimism Sepolia",
1482
+ chainId: 11155420,
1483
+ wormholeChainId: 10005,
1484
+ rpcUrl: "https://sepolia.optimism.io",
1485
+ explorerUrl: "https://sepolia-optimism.etherscan.io",
1486
+ isEvm: true,
1487
+ contracts: {
1488
+ vaultFactory: "0xA5653d54079ABeCe780F8d9597B2bc4B09fe464A",
1489
+ vaultImplementation: "0x8099b1406485d2255ff89Ce5Ea18520802AFC150",
1490
+ wormholeCoreBridge: "0x31377888146f3253211EFEf5c676D41ECe7D58Fe",
1491
+ tokenBridge: "0x99737Ec4B815d816c49A385943baf0380e75c0Ac"
1492
+ }
1493
+ },
1494
+ mainnet: {
1495
+ name: "Optimism",
1496
+ chainId: 10,
1497
+ wormholeChainId: 24,
1498
+ rpcUrl: "https://mainnet.optimism.io",
1499
+ explorerUrl: "https://optimistic.etherscan.io",
1500
+ isEvm: true,
1501
+ contracts: {
1502
+ wormholeCoreBridge: "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722",
1503
+ tokenBridge: "0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b"
1504
+ }
1505
+ }
1506
+ },
1507
+ // ────────────────────────────────────────────────────────────────────────
1508
+ // ARBITRUM
1509
+ // ────────────────────────────────────────────────────────────────────────
1510
+ arbitrum: {
1511
+ displayName: "Arbitrum",
1512
+ type: "evm",
1513
+ canBeHub: true,
1514
+ testnet: {
1515
+ name: "Arbitrum Sepolia",
1516
+ chainId: 421614,
1517
+ wormholeChainId: 10003,
1518
+ rpcUrl: "https://sepolia-rollup.arbitrum.io/rpc",
1519
+ explorerUrl: "https://sepolia.arbiscan.io",
1520
+ isEvm: true,
1521
+ contracts: {
1522
+ vaultFactory: "0xd36D3D5DB59d78f1E33813490F72DABC15C9B07c",
1523
+ vaultImplementation: "0xB10ACf39eBF17fc33F722cBD955b7aeCB0611bc4",
1524
+ wormholeCoreBridge: "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35",
1525
+ tokenBridge: "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e"
1526
+ }
1527
+ },
1528
+ mainnet: {
1529
+ name: "Arbitrum",
1530
+ chainId: 42161,
1531
+ wormholeChainId: 23,
1532
+ rpcUrl: "https://arb1.arbitrum.io/rpc",
1533
+ explorerUrl: "https://arbiscan.io",
1534
+ isEvm: true,
1535
+ contracts: {
1536
+ wormholeCoreBridge: "0xa5f208e072434bC67592E4C49C1B991BA79BCA46",
1537
+ tokenBridge: "0x0b2402144Bb366A632D14B83F244D2e0e21bD39c"
1538
+ }
1539
+ }
1540
+ },
1541
+ // ────────────────────────────────────────────────────────────────────────
1542
+ // ETHEREUM
1543
+ // ────────────────────────────────────────────────────────────────────────
1544
+ ethereum: {
1545
+ displayName: "Ethereum",
1546
+ type: "evm",
1547
+ canBeHub: false,
1548
+ testnet: {
1549
+ name: "Sepolia",
1550
+ chainId: 11155111,
1551
+ wormholeChainId: 10002,
1552
+ rpcUrl: "https://ethereum-sepolia-rpc.publicnode.com",
1553
+ explorerUrl: "https://sepolia.etherscan.io",
1554
+ isEvm: true,
1555
+ contracts: {
1556
+ vaultFactory: "0x07F608AFf6d63b68029488b726d895c4Bb593038",
1557
+ vaultImplementation: "0xD66153fccFB6731fB6c4944FbD607ba86A76a1f6",
1558
+ wormholeCoreBridge: "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78",
1559
+ tokenBridge: "0xDB5492265f6038831E89f495670FF909aDe94bd9"
1560
+ }
1561
+ },
1562
+ mainnet: {
1563
+ name: "Ethereum",
1564
+ chainId: 1,
1565
+ wormholeChainId: 2,
1566
+ rpcUrl: "https://eth.llamarpc.com",
1567
+ explorerUrl: "https://etherscan.io",
1568
+ isEvm: true,
1569
+ contracts: {
1570
+ wormholeCoreBridge: "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
1571
+ tokenBridge: "0x3ee18B2214AFF97000D974cf647E7C347E8fa585"
1572
+ }
1573
+ }
1574
+ },
1575
+ // ────────────────────────────────────────────────────────────────────────
1576
+ // POLYGON
1577
+ // ────────────────────────────────────────────────────────────────────────
1578
+ polygon: {
1579
+ displayName: "Polygon",
1580
+ type: "evm",
1581
+ canBeHub: false,
1582
+ testnet: {
1583
+ name: "Polygon Amoy",
1584
+ chainId: 80002,
1585
+ wormholeChainId: 10007,
1586
+ rpcUrl: "https://rpc-amoy.polygon.technology",
1587
+ explorerUrl: "https://amoy.polygonscan.com",
1588
+ isEvm: true,
1589
+ contracts: {
1590
+ wormholeCoreBridge: "0x0CBE91CF822c73C2315FB05100C2F714765d5c20",
1591
+ tokenBridge: "0x0290FB167208Af455bB137780163b7B7a9a10C16"
1592
+ }
1593
+ },
1594
+ mainnet: {
1595
+ name: "Polygon",
1596
+ chainId: 137,
1597
+ wormholeChainId: 5,
1598
+ rpcUrl: "https://polygon-rpc.com",
1599
+ explorerUrl: "https://polygonscan.com",
1600
+ isEvm: true,
1601
+ contracts: {
1602
+ wormholeCoreBridge: "0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7",
1603
+ tokenBridge: "0x5a58505a96D1dbf8dF91cB21B54419FC36e93fdE"
1604
+ }
1605
+ }
1606
+ },
1607
+ // ────────────────────────────────────────────────────────────────────────
1608
+ // BSC
1609
+ // ────────────────────────────────────────────────────────────────────────
1610
+ bsc: {
1611
+ displayName: "BNB Chain",
1612
+ type: "evm",
1613
+ canBeHub: false,
1614
+ testnet: {
1615
+ name: "BSC Testnet",
1616
+ chainId: 97,
1617
+ wormholeChainId: 4,
1618
+ rpcUrl: "https://data-seed-prebsc-1-s1.binance.org:8545",
1619
+ explorerUrl: "https://testnet.bscscan.com",
1620
+ isEvm: true,
1621
+ contracts: {
1622
+ wormholeCoreBridge: "0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D",
1623
+ tokenBridge: "0x9dcF9D205C9De35334D646BeE44b2D2859712A09"
1624
+ }
1625
+ },
1626
+ mainnet: {
1627
+ name: "BNB Chain",
1628
+ chainId: 56,
1629
+ wormholeChainId: 4,
1630
+ rpcUrl: "https://bsc-dataseed.binance.org",
1631
+ explorerUrl: "https://bscscan.com",
1632
+ isEvm: true,
1633
+ contracts: {
1634
+ wormholeCoreBridge: "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
1635
+ tokenBridge: "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7"
1636
+ }
1637
+ }
1638
+ },
1639
+ // ────────────────────────────────────────────────────────────────────────
1640
+ // AVALANCHE — ACP-204 Native P-256 + ICM Teleporter + Hub-Capable
1641
+ // ────────────────────────────────────────────────────────────────────────
1642
+ avalanche: {
1643
+ displayName: "Avalanche",
1644
+ type: "evm",
1645
+ canBeHub: true,
1646
+ // ACP-204 provides native P-256 at 0x0100 (6,900 gas)
1647
+ testnet: {
1648
+ name: "Avalanche Fuji",
1649
+ chainId: 43113,
1650
+ wormholeChainId: 6,
1651
+ rpcUrl: "https://api.avax-test.network/ext/bc/C/rpc",
1652
+ explorerUrl: "https://testnet.snowtrace.io",
1653
+ isEvm: true,
1654
+ contracts: {
1655
+ // Veridex Hub (deployed via deploy-avalanche.ts)
1656
+ hub: "",
1657
+ // No Hub on Fuji — Hub is on Base Sepolia
1658
+ vaultFactory: "0xBE231B798821f11c09051851683301F428fe9305",
1659
+ vaultImplementation: "0xcD738492D475D9241bcbe268797f930190d4c43a",
1660
+ // Wormhole bridges (canonical Fuji addresses)
1661
+ wormholeCoreBridge: "0x7bbcE28e64B3F8b84d876Ab298393c38ad7aac4C",
1662
+ tokenBridge: "0x61E44E506Ca5659E6c0bba9b678586fA2d729756",
1663
+ // Avalanche-specific: ACP-204 P-256 verifier wrapper
1664
+ p256Verifier: "0x07F608AFf6d63b68029488b726d895c4Bb593038",
1665
+ // Avalanche-specific: ICM Spoke for cross-L1 session bridging
1666
+ icmSpoke: "0xEA857fD26a976AB8F0aAd5e006b5FEfaF0F30c9B",
1667
+ // Chainlink price feeds (Fuji testnet)
1668
+ chainlinkAvaxUsd: "0x5498BB86BC934c8D34FDA08E81D444153d0D06aD",
1669
+ chainlinkUsdcUsd: "0x7898AcCC83587C3C55116c5230C17a6Cd9C71bad",
1670
+ chainlinkUsdtUsd: "0x7898AcCC83587C3C55116c5230C17a6Cd9C71bad"
1671
+ },
1672
+ hubChainId: 10004
1673
+ // Base Sepolia (primary Hub)
1674
+ },
1675
+ mainnet: {
1676
+ name: "Avalanche",
1677
+ chainId: 43114,
1678
+ wormholeChainId: 6,
1679
+ rpcUrl: "https://api.avax.network/ext/bc/C/rpc",
1680
+ explorerUrl: "https://snowtrace.io",
1681
+ isEvm: true,
1682
+ contracts: {
1683
+ wormholeCoreBridge: "0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c",
1684
+ tokenBridge: "0x0e082F06FF657D94310cB8cE8B0D9a04541d8052",
1685
+ // Chainlink price feeds (Avalanche mainnet)
1686
+ chainlinkAvaxUsd: "0x0A77230d17318075983913bC2145DB16C7366156",
1687
+ chainlinkUsdcUsd: "0xF096872672F44d6EBA71458D74fe67F9a77a23B9",
1688
+ chainlinkUsdtUsd: "0xEBE676ee90Fe1112671f19b6B7459bC678B67e8a"
1689
+ }
1690
+ }
1691
+ },
1692
+ // ────────────────────────────────────────────────────────────────────────
1693
+ // SCROLL
1694
+ // ────────────────────────────────────────────────────────────────────────
1695
+ scroll: {
1696
+ displayName: "Scroll",
1697
+ type: "evm",
1698
+ canBeHub: false,
1699
+ testnet: {
1700
+ name: "Scroll Sepolia",
1701
+ chainId: 534351,
1702
+ wormholeChainId: 34,
1703
+ rpcUrl: "https://sepolia-rpc.scroll.io",
1704
+ explorerUrl: "https://sepolia.scrollscan.com",
1705
+ isEvm: true,
1706
+ contracts: {
1707
+ wormholeCoreBridge: "0x055F47F1250012C6B20c436570a76e52c17Af2D5",
1708
+ tokenBridge: "0x22427d90B7dA3fA4642F7025A854c7254E4e45BF"
1709
+ }
1710
+ },
1711
+ mainnet: {
1712
+ name: "Scroll",
1713
+ chainId: 534352,
1714
+ wormholeChainId: 34,
1715
+ rpcUrl: "https://rpc.scroll.io",
1716
+ explorerUrl: "https://scrollscan.com",
1717
+ isEvm: true,
1718
+ contracts: {
1719
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
1720
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
1721
+ }
1722
+ }
1723
+ },
1724
+ // ────────────────────────────────────────────────────────────────────────
1725
+ // BLAST
1726
+ // ────────────────────────────────────────────────────────────────────────
1727
+ blast: {
1728
+ displayName: "Blast",
1729
+ type: "evm",
1730
+ canBeHub: false,
1731
+ testnet: {
1732
+ name: "Blast Sepolia",
1733
+ chainId: 168587773,
1734
+ wormholeChainId: 36,
1735
+ rpcUrl: "https://sepolia.blast.io",
1736
+ explorerUrl: "https://sepolia.blastscan.io",
1737
+ isEvm: true,
1738
+ contracts: {
1739
+ wormholeCoreBridge: "0x473e002D7add6fB67a4964F13bFd61280Ca46886",
1740
+ tokenBridge: "0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2"
1741
+ }
1742
+ },
1743
+ mainnet: {
1744
+ name: "Blast",
1745
+ chainId: 81457,
1746
+ wormholeChainId: 36,
1747
+ rpcUrl: "https://rpc.blast.io",
1748
+ explorerUrl: "https://blastscan.io",
1749
+ isEvm: true,
1750
+ contracts: {
1751
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
1752
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
1753
+ }
1754
+ }
1755
+ },
1756
+ // ────────────────────────────────────────────────────────────────────────
1757
+ // MANTLE
1758
+ // ────────────────────────────────────────────────────────────────────────
1759
+ mantle: {
1760
+ displayName: "Mantle",
1761
+ type: "evm",
1762
+ canBeHub: false,
1763
+ testnet: {
1764
+ name: "Mantle Sepolia",
1765
+ chainId: 5003,
1766
+ wormholeChainId: 35,
1767
+ rpcUrl: "https://rpc.sepolia.mantle.xyz",
1768
+ explorerUrl: "https://sepolia.mantlescan.xyz",
1769
+ isEvm: true,
1770
+ contracts: {
1771
+ wormholeCoreBridge: "0x376428e7f26D5867e69201b275553C45B09EE090",
1772
+ tokenBridge: "0x75Bfa155a9D7A3714b0861c8a8aF0C4633c45b5D"
1773
+ }
1774
+ },
1775
+ mainnet: {
1776
+ name: "Mantle",
1777
+ chainId: 5e3,
1778
+ wormholeChainId: 35,
1779
+ rpcUrl: "https://rpc.mantle.xyz",
1780
+ explorerUrl: "https://mantlescan.xyz",
1781
+ isEvm: true,
1782
+ contracts: {
1783
+ wormholeCoreBridge: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
1784
+ tokenBridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d"
1785
+ }
1786
+ }
1787
+ },
1788
+ // ────────────────────────────────────────────────────────────────────────
1789
+ // FANTOM
1790
+ // ────────────────────────────────────────────────────────────────────────
1791
+ fantom: {
1792
+ displayName: "Fantom",
1793
+ type: "evm",
1794
+ canBeHub: false,
1795
+ testnet: {
1796
+ name: "Fantom Testnet",
1797
+ chainId: 4002,
1798
+ wormholeChainId: 10,
1799
+ rpcUrl: "https://rpc.testnet.fantom.network",
1800
+ explorerUrl: "https://testnet.ftmscan.com",
1801
+ isEvm: true,
1802
+ contracts: {
1803
+ wormholeCoreBridge: "0x1BB3B4119b7BA9dfad76B0545fb3F531383c3bB7",
1804
+ tokenBridge: "0x599CEa2204B4FaECd584Ab1F2b6aCA137a0afbE8"
1805
+ }
1806
+ },
1807
+ mainnet: {
1808
+ name: "Fantom",
1809
+ chainId: 250,
1810
+ wormholeChainId: 10,
1811
+ rpcUrl: "https://rpcapi.fantom.network",
1812
+ explorerUrl: "https://ftmscan.com",
1813
+ isEvm: true,
1814
+ contracts: {
1815
+ wormholeCoreBridge: "0x126783A6Cb203a3E35344528B26ca3a0489a1485",
1816
+ tokenBridge: "0x7C9Fc5741288cDFdD83CeB07f3ea7e22618D79D2"
1817
+ }
1818
+ }
1819
+ },
1820
+ // ────────────────────────────────────────────────────────────────────────
1821
+ // CELO
1822
+ // ────────────────────────────────────────────────────────────────────────
1823
+ celo: {
1824
+ displayName: "Celo",
1825
+ type: "evm",
1826
+ canBeHub: false,
1827
+ testnet: {
1828
+ name: "Celo Alfajores",
1829
+ chainId: 44787,
1830
+ wormholeChainId: 14,
1831
+ rpcUrl: "https://alfajores-forno.celo-testnet.org",
1832
+ explorerUrl: "https://alfajores.celoscan.io",
1833
+ isEvm: true,
1834
+ contracts: {
1835
+ wormholeCoreBridge: "0x88505117CA88e7dd2eC6EA1E13f0948db2D50D56",
1836
+ tokenBridge: "0x05ca6037eC51F8b712eD2E6Fa72219FEaE74E153"
1837
+ }
1838
+ },
1839
+ mainnet: {
1840
+ name: "Celo",
1841
+ chainId: 42220,
1842
+ wormholeChainId: 14,
1843
+ rpcUrl: "https://forno.celo.org",
1844
+ explorerUrl: "https://celoscan.io",
1845
+ isEvm: true,
1846
+ contracts: {
1847
+ wormholeCoreBridge: "0xa321448d90d4e5b0A732867c18eA198e75CAC48E",
1848
+ tokenBridge: "0x796Dff6D74F3E27060B71255Fe517BFb23C93eed"
1849
+ }
1850
+ }
1851
+ },
1852
+ // ────────────────────────────────────────────────────────────────────────
1853
+ // MOONBEAM
1854
+ // ────────────────────────────────────────────────────────────────────────
1855
+ moonbeam: {
1856
+ displayName: "Moonbeam",
1857
+ type: "evm",
1858
+ canBeHub: false,
1859
+ testnet: {
1860
+ name: "Moonbase Alpha",
1861
+ chainId: 1287,
1862
+ wormholeChainId: 16,
1863
+ rpcUrl: "https://rpc.api.moonbase.moonbeam.network",
1864
+ explorerUrl: "https://moonbase.moonscan.io",
1865
+ isEvm: true,
1866
+ contracts: {
1867
+ wormholeCoreBridge: "0xa5B7D85a8f27dd7907dc8FdC21FA5657D5E2F901",
1868
+ tokenBridge: "0xbc976D4b9D57E57c3cA52e1Fd136C45FF7955A96"
1869
+ }
1870
+ },
1871
+ mainnet: {
1872
+ name: "Moonbeam",
1873
+ chainId: 1284,
1874
+ wormholeChainId: 16,
1875
+ rpcUrl: "https://rpc.api.moonbeam.network",
1876
+ explorerUrl: "https://moonscan.io",
1877
+ isEvm: true,
1878
+ contracts: {
1879
+ wormholeCoreBridge: "0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3",
1880
+ tokenBridge: "0xb1731c586ca89a23809861c6103F0b96B3F57D92"
1881
+ }
1882
+ }
1883
+ },
1884
+ // ────────────────────────────────────────────────────────────────────────
1885
+ // MONAD - High-Performance L1 with EIP-7951 P256 + Agent Gateway
1886
+ // ────────────────────────────────────────────────────────────────────────
1887
+ monad: {
1888
+ displayName: "Monad",
1889
+ type: "evm",
1890
+ canBeHub: true,
1891
+ // Has native P-256 precompile (EIP-7951)
1892
+ testnet: {
1893
+ name: "Monad Testnet",
1894
+ chainId: 10143,
1895
+ wormholeChainId: 10048,
1896
+ rpcUrl: "https://testnet-rpc.monad.xyz",
1897
+ explorerUrl: "https://testnet.monadvision.com",
1898
+ isEvm: true,
1899
+ contracts: {
1900
+ vaultFactory: "0x07F608AFf6d63b68029488b726d895c4Bb593038",
1901
+ vaultImplementation: "0xD66153fccFB6731fB6c4944FbD607ba86A76a1f6",
1902
+ wormholeCoreBridge: "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd",
1903
+ // Agent Gateway contracts
1904
+ serviceDirectory: "0x0D2B4193e78107678a5aC29d795e0EcD361aE3A7"
1905
+ },
1906
+ hubChainId: 10004
1907
+ // Base Sepolia
1908
+ },
1909
+ mainnet: {
1910
+ name: "Monad",
1911
+ chainId: 143,
1912
+ wormholeChainId: 0,
1913
+ // TBD
1914
+ rpcUrl: "https://rpc.monad.xyz",
1915
+ explorerUrl: "https://monadscan.com",
1916
+ isEvm: true,
1917
+ contracts: {
1918
+ wormholeCoreBridge: "0x194B123c5E96B9b2E49763619985790Dc241CAC0",
1919
+ tokenBridge: "0x0B2719cdA2F10595369e6673ceA3Ee2EDFa13BA7"
1920
+ }
1921
+ }
1922
+ },
1923
+ // ────────────────────────────────────────────────────────────────────────
1924
+ // SEI
1925
+ // ────────────────────────────────────────────────────────────────────────
1926
+ sei: {
1927
+ displayName: "Sei",
1928
+ type: "evm",
1929
+ canBeHub: false,
1930
+ testnet: {
1931
+ name: "Sei Atlantic-2",
1932
+ chainId: 1328,
1933
+ wormholeChainId: 40,
1934
+ rpcUrl: "https://evm-rpc-testnet.sei-apis.com",
1935
+ explorerUrl: "https://seitrace.com/?chain=atlantic-2",
1936
+ isEvm: true,
1937
+ contracts: {
1938
+ vaultFactory: "0x07F608AFf6d63b68029488b726d895c4Bb593038",
1939
+ vaultImplementation: "0xD66153fccFB6731fB6c4944FbD607ba86A76a1f6",
1940
+ wormholeCoreBridge: "0x0000000000000000000000000000000000000000"
1941
+ }
1942
+ },
1943
+ mainnet: {
1944
+ name: "Sei",
1945
+ chainId: 1329,
1946
+ wormholeChainId: 32,
1947
+ rpcUrl: "https://evm-rpc.sei-apis.com",
1948
+ explorerUrl: "https://seitrace.com",
1949
+ isEvm: true,
1950
+ contracts: {
1951
+ wormholeCoreBridge: "0x0000000000000000000000000000000000000000"
1952
+ }
1953
+ }
1954
+ },
1955
+ // ────────────────────────────────────────────────────────────────────────
1956
+ // SOLANA
1957
+ // ────────────────────────────────────────────────────────────────────────
1958
+ solana: {
1959
+ displayName: "Solana",
1960
+ type: "solana",
1961
+ canBeHub: false,
1962
+ testnet: {
1963
+ name: "Solana Devnet",
1964
+ chainId: 0,
1965
+ wormholeChainId: 1,
1966
+ rpcUrl: "https://api.devnet.solana.com",
1967
+ explorerUrl: "https://explorer.solana.com",
1968
+ isEvm: false,
1969
+ contracts: {
1970
+ hub: "AnyXHsqq9c2BiW4WgBcj6Aye7Ua7a7L7iSuwpfJxECJM",
1971
+ wormholeCoreBridge: "3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5",
1972
+ tokenBridge: "DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe"
1973
+ }
1974
+ },
1975
+ mainnet: {
1976
+ name: "Solana",
1977
+ chainId: 0,
1978
+ wormholeChainId: 1,
1979
+ rpcUrl: "https://api.mainnet-beta.solana.com",
1980
+ explorerUrl: "https://explorer.solana.com",
1981
+ isEvm: false,
1982
+ contracts: {
1983
+ wormholeCoreBridge: "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",
1984
+ tokenBridge: "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"
1985
+ }
1986
+ }
1987
+ },
1988
+ // ────────────────────────────────────────────────────────────────────────
1989
+ // APTOS
1990
+ // ────────────────────────────────────────────────────────────────────────
1991
+ aptos: {
1992
+ displayName: "Aptos",
1993
+ type: "aptos",
1994
+ canBeHub: false,
1995
+ testnet: {
1996
+ name: "Aptos Testnet",
1997
+ chainId: 0,
1998
+ wormholeChainId: 22,
1999
+ rpcUrl: "https://fullnode.testnet.aptoslabs.com/v1",
2000
+ explorerUrl: "https://explorer.aptoslabs.com",
2001
+ isEvm: false,
2002
+ contracts: {
2003
+ hub: "0x0237e04f74b991b5b6030a793779663033f4ff4a1682a9e66c1f41fc1ec3e2a4",
2004
+ wormholeCoreBridge: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
2005
+ tokenBridge: "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f"
2006
+ }
2007
+ },
2008
+ mainnet: {
2009
+ name: "Aptos",
2010
+ chainId: 0,
2011
+ wormholeChainId: 22,
2012
+ rpcUrl: "https://fullnode.mainnet.aptoslabs.com/v1",
2013
+ explorerUrl: "https://explorer.aptoslabs.com",
2014
+ isEvm: false,
2015
+ contracts: {
2016
+ wormholeCoreBridge: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625",
2017
+ tokenBridge: "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f"
2018
+ }
2019
+ }
2020
+ },
2021
+ // ────────────────────────────────────────────────────────────────────────
2022
+ // SUI
2023
+ // ────────────────────────────────────────────────────────────────────────
2024
+ sui: {
2025
+ displayName: "Sui",
2026
+ type: "sui",
2027
+ canBeHub: false,
2028
+ testnet: {
2029
+ name: "Sui Testnet",
2030
+ chainId: 0,
2031
+ wormholeChainId: 21,
2032
+ rpcUrl: "https://fullnode.testnet.sui.io:443",
2033
+ explorerUrl: "https://suiscan.xyz/testnet",
2034
+ isEvm: false,
2035
+ contracts: {
2036
+ hub: "0x35e99fdbbc1cde7e093da6f9e758ba2c4a077904bd64caee2fa6db5e6c4e9e37",
2037
+ wormholeCoreBridge: "0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790"
2038
+ }
2039
+ },
2040
+ mainnet: {
2041
+ name: "Sui",
2042
+ chainId: 0,
2043
+ wormholeChainId: 21,
2044
+ rpcUrl: "https://fullnode.mainnet.sui.io:443",
2045
+ explorerUrl: "https://suiscan.xyz/mainnet",
2046
+ isEvm: false,
2047
+ contracts: {
2048
+ wormholeCoreBridge: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"
2049
+ }
2050
+ }
2051
+ },
2052
+ // ────────────────────────────────────────────────────────────────────────
2053
+ // STARKNET
2054
+ // ────────────────────────────────────────────────────────────────────────
2055
+ starknet: {
2056
+ displayName: "Starknet",
2057
+ type: "starknet",
2058
+ canBeHub: false,
2059
+ testnet: {
2060
+ name: "Starknet Sepolia",
2061
+ chainId: 0,
2062
+ wormholeChainId: 50001,
2063
+ // Custom bridge (non-Wormhole)
2064
+ rpcUrl: "https://starknet-sepolia.g.alchemy.com/starknet/version/rpc/v0_7/tsOnfTBZDKMXcUA26OED-",
2065
+ explorerUrl: "https://sepolia.starkscan.co",
2066
+ isEvm: false,
2067
+ contracts: {
2068
+ hub: "0x68adcc730ed6c355200d00f763825448497b9cdf7936ca121711e078c88e811",
2069
+ wormholeCoreBridge: "0x2c458c1ae64556482b05cc2d3ee5b032ed114d68429dda2062c9849a5a725f8"
2070
+ },
2071
+ hubChainId: 10004
2072
+ // Base Sepolia
2073
+ },
2074
+ mainnet: {
2075
+ name: "Starknet",
2076
+ chainId: 0,
2077
+ wormholeChainId: 50001,
2078
+ rpcUrl: "https://starknet-mainnet.public.blastapi.io/rpc/v0_7",
2079
+ explorerUrl: "https://starkscan.co",
2080
+ isEvm: false,
2081
+ contracts: {
2082
+ // TODO: Deploy mainnet contracts
2083
+ wormholeCoreBridge: ""
2084
+ }
2085
+ }
2086
+ },
2087
+ // ────────────────────────────────────────────────────────────────────────
2088
+ // STACKS
2089
+ // ────────────────────────────────────────────────────────────────────────
2090
+ stacks: {
2091
+ displayName: "Stacks",
2092
+ type: "stacks",
2093
+ canBeHub: false,
2094
+ testnet: {
2095
+ name: "Stacks Testnet",
2096
+ chainId: 2147483648,
2097
+ // CAIP-2: stacks:2147483648
2098
+ wormholeChainId: 60,
2099
+ // Official Wormhole chain ID for Stacks
2100
+ rpcUrl: "https://api.testnet.hiro.so",
2101
+ explorerUrl: "https://explorer.hiro.so/?chain=testnet",
2102
+ isEvm: false,
2103
+ contracts: {
2104
+ // Spoke contract: identity + session management
2105
+ hub: "ST1CKNN84MDPCJRQDHDCY34GMRKQ3TASNNDJQDRTN.veridex-spoke",
2106
+ // Vault contract: STX/sBTC custody
2107
+ vaultFactory: "ST1CKNN84MDPCJRQDHDCY34GMRKQ3TASNNDJQDRTN.veridex-vault",
2108
+ wormholeCoreBridge: "",
2109
+ // Phase 2: Wormhole integration contracts
2110
+ wormholeVerifier: "ST1CKNN84MDPCJRQDHDCY34GMRKQ3TASNNDJQDRTN.veridex-wormhole-verifier",
2111
+ vaultVaa: "ST1CKNN84MDPCJRQDHDCY34GMRKQ3TASNNDJQDRTN.veridex-vault-vaa"
2112
+ },
2113
+ hubChainId: 10004
2114
+ // Base Sepolia
2115
+ },
2116
+ mainnet: {
2117
+ name: "Stacks",
2118
+ chainId: 1,
2119
+ // CAIP-2: stacks:1
2120
+ wormholeChainId: 60,
2121
+ rpcUrl: "https://api.hiro.so",
2122
+ explorerUrl: "https://explorer.hiro.so",
2123
+ isEvm: false,
2124
+ contracts: {
2125
+ // TODO: Deploy mainnet contracts
2126
+ wormholeCoreBridge: ""
2127
+ }
2128
+ }
2129
+ },
2130
+ // ────────────────────────────────────────────────────────────────────────
2131
+ // NEAR
2132
+ // ────────────────────────────────────────────────────────────────────────
2133
+ near: {
2134
+ displayName: "Near",
2135
+ type: "near",
2136
+ canBeHub: false,
2137
+ testnet: {
2138
+ name: "Near Testnet",
2139
+ chainId: 0,
2140
+ wormholeChainId: 15,
2141
+ rpcUrl: "https://rpc.testnet.near.org",
2142
+ explorerUrl: "https://explorer.testnet.near.org",
2143
+ isEvm: false,
2144
+ contracts: {
2145
+ wormholeCoreBridge: "wormhole.wormhole.testnet",
2146
+ tokenBridge: "token.wormhole.testnet"
2147
+ }
2148
+ },
2149
+ mainnet: {
2150
+ name: "Near",
2151
+ chainId: 0,
2152
+ wormholeChainId: 15,
2153
+ rpcUrl: "https://rpc.mainnet.near.org",
2154
+ explorerUrl: "https://explorer.near.org",
2155
+ isEvm: false,
2156
+ contracts: {
2157
+ wormholeCoreBridge: "contract.wormhole_crypto.near",
2158
+ tokenBridge: "contract.portalbridge.near"
2159
+ }
2160
+ }
2161
+ }
2162
+ };
2163
+ function getDefaultHub(network = "testnet") {
2164
+ const primary = getEffectivePrimaryHub();
2165
+ return CHAIN_PRESETS[primary][network];
2166
+ }
2167
+
1422
2168
  // src/auth/prepareAuth.ts
1423
2169
  function resolveNetwork2() {
1424
2170
  const envCandidates = [
@@ -1432,13 +2178,13 @@ function resolveNetwork2() {
1432
2178
  return "testnet";
1433
2179
  }
1434
2180
  function getHubChainId(network) {
1435
- return network === "testnet" ? TESTNET_CHAINS.baseSepolia.wormholeChainId : MAINNET_CHAINS.base.wormholeChainId;
2181
+ return getDefaultHub(network).wormholeChainId;
1436
2182
  }
1437
2183
  function getHubRpcUrl(network) {
1438
- return network === "testnet" ? TESTNET_CHAINS.baseSepolia.rpcUrl : MAINNET_CHAINS.base.rpcUrl;
2184
+ return getDefaultHub(network).rpcUrl;
1439
2185
  }
1440
2186
  function getHubAddress(network) {
1441
- const hub = network === "testnet" ? TESTNET_CHAINS.baseSepolia.contracts.hub : MAINNET_CHAINS.base.contracts?.hub;
2187
+ const hub = getDefaultHub(network).contracts.hub;
1442
2188
  if (!hub) {
1443
2189
  throw new Error("Hub address missing in SDK constants");
1444
2190
  }