@eth-optimism/actions-sdk 0.0.4 → 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 (201) 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 +30 -80
  6. package/dist/actions.test.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lend/core/LendProvider.d.ts +3 -2
  11. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  12. package/dist/lend/core/LendProvider.js.map +1 -1
  13. package/dist/lend/core/__tests__/LendProvider.test.js +18 -48
  14. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  15. package/dist/lend/index.d.ts +1 -0
  16. package/dist/lend/index.d.ts.map +1 -1
  17. package/dist/lend/index.js +1 -0
  18. package/dist/lend/index.js.map +1 -1
  19. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +35 -8
  20. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  21. package/dist/lend/namespaces/ActionsLendNamespace.js +45 -8
  22. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  23. package/dist/lend/namespaces/WalletLendNamespace.d.ts +35 -8
  24. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  25. package/dist/lend/namespaces/WalletLendNamespace.js +59 -11
  26. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  27. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +23 -15
  28. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  29. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +29 -11
  30. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  31. package/dist/lend/providers/aave/AaveLendProvider.d.ts +82 -0
  32. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  33. package/dist/lend/providers/aave/AaveLendProvider.js +346 -0
  34. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -0
  35. package/dist/lend/providers/aave/addresses.d.ts +57 -0
  36. package/dist/lend/providers/aave/addresses.d.ts.map +1 -0
  37. package/dist/lend/providers/aave/addresses.js +83 -0
  38. package/dist/lend/providers/aave/addresses.js.map +1 -0
  39. package/dist/lend/providers/aave/sdk.d.ts +57 -0
  40. package/dist/lend/providers/aave/sdk.d.ts.map +1 -0
  41. package/dist/lend/providers/aave/sdk.js +260 -0
  42. package/dist/lend/providers/aave/sdk.js.map +1 -0
  43. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +4 -3
  44. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  45. package/dist/lend/providers/morpho/MorphoLendProvider.js +2 -2
  46. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  47. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +1 -33
  48. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  49. package/dist/lend/providers/morpho/__tests__/sdk.test.js +1 -0
  50. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  51. package/dist/lend/providers/morpho/sdk.d.ts +4 -3
  52. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  53. package/dist/supported/tokens.d.ts.map +1 -1
  54. package/dist/supported/tokens.js +18 -2
  55. package/dist/supported/tokens.js.map +1 -1
  56. package/dist/test/MockLendProvider.d.ts +5 -4
  57. package/dist/test/MockLendProvider.d.ts.map +1 -1
  58. package/dist/test/MockLendProvider.js +5 -5
  59. package/dist/test/MockLendProvider.js.map +1 -1
  60. package/dist/types/actions.d.ts +26 -2
  61. package/dist/types/actions.d.ts.map +1 -1
  62. package/dist/types/lend/base.d.ts +6 -19
  63. package/dist/types/lend/base.d.ts.map +1 -1
  64. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +9 -9
  65. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  66. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +8 -8
  67. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  68. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +12 -3
  69. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  70. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +3 -2
  71. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  72. package/dist/wallet/core/providers/hosted/types/index.d.ts +8 -2
  73. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  74. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +14 -6
  75. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  76. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +10 -6
  77. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  78. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +36 -13
  79. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  80. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +19 -7
  81. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  82. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -7
  83. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  84. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +9 -3
  85. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  86. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +4 -4
  87. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  88. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  89. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  90. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +10 -3
  91. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  92. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -3
  93. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  94. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -3
  95. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  96. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  97. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +5 -4
  98. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  99. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +9 -2
  100. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  101. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -3
  102. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  103. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +4 -3
  104. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  105. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +10 -3
  106. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  107. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +5 -4
  108. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  109. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +8 -2
  110. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  111. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  112. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  113. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -2
  114. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  115. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +3 -3
  116. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  117. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +19 -7
  118. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  119. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -2
  120. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  121. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -3
  122. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  123. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +7 -3
  124. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  125. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -2
  126. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  127. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +3 -3
  128. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  129. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +6 -3
  130. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  131. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  132. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  133. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +6 -2
  134. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  135. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +3 -3
  136. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  137. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +6 -0
  138. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  139. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  140. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +6 -2
  141. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  142. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  143. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  144. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +6 -2
  145. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  146. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  147. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  148. package/package.json +4 -1
  149. package/src/actions.test.ts +32 -93
  150. package/src/actions.ts +82 -26
  151. package/src/index.ts +1 -2
  152. package/src/lend/core/LendProvider.ts +6 -5
  153. package/src/lend/core/__tests__/LendProvider.test.ts +19 -61
  154. package/src/lend/index.ts +1 -0
  155. package/src/lend/namespaces/ActionsLendNamespace.ts +77 -13
  156. package/src/lend/namespaces/WalletLendNamespace.ts +98 -18
  157. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +24 -18
  158. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +49 -11
  159. package/src/lend/providers/aave/AaveLendProvider.ts +463 -0
  160. package/src/lend/providers/aave/addresses.ts +95 -0
  161. package/src/lend/providers/aave/sdk.ts +369 -0
  162. package/src/lend/providers/morpho/MorphoLendProvider.ts +5 -5
  163. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +5 -53
  164. package/src/lend/providers/morpho/__tests__/sdk.test.ts +1 -0
  165. package/src/lend/providers/morpho/sdk.ts +3 -3
  166. package/src/supported/tokens.ts +24 -2
  167. package/src/test/MockLendProvider.ts +9 -9
  168. package/src/types/actions.ts +30 -2
  169. package/src/types/lend/base.ts +6 -22
  170. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +9 -9
  171. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +8 -8
  172. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +15 -4
  173. package/src/wallet/core/providers/hosted/types/index.ts +8 -2
  174. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +24 -9
  175. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +38 -46
  176. package/src/wallet/core/wallets/abstract/Wallet.ts +25 -17
  177. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +17 -10
  178. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +4 -7
  179. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -5
  180. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +4 -4
  181. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +6 -4
  182. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +13 -4
  183. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +4 -4
  184. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +18 -6
  185. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +16 -5
  186. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +8 -4
  187. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +25 -14
  188. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +8 -4
  189. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +7 -7
  190. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -4
  191. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +6 -7
  192. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +6 -6
  193. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -5
  194. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +6 -0
  195. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +12 -5
  196. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +12 -5
  197. package/dist/constants/config.d.ts +0 -10
  198. package/dist/constants/config.d.ts.map +0 -1
  199. package/dist/constants/config.js +0 -10
  200. package/dist/constants/config.js.map +0 -1
  201. package/src/constants/config.ts +0 -9
@@ -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"}
@@ -0,0 +1,346 @@
1
+ import { encodeFunctionData, erc20Abi, formatUnits, parseAbi } from 'viem';
2
+ import { LendProvider } from '../../core/LendProvider.js';
3
+ import { getAssetAddress } from '../../../utils/assets.js';
4
+ import { getPoolAddress, getSupportedChainIds, getWETHGatewayAddress, } from './addresses.js';
5
+ import { getReserve, getReserves } from './sdk.js';
6
+ /**
7
+ * WETH predeploy address on OP Stack chains
8
+ * @description WETH is deployed at the same address on all OP Stack chains (Optimism, Base, etc.)
9
+ */
10
+ const WETH_ADDRESS = '0x4200000000000000000000000000000000000006';
11
+ /**
12
+ * Aave Pool ABI - only the functions we need
13
+ */
14
+ const POOL_ABI = parseAbi([
15
+ 'function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode)',
16
+ 'function withdraw(address asset, uint256 amount, address to) returns (uint256)',
17
+ ]);
18
+ /**
19
+ * Aave WETHGateway ABI - for native ETH deposits/withdrawals
20
+ */
21
+ const WETH_GATEWAY_ABI = parseAbi([
22
+ 'function depositETH(address pool, address onBehalfOf, uint16 referralCode) payable',
23
+ 'function withdrawETH(address pool, uint256 amount, address to)',
24
+ ]);
25
+ /**
26
+ * Supported chain IDs for Aave lending
27
+ * @description Array of chain IDs where Aave V3 is available on Optimism Superchain
28
+ */
29
+ export const SUPPORTED_CHAIN_IDS = getSupportedChainIds();
30
+ /**
31
+ * Aave lending provider implementation
32
+ * @description Lending provider implementation using Aave V3 protocol
33
+ */
34
+ export class AaveLendProvider extends LendProvider {
35
+ /**
36
+ * Create a new Aave lending provider
37
+ * @param config - Aave lending configuration
38
+ * @param chainManager - Chain manager for blockchain interactions
39
+ */
40
+ constructor(config, chainManager) {
41
+ super(config);
42
+ this.SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS;
43
+ this.chainManager = chainManager;
44
+ }
45
+ /**
46
+ * Check if market is a WETH market
47
+ * @param marketId - Market identifier
48
+ * @returns true if market is for WETH
49
+ * @description WETH is a predeploy at the same address on all OP Stack chains
50
+ */
51
+ isWETHMarket(marketId) {
52
+ return marketId.address.toLowerCase() === WETH_ADDRESS.toLowerCase();
53
+ }
54
+ /**
55
+ * Open a lending position in an Aave market
56
+ * @description Opens a lending position by supplying assets to an Aave reserve
57
+ * @param params - Position opening parameters
58
+ * @returns Promise resolving to lending transaction details
59
+ */
60
+ async _openPosition(params) {
61
+ try {
62
+ // Get Pool address for this chain
63
+ const poolAddress = getPoolAddress(params.marketId.chainId);
64
+ if (!poolAddress) {
65
+ throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
66
+ }
67
+ // Get market information for APY
68
+ const marketInfo = await this.getMarket({
69
+ address: params.marketId.address,
70
+ chainId: params.marketId.chainId,
71
+ });
72
+ // Check if this is a WETH market
73
+ if (this.isWETHMarket(params.marketId)) {
74
+ return this._openWETHPosition(params, poolAddress, marketInfo);
75
+ }
76
+ // Standard ERC-20 flow
77
+ return this._openERC20Position(params, poolAddress, marketInfo);
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Failed to open position with ${params.amountWei} of ${params.asset.metadata.symbol}: ${error instanceof Error ? error.message : 'Unknown error'}`);
81
+ }
82
+ }
83
+ /**
84
+ * Open position for WETH market using WETHGateway
85
+ * @description Deposits native ETH via WETHGateway which wraps and deposits in one tx
86
+ */
87
+ async _openWETHPosition(params, poolAddress, marketInfo) {
88
+ const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId);
89
+ if (!gatewayAddress) {
90
+ throw new Error(`WETHGateway not available on chain ${params.marketId.chainId}`);
91
+ }
92
+ // Generate depositETH transaction
93
+ const depositCallData = encodeFunctionData({
94
+ abi: WETH_GATEWAY_ABI,
95
+ functionName: 'depositETH',
96
+ args: [
97
+ poolAddress, // pool address
98
+ params.walletAddress, // onBehalfOf (receives aWETH)
99
+ 0, // referralCode (0 = no referral)
100
+ ],
101
+ });
102
+ return {
103
+ amount: params.amountWei,
104
+ asset: WETH_ADDRESS,
105
+ marketId: params.marketId.address,
106
+ apy: marketInfo.apy.total,
107
+ transactionData: {
108
+ openPosition: {
109
+ to: gatewayAddress,
110
+ data: depositCallData,
111
+ value: params.amountWei, // Send ETH as msg.value
112
+ },
113
+ },
114
+ slippage: params.options?.slippage ?? 50,
115
+ };
116
+ }
117
+ /**
118
+ * Open position for standard ERC-20 tokens
119
+ * @description Standard approve + supply flow for non-WETH assets
120
+ */
121
+ async _openERC20Position(params, poolAddress, marketInfo) {
122
+ // Get asset address for the chain
123
+ const assetAddress = params.asset.address[params.marketId.chainId];
124
+ if (!assetAddress) {
125
+ throw new Error(`Asset not supported on chain ${params.marketId.chainId}`);
126
+ }
127
+ // Generate approval transaction
128
+ const approvalCallData = encodeFunctionData({
129
+ abi: erc20Abi,
130
+ functionName: 'approve',
131
+ args: [poolAddress, params.amountWei],
132
+ });
133
+ // Generate supply transaction
134
+ const supplyCallData = encodeFunctionData({
135
+ abi: POOL_ABI,
136
+ functionName: 'supply',
137
+ args: [
138
+ assetAddress, // asset
139
+ params.amountWei, // amount
140
+ params.walletAddress, // onBehalfOf
141
+ 0, // referralCode
142
+ ],
143
+ });
144
+ return {
145
+ amount: params.amountWei,
146
+ asset: assetAddress,
147
+ marketId: params.marketId.address,
148
+ apy: marketInfo.apy.total,
149
+ transactionData: {
150
+ approval: {
151
+ to: assetAddress,
152
+ data: approvalCallData,
153
+ value: 0n,
154
+ },
155
+ openPosition: {
156
+ to: poolAddress,
157
+ data: supplyCallData,
158
+ value: 0n,
159
+ },
160
+ },
161
+ slippage: params.options?.slippage ?? 50,
162
+ };
163
+ }
164
+ /**
165
+ * Close a position in an Aave market
166
+ * @description Withdraws assets from an Aave reserve
167
+ * @param params - Position closing operation parameters
168
+ * @returns Promise resolving to withdrawal transaction details
169
+ */
170
+ async _closePosition(params) {
171
+ try {
172
+ // Get Pool address for this chain
173
+ const poolAddress = getPoolAddress(params.marketId.chainId);
174
+ if (!poolAddress) {
175
+ throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
176
+ }
177
+ const marketInfo = await this.getMarket({
178
+ address: params.marketId.address,
179
+ chainId: params.marketId.chainId,
180
+ });
181
+ // Check if this is a WETH market
182
+ if (this.isWETHMarket(params.marketId)) {
183
+ return this._closeWETHPosition(params, poolAddress, marketInfo);
184
+ }
185
+ // Standard ERC-20 flow
186
+ return this._closeERC20Position(params, poolAddress, marketInfo);
187
+ }
188
+ catch (error) {
189
+ throw new Error(`Failed to close position: ${error instanceof Error ? error.message : 'Unknown error'}`);
190
+ }
191
+ }
192
+ /**
193
+ * Close position for WETH market using WETHGateway
194
+ * @description Withdraws aWETH, unwraps to ETH, and sends to user
195
+ */
196
+ async _closeWETHPosition(params, poolAddress, marketInfo) {
197
+ const gatewayAddress = getWETHGatewayAddress(params.marketId.chainId);
198
+ if (!gatewayAddress) {
199
+ throw new Error(`WETHGateway not available on chain ${params.marketId.chainId}`);
200
+ }
201
+ // Get the aToken address for the underlying WETH asset
202
+ // Note: params.marketId.address is the underlying WETH address, not the aToken
203
+ const { getATokenAddress } = await import('./sdk.js');
204
+ const aWETHAddress = await getATokenAddress({
205
+ underlyingAsset: params.marketId.address,
206
+ chainId: params.marketId.chainId,
207
+ chainManager: this.chainManager,
208
+ });
209
+ // First: User must approve aWETH to WETHGateway
210
+ const approvalCallData = encodeFunctionData({
211
+ abi: erc20Abi,
212
+ functionName: 'approve',
213
+ args: [gatewayAddress, params.amount],
214
+ });
215
+ // Second: Call withdrawETH on gateway
216
+ const withdrawCallData = encodeFunctionData({
217
+ abi: WETH_GATEWAY_ABI,
218
+ functionName: 'withdrawETH',
219
+ args: [
220
+ poolAddress, // pool
221
+ params.amount, // amount
222
+ params.walletAddress, // to (receives native ETH)
223
+ ],
224
+ });
225
+ return {
226
+ amount: params.amount,
227
+ asset: WETH_ADDRESS,
228
+ marketId: params.marketId.address,
229
+ apy: marketInfo.apy.total,
230
+ transactionData: {
231
+ approval: {
232
+ to: aWETHAddress,
233
+ data: approvalCallData,
234
+ value: 0n,
235
+ },
236
+ closePosition: {
237
+ to: gatewayAddress,
238
+ data: withdrawCallData,
239
+ value: 0n,
240
+ },
241
+ },
242
+ slippage: params.options?.slippage ?? 50,
243
+ };
244
+ }
245
+ /**
246
+ * Close position for standard ERC-20 tokens
247
+ */
248
+ async _closeERC20Position(params, poolAddress, marketInfo) {
249
+ // Get asset address for the market's chain
250
+ const assetAddress = getAssetAddress(marketInfo.asset, params.marketId.chainId);
251
+ // Generate withdraw transaction
252
+ const withdrawCallData = encodeFunctionData({
253
+ abi: POOL_ABI,
254
+ functionName: 'withdraw',
255
+ args: [
256
+ assetAddress, // asset
257
+ params.amount, // amount
258
+ params.walletAddress, // to
259
+ ],
260
+ });
261
+ return {
262
+ amount: params.amount,
263
+ asset: assetAddress,
264
+ marketId: params.marketId.address,
265
+ apy: marketInfo.apy.total,
266
+ transactionData: {
267
+ closePosition: {
268
+ to: poolAddress,
269
+ data: withdrawCallData,
270
+ value: 0n,
271
+ },
272
+ },
273
+ slippage: params.options?.slippage ?? 50,
274
+ };
275
+ }
276
+ /**
277
+ * Get detailed market information
278
+ * @param marketId - Market identifier containing address and chainId
279
+ * @returns Promise resolving to market information
280
+ */
281
+ async _getMarket(marketId) {
282
+ return getReserve({
283
+ marketId,
284
+ chainManager: this.chainManager,
285
+ lendConfig: this._config,
286
+ });
287
+ }
288
+ /**
289
+ * Get list of available lending markets
290
+ * @param params - Filtering parameters
291
+ * @returns Promise resolving to array of market information
292
+ */
293
+ async _getMarkets(params) {
294
+ const marketConfigs = params.markets || [];
295
+ return getReserves({
296
+ chainManager: this.chainManager,
297
+ lendConfig: this._config,
298
+ markets: marketConfigs,
299
+ });
300
+ }
301
+ /**
302
+ * Get position for a specific wallet address
303
+ * @param params - Parameters for fetching position
304
+ * @returns Promise resolving to position information
305
+ */
306
+ async _getPosition(params) {
307
+ try {
308
+ const publicClient = this.chainManager.getPublicClient(params.marketId.chainId);
309
+ const market = await this._getMarket(params.marketId);
310
+ const poolAddress = getPoolAddress(params.marketId.chainId);
311
+ if (!poolAddress) {
312
+ throw new Error(`Aave V3 not deployed on chain ${params.marketId.chainId}`);
313
+ }
314
+ // Get the aToken address from Pool.getReserveData
315
+ const assetAddress = getAssetAddress(market.asset, params.marketId.chainId);
316
+ const reserveData = (await publicClient.readContract({
317
+ address: poolAddress,
318
+ abi: parseAbi([
319
+ 'struct ReserveData { uint256 configuration; uint128 liquidityIndex; uint128 currentLiquidityRate; uint128 variableBorrowIndex; uint128 currentVariableBorrowRate; uint128 currentStableBorrowRate; uint40 lastUpdateTimestamp; uint16 id; address aTokenAddress; address stableDebtTokenAddress; address variableDebtTokenAddress; address interestRateStrategyAddress; uint128 accruedToTreasury; uint128 unbacked; uint128 isolationModeTotalDebt; }',
320
+ 'function getReserveData(address asset) view returns (ReserveData)',
321
+ ]),
322
+ functionName: 'getReserveData',
323
+ args: [assetAddress],
324
+ }));
325
+ const aTokenAddress = reserveData.aTokenAddress;
326
+ const balance = await publicClient.readContract({
327
+ address: aTokenAddress,
328
+ abi: erc20Abi,
329
+ functionName: 'balanceOf',
330
+ args: [params.walletAddress],
331
+ });
332
+ const balanceFormatted = formatUnits(balance, market.asset.metadata.decimals);
333
+ return {
334
+ balance,
335
+ balanceFormatted,
336
+ shares: balance, // In Aave, aTokens are 1:1 with underlying
337
+ sharesFormatted: balanceFormatted,
338
+ marketId: params.marketId,
339
+ };
340
+ }
341
+ catch (error) {
342
+ throw new Error(`Failed to get market balance for ${params.walletAddress} in market ${params.marketId.address}: ${error instanceof Error ? error.message : 'Unknown error'}`);
343
+ }
344
+ }
345
+ }
346
+ //# sourceMappingURL=AaveLendProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AaveLendProvider.js","sourceRoot":"","sources":["../../../../src/lend/providers/aave/AaveLendProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { Address } from 'viem';
2
+ /**
3
+ * Aave V3 Pool addresses for Optimism Superchain networks
4
+ * @description Hardcoded Pool contract addresses for each supported chain
5
+ */
6
+ /**
7
+ * Mainnet Pool addresses
8
+ */
9
+ export declare const POOL_ADDRESSES_MAINNET: Record<number, Address>;
10
+ /**
11
+ * Testnet Pool addresses
12
+ */
13
+ export declare const POOL_ADDRESSES_TESTNET: Record<number, Address>;
14
+ /**
15
+ * All Pool addresses (mainnet + testnet)
16
+ */
17
+ export declare const POOL_ADDRESSES: Record<number, Address>;
18
+ /**
19
+ * Get Pool address for a given chain ID
20
+ * @param chainId - Chain ID
21
+ * @returns Pool address if supported, undefined otherwise
22
+ */
23
+ export declare function getPoolAddress(chainId: number): Address | undefined;
24
+ /**
25
+ * Check if a chain ID has Aave V3 deployed
26
+ * @param chainId - Chain ID to check
27
+ * @returns true if Aave V3 is deployed on this chain
28
+ */
29
+ export declare function isAaveChainSupported(chainId: number): boolean;
30
+ /**
31
+ * Get all supported chain IDs
32
+ * @returns Array of chain IDs with Aave V3 deployed
33
+ */
34
+ export declare function getSupportedChainIds(): number[];
35
+ /**
36
+ * Aave V3 WETHGateway addresses for Optimism Superchain networks
37
+ * @description Gateway contracts that handle native ETH wrapping and depositing
38
+ */
39
+ /**
40
+ * Mainnet WETHGateway addresses
41
+ */
42
+ export declare const WETH_GATEWAY_ADDRESSES_MAINNET: Record<number, Address>;
43
+ /**
44
+ * Testnet WETHGateway addresses
45
+ */
46
+ export declare const WETH_GATEWAY_ADDRESSES_TESTNET: Record<number, Address>;
47
+ /**
48
+ * All WETHGateway addresses (mainnet + testnet)
49
+ */
50
+ export declare const WETH_GATEWAY_ADDRESSES: Record<number, Address>;
51
+ /**
52
+ * Get WETHGateway address for a given chain ID
53
+ * @param chainId - Chain ID
54
+ * @returns WETHGateway address if supported, undefined otherwise
55
+ */
56
+ export declare function getWETHGatewayAddress(chainId: number): Address | undefined;
57
+ //# sourceMappingURL=addresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../../src/lend/providers/aave/addresses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzC,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGzD,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAGjD,CAAA;AAEV;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1E"}