@eth-optimism/actions-sdk 0.1.0 → 0.3.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/LICENSE +1 -1
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -0
  3. package/dist/{test → __mocks__}/MockAssets.js +2 -0
  4. package/dist/__mocks__/MockAssets.js.map +1 -0
  5. package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
  6. package/dist/__mocks__/MockPrivyClient.js.map +1 -0
  7. package/dist/__mocks__/utils.d.ts.map +1 -0
  8. package/dist/__mocks__/utils.js.map +1 -0
  9. package/dist/__tests__/actions.test.d.ts.map +1 -0
  10. package/dist/{actions.test.js → __tests__/actions.test.js} +5 -9
  11. package/dist/__tests__/actions.test.js.map +1 -0
  12. package/dist/actions.d.ts +20 -1
  13. package/dist/actions.d.ts.map +1 -1
  14. package/dist/actions.js +37 -13
  15. package/dist/actions.js.map +1 -1
  16. package/dist/constants/assets.d.ts +23 -0
  17. package/dist/constants/assets.d.ts.map +1 -1
  18. package/dist/constants/assets.js +99 -6
  19. package/dist/constants/assets.js.map +1 -1
  20. package/dist/constants/contracts.d.ts +4 -0
  21. package/dist/constants/contracts.d.ts.map +1 -0
  22. package/dist/constants/contracts.js +3 -0
  23. package/dist/constants/contracts.js.map +1 -0
  24. package/dist/constants/supportedChains.d.ts +1 -1
  25. package/dist/constants/supportedChains.d.ts.map +1 -1
  26. package/dist/constants/supportedChains.js +7 -3
  27. package/dist/constants/supportedChains.js.map +1 -1
  28. package/dist/core/asset/__mocks__/mockAsset.js +1 -1
  29. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
  30. package/dist/index.d.ts +4 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +7 -6
  35. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  36. package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
  37. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
  38. package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
  39. package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  40. package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
  41. package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
  42. package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
  43. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
  44. package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
  45. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
  46. package/dist/lend/core/LendProvider.d.ts +14 -8
  47. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  48. package/dist/lend/core/LendProvider.js +29 -17
  49. package/dist/lend/core/LendProvider.js.map +1 -1
  50. package/dist/lend/core/__tests__/LendProvider.test.js +4 -6
  51. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  52. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -36
  53. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  54. package/dist/lend/namespaces/ActionsLendNamespace.js +2 -48
  55. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
  57. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  58. package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
  59. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
  60. package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -36
  61. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  62. package/dist/lend/namespaces/WalletLendNamespace.js +14 -69
  63. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  64. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +2 -2
  65. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  66. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
  67. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  68. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
  69. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  70. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +8 -10
  71. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  72. package/dist/lend/providers/aave/AaveLendProvider.d.ts +19 -27
  73. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  74. package/dist/lend/providers/aave/AaveLendProvider.js +124 -180
  75. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  76. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
  77. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  78. package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
  79. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  80. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
  81. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  82. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
  83. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  84. package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
  85. package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
  86. package/dist/lend/providers/aave/abis/pool.js +79 -0
  87. package/dist/lend/providers/aave/abis/pool.js.map +1 -0
  88. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  89. package/dist/lend/providers/aave/sdk.js +6 -65
  90. package/dist/lend/providers/aave/sdk.js.map +1 -1
  91. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +0 -1
  92. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  93. package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
  94. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  95. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +5 -24
  96. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  97. package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
  98. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  99. package/dist/lend/providers/morpho/__tests__/sdk.test.js +3 -2
  100. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  101. package/dist/lend/providers/morpho/api.d.ts +4 -0
  102. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  103. package/dist/lend/providers/morpho/api.js.map +1 -1
  104. package/dist/lend/providers/morpho/contracts.d.ts +19 -0
  105. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
  106. package/dist/lend/providers/morpho/contracts.js +32 -0
  107. package/dist/lend/providers/morpho/contracts.js.map +1 -0
  108. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  109. package/dist/lend/providers/morpho/sdk.js +177 -71
  110. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  111. package/dist/services/ChainManager.d.ts +1 -1
  112. package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
  113. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
  114. package/dist/services/__mocks__/MockChainManager.js.map +1 -0
  115. package/dist/services/tokenBalance.d.ts.map +1 -1
  116. package/dist/services/tokenBalance.js +4 -5
  117. package/dist/services/tokenBalance.js.map +1 -1
  118. package/dist/services/tokenBalance.spec.js +2 -2
  119. package/dist/services/tokenBalance.spec.js.map +1 -1
  120. package/dist/supported/tokens.d.ts +4 -4
  121. package/dist/supported/tokens.d.ts.map +1 -1
  122. package/dist/supported/tokens.js +10 -70
  123. package/dist/supported/tokens.js.map +1 -1
  124. package/dist/swap/__mocks__/MockSwapProvider.d.ts +38 -0
  125. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  126. package/dist/swap/__mocks__/MockSwapProvider.js +138 -0
  127. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  128. package/dist/swap/core/SwapProvider.d.ts +56 -0
  129. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  130. package/dist/swap/core/SwapProvider.js +177 -0
  131. package/dist/swap/core/SwapProvider.js.map +1 -0
  132. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  133. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  134. package/dist/swap/core/__tests__/SwapProvider.test.js +329 -0
  135. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  136. package/dist/swap/index.d.ts +7 -0
  137. package/dist/swap/index.d.ts.map +1 -0
  138. package/dist/swap/index.js +8 -0
  139. package/dist/swap/index.js.map +1 -0
  140. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  141. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  142. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  143. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  144. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +33 -0
  145. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  146. package/dist/swap/namespaces/BaseSwapNamespace.js +58 -0
  147. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  148. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +22 -0
  149. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  150. package/dist/swap/namespaces/WalletSwapNamespace.js +60 -0
  151. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  152. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  153. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  154. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +106 -0
  155. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  156. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  157. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  158. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +132 -0
  159. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  160. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +68 -0
  161. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  162. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +206 -0
  163. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  164. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  165. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  166. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +257 -0
  167. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  168. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  169. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  170. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  171. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  172. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  173. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  174. package/dist/swap/providers/uniswap/abis.js +138 -0
  175. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  176. package/dist/swap/providers/uniswap/addresses.d.ts +21 -0
  177. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  178. package/dist/swap/providers/uniswap/addresses.js +81 -0
  179. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  180. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  181. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  182. package/dist/swap/providers/uniswap/encoding.js +233 -0
  183. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  184. package/dist/swap/providers/uniswap/types.d.ts +20 -0
  185. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  186. package/dist/swap/providers/uniswap/types.js +2 -0
  187. package/dist/swap/providers/uniswap/types.js.map +1 -0
  188. package/dist/types/actions.d.ts +19 -5
  189. package/dist/types/actions.d.ts.map +1 -1
  190. package/dist/types/asset.d.ts +3 -3
  191. package/dist/types/asset.d.ts.map +1 -1
  192. package/dist/types/index.d.ts +2 -0
  193. package/dist/types/index.d.ts.map +1 -1
  194. package/dist/types/index.js +2 -0
  195. package/dist/types/index.js.map +1 -1
  196. package/dist/types/lend/base.d.ts +7 -22
  197. package/dist/types/lend/base.d.ts.map +1 -1
  198. package/dist/types/lend/base.js.map +1 -1
  199. package/dist/types/lend/contracts.d.ts +17 -0
  200. package/dist/types/lend/contracts.d.ts.map +1 -0
  201. package/dist/types/lend/contracts.js +2 -0
  202. package/dist/types/lend/contracts.js.map +1 -0
  203. package/dist/types/lend/index.d.ts +1 -0
  204. package/dist/types/lend/index.d.ts.map +1 -1
  205. package/dist/types/lend/index.js +1 -0
  206. package/dist/types/lend/index.js.map +1 -1
  207. package/dist/types/swap/base.d.ts +238 -0
  208. package/dist/types/swap/base.d.ts.map +1 -0
  209. package/dist/types/swap/base.js +4 -0
  210. package/dist/types/swap/base.js.map +1 -0
  211. package/dist/types/swap/index.d.ts +2 -0
  212. package/dist/types/swap/index.d.ts.map +1 -0
  213. package/dist/types/swap/index.js +2 -0
  214. package/dist/types/swap/index.js.map +1 -0
  215. package/dist/types/transaction.d.ts +14 -0
  216. package/dist/types/transaction.d.ts.map +1 -0
  217. package/dist/types/transaction.js +2 -0
  218. package/dist/types/transaction.js.map +1 -0
  219. package/dist/utils/assets.d.ts +11 -6
  220. package/dist/utils/assets.d.ts.map +1 -1
  221. package/dist/utils/assets.js +16 -12
  222. package/dist/utils/assets.js.map +1 -1
  223. package/dist/utils/assets.test.js +14 -2
  224. package/dist/utils/assets.test.js.map +1 -1
  225. package/dist/utils/constants.d.ts +5 -0
  226. package/dist/utils/constants.d.ts.map +1 -0
  227. package/dist/utils/constants.js +5 -0
  228. package/dist/utils/constants.js.map +1 -0
  229. package/dist/utils/permit2.d.ts +46 -0
  230. package/dist/utils/permit2.d.ts.map +1 -0
  231. package/dist/utils/permit2.js +100 -0
  232. package/dist/utils/permit2.js.map +1 -0
  233. package/dist/utils/permit2.test.d.ts +2 -0
  234. package/dist/utils/permit2.test.d.ts.map +1 -0
  235. package/dist/utils/permit2.test.js +110 -0
  236. package/dist/utils/permit2.test.js.map +1 -0
  237. package/dist/utils/validation.d.ts +12 -0
  238. package/dist/utils/validation.d.ts.map +1 -0
  239. package/dist/utils/validation.js +44 -0
  240. package/dist/utils/validation.js.map +1 -0
  241. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  242. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  243. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  244. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  245. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +4 -4
  246. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  247. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +7 -1
  248. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  249. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  250. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  251. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
  252. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  253. package/dist/wallet/core/providers/hosted/types/index.d.ts +5 -1
  254. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  255. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +7 -1
  256. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  257. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  258. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  259. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +5 -5
  260. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  261. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +13 -2
  262. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  263. package/dist/wallet/core/wallets/abstract/Wallet.js +7 -1
  264. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  265. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
  266. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  267. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
  268. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  269. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +7 -2
  270. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  271. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  272. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  273. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +3 -3
  274. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  275. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
  276. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
  277. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
  278. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
  279. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -1
  280. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  281. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  282. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  283. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -4
  284. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  285. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  286. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +4 -3
  287. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  288. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
  289. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  290. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -1
  291. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  292. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  293. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  294. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  295. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  296. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +6 -1
  297. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  298. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  299. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  300. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
  301. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  302. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
  303. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  304. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -1
  305. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  306. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  307. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  308. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  309. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  310. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  311. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  312. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +7 -1
  313. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  314. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +6 -2
  315. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  316. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
  317. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
  318. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
  319. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +6 -2
  320. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  321. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -1
  322. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  323. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -2
  324. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  325. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
  326. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
  327. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
  328. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +3 -2
  329. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  330. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -3
  331. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  332. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +5 -4
  333. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  334. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  335. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  336. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  337. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  338. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  339. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  340. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  341. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -1
  342. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  343. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  344. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  345. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
  346. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  347. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
  348. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
  349. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -1
  350. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  351. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  352. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  353. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
  354. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  355. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
  356. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  357. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -1
  358. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  359. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  360. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  361. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  362. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  363. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  364. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  365. package/package.json +2 -2
  366. package/src/{test → __mocks__}/MockAssets.ts +2 -0
  367. package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
  368. package/src/{actions.test.ts → __tests__/actions.test.ts} +2 -6
  369. package/src/actions.ts +57 -19
  370. package/src/constants/assets.ts +108 -8
  371. package/src/constants/contracts.ts +5 -0
  372. package/src/constants/supportedChains.ts +10 -2
  373. package/src/core/asset/__mocks__/mockAsset.ts +1 -1
  374. package/src/index.ts +30 -2
  375. package/src/{test → lend/__mocks__}/MockLendProvider.ts +20 -23
  376. package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
  377. package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
  378. package/src/lend/core/LendProvider.ts +40 -20
  379. package/src/lend/core/__tests__/LendProvider.test.ts +4 -7
  380. package/src/lend/namespaces/ActionsLendNamespace.ts +2 -85
  381. package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
  382. package/src/lend/namespaces/WalletLendNamespace.ts +25 -121
  383. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +10 -9
  384. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
  385. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +19 -22
  386. package/src/lend/providers/aave/AaveLendProvider.ts +163 -231
  387. package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
  388. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
  389. package/src/lend/providers/aave/abis/pool.ts +81 -0
  390. package/src/lend/providers/aave/sdk.ts +7 -69
  391. package/src/lend/providers/morpho/MorphoLendProvider.ts +20 -41
  392. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +8 -32
  393. package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
  394. package/src/lend/providers/morpho/__tests__/sdk.test.ts +3 -2
  395. package/src/lend/providers/morpho/api.ts +4 -0
  396. package/src/lend/providers/morpho/contracts.ts +37 -0
  397. package/src/lend/providers/morpho/sdk.ts +241 -84
  398. package/src/services/tokenBalance.spec.ts +2 -2
  399. package/src/services/tokenBalance.ts +6 -7
  400. package/src/supported/tokens.ts +18 -77
  401. package/src/swap/__mocks__/MockSwapProvider.ts +216 -0
  402. package/src/swap/core/SwapProvider.ts +319 -0
  403. package/src/swap/core/__tests__/SwapProvider.test.ts +478 -0
  404. package/src/swap/index.ts +14 -0
  405. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  406. package/src/swap/namespaces/BaseSwapNamespace.ts +77 -0
  407. package/src/swap/namespaces/WalletSwapNamespace.ts +82 -0
  408. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +138 -0
  409. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +162 -0
  410. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +304 -0
  411. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  412. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +370 -0
  413. package/src/swap/providers/uniswap/abis.ts +144 -0
  414. package/src/swap/providers/uniswap/addresses.ts +108 -0
  415. package/src/swap/providers/uniswap/encoding.ts +406 -0
  416. package/src/swap/providers/uniswap/types.ts +24 -0
  417. package/src/types/actions.ts +22 -6
  418. package/src/types/asset.ts +3 -3
  419. package/src/types/index.ts +2 -0
  420. package/src/types/lend/base.ts +12 -25
  421. package/src/types/lend/contracts.ts +18 -0
  422. package/src/types/lend/index.ts +1 -0
  423. package/src/types/swap/base.ts +259 -0
  424. package/src/types/swap/index.ts +1 -0
  425. package/src/types/transaction.ts +14 -0
  426. package/src/utils/assets.test.ts +17 -2
  427. package/src/utils/assets.ts +28 -11
  428. package/src/utils/constants.ts +4 -0
  429. package/src/utils/permit2.test.ts +142 -0
  430. package/src/utils/permit2.ts +144 -0
  431. package/src/utils/validation.ts +76 -0
  432. package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
  433. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +6 -6
  434. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +6 -6
  435. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +9 -1
  436. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
  437. package/src/wallet/core/providers/hosted/types/index.ts +5 -1
  438. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +13 -1
  439. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +9 -9
  440. package/src/wallet/core/wallets/abstract/Wallet.ts +18 -2
  441. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
  442. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
  443. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +14 -5
  444. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +3 -3
  445. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
  446. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
  447. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -2
  448. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +5 -5
  449. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +10 -2
  450. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
  451. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -2
  452. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  453. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +11 -2
  454. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
  455. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
  456. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -2
  457. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  458. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  459. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +10 -2
  460. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
  461. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +9 -5
  462. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +9 -2
  463. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
  464. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +5 -5
  465. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +9 -4
  466. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  467. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +18 -6
  468. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
  469. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -2
  470. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
  471. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
  472. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -2
  473. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
  474. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
  475. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -2
  476. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  477. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  478. package/dist/actions.test.d.ts.map +0 -1
  479. package/dist/actions.test.js.map +0 -1
  480. package/dist/test/MockAssets.d.ts.map +0 -1
  481. package/dist/test/MockAssets.js.map +0 -1
  482. package/dist/test/MockChainManager.d.ts.map +0 -1
  483. package/dist/test/MockChainManager.js.map +0 -1
  484. package/dist/test/MockLendProvider.d.ts.map +0 -1
  485. package/dist/test/MockLendProvider.js.map +0 -1
  486. package/dist/test/MockMarkets.d.ts.map +0 -1
  487. package/dist/test/MockMarkets.js.map +0 -1
  488. package/dist/test/MockPrivyClient.d.ts.map +0 -1
  489. package/dist/test/MockPrivyClient.js.map +0 -1
  490. package/dist/test/utils.d.ts.map +0 -1
  491. package/dist/test/utils.js.map +0 -1
  492. /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
  493. /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
  494. /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
  495. /package/dist/{test → __mocks__}/utils.d.ts +0 -0
  496. /package/dist/{test → __mocks__}/utils.js +0 -0
  497. /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
  498. /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
  499. /package/src/{test → __mocks__}/utils.ts +0 -0
  500. /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
@@ -1,101 +1,26 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
- import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
3
- import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
4
- import type { LendProviderConfig } from '@/types/actions.js'
1
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
5
2
  import type {
6
3
  ClosePositionParams,
7
- GetLendMarketParams,
8
- GetLendMarketsParams,
9
4
  GetPositionParams,
10
- LendMarket,
11
- LendMarketId,
12
5
  LendMarketPosition,
13
6
  LendOpenPositionParams,
7
+ LendTransaction,
14
8
  LendTransactionReceipt,
15
9
  } from '@/types/lend/index.js'
16
10
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
17
11
 
12
+ import { BaseLendNamespace, type LendProviders } from './BaseLendNamespace.js'
13
+
18
14
  /**
19
15
  * Wallet Lend Namespace
20
16
  * @description Full lending operations available on wallet.lend
21
17
  */
22
- export class WalletLendNamespace {
18
+ export class WalletLendNamespace extends BaseLendNamespace {
23
19
  constructor(
24
- protected readonly providers: {
25
- morpho?: LendProvider<LendProviderConfig>
26
- aave?: LendProvider<LendProviderConfig>
27
- },
20
+ providers: LendProviders,
28
21
  private readonly wallet: Wallet,
29
- ) {}
30
-
31
- /**
32
- * Route a market to the correct provider
33
- * @param marketId - Market identifier to route
34
- * @returns The provider that handles this market
35
- * @throws Error if no provider is found for the market
36
- */
37
- private getProviderForMarket(
38
- marketId: LendMarketId,
39
- ): MorphoLendProvider | AaveLendProvider {
40
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
41
- Boolean,
42
- ) as Array<MorphoLendProvider | AaveLendProvider>
43
-
44
- for (const provider of allProviders) {
45
- const market = provider.config.marketAllowlist?.find(
46
- (m: LendMarketId) =>
47
- m.address.toLowerCase() === marketId.address.toLowerCase() &&
48
- m.chainId === marketId.chainId,
49
- )
50
-
51
- if (market) {
52
- return provider
53
- }
54
- }
55
-
56
- throw new Error(
57
- `No provider configured for market ${marketId.address} on chain ${marketId.chainId}`,
58
- )
59
- }
60
-
61
- /**
62
- * Get all markets across all configured providers
63
- * @param params - Optional filtering parameters
64
- * @returns Promise resolving to array of markets from all providers
65
- */
66
- async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
67
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
68
- Boolean,
69
- ) as Array<MorphoLendProvider | AaveLendProvider>
70
-
71
- const results = await Promise.all(
72
- allProviders.map((p) => p.getMarkets(params)),
73
- )
74
-
75
- return results.flat()
76
- }
77
-
78
- /**
79
- * Get a specific market by routing to the correct provider
80
- * @param params - Market identifier
81
- * @returns Promise resolving to market information
82
- */
83
- async getMarket(params: GetLendMarketParams): Promise<LendMarket> {
84
- const provider = this.getProviderForMarket(params)
85
- return provider.getMarket(params)
86
- }
87
-
88
- /**
89
- * Get supported chain IDs across all providers
90
- * @returns Array of unique chain IDs supported by any provider
91
- */
92
- supportedChainIds(): number[] {
93
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
94
- Boolean,
95
- ) as Array<MorphoLendProvider | AaveLendProvider>
96
-
97
- const allChains = allProviders.flatMap((p) => p.supportedChainIds())
98
- return [...new Set(allChains)]
22
+ ) {
23
+ super(providers)
99
24
  }
100
25
 
101
26
  /**
@@ -116,25 +41,7 @@ export class WalletLendNamespace {
116
41
  walletAddress: this.wallet.address,
117
42
  })
118
43
 
119
- const { transactionData } = lendTransaction
120
- if (!transactionData) {
121
- throw new Error('No transaction data returned from lend provider')
122
- }
123
-
124
- if (transactionData.approval && transactionData.openPosition) {
125
- return await this.wallet.sendBatch(
126
- [transactionData.approval, transactionData.openPosition],
127
- params.marketId.chainId,
128
- )
129
- }
130
-
131
- if (!transactionData.openPosition) {
132
- throw new Error('No openPosition transaction data returned')
133
- }
134
- return await this.wallet.send(
135
- transactionData.openPosition,
136
- params.marketId.chainId,
137
- )
44
+ return this.executeTransaction(lendTransaction, params.marketId.chainId)
138
45
  }
139
46
 
140
47
  /**
@@ -175,28 +82,25 @@ export class WalletLendNamespace {
175
82
  walletAddress: this.wallet.address,
176
83
  })
177
84
 
178
- const { transactionData } = closeTransaction
179
- if (!transactionData) {
180
- throw new Error(
181
- 'No transaction data returned from close position provider',
182
- )
183
- }
85
+ return this.executeTransaction(closeTransaction, params.marketId.chainId)
86
+ }
184
87
 
185
- // If both approval and closePosition are present, batch them
186
- if (transactionData.approval && transactionData.closePosition) {
187
- return await this.wallet.sendBatch(
188
- [transactionData.approval, transactionData.closePosition],
189
- params.marketId.chainId,
190
- )
191
- }
88
+ /**
89
+ * Execute a lend transaction with optional approval batching
90
+ */
91
+ private async executeTransaction(
92
+ transaction: LendTransaction,
93
+ chainId: SupportedChainId,
94
+ ): Promise<LendTransactionReceipt> {
95
+ const { transactionData } = transaction
192
96
 
193
- if (!transactionData.closePosition) {
194
- throw new Error('No closePosition transaction data returned')
97
+ if (transactionData.approval) {
98
+ return this.wallet.sendBatch(
99
+ [transactionData.approval, transactionData.position],
100
+ chainId,
101
+ )
195
102
  }
196
103
 
197
- return await this.wallet.send(
198
- transactionData.closePosition,
199
- params.marketId.chainId,
200
- )
104
+ return this.wallet.send(transactionData.position, chainId)
201
105
  }
202
106
  }
@@ -1,13 +1,14 @@
1
+ import type { Address } from 'viem'
1
2
  import { beforeEach, describe, expect, it, vi } from 'vitest'
2
3
 
4
+ import { getRandomAddress } from '@/__mocks__/utils.js'
5
+ import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
3
7
  import { ActionsLendNamespace } from '@/lend/namespaces/ActionsLendNamespace.js'
4
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
5
- import { getRandomAddress } from '@/test/utils.js'
6
- import type { LendProvider } from '@/types/lend/index.js'
7
8
 
8
9
  describe('ActionsLendNamespace', () => {
9
- let mockProvider: LendProvider
10
- let mockMarketId: { address: any; chainId: 130 }
10
+ let mockProvider: MockLendProvider
11
+ let mockMarketId: { address: Address; chainId: 130 }
11
12
 
12
13
  beforeEach(() => {
13
14
  mockMarketId = { address: getRandomAddress(), chainId: 130 as const }
@@ -30,13 +31,13 @@ describe('ActionsLendNamespace', () => {
30
31
  })
31
32
 
32
33
  it('should create an instance with a lend provider', () => {
33
- const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
34
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider })
34
35
 
35
36
  expect(namespace).toBeInstanceOf(ActionsLendNamespace)
36
37
  })
37
38
 
38
39
  it('should delegate getMarkets to provider', async () => {
39
- const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
40
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider })
40
41
  const spy = vi.spyOn(mockProvider, 'getMarkets')
41
42
 
42
43
  await namespace.getMarkets()
@@ -45,7 +46,7 @@ describe('ActionsLendNamespace', () => {
45
46
  })
46
47
 
47
48
  it('should delegate getMarket to provider with correct parameters', async () => {
48
- const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
49
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider })
49
50
  const spy = vi.spyOn(mockProvider, 'getMarket')
50
51
 
51
52
  await namespace.getMarket(mockMarketId)
@@ -54,7 +55,7 @@ describe('ActionsLendNamespace', () => {
54
55
  })
55
56
 
56
57
  it('should delegate supportedChainIds to provider', () => {
57
- const namespace = new ActionsLendNamespace({ morpho: mockProvider as any })
58
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider })
58
59
  const spy = vi.spyOn(mockProvider, 'supportedChainIds')
59
60
 
60
61
  namespace.supportedChainIds()
@@ -0,0 +1,137 @@
1
+ import type { Address } from 'viem'
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest'
3
+
4
+ import { getRandomAddress } from '@/__mocks__/utils.js'
5
+ import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
7
+ import { BaseLendNamespace } from '@/lend/namespaces/BaseLendNamespace.js'
8
+
9
+ // Concrete implementation for testing
10
+ class TestLendNamespace extends BaseLendNamespace {}
11
+
12
+ describe('BaseLendNamespace', () => {
13
+ let mockMorphoProvider: MockLendProvider
14
+ let mockAaveProvider: MockLendProvider
15
+ let mockMarketId: { address: Address; chainId: 130 }
16
+ let aaveMarketId: { address: Address; chainId: 130 }
17
+
18
+ beforeEach(() => {
19
+ mockMarketId = { address: getRandomAddress(), chainId: 130 as const }
20
+ aaveMarketId = { address: getRandomAddress(), chainId: 130 as const }
21
+
22
+ mockMorphoProvider = createMockLendProvider({
23
+ marketAllowlist: [
24
+ {
25
+ address: mockMarketId.address,
26
+ chainId: mockMarketId.chainId,
27
+ name: 'Morpho Market',
28
+ asset: {
29
+ address: { 130: getRandomAddress() },
30
+ metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
31
+ type: 'erc20' as const,
32
+ },
33
+ lendProvider: 'morpho',
34
+ },
35
+ ],
36
+ })
37
+
38
+ mockAaveProvider = createMockLendProvider({
39
+ marketAllowlist: [
40
+ {
41
+ address: aaveMarketId.address,
42
+ chainId: aaveMarketId.chainId,
43
+ name: 'Aave Market',
44
+ asset: {
45
+ address: { 130: getRandomAddress() },
46
+ metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
47
+ type: 'erc20' as const,
48
+ },
49
+ lendProvider: 'aave',
50
+ },
51
+ ],
52
+ })
53
+ })
54
+
55
+ describe('getMarkets', () => {
56
+ it('should aggregate markets from all providers', async () => {
57
+ const namespace = new TestLendNamespace({
58
+ morpho: mockMorphoProvider,
59
+ aave: mockAaveProvider,
60
+ })
61
+
62
+ const markets = await namespace.getMarkets()
63
+
64
+ expect(markets).toHaveLength(2)
65
+ })
66
+
67
+ it('should work with single provider', async () => {
68
+ const namespace = new TestLendNamespace({
69
+ morpho: mockMorphoProvider,
70
+ })
71
+
72
+ const markets = await namespace.getMarkets()
73
+
74
+ expect(markets).toHaveLength(1)
75
+ })
76
+ })
77
+
78
+ describe('getMarket', () => {
79
+ it('should route to correct provider based on market', async () => {
80
+ const namespace = new TestLendNamespace({
81
+ morpho: mockMorphoProvider,
82
+ aave: mockAaveProvider,
83
+ })
84
+
85
+ const morphoSpy = vi.spyOn(mockMorphoProvider, 'getMarket')
86
+ const aaveSpy = vi.spyOn(mockAaveProvider, 'getMarket')
87
+
88
+ await namespace.getMarket(mockMarketId)
89
+
90
+ expect(morphoSpy).toHaveBeenCalledWith(mockMarketId)
91
+ expect(aaveSpy).not.toHaveBeenCalled()
92
+ })
93
+
94
+ it('should throw if no provider found for market', async () => {
95
+ const namespace = new TestLendNamespace({
96
+ morpho: mockMorphoProvider,
97
+ })
98
+
99
+ const unknownMarket = {
100
+ address: getRandomAddress(),
101
+ chainId: 130 as const,
102
+ }
103
+
104
+ await expect(namespace.getMarket(unknownMarket)).rejects.toThrow(
105
+ 'No provider configured for market',
106
+ )
107
+ })
108
+ })
109
+
110
+ describe('supportedChainIds', () => {
111
+ it('should return unique chain IDs from all providers', () => {
112
+ const namespace = new TestLendNamespace({
113
+ morpho: mockMorphoProvider,
114
+ aave: mockAaveProvider,
115
+ })
116
+
117
+ const chainIds = namespace.supportedChainIds()
118
+
119
+ expect(chainIds).toContain(1)
120
+ expect(chainIds).toContain(130)
121
+ expect(chainIds).toContain(8453)
122
+ expect(chainIds).toContain(84532)
123
+ })
124
+
125
+ it('should deduplicate chain IDs', () => {
126
+ const namespace = new TestLendNamespace({
127
+ morpho: mockMorphoProvider,
128
+ aave: mockAaveProvider,
129
+ })
130
+
131
+ const chainIds = namespace.supportedChainIds()
132
+ const uniqueChainIds = [...new Set(chainIds)]
133
+
134
+ expect(chainIds).toEqual(uniqueChainIds)
135
+ })
136
+ })
137
+ })
@@ -1,18 +1,20 @@
1
+ import type { Address } from 'viem'
1
2
  import type { WaitForUserOperationReceiptReturnType } from 'viem/account-abstraction'
2
3
  import { beforeEach, describe, expect, it, vi } from 'vitest'
3
4
 
5
+ import { getRandomAddress } from '@/__mocks__/utils.js'
6
+ import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
7
+ import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
4
8
  import { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
5
- import { createMockLendProvider } from '@/test/MockLendProvider.js'
6
- import { getRandomAddress } from '@/test/utils.js'
7
- import type { LendProvider, TransactionData } from '@/types/lend/index.js'
9
+ import type { TransactionData } from '@/types/lend/index.js'
8
10
  import { createMock as createSmartWalletMock } from '@/wallet/core/wallets/smart/abstract/__mocks__/SmartWallet.js'
9
11
  import type { SmartWallet } from '@/wallet/core/wallets/smart/abstract/SmartWallet.js'
10
12
 
11
13
  describe('WalletLendNamespace', () => {
12
14
  const mockWalletAddress = getRandomAddress()
13
- let mockProvider: LendProvider
15
+ let mockProvider: MockLendProvider
14
16
  let mockWallet: SmartWallet
15
- let mockMarketId: { address: any; chainId: 130 }
17
+ let mockMarketId: { address: Address; chainId: 130 }
16
18
 
17
19
  beforeEach(() => {
18
20
  // Create a consistent market ID for all tests
@@ -53,7 +55,7 @@ describe('WalletLendNamespace', () => {
53
55
 
54
56
  it('should create an instance with a lend provider and wallet', () => {
55
57
  const namespace = new WalletLendNamespace(
56
- { morpho: mockProvider as any },
58
+ { morpho: mockProvider },
57
59
  mockWallet,
58
60
  )
59
61
 
@@ -62,7 +64,7 @@ describe('WalletLendNamespace', () => {
62
64
 
63
65
  it('should inherit read operations from ActionsLendNamespace', async () => {
64
66
  const namespace = new WalletLendNamespace(
65
- { morpho: mockProvider as any },
67
+ { morpho: mockProvider },
66
68
  mockWallet,
67
69
  )
68
70
  const mockMarkets = [
@@ -107,7 +109,7 @@ describe('WalletLendNamespace', () => {
107
109
  describe('openPosition', () => {
108
110
  it('should call provider openPosition with wallet address as receiver', async () => {
109
111
  const namespace = new WalletLendNamespace(
110
- { morpho: mockProvider as any },
112
+ { morpho: mockProvider },
111
113
  mockWallet,
112
114
  )
113
115
  const mockAsset = {
@@ -123,13 +125,12 @@ describe('WalletLendNamespace', () => {
123
125
  marketId: marketId.address,
124
126
  apy: 0.05,
125
127
  transactionData: {
126
- openPosition: {
128
+ position: {
127
129
  to: marketId.address,
128
130
  value: 0n,
129
131
  data: '0x' as const,
130
132
  },
131
133
  },
132
- slippage: 50,
133
134
  }
134
135
 
135
136
  vi.mocked(mockProvider.openPosition).mockResolvedValue(mockTransaction)
@@ -158,7 +159,7 @@ describe('WalletLendNamespace', () => {
158
159
  describe('closePosition', () => {
159
160
  it('should call provider closePosition and execute transaction for SmartWallet', async () => {
160
161
  const namespace = new WalletLendNamespace(
161
- { morpho: mockProvider as any },
162
+ { morpho: mockProvider },
162
163
  mockWallet,
163
164
  )
164
165
  const closeParams = {
@@ -172,7 +173,7 @@ describe('WalletLendNamespace', () => {
172
173
  marketId: closeParams.marketId.address,
173
174
  apy: 0.05,
174
175
  transactionData: {
175
- closePosition: {
176
+ position: {
176
177
  to: closeParams.marketId.address,
177
178
  value: 0n,
178
179
  data: '0x' as const,
@@ -190,7 +191,7 @@ describe('WalletLendNamespace', () => {
190
191
  options: undefined,
191
192
  })
192
193
  expect(mockWallet.send).toHaveBeenCalledWith(
193
- mockTransaction.transactionData.closePosition,
194
+ mockTransaction.transactionData.position,
194
195
  130,
195
196
  )
196
197
  expect(result).toEqual({
@@ -202,7 +203,7 @@ describe('WalletLendNamespace', () => {
202
203
 
203
204
  it('should store the wallet reference', () => {
204
205
  const namespace = new WalletLendNamespace(
205
- { morpho: mockProvider as any },
206
+ { morpho: mockProvider },
206
207
  mockWallet,
207
208
  )
208
209
 
@@ -212,7 +213,7 @@ describe('WalletLendNamespace', () => {
212
213
 
213
214
  it('should execute transaction with approval when present', async () => {
214
215
  const namespace = new WalletLendNamespace(
215
- { morpho: mockProvider as any },
216
+ { morpho: mockProvider },
216
217
  mockWallet,
217
218
  )
218
219
  const mockAsset = {
@@ -226,7 +227,7 @@ describe('WalletLendNamespace', () => {
226
227
  value: 0n,
227
228
  data: '0xapproval' as const,
228
229
  }
229
- const openPosition: TransactionData = {
230
+ const position: TransactionData = {
230
231
  to: marketId.address,
231
232
  value: 0n,
232
233
  data: '0xdeposit' as const,
@@ -237,8 +238,7 @@ describe('WalletLendNamespace', () => {
237
238
  marketId: marketId.address,
238
239
  apy: 0.05,
239
240
  timestamp: Date.now(),
240
- transactionData: { approval, openPosition },
241
- slippage: 50,
241
+ transactionData: { approval, position },
242
242
  }
243
243
 
244
244
  vi.mocked(mockProvider.openPosition).mockResolvedValue(mockTransaction)
@@ -249,10 +249,7 @@ describe('WalletLendNamespace', () => {
249
249
  marketId,
250
250
  })
251
251
 
252
- expect(mockWallet.sendBatch).toHaveBeenCalledWith(
253
- [approval, openPosition],
254
- 130,
255
- )
252
+ expect(mockWallet.sendBatch).toHaveBeenCalledWith([approval, position], 130)
256
253
  expect(result).toEqual({
257
254
  receipt: { success: true },
258
255
  userOpHash: '0xmockbatchhash',