@eth-optimism/actions-sdk 0.0.3 → 0.1.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 (243) hide show
  1. package/dist/actions.d.ts +19 -7
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +49 -19
  4. package/dist/actions.js.map +1 -1
  5. package/dist/actions.test.js +51 -81
  6. package/dist/actions.test.js.map +1 -1
  7. package/dist/constants/assets.d.ts.map +1 -1
  8. package/dist/constants/assets.js +2 -1
  9. package/dist/constants/assets.js.map +1 -1
  10. package/dist/constants/supportedChains.d.ts +1 -1
  11. package/dist/constants/supportedChains.d.ts.map +1 -1
  12. package/dist/constants/supportedChains.js +2 -1
  13. package/dist/constants/supportedChains.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/lend/core/LendProvider.d.ts +3 -2
  18. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  19. package/dist/lend/core/LendProvider.js.map +1 -1
  20. package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
  21. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  22. package/dist/lend/index.d.ts +1 -0
  23. package/dist/lend/index.d.ts.map +1 -1
  24. package/dist/lend/index.js +1 -0
  25. package/dist/lend/index.js.map +1 -1
  26. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
  27. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  28. package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
  29. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  30. package/dist/lend/namespaces/WalletLendNamespace.d.ts +43 -10
  31. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  32. package/dist/lend/namespaces/WalletLendNamespace.js +67 -13
  33. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  34. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
  35. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  36. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
  37. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  38. package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
  39. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  40. package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
  41. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  42. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  43. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  44. package/dist/lend/providers/aave/addresses.js +83 -0
  45. package/dist/lend/providers/aave/addresses.js.map +1 -0
  46. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  47. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  48. package/dist/lend/providers/aave/sdk.js +260 -0
  49. package/dist/lend/providers/aave/sdk.js.map +1 -0
  50. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
  51. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  52. package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
  53. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  54. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
  55. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  56. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  57. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  58. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  59. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  60. package/dist/lend/providers/morpho/sdk.js +0 -1
  61. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  62. package/dist/services/ChainManager.d.ts +1 -1
  63. package/dist/supported/tokens.d.ts.map +1 -1
  64. package/dist/supported/tokens.js +18 -2
  65. package/dist/supported/tokens.js.map +1 -1
  66. package/dist/test/MockLendProvider.d.ts +5 -4
  67. package/dist/test/MockLendProvider.d.ts.map +1 -1
  68. package/dist/test/MockLendProvider.js +5 -5
  69. package/dist/test/MockLendProvider.js.map +1 -1
  70. package/dist/test/MockPrivyClient.d.ts +10 -49
  71. package/dist/test/MockPrivyClient.d.ts.map +1 -1
  72. package/dist/test/MockPrivyClient.js +13 -72
  73. package/dist/test/MockPrivyClient.js.map +1 -1
  74. package/dist/types/actions.d.ts +26 -2
  75. package/dist/types/actions.d.ts.map +1 -1
  76. package/dist/types/lend/base.d.ts +6 -19
  77. package/dist/types/lend/base.d.ts.map +1 -1
  78. package/dist/wallet/core/namespace/WalletNamespace.d.ts +13 -13
  79. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  80. package/dist/wallet/core/namespace/WalletNamespace.js +13 -13
  81. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  82. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +64 -42
  83. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  84. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +51 -23
  85. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  86. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  87. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  88. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  89. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  90. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +14 -4
  91. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  92. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  93. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  94. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  95. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  96. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  97. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  98. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
  99. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  100. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  101. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  102. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  103. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  104. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  105. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  106. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  107. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  108. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  109. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  110. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +24 -4
  111. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  112. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +21 -6
  113. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  114. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +34 -14
  115. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  116. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  117. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +10 -4
  118. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  119. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +9 -1
  120. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  121. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  122. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  123. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  124. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  125. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
  126. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  127. package/dist/wallet/node/providers/hosted/types/index.d.ts +6 -1
  128. package/dist/wallet/node/providers/hosted/types/index.d.ts.map +1 -1
  129. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +19 -7
  130. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  131. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +13 -7
  132. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  133. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +26 -28
  134. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  135. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +12 -12
  136. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  137. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts +6 -2
  138. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.d.ts.map +1 -1
  139. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js +10 -7
  140. package/dist/wallet/node/wallets/hosted/privy/utils/createSigner.js.map +1 -1
  141. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  142. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  143. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  144. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  145. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  146. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  147. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  148. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  149. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
  150. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  151. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  152. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  153. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  154. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  155. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
  156. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  157. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  158. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  159. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  160. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  161. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
  162. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  163. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  164. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  165. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  166. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  167. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  168. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  169. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  170. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  171. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  172. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  173. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  174. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  175. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  176. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  177. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  178. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  179. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  180. package/package.json +5 -2
  181. package/src/actions.test.ts +55 -96
  182. package/src/actions.ts +82 -26
  183. package/src/constants/assets.ts +8 -1
  184. package/src/constants/supportedChains.ts +8 -1
  185. package/src/index.ts +1 -2
  186. package/src/lend/core/LendProvider.ts +6 -5
  187. package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
  188. package/src/lend/index.ts +1 -0
  189. package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
  190. package/src/lend/namespaces/WalletLendNamespace.ts +106 -20
  191. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
  192. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
  193. package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
  194. package/src/lend/providers/aave/addresses.ts +95 -0
  195. package/src/lend/providers/aave/sdk.ts +369 -0
  196. package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
  197. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
  198. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  199. package/src/lend/providers/morpho/sdk.ts +3 -4
  200. package/src/supported/tokens.ts +24 -2
  201. package/src/test/MockLendProvider.ts +9 -9
  202. package/src/test/MockPrivyClient.ts +24 -91
  203. package/src/types/actions.ts +30 -2
  204. package/src/types/lend/base.ts +6 -22
  205. package/src/wallet/core/namespace/WalletNamespace.ts +13 -13
  206. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +69 -70
  207. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +55 -47
  208. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  209. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +20 -7
  210. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  211. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  212. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
  213. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  214. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  215. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
  216. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +37 -11
  217. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +43 -24
  218. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +10 -7
  219. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +17 -2
  220. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  221. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
  222. package/src/wallet/node/providers/hosted/types/index.ts +9 -2
  223. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +31 -11
  224. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +35 -40
  225. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +18 -14
  226. package/src/wallet/node/wallets/hosted/privy/utils/createSigner.ts +11 -9
  227. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  228. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  229. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
  230. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  231. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
  232. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  233. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
  234. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  235. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  236. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  237. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  238. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  239. package/dist/constants/config.d.ts +0 -10
  240. package/dist/constants/config.d.ts.map +0 -1
  241. package/dist/constants/config.js +0 -10
  242. package/dist/constants/config.js.map +0 -1
  243. package/src/constants/config.ts +0 -9
@@ -3,23 +3,66 @@
3
3
  * @description Full lending operations available on wallet.lend
4
4
  */
5
5
  export class WalletLendNamespace {
6
- constructor(provider, wallet) {
7
- this.provider = provider;
6
+ constructor(providers, wallet) {
7
+ this.providers = providers;
8
8
  this.wallet = wallet;
9
- // Inherited methods from ActionsLendNamespace
10
- this.getMarkets = (...args) => this.provider.getMarkets(...args);
11
- this.getMarket = (...args) => this.provider.getMarket(...args);
12
- this.supportedChainIds = (...args) => this.provider.supportedChainIds(...args);
13
9
  }
14
- get config() {
15
- return this.provider.config;
10
+ /**
11
+ * Route a market to the correct provider
12
+ * @param marketId - Market identifier to route
13
+ * @returns The provider that handles this market
14
+ * @throws Error if no provider is found for the market
15
+ */
16
+ getProviderForMarket(marketId) {
17
+ const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
18
+ for (const provider of allProviders) {
19
+ const market = provider.config.marketAllowlist?.find((m) => m.address.toLowerCase() === marketId.address.toLowerCase() &&
20
+ m.chainId === marketId.chainId);
21
+ if (market) {
22
+ return provider;
23
+ }
24
+ }
25
+ throw new Error(`No provider configured for market ${marketId.address} on chain ${marketId.chainId}`);
26
+ }
27
+ /**
28
+ * Get all markets across all configured providers
29
+ * @param params - Optional filtering parameters
30
+ * @returns Promise resolving to array of markets from all providers
31
+ */
32
+ async getMarkets(params = {}) {
33
+ const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
34
+ const results = await Promise.all(allProviders.map((p) => p.getMarkets(params)));
35
+ return results.flat();
36
+ }
37
+ /**
38
+ * Get a specific market by routing to the correct provider
39
+ * @param params - Market identifier
40
+ * @returns Promise resolving to market information
41
+ */
42
+ async getMarket(params) {
43
+ const provider = this.getProviderForMarket(params);
44
+ return provider.getMarket(params);
45
+ }
46
+ /**
47
+ * Get supported chain IDs across all providers
48
+ * @returns Array of unique chain IDs supported by any provider
49
+ */
50
+ supportedChainIds() {
51
+ const allProviders = [this.providers.morpho, this.providers.aave].filter(Boolean);
52
+ const allChains = allProviders.flatMap((p) => p.supportedChainIds());
53
+ return [...new Set(allChains)];
16
54
  }
17
55
  /**
18
56
  * Open a lending position
19
57
  * @description Signs and sends a lend transaction from the wallet for the given amount and asset
58
+ * @param params - Lending position parameters
59
+ * @param params.marketId - Market identifier to open position in
60
+ * @param params.amount - Amount to lend
61
+ * @returns Promise resolving to transaction receipt
20
62
  */
21
63
  async openPosition(params) {
22
- const lendTransaction = await this.provider.openPosition({
64
+ const provider = this.getProviderForMarket(params.marketId);
65
+ const lendTransaction = await provider.openPosition({
23
66
  ...params,
24
67
  walletAddress: this.wallet.address,
25
68
  });
@@ -43,15 +86,22 @@ export class WalletLendNamespace {
43
86
  * @returns Promise resolving to position information
44
87
  */
45
88
  async getPosition(params) {
46
- return this.provider.getPosition(this.wallet.address, params.marketId, params.asset);
89
+ if (!params.marketId) {
90
+ throw new Error('marketId is required');
91
+ }
92
+ const provider = this.getProviderForMarket(params.marketId);
93
+ return provider.getPosition(this.wallet.address, params.marketId, params.asset);
47
94
  }
48
95
  /**
49
96
  * Close a lending position (withdraw from market)
50
- * @param closePositionParams - Position closing parameters
51
- * @returns Promise resolving to transaction hash
97
+ * @param params - Position closing parameters
98
+ * @param params.marketId - Market identifier to close position in
99
+ * @param params.amount - Amount to withdraw
100
+ * @returns Promise resolving to transaction receipt
52
101
  */
53
102
  async closePosition(params) {
54
- const closeTransaction = await this.provider.closePosition({
103
+ const provider = this.getProviderForMarket(params.marketId);
104
+ const closeTransaction = await provider.closePosition({
55
105
  ...params,
56
106
  walletAddress: this.wallet.address,
57
107
  });
@@ -59,6 +109,10 @@ export class WalletLendNamespace {
59
109
  if (!transactionData) {
60
110
  throw new Error('No transaction data returned from close position provider');
61
111
  }
112
+ // If both approval and closePosition are present, batch them
113
+ if (transactionData.approval && transactionData.closePosition) {
114
+ return await this.wallet.sendBatch([transactionData.approval, transactionData.closePosition], params.marketId.chainId);
115
+ }
62
116
  if (!transactionData.closePosition) {
63
117
  throw new Error('No closePosition transaction data returned');
64
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WalletLendNamespace.js","sourceRoot":"","sources":["../../../src/lend/namespaces/WalletLendNamespace.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAG9B,YACqB,QAA+B,EACjC,MAAc;QADZ,aAAQ,GAAR,QAAQ,CAAuB;QACjC,WAAM,GAAN,MAAM,CAAQ;QAOjC,8CAA8C;QAC9C,eAAU,GAAG,CAAC,GAAG,IAAqD,EAAE,EAAE,CACxE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;QAEnC,cAAS,GAAG,CAAC,GAAG,IAAoD,EAAE,EAAE,CACtE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;QAElC,sBAAiB,GAAG,CAClB,GAAG,IAA4D,EAC/D,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAA;IAf1C,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC7B,CAAC;IAaD;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,MAA8B;QAE9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvD,GAAG,MAAM;YACT,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SACnC,CAAC,CAAA;QAEF,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,CAAA;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;YAC7D,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAChC,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACxD,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,eAAe,CAAC,YAAY,EAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,CACb,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,MAA2B;QAE3B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YACzD,GAAG,MAAM;YACT,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SACnC,CAAC,CAAA;QAEF,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAA;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAC3B,eAAe,CAAC,aAAa,EAC7B,MAAM,CAAC,QAAQ,CAAC,OAAO,CACxB,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"WalletLendNamespace.js","sourceRoot":"","sources":["../../../src/lend/namespaces/WalletLendNamespace.ts"],"names":[],"mappings":"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"}
@@ -4,38 +4,46 @@ import { createMockLendProvider } from '../../../test/MockLendProvider.js';
4
4
  import { getRandomAddress } from '../../../test/utils.js';
5
5
  describe('ActionsLendNamespace', () => {
6
6
  let mockProvider;
7
+ let mockMarketId;
7
8
  beforeEach(() => {
8
- mockProvider = createMockLendProvider();
9
+ mockMarketId = { address: getRandomAddress(), chainId: 130 };
10
+ mockProvider = createMockLendProvider({
11
+ marketAllowlist: [
12
+ {
13
+ address: mockMarketId.address,
14
+ chainId: mockMarketId.chainId,
15
+ name: 'Test Market',
16
+ asset: {
17
+ address: { 130: getRandomAddress() },
18
+ metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
19
+ type: 'erc20',
20
+ },
21
+ lendProvider: 'morpho',
22
+ },
23
+ ],
24
+ });
9
25
  });
10
26
  it('should create an instance with a lend provider', () => {
11
- const namespace = new ActionsLendNamespace(mockProvider);
27
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider });
12
28
  expect(namespace).toBeInstanceOf(ActionsLendNamespace);
13
29
  });
14
30
  it('should delegate getMarkets to provider', async () => {
15
- const namespace = new ActionsLendNamespace(mockProvider);
31
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider });
16
32
  const spy = vi.spyOn(mockProvider, 'getMarkets');
17
33
  await namespace.getMarkets();
18
34
  expect(spy).toHaveBeenCalledOnce();
19
35
  });
20
36
  it('should delegate getMarket to provider with correct parameters', async () => {
21
- const namespace = new ActionsLendNamespace(mockProvider);
22
- const marketId = getRandomAddress();
23
- const chainId = 130;
37
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider });
24
38
  const spy = vi.spyOn(mockProvider, 'getMarket');
25
- await namespace.getMarket({ address: marketId, chainId });
26
- expect(spy).toHaveBeenCalledWith({ address: marketId, chainId });
39
+ await namespace.getMarket(mockMarketId);
40
+ expect(spy).toHaveBeenCalledWith(mockMarketId);
27
41
  });
28
42
  it('should delegate supportedChainIds to provider', () => {
29
- const namespace = new ActionsLendNamespace(mockProvider);
43
+ const namespace = new ActionsLendNamespace({ morpho: mockProvider });
30
44
  const spy = vi.spyOn(mockProvider, 'supportedChainIds');
31
45
  namespace.supportedChainIds();
32
46
  expect(spy).toHaveBeenCalledOnce();
33
47
  });
34
- it('should provide access to provider config', () => {
35
- const namespace = new ActionsLendNamespace(mockProvider);
36
- const config = namespace.config;
37
- expect(config).toBeDefined();
38
- expect(config.defaultSlippage || 50).toBe(50);
39
- });
40
48
  });
41
49
  //# sourceMappingURL=ActionsLendNamespace.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,YAA0B,CAAA;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG,sBAAsB,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAExD,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEhD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAA;QAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;QACnC,MAAM,OAAO,GAAG,GAAY,CAAA;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE/C,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QAEzD,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;QAEvD,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAE7B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAExD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;QAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ActionsLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAGlD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,YAA0B,CAAA;IAC9B,IAAI,YAA4C,CAAA;IAEhD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAY,EAAE,CAAA;QAErE,YAAY,GAAG,sBAAsB,CAAC;YACpC,eAAe,EAAE;gBACf;oBACE,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACL,OAAO,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE;wBACpC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;wBAC3D,IAAI,EAAE,OAAgB;qBACvB;oBACD,YAAY,EAAE,QAAQ;iBACvB;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAE3E,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEhD,MAAM,SAAS,CAAC,UAAU,EAAE,CAAA;QAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;QAE/C,MAAM,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAEvC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,YAAmB,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;QAEvD,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAE7B,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -7,8 +7,26 @@ describe('WalletLendNamespace', () => {
7
7
  const mockWalletAddress = getRandomAddress();
8
8
  let mockProvider;
9
9
  let mockWallet;
10
+ let mockMarketId;
10
11
  beforeEach(() => {
11
- mockProvider = createMockLendProvider();
12
+ // Create a consistent market ID for all tests
13
+ mockMarketId = { address: getRandomAddress(), chainId: 130 };
14
+ // Create mock provider with the market in its allowlist
15
+ mockProvider = createMockLendProvider({
16
+ marketAllowlist: [
17
+ {
18
+ address: mockMarketId.address,
19
+ chainId: mockMarketId.chainId,
20
+ name: 'Test Market',
21
+ asset: {
22
+ address: { 130: getRandomAddress() },
23
+ metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
24
+ type: 'erc20',
25
+ },
26
+ lendProvider: 'morpho',
27
+ },
28
+ ],
29
+ });
12
30
  // Create a mock SmartWallet with send and sendBatch methods
13
31
  mockWallet = createSmartWalletMock({
14
32
  address: mockWalletAddress,
@@ -23,11 +41,11 @@ describe('WalletLendNamespace', () => {
23
41
  });
24
42
  });
25
43
  it('should create an instance with a lend provider and wallet', () => {
26
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
44
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
27
45
  expect(namespace).toBeInstanceOf(WalletLendNamespace);
28
46
  });
29
47
  it('should inherit read operations from ActionsLendNamespace', async () => {
30
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
48
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
31
49
  const mockMarkets = [
32
50
  {
33
51
  marketId: {
@@ -61,18 +79,18 @@ describe('WalletLendNamespace', () => {
61
79
  vi.mocked(mockProvider.getMarkets).mockResolvedValue(mockMarkets);
62
80
  const result = await namespace.getMarkets();
63
81
  expect(mockProvider.getMarkets).toHaveBeenCalled();
64
- expect(result).toBe(mockMarkets);
82
+ expect(result).toStrictEqual(mockMarkets);
65
83
  });
66
84
  describe('openPosition', () => {
67
85
  it('should call provider openPosition with wallet address as receiver', async () => {
68
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
86
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
69
87
  const mockAsset = {
70
88
  address: { 130: getRandomAddress() },
71
89
  metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
72
90
  type: 'erc20',
73
91
  };
74
92
  const amount = 1000;
75
- const marketId = { address: getRandomAddress(), chainId: 130 };
93
+ const marketId = mockMarketId;
76
94
  const mockTransaction = {
77
95
  amount: 1000000000n,
78
96
  asset: mockAsset.address[130],
@@ -108,10 +126,10 @@ describe('WalletLendNamespace', () => {
108
126
  });
109
127
  describe('closePosition', () => {
110
128
  it('should call provider closePosition and execute transaction for SmartWallet', async () => {
111
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
129
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
112
130
  const closeParams = {
113
131
  amount: 100,
114
- marketId: { address: getRandomAddress(), chainId: 130 },
132
+ marketId: mockMarketId,
115
133
  };
116
134
  const mockTransaction = {
117
135
  amount: 100n,
@@ -141,18 +159,18 @@ describe('WalletLendNamespace', () => {
141
159
  });
142
160
  });
143
161
  it('should store the wallet reference', () => {
144
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
162
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
145
163
  expect(namespace['wallet']).toBe(mockWallet);
146
164
  expect(namespace['wallet'].address).toBe(mockWalletAddress);
147
165
  });
148
166
  it('should execute transaction with approval when present', async () => {
149
- const namespace = new WalletLendNamespace(mockProvider, mockWallet);
167
+ const namespace = new WalletLendNamespace({ morpho: mockProvider }, mockWallet);
150
168
  const mockAsset = {
151
169
  address: { 130: getRandomAddress() },
152
170
  metadata: { symbol: 'USDC', name: 'USD Coin', decimals: 6 },
153
171
  type: 'erc20',
154
172
  };
155
- const marketId = { address: getRandomAddress(), chainId: 130 };
173
+ const marketId = mockMarketId;
156
174
  const approval = {
157
175
  to: mockAsset.address[130],
158
176
  value: 0n,
@@ -1 +1 @@
1
- {"version":3,"file":"WalletLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WalletLendNamespace.spec.js","sourceRoot":"","sources":["../../../../src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { LendProvider } from '../../core/LendProvider.js';
2
+ import type { ChainManager } from '../../../services/ChainManager.js';
3
+ import type { LendProviderConfig } from '../../../types/actions.js';
4
+ import type { GetLendMarketsParams, GetMarketBalanceParams, LendClosePositionParams, LendMarket, LendMarketId, LendMarketPosition, LendOpenPositionInternalParams, LendTransaction } from '../../../types/lend/index.js';
5
+ /**
6
+ * Supported chain IDs for Aave lending
7
+ * @description Array of chain IDs where Aave V3 is available on Optimism Superchain
8
+ */
9
+ export declare const SUPPORTED_CHAIN_IDS: readonly number[];
10
+ /**
11
+ * Aave lending provider implementation
12
+ * @description Lending provider implementation using Aave V3 protocol
13
+ */
14
+ export declare class AaveLendProvider extends LendProvider<LendProviderConfig> {
15
+ protected readonly SUPPORTED_CHAIN_IDS: readonly number[];
16
+ private chainManager;
17
+ /**
18
+ * Create a new Aave lending provider
19
+ * @param config - Aave lending configuration
20
+ * @param chainManager - Chain manager for blockchain interactions
21
+ */
22
+ constructor(config: LendProviderConfig, chainManager: ChainManager);
23
+ /**
24
+ * Check if market is a WETH market
25
+ * @param marketId - Market identifier
26
+ * @returns true if market is for WETH
27
+ * @description WETH is a predeploy at the same address on all OP Stack chains
28
+ */
29
+ private isWETHMarket;
30
+ /**
31
+ * Open a lending position in an Aave market
32
+ * @description Opens a lending position by supplying assets to an Aave reserve
33
+ * @param params - Position opening parameters
34
+ * @returns Promise resolving to lending transaction details
35
+ */
36
+ protected _openPosition(params: LendOpenPositionInternalParams): Promise<LendTransaction>;
37
+ /**
38
+ * Open position for WETH market using WETHGateway
39
+ * @description Deposits native ETH via WETHGateway which wraps and deposits in one tx
40
+ */
41
+ private _openWETHPosition;
42
+ /**
43
+ * Open position for standard ERC-20 tokens
44
+ * @description Standard approve + supply flow for non-WETH assets
45
+ */
46
+ private _openERC20Position;
47
+ /**
48
+ * Close a position in an Aave market
49
+ * @description Withdraws assets from an Aave reserve
50
+ * @param params - Position closing operation parameters
51
+ * @returns Promise resolving to withdrawal transaction details
52
+ */
53
+ protected _closePosition(params: LendClosePositionParams): Promise<LendTransaction>;
54
+ /**
55
+ * Close position for WETH market using WETHGateway
56
+ * @description Withdraws aWETH, unwraps to ETH, and sends to user
57
+ */
58
+ private _closeWETHPosition;
59
+ /**
60
+ * Close position for standard ERC-20 tokens
61
+ */
62
+ private _closeERC20Position;
63
+ /**
64
+ * Get detailed market information
65
+ * @param marketId - Market identifier containing address and chainId
66
+ * @returns Promise resolving to market information
67
+ */
68
+ protected _getMarket(marketId: LendMarketId): Promise<LendMarket>;
69
+ /**
70
+ * Get list of available lending markets
71
+ * @param params - Filtering parameters
72
+ * @returns Promise resolving to array of market information
73
+ */
74
+ protected _getMarkets(params: GetLendMarketsParams): Promise<LendMarket[]>;
75
+ /**
76
+ * Get position for a specific wallet address
77
+ * @param params - Parameters for fetching position
78
+ * @returns Promise resolving to position information
79
+ */
80
+ protected _getPosition(params: GetMarketBalanceParams): Promise<LendMarketPosition>;
81
+ }
82
+ //# sourceMappingURL=AaveLendProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AaveLendProvider.d.ts","sourceRoot":"","sources":["../../../../src/lend/providers/aave/AaveLendProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,8BAA8B,EAC9B,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAgC9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAA6B,SAAS,MAAM,EAAE,CAAA;AAE9E;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,kBAAkB,CAAC;IACpE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,oBAAsB;IAE5D,OAAO,CAAC,YAAY,CAAc;IAElC;;;;OAIG;gBACS,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY;IAKlE;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;OAKG;cACa,aAAa,CAC3B,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,eAAe,CAAC;IAgC3B;;;OAGG;YACW,iBAAiB;IAuC/B;;;OAGG;YACW,kBAAkB;IAmDhC;;;;;OAKG;cACa,cAAc,CAC5B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,eAAe,CAAC;IA+B3B;;;OAGG;YACW,kBAAkB;IA4DhC;;OAEG;YACW,mBAAmB;IAsCjC;;;;OAIG;cACa,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAQvE;;;;OAIG;cACa,WAAW,CACzB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC;IAUxB;;;;OAIG;cACa,YAAY,CAC1B,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;CA6D/B"}