@eth-optimism/actions-sdk 0.2.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 (500) 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 -4
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -5
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +23 -9
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +68 -36
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +217 -2
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +744 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/contracts.d.ts +4 -0
  16. package/dist/constants/contracts.d.ts.map +1 -0
  17. package/dist/constants/contracts.js +3 -0
  18. package/dist/constants/contracts.js.map +1 -0
  19. package/dist/constants/providers.d.ts +6 -0
  20. package/dist/constants/providers.d.ts.map +1 -0
  21. package/dist/constants/providers.js +6 -0
  22. package/dist/constants/providers.js.map +1 -0
  23. package/dist/constants/supportedChains.d.ts +2 -2
  24. package/dist/constants/supportedChains.d.ts.map +1 -1
  25. package/dist/constants/supportedChains.js +12 -2
  26. package/dist/constants/supportedChains.js.map +1 -1
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  32. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  33. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  34. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  35. package/dist/lend/core/LendProvider.d.ts +12 -14
  36. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  37. package/dist/lend/core/LendProvider.js +16 -31
  38. package/dist/lend/core/LendProvider.js.map +1 -1
  39. package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
  40. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  41. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  42. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  43. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  44. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  45. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  46. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  47. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  49. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  50. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  51. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  52. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  53. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  54. package/dist/lend/providers/aave/addresses.js +65 -60
  55. package/dist/lend/providers/aave/addresses.js.map +1 -1
  56. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  57. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  58. package/dist/lend/providers/aave/sdk.js +6 -28
  59. package/dist/lend/providers/aave/sdk.js.map +1 -1
  60. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  63. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  64. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  65. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  66. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
  67. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  68. package/dist/lend/providers/morpho/api.d.ts +3 -3
  69. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  70. package/dist/lend/providers/morpho/api.js +2 -2
  71. package/dist/lend/providers/morpho/api.js.map +1 -1
  72. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  73. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  74. package/dist/lend/providers/morpho/contracts.js +43 -10
  75. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  76. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  77. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  78. package/dist/lend/providers/morpho/sdk.js +67 -54
  79. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  80. package/dist/nodeActionsFactory.d.ts +1 -1
  81. package/dist/reactActionsFactory.d.ts +1 -1
  82. package/dist/services/ChainManager.d.ts +8 -8
  83. package/dist/services/ChainManager.d.ts.map +1 -1
  84. package/dist/services/ChainManager.js.map +1 -1
  85. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  86. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  87. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  88. package/dist/services/tokenBalance.d.ts +1 -1
  89. package/dist/services/tokenBalance.d.ts.map +1 -1
  90. package/dist/services/tokenBalance.js +31 -30
  91. package/dist/services/tokenBalance.js.map +1 -1
  92. package/dist/services/tokenBalance.spec.js +20 -24
  93. package/dist/services/tokenBalance.spec.js.map +1 -1
  94. package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
  95. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  96. package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
  97. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  98. package/dist/swap/core/SwapProvider.d.ts +145 -0
  99. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  100. package/dist/swap/core/SwapProvider.js +359 -0
  101. package/dist/swap/core/SwapProvider.js.map +1 -0
  102. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  103. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  104. package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
  105. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  106. package/dist/swap/core/markets.d.ts +47 -0
  107. package/dist/swap/core/markets.d.ts.map +1 -0
  108. package/dist/swap/core/markets.js +65 -0
  109. package/dist/swap/core/markets.js.map +1 -0
  110. package/dist/swap/index.d.ts +9 -0
  111. package/dist/swap/index.d.ts.map +1 -0
  112. package/dist/swap/index.js +9 -0
  113. package/dist/swap/index.js.map +1 -0
  114. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  115. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  116. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  117. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  118. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
  119. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  120. package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
  121. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  122. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
  123. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  124. package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
  125. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  126. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  127. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
  129. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  131. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
  133. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
  135. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
  137. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  139. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  140. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
  141. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  142. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  143. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  144. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  145. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  146. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  147. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  148. package/dist/swap/providers/uniswap/abis.js +138 -0
  149. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  150. package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  152. package/dist/swap/providers/uniswap/addresses.js +81 -0
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  154. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  155. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  156. package/dist/swap/providers/uniswap/encoding.js +233 -0
  157. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  159. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  160. package/dist/swap/providers/uniswap/markets.js +48 -0
  161. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  162. package/dist/swap/providers/uniswap/types.d.ts +21 -0
  163. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  164. package/dist/swap/providers/uniswap/types.js +2 -0
  165. package/dist/swap/providers/uniswap/types.js.map +1 -0
  166. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  167. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  169. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  181. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  190. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  191. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  193. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  194. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  195. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/abis.js +257 -0
  197. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  198. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  199. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/addresses.js +57 -0
  201. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  202. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  203. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/config.js +29 -0
  205. package/dist/swap/providers/velodrome/config.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  207. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  209. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  211. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  213. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  215. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  217. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  226. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  227. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  229. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  230. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  231. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/markets.js +69 -0
  233. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  234. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  235. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  236. package/dist/swap/providers/velodrome/types.js +2 -0
  237. package/dist/swap/providers/velodrome/types.js.map +1 -0
  238. package/dist/types/actions.d.ts +60 -11
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types/asset.d.ts +7 -9
  241. package/dist/types/asset.d.ts.map +1 -1
  242. package/dist/types/chain.d.ts +2 -2
  243. package/dist/types/chain.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +2 -0
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/lend/base.d.ts +9 -19
  249. package/dist/types/lend/base.d.ts.map +1 -1
  250. package/dist/types/lend/base.js.map +1 -1
  251. package/dist/types/lend/contracts.d.ts +2 -1
  252. package/dist/types/lend/contracts.d.ts.map +1 -1
  253. package/dist/types/providers.d.ts +21 -0
  254. package/dist/types/providers.d.ts.map +1 -0
  255. package/dist/types/providers.js +2 -0
  256. package/dist/types/providers.js.map +1 -0
  257. package/dist/types/swap/base.d.ts +338 -0
  258. package/dist/types/swap/base.d.ts.map +1 -0
  259. package/dist/types/swap/base.js +4 -0
  260. package/dist/types/swap/base.js.map +1 -0
  261. package/dist/types/swap/index.d.ts +2 -0
  262. package/dist/types/swap/index.d.ts.map +1 -0
  263. package/dist/types/swap/index.js +2 -0
  264. package/dist/types/swap/index.js.map +1 -0
  265. package/dist/types/transaction.d.ts +14 -0
  266. package/dist/types/transaction.d.ts.map +1 -0
  267. package/dist/types/transaction.js +2 -0
  268. package/dist/types/transaction.js.map +1 -0
  269. package/dist/utils/approve.d.ts +82 -0
  270. package/dist/utils/approve.d.ts.map +1 -0
  271. package/dist/utils/approve.js +134 -0
  272. package/dist/utils/approve.js.map +1 -0
  273. package/dist/utils/approve.test.d.ts +2 -0
  274. package/dist/utils/approve.test.d.ts.map +1 -0
  275. package/dist/utils/approve.test.js +203 -0
  276. package/dist/utils/approve.test.js.map +1 -0
  277. package/dist/utils/assets.d.ts +10 -5
  278. package/dist/utils/assets.d.ts.map +1 -1
  279. package/dist/utils/assets.js +14 -11
  280. package/dist/utils/assets.js.map +1 -1
  281. package/dist/utils/assets.test.js +13 -1
  282. package/dist/utils/assets.test.js.map +1 -1
  283. package/dist/utils/validateAddresses.d.ts +32 -0
  284. package/dist/utils/validateAddresses.d.ts.map +1 -0
  285. package/dist/utils/validateAddresses.js +103 -0
  286. package/dist/utils/validateAddresses.js.map +1 -0
  287. package/dist/utils/validateAddresses.test.d.ts +2 -0
  288. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  289. package/dist/utils/validateAddresses.test.js +314 -0
  290. package/dist/utils/validateAddresses.test.js.map +1 -0
  291. package/dist/utils/validation.d.ts +12 -0
  292. package/dist/utils/validation.d.ts.map +1 -0
  293. package/dist/utils/validation.js +44 -0
  294. package/dist/utils/validation.js.map +1 -0
  295. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  296. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  297. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  298. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  299. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  300. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  301. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
  302. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  303. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  304. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  305. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
  306. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  307. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
  308. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  309. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  310. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  311. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
  312. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  313. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
  314. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  315. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
  316. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  317. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  318. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  319. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  320. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  321. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  322. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  323. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
  324. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  325. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  326. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  327. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  328. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
  329. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  330. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  331. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  332. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  333. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  334. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
  335. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  336. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  337. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  338. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
  339. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  341. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
  343. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  344. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  345. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  346. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
  347. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  348. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  349. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  350. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
  351. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  352. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
  353. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  354. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
  355. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  356. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
  357. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
  359. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  360. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
  361. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
  363. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  364. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
  365. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  366. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  367. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  368. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  369. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  370. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  371. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  372. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
  373. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  374. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  375. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  376. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  377. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  378. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  379. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
  380. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  381. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  382. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  383. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
  384. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  385. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  386. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  387. package/package.json +4 -3
  388. package/src/__mocks__/MockAssets.ts +54 -4
  389. package/src/__tests__/actions.test.ts +1 -5
  390. package/src/actions.ts +106 -71
  391. package/src/constants/assets.ts +792 -5
  392. package/src/constants/contracts.ts +5 -0
  393. package/src/constants/providers.ts +5 -0
  394. package/src/constants/supportedChains.ts +22 -2
  395. package/src/index.ts +76 -6
  396. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  397. package/src/lend/core/LendProvider.ts +28 -41
  398. package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
  399. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  400. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  401. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  402. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  403. package/src/lend/providers/aave/addresses.ts +82 -64
  404. package/src/lend/providers/aave/sdk.ts +11 -36
  405. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  406. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  407. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
  408. package/src/lend/providers/morpho/api.ts +7 -4
  409. package/src/lend/providers/morpho/contracts.ts +62 -13
  410. package/src/lend/providers/morpho/sdk.ts +85 -54
  411. package/src/services/ChainManager.ts +12 -21
  412. package/src/services/__mocks__/MockChainManager.ts +4 -7
  413. package/src/services/tokenBalance.spec.ts +20 -24
  414. package/src/services/tokenBalance.ts +39 -33
  415. package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
  416. package/src/swap/core/SwapProvider.ts +577 -0
  417. package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
  418. package/src/swap/core/markets.ts +104 -0
  419. package/src/swap/index.ts +19 -0
  420. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  421. package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
  422. package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
  423. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
  424. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
  425. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
  426. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  427. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
  428. package/src/swap/providers/uniswap/abis.ts +144 -0
  429. package/src/swap/providers/uniswap/addresses.ts +110 -0
  430. package/src/swap/providers/uniswap/encoding.ts +406 -0
  431. package/src/swap/providers/uniswap/markets.ts +84 -0
  432. package/src/swap/providers/uniswap/types.ts +25 -0
  433. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  434. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  435. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  436. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  437. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  438. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  439. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  440. package/src/swap/providers/velodrome/abis.ts +264 -0
  441. package/src/swap/providers/velodrome/addresses.ts +107 -0
  442. package/src/swap/providers/velodrome/config.ts +46 -0
  443. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  444. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  445. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  446. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  447. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  448. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  449. package/src/swap/providers/velodrome/markets.ts +100 -0
  450. package/src/swap/providers/velodrome/types.ts +30 -0
  451. package/src/types/actions.ts +68 -12
  452. package/src/types/asset.ts +12 -9
  453. package/src/types/chain.ts +2 -2
  454. package/src/types/index.ts +2 -0
  455. package/src/types/lend/base.ts +10 -20
  456. package/src/types/lend/contracts.ts +5 -1
  457. package/src/types/providers.ts +22 -0
  458. package/src/types/swap/base.ts +372 -0
  459. package/src/types/swap/index.ts +1 -0
  460. package/src/types/transaction.ts +14 -0
  461. package/src/utils/approve.test.ts +258 -0
  462. package/src/utils/approve.ts +197 -0
  463. package/src/utils/assets.test.ts +16 -1
  464. package/src/utils/assets.ts +27 -10
  465. package/src/utils/validateAddresses.test.ts +439 -0
  466. package/src/utils/validateAddresses.ts +153 -0
  467. package/src/utils/validation.ts +76 -0
  468. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  469. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  470. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
  471. package/src/wallet/core/providers/hosted/types/index.ts +9 -7
  472. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
  473. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
  474. package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
  475. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  476. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  477. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
  478. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  479. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
  480. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
  481. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  482. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
  483. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
  484. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
  485. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
  486. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
  487. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
  488. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
  489. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
  490. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
  491. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  492. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
  493. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  494. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
  495. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
  496. package/dist/supported/tokens.d.ts +0 -25
  497. package/dist/supported/tokens.d.ts.map +0 -1
  498. package/dist/supported/tokens.js +0 -37
  499. package/dist/supported/tokens.js.map +0 -1
  500. package/src/supported/tokens.ts +0 -52
@@ -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,9 +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 { LendProviderConfig } from '@/types/actions.js'
6
4
  import type { Asset } from '@/types/asset.js'
5
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
7
6
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
8
7
 
9
8
  /**
@@ -17,22 +16,19 @@ export abstract class HostedWalletProvider<
17
16
  TOptionsMap extends Record<TType, unknown>,
18
17
  > {
19
18
  protected chainManager: ChainManager
20
- protected lendProviders: {
21
- morpho?: LendProvider<LendProviderConfig>
22
- aave?: LendProvider<LendProviderConfig>
23
- }
19
+ protected lendProviders: LendProviders
20
+ protected swapProviders: SwapProviders
24
21
  protected supportedAssets?: Asset[]
25
22
 
26
23
  protected constructor(
27
24
  chainManager: ChainManager,
28
- lendProviders?: {
29
- morpho?: LendProvider<LendProviderConfig>
30
- aave?: LendProvider<LendProviderConfig>
31
- },
25
+ lendProviders?: LendProviders,
26
+ swapProviders?: SwapProviders,
32
27
  supportedAssets?: Asset[],
33
28
  ) {
34
29
  this.chainManager = chainManager
35
30
  this.lendProviders = lendProviders || {}
31
+ this.swapProviders = swapProviders || {}
36
32
  this.supportedAssets = supportedAssets
37
33
  }
38
34
  /**
@@ -1,7 +1,7 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
1
  import type { ChainManager } from '@/services/ChainManager.js'
3
- import type { LendProviderConfig } from '@/types/actions.js'
2
+ import type { SwapSettings } from '@/types/actions.js'
4
3
  import type { Asset } from '@/types/asset.js'
4
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
5
5
  import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
6
6
 
7
7
  /**
@@ -12,11 +12,10 @@ import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstra
12
12
  */
13
13
  export interface HostedProviderDeps {
14
14
  chainManager: ChainManager
15
- lendProviders?: {
16
- morpho?: LendProvider<LendProviderConfig>
17
- aave?: LendProvider<LendProviderConfig>
18
- }
15
+ lendProviders?: LendProviders
16
+ swapProviders?: SwapProviders
19
17
  supportedAssets?: Asset[]
18
+ swapSettings?: SwapSettings
20
19
  }
21
20
 
22
21
  /**
@@ -52,7 +51,10 @@ export interface HostedProviderFactory<
52
51
  > {
53
52
  type: TType
54
53
  validateOptions(options: unknown): options is TOptions
55
- create(deps: HostedProviderDeps, options: TOptions): TInstance
54
+ create(
55
+ deps: HostedProviderDeps,
56
+ options: TOptions,
57
+ ): TInstance | Promise<TInstance>
56
58
  }
57
59
 
58
60
  /**
@@ -2,10 +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 { LendProviderConfig } from '@/types/actions.js'
8
6
  import type { Asset } from '@/types/asset.js'
7
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
9
8
  import { SmartWalletProvider } from '@/wallet/core/providers/smart/abstract/SmartWalletProvider.js'
10
9
  import type { SmartWalletCreationResult } from '@/wallet/core/providers/smart/abstract/types/index.js'
11
10
  import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
@@ -27,10 +26,9 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
27
26
  /** Manages supported blockchain networks */
28
27
  private chainManager: ChainManager
29
28
  /** Providers for lending market operations */
30
- private lendProviders: {
31
- morpho?: LendProvider<LendProviderConfig>
32
- aave?: LendProvider<LendProviderConfig>
33
- }
29
+ private lendProviders: LendProviders
30
+ /** Providers for swap operations */
31
+ private swapProviders: SwapProviders
34
32
  /** Supported assets for this wallet provider */
35
33
  private supportedAssets?: Asset[]
36
34
  /** Optional 16-byte attribution suffix appended to callData */
@@ -40,21 +38,21 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
40
38
  * Initialize the Smart Wallet Provider
41
39
  * @param chainManager - Manages supported blockchain networks
42
40
  * @param lendProviders - Providers for lending market operations
41
+ * @param swapProviders - Providers for swap operations
43
42
  * @param supportedAssets - Optional list of supported assets
44
43
  * @param attributionSuffix - Optional attribution suffix
45
44
  */
46
45
  constructor(
47
46
  chainManager: ChainManager,
48
- lendProviders?: {
49
- morpho?: LendProvider<LendProviderConfig>
50
- aave?: LendProvider<LendProviderConfig>
51
- },
47
+ lendProviders?: LendProviders,
48
+ swapProviders?: SwapProviders,
52
49
  supportedAssets?: Asset[],
53
50
  attributionSuffix?: string,
54
51
  ) {
55
52
  super()
56
53
  this.chainManager = chainManager
57
54
  this.lendProviders = lendProviders || {}
55
+ this.swapProviders = swapProviders || {}
58
56
  this.supportedAssets = supportedAssets
59
57
  if (attributionSuffix) {
60
58
  this.attributionSuffix =
@@ -93,6 +91,7 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
93
91
  signer,
94
92
  chainManager: this.chainManager,
95
93
  lendProviders: this.lendProviders,
94
+ swapProviders: this.swapProviders,
96
95
  supportedAssets: this.supportedAssets,
97
96
  nonce,
98
97
  attributionSuffix: this.attributionSuffix,
@@ -182,6 +181,7 @@ export class DefaultSmartWalletProvider extends SmartWalletProvider {
182
181
  signer,
183
182
  chainManager: this.chainManager,
184
183
  lendProviders: this.lendProviders,
184
+ swapProviders: this.swapProviders,
185
185
  supportedAssets: this.supportedAssets,
186
186
  deploymentAddress: walletAddress,
187
187
  attributionSuffix: this.attributionSuffix,
@@ -413,6 +413,7 @@ describe('DefaultSmartWalletProvider', () => {
413
413
  const provider = new DefaultSmartWalletProvider(
414
414
  mockChainManager,
415
415
  { morpho: mockLendProvider },
416
+ undefined,
416
417
  supportedAssets,
417
418
  attributionSeed,
418
419
  )
@@ -440,6 +441,7 @@ describe('DefaultSmartWalletProvider', () => {
440
441
  const provider = new DefaultSmartWalletProvider(
441
442
  mockChainManager,
442
443
  { morpho: mockLendProvider },
444
+ undefined,
443
445
  supportedAssets,
444
446
  attributionSeed,
445
447
  )
@@ -1,14 +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'
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 { LendProviderConfig } from '@/types/actions.js'
7
+ import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
8
+ import type { SwapSettings } from '@/types/actions.js'
10
9
  import type { Asset, TokenBalance } from '@/types/asset.js'
11
- import type { TransactionData } from '@/types/lend/index.js'
10
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
11
+ import type { TransactionData } from '@/types/transaction.js'
12
12
  import type {
13
13
  BatchTransactionReturnType,
14
14
  TransactionReturnType,
@@ -23,10 +23,11 @@ export abstract class Wallet {
23
23
  /** Lend namespace with all lending operations */
24
24
  lend?: WalletLendNamespace
25
25
  /** Providers for lending market operations */
26
- protected lendProviders: {
27
- morpho?: LendProvider<LendProviderConfig>
28
- aave?: LendProvider<LendProviderConfig>
29
- }
26
+ protected lendProviders: LendProviders
27
+ /** Swap namespace with all swap operations */
28
+ swap?: WalletSwapNamespace
29
+ /** Providers for swap operations */
30
+ protected swapProviders: SwapProviders
30
31
  /** Manages supported blockchain networks and RPC clients */
31
32
  protected chainManager: ChainManager
32
33
  /** List of supported assets for this wallet */
@@ -53,22 +54,30 @@ export abstract class Wallet {
53
54
  * Create a new wallet
54
55
  * @param chainManager - Chain manager for the wallet
55
56
  * @param lendProviders - Lend providers for the wallet
56
- * @param supportedAssets - List of supported assets (defaults to all SUPPORTED_TOKENS)
57
+ * @param swapProviders - Swap providers for the wallet
58
+ * @param supportedAssets - List of supported assets (defaults to empty)
57
59
  */
58
60
  protected constructor(
59
61
  chainManager: ChainManager,
60
- lendProviders?: {
61
- morpho?: LendProvider<LendProviderConfig>
62
- aave?: LendProvider<LendProviderConfig>
63
- },
62
+ lendProviders?: LendProviders,
63
+ swapProviders?: SwapProviders,
64
64
  supportedAssets?: Asset[],
65
+ swapSettings?: SwapSettings,
65
66
  ) {
66
67
  this.chainManager = chainManager
67
68
  this.lendProviders = lendProviders || {}
68
- this.supportedAssets = supportedAssets || SUPPORTED_TOKENS
69
+ this.swapProviders = swapProviders || {}
70
+ this.supportedAssets = supportedAssets || []
69
71
  if (this.lendProviders.morpho || this.lendProviders.aave) {
70
72
  this.lend = new WalletLendNamespace(this.lendProviders, this)
71
73
  }
74
+ if (Object.values(this.swapProviders).some(Boolean)) {
75
+ this.swap = new WalletSwapNamespace(
76
+ this.swapProviders,
77
+ this,
78
+ swapSettings,
79
+ )
80
+ }
72
81
  }
73
82
 
74
83
  /**
@@ -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,10 @@ 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 { LendProviderConfig } from '@/types/actions.js'
19
17
  import type { Asset } from '@/types/asset.js'
20
- import type { TransactionData } from '@/types/lend/index.js'
18
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
19
+ import type { TransactionData } from '@/types/transaction.js'
21
20
  import { parseAssetAmount } from '@/utils/assets.js'
22
21
  import { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
23
22
  import type { Signer } from '@/wallet/core/wallets/smart/abstract/types/index.js'
@@ -59,6 +58,7 @@ export class DefaultSmartWallet extends SmartWallet {
59
58
  * @param signer - Local account for signing transactions
60
59
  * @param chainManager - Network management service
61
60
  * @param lendProviders - Lending operations providers
61
+ * @param swapProviders - Swap operations providers
62
62
  * @param deploymentAddress - Known wallet address (if already deployed)
63
63
  * @param ownerIndex - Index of signer in owners array
64
64
  * @param nonce - Nonce for address generation
@@ -67,16 +67,14 @@ export class DefaultSmartWallet extends SmartWallet {
67
67
  signers: Signer[],
68
68
  signer: LocalAccount,
69
69
  chainManager: ChainManager,
70
- lendProviders?: {
71
- morpho?: LendProvider<LendProviderConfig>
72
- aave?: LendProvider<LendProviderConfig>
73
- },
70
+ lendProviders?: LendProviders,
71
+ swapProviders?: SwapProviders,
74
72
  supportedAssets?: Asset[],
75
73
  deploymentAddress?: Address,
76
74
  nonce?: bigint,
77
75
  attributionSuffix?: Hex,
78
76
  ) {
79
- super(chainManager, lendProviders, supportedAssets)
77
+ super(chainManager, lendProviders, swapProviders, supportedAssets)
80
78
 
81
79
  const { signersWithLocalAccount, signerIndex } =
82
80
  DefaultSmartWallet.ensureLocalAccountSigner(signers, signer)
@@ -117,10 +115,8 @@ export class DefaultSmartWallet extends SmartWallet {
117
115
  signer: LocalAccount
118
116
  chainManager: ChainManager
119
117
  signers?: Signer[]
120
- lendProviders?: {
121
- morpho?: LendProvider<LendProviderConfig>
122
- aave?: LendProvider<LendProviderConfig>
123
- }
118
+ lendProviders?: LendProviders
119
+ swapProviders?: SwapProviders
124
120
  supportedAssets?: Asset[]
125
121
  deploymentAddress?: Address
126
122
  nonce?: bigint
@@ -132,6 +128,7 @@ export class DefaultSmartWallet extends SmartWallet {
132
128
  params.signer,
133
129
  params.chainManager,
134
130
  params.lendProviders,
131
+ params.swapProviders,
135
132
  params.supportedAssets,
136
133
  params.deploymentAddress,
137
134
  params.nonce,
@@ -540,7 +537,7 @@ export class DefaultSmartWallet extends SmartWallet {
540
537
 
541
538
  // Handle ETH transfers
542
539
  if (asset.type === 'native') {
543
- const parsedAmount = parseAssetAmount(amount, asset.metadata.decimals)
540
+ const parsedAmount = parseAssetAmount(asset, amount)
544
541
 
545
542
  return {
546
543
  to: recipientAddress,
@@ -550,7 +547,7 @@ export class DefaultSmartWallet extends SmartWallet {
550
547
  }
551
548
 
552
549
  // Handle ERC20 token transfers
553
- const parsedAmount = parseAssetAmount(amount, asset.metadata.decimals)
550
+ const parsedAmount = parseAssetAmount(asset, amount)
554
551
 
555
552
  // Encode ERC20 transfer function call
556
553
  const transferData = encodeFunctionData({
@@ -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,10 +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 { LendProviderConfig } from '@/types/actions.js'
8
6
  import type { Asset } from '@/types/asset.js'
7
+ import type { LendProviders, SwapProviders } from '@/types/providers.js'
9
8
  import { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
10
9
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
11
10
  import type {
@@ -32,6 +31,7 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
32
31
  * @param params.privyClient - Privy client instance
33
32
  * @param params.chainManager - Chain manager for multi-chain operations
34
33
  * @param params.lendProviders - Optional lend providers for DeFi operations
34
+ * @param params.swapProviders - Optional swap providers for trading operations
35
35
  * @param params.supportedAssets - Optional list of supported assets
36
36
  * @param params.authorizationContext - Optional authorization context for the Privy client.
37
37
  * Used when Privy needs to sign requests.
@@ -41,14 +41,17 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
41
41
  constructor(params: {
42
42
  privyClient: PrivyClient
43
43
  chainManager: ChainManager
44
- lendProviders?: {
45
- morpho?: LendProvider<LendProviderConfig>
46
- aave?: LendProvider<LendProviderConfig>
47
- }
44
+ lendProviders?: LendProviders
45
+ swapProviders?: SwapProviders
48
46
  supportedAssets?: Asset[]
49
47
  authorizationContext?: AuthorizationContext
50
48
  }) {
51
- super(params.chainManager, params.lendProviders, params.supportedAssets)
49
+ super(
50
+ params.chainManager,
51
+ params.lendProviders,
52
+ params.swapProviders,
53
+ params.supportedAssets,
54
+ )
52
55
  this.privyClient = params.privyClient
53
56
  this.authorizationContext = params.authorizationContext
54
57
  }
@@ -63,6 +66,7 @@ export class PrivyHostedWalletProvider extends HostedWalletProvider<
63
66
  address: getAddress(params.address),
64
67
  chainManager: this.chainManager,
65
68
  lendProviders: this.lendProviders,
69
+ swapProviders: this.swapProviders,
66
70
  supportedAssets: this.supportedAssets,
67
71
  })
68
72
  }