@eth-optimism/actions-sdk 0.3.0 → 0.4.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 (436) 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 +8 -13
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +35 -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/index.d.ts +4 -5
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  28. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  29. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  30. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  31. package/dist/lend/core/LendProvider.d.ts +12 -8
  32. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  33. package/dist/lend/core/LendProvider.js +15 -21
  34. package/dist/lend/core/LendProvider.js.map +1 -1
  35. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  36. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  37. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  38. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  39. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  40. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  41. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  42. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  43. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  44. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  45. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  46. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  47. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/addresses.js +65 -60
  49. package/dist/lend/providers/aave/addresses.js.map +1 -1
  50. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  51. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  52. package/dist/lend/providers/aave/sdk.js +6 -28
  53. package/dist/lend/providers/aave/sdk.js.map +1 -1
  54. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  55. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  56. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  57. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  58. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  59. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  60. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -42
  61. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  62. package/dist/lend/providers/morpho/api.d.ts +3 -7
  63. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  64. package/dist/lend/providers/morpho/api.js +2 -2
  65. package/dist/lend/providers/morpho/api.js.map +1 -1
  66. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  67. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  68. package/dist/lend/providers/morpho/contracts.js +43 -10
  69. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  70. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  71. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  72. package/dist/lend/providers/morpho/sdk.js +67 -63
  73. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  74. package/dist/nodeActionsFactory.d.ts +1 -1
  75. package/dist/reactActionsFactory.d.ts +1 -1
  76. package/dist/services/ChainManager.d.ts +8 -8
  77. package/dist/services/ChainManager.d.ts.map +1 -1
  78. package/dist/services/ChainManager.js.map +1 -1
  79. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  80. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  81. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  82. package/dist/services/tokenBalance.d.ts +1 -1
  83. package/dist/services/tokenBalance.d.ts.map +1 -1
  84. package/dist/services/tokenBalance.js +31 -30
  85. package/dist/services/tokenBalance.js.map +1 -1
  86. package/dist/services/tokenBalance.spec.js +20 -24
  87. package/dist/services/tokenBalance.spec.js.map +1 -1
  88. package/dist/swap/__mocks__/MockSwapProvider.d.ts +20 -8
  89. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -1
  90. package/dist/swap/__mocks__/MockSwapProvider.js +52 -29
  91. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -1
  92. package/dist/swap/core/SwapProvider.d.ts +105 -16
  93. package/dist/swap/core/SwapProvider.d.ts.map +1 -1
  94. package/dist/swap/core/SwapProvider.js +218 -36
  95. package/dist/swap/core/SwapProvider.js.map +1 -1
  96. package/dist/swap/core/__tests__/SwapProvider.test.js +115 -9
  97. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -1
  98. package/dist/swap/core/markets.d.ts +47 -0
  99. package/dist/swap/core/markets.d.ts.map +1 -0
  100. package/dist/swap/core/markets.js +65 -0
  101. package/dist/swap/core/markets.js.map +1 -0
  102. package/dist/swap/index.d.ts +2 -0
  103. package/dist/swap/index.d.ts.map +1 -1
  104. package/dist/swap/index.js +1 -0
  105. package/dist/swap/index.js.map +1 -1
  106. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +2 -2
  107. package/dist/swap/namespaces/ActionsSwapNamespace.js +2 -2
  108. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +48 -8
  109. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
  110. package/dist/swap/namespaces/BaseSwapNamespace.js +139 -16
  111. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
  112. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +19 -7
  113. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
  114. package/dist/swap/namespaces/WalletSwapNamespace.js +39 -15
  115. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
  116. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +150 -11
  117. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
  118. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +85 -8
  119. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -1
  120. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +9 -42
  121. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
  122. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +81 -139
  123. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
  124. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +10 -9
  125. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -1
  126. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +17 -17
  127. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -1
  128. package/dist/swap/providers/uniswap/addresses.d.ts +5 -0
  129. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -1
  130. package/dist/swap/providers/uniswap/addresses.js +1 -1
  131. package/dist/swap/providers/uniswap/addresses.js.map +1 -1
  132. package/dist/swap/providers/uniswap/encoding.d.ts +4 -4
  133. package/dist/swap/providers/uniswap/encoding.js +17 -17
  134. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  135. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/markets.js +48 -0
  137. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  138. package/dist/swap/providers/uniswap/types.d.ts +4 -3
  139. package/dist/swap/providers/uniswap/types.d.ts.map +1 -1
  140. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  141. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  142. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  143. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  144. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  145. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  146. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  147. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  148. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  149. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  150. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  151. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  152. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  153. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  154. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  155. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  156. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  157. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  158. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  159. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  160. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  161. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  162. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  163. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  164. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  165. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  166. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  167. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  168. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  169. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  170. package/dist/swap/providers/velodrome/abis.js +257 -0
  171. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  172. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  173. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  174. package/dist/swap/providers/velodrome/addresses.js +57 -0
  175. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  176. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  177. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  178. package/dist/swap/providers/velodrome/config.js +29 -0
  179. package/dist/swap/providers/velodrome/config.js.map +1 -0
  180. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  181. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  182. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  183. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  184. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  185. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  186. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  187. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  188. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  189. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  190. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  191. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  192. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  193. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  194. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  195. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  196. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  197. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  198. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  199. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  200. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  201. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  202. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  203. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  204. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  205. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  206. package/dist/swap/providers/velodrome/markets.js +69 -0
  207. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  208. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  209. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  210. package/dist/swap/providers/velodrome/types.js +2 -0
  211. package/dist/swap/providers/velodrome/types.js.map +1 -0
  212. package/dist/types/actions.d.ts +44 -9
  213. package/dist/types/actions.d.ts.map +1 -1
  214. package/dist/types/asset.d.ts +7 -9
  215. package/dist/types/asset.d.ts.map +1 -1
  216. package/dist/types/chain.d.ts +2 -2
  217. package/dist/types/chain.d.ts.map +1 -1
  218. package/dist/types/lend/base.d.ts +6 -6
  219. package/dist/types/lend/base.d.ts.map +1 -1
  220. package/dist/types/lend/base.js.map +1 -1
  221. package/dist/types/lend/contracts.d.ts +2 -1
  222. package/dist/types/lend/contracts.d.ts.map +1 -1
  223. package/dist/types/providers.d.ts +21 -0
  224. package/dist/types/providers.d.ts.map +1 -0
  225. package/dist/types/providers.js +2 -0
  226. package/dist/types/providers.js.map +1 -0
  227. package/dist/types/swap/base.d.ts +133 -33
  228. package/dist/types/swap/base.d.ts.map +1 -1
  229. package/dist/utils/approve.d.ts +82 -0
  230. package/dist/utils/approve.d.ts.map +1 -0
  231. package/dist/utils/{permit2.js → approve.js} +48 -14
  232. package/dist/utils/approve.js.map +1 -0
  233. package/dist/utils/approve.test.d.ts +2 -0
  234. package/dist/utils/approve.test.d.ts.map +1 -0
  235. package/dist/utils/{permit2.test.js → approve.test.js} +95 -2
  236. package/dist/utils/approve.test.js.map +1 -0
  237. package/dist/utils/assets.d.ts +6 -0
  238. package/dist/utils/assets.d.ts.map +1 -1
  239. package/dist/utils/assets.js +10 -0
  240. package/dist/utils/assets.js.map +1 -1
  241. package/dist/utils/validateAddresses.d.ts +32 -0
  242. package/dist/utils/validateAddresses.d.ts.map +1 -0
  243. package/dist/utils/validateAddresses.js +103 -0
  244. package/dist/utils/validateAddresses.js.map +1 -0
  245. package/dist/utils/validateAddresses.test.d.ts +2 -0
  246. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  247. package/dist/utils/validateAddresses.test.js +314 -0
  248. package/dist/utils/validateAddresses.test.js.map +1 -0
  249. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  250. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  251. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  252. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  253. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  254. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  255. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -16
  256. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  257. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  258. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -11
  259. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  260. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +2 -9
  261. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  262. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  263. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +6 -17
  264. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  265. package/dist/wallet/core/wallets/abstract/Wallet.js +5 -6
  266. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  267. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  268. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  269. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  270. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  271. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  272. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  273. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +3 -10
  274. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  275. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  276. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  277. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -10
  278. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  279. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  280. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  281. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  282. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +6 -8
  283. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  284. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  285. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  286. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +2 -9
  287. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  288. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  289. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +3 -10
  290. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  291. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  292. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -10
  293. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  294. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  295. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +3 -9
  296. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  297. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -2
  298. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  299. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +3 -9
  300. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  301. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -2
  302. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  303. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -9
  304. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  305. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -2
  306. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  307. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  308. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  309. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  310. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  311. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  312. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  313. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +5 -10
  314. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  315. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  316. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  317. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  318. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  319. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  320. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -10
  321. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  322. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  323. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  324. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -10
  325. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  326. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  327. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  328. package/package.json +3 -2
  329. package/src/__mocks__/MockAssets.ts +54 -6
  330. package/src/__tests__/actions.test.ts +1 -1
  331. package/src/actions.ts +58 -61
  332. package/src/constants/assets.ts +781 -10
  333. package/src/constants/providers.ts +5 -0
  334. package/src/constants/supportedChains.ts +22 -2
  335. package/src/index.ts +50 -8
  336. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  337. package/src/lend/core/LendProvider.ts +27 -28
  338. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  339. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  340. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  341. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  342. package/src/lend/providers/aave/addresses.ts +82 -64
  343. package/src/lend/providers/aave/sdk.ts +11 -36
  344. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  345. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  346. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -43
  347. package/src/lend/providers/morpho/api.ts +7 -8
  348. package/src/lend/providers/morpho/contracts.ts +62 -13
  349. package/src/lend/providers/morpho/sdk.ts +85 -63
  350. package/src/services/ChainManager.ts +12 -21
  351. package/src/services/__mocks__/MockChainManager.ts +4 -7
  352. package/src/services/tokenBalance.spec.ts +20 -24
  353. package/src/services/tokenBalance.ts +39 -33
  354. package/src/swap/__mocks__/MockSwapProvider.ts +77 -42
  355. package/src/swap/core/SwapProvider.ts +307 -49
  356. package/src/swap/core/__tests__/SwapProvider.test.ts +151 -9
  357. package/src/swap/core/markets.ts +104 -0
  358. package/src/swap/index.ts +5 -0
  359. package/src/swap/namespaces/ActionsSwapNamespace.ts +2 -2
  360. package/src/swap/namespaces/BaseSwapNamespace.ts +199 -18
  361. package/src/swap/namespaces/WalletSwapNamespace.ts +53 -14
  362. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +241 -14
  363. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +103 -8
  364. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +108 -195
  365. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +12 -12
  366. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +19 -20
  367. package/src/swap/providers/uniswap/addresses.ts +3 -1
  368. package/src/swap/providers/uniswap/encoding.ts +22 -22
  369. package/src/swap/providers/uniswap/markets.ts +84 -0
  370. package/src/swap/providers/uniswap/types.ts +4 -3
  371. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  372. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  373. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  374. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  375. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  376. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  377. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  378. package/src/swap/providers/velodrome/abis.ts +264 -0
  379. package/src/swap/providers/velodrome/addresses.ts +107 -0
  380. package/src/swap/providers/velodrome/config.ts +46 -0
  381. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  382. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  383. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  384. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  385. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  386. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  387. package/src/swap/providers/velodrome/markets.ts +100 -0
  388. package/src/swap/providers/velodrome/types.ts +30 -0
  389. package/src/types/actions.ts +49 -9
  390. package/src/types/asset.ts +12 -9
  391. package/src/types/chain.ts +2 -2
  392. package/src/types/lend/base.ts +6 -6
  393. package/src/types/lend/contracts.ts +5 -1
  394. package/src/types/providers.ts +22 -0
  395. package/src/types/swap/base.ts +147 -34
  396. package/src/utils/{permit2.test.ts → approve.test.ts} +117 -1
  397. package/src/utils/{permit2.ts → approve.ts} +67 -14
  398. package/src/utils/assets.ts +14 -0
  399. package/src/utils/validateAddresses.test.ts +439 -0
  400. package/src/utils/validateAddresses.ts +153 -0
  401. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  402. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  403. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +5 -17
  404. package/src/wallet/core/providers/hosted/types/index.ts +9 -11
  405. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +5 -17
  406. package/src/wallet/core/wallets/abstract/Wallet.ts +15 -22
  407. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  408. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  409. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +5 -17
  410. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  411. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +3 -10
  412. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +8 -8
  413. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  414. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +3 -10
  415. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +5 -17
  416. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +5 -17
  417. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +7 -11
  418. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +7 -11
  419. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +7 -11
  420. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +23 -10
  421. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  422. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +10 -18
  423. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  424. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -18
  425. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -18
  426. package/dist/supported/tokens.d.ts +0 -25
  427. package/dist/supported/tokens.d.ts.map +0 -1
  428. package/dist/supported/tokens.js +0 -44
  429. package/dist/supported/tokens.js.map +0 -1
  430. package/dist/utils/permit2.d.ts +0 -46
  431. package/dist/utils/permit2.d.ts.map +0 -1
  432. package/dist/utils/permit2.js.map +0 -1
  433. package/dist/utils/permit2.test.d.ts +0 -2
  434. package/dist/utils/permit2.test.d.ts.map +0 -1
  435. package/dist/utils/permit2.test.js.map +0 -1
  436. package/src/supported/tokens.ts +0 -66
@@ -0,0 +1,153 @@
1
+ import type { Address } from 'viem'
2
+ import { getAddress } from 'viem'
3
+
4
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import type { AssetsConfig, LendConfig, SwapConfig } from '@/types/actions.js'
6
+ import type { Asset } from '@/types/asset.js'
7
+ import type { LendProviderConfig } from '@/types/lend/index.js'
8
+ import type { SwapProviderConfig } from '@/types/swap/index.js'
9
+
10
+ type NamedAddresses = Record<string, Address>
11
+
12
+ /**
13
+ * Validates all values in an address map.
14
+ * Values may be a single Address or a record of named addresses.
15
+ * Collects all failures before throwing a single Error listing every invalid entry.
16
+ * @returns The original map reference if all addresses are valid.
17
+ * @throws Error listing all invalid addresses with their chain IDs and key names.
18
+ */
19
+ export function validateAddressMap<
20
+ M extends Partial<Record<number, Address | NamedAddresses>>,
21
+ >(map: M): M {
22
+ const errors: string[] = []
23
+
24
+ for (const [chainId, value] of Object.entries(map)) {
25
+ if (value === undefined) continue
26
+ if (typeof value === 'string') {
27
+ try {
28
+ getAddress(value)
29
+ } catch {
30
+ errors.push(` - [${chainId}]: ${value} (not a valid EVM address)`)
31
+ }
32
+ } else {
33
+ for (const [key, addr] of Object.entries(value as NamedAddresses)) {
34
+ try {
35
+ getAddress(addr)
36
+ } catch {
37
+ errors.push(
38
+ ` - ${key}[${chainId}]: ${addr} (not a valid EVM address)`,
39
+ )
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ if (errors.length > 0) {
46
+ throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
47
+ }
48
+ return map
49
+ }
50
+
51
+ /**
52
+ * Validates a Partial<Record<SupportedChainId, Address | 'native'>> asset address map.
53
+ * Skips entries where the value is 'native'.
54
+ * Collects all failures before throwing a single Error.
55
+ * @throws Error listing all invalid addresses with their chain IDs.
56
+ */
57
+ export function validateAssetAddresses(
58
+ map: Partial<Record<SupportedChainId, Address | 'native'>>,
59
+ ): void {
60
+ const errors: string[] = []
61
+
62
+ for (const [chainId, value] of Object.entries(map)) {
63
+ if (value === undefined || value === 'native') continue
64
+ try {
65
+ getAddress(value)
66
+ } catch {
67
+ errors.push(` - [${chainId}]: ${value} (not a valid EVM address)`)
68
+ }
69
+ }
70
+
71
+ if (errors.length > 0) {
72
+ throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
73
+ }
74
+ }
75
+
76
+ interface AddressEntry {
77
+ path: string
78
+ value: string
79
+ }
80
+
81
+ function assetAddresses(asset: Asset, path: string): AddressEntry[] {
82
+ return Object.entries(asset.address)
83
+ .filter(([, addr]) => addr !== 'native')
84
+ .map(([chainId, addr]) => ({
85
+ path: `${path}.address[${chainId}]`,
86
+ value: addr as string,
87
+ }))
88
+ }
89
+
90
+ function lendProviderAddresses(
91
+ config: LendProviderConfig,
92
+ providerPath: string,
93
+ ): AddressEntry[] {
94
+ return (['marketAllowlist', 'marketBlocklist'] as const).flatMap((key) =>
95
+ (config[key] ?? []).flatMap((m, i) => [
96
+ { path: `${providerPath}.${key}[${i}].address`, value: m.address },
97
+ ...assetAddresses(m.asset, `${providerPath}.${key}[${i}].asset`),
98
+ ]),
99
+ )
100
+ }
101
+
102
+ function swapProviderAddresses(
103
+ config: SwapProviderConfig,
104
+ providerPath: string,
105
+ ): AddressEntry[] {
106
+ return (['marketAllowlist', 'marketBlocklist'] as const).flatMap((key) =>
107
+ (config[key] ?? []).flatMap((m, i) =>
108
+ m.assets.flatMap((asset, j) =>
109
+ assetAddresses(asset, `${providerPath}.${key}[${i}].assets[${j}]`),
110
+ ),
111
+ ),
112
+ )
113
+ }
114
+
115
+ /**
116
+ * Validates all developer-supplied addresses in an ActionsConfig.
117
+ * Iterates all lend and swap providers generically, so new providers are covered automatically.
118
+ * Collects all failures before throwing a single Error.
119
+ * @throws Error listing all invalid addresses with their locations and chain IDs.
120
+ */
121
+ export function validateConfigAddresses(config: {
122
+ lend?: LendConfig
123
+ swap?: SwapConfig
124
+ assets?: AssetsConfig
125
+ }): void {
126
+ const addresses: AddressEntry[] = [
127
+ ...Object.entries(config.lend ?? {}).flatMap(([name, cfg]) =>
128
+ lendProviderAddresses(cfg as LendProviderConfig, `lend.${name}`),
129
+ ),
130
+ ...Object.entries(config.swap ?? {}).flatMap(([name, cfg]) =>
131
+ swapProviderAddresses(cfg as SwapProviderConfig, `swap.${name}`),
132
+ ),
133
+ ...(config.assets?.allow ?? []).flatMap((a, i) =>
134
+ assetAddresses(a, `assets.allow[${i}]`),
135
+ ),
136
+ ...(config.assets?.block ?? []).flatMap((a, i) =>
137
+ assetAddresses(a, `assets.block[${i}]`),
138
+ ),
139
+ ]
140
+
141
+ const errors = addresses.flatMap(({ path, value }) => {
142
+ try {
143
+ getAddress(value)
144
+ return []
145
+ } catch {
146
+ return [` - ${path}: ${value} (not a valid EVM address)`]
147
+ }
148
+ })
149
+
150
+ if (errors.length > 0) {
151
+ throw new Error(`Invalid addresses found:\n${errors.join('\n')}`)
152
+ }
153
+ }
@@ -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,13 @@
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'
5
4
  import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
6
5
  import type { ChainManager } from '@/services/ChainManager.js'
7
6
  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
7
  import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
11
- import type { LendProviderConfig, SwapProviderConfig } from '@/types/actions.js'
8
+ import type { SwapSettings } from '@/types/actions.js'
12
9
  import type { Asset, TokenBalance } from '@/types/asset.js'
10
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
13
11
  import type { TransactionData } from '@/types/transaction.js'
14
12
  import type {
15
13
  BatchTransactionReturnType,
@@ -25,16 +23,11 @@ export abstract class Wallet {
25
23
  /** Lend namespace with all lending operations */
26
24
  lend?: WalletLendNamespace
27
25
  /** Providers for lending market operations */
28
- protected lendProviders: {
29
- morpho?: LendProvider<LendProviderConfig>
30
- aave?: LendProvider<LendProviderConfig>
31
- }
26
+ protected lendProviders: LendProviders
32
27
  /** Swap namespace with all swap operations */
33
28
  swap?: WalletSwapNamespace
34
29
  /** Providers for swap operations */
35
- protected swapProviders: {
36
- uniswap?: SwapProvider<SwapProviderConfig>
37
- }
30
+ protected swapProviders: SwapProviders
38
31
  /** Manages supported blockchain networks and RPC clients */
39
32
  protected chainManager: ChainManager
40
33
  /** List of supported assets for this wallet */
@@ -62,28 +55,28 @@ export abstract class Wallet {
62
55
  * @param chainManager - Chain manager for the wallet
63
56
  * @param lendProviders - Lend providers for the wallet
64
57
  * @param swapProviders - Swap providers for the wallet
65
- * @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
58
+ * @param supportedAssets - List of supported assets (defaults to empty)
66
59
  */
67
60
  protected constructor(
68
61
  chainManager: ChainManager,
69
- lendProviders?: {
70
- morpho?: LendProvider<LendProviderConfig>
71
- aave?: LendProvider<LendProviderConfig>
72
- },
73
- swapProviders?: {
74
- uniswap?: SwapProvider<SwapProviderConfig>
75
- },
62
+ lendProviders?: LendProviders,
63
+ swapProviders?: SwapProviders,
76
64
  supportedAssets?: Asset[],
65
+ swapSettings?: SwapSettings,
77
66
  ) {
78
67
  this.chainManager = chainManager
79
68
  this.lendProviders = lendProviders || {}
80
69
  this.swapProviders = swapProviders || {}
81
- this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
70
+ this.supportedAssets = supportedAssets || []
82
71
  if (this.lendProviders.morpho || this.lendProviders.aave) {
83
72
  this.lend = new WalletLendNamespace(this.lendProviders, this)
84
73
  }
85
- if (this.swapProviders.uniswap) {
86
- this.swap = new WalletSwapNamespace(this.swapProviders, this)
74
+ if (Object.values(this.swapProviders).some(Boolean)) {
75
+ this.swap = new WalletSwapNamespace(
76
+ this.swapProviders,
77
+ this,
78
+ swapSettings,
79
+ )
87
80
  }
88
81
  }
89
82
 
@@ -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 {