@eth-optimism/actions-sdk 0.0.4 → 0.2.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 (395) hide show
  1. package/LICENSE +1 -1
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -0
  3. package/dist/__mocks__/MockAssets.js.map +1 -0
  4. package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
  5. package/dist/__mocks__/MockPrivyClient.js.map +1 -0
  6. package/dist/__mocks__/utils.d.ts.map +1 -0
  7. package/dist/__mocks__/utils.js.map +1 -0
  8. package/dist/__tests__/actions.test.d.ts.map +1 -0
  9. package/dist/{actions.test.js → __tests__/actions.test.js} +35 -85
  10. package/dist/__tests__/actions.test.js.map +1 -0
  11. package/dist/actions.d.ts +19 -7
  12. package/dist/actions.d.ts.map +1 -1
  13. package/dist/actions.js +49 -19
  14. package/dist/actions.js.map +1 -1
  15. package/dist/constants/assets.d.ts +19 -0
  16. package/dist/constants/assets.d.ts.map +1 -1
  17. package/dist/constants/assets.js +84 -6
  18. package/dist/constants/assets.js.map +1 -1
  19. package/dist/constants/supportedChains.d.ts +1 -1
  20. package/dist/constants/supportedChains.d.ts.map +1 -1
  21. package/dist/constants/supportedChains.js +7 -3
  22. package/dist/constants/supportedChains.js.map +1 -1
  23. package/dist/core/asset/__mocks__/mockAsset.js +1 -1
  24. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +9 -7
  30. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  31. package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
  32. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
  33. package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
  34. package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  35. package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
  36. package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
  37. package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
  38. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
  39. package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
  40. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
  41. package/dist/lend/core/LendProvider.d.ts +16 -3
  42. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  43. package/dist/lend/core/LendProvider.js +23 -2
  44. package/dist/lend/core/LendProvider.js.map +1 -1
  45. package/dist/lend/core/__tests__/LendProvider.test.js +20 -50
  46. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  47. package/dist/lend/index.d.ts +1 -0
  48. package/dist/lend/index.d.ts.map +1 -1
  49. package/dist/lend/index.js +1 -0
  50. package/dist/lend/index.js.map +1 -1
  51. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -9
  52. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  53. package/dist/lend/namespaces/ActionsLendNamespace.js +2 -11
  54. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  55. package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  57. package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
  58. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
  59. package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -9
  60. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  61. package/dist/lend/namespaces/WalletLendNamespace.js +24 -31
  62. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  63. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +25 -17
  64. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  65. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
  66. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  67. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
  68. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  69. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +37 -21
  70. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  71. package/dist/lend/providers/aave/AaveLendProvider.d.ts +74 -0
  72. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  73. package/dist/lend/providers/aave/AaveLendProvider.js +290 -0
  74. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  75. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
  76. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  77. package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
  78. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  79. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
  80. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  81. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
  82. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  83. package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
  84. package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
  85. package/dist/lend/providers/aave/abis/pool.js +79 -0
  86. package/dist/lend/providers/aave/abis/pool.js.map +1 -0
  87. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  88. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  89. package/dist/lend/providers/aave/addresses.js +83 -0
  90. package/dist/lend/providers/aave/addresses.js.map +1 -0
  91. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  92. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  93. package/dist/lend/providers/aave/sdk.js +201 -0
  94. package/dist/lend/providers/aave/sdk.js.map +1 -0
  95. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -4
  96. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  97. package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
  98. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  99. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +6 -57
  100. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  101. package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
  102. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  103. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  104. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  105. package/dist/lend/providers/morpho/contracts.d.ts +19 -0
  106. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
  107. package/dist/lend/providers/morpho/contracts.js +32 -0
  108. package/dist/lend/providers/morpho/contracts.js.map +1 -0
  109. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  110. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  111. package/dist/lend/providers/morpho/sdk.js +168 -71
  112. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  113. package/dist/services/ChainManager.d.ts +1 -1
  114. package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
  115. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
  116. package/dist/services/__mocks__/MockChainManager.js.map +1 -0
  117. package/dist/services/tokenBalance.d.ts.map +1 -1
  118. package/dist/services/tokenBalance.js +4 -5
  119. package/dist/services/tokenBalance.js.map +1 -1
  120. package/dist/services/tokenBalance.spec.js +2 -2
  121. package/dist/services/tokenBalance.spec.js.map +1 -1
  122. package/dist/supported/tokens.d.ts +4 -4
  123. package/dist/supported/tokens.d.ts.map +1 -1
  124. package/dist/supported/tokens.js +5 -56
  125. package/dist/supported/tokens.js.map +1 -1
  126. package/dist/types/actions.d.ts +26 -2
  127. package/dist/types/actions.d.ts.map +1 -1
  128. package/dist/types/asset.d.ts +3 -3
  129. package/dist/types/asset.d.ts.map +1 -1
  130. package/dist/types/lend/base.d.ts +10 -28
  131. package/dist/types/lend/base.d.ts.map +1 -1
  132. package/dist/types/lend/contracts.d.ts +17 -0
  133. package/dist/types/lend/contracts.d.ts.map +1 -0
  134. package/dist/types/lend/contracts.js +2 -0
  135. package/dist/types/lend/contracts.js.map +1 -0
  136. package/dist/types/lend/index.d.ts +1 -0
  137. package/dist/types/lend/index.d.ts.map +1 -1
  138. package/dist/types/lend/index.js +1 -0
  139. package/dist/types/lend/index.js.map +1 -1
  140. package/dist/utils/assets.d.ts +7 -1
  141. package/dist/utils/assets.d.ts.map +1 -1
  142. package/dist/utils/assets.js +12 -1
  143. package/dist/utils/assets.js.map +1 -1
  144. package/dist/utils/assets.test.js +1 -1
  145. package/dist/utils/assets.test.js.map +1 -1
  146. package/dist/utils/constants.d.ts +5 -0
  147. package/dist/utils/constants.d.ts.map +1 -0
  148. package/dist/utils/constants.js +5 -0
  149. package/dist/utils/constants.js.map +1 -0
  150. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  151. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  152. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +13 -13
  153. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  154. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +12 -12
  155. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  156. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  157. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  158. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  159. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  160. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
  161. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  162. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  163. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  164. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  165. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  166. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  167. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  168. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +39 -16
  169. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  170. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  171. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  172. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  173. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  174. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
  175. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  176. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
  177. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  178. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  179. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  180. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  181. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  182. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +4 -4
  183. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  184. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
  185. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
  186. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
  187. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
  188. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
  189. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  190. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
  191. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  192. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -6
  193. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  194. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  195. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
  196. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  197. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
  198. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  199. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  200. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  201. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  202. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  203. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +5 -4
  204. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  205. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
  206. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  207. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
  208. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  209. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
  210. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  211. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
  212. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  213. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  214. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  215. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  216. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  217. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  218. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  219. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  220. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  221. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  222. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  223. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  224. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  225. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
  226. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
  227. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
  228. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +22 -7
  229. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  230. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  231. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  232. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  233. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  234. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
  235. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
  236. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
  237. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +8 -4
  238. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  239. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  240. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  241. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  242. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  243. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +7 -4
  244. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  245. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  246. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  247. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  248. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  249. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  250. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  251. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  252. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  253. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  254. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  255. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  256. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
  257. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  258. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
  259. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
  260. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  261. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  262. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  263. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  264. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
  265. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  266. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
  267. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  268. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  269. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  270. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  271. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  272. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  273. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  274. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  275. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  276. package/package.json +4 -1
  277. package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
  278. package/src/{actions.test.ts → __tests__/actions.test.ts} +34 -95
  279. package/src/actions.ts +82 -26
  280. package/src/constants/assets.ts +92 -8
  281. package/src/constants/supportedChains.ts +10 -2
  282. package/src/core/asset/__mocks__/mockAsset.ts +1 -1
  283. package/src/index.ts +2 -3
  284. package/src/{test → lend/__mocks__}/MockLendProvider.ts +24 -27
  285. package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
  286. package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
  287. package/src/lend/core/LendProvider.ts +40 -7
  288. package/src/lend/core/__tests__/LendProvider.test.ts +21 -63
  289. package/src/lend/index.ts +1 -0
  290. package/src/lend/namespaces/ActionsLendNamespace.ts +2 -21
  291. package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
  292. package/src/lend/namespaces/WalletLendNamespace.ts +39 -55
  293. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +29 -22
  294. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
  295. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +61 -26
  296. package/src/lend/providers/aave/AaveLendProvider.ts +395 -0
  297. package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
  298. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
  299. package/src/lend/providers/aave/abis/pool.ts +81 -0
  300. package/src/lend/providers/aave/addresses.ts +95 -0
  301. package/src/lend/providers/aave/sdk.ts +307 -0
  302. package/src/lend/providers/morpho/MorphoLendProvider.ts +23 -44
  303. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +13 -85
  304. package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
  305. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  306. package/src/lend/providers/morpho/contracts.ts +37 -0
  307. package/src/lend/providers/morpho/sdk.ts +235 -87
  308. package/src/services/tokenBalance.spec.ts +2 -2
  309. package/src/services/tokenBalance.ts +6 -7
  310. package/src/supported/tokens.ts +6 -57
  311. package/src/types/actions.ts +30 -2
  312. package/src/types/asset.ts +3 -3
  313. package/src/types/lend/base.ts +14 -33
  314. package/src/types/lend/contracts.ts +18 -0
  315. package/src/types/lend/index.ts +1 -0
  316. package/src/utils/assets.test.ts +1 -1
  317. package/src/utils/assets.ts +15 -1
  318. package/src/utils/constants.ts +4 -0
  319. package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
  320. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +15 -15
  321. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +14 -14
  322. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  323. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
  324. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  325. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  326. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +45 -55
  327. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  328. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
  329. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
  330. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  331. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +7 -10
  332. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
  333. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
  334. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
  335. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +8 -8
  336. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
  337. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
  338. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  339. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +5 -5
  340. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
  341. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
  342. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
  343. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  344. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  345. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  346. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  347. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
  348. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +31 -17
  349. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  350. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
  351. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +10 -11
  352. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  353. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +7 -8
  354. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  355. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
  356. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  357. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  358. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
  359. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
  360. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  361. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
  362. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
  363. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  364. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  365. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  366. package/dist/actions.test.d.ts.map +0 -1
  367. package/dist/actions.test.js.map +0 -1
  368. package/dist/constants/config.d.ts +0 -10
  369. package/dist/constants/config.d.ts.map +0 -1
  370. package/dist/constants/config.js +0 -10
  371. package/dist/constants/config.js.map +0 -1
  372. package/dist/test/MockAssets.d.ts.map +0 -1
  373. package/dist/test/MockAssets.js.map +0 -1
  374. package/dist/test/MockChainManager.d.ts.map +0 -1
  375. package/dist/test/MockChainManager.js.map +0 -1
  376. package/dist/test/MockLendProvider.d.ts.map +0 -1
  377. package/dist/test/MockLendProvider.js.map +0 -1
  378. package/dist/test/MockMarkets.d.ts.map +0 -1
  379. package/dist/test/MockMarkets.js.map +0 -1
  380. package/dist/test/MockPrivyClient.d.ts.map +0 -1
  381. package/dist/test/MockPrivyClient.js.map +0 -1
  382. package/dist/test/utils.d.ts.map +0 -1
  383. package/dist/test/utils.js.map +0 -1
  384. package/src/constants/config.ts +0 -9
  385. /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
  386. /package/dist/{test → __mocks__}/MockAssets.js +0 -0
  387. /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
  388. /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
  389. /package/dist/{test → __mocks__}/utils.d.ts +0 -0
  390. /package/dist/{test → __mocks__}/utils.js +0 -0
  391. /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
  392. /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
  393. /package/src/{test → __mocks__}/MockAssets.ts +0 -0
  394. /package/src/{test → __mocks__}/utils.ts +0 -0
  395. /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type { Actions } from '@/actions.js'
2
- export { ETH } from '@/constants/assets.js'
2
+ export { ETH, MORPHO, USDC, USDC_DEMO, WETH } from '@/constants/assets.js'
3
3
  export type { SupportedChainId } from '@/constants/supportedChains.js'
4
4
  export * from '@/core/error/errors.js'
5
5
  export { LendProvider, MorphoLendProvider } from '@/lend/index.js'
@@ -12,7 +12,6 @@ export type {
12
12
  ActionsConfig,
13
13
  ApyBreakdown,
14
14
  Asset,
15
- BaseLendConfig,
16
15
  EOATransactionReceipt,
17
16
  LendConfig,
18
17
  LendMarket,
@@ -22,9 +21,9 @@ export type {
22
21
  LendMarketPosition,
23
22
  LendMarketSupply,
24
23
  LendOptions,
24
+ LendProviderConfig,
25
25
  LendTransaction,
26
26
  LendTransactionReceipt,
27
- MorphoLendConfig,
28
27
  TokenBalance,
29
28
  TransactionData,
30
29
  UserOperationTransactionReceipt,
@@ -2,6 +2,9 @@ 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'
7
+ import type { LendProviderConfig } from '@/types/actions.js'
5
8
  import type { Asset } from '@/types/asset.js'
6
9
  import type {
7
10
  ClosePositionParams,
@@ -9,13 +12,11 @@ import type {
9
12
  GetLendMarketsParams,
10
13
  GetMarketBalanceParams,
11
14
  LendClosePositionParams,
12
- LendConfig,
13
15
  LendMarket,
14
16
  LendMarketId,
15
17
  LendMarketPosition,
16
18
  LendOpenPositionInternalParams,
17
19
  LendOpenPositionParams,
18
- LendOptions,
19
20
  LendTransaction,
20
21
  } from '@/types/lend/index.js'
21
22
 
@@ -29,7 +30,7 @@ export interface MockLendProviderConfig {
29
30
  * Mock Lend Provider for testing
30
31
  * @description Provides a mock implementation of LendProvider following MockChainManager pattern
31
32
  */
32
- export class MockLendProvider extends LendProvider<LendConfig> {
33
+ export class MockLendProvider extends LendProvider<LendProviderConfig> {
33
34
  public openPosition: MockedFunction<
34
35
  (params: LendOpenPositionParams) => Promise<LendTransaction>
35
36
  >
@@ -55,7 +56,6 @@ export class MockLendProvider extends LendProvider<LendConfig> {
55
56
  amount: bigint,
56
57
  chainId: number,
57
58
  marketId?: string,
58
- options?: LendOptions,
59
59
  ) => Promise<LendTransaction>
60
60
  >
61
61
 
@@ -71,10 +71,14 @@ export class MockLendProvider extends LendProvider<LendConfig> {
71
71
  private mockConfig: MockLendProviderConfig
72
72
 
73
73
  constructor(
74
- config?: LendConfig,
74
+ config?: LendProviderConfig,
75
75
  mockConfig?: Partial<MockLendProviderConfig>,
76
+ chainManager?: ChainManager,
76
77
  ) {
77
- super(config || { provider: 'morpho' })
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<LendConfig> {
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<LendConfig> {
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<LendConfig> {
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<LendConfig> {
220
222
  asset: assetAddress,
221
223
  marketId: marketId.address,
222
224
  apy: this.mockConfig.defaultApy,
223
- slippage: options?.slippage || this._config.defaultSlippage || 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<LendConfig> {
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<LendConfig> {
253
253
  asset: assetAddress,
254
254
  marketId: marketId.address,
255
255
  apy: this.mockConfig.defaultApy,
256
- slippage: options?.slippage || this._config.defaultSlippage || 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<LendConfig> {
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 || this._config.defaultSlippage || 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<LendConfig> {
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 || this._config.defaultSlippage || 50,
374
371
  transactionData: {
375
- closePosition: {
372
+ position: {
376
373
  to:
377
374
  (marketId as Address) ||
378
375
  ('0x1234567890123456789012345678901234567890' as Address),
@@ -390,7 +387,7 @@ export class MockLendProvider extends LendProvider<LendConfig> {
390
387
  * @returns MockLendProvider instance
391
388
  */
392
389
  export function createMockLendProvider(
393
- config?: LendConfig,
390
+ config?: LendProviderConfig,
394
391
  mockConfig?: Partial<MockLendProviderConfig>,
395
392
  ): MockLendProvider {
396
393
  return new MockLendProvider(config, mockConfig)
@@ -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,10 +1,11 @@
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'
6
+ import type { LendProviderConfig } from '@/types/actions.js'
5
7
  import type { Asset } from '@/types/asset.js'
6
8
  import type {
7
- BaseLendConfig,
8
9
  ClosePositionParams,
9
10
  GetLendMarketParams,
10
11
  GetLendMarketsParams,
@@ -17,6 +18,7 @@ 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'
22
24
 
@@ -25,11 +27,14 @@ import { validateMarketAsset } from '@/utils/markets.js'
25
27
  * @description Base class for lending provider implementations
26
28
  */
27
29
  export abstract class LendProvider<
28
- TConfig extends BaseLendConfig = BaseLendConfig,
30
+ TConfig extends LendProviderConfig = LendProviderConfig,
29
31
  > {
30
32
  /** Lending provider configuration */
31
33
  protected readonly _config: TConfig
32
34
 
35
+ /** Chain manager for blockchain interactions */
36
+ protected readonly chainManager: ChainManager
37
+
33
38
  /**
34
39
  * Supported chain IDs
35
40
  * @description Array of chain IDs that this provider supports
@@ -39,9 +44,11 @@ export abstract class LendProvider<
39
44
  /**
40
45
  * Create a new lending provider
41
46
  * @param config - Provider-specific lending configuration
47
+ * @param chainManager - Chain manager for blockchain interactions
42
48
  */
43
- protected constructor(config: TConfig) {
49
+ protected constructor(config: TConfig, chainManager: ChainManager) {
44
50
  this._config = config
51
+ this.chainManager = chainManager
45
52
  }
46
53
 
47
54
  public get config(): TConfig {
@@ -237,7 +244,7 @@ export abstract class LendProvider<
237
244
  }
238
245
 
239
246
  const foundMarket = this._config.marketAllowlist.find(
240
- (allowedMarket) =>
247
+ (allowedMarket: LendMarketConfig) =>
241
248
  allowedMarket.address.toLowerCase() ===
242
249
  marketId.address.toLowerCase() &&
243
250
  allowedMarket.chainId === marketId.chainId,
@@ -262,11 +269,37 @@ export abstract class LendProvider<
262
269
  ): LendMarketConfig[] {
263
270
  let configs = this._config.marketAllowlist || []
264
271
  if (chainId !== undefined)
265
- configs = configs.filter((m) => m.chainId === chainId)
266
- if (asset !== undefined) configs = configs.filter((m) => m.asset === asset)
272
+ configs = configs.filter((m: LendMarketConfig) => m.chainId === chainId)
273
+ if (asset !== undefined)
274
+ configs = configs.filter((m: LendMarketConfig) => m.asset === asset)
267
275
  return configs
268
276
  }
269
277
 
278
+ /**
279
+ * Build an ERC20 approval transaction
280
+ * @param tokenAddress - Address of the token to approve
281
+ * @param spender - Address to approve spending for
282
+ * @param amount - Amount to approve
283
+ * @returns Transaction data for the approval
284
+ */
285
+ protected buildApprovalTx(
286
+ tokenAddress: Address,
287
+ spender: Address,
288
+ amount: bigint,
289
+ ): TransactionData {
290
+ const approvalCallData = encodeFunctionData({
291
+ abi: erc20Abi,
292
+ functionName: 'approve',
293
+ args: [spender, amount],
294
+ })
295
+
296
+ return {
297
+ to: tokenAddress,
298
+ data: approvalCallData,
299
+ value: 0n,
300
+ }
301
+ }
302
+
270
303
  /**
271
304
  * Abstract methods that must be implemented by providers
272
305
  */
@@ -1,13 +1,9 @@
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'
6
- import type {
7
- LendConfig,
8
- LendMarketConfig,
9
- LendMarketId,
10
- } from '@/types/lend/index.js'
4
+ import { MockUSDCAsset } from '@/__mocks__/MockAssets.js'
5
+ import { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
+ import type { LendMarketConfig, LendMarketId } from '@/types/lend/index.js'
11
7
 
12
8
  // Test helper class that exposes protected validation methods as public
13
9
  class TestLendProvider extends MockLendProvider {
@@ -27,33 +23,11 @@ class TestLendProvider extends MockLendProvider {
27
23
  describe('LendProvider', () => {
28
24
  describe('constructor and configuration', () => {
29
25
  it('should initialize with basic config', () => {
30
- const config: LendConfig = {
31
- provider: 'morpho',
32
- defaultSlippage: 100,
33
- }
34
-
35
- const provider = new MockLendProvider(config)
26
+ const provider = new MockLendProvider()
36
27
  expect(provider).toBeDefined()
37
28
  expect(provider.supportedChainIds()).toContain(84532)
38
29
  })
39
30
 
40
- it('should use default slippage when not provided', () => {
41
- const config: LendConfig = { provider: 'morpho' }
42
- const provider = new MockLendProvider(config)
43
-
44
- expect(provider.config.defaultSlippage || 50).toBe(50)
45
- })
46
-
47
- it('should use custom default slippage when provided', () => {
48
- const config: LendConfig = {
49
- provider: 'morpho',
50
- defaultSlippage: 200,
51
- }
52
- const provider = new MockLendProvider(config)
53
-
54
- expect(provider.config.defaultSlippage).toBe(200)
55
- })
56
-
57
31
  it('should store market allowlist when provided', () => {
58
32
  const mockMarket: LendMarketConfig = {
59
33
  address: '0x1234' as Address,
@@ -71,19 +45,16 @@ describe('LendProvider', () => {
71
45
  lendProvider: 'morpho',
72
46
  }
73
47
 
74
- const config: LendConfig = {
75
- provider: 'morpho',
48
+ const provider = new MockLendProvider({
76
49
  marketAllowlist: [mockMarket],
77
- }
78
-
79
- const provider = new MockLendProvider(config)
50
+ })
80
51
  expect(provider.config.marketAllowlist).toEqual([mockMarket])
81
52
  })
82
53
  })
83
54
 
84
55
  describe('abstract methods implementation', () => {
85
56
  it('should implement getMarket method', async () => {
86
- const provider = new MockLendProvider({ provider: 'morpho' })
57
+ const provider = new MockLendProvider()
87
58
  const marketId: LendMarketId = {
88
59
  address: '0x1234' as Address,
89
60
  chainId: 84532,
@@ -96,7 +67,7 @@ describe('LendProvider', () => {
96
67
  })
97
68
 
98
69
  it('should accept LendMarketConfig and extract address/chainId', async () => {
99
- const provider = new MockLendProvider({ provider: 'morpho' })
70
+ const provider = new MockLendProvider()
100
71
  const mockMarket: LendMarketConfig = {
101
72
  address: '0x5678' as Address,
102
73
  chainId: 84532,
@@ -112,7 +83,7 @@ describe('LendProvider', () => {
112
83
  })
113
84
 
114
85
  it('should implement getMarkets method', async () => {
115
- const provider = new MockLendProvider({ provider: 'morpho' })
86
+ const provider = new MockLendProvider()
116
87
  const markets = await provider.getMarkets()
117
88
 
118
89
  expect(Array.isArray(markets)).toBe(true)
@@ -121,7 +92,7 @@ describe('LendProvider', () => {
121
92
  })
122
93
 
123
94
  it('should accept optional filter parameters for getMarkets', async () => {
124
- const provider = new MockLendProvider({ provider: 'morpho' })
95
+ const provider = new MockLendProvider()
125
96
  const markets = await provider.getMarkets({ chainId: 84532 })
126
97
 
127
98
  expect(Array.isArray(markets)).toBe(true)
@@ -129,7 +100,7 @@ describe('LendProvider', () => {
129
100
  })
130
101
 
131
102
  it('should accept asset filtering parameter', async () => {
132
- const provider = new MockLendProvider({ provider: 'morpho' })
103
+ const provider = new MockLendProvider()
133
104
  const mockAsset = {
134
105
  metadata: { symbol: 'USDC', name: 'USD Coin' },
135
106
  address: { 84532: '0x123' as Address },
@@ -140,7 +111,7 @@ describe('LendProvider', () => {
140
111
  })
141
112
 
142
113
  it('should implement getPosition method', async () => {
143
- const provider = new MockLendProvider({ provider: 'morpho' })
114
+ const provider = new MockLendProvider()
144
115
  const position = await provider.getPosition('0x5678' as Address, {
145
116
  address: '0x1234' as Address,
146
117
  chainId: 84532 as const,
@@ -152,7 +123,7 @@ describe('LendProvider', () => {
152
123
  })
153
124
 
154
125
  it('should implement closePosition method', async () => {
155
- const provider = new MockLendProvider({ provider: 'morpho' })
126
+ const provider = new MockLendProvider()
156
127
  const result = await provider.closePosition({
157
128
  amount: 100,
158
129
  marketId: { address: '0x1234' as Address, chainId: 84532 as const },
@@ -165,7 +136,7 @@ describe('LendProvider', () => {
165
136
  })
166
137
 
167
138
  it('should implement withdraw method', async () => {
168
- const provider = new MockLendProvider({ provider: 'morpho' })
139
+ const provider = new MockLendProvider()
169
140
  const result = await provider.withdraw(
170
141
  '0x0000000000000000000000000000000000000001' as Address,
171
142
  500n,
@@ -178,7 +149,7 @@ describe('LendProvider', () => {
178
149
  })
179
150
 
180
151
  it('should implement openPosition method', async () => {
181
- const provider = new MockLendProvider({ provider: 'morpho' })
152
+ const provider = new MockLendProvider()
182
153
  const mockAsset = {
183
154
  address: { 84532: '0x123' as Address },
184
155
  metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
@@ -201,7 +172,7 @@ describe('LendProvider', () => {
201
172
 
202
173
  describe('supportedChainIds', () => {
203
174
  it('should return array of supported chain IDs', () => {
204
- const provider = new MockLendProvider({ provider: 'morpho' })
175
+ const provider = new MockLendProvider()
205
176
  const chainIds = provider.supportedChainIds()
206
177
 
207
178
  expect(Array.isArray(chainIds)).toBe(true)
@@ -212,7 +183,7 @@ describe('LendProvider', () => {
212
183
 
213
184
  describe('validation', () => {
214
185
  it('should call validation for unsupported chainId', () => {
215
- const provider = new TestLendProvider({ provider: 'morpho' })
186
+ const provider = new TestLendProvider()
216
187
 
217
188
  expect(() => {
218
189
  provider.validateProviderSupported(999)
@@ -233,7 +204,6 @@ describe('LendProvider', () => {
233
204
  }
234
205
 
235
206
  const provider = new TestLendProvider({
236
- provider: 'morpho',
237
207
  marketAllowlist: [allowedMarket],
238
208
  })
239
209
 
@@ -253,7 +223,7 @@ describe('LendProvider', () => {
253
223
  })
254
224
 
255
225
  it('should validate chain support correctly', () => {
256
- const provider = new TestLendProvider({ provider: 'morpho' })
226
+ const provider = new TestLendProvider()
257
227
 
258
228
  expect(provider.isChainSupported(84532)).toBe(true)
259
229
  expect(provider.isChainSupported(999)).toBe(false)
@@ -261,16 +231,6 @@ describe('LendProvider', () => {
261
231
  })
262
232
 
263
233
  describe('public getters', () => {
264
- it('should provide access to defaultSlippage via getter', () => {
265
- const config: LendConfig = {
266
- provider: 'morpho',
267
- defaultSlippage: 75,
268
- }
269
- const provider = new MockLendProvider(config)
270
-
271
- expect(provider.config.defaultSlippage).toBe(75)
272
- })
273
-
274
234
  it('should provide access to marketAllowlist via getter', () => {
275
235
  const mockMarket: LendMarketConfig = {
276
236
  address: '0xabc' as Address,
@@ -288,17 +248,15 @@ describe('LendProvider', () => {
288
248
  lendProvider: 'morpho',
289
249
  }
290
250
 
291
- const config: LendConfig = {
292
- provider: 'morpho',
251
+ const provider = new MockLendProvider({
293
252
  marketAllowlist: [mockMarket],
294
- }
295
- const provider = new MockLendProvider(config)
253
+ })
296
254
 
297
255
  expect(provider.config.marketAllowlist).toEqual([mockMarket])
298
256
  })
299
257
 
300
258
  it('should return undefined for marketAllowlist when not provided', () => {
301
- const provider = new MockLendProvider({ provider: 'morpho' })
259
+ const provider = new MockLendProvider()
302
260
  expect(provider.config.marketAllowlist).toBeUndefined()
303
261
  })
304
262
  })
package/src/lend/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { LendProvider } from '@/lend/core/LendProvider.js'
2
+ export { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
2
3
  export { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
@@ -1,26 +1,7 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
- import type { BaseLendConfig, LendConfig } from '@/types/lend/index.js'
1
+ import { BaseLendNamespace } from './BaseLendNamespace.js'
3
2
 
4
3
  /**
5
4
  * Actions Lend Namespace
6
5
  * @description Read-only lending operations available on actions.lend
7
6
  */
8
- export class ActionsLendNamespace<TConfig extends BaseLendConfig = LendConfig> {
9
- constructor(protected readonly provider: LendProvider<TConfig>) {}
10
-
11
- get config(): TConfig {
12
- return this.provider.config
13
- }
14
-
15
- // Bind to the LendProvider's methods and carry types
16
-
17
- getMarkets = (...args: Parameters<LendProvider<TConfig>['getMarkets']>) =>
18
- this.provider.getMarkets(...args)
19
-
20
- getMarket = (...args: Parameters<LendProvider<TConfig>['getMarket']>) =>
21
- this.provider.getMarket(...args)
22
-
23
- supportedChainIds = (
24
- ...args: Parameters<LendProvider<TConfig>['supportedChainIds']>
25
- ) => this.provider.supportedChainIds(...args)
26
- }
7
+ export class ActionsLendNamespace extends BaseLendNamespace {}