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