@b3dotfun/sdk 0.1.70-alpha.2 → 0.1.70-alpha.21

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 (355) hide show
  1. package/README.md +3 -3
  2. package/constants/chains/b3Chain.js +3 -1
  3. package/dist/cjs/anyspend/constants/rpc.d.ts +3 -1
  4. package/dist/cjs/anyspend/constants/rpc.js +6 -2
  5. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +9 -1
  6. package/dist/cjs/anyspend/react/components/AnySpend.js +123 -46
  7. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +8 -10
  8. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +15 -3
  9. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +78 -25
  10. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +32 -13
  11. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +32 -10
  12. package/dist/cjs/anyspend/react/components/QRDeposit.d.ts +22 -3
  13. package/dist/cjs/anyspend/react/components/QRDeposit.js +25 -16
  14. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +18 -11
  15. package/dist/cjs/anyspend/react/components/common/PureTransferView.d.ts +30 -0
  16. package/dist/cjs/anyspend/react/components/common/PureTransferView.js +64 -0
  17. package/dist/cjs/anyspend/react/components/common/TokenBalance.js +4 -5
  18. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  19. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  20. package/dist/cjs/anyspend/utils/address.d.ts +2 -1
  21. package/dist/cjs/anyspend/utils/address.js +12 -9
  22. package/dist/cjs/anyspend/utils/chain.d.ts +84 -1
  23. package/dist/cjs/anyspend/utils/chain.js +73 -3
  24. package/dist/cjs/anyspend/utils/token.d.ts +2 -0
  25. package/dist/cjs/anyspend/utils/token.js +15 -1
  26. package/dist/cjs/app.shared.d.ts +9 -1
  27. package/dist/cjs/app.shared.js +19 -0
  28. package/dist/cjs/global-account/app.native.d.ts +1 -1
  29. package/dist/cjs/global-account/better-auth-client.d.ts +3314 -36
  30. package/dist/cjs/global-account/better-auth-client.js +28 -3
  31. package/dist/cjs/global-account/bsmnt.d.ts +2 -2
  32. package/dist/cjs/global-account/bsmnt.native.d.ts +1 -1
  33. package/dist/cjs/global-account/client-manager.d.ts +7 -5
  34. package/dist/cjs/global-account/client-manager.js +51 -4
  35. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +6 -11
  36. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +11 -0
  37. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +12 -0
  38. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +12 -2
  39. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +25 -3
  40. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +45 -4
  41. package/dist/cjs/global-account/react/components/B3Provider/RelayKitProviderWrapper.d.ts +1 -2
  42. package/dist/cjs/global-account/react/components/B3Provider/RelayKitProviderWrapper.js +11 -5
  43. package/dist/cjs/global-account/react/components/ManageAccount/ContentTokens.js +23 -15
  44. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +2 -2
  45. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +8 -6
  46. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +1 -1
  47. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +17 -8
  48. package/dist/cjs/global-account/react/components/Send/Send.js +15 -11
  49. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +3 -1
  50. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -5
  51. package/dist/cjs/global-account/react/components/SignInWithB3/components/AuthButton.js +2 -1
  52. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +1 -0
  53. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +3 -2
  54. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +3 -3
  55. package/dist/cjs/global-account/react/components/index.d.ts +1 -1
  56. package/dist/cjs/global-account/react/components/index.js +3 -3
  57. package/dist/cjs/global-account/react/hooks/index.d.ts +2 -3
  58. package/dist/cjs/global-account/react/hooks/index.js +7 -10
  59. package/dist/cjs/global-account/react/hooks/useAuth.d.ts +5 -4
  60. package/dist/cjs/global-account/react/hooks/useAuth.js +1 -0
  61. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +3 -2
  62. package/dist/cjs/global-account/react/hooks/useAuthentication.js +2 -1
  63. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +1657 -22
  64. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +7 -7
  65. package/dist/cjs/global-account/react/hooks/useClient.d.ts +3 -3
  66. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +4 -7666
  67. package/dist/cjs/global-account/react/hooks/useFirstEOA.js +1 -0
  68. package/dist/cjs/global-account/react/hooks/useNativeBalance.js +2 -2
  69. package/dist/cjs/global-account/react/hooks/usePortfolioBalance.d.ts +15 -0
  70. package/dist/cjs/global-account/react/hooks/usePortfolioBalance.js +76 -0
  71. package/dist/cjs/global-account/react/hooks/usePortfolioCollectibles.d.ts +12 -0
  72. package/dist/cjs/global-account/react/hooks/usePortfolioCollectibles.js +178 -0
  73. package/dist/cjs/global-account/react/hooks/useSiwe.d.ts +1 -1
  74. package/dist/cjs/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  75. package/dist/cjs/global-account/react/hooks/useTWAuth.d.ts +1 -1
  76. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  77. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +37 -27
  78. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +14 -2
  79. package/dist/cjs/global-account/types/b3-api.types.d.ts +5 -0
  80. package/dist/cjs/global-account/types/feature-flags.d.ts +5 -5
  81. package/dist/cjs/notifications/services/api.js +1 -0
  82. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +30 -54
  83. package/dist/cjs/shared/constants/chains/b3Chain.js +5 -41
  84. package/dist/cjs/shared/constants/chains/supported.d.ts +1 -49
  85. package/dist/cjs/shared/constants/chains/supported.js +8 -36
  86. package/dist/cjs/shared/constants/index.d.ts +4 -0
  87. package/dist/cjs/shared/utils/chain-transformers.d.ts +4 -4
  88. package/dist/cjs/shared/utils/chain-transformers.js +38 -37
  89. package/dist/cjs/shared/utils/thirdweb-insights.js +2 -2
  90. package/dist/cjs/shared/utils/upload.d.ts +9 -0
  91. package/dist/cjs/shared/utils/upload.js +34 -0
  92. package/dist/cjs/shared/utils/zerionPositions.d.ts +96 -0
  93. package/dist/cjs/shared/utils/zerionPositions.js +188 -0
  94. package/dist/esm/anyspend/constants/rpc.d.ts +3 -1
  95. package/dist/esm/anyspend/constants/rpc.js +5 -1
  96. package/dist/esm/anyspend/react/components/AnySpend.d.ts +9 -1
  97. package/dist/esm/anyspend/react/components/AnySpend.js +124 -47
  98. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +9 -11
  99. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +15 -3
  100. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +80 -27
  101. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +33 -14
  102. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +33 -11
  103. package/dist/esm/anyspend/react/components/QRDeposit.d.ts +22 -3
  104. package/dist/esm/anyspend/react/components/QRDeposit.js +27 -18
  105. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +21 -14
  106. package/dist/esm/anyspend/react/components/common/PureTransferView.d.ts +30 -0
  107. package/dist/esm/anyspend/react/components/common/PureTransferView.js +61 -0
  108. package/dist/esm/anyspend/react/components/common/TokenBalance.js +6 -7
  109. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  110. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  111. package/dist/esm/anyspend/utils/address.d.ts +2 -1
  112. package/dist/esm/anyspend/utils/address.js +9 -6
  113. package/dist/esm/anyspend/utils/chain.d.ts +84 -1
  114. package/dist/esm/anyspend/utils/chain.js +73 -5
  115. package/dist/esm/anyspend/utils/token.d.ts +2 -0
  116. package/dist/esm/anyspend/utils/token.js +13 -0
  117. package/dist/esm/app.shared.d.ts +9 -1
  118. package/dist/esm/app.shared.js +17 -0
  119. package/dist/esm/global-account/app.native.d.ts +1 -1
  120. package/dist/esm/global-account/better-auth-client.d.ts +3314 -36
  121. package/dist/esm/global-account/better-auth-client.js +27 -4
  122. package/dist/esm/global-account/bsmnt.d.ts +2 -2
  123. package/dist/esm/global-account/bsmnt.native.d.ts +1 -1
  124. package/dist/esm/global-account/client-manager.d.ts +7 -5
  125. package/dist/esm/global-account/client-manager.js +51 -5
  126. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +6 -11
  127. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +11 -0
  128. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +11 -0
  129. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +12 -2
  130. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +26 -4
  131. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +46 -5
  132. package/dist/esm/global-account/react/components/B3Provider/RelayKitProviderWrapper.d.ts +1 -2
  133. package/dist/esm/global-account/react/components/B3Provider/RelayKitProviderWrapper.js +11 -5
  134. package/dist/esm/global-account/react/components/ManageAccount/ContentTokens.js +24 -16
  135. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +3 -3
  136. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +9 -7
  137. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +1 -1
  138. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +18 -9
  139. package/dist/esm/global-account/react/components/Send/Send.js +16 -12
  140. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +3 -1
  141. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -5
  142. package/dist/esm/global-account/react/components/SignInWithB3/components/AuthButton.js +2 -1
  143. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +1 -0
  144. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +3 -2
  145. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +3 -3
  146. package/dist/esm/global-account/react/components/index.d.ts +1 -1
  147. package/dist/esm/global-account/react/components/index.js +1 -1
  148. package/dist/esm/global-account/react/hooks/index.d.ts +2 -3
  149. package/dist/esm/global-account/react/hooks/index.js +2 -3
  150. package/dist/esm/global-account/react/hooks/useAuth.d.ts +5 -4
  151. package/dist/esm/global-account/react/hooks/useAuth.js +1 -0
  152. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +3 -2
  153. package/dist/esm/global-account/react/hooks/useAuthentication.js +2 -1
  154. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +1657 -22
  155. package/dist/esm/global-account/react/hooks/useBetterAuth.js +8 -8
  156. package/dist/esm/global-account/react/hooks/useClient.d.ts +3 -3
  157. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +4 -7666
  158. package/dist/esm/global-account/react/hooks/useFirstEOA.js +1 -0
  159. package/dist/esm/global-account/react/hooks/useNativeBalance.js +1 -1
  160. package/dist/esm/global-account/react/hooks/usePortfolioBalance.d.ts +15 -0
  161. package/dist/esm/global-account/react/hooks/usePortfolioBalance.js +72 -0
  162. package/dist/esm/global-account/react/hooks/usePortfolioCollectibles.d.ts +12 -0
  163. package/dist/esm/global-account/react/hooks/usePortfolioCollectibles.js +175 -0
  164. package/dist/esm/global-account/react/hooks/useSiwe.d.ts +1 -1
  165. package/dist/esm/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  166. package/dist/esm/global-account/react/hooks/useTWAuth.d.ts +1 -1
  167. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  168. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +37 -27
  169. package/dist/esm/global-account/react/stores/useModalStore.d.ts +14 -2
  170. package/dist/esm/global-account/types/b3-api.types.d.ts +5 -0
  171. package/dist/esm/global-account/types/feature-flags.d.ts +5 -5
  172. package/dist/esm/notifications/services/api.js +1 -0
  173. package/dist/esm/shared/constants/chains/b3Chain.d.ts +30 -54
  174. package/dist/esm/shared/constants/chains/b3Chain.js +4 -38
  175. package/dist/esm/shared/constants/chains/supported.d.ts +1 -49
  176. package/dist/esm/shared/constants/chains/supported.js +7 -35
  177. package/dist/esm/shared/constants/index.d.ts +4 -0
  178. package/dist/esm/shared/utils/chain-transformers.d.ts +4 -4
  179. package/dist/esm/shared/utils/chain-transformers.js +38 -37
  180. package/dist/esm/shared/utils/thirdweb-insights.js +2 -2
  181. package/dist/esm/shared/utils/upload.d.ts +9 -0
  182. package/dist/esm/shared/utils/upload.js +31 -0
  183. package/dist/esm/shared/utils/zerionPositions.d.ts +96 -0
  184. package/dist/esm/shared/utils/zerionPositions.js +180 -0
  185. package/dist/styles/index.css +1 -1
  186. package/dist/types/anyspend/constants/rpc.d.ts +3 -1
  187. package/dist/types/anyspend/react/components/AnySpend.d.ts +9 -1
  188. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +15 -3
  189. package/dist/types/anyspend/react/components/QRDeposit.d.ts +22 -3
  190. package/dist/types/anyspend/react/components/common/PureTransferView.d.ts +30 -0
  191. package/dist/types/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  192. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  193. package/dist/types/anyspend/utils/address.d.ts +2 -1
  194. package/dist/types/anyspend/utils/chain.d.ts +84 -1
  195. package/dist/types/anyspend/utils/token.d.ts +2 -0
  196. package/dist/types/app.shared.d.ts +9 -1
  197. package/dist/types/global-account/app.native.d.ts +1 -1
  198. package/dist/types/global-account/better-auth-client.d.ts +3314 -36
  199. package/dist/types/global-account/bsmnt.d.ts +2 -2
  200. package/dist/types/global-account/bsmnt.native.d.ts +1 -1
  201. package/dist/types/global-account/client-manager.d.ts +7 -5
  202. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +11 -0
  203. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +12 -2
  204. package/dist/types/global-account/react/components/B3Provider/RelayKitProviderWrapper.d.ts +1 -2
  205. package/dist/types/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +3 -2
  206. package/dist/types/global-account/react/components/index.d.ts +1 -1
  207. package/dist/types/global-account/react/hooks/index.d.ts +2 -3
  208. package/dist/types/global-account/react/hooks/useAuth.d.ts +5 -4
  209. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +3 -2
  210. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +1657 -22
  211. package/dist/types/global-account/react/hooks/useClient.d.ts +3 -3
  212. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +4 -7666
  213. package/dist/types/global-account/react/hooks/usePortfolioBalance.d.ts +15 -0
  214. package/dist/types/global-account/react/hooks/usePortfolioCollectibles.d.ts +12 -0
  215. package/dist/types/global-account/react/hooks/useSiwe.d.ts +1 -1
  216. package/dist/types/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  217. package/dist/types/global-account/react/hooks/useTWAuth.d.ts +1 -1
  218. package/dist/types/global-account/react/hooks/useUnifiedChainSwitchAndExecute.d.ts +1 -0
  219. package/dist/types/global-account/react/stores/useModalStore.d.ts +14 -2
  220. package/dist/types/global-account/types/b3-api.types.d.ts +5 -0
  221. package/dist/types/global-account/types/feature-flags.d.ts +5 -5
  222. package/dist/types/shared/constants/chains/b3Chain.d.ts +30 -54
  223. package/dist/types/shared/constants/chains/supported.d.ts +1 -49
  224. package/dist/types/shared/constants/index.d.ts +4 -0
  225. package/dist/types/shared/utils/chain-transformers.d.ts +4 -4
  226. package/dist/types/shared/utils/upload.d.ts +9 -0
  227. package/dist/types/shared/utils/zerionPositions.d.ts +96 -0
  228. package/node_modules/@b3/chain-registry/chains.json +1225 -0
  229. package/node_modules/@b3/chain-registry/dist/chains.json +1225 -0
  230. package/node_modules/@b3/chain-registry/dist/index.cjs +1676 -0
  231. package/node_modules/@b3/chain-registry/dist/index.d.cts +195 -0
  232. package/node_modules/@b3/chain-registry/dist/index.d.ts +195 -0
  233. package/node_modules/@b3/chain-registry/dist/index.mjs +1604 -0
  234. package/node_modules/@b3/chain-registry/dist/src/index.d.ts +193 -0
  235. package/node_modules/@b3/chain-registry/dist/src/index.js +408 -0
  236. package/node_modules/@b3/chain-registry/package.json +66 -0
  237. package/node_modules/@b3/chain-registry/src/index.test.ts +432 -0
  238. package/node_modules/@b3/chain-registry/src/index.ts +672 -0
  239. package/package.json +81 -30
  240. package/src/anyspend/README.md +2 -2
  241. package/src/anyspend/constants/rpc.ts +5 -2
  242. package/src/anyspend/docs/components.md +6 -6
  243. package/src/anyspend/docs/contributing.md +1 -1
  244. package/src/anyspend/docs/hooks.md +3 -3
  245. package/src/anyspend/docs/installation.md +2 -2
  246. package/src/anyspend/react/components/AnySpend.tsx +163 -47
  247. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +10 -11
  248. package/src/anyspend/react/components/AnySpendDeposit.tsx +130 -31
  249. package/src/anyspend/react/components/AnySpendStakeB3.tsx +55 -14
  250. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +55 -11
  251. package/src/anyspend/react/components/QRDeposit.tsx +101 -22
  252. package/src/anyspend/react/components/__tests__/QRDeposit.test.tsx +331 -0
  253. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +38 -16
  254. package/src/anyspend/react/components/common/PureTransferView.tsx +212 -0
  255. package/src/anyspend/react/components/common/TokenBalance.tsx +10 -7
  256. package/src/anyspend/react/hooks/useAnyspendQuote.ts +13 -13
  257. package/src/anyspend/react/hooks/useCreateDepositFirstOrder.ts +4 -4
  258. package/src/anyspend/services/gas.test.ts +95 -18
  259. package/src/anyspend/types/api_req_res.ts +10 -5
  260. package/src/anyspend/utils/__tests__/address.test.ts +39 -0
  261. package/src/anyspend/utils/__tests__/deprecatedChains.test.ts +44 -0
  262. package/src/anyspend/utils/__tests__/toRegistryChainId.test.ts +17 -0
  263. package/src/anyspend/utils/address.ts +8 -6
  264. package/src/anyspend/utils/chain.ts +79 -3
  265. package/src/anyspend/utils/token.ts +14 -0
  266. package/src/app.shared.ts +21 -1
  267. package/src/global-account/app.native.ts +5 -1
  268. package/src/global-account/better-auth-client.ts +30 -4
  269. package/src/global-account/bsmnt.native.ts +5 -1
  270. package/src/global-account/bsmnt.ts +9 -2
  271. package/src/global-account/client-manager.ts +74 -9
  272. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +6 -11
  273. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +12 -0
  274. package/src/global-account/react/components/B3Provider/B3Provider.tsx +40 -4
  275. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +51 -5
  276. package/src/global-account/react/components/B3Provider/RelayKitProviderWrapper.tsx +11 -11
  277. package/src/global-account/react/components/ManageAccount/ContentTokens.tsx +50 -21
  278. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +5 -3
  279. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +10 -6
  280. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +1 -1
  281. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +22 -9
  282. package/src/global-account/react/components/Send/Send.tsx +39 -15
  283. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +12 -1
  284. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +1 -4
  285. package/src/global-account/react/components/SignInWithB3/components/AuthButton.tsx +9 -1
  286. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +1 -0
  287. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +4 -4
  288. package/src/global-account/react/components/index.ts +1 -1
  289. package/src/global-account/react/components/ui/button.tsx +1 -2
  290. package/src/global-account/react/hooks/__tests__/useUnifiedChainSwitchAndExecute.test.tsx +156 -0
  291. package/src/global-account/react/hooks/index.ts +2 -3
  292. package/src/global-account/react/hooks/useAuth.ts +5 -4
  293. package/src/global-account/react/hooks/useAuthentication.ts +5 -4
  294. package/src/global-account/react/hooks/useBetterAuth.ts +10 -10
  295. package/src/global-account/react/hooks/useClient.ts +11 -2
  296. package/src/global-account/react/hooks/useFirstEOA.tsx +9 -2
  297. package/src/global-account/react/hooks/useNativeBalance.tsx +1 -1
  298. package/src/global-account/react/hooks/usePortfolioBalance.ts +89 -0
  299. package/src/global-account/react/hooks/usePortfolioCollectibles.ts +212 -0
  300. package/src/global-account/react/hooks/useSiwe.native.tsx +1 -1
  301. package/src/global-account/react/hooks/useSiwe.tsx +1 -1
  302. package/src/global-account/react/hooks/useTWAuth.tsx +1 -1
  303. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +47 -31
  304. package/src/global-account/react/stores/useModalStore.ts +14 -2
  305. package/src/global-account/types/b3-api.types.ts +5 -1
  306. package/src/notifications/services/api.ts +1 -0
  307. package/src/shared/constants/chains/b3Chain.ts +4 -43
  308. package/src/shared/constants/chains/supported.ts +9 -48
  309. package/src/shared/constants/index.ts +8 -0
  310. package/src/shared/react/hooks/__tests__/useCurrencyConversion.test.ts +54 -43
  311. package/src/shared/utils/__tests__/zerionPositions.test.ts +248 -0
  312. package/src/shared/utils/chain-transformers.ts +41 -39
  313. package/src/shared/utils/thirdweb-insights.ts +2 -2
  314. package/src/shared/utils/upload.ts +48 -0
  315. package/src/shared/utils/zerionPositions.ts +247 -0
  316. package/src/styles/index.css +27 -0
  317. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  318. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +0 -46
  319. package/dist/cjs/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  320. package/dist/cjs/global-account/react/hooks/useHandleConnectWithPrivy.js +0 -70
  321. package/dist/cjs/global-account/react/hooks/useSimBalance.d.ts +0 -59
  322. package/dist/cjs/global-account/react/hooks/useSimBalance.js +0 -98
  323. package/dist/cjs/global-account/react/hooks/useSimCollectibles.d.ts +0 -45
  324. package/dist/cjs/global-account/react/hooks/useSimCollectibles.js +0 -190
  325. package/dist/cjs/global-account/react/utils/simdune.d.ts +0 -7
  326. package/dist/cjs/global-account/react/utils/simdune.js +0 -21
  327. package/dist/cjs/global-account/types/chain-networks.d.ts +0 -44
  328. package/dist/cjs/global-account/types/chain-networks.js +0 -48
  329. package/dist/cjs/shared/generated/chain-networks.json +0 -684
  330. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  331. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +0 -43
  332. package/dist/esm/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  333. package/dist/esm/global-account/react/hooks/useHandleConnectWithPrivy.js +0 -67
  334. package/dist/esm/global-account/react/hooks/useSimBalance.d.ts +0 -59
  335. package/dist/esm/global-account/react/hooks/useSimBalance.js +0 -93
  336. package/dist/esm/global-account/react/hooks/useSimCollectibles.d.ts +0 -45
  337. package/dist/esm/global-account/react/hooks/useSimCollectibles.js +0 -187
  338. package/dist/esm/global-account/react/utils/simdune.d.ts +0 -7
  339. package/dist/esm/global-account/react/utils/simdune.js +0 -17
  340. package/dist/esm/global-account/types/chain-networks.d.ts +0 -44
  341. package/dist/esm/global-account/types/chain-networks.js +0 -45
  342. package/dist/esm/shared/generated/chain-networks.json +0 -684
  343. package/dist/types/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  344. package/dist/types/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  345. package/dist/types/global-account/react/hooks/useSimBalance.d.ts +0 -59
  346. package/dist/types/global-account/react/hooks/useSimCollectibles.d.ts +0 -45
  347. package/dist/types/global-account/react/utils/simdune.d.ts +0 -7
  348. package/dist/types/global-account/types/chain-networks.d.ts +0 -44
  349. package/src/global-account/react/components/SignInWithB3/SignInWithB3Privy.tsx +0 -63
  350. package/src/global-account/react/hooks/useHandleConnectWithPrivy.tsx +0 -79
  351. package/src/global-account/react/hooks/useSimBalance.ts +0 -164
  352. package/src/global-account/react/hooks/useSimCollectibles.ts +0 -238
  353. package/src/global-account/react/utils/simdune.ts +0 -20
  354. package/src/global-account/types/chain-networks.ts +0 -54
  355. package/src/shared/generated/chain-networks.json +0 -684
@@ -0,0 +1,1676 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ ANYSPEND_EVM_CHAINS: () => ANYSPEND_EVM_CHAINS,
24
+ BLOCK_EXPLORERS: () => BLOCK_EXPLORERS,
25
+ CANONICAL_NAME_ASSETS: () => CANONICAL_NAME_ASSETS,
26
+ CHAIN_IDS: () => CHAIN_IDS,
27
+ CHAIN_ID_TO_NETWORK: () => CHAIN_ID_TO_NETWORK,
28
+ CHAIN_NAMES: () => CHAIN_NAMES,
29
+ CHAIN_TAG_MAP: () => CHAIN_TAG_MAP,
30
+ COINGECKO_MAPPINGS: () => COINGECKO_MAPPINGS,
31
+ FALLBACK_RPC_URLS: () => FALLBACK_RPC_URLS,
32
+ LOGO_URLS: () => LOGO_URLS,
33
+ MANUAL_CHAIN_IDS: () => MANUAL_CHAIN_IDS,
34
+ SOLANA_NATIVE_ASSET: () => SOLANA_NATIVE_ASSET,
35
+ TOKEN_RESOLVER_SCHEMA_VERSION: () => TOKEN_RESOLVER_SCHEMA_VERSION,
36
+ TRUSTWALLET_SLUGS: () => TRUSTWALLET_SLUGS,
37
+ ZERODEV_SUPPORTED_CHAINS: () => ZERODEV_SUPPORTED_CHAINS,
38
+ buildQuicknodeRpcMap: () => buildQuicknodeRpcMap,
39
+ buildQuicknodeUrl: () => buildQuicknodeUrl,
40
+ chainById: () => chainById,
41
+ chainIdsByIntegration: () => chainIdsByIntegration,
42
+ chainNamesByIntegration: () => chainNamesByIntegration,
43
+ chainTypeForIdentifier: () => chainTypeForIdentifier,
44
+ chains: () => chains,
45
+ chainsByIntegration: () => chainsByIntegration,
46
+ createNativeTokenIdentity: () => createNativeTokenIdentity,
47
+ createWrappedNativeTokenIdentity: () => createWrappedNativeTokenIdentity,
48
+ evmChains: () => evmChains,
49
+ findManualToken: () => findManualToken,
50
+ getManualTokens: () => getManualTokens,
51
+ hasManualTokens: () => hasManualTokens,
52
+ isEvmTokenAddress: () => isEvmTokenAddress,
53
+ isProviderTokenAddress: () => isProviderTokenAddress,
54
+ isRegistryResolvedTokenIdentity: () => isRegistryResolvedTokenIdentity,
55
+ isRegistryTokenIdentityCandidate: () => isRegistryTokenIdentityCandidate,
56
+ isResolvedTokenIdentity: () => isResolvedTokenIdentity,
57
+ isSolanaAddress: () => isSolanaAddress,
58
+ isTokenAddressForChain: () => isTokenAddressForChain,
59
+ isTokenIdentityCandidate: () => isTokenIdentityCandidate,
60
+ looksLikeProviderTokenAddress: () => looksLikeProviderTokenAddress,
61
+ looksLikeTokenAddress: () => looksLikeTokenAddress,
62
+ matchCanonicalNativeAssetText: () => matchCanonicalNativeAssetText,
63
+ nativeAssets: () => nativeAssets,
64
+ resolveChainIdentifier: () => resolveChainIdentifier,
65
+ resolveDexScreenerChainIdentifier: () => resolveDexScreenerChainIdentifier,
66
+ tokenAddressFamily: () => tokenAddressFamily,
67
+ tokenAddressKey: () => tokenAddressKey,
68
+ validateChainDefinitions: () => validateChainDefinitions
69
+ });
70
+ module.exports = __toCommonJS(index_exports);
71
+
72
+ // chains.json
73
+ var chains_default = [
74
+ {
75
+ chainId: 1,
76
+ key: "ETHEREUM",
77
+ name: "Ethereum",
78
+ network: "eth",
79
+ dexscreenerNetwork: "ethereum",
80
+ type: "evm",
81
+ isTestnet: false,
82
+ nativeCurrency: {
83
+ name: "Ether",
84
+ symbol: "ETH",
85
+ decimals: 18
86
+ },
87
+ explorer: "https://etherscan.io",
88
+ rpcEnvKey: "RPC_URL_ETHEREUM",
89
+ fallbackRpc: "https://ethereum-rpc.publicnode.com",
90
+ quicknodeSlug: "",
91
+ coingecko: {
92
+ platform: "ethereum",
93
+ nativeCoinId: "ethereum"
94
+ },
95
+ trustwalletSlug: "ethereum",
96
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
97
+ tags: ["eth", "ethereum", "mainnet"],
98
+ integrations: ["zerodev", "morpho", "cow-swap", "railgun", "evm-log", "x402", "anyspend"],
99
+ simulationMode: "fork",
100
+ wrappedNative: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
101
+ geckoTerminalNetwork: "eth"
102
+ },
103
+ {
104
+ chainId: 10,
105
+ key: "OPTIMISM",
106
+ name: "Optimism",
107
+ network: "optimism",
108
+ dexscreenerNetwork: "optimism",
109
+ type: "evm",
110
+ isTestnet: false,
111
+ nativeCurrency: {
112
+ name: "Ether",
113
+ symbol: "ETH",
114
+ decimals: 18
115
+ },
116
+ explorer: "https://optimistic.etherscan.io",
117
+ rpcEnvKey: "RPC_URL_OPTIMISM",
118
+ fallbackRpc: "https://optimism-rpc.publicnode.com",
119
+ quicknodeSlug: "optimism",
120
+ coingecko: {
121
+ platform: "optimistic-ethereum",
122
+ nativeCoinId: "ethereum"
123
+ },
124
+ trustwalletSlug: "optimism",
125
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/optimism/info/logo.png",
126
+ tags: ["optimism"],
127
+ integrations: ["zerodev", "morpho", "x402", "evm-log", "anyspend"],
128
+ wrappedNative: "0x4200000000000000000000000000000000000006",
129
+ geckoTerminalNetwork: "optimism"
130
+ },
131
+ {
132
+ chainId: 25,
133
+ key: "CRONOS",
134
+ name: "Cronos",
135
+ network: "cro",
136
+ dexscreenerNetwork: "cronos",
137
+ type: "evm",
138
+ isTestnet: false,
139
+ nativeCurrency: {
140
+ name: "Cronos",
141
+ symbol: "CRO",
142
+ decimals: 18
143
+ },
144
+ explorer: "https://explorer.cronos.org",
145
+ rpcEnvKey: "RPC_URL_CRONOS",
146
+ fallbackRpc: "https://evm.cronos.org",
147
+ quicknodeSlug: null,
148
+ coingecko: {
149
+ platform: "cronos",
150
+ nativeCoinId: "crypto-com-chain"
151
+ },
152
+ trustwalletSlug: "cronos",
153
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/cronos/info/logo.png",
154
+ tags: ["cronos", "cro"],
155
+ integrations: []
156
+ },
157
+ {
158
+ chainId: 56,
159
+ key: "BSC",
160
+ name: "BNB Chain",
161
+ network: "bsc",
162
+ dexscreenerNetwork: "bsc",
163
+ type: "evm",
164
+ isTestnet: false,
165
+ nativeCurrency: {
166
+ name: "BNB",
167
+ symbol: "BNB",
168
+ decimals: 18
169
+ },
170
+ explorer: "https://bscscan.com",
171
+ rpcEnvKey: "RPC_URL_BSC",
172
+ fallbackRpc: "https://bsc-rpc.publicnode.com",
173
+ quicknodeSlug: "bsc",
174
+ coingecko: {
175
+ platform: "binance-smart-chain",
176
+ nativeCoinId: "binancecoin"
177
+ },
178
+ trustwalletSlug: "smartchain",
179
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/info/logo.png",
180
+ tags: ["bsc", "binance-smart-chain"],
181
+ integrations: ["zerodev", "cow-swap", "railgun", "evm-log", "anyspend"]
182
+ },
183
+ {
184
+ chainId: 100,
185
+ key: "GNOSIS",
186
+ name: "Gnosis",
187
+ network: "xdai",
188
+ dexscreenerNetwork: "gnosis",
189
+ type: "evm",
190
+ isTestnet: false,
191
+ nativeCurrency: {
192
+ name: "xDai",
193
+ symbol: "xDAI",
194
+ decimals: 18
195
+ },
196
+ explorer: "https://gnosisscan.io",
197
+ rpcEnvKey: "RPC_URL_GNOSIS",
198
+ fallbackRpc: "https://gnosis-rpc.publicnode.com",
199
+ quicknodeSlug: "xdai",
200
+ coingecko: {
201
+ platform: "xdai",
202
+ nativeCoinId: "xdai"
203
+ },
204
+ trustwalletSlug: "xdai",
205
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/xdai/info/logo.png",
206
+ tags: ["gnosis"],
207
+ integrations: ["cow-swap"]
208
+ },
209
+ {
210
+ chainId: 130,
211
+ key: "UNICHAIN",
212
+ name: "Unichain",
213
+ network: "unichain",
214
+ dexscreenerNetwork: "unichain",
215
+ type: "evm",
216
+ isTestnet: false,
217
+ nativeCurrency: {
218
+ name: "Ether",
219
+ symbol: "ETH",
220
+ decimals: 18
221
+ },
222
+ explorer: "https://uniscan.xyz",
223
+ rpcEnvKey: "RPC_URL_UNICHAIN",
224
+ fallbackRpc: "https://mainnet.unichain.org",
225
+ quicknodeSlug: "unichain-mainnet",
226
+ coingecko: {
227
+ platform: "unichain",
228
+ nativeCoinId: "ethereum"
229
+ },
230
+ trustwalletSlug: null,
231
+ logoUrl: "https://assets.relay.link/icons/square/130/light.png",
232
+ tags: ["unichain"],
233
+ integrations: []
234
+ },
235
+ {
236
+ chainId: 137,
237
+ key: "POLYGON",
238
+ name: "Polygon",
239
+ network: "matic",
240
+ dexscreenerNetwork: "polygon",
241
+ type: "evm",
242
+ isTestnet: false,
243
+ nativeCurrency: {
244
+ name: "POL",
245
+ symbol: "POL",
246
+ decimals: 18
247
+ },
248
+ explorer: "https://polygonscan.com",
249
+ rpcEnvKey: "RPC_URL_POLYGON",
250
+ fallbackRpc: "https://polygon-bor-rpc.publicnode.com",
251
+ quicknodeSlug: "matic",
252
+ coingecko: {
253
+ platform: "polygon-pos",
254
+ nativeCoinId: "polygon-ecosystem-token"
255
+ },
256
+ trustwalletSlug: "polygon",
257
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
258
+ tags: ["polygon", "polymarket"],
259
+ integrations: ["zerodev", "morpho", "cow-swap", "railgun", "evm-log", "x402", "anyspend"],
260
+ simulationMode: "fork",
261
+ wrappedNative: "0x0d500B1d8E8e8f31E21C99d1Db9A6444d3ADf127",
262
+ geckoTerminalNetwork: "polygon"
263
+ },
264
+ {
265
+ chainId: 146,
266
+ key: "SONIC",
267
+ name: "Sonic",
268
+ network: "sonic",
269
+ dexscreenerNetwork: "sonic",
270
+ type: "evm",
271
+ isTestnet: false,
272
+ nativeCurrency: {
273
+ name: "Sonic",
274
+ symbol: "S",
275
+ decimals: 18
276
+ },
277
+ explorer: "https://sonicscan.org",
278
+ rpcEnvKey: "RPC_URL_SONIC",
279
+ fallbackRpc: "https://sonic-rpc.publicnode.com",
280
+ quicknodeSlug: "sonic-mainnet",
281
+ coingecko: {
282
+ platform: "sonic",
283
+ nativeCoinId: "sonic-3"
284
+ },
285
+ trustwalletSlug: null,
286
+ logoUrl: "https://assets.relay.link/icons/square/146/light.png",
287
+ tags: ["sonic"],
288
+ integrations: []
289
+ },
290
+ {
291
+ chainId: 250,
292
+ key: "FANTOM",
293
+ name: "Fantom",
294
+ network: "ftm",
295
+ dexscreenerNetwork: "fantom",
296
+ type: "evm",
297
+ isTestnet: false,
298
+ nativeCurrency: {
299
+ name: "Fantom",
300
+ symbol: "FTM",
301
+ decimals: 18
302
+ },
303
+ explorer: "https://ftmscan.com",
304
+ rpcEnvKey: "RPC_URL_FANTOM",
305
+ fallbackRpc: "https://rpc.ftm.tools",
306
+ quicknodeSlug: "fantom",
307
+ coingecko: {
308
+ platform: "fantom",
309
+ nativeCoinId: "fantom"
310
+ },
311
+ trustwalletSlug: "fantom",
312
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/fantom/info/logo.png",
313
+ tags: ["fantom"],
314
+ integrations: []
315
+ },
316
+ {
317
+ chainId: 324,
318
+ key: "ZKSYNC",
319
+ name: "zkSync Era",
320
+ network: "zksync",
321
+ dexscreenerNetwork: "zksync",
322
+ type: "evm",
323
+ isTestnet: false,
324
+ nativeCurrency: {
325
+ name: "Ether",
326
+ symbol: "ETH",
327
+ decimals: 18
328
+ },
329
+ explorer: "https://explorer.zksync.io",
330
+ rpcEnvKey: "RPC_URL_ZKSYNC",
331
+ fallbackRpc: "https://mainnet.era.zksync.io",
332
+ quicknodeSlug: "zksync-mainnet",
333
+ coingecko: {
334
+ platform: "zksync",
335
+ nativeCoinId: "ethereum"
336
+ },
337
+ trustwalletSlug: "zksync",
338
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/zksync/info/logo.png",
339
+ tags: ["zksync", "zksync-era"],
340
+ integrations: ["zerodev"]
341
+ },
342
+ {
343
+ chainId: 480,
344
+ key: "WORLD_CHAIN",
345
+ name: "World Chain",
346
+ network: "worldchain",
347
+ dexscreenerNetwork: "worldchain",
348
+ type: "evm",
349
+ isTestnet: false,
350
+ nativeCurrency: {
351
+ name: "Ether",
352
+ symbol: "ETH",
353
+ decimals: 18
354
+ },
355
+ explorer: "https://worldscan.org",
356
+ rpcEnvKey: "RPC_URL_WORLDCHAIN",
357
+ fallbackRpc: "https://worldchain-mainnet.g.alchemy.com/public",
358
+ quicknodeSlug: "worldchain-mainnet",
359
+ coingecko: {
360
+ platform: "world-chain",
361
+ nativeCoinId: "ethereum"
362
+ },
363
+ trustwalletSlug: null,
364
+ logoUrl: "https://assets.relay.link/icons/square/480/light.png",
365
+ tags: ["worldchain"],
366
+ integrations: []
367
+ },
368
+ {
369
+ chainId: 999,
370
+ key: "HYPEREVM",
371
+ name: "HyperEVM",
372
+ network: "hyperevm",
373
+ dexscreenerNetwork: "hyperevm",
374
+ type: "evm",
375
+ isTestnet: false,
376
+ nativeCurrency: {
377
+ name: "Hyperliquid",
378
+ symbol: "HYPE",
379
+ decimals: 18
380
+ },
381
+ explorer: "https://hyperevmscan.io/",
382
+ rpcEnvKey: "RPC_URL_HYPEREVM",
383
+ fallbackRpc: "https://rpc.hyperliquid.xyz/evm",
384
+ quicknodeSlug: "hype-mainnet",
385
+ quicknodeRpcPath: "/evm",
386
+ coingecko: {
387
+ platform: "hyperevm",
388
+ nativeCoinId: "hyperliquid"
389
+ },
390
+ trustwalletSlug: null,
391
+ logoUrl: "https://s2.coinmarketcap.com/static/img/coins/64x64/32196.png",
392
+ tags: ["hyperevm", "hype"],
393
+ integrations: ["anyspend"],
394
+ wrappedNative: "0x5555555555555555555555555555555555555555",
395
+ manualTokens: [
396
+ {
397
+ address: "0xb88339cb7199b77e23db6e890353e22632ba630f",
398
+ symbol: "USDC",
399
+ decimals: 6,
400
+ name: "USD Coin",
401
+ logoUrl: "https://coin-images.coingecko.com/coins/images/6319/small/usdc.png"
402
+ },
403
+ {
404
+ address: "0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb",
405
+ symbol: "USDT0",
406
+ decimals: 6,
407
+ name: "Tether USD",
408
+ logoUrl: "https://coin-images.coingecko.com/coins/images/325/small/Tether.png"
409
+ },
410
+ {
411
+ address: "0xa3d68b74bf0528fdd07263c60d6488749044914b",
412
+ symbol: "weETH",
413
+ decimals: 18,
414
+ name: "Wrapped eETH",
415
+ logoUrl: "https://coin-images.coingecko.com/coins/images/33033/small/weETH.png"
416
+ },
417
+ {
418
+ address: "0xfa44c2634ff17cbe26dc3007d36bd61c79068c14",
419
+ symbol: "PENGU",
420
+ decimals: 18,
421
+ name: "Pudgy Penguins",
422
+ logoUrl: "https://coin-images.coingecko.com/coins/images/52622/small/PUDGY_PENGUINS.png"
423
+ },
424
+ {
425
+ address: "0x5555555555555555555555555555555555555555",
426
+ symbol: "WHYPE",
427
+ decimals: 18,
428
+ name: "Wrapped HYPE",
429
+ logoUrl: "https://s2.coinmarketcap.com/static/img/coins/64x64/32196.png"
430
+ }
431
+ ]
432
+ },
433
+ {
434
+ chainId: 1088,
435
+ key: "METIS",
436
+ name: "Metis",
437
+ network: "metis",
438
+ dexscreenerNetwork: "metis",
439
+ type: "evm",
440
+ isTestnet: false,
441
+ nativeCurrency: {
442
+ name: "Metis",
443
+ symbol: "METIS",
444
+ decimals: 18
445
+ },
446
+ explorer: "https://explorer.metis.io",
447
+ rpcEnvKey: "RPC_URL_METIS",
448
+ fallbackRpc: "https://metis-rpc.publicnode.com",
449
+ quicknodeSlug: null,
450
+ coingecko: {
451
+ platform: "metis-andromeda",
452
+ nativeCoinId: "metis-token"
453
+ },
454
+ trustwalletSlug: "metis",
455
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/metis/info/logo.png",
456
+ tags: ["metis"],
457
+ integrations: []
458
+ },
459
+ {
460
+ chainId: 1101,
461
+ key: "POLYGON_ZKEVM",
462
+ name: "Polygon zkEVM",
463
+ network: "polygon-zkevm",
464
+ dexscreenerNetwork: "polygonzkevm",
465
+ type: "evm",
466
+ isTestnet: false,
467
+ nativeCurrency: {
468
+ name: "Ether",
469
+ symbol: "ETH",
470
+ decimals: 18
471
+ },
472
+ explorer: "https://zkevm.polygonscan.com",
473
+ rpcEnvKey: "RPC_URL_POLYGON_ZKEVM",
474
+ fallbackRpc: "https://zkevm-rpc.com",
475
+ quicknodeSlug: null,
476
+ coingecko: {
477
+ platform: "polygon-zkevm",
478
+ nativeCoinId: "ethereum"
479
+ },
480
+ trustwalletSlug: null,
481
+ logoUrl: "https://assets.relay.link/icons/square/1101/light.png",
482
+ tags: ["polygon-zkevm"],
483
+ integrations: []
484
+ },
485
+ {
486
+ chainId: 1284,
487
+ key: "MOONBEAM",
488
+ name: "Moonbeam",
489
+ network: "glmr",
490
+ dexscreenerNetwork: "moonbeam",
491
+ type: "evm",
492
+ isTestnet: false,
493
+ nativeCurrency: {
494
+ name: "Glimmer",
495
+ symbol: "GLMR",
496
+ decimals: 18
497
+ },
498
+ explorer: "https://moonscan.io",
499
+ rpcEnvKey: "RPC_URL_MOONBEAM",
500
+ fallbackRpc: "https://moonbeam-rpc.publicnode.com",
501
+ quicknodeSlug: null,
502
+ coingecko: {
503
+ platform: "moonbeam",
504
+ nativeCoinId: "moonbeam"
505
+ },
506
+ trustwalletSlug: "moonbeam",
507
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/moonbeam/info/logo.png",
508
+ tags: ["moonbeam"],
509
+ integrations: []
510
+ },
511
+ {
512
+ chainId: 1868,
513
+ key: "SONEIUM",
514
+ name: "Soneium",
515
+ network: "soneium",
516
+ dexscreenerNetwork: "soneium",
517
+ type: "evm",
518
+ isTestnet: false,
519
+ nativeCurrency: {
520
+ name: "Ether",
521
+ symbol: "ETH",
522
+ decimals: 18
523
+ },
524
+ explorer: "https://soneium.blockscout.com",
525
+ rpcEnvKey: "RPC_URL_SONEIUM",
526
+ fallbackRpc: "https://rpc.soneium.org",
527
+ quicknodeSlug: "soneium-mainnet",
528
+ coingecko: {
529
+ platform: "soneium",
530
+ nativeCoinId: "ethereum"
531
+ },
532
+ trustwalletSlug: null,
533
+ logoUrl: "https://assets.relay.link/icons/square/1868/light.png",
534
+ tags: ["soneium"],
535
+ integrations: []
536
+ },
537
+ {
538
+ chainId: 2020,
539
+ key: "RONIN",
540
+ name: "Ronin",
541
+ network: "ronin",
542
+ type: "evm",
543
+ isTestnet: false,
544
+ nativeCurrency: {
545
+ name: "RON",
546
+ symbol: "RON",
547
+ decimals: 18
548
+ },
549
+ explorer: "https://app.roninchain.com",
550
+ rpcEnvKey: "RPC_URL_RONIN",
551
+ fallbackRpc: "https://api.roninchain.com/rpc",
552
+ quicknodeSlug: null,
553
+ coingecko: {
554
+ platform: "ronin",
555
+ nativeCoinId: "ronin"
556
+ },
557
+ trustwalletSlug: "ronin",
558
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ronin/info/logo.png",
559
+ tags: ["ronin"],
560
+ integrations: []
561
+ },
562
+ {
563
+ chainId: 2741,
564
+ key: "ABSTRACT",
565
+ name: "Abstract",
566
+ network: "abstract",
567
+ dexscreenerNetwork: "abstract",
568
+ type: "evm",
569
+ isTestnet: false,
570
+ nativeCurrency: {
571
+ name: "Ether",
572
+ symbol: "ETH",
573
+ decimals: 18
574
+ },
575
+ explorer: "https://abscan.org",
576
+ rpcEnvKey: "RPC_URL_ABSTRACT",
577
+ fallbackRpc: "https://api.mainnet.abs.xyz",
578
+ quicknodeSlug: "abstract-mainnet",
579
+ coingecko: {
580
+ platform: "abstract",
581
+ nativeCoinId: "ethereum"
582
+ },
583
+ trustwalletSlug: null,
584
+ logoUrl: "https://assets.relay.link/icons/square/2741/light.png",
585
+ tags: ["abstract"],
586
+ integrations: ["anyspend"]
587
+ },
588
+ {
589
+ chainId: 4663,
590
+ key: "ROBINHOOD",
591
+ name: "Robinhood Chain",
592
+ network: "robinhood",
593
+ dexscreenerNetwork: "robinhood",
594
+ type: "evm",
595
+ isTestnet: false,
596
+ nativeCurrency: {
597
+ name: "Ether",
598
+ symbol: "ETH",
599
+ decimals: 18
600
+ },
601
+ explorer: "https://robinhoodchain.blockscout.com",
602
+ rpcEnvKey: "RPC_URL_ROBINHOOD",
603
+ fallbackRpc: "https://rpc.mainnet.chain.robinhood.com",
604
+ quicknodeSlug: "robinhood-mainnet",
605
+ coingecko: {
606
+ platform: "robinhood",
607
+ nativeCoinId: "ethereum"
608
+ },
609
+ trustwalletSlug: "robinhoodchain",
610
+ logoUrl: "https://assets.relay.link/icons/square/4663/light.png",
611
+ tags: ["robinhood"],
612
+ integrations: ["anyspend", "morpho"],
613
+ stablecoins: [{ symbol: "USDG", address: "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168" }],
614
+ wrappedNative: "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"
615
+ },
616
+ {
617
+ chainId: 5e3,
618
+ key: "MANTLE",
619
+ name: "Mantle",
620
+ network: "mantle",
621
+ dexscreenerNetwork: "mantle",
622
+ type: "evm",
623
+ isTestnet: false,
624
+ nativeCurrency: {
625
+ name: "Mantle",
626
+ symbol: "MNT",
627
+ decimals: 18
628
+ },
629
+ explorer: "https://mantlescan.xyz",
630
+ rpcEnvKey: "RPC_URL_MANTLE",
631
+ fallbackRpc: "https://mantle-rpc.publicnode.com",
632
+ quicknodeSlug: "mantle-mainnet",
633
+ coingecko: {
634
+ platform: "mantle",
635
+ nativeCoinId: "mantle"
636
+ },
637
+ trustwalletSlug: "mantle",
638
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/mantle/info/logo.png",
639
+ tags: ["mantle"],
640
+ integrations: ["zerodev"]
641
+ },
642
+ {
643
+ chainId: 8333,
644
+ key: "B3",
645
+ name: "B3",
646
+ network: "b3",
647
+ type: "evm",
648
+ isTestnet: false,
649
+ nativeCurrency: {
650
+ name: "Ether",
651
+ symbol: "ETH",
652
+ decimals: 18
653
+ },
654
+ explorer: "https://explorer.b3.fun",
655
+ rpcEnvKey: "RPC_URL_B3",
656
+ fallbackRpc: "https://mainnet-rpc.b3.fun",
657
+ quicknodeSlug: "b3-mainnet",
658
+ coingecko: null,
659
+ trustwalletSlug: null,
660
+ logoUrl: "https://assets.relay.link/icons/square/8333/light.png",
661
+ tags: ["b3"],
662
+ integrations: ["anyspend"]
663
+ },
664
+ {
665
+ chainId: 8453,
666
+ key: "BASE",
667
+ name: "Base",
668
+ network: "base",
669
+ dexscreenerNetwork: "base",
670
+ type: "evm",
671
+ isTestnet: false,
672
+ nativeCurrency: {
673
+ name: "Ether",
674
+ symbol: "ETH",
675
+ decimals: 18
676
+ },
677
+ explorer: "https://basescan.org",
678
+ rpcEnvKey: "RPC_URL_BASE",
679
+ fallbackRpc: "https://base-rpc.publicnode.com",
680
+ quicknodeSlug: "base-mainnet",
681
+ coingecko: {
682
+ platform: "base",
683
+ nativeCoinId: "ethereum"
684
+ },
685
+ trustwalletSlug: "base",
686
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/base/info/logo.png",
687
+ tags: ["base"],
688
+ integrations: ["zerodev", "morpho", "aerodrome", "cow-swap", "evm-log", "x402", "anyspend"],
689
+ simulationMode: "fork",
690
+ wrappedNative: "0x4200000000000000000000000000000000000006",
691
+ geckoTerminalNetwork: "base"
692
+ },
693
+ {
694
+ chainId: 34443,
695
+ key: "MODE",
696
+ name: "Mode",
697
+ network: "mode",
698
+ dexscreenerNetwork: "mode",
699
+ type: "evm",
700
+ isTestnet: false,
701
+ nativeCurrency: {
702
+ name: "Ether",
703
+ symbol: "ETH",
704
+ decimals: 18
705
+ },
706
+ explorer: "https://modescan.io",
707
+ rpcEnvKey: "RPC_URL_MODE",
708
+ fallbackRpc: "https://mainnet.mode.network",
709
+ quicknodeSlug: null,
710
+ coingecko: {
711
+ platform: "mode",
712
+ nativeCoinId: "ethereum"
713
+ },
714
+ trustwalletSlug: null,
715
+ logoUrl: "https://assets.relay.link/icons/square/34443/light.png",
716
+ tags: ["mode"],
717
+ integrations: ["zerodev"]
718
+ },
719
+ {
720
+ chainId: 42161,
721
+ key: "ARBITRUM",
722
+ name: "Arbitrum",
723
+ network: "arbitrum",
724
+ dexscreenerNetwork: "arbitrum",
725
+ type: "evm",
726
+ isTestnet: false,
727
+ nativeCurrency: {
728
+ name: "Ether",
729
+ symbol: "ETH",
730
+ decimals: 18
731
+ },
732
+ explorer: "https://arbiscan.io",
733
+ rpcEnvKey: "RPC_URL_ARBITRUM",
734
+ fallbackRpc: "https://arbitrum-one-rpc.publicnode.com",
735
+ quicknodeSlug: "arbitrum-mainnet",
736
+ coingecko: {
737
+ platform: "arbitrum-one",
738
+ nativeCoinId: "ethereum"
739
+ },
740
+ trustwalletSlug: "arbitrum",
741
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/arbitrum/info/logo.png",
742
+ tags: ["arbitrum"],
743
+ integrations: ["zerodev", "morpho", "cow-swap", "railgun", "evm-log", "x402", "anyspend"],
744
+ simulationMode: "fork",
745
+ wrappedNative: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
746
+ geckoTerminalNetwork: "arbitrum"
747
+ },
748
+ {
749
+ chainId: 42170,
750
+ key: "ARBITRUM_NOVA",
751
+ name: "Arbitrum Nova",
752
+ network: "arbitrum_nova",
753
+ dexscreenerNetwork: "arbitrumnova",
754
+ type: "evm",
755
+ isTestnet: false,
756
+ nativeCurrency: {
757
+ name: "Ether",
758
+ symbol: "ETH",
759
+ decimals: 18
760
+ },
761
+ explorer: "https://nova.arbiscan.io",
762
+ rpcEnvKey: "RPC_URL_ARBITRUM_NOVA",
763
+ fallbackRpc: "https://arbitrum-nova-rpc.publicnode.com",
764
+ quicknodeSlug: null,
765
+ coingecko: {
766
+ platform: "arbitrum-nova",
767
+ nativeCoinId: "ethereum"
768
+ },
769
+ trustwalletSlug: null,
770
+ logoUrl: "https://assets.relay.link/icons/square/42170/light.png",
771
+ tags: ["arbitrum-nova"],
772
+ integrations: []
773
+ },
774
+ {
775
+ chainId: 42220,
776
+ key: "CELO",
777
+ name: "Celo",
778
+ network: "celo",
779
+ dexscreenerNetwork: "celo",
780
+ type: "evm",
781
+ isTestnet: false,
782
+ nativeCurrency: {
783
+ name: "Celo",
784
+ symbol: "CELO",
785
+ decimals: 18
786
+ },
787
+ explorer: "https://celoscan.io",
788
+ rpcEnvKey: "RPC_URL_CELO",
789
+ fallbackRpc: "https://celo-rpc.publicnode.com",
790
+ quicknodeSlug: "celo-mainnet",
791
+ coingecko: {
792
+ platform: "celo",
793
+ nativeCoinId: "celo"
794
+ },
795
+ trustwalletSlug: "celo",
796
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/celo/info/logo.png",
797
+ tags: ["celo"],
798
+ integrations: []
799
+ },
800
+ {
801
+ chainId: 43114,
802
+ key: "AVALANCHE",
803
+ name: "Avalanche",
804
+ network: "avax",
805
+ dexscreenerNetwork: "avalanche",
806
+ type: "evm",
807
+ isTestnet: false,
808
+ nativeCurrency: {
809
+ name: "Avalanche",
810
+ symbol: "AVAX",
811
+ decimals: 18
812
+ },
813
+ explorer: "https://snowtrace.io",
814
+ rpcEnvKey: "RPC_URL_AVALANCHE",
815
+ fallbackRpc: "https://avalanche-c-chain-rpc.publicnode.com",
816
+ quicknodeSlug: "avalanche-mainnet",
817
+ quicknodeRpcPath: "/ext/bc/C/rpc/",
818
+ coingecko: {
819
+ platform: "avalanche",
820
+ nativeCoinId: "avalanche-2"
821
+ },
822
+ trustwalletSlug: "avalanchec",
823
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec/info/logo.png",
824
+ tags: ["avalanche"],
825
+ integrations: ["zerodev", "cow-swap", "x402", "evm-log", "anyspend"]
826
+ },
827
+ {
828
+ chainId: 48900,
829
+ key: "ZIRCUIT",
830
+ name: "Zircuit",
831
+ network: "zircuit",
832
+ type: "evm",
833
+ isTestnet: false,
834
+ nativeCurrency: {
835
+ name: "Ether",
836
+ symbol: "ETH",
837
+ decimals: 18
838
+ },
839
+ explorer: "https://explorer.zircuit.com",
840
+ rpcEnvKey: "RPC_URL_ZIRCUIT",
841
+ fallbackRpc: "https://mainnet.zircuit.com",
842
+ quicknodeSlug: null,
843
+ coingecko: {
844
+ platform: "zircuit",
845
+ nativeCoinId: "weth"
846
+ },
847
+ trustwalletSlug: null,
848
+ logoUrl: "https://assets.relay.link/icons/square/48900/light.png",
849
+ tags: ["zircuit"],
850
+ integrations: []
851
+ },
852
+ {
853
+ chainId: 59144,
854
+ key: "LINEA",
855
+ name: "Linea",
856
+ network: "linea",
857
+ dexscreenerNetwork: "linea",
858
+ type: "evm",
859
+ isTestnet: false,
860
+ nativeCurrency: {
861
+ name: "Ether",
862
+ symbol: "ETH",
863
+ decimals: 18
864
+ },
865
+ explorer: "https://lineascan.build",
866
+ rpcEnvKey: "RPC_URL_LINEA",
867
+ fallbackRpc: "https://linea-rpc.publicnode.com",
868
+ quicknodeSlug: "linea-mainnet",
869
+ coingecko: {
870
+ platform: "linea",
871
+ nativeCoinId: "ethereum"
872
+ },
873
+ trustwalletSlug: "linea",
874
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/linea/info/logo.png",
875
+ tags: ["linea"],
876
+ integrations: ["zerodev", "evm-log"]
877
+ },
878
+ {
879
+ chainId: 80094,
880
+ key: "BERACHAIN",
881
+ name: "Berachain",
882
+ network: "berachain",
883
+ dexscreenerNetwork: "berachain",
884
+ type: "evm",
885
+ isTestnet: false,
886
+ nativeCurrency: {
887
+ name: "BERA",
888
+ symbol: "BERA",
889
+ decimals: 18
890
+ },
891
+ explorer: "https://berascan.com",
892
+ rpcEnvKey: "RPC_URL_BERACHAIN",
893
+ fallbackRpc: "https://berachain-rpc.publicnode.com",
894
+ quicknodeSlug: null,
895
+ coingecko: {
896
+ platform: "berachain",
897
+ nativeCoinId: "berachain-bera"
898
+ },
899
+ trustwalletSlug: null,
900
+ logoUrl: "https://assets.relay.link/icons/square/80094/light.png",
901
+ tags: ["berachain"],
902
+ integrations: []
903
+ },
904
+ {
905
+ chainId: 81457,
906
+ key: "BLAST",
907
+ name: "Blast",
908
+ network: "blast",
909
+ dexscreenerNetwork: "blast",
910
+ type: "evm",
911
+ isTestnet: false,
912
+ nativeCurrency: {
913
+ name: "Ether",
914
+ symbol: "ETH",
915
+ decimals: 18
916
+ },
917
+ explorer: "https://blastscan.io",
918
+ rpcEnvKey: "RPC_URL_BLAST",
919
+ fallbackRpc: "https://blast-rpc.publicnode.com",
920
+ quicknodeSlug: "blast-mainnet",
921
+ coingecko: {
922
+ platform: "blast",
923
+ nativeCoinId: "ethereum"
924
+ },
925
+ trustwalletSlug: "blast",
926
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/blast/info/logo.png",
927
+ tags: ["blast"],
928
+ integrations: ["zerodev"]
929
+ },
930
+ {
931
+ chainId: 98866,
932
+ key: "PLUME",
933
+ name: "Plume",
934
+ network: "plume",
935
+ type: "evm",
936
+ isTestnet: false,
937
+ nativeCurrency: {
938
+ name: "Plume",
939
+ symbol: "PLUME",
940
+ decimals: 18
941
+ },
942
+ explorer: "https://explorer.plume.org",
943
+ rpcEnvKey: "RPC_URL_PLUME",
944
+ fallbackRpc: "https://rpc.plume.org",
945
+ quicknodeSlug: null,
946
+ coingecko: {
947
+ platform: "plume-network",
948
+ nativeCoinId: "plume"
949
+ },
950
+ trustwalletSlug: null,
951
+ logoUrl: "https://cdn.b3.fun/b3os-icons/plume.svg",
952
+ tags: ["plume"],
953
+ integrations: ["anyspend"],
954
+ manualTokens: [
955
+ {
956
+ address: "0xca59ca09e5602fae8b629dee83ffa819741f14be",
957
+ symbol: "WETH",
958
+ decimals: 18,
959
+ name: "WETH",
960
+ logoUrl: "https://coin-images.coingecko.com/coins/images/2518/small/weth.png?1696503332"
961
+ },
962
+ {
963
+ address: "0xea237441c92cae6fc17caaf9a7acb3f953be4bd1",
964
+ symbol: "WPLUME",
965
+ decimals: 18,
966
+ name: "Wrapped Plume",
967
+ logoUrl: "https://coin-images.coingecko.com/coins/images/53623/small/plume-token.png?1736896935"
968
+ },
969
+ {
970
+ address: "0xdddd73f5df1f0dc31373357beac77545dc5a6f3f",
971
+ symbol: "pUSD",
972
+ decimals: 6,
973
+ name: "Plume USD",
974
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55542/small/pUSD-token.png?1746610746"
975
+ },
976
+ {
977
+ address: "0xe72fe64840f4ef80e3ec73a1c749491b5c938cb9",
978
+ symbol: "nTBILL",
979
+ decimals: 6,
980
+ name: "Nest Treasuries Vault",
981
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55513/small/nTBILL-token.png?1746437745"
982
+ },
983
+ {
984
+ address: "0x593ccca4c4bf58b7526a4c164ceef4003c6388db",
985
+ symbol: "nALPHA",
986
+ decimals: 6,
987
+ name: "Nest Alpha Vault",
988
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55541/small/nALPHA-token.png?1746610637"
989
+ },
990
+ {
991
+ address: "0x119dd7daff816f29d7ee47596ae5e4bdc4299165",
992
+ symbol: "nOPAL",
993
+ decimals: 6,
994
+ name: "Nest BlackOpal LiquidStone II Vault",
995
+ logoUrl: "https://coin-images.coingecko.com/coins/images/70787/small/BlackOpal_Vault.png?1763752532"
996
+ },
997
+ {
998
+ address: "0x11113ff3a60c2450f4b22515cb760417259ee94b",
999
+ symbol: "nBASIS",
1000
+ decimals: 6,
1001
+ name: "Nest Basis",
1002
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55514/small/nBASIS-token.png?1746438043"
1003
+ },
1004
+ {
1005
+ address: "0x29bf22381a5811dec89dc7b46a5ce57ad02c0240",
1006
+ symbol: "nWISDOM",
1007
+ decimals: 6,
1008
+ name: "Nest WisdomTree Vault",
1009
+ logoUrl: "https://coin-images.coingecko.com/coins/images/70669/small/Nest_Wisdom_Vault.png?1763016395"
1010
+ },
1011
+ {
1012
+ address: "0xa5f78b2a0ab85429d2dfbf8b60abc70f4cec066c",
1013
+ symbol: "nCREDIT",
1014
+ decimals: 6,
1015
+ name: "Nest Credit Vault",
1016
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55516/small/nCREDIT-token.png?1746438983"
1017
+ },
1018
+ {
1019
+ address: "0xbfc5770631641719cd1cf809d8325b146aed19de",
1020
+ symbol: "nINSTO",
1021
+ decimals: 6,
1022
+ name: "Nest Institutional Vault",
1023
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55517/small/nINSTO-token.png?1746439028"
1024
+ },
1025
+ {
1026
+ address: "0x9fbc367b9bb966a2a537989817a088afcaffdc4c",
1027
+ symbol: "nELIXIR",
1028
+ decimals: 6,
1029
+ name: "Nest Elixir Vault",
1030
+ logoUrl: "https://coin-images.coingecko.com/coins/images/55469/small/nELIXIR-token.png?1746604311"
1031
+ },
1032
+ {
1033
+ address: "0x2a3e301dbd45c143dfbb7b1ce1c55bf0bbf161cb",
1034
+ symbol: "nACRDX",
1035
+ decimals: 6,
1036
+ name: "Nest Apollo ACRDX Vault",
1037
+ logoUrl: "https://coin-images.coingecko.com/coins/images/70512/small/Nest_ACRDX_Vault.png?1762268426"
1038
+ },
1039
+ {
1040
+ address: "0x9d08946ca5856f882a56c29042fbedc5142663b9",
1041
+ symbol: "nMNRL",
1042
+ decimals: 6,
1043
+ name: "Nest Mineral Vault",
1044
+ logoUrl: "https://coin-images.coingecko.com/coins/images/70513/small/Nest_MNRL_Vault.png?1762268451"
1045
+ }
1046
+ ],
1047
+ wrappedNative: "0xea237441c92cae6fc17caaf9a7acb3f953be4bd1",
1048
+ geckoTerminalNetwork: "plume-network"
1049
+ },
1050
+ {
1051
+ chainId: 167e3,
1052
+ key: "TAIKO",
1053
+ name: "Taiko",
1054
+ network: "taiko",
1055
+ type: "evm",
1056
+ isTestnet: false,
1057
+ nativeCurrency: {
1058
+ name: "Ether",
1059
+ symbol: "ETH",
1060
+ decimals: 18
1061
+ },
1062
+ explorer: "https://taikoscan.io",
1063
+ rpcEnvKey: "RPC_URL_TAIKO",
1064
+ fallbackRpc: "https://rpc.mainnet.taiko.xyz",
1065
+ quicknodeSlug: null,
1066
+ coingecko: {
1067
+ platform: "taiko",
1068
+ nativeCoinId: "ethereum"
1069
+ },
1070
+ trustwalletSlug: null,
1071
+ logoUrl: "https://assets.relay.link/icons/square/167000/light.png",
1072
+ tags: ["taiko"],
1073
+ integrations: []
1074
+ },
1075
+ {
1076
+ chainId: 534352,
1077
+ key: "SCROLL",
1078
+ name: "Scroll",
1079
+ network: "scroll",
1080
+ dexscreenerNetwork: "scroll",
1081
+ type: "evm",
1082
+ isTestnet: false,
1083
+ nativeCurrency: {
1084
+ name: "Ether",
1085
+ symbol: "ETH",
1086
+ decimals: 18
1087
+ },
1088
+ explorer: "https://scrollscan.com",
1089
+ rpcEnvKey: "RPC_URL_SCROLL",
1090
+ fallbackRpc: "https://scroll-rpc.publicnode.com",
1091
+ quicknodeSlug: "scroll-mainnet",
1092
+ coingecko: {
1093
+ platform: "scroll",
1094
+ nativeCoinId: "ethereum"
1095
+ },
1096
+ trustwalletSlug: "scroll",
1097
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/scroll/info/logo.png",
1098
+ tags: ["scroll"],
1099
+ integrations: ["zerodev", "evm-log"]
1100
+ },
1101
+ {
1102
+ chainId: 7777777,
1103
+ key: "ZORA",
1104
+ name: "Zora",
1105
+ network: "zora",
1106
+ type: "evm",
1107
+ isTestnet: false,
1108
+ nativeCurrency: {
1109
+ name: "Ether",
1110
+ symbol: "ETH",
1111
+ decimals: 18
1112
+ },
1113
+ explorer: "https://explorer.zora.energy",
1114
+ rpcEnvKey: "RPC_URL_ZORA",
1115
+ fallbackRpc: "https://rpc.zora.energy",
1116
+ quicknodeSlug: null,
1117
+ coingecko: {
1118
+ platform: "zora-network",
1119
+ nativeCoinId: "ethereum"
1120
+ },
1121
+ trustwalletSlug: null,
1122
+ logoUrl: "https://assets.relay.link/icons/square/7777777/light.png",
1123
+ tags: ["zora"],
1124
+ integrations: []
1125
+ },
1126
+ {
1127
+ chainId: 666666666,
1128
+ key: "DEGEN",
1129
+ name: "Degen",
1130
+ network: "degen",
1131
+ dexscreenerNetwork: "degenchain",
1132
+ type: "evm",
1133
+ isTestnet: false,
1134
+ nativeCurrency: {
1135
+ name: "DEGEN",
1136
+ symbol: "DEGEN",
1137
+ decimals: 18
1138
+ },
1139
+ explorer: "https://explorer.degen.tips",
1140
+ rpcEnvKey: "RPC_URL_DEGEN",
1141
+ fallbackRpc: "https://rpc.degen.tips",
1142
+ quicknodeSlug: null,
1143
+ coingecko: {
1144
+ platform: "degen-chain",
1145
+ nativeCoinId: "degen-base"
1146
+ },
1147
+ trustwalletSlug: null,
1148
+ logoUrl: "https://assets.relay.link/icons/square/666666666/light.png",
1149
+ tags: ["degen"],
1150
+ integrations: []
1151
+ },
1152
+ {
1153
+ chainId: 1313161554,
1154
+ key: "AURORA",
1155
+ name: "Aurora",
1156
+ network: "aurora",
1157
+ type: "evm",
1158
+ isTestnet: false,
1159
+ nativeCurrency: {
1160
+ name: "Ether",
1161
+ symbol: "ETH",
1162
+ decimals: 18
1163
+ },
1164
+ explorer: "https://explorer.aurora.dev",
1165
+ rpcEnvKey: "RPC_URL_AURORA",
1166
+ fallbackRpc: "https://mainnet.aurora.dev",
1167
+ quicknodeSlug: null,
1168
+ coingecko: {
1169
+ platform: "aurora",
1170
+ nativeCoinId: "ethereum"
1171
+ },
1172
+ trustwalletSlug: "aurora",
1173
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/aurora/info/logo.png",
1174
+ tags: ["aurora"],
1175
+ integrations: []
1176
+ },
1177
+ {
1178
+ chainId: 7565164,
1179
+ key: "SOLANA",
1180
+ name: "Solana",
1181
+ network: "solana",
1182
+ dexscreenerNetwork: "solana",
1183
+ type: "solana",
1184
+ isTestnet: false,
1185
+ nativeCurrency: {
1186
+ name: "SOL",
1187
+ symbol: "SOL",
1188
+ decimals: 9
1189
+ },
1190
+ explorer: "https://solscan.io",
1191
+ rpcEnvKey: "RPC_URL_SOLANA",
1192
+ fallbackRpc: null,
1193
+ quicknodeSlug: "solana-mainnet",
1194
+ coingecko: {
1195
+ platform: "solana",
1196
+ nativeCoinId: "solana"
1197
+ },
1198
+ trustwalletSlug: "solana",
1199
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png",
1200
+ tags: ["solana"],
1201
+ integrations: ["x402", "anyspend"],
1202
+ wrappedNative: "So11111111111111111111111111111111111111112",
1203
+ wrappedNativeCurrency: {
1204
+ name: "Wrapped SOL",
1205
+ symbol: "wSOL",
1206
+ decimals: 9
1207
+ }
1208
+ },
1209
+ {
1210
+ chainId: 7565165,
1211
+ key: "SOLANA_DEVNET",
1212
+ name: "Solana Devnet",
1213
+ network: "solana-devnet",
1214
+ type: "solana",
1215
+ isTestnet: true,
1216
+ nativeCurrency: {
1217
+ name: "SOL",
1218
+ symbol: "SOL",
1219
+ decimals: 9
1220
+ },
1221
+ explorer: "https://solscan.io",
1222
+ rpcEnvKey: "RPC_URL_SOLANA_DEVNET",
1223
+ fallbackRpc: null,
1224
+ quicknodeSlug: null,
1225
+ coingecko: null,
1226
+ trustwalletSlug: "solana",
1227
+ logoUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png",
1228
+ tags: ["solana-devnet"],
1229
+ integrations: []
1230
+ },
1231
+ {
1232
+ chainId: 1993,
1233
+ key: "B3_SEPOLIA",
1234
+ name: "B3 Sepolia",
1235
+ network: "b3-sepolia",
1236
+ type: "evm",
1237
+ isTestnet: true,
1238
+ nativeCurrency: {
1239
+ name: "Ether",
1240
+ symbol: "ETH",
1241
+ decimals: 18
1242
+ },
1243
+ explorer: "https://sepolia.explorer.b3.fun",
1244
+ rpcEnvKey: "RPC_URL_B3_SEPOLIA",
1245
+ fallbackRpc: "https://testnet-rpc.b3.fun",
1246
+ quicknodeSlug: null,
1247
+ coingecko: null,
1248
+ trustwalletSlug: null,
1249
+ logoUrl: "https://assets.relay.link/icons/square/1993/light.png",
1250
+ tags: ["b3-sepolia"],
1251
+ integrations: []
1252
+ },
1253
+ {
1254
+ chainId: 84532,
1255
+ key: "BASE_SEPOLIA",
1256
+ name: "Base Sepolia",
1257
+ network: "base-sepolia",
1258
+ type: "evm",
1259
+ isTestnet: true,
1260
+ nativeCurrency: {
1261
+ name: "Ether",
1262
+ symbol: "ETH",
1263
+ decimals: 18
1264
+ },
1265
+ explorer: "https://sepolia.basescan.org",
1266
+ rpcEnvKey: "RPC_URL_BASE_SEPOLIA",
1267
+ fallbackRpc: "https://sepolia.base.org",
1268
+ quicknodeSlug: null,
1269
+ coingecko: null,
1270
+ trustwalletSlug: null,
1271
+ logoUrl: "https://assets.relay.link/icons/square/84532/light.png",
1272
+ tags: ["base-sepolia"],
1273
+ integrations: ["zerodev"]
1274
+ },
1275
+ {
1276
+ chainId: 11155111,
1277
+ key: "SEPOLIA",
1278
+ name: "Sepolia",
1279
+ network: "sepolia",
1280
+ type: "evm",
1281
+ isTestnet: true,
1282
+ nativeCurrency: {
1283
+ name: "Ether",
1284
+ symbol: "ETH",
1285
+ decimals: 18
1286
+ },
1287
+ explorer: "https://sepolia.etherscan.io",
1288
+ rpcEnvKey: "RPC_URL_SEPOLIA",
1289
+ fallbackRpc: "https://1rpc.io/sepolia",
1290
+ quicknodeSlug: null,
1291
+ coingecko: null,
1292
+ trustwalletSlug: null,
1293
+ logoUrl: "https://assets.relay.link/icons/square/11155111/light.png",
1294
+ tags: ["sepolia"],
1295
+ integrations: ["zerodev"]
1296
+ }
1297
+ ];
1298
+
1299
+ // src/index.ts
1300
+ var TOKEN_RESOLVER_SCHEMA_VERSION = 1;
1301
+ var chains = chains_default;
1302
+ function chainIdentifierKey(value) {
1303
+ return value.trim().toLowerCase().replace(/[\s_]+/g, "-").replace(/-(?:chain|network|mainnet)$/, "");
1304
+ }
1305
+ var PROVIDER_CHAIN_ID_PATTERN = /^[a-z0-9][a-z0-9_-]{0,63}$/;
1306
+ var chainByIdentifier = /* @__PURE__ */ new Map();
1307
+ function resolveChainIdentifier(value) {
1308
+ return chainByIdentifier.get(chainIdentifierKey(value)) ?? null;
1309
+ }
1310
+ function chainTypeForIdentifier(value) {
1311
+ return resolveChainIdentifier(value)?.type ?? null;
1312
+ }
1313
+ function resolveDexScreenerChainIdentifier(value) {
1314
+ const chain = resolveChainIdentifier(value);
1315
+ if (chain?.dexscreenerNetwork) {
1316
+ return {
1317
+ identityChainId: chain.network,
1318
+ providerChainId: chain.dexscreenerNetwork.toLowerCase(),
1319
+ chainType: chain.type,
1320
+ registryChainId: chain.chainId
1321
+ };
1322
+ }
1323
+ if (chain) {
1324
+ return null;
1325
+ }
1326
+ const providerChainId = value.trim().toLowerCase();
1327
+ if (!PROVIDER_CHAIN_ID_PATTERN.test(providerChainId)) {
1328
+ return null;
1329
+ }
1330
+ return {
1331
+ identityChainId: providerChainId,
1332
+ providerChainId,
1333
+ chainType: null,
1334
+ registryChainId: null
1335
+ };
1336
+ }
1337
+ function validateChainDefinitions(definitions) {
1338
+ const identifiers = /* @__PURE__ */ new Map();
1339
+ const chainIds = /* @__PURE__ */ new Map();
1340
+ for (const chain of definitions) {
1341
+ if (!Number.isSafeInteger(chain.chainId) || chain.chainId <= 0 || !chain.key?.trim() || !chain.name?.trim() || !chain.network?.trim() || chain.type !== "evm" && chain.type !== "solana") {
1342
+ throw new Error(`Invalid chain definition: ${JSON.stringify(chain)}`);
1343
+ }
1344
+ const existingChainId = chainIds.get(chain.chainId);
1345
+ if (existingChainId && existingChainId.network !== chain.network) {
1346
+ throw new Error(
1347
+ `Chain id ${chain.chainId} is claimed by both "${existingChainId.network}" and "${chain.network}"`
1348
+ );
1349
+ }
1350
+ chainIds.set(chain.chainId, chain);
1351
+ if (chain.dexscreenerNetwork && !PROVIDER_CHAIN_ID_PATTERN.test(chain.dexscreenerNetwork)) {
1352
+ throw new Error(`Invalid DexScreener network for "${chain.network}": ${chain.dexscreenerNetwork}`);
1353
+ }
1354
+ if (chain.wrappedNative && tokenAddressFamily(chain.wrappedNative) !== chain.type) {
1355
+ throw new Error(`Invalid wrapped-native address for "${chain.network}": ${chain.wrappedNative}`);
1356
+ }
1357
+ if (chain.wrappedNativeCurrency) {
1358
+ if (!chain.wrappedNative || !chain.dexscreenerNetwork?.trim() || !chain.wrappedNativeCurrency.name?.trim() || !chain.wrappedNativeCurrency.symbol?.trim() || !Number.isSafeInteger(chain.wrappedNativeCurrency.decimals) || chain.wrappedNativeCurrency.decimals < 0) {
1359
+ throw new Error(`Incomplete wrapped-native metadata for "${chain.network}"`);
1360
+ }
1361
+ }
1362
+ for (const identifier of [
1363
+ chain.network,
1364
+ chain.key,
1365
+ chain.name,
1366
+ String(chain.chainId),
1367
+ ...chain.dexscreenerNetwork ? [chain.dexscreenerNetwork] : []
1368
+ ]) {
1369
+ const key = chainIdentifierKey(identifier);
1370
+ const existing = identifiers.get(key);
1371
+ if (existing && existing.chainId !== chain.chainId) {
1372
+ throw new Error(`Chain identifier "${key}" is claimed by both "${existing.network}" and "${chain.network}"`);
1373
+ }
1374
+ identifiers.set(key, chain);
1375
+ }
1376
+ }
1377
+ const productionSolana = definitions.filter((chain) => chain.type === "solana" && !chain.isTestnet);
1378
+ if (productionSolana.length !== 1) {
1379
+ throw new Error(`Expected one production Solana definition, found ${productionSolana.length}`);
1380
+ }
1381
+ const solana = productionSolana[0];
1382
+ if (solana.chainId !== 7565164 || solana.network !== "solana" || solana.name !== "Solana" || solana.nativeCurrency.name !== "SOL" || solana.nativeCurrency.symbol !== "SOL" || solana.nativeCurrency.decimals !== 9 || solana.dexscreenerNetwork !== "solana" || solana.wrappedNative !== "So11111111111111111111111111111111111111112" || solana.wrappedNativeCurrency?.name !== "Wrapped SOL" || solana.wrappedNativeCurrency.symbol !== "wSOL" || solana.wrappedNativeCurrency.decimals !== 9) {
1383
+ throw new Error("Canonical Solana SOL/wSOL metadata is invalid");
1384
+ }
1385
+ return identifiers;
1386
+ }
1387
+ var BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
1388
+ var SOLANA_ADDRESS_PATTERN = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
1389
+ function decodedBase58Length(value) {
1390
+ let leadingZeroBytes = 0;
1391
+ while (value.charAt(leadingZeroBytes) === "1") {
1392
+ leadingZeroBytes++;
1393
+ }
1394
+ let decoded = 0n;
1395
+ for (let index = leadingZeroBytes; index < value.length; index++) {
1396
+ decoded = decoded * 58n + BigInt(BASE58_ALPHABET.indexOf(value.charAt(index)));
1397
+ }
1398
+ let significantBytes = 0;
1399
+ while (decoded > 0n) {
1400
+ decoded >>= 8n;
1401
+ significantBytes++;
1402
+ }
1403
+ return leadingZeroBytes + significantBytes;
1404
+ }
1405
+ function isSolanaAddress(value) {
1406
+ return SOLANA_ADDRESS_PATTERN.test(value) && decodedBase58Length(value) === 32;
1407
+ }
1408
+ function isEvmTokenAddress(value) {
1409
+ return /^0x[0-9a-fA-F]{40}$/.test(value);
1410
+ }
1411
+ function tokenAddressFamily(value) {
1412
+ if (isEvmTokenAddress(value)) return "evm";
1413
+ if (isSolanaAddress(value)) return "solana";
1414
+ return null;
1415
+ }
1416
+ var OPAQUE_PROVIDER_TOKEN_PATTERN = /^[^\s\u0000-\u001F\u007F]{16,256}$/;
1417
+ var SHORT_NAMESPACED_TOKEN_PATTERN = /^[^\s\u0000-\u001F\u007F]{1,256}::[^\s\u0000-\u001F\u007F]+$/;
1418
+ function isProviderTokenAddress(value) {
1419
+ if (value.length === 0 || value.length > 256) {
1420
+ return false;
1421
+ }
1422
+ return tokenAddressFamily(value) !== null || OPAQUE_PROVIDER_TOKEN_PATTERN.test(value) || SHORT_NAMESPACED_TOKEN_PATTERN.test(value);
1423
+ }
1424
+ chainByIdentifier = validateChainDefinitions(chains);
1425
+ var nativeAssets = chains.flatMap((chain) => {
1426
+ if (chain.isTestnet || !chain.dexscreenerNetwork || !chain.wrappedNative || !chain.wrappedNativeCurrency) {
1427
+ return [];
1428
+ }
1429
+ return [
1430
+ {
1431
+ chainId: chain.chainId,
1432
+ chain: chain.network,
1433
+ dexscreenerChain: chain.dexscreenerNetwork,
1434
+ name: chain.name,
1435
+ symbol: chain.nativeCurrency.symbol,
1436
+ decimals: chain.nativeCurrency.decimals,
1437
+ wrapped: {
1438
+ address: chain.wrappedNative,
1439
+ name: chain.wrappedNativeCurrency.name,
1440
+ symbol: chain.wrappedNativeCurrency.symbol,
1441
+ decimals: chain.wrappedNativeCurrency.decimals
1442
+ }
1443
+ }
1444
+ ];
1445
+ });
1446
+ var CANONICAL_NAME_ASSETS = nativeAssets.filter(
1447
+ (asset) => asset.chain === "solana"
1448
+ );
1449
+ function matchCanonicalNativeAssetText(asset, value) {
1450
+ const normalized = value.trim().replace(/^\$/, "").toLowerCase();
1451
+ if (normalized === asset.symbol.toLowerCase() || normalized === asset.name.toLowerCase()) {
1452
+ return "native";
1453
+ }
1454
+ if (normalized === asset.wrapped.symbol.toLowerCase() || normalized === asset.wrapped.name.toLowerCase()) {
1455
+ return "wrapped-native";
1456
+ }
1457
+ return null;
1458
+ }
1459
+ var solanaNativeAsset = nativeAssets.find((asset) => asset.chain === "solana");
1460
+ if (!solanaNativeAsset) {
1461
+ throw new Error("SOLANA native asset definition missing");
1462
+ }
1463
+ var SOLANA_NATIVE_ASSET = solanaNativeAsset;
1464
+ function createNativeTokenIdentity(asset) {
1465
+ return {
1466
+ kind: "native",
1467
+ matchedBy: "canonical",
1468
+ chainId: asset.chain,
1469
+ address: null,
1470
+ marketAddress: asset.wrapped.address,
1471
+ name: asset.name,
1472
+ symbol: asset.symbol,
1473
+ nativeSymbol: asset.symbol
1474
+ };
1475
+ }
1476
+ function createWrappedNativeTokenIdentity(asset, matchedBy) {
1477
+ return {
1478
+ kind: "wrapped-native",
1479
+ matchedBy,
1480
+ chainId: asset.chain,
1481
+ address: asset.wrapped.address,
1482
+ marketAddress: asset.wrapped.address,
1483
+ name: asset.wrapped.name,
1484
+ symbol: asset.wrapped.symbol,
1485
+ nativeSymbol: asset.symbol
1486
+ };
1487
+ }
1488
+ function looksLikeTokenAddress(value) {
1489
+ return tokenAddressFamily(value) !== null;
1490
+ }
1491
+ function looksLikeProviderTokenAddress(value) {
1492
+ if (looksLikeTokenAddress(value)) {
1493
+ return true;
1494
+ }
1495
+ return SHORT_NAMESPACED_TOKEN_PATTERN.test(value);
1496
+ }
1497
+ function isTokenAddressForChain(chainId, value) {
1498
+ const chainType = chainTypeForIdentifier(chainId);
1499
+ return chainType !== null && tokenAddressFamily(value) === chainType;
1500
+ }
1501
+ function tokenAddressKey(chainId, value) {
1502
+ const chainType = chainTypeForIdentifier(chainId);
1503
+ return chainType === "evm" || chainType === null && isEvmTokenAddress(value) ? value.toLowerCase() : value;
1504
+ }
1505
+ function isResolvedTokenIdentity(value) {
1506
+ if (typeof value !== "object" || value === null) {
1507
+ return false;
1508
+ }
1509
+ const identity = value;
1510
+ if (!["native", "wrapped-native", "contract"].includes(identity.kind) || !["canonical", "exact", "ranked"].includes(identity.matchedBy) || typeof identity.chainId !== "string" || resolveDexScreenerChainIdentifier(identity.chainId) === null || typeof identity.marketAddress !== "string" || !isProviderTokenAddress(identity.marketAddress) || typeof identity.name !== "string" || identity.name.trim().length === 0 || typeof identity.symbol !== "string" || identity.symbol.trim().length === 0) {
1511
+ return false;
1512
+ }
1513
+ const chainType = chainTypeForIdentifier(identity.chainId);
1514
+ if (chainType && tokenAddressFamily(identity.marketAddress) !== chainType) {
1515
+ return false;
1516
+ }
1517
+ if (identity.kind === "native") {
1518
+ return identity.matchedBy === "canonical" && identity.address === null && typeof identity.nativeSymbol === "string" && identity.nativeSymbol.trim().length > 0;
1519
+ }
1520
+ if (identity.kind === "wrapped-native") {
1521
+ return (identity.matchedBy === "canonical" || identity.matchedBy === "exact") && typeof identity.address === "string" && isProviderTokenAddress(identity.address) && (!chainType || tokenAddressFamily(identity.address) === chainType) && tokenAddressKey(identity.chainId, identity.address) === tokenAddressKey(identity.chainId, identity.marketAddress) && typeof identity.nativeSymbol === "string" && identity.nativeSymbol.trim().length > 0;
1522
+ }
1523
+ return (identity.matchedBy === "exact" || identity.matchedBy === "ranked") && typeof identity.address === "string" && isProviderTokenAddress(identity.address) && (!chainType || tokenAddressFamily(identity.address) === chainType) && tokenAddressKey(identity.chainId, identity.address) === tokenAddressKey(identity.chainId, identity.marketAddress) && identity.nativeSymbol === null;
1524
+ }
1525
+ function isRegistryResolvedTokenIdentity(value) {
1526
+ if (!isResolvedTokenIdentity(value)) {
1527
+ return false;
1528
+ }
1529
+ if (value.kind === "native") {
1530
+ return nativeAssets.some(
1531
+ (asset) => value.chainId === asset.chain && tokenAddressKey(asset.chain, value.marketAddress) === tokenAddressKey(asset.chain, asset.wrapped.address) && value.name === asset.name && value.symbol === asset.symbol && value.nativeSymbol === asset.symbol
1532
+ );
1533
+ }
1534
+ if (value.kind === "wrapped-native") {
1535
+ const address = value.address;
1536
+ if (typeof address !== "string") {
1537
+ return false;
1538
+ }
1539
+ return nativeAssets.some(
1540
+ (asset) => value.chainId === asset.chain && tokenAddressKey(asset.chain, address) === tokenAddressKey(asset.chain, asset.wrapped.address) && tokenAddressKey(asset.chain, value.marketAddress) === tokenAddressKey(asset.chain, asset.wrapped.address) && value.name === asset.wrapped.name && value.symbol === asset.wrapped.symbol && value.nativeSymbol === asset.symbol
1541
+ );
1542
+ }
1543
+ const chainType = chainTypeForIdentifier(value.chainId);
1544
+ return (!chainType || tokenAddressFamily(value.marketAddress) === chainType) && !nativeAssets.some(
1545
+ (asset) => value.chainId === asset.chain && tokenAddressKey(asset.chain, value.marketAddress) === tokenAddressKey(asset.chain, asset.wrapped.address)
1546
+ );
1547
+ }
1548
+ function isTokenIdentityCandidate(value) {
1549
+ if (typeof value !== "object" || value === null) {
1550
+ return false;
1551
+ }
1552
+ const candidate = value;
1553
+ const identity = candidate.identity;
1554
+ if (!isResolvedTokenIdentity(identity)) {
1555
+ return false;
1556
+ }
1557
+ const chainType = chainTypeForIdentifier(identity.chainId);
1558
+ return (!("providerChainId" in candidate) || typeof candidate.providerChainId === "string" && candidate.providerChainId.trim().length > 0) && (candidate.pairSide === "base" || candidate.pairSide === "quote") && candidate.chainId === identity.chainId && typeof candidate.tokenAddress === "string" && isProviderTokenAddress(candidate.tokenAddress) && (!chainType || tokenAddressFamily(candidate.tokenAddress) === chainType) && tokenAddressKey(identity.chainId, candidate.tokenAddress) === tokenAddressKey(identity.chainId, identity.marketAddress) && candidate.name === identity.name && candidate.symbol === identity.symbol;
1559
+ }
1560
+ function isRegistryTokenIdentityCandidate(value) {
1561
+ return isTokenIdentityCandidate(value) && isRegistryResolvedTokenIdentity(value.identity);
1562
+ }
1563
+ var evmChains = chains.filter((c) => c.type === "evm");
1564
+ var chainById = new Map(chains.map((c) => [c.chainId, c]));
1565
+ var CHAIN_IDS = Object.fromEntries(chains.map((c) => [c.key, c.chainId]));
1566
+ var CHAIN_NAMES = Object.fromEntries(chains.map((c) => [c.chainId, c.name]));
1567
+ var CHAIN_ID_TO_NETWORK = Object.fromEntries(chains.map((c) => [c.chainId, c.network]));
1568
+ var FALLBACK_RPC_URLS = Object.fromEntries(
1569
+ chains.filter((c) => c.fallbackRpc).map((c) => [c.chainId, c.fallbackRpc])
1570
+ );
1571
+ var BLOCK_EXPLORERS = Object.fromEntries(chains.map((c) => [c.chainId, c.explorer]));
1572
+ var COINGECKO_MAPPINGS = Object.fromEntries(
1573
+ chains.filter((c) => c.coingecko).map((c) => [c.chainId, c.coingecko])
1574
+ );
1575
+ var TRUSTWALLET_SLUGS = Object.fromEntries(
1576
+ chains.filter((c) => c.trustwalletSlug).map((c) => [c.chainId, c.trustwalletSlug])
1577
+ );
1578
+ var CHAIN_TAG_MAP = Object.fromEntries(
1579
+ chains.flatMap((c) => c.tags.map((tag) => [tag, c.chainId]))
1580
+ );
1581
+ var LOGO_URLS = Object.fromEntries(
1582
+ chains.filter((c) => c.logoUrl).map((c) => [c.chainId, c.logoUrl])
1583
+ );
1584
+ function buildQuicknodeUrl(subdomain, key, chain) {
1585
+ if (chain.quicknodeSlug === null) return null;
1586
+ const network = chain.quicknodeSlug === "" ? "" : `.${chain.quicknodeSlug}`;
1587
+ const path = chain.quicknodeRpcPath ?? "";
1588
+ return `https://${subdomain}${network}.quiknode.pro/${key}${path}`;
1589
+ }
1590
+ function buildQuicknodeRpcMap(subdomain, key) {
1591
+ return Object.fromEntries(
1592
+ chains.filter((c) => c.quicknodeSlug !== null).map((c) => [c.chainId, buildQuicknodeUrl(subdomain, key, c)])
1593
+ );
1594
+ }
1595
+ function chainsByIntegration(integration) {
1596
+ return chains.filter((c) => c.integrations.includes(integration));
1597
+ }
1598
+ function chainIdsByIntegration(integration) {
1599
+ return chainsByIntegration(integration).map((c) => c.chainId);
1600
+ }
1601
+ function chainNamesByIntegration(integration) {
1602
+ return Object.fromEntries(chainsByIntegration(integration).map((c) => [c.chainId, c.name]));
1603
+ }
1604
+ var ZERODEV_SUPPORTED_CHAINS = chainsByIntegration("zerodev");
1605
+ var ANYSPEND_EVM_CHAINS = chainsByIntegration("anyspend").filter((c) => c.type === "evm");
1606
+ {
1607
+ const missingRpc = ANYSPEND_EVM_CHAINS.filter((c) => !c.fallbackRpc);
1608
+ if (missingRpc.length > 0) {
1609
+ throw new Error(
1610
+ `chain-registry: anyspend EVM chains missing fallbackRpc: ${missingRpc.map((c) => `${c.chainId} (${c.key})`).join(", ")}`
1611
+ );
1612
+ }
1613
+ }
1614
+ var MANUAL_CHAIN_IDS = new Set(
1615
+ chains.filter((c) => c.manualTokens && c.manualTokens.length > 0).map((c) => c.chainId)
1616
+ );
1617
+ function hasManualTokens(chainId) {
1618
+ return MANUAL_CHAIN_IDS.has(chainId);
1619
+ }
1620
+ function getManualTokens(chainId) {
1621
+ return chainById.get(chainId)?.manualTokens ?? [];
1622
+ }
1623
+ function findManualToken(chainId, address) {
1624
+ const lower = address.toLowerCase();
1625
+ const tokens = getManualTokens(chainId);
1626
+ return tokens.find((t) => t.address.toLowerCase() === lower) ?? null;
1627
+ }
1628
+ // Annotate the CommonJS export names for ESM import in node:
1629
+ 0 && (module.exports = {
1630
+ ANYSPEND_EVM_CHAINS,
1631
+ BLOCK_EXPLORERS,
1632
+ CANONICAL_NAME_ASSETS,
1633
+ CHAIN_IDS,
1634
+ CHAIN_ID_TO_NETWORK,
1635
+ CHAIN_NAMES,
1636
+ CHAIN_TAG_MAP,
1637
+ COINGECKO_MAPPINGS,
1638
+ FALLBACK_RPC_URLS,
1639
+ LOGO_URLS,
1640
+ MANUAL_CHAIN_IDS,
1641
+ SOLANA_NATIVE_ASSET,
1642
+ TOKEN_RESOLVER_SCHEMA_VERSION,
1643
+ TRUSTWALLET_SLUGS,
1644
+ ZERODEV_SUPPORTED_CHAINS,
1645
+ buildQuicknodeRpcMap,
1646
+ buildQuicknodeUrl,
1647
+ chainById,
1648
+ chainIdsByIntegration,
1649
+ chainNamesByIntegration,
1650
+ chainTypeForIdentifier,
1651
+ chains,
1652
+ chainsByIntegration,
1653
+ createNativeTokenIdentity,
1654
+ createWrappedNativeTokenIdentity,
1655
+ evmChains,
1656
+ findManualToken,
1657
+ getManualTokens,
1658
+ hasManualTokens,
1659
+ isEvmTokenAddress,
1660
+ isProviderTokenAddress,
1661
+ isRegistryResolvedTokenIdentity,
1662
+ isRegistryTokenIdentityCandidate,
1663
+ isResolvedTokenIdentity,
1664
+ isSolanaAddress,
1665
+ isTokenAddressForChain,
1666
+ isTokenIdentityCandidate,
1667
+ looksLikeProviderTokenAddress,
1668
+ looksLikeTokenAddress,
1669
+ matchCanonicalNativeAssetText,
1670
+ nativeAssets,
1671
+ resolveChainIdentifier,
1672
+ resolveDexScreenerChainIdentifier,
1673
+ tokenAddressFamily,
1674
+ tokenAddressKey,
1675
+ validateChainDefinitions
1676
+ });