@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
@@ -2,6 +2,8 @@ import type { Address } from 'viem'
2
2
  import { type MockedFunction, vi } from 'vitest'
3
3
 
4
4
  import { LendProvider } from '@/lend/core/LendProvider.js'
5
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
6
+ import type { ChainManager } from '@/services/ChainManager.js'
5
7
  import type { LendProviderConfig } from '@/types/actions.js'
6
8
  import type { Asset } from '@/types/asset.js'
7
9
  import type {
@@ -15,7 +17,6 @@ import type {
15
17
  LendMarketPosition,
16
18
  LendOpenPositionInternalParams,
17
19
  LendOpenPositionParams,
18
- LendOptions,
19
20
  LendTransaction,
20
21
  } from '@/types/lend/index.js'
21
22
 
@@ -55,7 +56,6 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
55
56
  amount: bigint,
56
57
  chainId: number,
57
58
  marketId?: string,
58
- options?: LendOptions,
59
59
  ) => Promise<LendTransaction>
60
60
  >
61
61
 
@@ -73,8 +73,12 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
73
73
  constructor(
74
74
  config?: LendProviderConfig,
75
75
  mockConfig?: Partial<MockLendProviderConfig>,
76
+ chainManager?: ChainManager,
76
77
  ) {
77
- super(config || {})
78
+ super(
79
+ config || {},
80
+ chainManager || (new MockChainManager() as unknown as ChainManager),
81
+ )
78
82
 
79
83
  this.mockConfig = {
80
84
  supportedChains: mockConfig?.supportedChains ?? [84532],
@@ -187,7 +191,7 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
187
191
  params: LendClosePositionParams,
188
192
  ): Promise<LendTransaction> {
189
193
  const assetAddress = params.asset?.address[params.marketId.chainId]
190
- if (!assetAddress) {
194
+ if (!assetAddress || assetAddress === 'native') {
191
195
  throw new Error(`Asset not supported on chain ${params.marketId.chainId}`)
192
196
  }
193
197
 
@@ -196,7 +200,6 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
196
200
  params.amount,
197
201
  params.marketId.chainId,
198
202
  params.marketId.address,
199
- params.options,
200
203
  )
201
204
  }
202
205
 
@@ -204,11 +207,10 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
204
207
  amount,
205
208
  asset,
206
209
  marketId,
207
- options,
208
210
  }: LendOpenPositionParams): Promise<LendTransaction> {
209
211
  // Get asset address for the chain
210
212
  const assetAddress = asset.address[marketId.chainId]
211
- if (!assetAddress) {
213
+ if (!assetAddress || assetAddress === 'native') {
212
214
  throw new Error(`Asset not supported on chain ${marketId.chainId}`)
213
215
  }
214
216
 
@@ -220,14 +222,13 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
220
222
  asset: assetAddress,
221
223
  marketId: marketId.address,
222
224
  apy: this.mockConfig.defaultApy,
223
- slippage: options?.slippage ?? 50,
224
225
  transactionData: {
225
226
  approval: {
226
227
  to: assetAddress,
227
228
  data: '0x095ea7b3' as Address,
228
229
  value: 0n,
229
230
  },
230
- openPosition: {
231
+ position: {
231
232
  to: marketId.address,
232
233
  data: '0x6e553f65' as Address,
233
234
  value: 0n,
@@ -240,11 +241,10 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
240
241
  amountWei,
241
242
  asset,
242
243
  marketId,
243
- options,
244
244
  }: LendOpenPositionInternalParams): Promise<LendTransaction> {
245
245
  // Get asset address for the chain
246
246
  const assetAddress = asset.address[marketId.chainId]
247
- if (!assetAddress) {
247
+ if (!assetAddress || assetAddress === 'native') {
248
248
  throw new Error(`Asset not supported on chain ${marketId.chainId}`)
249
249
  }
250
250
 
@@ -253,14 +253,13 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
253
253
  asset: assetAddress,
254
254
  marketId: marketId.address,
255
255
  apy: this.mockConfig.defaultApy,
256
- slippage: options?.slippage ?? 50,
257
256
  transactionData: {
258
257
  approval: {
259
258
  to: assetAddress,
260
259
  data: '0x095ea7b3' as Address,
261
260
  value: 0n,
262
261
  },
263
- openPosition: {
262
+ position: {
264
263
  to: marketId.address,
265
264
  data: '0x6e553f65' as Address,
266
265
  value: 0n,
@@ -335,21 +334,21 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
335
334
  amount,
336
335
  asset,
337
336
  marketId,
338
- options,
339
337
  }: ClosePositionParams): Promise<LendTransaction> {
340
338
  // If asset provided, use its address for the chain; otherwise use a mock asset
341
- const assetAddress =
342
- asset?.address[marketId.chainId] ||
343
- ('0x1234567890123456789012345678901234567890' as Address)
339
+ const rawAddress = asset?.address[marketId.chainId]
340
+ const assetAddress: Address =
341
+ rawAddress && rawAddress !== 'native'
342
+ ? rawAddress
343
+ : ('0x1234567890123456789012345678901234567890' as Address)
344
344
 
345
345
  return {
346
346
  amount: BigInt(amount),
347
347
  asset: assetAddress,
348
348
  marketId: marketId.address,
349
349
  apy: 0,
350
- slippage: options?.slippage ?? 50,
351
350
  transactionData: {
352
- closePosition: {
351
+ position: {
353
352
  to: marketId.address,
354
353
  data: '0xb460af94' as Address,
355
354
  value: 0n,
@@ -361,18 +360,16 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
361
360
  private async createMockWithdraw(
362
361
  asset: Address,
363
362
  amount: bigint,
364
- chainId: number,
363
+ _chainId: number,
365
364
  marketId?: string,
366
- options?: LendOptions,
367
365
  ): Promise<LendTransaction> {
368
366
  return {
369
367
  amount,
370
368
  asset,
371
369
  marketId: marketId || 'mock-market',
372
370
  apy: 0,
373
- slippage: options?.slippage ?? 50,
374
371
  transactionData: {
375
- closePosition: {
372
+ position: {
376
373
  to:
377
374
  (marketId as Address) ||
378
375
  ('0x1234567890123456789012345678901234567890' as Address),
@@ -1,6 +1,6 @@
1
1
  import type { Address } from 'viem'
2
2
 
3
- import { MockUSDCAsset, MockWETHAsset } from '@/test/MockAssets.js'
3
+ import { MockUSDCAsset, MockWETHAsset } from '@/__mocks__/MockAssets.js'
4
4
  import type { LendMarketConfig } from '@/types/lend/index.js'
5
5
 
6
6
  /**
@@ -3,14 +3,14 @@ import type { Address } from 'viem'
3
3
  import type { LendTransaction, TransactionData } from '@/types/lend/index.js'
4
4
 
5
5
  /**
6
- * Creates a mock lend transaction for testing openPosition
6
+ * Creates a mock lend transaction for testing
7
7
  */
8
- export function createMockOpenTransaction(params: {
8
+ export function createMockLendTransaction(params: {
9
9
  amount: bigint
10
10
  asset: Address
11
11
  marketId: Address
12
12
  approval?: TransactionData
13
- openPosition?: TransactionData
13
+ position: TransactionData
14
14
  }): LendTransaction {
15
15
  return {
16
16
  amount: params.amount,
@@ -19,29 +19,7 @@ export function createMockOpenTransaction(params: {
19
19
  apy: 0.05,
20
20
  transactionData: {
21
21
  approval: params.approval,
22
- openPosition: params.openPosition,
22
+ position: params.position,
23
23
  },
24
- slippage: 50,
25
- }
26
- }
27
-
28
- /**
29
- * Creates a mock lend transaction for testing closePosition
30
- */
31
- export function createMockCloseTransaction(params: {
32
- amount: bigint
33
- asset: Address
34
- marketId: Address
35
- closePosition: TransactionData
36
- }): LendTransaction {
37
- return {
38
- amount: params.amount,
39
- asset: params.asset,
40
- marketId: params.marketId,
41
- apy: 0.05,
42
- transactionData: {
43
- closePosition: params.closePosition,
44
- },
45
- slippage: 50,
46
24
  }
47
25
  }
@@ -1,7 +1,8 @@
1
1
  import type { Address } from 'viem'
2
- import { parseUnits } from 'viem'
2
+ import { encodeFunctionData, erc20Abi, parseUnits } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import type { ChainManager } from '@/services/ChainManager.js'
5
6
  import type { LendProviderConfig } from '@/types/actions.js'
6
7
  import type { Asset } from '@/types/asset.js'
7
8
  import type {
@@ -17,8 +18,10 @@ import type {
17
18
  LendOpenPositionInternalParams,
18
19
  LendOpenPositionParams,
19
20
  LendTransaction,
21
+ TransactionData,
20
22
  } from '@/types/lend/index.js'
21
23
  import { validateMarketAsset } from '@/utils/markets.js'
24
+ import { validateChainSupported } from '@/utils/validation.js'
22
25
 
23
26
  /**
24
27
  * Lending provider abstract class
@@ -30,6 +33,9 @@ export abstract class LendProvider<
30
33
  /** Lending provider configuration */
31
34
  protected readonly _config: TConfig
32
35
 
36
+ /** Chain manager for blockchain interactions */
37
+ protected readonly chainManager: ChainManager
38
+
33
39
  /**
34
40
  * Supported chain IDs
35
41
  * @description Array of chain IDs that this provider supports
@@ -39,9 +45,11 @@ export abstract class LendProvider<
39
45
  /**
40
46
  * Create a new lending provider
41
47
  * @param config - Provider-specific lending configuration
48
+ * @param chainManager - Chain manager for blockchain interactions
42
49
  */
43
- protected constructor(config: TConfig) {
50
+ protected constructor(config: TConfig, chainManager: ChainManager) {
44
51
  this._config = config
52
+ this.chainManager = chainManager
45
53
  }
46
54
 
47
55
  public get config(): TConfig {
@@ -70,7 +78,7 @@ export abstract class LendProvider<
70
78
  throw new Error('walletAddress is required')
71
79
  }
72
80
 
73
- this.validateProviderSupported(params.marketId.chainId)
81
+ validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
74
82
  this.validateConfigSupported(params.marketId)
75
83
 
76
84
  // Convert human-readable amount to wei using the asset's decimals
@@ -98,7 +106,7 @@ export abstract class LendProvider<
98
106
  chainId: params.chainId,
99
107
  }
100
108
 
101
- this.validateProviderSupported(params.chainId)
109
+ validateChainSupported(params.chainId, this.SUPPORTED_CHAIN_IDS)
102
110
  this.validateConfigSupported(marketId)
103
111
  return this._getMarket(marketId)
104
112
  }
@@ -110,7 +118,7 @@ export abstract class LendProvider<
110
118
  */
111
119
  async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
112
120
  if (params.chainId !== undefined)
113
- this.validateProviderSupported(params.chainId)
121
+ validateChainSupported(params.chainId, this.SUPPORTED_CHAIN_IDS)
114
122
 
115
123
  const filteredMarkets = this.filterMarketConfigs(
116
124
  params.chainId,
@@ -149,7 +157,7 @@ export abstract class LendProvider<
149
157
  )
150
158
  }
151
159
 
152
- this.validateProviderSupported(marketId.chainId)
160
+ validateChainSupported(marketId.chainId, this.SUPPORTED_CHAIN_IDS)
153
161
  this.validateConfigSupported(marketId)
154
162
 
155
163
  return this._getPosition({ marketId, walletAddress })
@@ -169,7 +177,7 @@ export abstract class LendProvider<
169
177
  throw new Error('walletAddress is required')
170
178
  }
171
179
 
172
- this.validateProviderSupported(params.marketId.chainId)
180
+ validateChainSupported(params.marketId.chainId, this.SUPPORTED_CHAIN_IDS)
173
181
  this.validateConfigSupported(params.marketId)
174
182
 
175
183
  const market = await this.getMarket({
@@ -210,19 +218,6 @@ export abstract class LendProvider<
210
218
  return this.SUPPORTED_CHAIN_IDS.includes(chainId)
211
219
  }
212
220
 
213
- /**
214
- * Validate that a chainId is supported for lending operations
215
- * @param chainId - Chain ID to validate
216
- * @throws Error if chain is not supported
217
- */
218
- protected validateProviderSupported(chainId: number): void {
219
- if (!this.isChainSupported(chainId)) {
220
- throw new Error(
221
- `Chain ${chainId} is not supported. Supported chains: ${this.SUPPORTED_CHAIN_IDS.join(', ')}`,
222
- )
223
- }
224
- }
225
-
226
221
  /**
227
222
  * Validate that a market is in the config's market allowlist
228
223
  * @param marketId - Market identifier containing address and chainId
@@ -268,6 +263,31 @@ export abstract class LendProvider<
268
263
  return configs
269
264
  }
270
265
 
266
+ /**
267
+ * Build an ERC20 approval transaction
268
+ * @param tokenAddress - Address of the token to approve
269
+ * @param spender - Address to approve spending for
270
+ * @param amount - Amount to approve
271
+ * @returns Transaction data for the approval
272
+ */
273
+ protected buildApprovalTx(
274
+ tokenAddress: Address,
275
+ spender: Address,
276
+ amount: bigint,
277
+ ): TransactionData {
278
+ const approvalCallData = encodeFunctionData({
279
+ abi: erc20Abi,
280
+ functionName: 'approve',
281
+ args: [spender, amount],
282
+ })
283
+
284
+ return {
285
+ to: tokenAddress,
286
+ data: approvalCallData,
287
+ value: 0n,
288
+ }
289
+ }
290
+
271
291
  /**
272
292
  * Abstract methods that must be implemented by providers
273
293
  */
@@ -1,16 +1,13 @@
1
1
  import type { Address } from 'viem'
2
2
  import { describe, expect, it } from 'vitest'
3
3
 
4
- import { MockUSDCAsset } from '@/test/MockAssets.js'
5
- import { MockLendProvider } from '@/test/MockLendProvider.js'
4
+ import { MockUSDCAsset } from '@/__mocks__/MockAssets.js'
5
+ import { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
6
  import type { LendMarketConfig, LendMarketId } from '@/types/lend/index.js'
7
+ import { validateChainSupported } from '@/utils/validation.js'
7
8
 
8
9
  // Test helper class that exposes protected validation methods as public
9
10
  class TestLendProvider extends MockLendProvider {
10
- public validateProviderSupported(chainId: number): void {
11
- return super.validateProviderSupported(chainId)
12
- }
13
-
14
11
  public validateConfigSupported(marketId: LendMarketId): void {
15
12
  return super.validateConfigSupported(marketId)
16
13
  }
@@ -186,7 +183,7 @@ describe('LendProvider', () => {
186
183
  const provider = new TestLendProvider()
187
184
 
188
185
  expect(() => {
189
- provider.validateProviderSupported(999)
186
+ validateChainSupported(999, provider.supportedChainIds())
190
187
  }).toThrow('Chain 999 is not supported')
191
188
  })
192
189
 
@@ -1,90 +1,7 @@
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'
5
- import type {
6
- GetLendMarketParams,
7
- GetLendMarketsParams,
8
- LendMarket,
9
- LendMarketId,
10
- } from '@/types/lend/index.js'
1
+ import { BaseLendNamespace } from './BaseLendNamespace.js'
11
2
 
12
3
  /**
13
4
  * Actions Lend Namespace
14
5
  * @description Read-only lending operations available on actions.lend
15
6
  */
16
- export class ActionsLendNamespace {
17
- constructor(
18
- protected readonly providers: {
19
- morpho?: LendProvider<LendProviderConfig>
20
- aave?: LendProvider<LendProviderConfig>
21
- },
22
- ) {}
23
-
24
- /**
25
- * Route a market to the correct provider
26
- * @param marketId - Market identifier to route
27
- * @returns The provider that handles this market
28
- * @throws Error if no provider is found for the market
29
- */
30
- private getProviderForMarket(
31
- marketId: LendMarketId,
32
- ): MorphoLendProvider | AaveLendProvider {
33
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
34
- Boolean,
35
- ) as Array<MorphoLendProvider | AaveLendProvider>
36
-
37
- for (const provider of allProviders) {
38
- const market = provider.config.marketAllowlist?.find(
39
- (m: LendMarketId) =>
40
- m.address.toLowerCase() === marketId.address.toLowerCase() &&
41
- m.chainId === marketId.chainId,
42
- )
43
- if (market) return provider
44
- }
45
-
46
- throw new Error(
47
- `No provider configured for market ${marketId.address} on chain ${marketId.chainId}`,
48
- )
49
- }
50
-
51
- /**
52
- * Get all markets across all configured providers
53
- * @param params - Optional filtering parameters
54
- * @returns Promise resolving to array of markets from all providers
55
- */
56
- async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
57
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
58
- Boolean,
59
- ) as Array<MorphoLendProvider | AaveLendProvider>
60
-
61
- const results = await Promise.all(
62
- allProviders.map((p) => p.getMarkets(params)),
63
- )
64
-
65
- return results.flat()
66
- }
67
-
68
- /**
69
- * Get a specific market by routing to the correct provider
70
- * @param params - Market identifier
71
- * @returns Promise resolving to market information
72
- */
73
- async getMarket(params: GetLendMarketParams): Promise<LendMarket> {
74
- const provider = this.getProviderForMarket(params)
75
- return provider.getMarket(params)
76
- }
77
-
78
- /**
79
- * Get supported chain IDs across all providers
80
- * @returns Array of unique chain IDs supported by any provider
81
- */
82
- supportedChainIds(): number[] {
83
- const allProviders = [this.providers.morpho, this.providers.aave].filter(
84
- Boolean,
85
- ) as Array<MorphoLendProvider | AaveLendProvider>
86
-
87
- const allChains = allProviders.flatMap((p) => p.supportedChainIds())
88
- return [...new Set(allChains)]
89
- }
90
- }
7
+ export class ActionsLendNamespace extends BaseLendNamespace {}
@@ -0,0 +1,89 @@
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'
5
+ import type {
6
+ GetLendMarketParams,
7
+ GetLendMarketsParams,
8
+ LendMarket,
9
+ LendMarketId,
10
+ } from '@/types/lend/index.js'
11
+
12
+ export type LendProviders = {
13
+ morpho?: LendProvider<LendProviderConfig>
14
+ aave?: LendProvider<LendProviderConfig>
15
+ }
16
+
17
+ /**
18
+ * Base Lend Namespace
19
+ * @description Shared lending operations for Actions and Wallet namespaces
20
+ */
21
+ export abstract class BaseLendNamespace {
22
+ constructor(protected readonly providers: LendProviders) {}
23
+
24
+ /**
25
+ * Get all markets across all configured providers
26
+ * @param params - Optional filtering parameters
27
+ * @returns Promise resolving to array of markets from all providers
28
+ */
29
+ async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
30
+ const results = await Promise.all(
31
+ this.getAllProviders().map((p) => p.getMarkets(params)),
32
+ )
33
+ return results.flat()
34
+ }
35
+
36
+ /**
37
+ * Get a specific market by routing to the correct provider
38
+ * @param params - Market identifier
39
+ * @returns Promise resolving to market information
40
+ */
41
+ async getMarket(params: GetLendMarketParams): Promise<LendMarket> {
42
+ const provider = this.getProviderForMarket(params)
43
+ return provider.getMarket(params)
44
+ }
45
+
46
+ /**
47
+ * Get supported chain IDs across all providers
48
+ * @returns Array of unique chain IDs supported by any provider
49
+ */
50
+ supportedChainIds(): number[] {
51
+ const allChains = this.getAllProviders().flatMap((p) =>
52
+ p.supportedChainIds(),
53
+ )
54
+ return [...new Set(allChains)]
55
+ }
56
+
57
+ /**
58
+ * Get all configured providers
59
+ * @returns Array of configured providers
60
+ */
61
+ protected getAllProviders(): Array<MorphoLendProvider | AaveLendProvider> {
62
+ return [this.providers.morpho, this.providers.aave].filter(
63
+ Boolean,
64
+ ) as Array<MorphoLendProvider | AaveLendProvider>
65
+ }
66
+
67
+ /**
68
+ * Route a market to the correct provider
69
+ * @param marketId - Market identifier to route
70
+ * @returns The provider that handles this market
71
+ * @throws Error if no provider is found for the market
72
+ */
73
+ protected getProviderForMarket(
74
+ marketId: LendMarketId,
75
+ ): MorphoLendProvider | AaveLendProvider {
76
+ for (const provider of this.getAllProviders()) {
77
+ const market = provider.config.marketAllowlist?.find(
78
+ (m: LendMarketId) =>
79
+ m.address.toLowerCase() === marketId.address.toLowerCase() &&
80
+ m.chainId === marketId.chainId,
81
+ )
82
+ if (market) return provider
83
+ }
84
+
85
+ throw new Error(
86
+ `No provider configured for market ${marketId.address} on chain ${marketId.chainId}`,
87
+ )
88
+ }
89
+ }