@eth-optimism/actions-sdk 0.3.0 → 0.5.0

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 (479) hide show
  1. package/dist/__mocks__/MockAssets.d.ts +17 -2
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -1
  3. package/dist/__mocks__/MockAssets.js +49 -6
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -1
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +17 -13
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +46 -27
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +215 -4
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +734 -11
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/providers.d.ts +6 -0
  16. package/dist/constants/providers.d.ts.map +1 -0
  17. package/dist/constants/providers.js +6 -0
  18. package/dist/constants/providers.js.map +1 -0
  19. package/dist/constants/supportedChains.d.ts +2 -2
  20. package/dist/constants/supportedChains.d.ts.map +1 -1
  21. package/dist/constants/supportedChains.js +12 -2
  22. package/dist/constants/supportedChains.js.map +1 -1
  23. package/dist/ens/EnsNamespace.d.ts +57 -0
  24. package/dist/ens/EnsNamespace.d.ts.map +1 -0
  25. package/dist/ens/EnsNamespace.js +158 -0
  26. package/dist/ens/EnsNamespace.js.map +1 -0
  27. package/dist/ens/EnsNamespace.spec.d.ts +2 -0
  28. package/dist/ens/EnsNamespace.spec.d.ts.map +1 -0
  29. package/dist/ens/EnsNamespace.spec.js +144 -0
  30. package/dist/ens/EnsNamespace.spec.js.map +1 -0
  31. package/dist/ens/errors.d.ts +24 -0
  32. package/dist/ens/errors.d.ts.map +1 -0
  33. package/dist/ens/errors.js +35 -0
  34. package/dist/ens/errors.js.map +1 -0
  35. package/dist/ens/index.d.ts +4 -0
  36. package/dist/ens/index.d.ts.map +1 -0
  37. package/dist/ens/index.js +4 -0
  38. package/dist/ens/index.js.map +1 -0
  39. package/dist/ens/types.d.ts +63 -0
  40. package/dist/ens/types.d.ts.map +1 -0
  41. package/dist/ens/types.js +14 -0
  42. package/dist/ens/types.js.map +1 -0
  43. package/dist/index.d.ts +6 -5
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  48. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  49. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  50. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  51. package/dist/lend/core/LendProvider.d.ts +12 -8
  52. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  53. package/dist/lend/core/LendProvider.js +15 -21
  54. package/dist/lend/core/LendProvider.js.map +1 -1
  55. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  57. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  58. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  59. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  60. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  63. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  64. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  65. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  66. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  67. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  68. package/dist/lend/providers/aave/addresses.js +65 -60
  69. package/dist/lend/providers/aave/addresses.js.map +1 -1
  70. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  71. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  72. package/dist/lend/providers/aave/sdk.js +6 -28
  73. package/dist/lend/providers/aave/sdk.js.map +1 -1
  74. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  75. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  76. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  77. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  78. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  79. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  80. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -42
  81. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  82. package/dist/lend/providers/morpho/api.d.ts +3 -7
  83. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  84. package/dist/lend/providers/morpho/api.js +2 -2
  85. package/dist/lend/providers/morpho/api.js.map +1 -1
  86. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  87. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  88. package/dist/lend/providers/morpho/contracts.js +43 -10
  89. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  90. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  91. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  92. package/dist/lend/providers/morpho/sdk.js +67 -63
  93. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  94. package/dist/nodeActionsFactory.d.ts +1 -1
  95. package/dist/reactActionsFactory.d.ts +1 -1
  96. package/dist/services/ChainManager.d.ts +15 -8
  97. package/dist/services/ChainManager.d.ts.map +1 -1
  98. package/dist/services/ChainManager.js +9 -0
  99. package/dist/services/ChainManager.js.map +1 -1
  100. package/dist/services/__mocks__/MockChainManager.d.ts +5 -4
  101. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  102. package/dist/services/__mocks__/MockChainManager.js +5 -0
  103. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  104. package/dist/services/tokenBalance.d.ts +1 -1
  105. package/dist/services/tokenBalance.d.ts.map +1 -1
  106. package/dist/services/tokenBalance.js +31 -30
  107. package/dist/services/tokenBalance.js.map +1 -1
  108. package/dist/services/tokenBalance.spec.js +20 -24
  109. package/dist/services/tokenBalance.spec.js.map +1 -1
  110. package/dist/swap/__mocks__/MockSwapProvider.d.ts +20 -8
  111. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
  112. package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
  113. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
  114. package/dist/swap/core/SwapProvider.d.ts +105 -16
  115. package/dist/swap/core/SwapProvider.d.ts.map +1 -1
  116. package/dist/swap/core/SwapProvider.js +215 -37
  117. package/dist/swap/core/SwapProvider.js.map +1 -1
  118. package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
  119. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
  120. package/dist/swap/core/markets.d.ts +47 -0
  121. package/dist/swap/core/markets.d.ts.map +1 -0
  122. package/dist/swap/core/markets.js +65 -0
  123. package/dist/swap/core/markets.js.map +1 -0
  124. package/dist/swap/index.d.ts +2 -0
  125. package/dist/swap/index.d.ts.map +1 -1
  126. package/dist/swap/index.js +1 -0
  127. package/dist/swap/index.js.map +1 -1
  128. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
  129. package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
  130. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +50 -8
  131. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
  132. package/dist/swap/namespaces/BaseSwapNamespace.js +144 -16
  133. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
  134. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +20 -7
  135. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
  136. package/dist/swap/namespaces/WalletSwapNamespace.js +44 -15
  137. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
  138. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
  139. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
  140. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
  141. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
  142. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +10 -42
  143. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
  144. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
  145. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
  146. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
  147. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
  148. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
  149. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
  150. package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
  152. package/dist/swap/providers/uniswap/addresses.js +1 -1
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -1
  154. package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
  155. package/dist/swap/providers/uniswap/encoding.js +17 -17
  156. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  157. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.js +48 -0
  159. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  160. package/dist/swap/providers/uniswap/types.d.ts +4 -3
  161. package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
  162. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +50 -0
  163. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  164. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  165. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  166. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  167. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  169. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +420 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  181. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  190. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  191. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/abis.js +257 -0
  193. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  194. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  195. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/addresses.js +57 -0
  197. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  198. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  199. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/config.js +29 -0
  201. package/dist/swap/providers/velodrome/config.js.map +1 -0
  202. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  203. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  205. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  207. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  209. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  211. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  213. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  215. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  217. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  226. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  227. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/markets.js +69 -0
  229. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  230. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  231. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/types.js +2 -0
  233. package/dist/swap/providers/velodrome/types.js.map +1 -0
  234. package/dist/types/actions.d.ts +44 -9
  235. package/dist/types/actions.d.ts.map +1 -1
  236. package/dist/types/asset.d.ts +7 -9
  237. package/dist/types/asset.d.ts.map +1 -1
  238. package/dist/types/chain.d.ts +2 -2
  239. package/dist/types/chain.d.ts.map +1 -1
  240. package/dist/types/lend/base.d.ts +6 -6
  241. package/dist/types/lend/base.d.ts.map +1 -1
  242. package/dist/types/lend/base.js.map +1 -1
  243. package/dist/types/lend/contracts.d.ts +2 -1
  244. package/dist/types/lend/contracts.d.ts.map +1 -1
  245. package/dist/types/providers.d.ts +21 -0
  246. package/dist/types/providers.d.ts.map +1 -0
  247. package/dist/types/providers.js +2 -0
  248. package/dist/types/providers.js.map +1 -0
  249. package/dist/types/swap/base.d.ts +136 -35
  250. package/dist/types/swap/base.d.ts.map +1 -1
  251. package/dist/types/swap/base.js.map +1 -1
  252. package/dist/utils/approve.d.ts +82 -0
  253. package/dist/utils/approve.d.ts.map +1 -0
  254. package/dist/utils/{permit2.js → approve.js} +48 -14
  255. package/dist/utils/approve.js.map +1 -0
  256. package/dist/utils/approve.test.d.ts +2 -0
  257. package/dist/utils/approve.test.d.ts.map +1 -0
  258. package/dist/utils/{permit2.test.js → approve.test.js} +95 -2
  259. package/dist/utils/approve.test.js.map +1 -0
  260. package/dist/utils/assets.d.ts +6 -0
  261. package/dist/utils/assets.d.ts.map +1 -1
  262. package/dist/utils/assets.js +10 -0
  263. package/dist/utils/assets.js.map +1 -1
  264. package/dist/utils/ens.d.ts +25 -0
  265. package/dist/utils/ens.d.ts.map +1 -0
  266. package/dist/utils/ens.js +53 -0
  267. package/dist/utils/ens.js.map +1 -0
  268. package/dist/utils/ens.test.d.ts +2 -0
  269. package/dist/utils/ens.test.d.ts.map +1 -0
  270. package/dist/utils/ens.test.js +75 -0
  271. package/dist/utils/ens.test.js.map +1 -0
  272. package/dist/utils/validateAddresses.d.ts +32 -0
  273. package/dist/utils/validateAddresses.d.ts.map +1 -0
  274. package/dist/utils/validateAddresses.js +103 -0
  275. package/dist/utils/validateAddresses.js.map +1 -0
  276. package/dist/utils/validateAddresses.test.d.ts +2 -0
  277. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  278. package/dist/utils/validateAddresses.test.js +314 -0
  279. package/dist/utils/validateAddresses.test.js.map +1 -0
  280. package/dist/utils/validation.d.ts +5 -0
  281. package/dist/utils/validation.d.ts.map +1 -1
  282. package/dist/utils/validation.js +10 -0
  283. package/dist/utils/validation.js.map +1 -1
  284. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  285. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  286. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  287. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  288. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  289. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  290. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -16
  291. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  292. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  293. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
  294. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  295. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
  296. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  297. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  298. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
  299. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  300. package/dist/wallet/core/wallets/abstract/Wallet.js +7 -6
  301. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  302. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  303. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  304. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  305. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  306. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  307. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  308. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +3 -10
  309. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  310. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  311. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  312. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -10
  313. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  314. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  315. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  316. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  317. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +6 -8
  318. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  319. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  320. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  321. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +2 -9
  322. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  323. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  324. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
  325. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  326. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  327. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
  328. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  329. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  330. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
  331. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  332. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
  333. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  334. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
  335. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  336. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
  337. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  338. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
  339. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
  341. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  343. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  344. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  345. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  346. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  347. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  348. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +5 -10
  349. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  350. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  351. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  352. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  353. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  354. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  355. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -10
  356. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  357. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  358. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  359. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -10
  360. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  361. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  362. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  363. package/package.json +3 -2
  364. package/src/__mocks__/MockAssets.ts +54 -6
  365. package/src/__tests__/actions.test.ts +1 -1
  366. package/src/actions.ts +73 -61
  367. package/src/constants/assets.ts +781 -10
  368. package/src/constants/providers.ts +5 -0
  369. package/src/constants/supportedChains.ts +22 -2
  370. package/src/ens/EnsNamespace.spec.ts +171 -0
  371. package/src/ens/EnsNamespace.ts +210 -0
  372. package/src/ens/errors.ts +45 -0
  373. package/src/ens/index.ts +12 -0
  374. package/src/ens/types.ts +76 -0
  375. package/src/index.ts +59 -8
  376. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  377. package/src/lend/core/LendProvider.ts +27 -28
  378. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  379. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  380. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  381. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  382. package/src/lend/providers/aave/addresses.ts +82 -64
  383. package/src/lend/providers/aave/sdk.ts +11 -36
  384. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  385. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  386. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -43
  387. package/src/lend/providers/morpho/api.ts +7 -8
  388. package/src/lend/providers/morpho/contracts.ts +62 -13
  389. package/src/lend/providers/morpho/sdk.ts +85 -63
  390. package/src/services/ChainManager.ts +22 -21
  391. package/src/services/__mocks__/MockChainManager.ts +12 -7
  392. package/src/services/tokenBalance.spec.ts +20 -24
  393. package/src/services/tokenBalance.ts +39 -33
  394. package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
  395. package/src/swap/core/SwapProvider.ts +309 -50
  396. package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
  397. package/src/swap/core/markets.ts +104 -0
  398. package/src/swap/index.ts +5 -0
  399. package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
  400. package/src/swap/namespaces/BaseSwapNamespace.ts +215 -18
  401. package/src/swap/namespaces/WalletSwapNamespace.ts +61 -14
  402. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +245 -14
  403. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
  404. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +110 -195
  405. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
  406. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
  407. package/src/swap/providers/uniswap/addresses.ts +3 -1
  408. package/src/swap/providers/uniswap/encoding.ts +22 -22
  409. package/src/swap/providers/uniswap/markets.ts +84 -0
  410. package/src/swap/providers/uniswap/types.ts +4 -3
  411. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +226 -0
  412. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  413. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  414. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +507 -0
  415. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  416. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  417. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  418. package/src/swap/providers/velodrome/abis.ts +264 -0
  419. package/src/swap/providers/velodrome/addresses.ts +107 -0
  420. package/src/swap/providers/velodrome/config.ts +46 -0
  421. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  422. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  423. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  424. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  425. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  426. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  427. package/src/swap/providers/velodrome/markets.ts +100 -0
  428. package/src/swap/providers/velodrome/types.ts +30 -0
  429. package/src/types/actions.ts +49 -9
  430. package/src/types/asset.ts +12 -9
  431. package/src/types/chain.ts +2 -2
  432. package/src/types/lend/base.ts +6 -6
  433. package/src/types/lend/contracts.ts +5 -1
  434. package/src/types/providers.ts +22 -0
  435. package/src/types/swap/base.ts +150 -36
  436. package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
  437. package/src/utils/{permit2.ts → approve.ts} +67 -14
  438. package/src/utils/assets.ts +14 -0
  439. package/src/utils/ens.test.ts +104 -0
  440. package/src/utils/ens.ts +85 -0
  441. package/src/utils/validateAddresses.test.ts +439 -0
  442. package/src/utils/validateAddresses.ts +153 -0
  443. package/src/utils/validation.ts +11 -0
  444. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  445. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  446. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +5 -17
  447. package/src/wallet/core/providers/hosted/types/index.ts +9 -11
  448. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
  449. package/src/wallet/core/wallets/abstract/Wallet.ts +18 -22
  450. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  451. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  452. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +5 -17
  453. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  454. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
  455. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
  456. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  457. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
  458. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
  459. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
  460. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
  461. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
  462. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
  463. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
  464. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  465. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
  466. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  467. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
  468. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
  469. package/dist/supported/tokens.d.ts +0 -25
  470. package/dist/supported/tokens.d.ts.map +0 -1
  471. package/dist/supported/tokens.js +0 -44
  472. package/dist/supported/tokens.js.map +0 -1
  473. package/dist/utils/permit2.d.ts +0 -46
  474. package/dist/utils/permit2.d.ts.map +0 -1
  475. package/dist/utils/permit2.js.map +0 -1
  476. package/dist/utils/permit2.test.d.ts +0 -2
  477. package/dist/utils/permit2.test.d.ts.map +0 -1
  478. package/dist/utils/permit2.test.js.map +0 -1
  479. package/src/supported/tokens.ts +0 -66
@@ -11,9 +11,21 @@ import type { WalletProvider } from '@/wallet/core/providers/WalletProvider.js'
11
11
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
12
12
  import type { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
13
13
 
14
+ /**
15
+ * Provider factory function for lazy initialization
16
+ */
17
+ type WalletProviderFactory<
18
+ THostedProviderType extends string,
19
+ TToActionsMap extends Record<THostedProviderType, unknown>,
20
+ H extends HostedWalletProvider<THostedProviderType, TToActionsMap>,
21
+ S extends SmartWalletProvider,
22
+ > = () => Promise<WalletProvider<THostedProviderType, TToActionsMap, H, S>>
23
+
14
24
  /**
15
25
  * Wallet namespace that provides unified wallet operations
16
- * @description Provides access to wallet functionality through a single provider interface
26
+ * @description Provides access to wallet functionality through a single provider interface.
27
+ * Supports lazy initialization — the wallet provider is created on first method call,
28
+ * enabling tree-shaking of unused wallet provider dependencies.
17
29
  */
18
30
  export class WalletNamespace<
19
31
  THostedProviderType extends string,
@@ -22,32 +34,70 @@ export class WalletNamespace<
22
34
  HostedWalletProvider<THostedProviderType, TToActionsMap>,
23
35
  S extends SmartWalletProvider = SmartWalletProvider,
24
36
  > {
25
- private provider: WalletProvider<THostedProviderType, TToActionsMap, H, S>
37
+ private _provider: WalletProvider<
38
+ THostedProviderType,
39
+ TToActionsMap,
40
+ H,
41
+ S
42
+ > | null = null
43
+ private _providerFactory: WalletProviderFactory<
44
+ THostedProviderType,
45
+ TToActionsMap,
46
+ H,
47
+ S
48
+ >
49
+ private _initPromise: Promise<
50
+ WalletProvider<THostedProviderType, TToActionsMap, H, S>
51
+ > | null = null
26
52
 
27
53
  constructor(
28
- provider: WalletProvider<THostedProviderType, TToActionsMap, H, S>,
54
+ providerOrFactory:
55
+ | WalletProvider<THostedProviderType, TToActionsMap, H, S>
56
+ | WalletProviderFactory<THostedProviderType, TToActionsMap, H, S>,
29
57
  ) {
30
- this.provider = provider
58
+ if (typeof providerOrFactory === 'function') {
59
+ this._providerFactory = providerOrFactory
60
+ } else {
61
+ this._provider = providerOrFactory
62
+ this._providerFactory = () => Promise.resolve(providerOrFactory)
63
+ }
64
+ }
65
+
66
+ private resolveProvider(): Promise<
67
+ WalletProvider<THostedProviderType, TToActionsMap, H, S>
68
+ > {
69
+ if (this._provider) return Promise.resolve(this._provider)
70
+ if (!this._initPromise) {
71
+ this._initPromise = this._providerFactory().then((provider) => {
72
+ this._provider = provider
73
+ return provider
74
+ })
75
+ }
76
+ return this._initPromise
31
77
  }
32
78
 
33
79
  /**
34
80
  * Get direct access to the hosted wallet provider
35
81
  * @description Provides direct access to the underlying hosted wallet provider when
36
- * advanced functionality beyond the unified interface is needed
37
- * @returns The configured hosted wallet provider instance
82
+ * advanced functionality beyond the unified interface is needed.
83
+ * Lazily initializes the provider if not yet created.
84
+ * @returns Promise resolving to the configured hosted wallet provider instance
38
85
  */
39
- get hostedWalletProvider(): H {
40
- return this.provider.hostedWalletProvider
86
+ async hostedWalletProvider(): Promise<H> {
87
+ const provider = await this.resolveProvider()
88
+ return provider.hostedWalletProvider
41
89
  }
42
90
 
43
91
  /**
44
92
  * Get direct access to the smart wallet provider
45
93
  * @description Provides direct access to the underlying smart wallet provider when
46
- * advanced functionality beyond the unified interface is needed
47
- * @returns The configured smart wallet provider instance
94
+ * advanced functionality beyond the unified interface is needed.
95
+ * Lazily initializes the provider if not yet created.
96
+ * @returns Promise resolving to the configured smart wallet provider instance
48
97
  */
49
- get smartWalletProvider(): S {
50
- return this.provider.smartWalletProvider
98
+ async smartWalletProvider(): Promise<S> {
99
+ const provider = await this.resolveProvider()
100
+ return provider.smartWalletProvider
51
101
  }
52
102
 
53
103
  /**
@@ -70,7 +120,8 @@ export class WalletNamespace<
70
120
  async createSmartWallet(
71
121
  params: CreateSmartWalletOptions,
72
122
  ): Promise<SmartWalletCreationResult<SmartWallet>> {
73
- return this.provider.createSmartWallet(params)
123
+ const provider = await this.resolveProvider()
124
+ return provider.createSmartWallet(params)
74
125
  }
75
126
 
76
127
  /**
@@ -85,7 +136,8 @@ export class WalletNamespace<
85
136
  async createSigner(
86
137
  params: TToActionsMap[THostedProviderType],
87
138
  ): Promise<LocalAccount> {
88
- return this.provider.createSigner(params)
139
+ const provider = await this.resolveProvider()
140
+ return provider.createSigner(params)
89
141
  }
90
142
 
91
143
  /**
@@ -99,7 +151,8 @@ export class WalletNamespace<
99
151
  async toActionsWallet(
100
152
  params: TToActionsMap[THostedProviderType],
101
153
  ): Promise<Wallet> {
102
- return this.provider.hostedWalletToActionsWallet(params)
154
+ const provider = await this.resolveProvider()
155
+ return provider.hostedWalletToActionsWallet(params)
103
156
  }
104
157
 
105
158
  /**
@@ -118,6 +171,7 @@ export class WalletNamespace<
118
171
  * @throws Error if neither walletAddress nor deploymentSigners provided
119
172
  */
120
173
  async getSmartWallet(params: GetSmartWalletOptions) {
121
- return this.provider.getSmartWallet(params)
174
+ const provider = await this.resolveProvider()
175
+ return provider.getSmartWallet(params)
122
176
  }
123
177
  }
@@ -38,7 +38,7 @@ describe('WalletNamespace', () => {
38
38
  })
39
39
 
40
40
  describe('hostedWalletProvider', () => {
41
- it('should provide access to hosted wallet provider', () => {
41
+ it('should provide access to hosted wallet provider', async () => {
42
42
  const hostedWalletProvider = new PrivyHostedWalletProvider({
43
43
  privyClient: mockPrivyClient,
44
44
  chainManager: mockChainManager,
@@ -54,12 +54,14 @@ describe('WalletNamespace', () => {
54
54
  )
55
55
  const walletNamespace = new WalletNamespace(walletProvider)
56
56
 
57
- expect(walletNamespace.hostedWalletProvider).toBe(hostedWalletProvider)
57
+ expect(await walletNamespace.hostedWalletProvider()).toBe(
58
+ hostedWalletProvider,
59
+ )
58
60
  })
59
61
  })
60
62
 
61
63
  describe('smartWalletProvider', () => {
62
- it('should provide access to smart wallet provider', () => {
64
+ it('should provide access to smart wallet provider', async () => {
63
65
  const mockPrivyClient = createMockPrivyClient(
64
66
  'test-app-id',
65
67
  'test-app-secret',
@@ -79,7 +81,9 @@ describe('WalletNamespace', () => {
79
81
  )
80
82
  const walletNamespace = new WalletNamespace(walletProvider)
81
83
 
82
- expect(walletNamespace.smartWalletProvider).toBe(smartWalletProvider)
84
+ expect(await walletNamespace.smartWalletProvider()).toBe(
85
+ smartWalletProvider,
86
+ )
83
87
  })
84
88
  })
85
89
 
@@ -1,10 +1,8 @@
1
1
  import type { LocalAccount } from 'viem'
2
2
 
3
- import type { LendProvider } from '@/lend/core/LendProvider.js'
4
3
  import type { ChainManager } from '@/services/ChainManager.js'
5
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
6
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
7
4
  import type { Asset } from '@/types/asset.js'
5
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
8
6
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
9
7
 
10
8
  /**
@@ -18,24 +16,14 @@ export abstract class HostedWalletProvider<
18
16
  TOptionsMap extends Record<TType, unknown>,
19
17
  > {
20
18
  protected chainManager: ChainManager
21
- protected lendProviders: {
22
- morpho?: LendProvider<LendProviderConfig>
23
- aave?: LendProvider<LendProviderConfig>
24
- }
25
- protected swapProviders: {
26
- uniswap?: SwapProvider<SwapProviderConfig>
27
- }
19
+ protected lendProviders: LendProviders
20
+ protected swapProviders: SwapProviders
28
21
  protected supportedAssets?: Asset[]
29
22
 
30
23
  protected constructor(
31
24
  chainManager: ChainManager,
32
- lendProviders?: {
33
- morpho?: LendProvider<LendProviderConfig>
34
- aave?: LendProvider<LendProviderConfig>
35
- },
36
- swapProviders?: {
37
- uniswap?: SwapProvider<SwapProviderConfig>
38
- },
25
+ lendProviders?: LendProviders,
26
+ swapProviders?: SwapProviders,
39
27
  supportedAssets?: Asset[],
40
28
  ) {
41
29
  this.chainManager = chainManager
@@ -1,8 +1,7 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
1
  import type { ChainManager } from '@/services/ChainManager.js'
3
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
4
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
2
+ import type { SwapSettings } from '@/types/actions.js'
5
3
  import type { Asset } from '@/types/asset.js'
4
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
6
5
  import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
7
6
 
8
7
  /**
@@ -13,14 +12,10 @@ import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstra
13
12
  */
14
13
  export interface HostedProviderDeps {
15
14
  chainManager: ChainManager
16
- lendProviders?: {
17
- morpho?: LendProvider<LendProviderConfig>
18
- aave?: LendProvider<LendProviderConfig>
19
- }
20
- swapProviders?: {
21
- uniswap?: SwapProvider<SwapProviderConfig>
22
- }
15
+ lendProviders?: LendProviders
16
+ swapProviders?: SwapProviders
23
17
  supportedAssets?: Asset[]
18
+ swapSettings?: SwapSettings
24
19
  }
25
20
 
26
21
  /**
@@ -56,7 +51,10 @@ export interface HostedProviderFactory<
56
51
  > {
57
52
  type: TType
58
53
  validateOptions(options: unknown): options is TOptions
59
- create(deps: HostedProviderDeps, options: TOptions): TInstance
54
+ create(
55
+ deps: HostedProviderDeps,
56
+ options: TOptions,
57
+ ): TInstance | Promise<TInstance>
60
58
  }
61
59
 
62
60
  /**
@@ -2,11 +2,9 @@ import type { Address, Hex, LocalAccount } from 'viem'
2
2
  import { keccak256, slice, toHex } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
- import type { LendProvider } from '@/lend/core/LendProvider.js'
6
5
  import type { ChainManager } from '@/services/ChainManager.js'
7
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
8
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
9
6
  import type { Asset } from '@/types/asset.js'
7
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
10
8
  import { SmartWalletProvider } from '@/wallet/core/providers/smart/abstract/SmartWalletProvider.js'
11
9
  import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
12
10
  import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
@@ -28,14 +26,9 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
28
26
  /** Manages supported blockchain networks */
29
27
  private chainManager: ChainManager
30
28
  /** Providers for lending market operations */
31
- private lendProviders: {
32
- morpho?: LendProvider<LendProviderConfig>
33
- aave?: LendProvider<LendProviderConfig>
34
- }
29
+ private lendProviders: LendProviders
35
30
  /** Providers for swap operations */
36
- private swapProviders: {
37
- uniswap?: SwapProvider<SwapProviderConfig>
38
- }
31
+ private swapProviders: SwapProviders
39
32
  /** Supported assets for this wallet provider */
40
33
  private supportedAssets?: Asset[]
41
34
  /** Optional 16-byte attribution suffix appended to callData */
@@ -51,13 +44,8 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
51
44
  */
52
45
  constructor(
53
46
  chainManager: ChainManager,
54
- lendProviders?: {
55
- morpho?: LendProvider<LendProviderConfig>
56
- aave?: LendProvider<LendProviderConfig>
57
- },
58
- swapProviders?: {
59
- uniswap?: SwapProvider<SwapProviderConfig>
60
- },
47
+ lendProviders?: LendProviders,
48
+ swapProviders?: SwapProviders,
61
49
  supportedAssets?: Asset[],
62
50
  attributionSuffix?: string,
63
51
  ) {
@@ -1,15 +1,14 @@
1
1
  import type { Address, LocalAccount } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
- import type { LendProvider } from '@/lend/core/LendProvider.js'
4
+ import { EnsNamespace } from '@/ens/index.js'
5
5
  import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
6
6
  import type { ChainManager } from '@/services/ChainManager.js'
7
7
  import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
8
- import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
9
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
10
8
  import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
11
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
9
+ import type { SwapSettings } from '@/types/actions.js'
12
10
  import type { Asset, TokenBalance } from '@/types/asset.js'
11
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
13
12
  import type { TransactionData } from '@/types/transaction.js'
14
13
  import type {
15
14
  BatchTransactionReturnType,
@@ -25,16 +24,11 @@ export abstract class Wallet {
25
24
  /** Lend namespace with all lending operations */
26
25
  lend?: WalletLendNamespace
27
26
  /** Providers for lending market operations */
28
- protected lendProviders: {
29
- morpho?: LendProvider<LendProviderConfig>
30
- aave?: LendProvider<LendProviderConfig>
31
- }
27
+ protected lendProviders: LendProviders
32
28
  /** Swap namespace with all swap operations */
33
29
  swap?: WalletSwapNamespace
34
30
  /** Providers for swap operations */
35
- protected swapProviders: {
36
- uniswap?: SwapProvider<SwapProviderConfig>
37
- }
31
+ protected swapProviders: SwapProviders
38
32
  /** Manages supported blockchain networks and RPC clients */
39
33
  protected chainManager: ChainManager
40
34
  /** List of supported assets for this wallet */
@@ -62,28 +56,30 @@ export abstract class Wallet {
62
56
  * @param chainManager - Chain manager for the wallet
63
57
  * @param lendProviders - Lend providers for the wallet
64
58
  * @param swapProviders - Swap providers for the wallet
65
- * @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
59
+ * @param supportedAssets - List of supported assets (defaults to empty)
66
60
  */
67
61
  protected constructor(
68
62
  chainManager: ChainManager,
69
- lendProviders?: {
70
- morpho?: LendProvider<LendProviderConfig>
71
- aave?: LendProvider<LendProviderConfig>
72
- },
73
- swapProviders?: {
74
- uniswap?: SwapProvider<SwapProviderConfig>
75
- },
63
+ lendProviders?: LendProviders,
64
+ swapProviders?: SwapProviders,
76
65
  supportedAssets?: Asset[],
66
+ swapSettings?: SwapSettings,
77
67
  ) {
78
68
  this.chainManager = chainManager
79
69
  this.lendProviders = lendProviders || {}
80
70
  this.swapProviders = swapProviders || {}
81
- this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
71
+ this.supportedAssets = supportedAssets || []
82
72
  if (this.lendProviders.morpho || this.lendProviders.aave) {
83
73
  this.lend = new WalletLendNamespace(this.lendProviders, this)
84
74
  }
85
- if (this.swapProviders.uniswap) {
86
- this.swap = new WalletSwapNamespace(this.swapProviders, this)
75
+ if (Object.values(this.swapProviders).some(Boolean)) {
76
+ const ens = new EnsNamespace(this.chainManager)
77
+ this.swap = new WalletSwapNamespace(
78
+ this.swapProviders,
79
+ this,
80
+ (r) => (r ? ens.getAddress(r) : Promise.resolve(undefined)),
81
+ swapSettings,
82
+ )
87
83
  }
88
84
  }
89
85
 
@@ -1,7 +1,11 @@
1
1
  import type { Address, LocalAccount, WalletClient } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
+ import type { LendProvider } from '@/lend/core/LendProvider.js'
4
5
  import type { ChainManager } from '@/services/ChainManager.js'
6
+ import type { SwapProvider } from '@/swap/core/SwapProvider.js'
7
+ import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
8
+ import type { Asset } from '@/types/asset.js'
5
9
  import type { TransactionData } from '@/types/lend/index.js'
6
10
  import type { EOATransactionReceipt } from '@/wallet/core/wallets/abstract/types/index.js'
7
11
  import { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
@@ -14,8 +18,16 @@ export class TestWallet extends Wallet {
14
18
  chainManager: ChainManager,
15
19
  address: Address,
16
20
  signer: LocalAccount,
21
+ lendProviders?: {
22
+ morpho?: LendProvider<LendProviderConfig>
23
+ aave?: LendProvider<LendProviderConfig>
24
+ },
25
+ swapProviders?: {
26
+ uniswap?: SwapProvider<SwapProviderConfig>
27
+ },
28
+ supportedAssets?: Asset[],
17
29
  ) {
18
- super(chainManager)
30
+ super(chainManager, lendProviders, swapProviders, supportedAssets)
19
31
  this.address = address
20
32
  this.signer = signer
21
33
  }
@@ -3,11 +3,11 @@ import { unichain } from 'viem/chains'
3
3
  import { beforeEach, describe, expect, it, vi } from 'vitest'
4
4
 
5
5
  import { getRandomAddress } from '@/__mocks__/utils.js'
6
+ import { ETH, USDC } from '@/constants/assets.js'
6
7
  import type { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
7
8
  import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
8
9
  import type { ChainManager } from '@/services/ChainManager.js'
9
10
  import { fetchERC20Balance, fetchETHBalance } from '@/services/tokenBalance.js'
10
- import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
11
11
  import { TestWallet } from '@/wallet/core/wallets/abstract/__mocks__/TestWallet.js'
12
12
 
13
13
  vi.mock('@/services/tokenBalance.js', async () => {
@@ -29,7 +29,7 @@ describe('Wallet (base)', () => {
29
29
  vi.clearAllMocks()
30
30
  })
31
31
 
32
- it('getBalance fetches ETH and ERC20 balances for all supported tokens', async () => {
32
+ it('getBalance returns only ETH when no supportedAssets configured', async () => {
33
33
  const wallet = new TestWallet(chainManager, address, signer)
34
34
 
35
35
  const result = await wallet.getBalance()
@@ -37,10 +37,26 @@ describe('Wallet (base)', () => {
37
37
  expect(result).toBeTruthy()
38
38
  expect(fetchETHBalance).toHaveBeenCalledTimes(1)
39
39
  expect(fetchETHBalance).toHaveBeenCalledWith(chainManager, address)
40
- // Should call fetchERC20Balance for each token in SUPPORTED_TOKENS
41
- expect(fetchERC20Balance).toHaveBeenCalledTimes(
42
- Object.keys(SUPPORTED_TOKENS).length,
40
+ // No supportedAssets configured, so no ERC20 balance fetches
41
+ expect(fetchERC20Balance).toHaveBeenCalledTimes(0)
42
+ })
43
+
44
+ it('getBalance fetches ERC20 balances for explicitly configured assets', async () => {
45
+ const wallet = new TestWallet(
46
+ chainManager,
47
+ address,
48
+ signer,
49
+ undefined,
50
+ undefined,
51
+ [ETH, USDC],
43
52
  )
53
+
54
+ const result = await wallet.getBalance()
55
+
56
+ expect(result).toBeTruthy()
57
+ expect(fetchETHBalance).toHaveBeenCalledTimes(1)
58
+ // Should call fetchERC20Balance for each configured asset
59
+ expect(fetchERC20Balance).toHaveBeenCalledTimes(2)
44
60
  })
45
61
 
46
62
  it('getBalance propagates errors from underlying fetchers', async () => {
@@ -13,11 +13,9 @@ import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
13
13
  import type { SupportedChainId } from '@/constants/supportedChains.js'
14
14
  import { TransactionConfirmedButRevertedError } from '@/core/error/errors.js'
15
15
  import { retryOnStaleRead } from '@/core/utils/retryOnStaleRead.js'
16
- import type { LendProvider } from '@/lend/core/LendProvider.js'
17
16
  import type { ChainManager } from '@/services/ChainManager.js'
18
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
19
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
20
17
  import type { Asset } from '@/types/asset.js'
18
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
21
19
  import type { TransactionData } from '@/types/transaction.js'
22
20
  import { parseAssetAmount } from '@/utils/assets.js'
23
21
  import { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
@@ -69,13 +67,8 @@ export class DefaultSmartWallet extends SmartWallet {
69
67
  signers: Signer[],
70
68
  signer: LocalAccount,
71
69
  chainManager: ChainManager,
72
- lendProviders?: {
73
- morpho?: LendProvider<LendProviderConfig>
74
- aave?: LendProvider<LendProviderConfig>
75
- },
76
- swapProviders?: {
77
- uniswap?: SwapProvider<SwapProviderConfig>
78
- },
70
+ lendProviders?: LendProviders,
71
+ swapProviders?: SwapProviders,
79
72
  supportedAssets?: Asset[],
80
73
  deploymentAddress?: Address,
81
74
  nonce?: bigint,
@@ -122,13 +115,8 @@ export class DefaultSmartWallet extends SmartWallet {
122
115
  signer: LocalAccount
123
116
  chainManager: ChainManager
124
117
  signers?: Signer[]
125
- lendProviders?: {
126
- morpho?: LendProvider<LendProviderConfig>
127
- aave?: LendProvider<LendProviderConfig>
128
- }
129
- swapProviders?: {
130
- uniswap?: SwapProvider<SwapProviderConfig>
131
- }
118
+ lendProviders?: LendProviders
119
+ swapProviders?: SwapProviders
132
120
  supportedAssets?: Asset[]
133
121
  deploymentAddress?: Address
134
122
  nonce?: bigint
@@ -12,7 +12,6 @@ import { getRandomAddress } from '@/__mocks__/utils.js'
12
12
  import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
13
13
  import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
14
14
  import type { ChainManager } from '@/services/ChainManager.js'
15
- import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
16
15
  import type { LendProviderConfig } from '@/types/actions.js'
17
16
  import type { LendProvider, TransactionData } from '@/types/lend/index.js'
18
17
  import {
@@ -2,11 +2,9 @@ import type { AuthorizationContext, PrivyClient } from '@privy-io/node'
2
2
  import type { LocalAccount } from 'viem'
3
3
  import { getAddress } from 'viem'
4
4
 
5
- import type { LendProvider } from '@/lend/core/LendProvider.js'
6
5
  import type { ChainManager } from '@/services/ChainManager.js'
7
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
8
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
9
6
  import type { Asset } from '@/types/asset.js'
7
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
10
8
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
11
9
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
12
10
  import type {
@@ -43,13 +41,8 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
43
41
  constructor(params: {
44
42
  privyClient: PrivyClient
45
43
  chainManager: ChainManager
46
- lendProviders?: {
47
- morpho?: LendProvider<LendProviderConfig>
48
- aave?: LendProvider<LendProviderConfig>
49
- }
50
- swapProviders?: {
51
- uniswap?: SwapProvider<SwapProviderConfig>
52
- }
44
+ lendProviders?: LendProviders
45
+ swapProviders?: SwapProviders
53
46
  supportedAssets?: Asset[]
54
47
  authorizationContext?: AuthorizationContext
55
48
  }) {
@@ -1,6 +1,4 @@
1
1
  import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
2
- import { PrivyHostedWalletProvider } from '@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js'
3
- import { TurnkeyHostedWalletProvider } from '@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js'
4
2
  import type {
5
3
  NodeHostedProviderInstanceMap,
6
4
  NodeOptionsMap,
@@ -11,10 +9,8 @@ import type {
11
9
  * Node hosted wallet provider registry
12
10
  * @description
13
11
  * Environment-scoped registry that binds Node/server provider keys to their
14
- * factory implementations. This ensures browser-only hosted providers are
15
- * discoverable at runtime without importing Node-only code. The registry
16
- * pre-registers 'privy' and 'turnkey' providers and can be extended with
17
- * additional providers via `register`.
12
+ * factory implementations. Provider code is loaded lazily via dynamic import()
13
+ * so that unused wallet SDKs are not included in the bundle.
18
14
  */
19
15
  export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegistry<
20
16
  NodeHostedProviderInstanceMap,
@@ -28,10 +24,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
28
24
  validateOptions(options): options is NodeOptionsMap['privy'] {
29
25
  return Boolean((options as NodeOptionsMap['privy'])?.privyClient)
30
26
  },
31
- create(
27
+ async create(
32
28
  { chainManager, lendProviders, swapProviders, supportedAssets },
33
29
  options,
34
30
  ) {
31
+ const { PrivyHostedWalletProvider } =
32
+ await import('@/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js')
35
33
  return new PrivyHostedWalletProvider({
36
34
  privyClient: options.privyClient,
37
35
  chainManager,
@@ -49,10 +47,12 @@ export class NodeHostedWalletProviderRegistry extends HostedWalletProviderRegist
49
47
  const o = options as NodeOptionsMap['turnkey']
50
48
  return Boolean(o?.client)
51
49
  },
52
- create(
50
+ async create(
53
51
  { chainManager, lendProviders, swapProviders, supportedAssets },
54
52
  options,
55
53
  ) {
54
+ const { TurnkeyHostedWalletProvider } =
55
+ await import('@/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js')
56
56
  return new TurnkeyHostedWalletProvider(
57
57
  options.client,
58
58
  chainManager,
@@ -54,11 +54,11 @@ describe('NodeHostedWalletProviderRegistry', () => {
54
54
  ).toBe(false)
55
55
  })
56
56
 
57
- it('creates a PrivyHostedWalletProvider instance', () => {
57
+ it('creates a PrivyHostedWalletProvider instance', async () => {
58
58
  const registry = new NodeHostedWalletProviderRegistry()
59
59
  const factory = registry.getFactory('privy')
60
60
 
61
- const provider = factory.create({ chainManager: mockChainManager }, {
61
+ const provider = await factory.create({ chainManager: mockChainManager }, {
62
62
  privyClient: mockPrivyClient,
63
63
  authorizationContext: getMockAuthorizationContext(),
64
64
  } as NodeOptionsMap['privy'])
@@ -80,11 +80,11 @@ describe('NodeHostedWalletProviderRegistry', () => {
80
80
  expect(factory.validateOptions?.({})).toBe(false)
81
81
  })
82
82
 
83
- it('creates a TurnkeyHostedWalletProvider instance', () => {
83
+ it('creates a TurnkeyHostedWalletProvider instance', async () => {
84
84
  const registry = new NodeHostedWalletProviderRegistry()
85
85
  const factory = registry.getFactory('turnkey')
86
86
 
87
- const provider = factory.create(
87
+ const provider = await factory.create(
88
88
  { chainManager: mockChainManager },
89
89
  {
90
90
  client: mockTurnkeyClient,
@@ -3,11 +3,9 @@ import type { TurnkeyClient as TurnkeyHttpClient } from '@turnkey/http'
3
3
  import type { TurnkeyServerClient } from '@turnkey/sdk-server'
4
4
  import type { LocalAccount } from 'viem'
5
5
 
6
- import type { LendProvider } from '@/lend/core/LendProvider.js'
7
6
  import type { ChainManager } from '@/services/ChainManager.js'
8
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
9
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
10
7
  import type { Asset } from '@/types/asset.js'
8
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
11
9
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
12
10
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
13
11
  import type { NodeToActionsOptionsMap } from '@/wallet/node/providers/hosted/types/index.js'
@@ -39,13 +37,8 @@ export class TurnkeyHostedWalletProvider extends HostedWalletProvider<
39
37
  | TurnkeyServerClient
40
38
  | TurnkeySDKClientBase,
41
39
  chainManager: ChainManager,
42
- lendProviders?: {
43
- morpho?: LendProvider<LendProviderConfig>
44
- aave?: LendProvider<LendProviderConfig>
45
- },
46
- swapProviders?: {
47
- uniswap?: SwapProvider<SwapProviderConfig>
48
- },
40
+ lendProviders?: LendProviders,
41
+ swapProviders?: SwapProviders,
49
42
  supportedAssets?: Asset[],
50
43
  ) {
51
44
  super(chainManager, lendProviders, swapProviders, supportedAssets)