@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":"PrivyWallet.js","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/privy/PrivyWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAA;AAExF;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAMxC,YACE,YAA0B,EAC1B,eAAgC,EAChC,YAAuC;QAEvC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAInB;QACC,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,YAAY,CACpB,CAAA;QACD,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,qBAAqB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACpC,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,YAAY;QACxB,OAAO,YAAY,CAAC;YAClB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"PrivyWallet.js","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/privy/PrivyWallet.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAA;AAExF;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAMxC,YACE,YAA0B,EAC1B,eAAgC,EAChC,aAGC;QAED,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAClC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAOnB;QACC,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,CACrB,CAAA;QACD,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,qBAAqB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACpC,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,YAAY;QACxB,OAAO,YAAY,CAAC;YAClB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import type { TurnkeySDKClientBase } from '@turnkey/react-wallet-kit';
2
2
  import type { Address, LocalAccount } from 'viem';
3
+ import type { LendProvider } from '../../../../../lend/core/LendProvider.js';
3
4
  import type { ChainManager } from '../../../../../services/ChainManager.js';
4
- import type { LendConfig, LendProvider } from '../../../../../types/lend/index.js';
5
+ import type { LendProviderConfig } from '../../../../../types/actions.js';
5
6
  import { EOAWallet } from '../../../../core/wallets/eoa/EOAWallet.js';
6
7
  /**
7
8
  * Turnkey wallet implementation
@@ -36,7 +37,10 @@ export declare class TurnkeyWallet extends EOAWallet {
36
37
  organizationId: string;
37
38
  signWith: string;
38
39
  ethereumAddress?: string;
39
- lendProvider?: LendProvider<LendConfig>;
40
+ lendProviders?: {
41
+ morpho?: LendProvider<LendProviderConfig>;
42
+ aave?: LendProvider<LendProviderConfig>;
43
+ };
40
44
  }): Promise<TurnkeyWallet>;
41
45
  protected performInitialization(): Promise<void>;
42
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TurnkeyWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAGlE;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACnC,OAAO,EAAG,OAAO,CAAA;IACjB,MAAM,EAAG,YAAY,CAAA;IAC5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAQ;IAEzC,OAAO;WAuBM,MAAM,CAAC,MAAM,EAAE;QAC1B,YAAY,EAAE,YAAY,CAAA;QAC1B,MAAM,EAAE,oBAAoB,CAAA;QAC5B,cAAc,EAAE,MAAM,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAA;QAChB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,YAAY,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;KACxC,GAAG,OAAO,CAAC,aAAa,CAAC;cAMV,qBAAqB;IAKrC;;;;;;;;OAQG;YACW,YAAY;CAQ3B"}
1
+ {"version":3,"file":"TurnkeyWallet.d.ts","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAGlE;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS;IACnC,OAAO,EAAG,OAAO,CAAA;IACjB,MAAM,EAAG,YAAY,CAAA;IAC5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAQ;IAEzC,OAAO;WA0BM,MAAM,CAAC,MAAM,EAAE;QAC1B,YAAY,EAAE,YAAY,CAAA;QAC1B,MAAM,EAAE,oBAAoB,CAAA;QAC5B,cAAc,EAAE,MAAM,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAA;QAChB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,CAAC,EAAE;YACd,MAAM,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;YACzC,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;SACxC,CAAA;KACF,GAAG,OAAO,CAAC,aAAa,CAAC;cAMV,qBAAqB;IAKrC;;;;;;;;OAQG;YACW,YAAY;CAQ3B"}
@@ -6,8 +6,8 @@ import { createSigner } from './utils/createSigner.js';
6
6
  */
7
7
  export class TurnkeyWallet extends EOAWallet {
8
8
  constructor(params) {
9
- const { chainManager, client, organizationId, signWith, ethereumAddress, lendProvider, } = params;
10
- super(chainManager, lendProvider);
9
+ const { chainManager, client, organizationId, signWith, ethereumAddress, lendProviders, } = params;
10
+ super(chainManager, lendProviders);
11
11
  this.client = client;
12
12
  this.organizationId = organizationId;
13
13
  this.signWith = signWith;
@@ -1 +1 @@
1
- {"version":3,"file":"TurnkeyWallet.js","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6DAA6D,CAAA;AAE1F;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAuB1C,YAAoB,MAOnB;QACC,MAAM,EACJ,YAAY,EACZ,MAAM,EACN,cAAc,EACd,QAAQ,EACR,eAAe,EACf,YAAY,GACb,GAAG,MAAM,CAAA;QACV,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAOnB;QACC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IAES,KAAK,CAAC,qBAAqB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACpC,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,YAAY;QACxB,OAAO,YAAY,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"TurnkeyWallet.js","sourceRoot":"","sources":["../../../../../../src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6DAA6D,CAAA;AAE1F;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IAuB1C,YAAoB,MAUnB;QACC,MAAM,EACJ,YAAY,EACZ,MAAM,EACN,cAAc,EACd,QAAQ,EACR,eAAe,EACf,aAAa,GACd,GAAG,MAAM,CAAA;QACV,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAUnB;QACC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;QACzB,OAAO,MAAM,CAAA;IACf,CAAC;IAES,KAAK,CAAC,qBAAqB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IACpC,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,YAAY;QACxB,OAAO,YAAY,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAA;IACJ,CAAC;CACF"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/ethereum-optimism/actions/issues"
11
11
  },
12
12
  "type": "module",
13
- "version": "0.0.4",
13
+ "version": "0.1.0",
14
14
  "description": "TypeScript SDK for Actions",
15
15
  "main": "dist/index.js",
16
16
  "types": "dist/index.d.ts",
@@ -45,10 +45,13 @@
45
45
  "author": "Optimism PBC",
46
46
  "license": "MIT",
47
47
  "dependencies": {
48
+ "@aave/contract-helpers": "^1.30.0",
49
+ "@aave/math-utils": "^1.30.0",
48
50
  "@eth-optimism/viem": "^0.4.13",
49
51
  "@morpho-org/blue-sdk": "^4.5.1",
50
52
  "@morpho-org/blue-sdk-viem": "^3.1.1",
51
53
  "@morpho-org/morpho-ts": "^2.4.1",
54
+ "ethers": "^5.7.2",
52
55
  "permissionless": "^0.2.54",
53
56
  "viem": "^2.24.1"
54
57
  },
@@ -7,7 +7,8 @@ import {
7
7
  createMockPrivyClient,
8
8
  getMockAuthorizationContext,
9
9
  } from '@/test/MockPrivyClient.js'
10
- import type { LendMarketConfig, MorphoLendConfig } from '@/types/lend/index.js'
10
+ import type { LendProviderConfig } from '@/types/actions.js'
11
+ import type { LendMarketConfig } from '@/types/lend/index.js'
11
12
  import { externalTest } from '@/utils/test.js'
12
13
  import { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
13
14
  import type { HostedWalletProvidersSchema } from '@/wallet/core/providers/hosted/types/index.js'
@@ -51,7 +52,7 @@ describe('Actions SDK', () => {
51
52
 
52
53
  describe('Configuration', () => {
53
54
  describe('Morpho Provider Configuration', () => {
54
- it('should create Morpho provider when provider is set to morpho', () => {
55
+ it('should create Morpho provider when morpho config is provided', () => {
55
56
  const actions = new Actions<
56
57
  TestWalletProvider['providerTypes'],
57
58
  TestWalletProvider,
@@ -60,7 +61,7 @@ describe('Actions SDK', () => {
60
61
  {
61
62
  chains: [{ chainId: unichain.id }],
62
63
  lend: {
63
- provider: 'morpho',
64
+ morpho: {},
64
65
  },
65
66
  wallet: {
66
67
  hostedWalletConfig: {
@@ -90,8 +91,7 @@ describe('Actions SDK', () => {
90
91
  expect(actions.lend.supportedChainIds()).toContain(130) // Unichain
91
92
  })
92
93
 
93
- it('should create Morpho provider with custom default slippage', () => {
94
- const customSlippage = 150
94
+ it('should create Morpho provider with empty config', () => {
95
95
  const actions = new Actions<
96
96
  TestWalletProvider['providerTypes'],
97
97
  TestWalletProvider,
@@ -100,8 +100,7 @@ describe('Actions SDK', () => {
100
100
  {
101
101
  chains: [{ chainId: unichain.id }],
102
102
  lend: {
103
- provider: 'morpho',
104
- defaultSlippage: customSlippage,
103
+ morpho: {},
105
104
  },
106
105
  wallet: {
107
106
  hostedWalletConfig: {
@@ -128,8 +127,7 @@ describe('Actions SDK', () => {
128
127
  )
129
128
 
130
129
  expect(actions.lend).toBeDefined()
131
- expect(actions.lend.config.defaultSlippage).toBe(customSlippage)
132
- expect(actions.lend.config.provider).toBe('morpho')
130
+ expect(actions.lend.supportedChainIds()).toContain(130) // Unichain
133
131
  })
134
132
 
135
133
  it('should create Morpho provider with market allowlist', () => {
@@ -160,8 +158,9 @@ describe('Actions SDK', () => {
160
158
  {
161
159
  chains: [{ chainId: unichain.id }],
162
160
  lend: {
163
- provider: 'morpho',
164
- marketAllowlist: [mockMarket],
161
+ morpho: {
162
+ marketAllowlist: [mockMarket],
163
+ },
165
164
  },
166
165
  wallet: {
167
166
  hostedWalletConfig: {
@@ -188,11 +187,9 @@ describe('Actions SDK', () => {
188
187
  )
189
188
 
190
189
  expect(actions.lend).toBeDefined()
191
- const allowlist = actions.lend.config.marketAllowlist
192
- expect(allowlist).toBeDefined()
193
- expect(allowlist).toHaveLength(1)
194
- expect(allowlist![0].address).toBe(mockMarket.address)
195
- expect(allowlist![0].name).toBe(mockMarket.name)
190
+ // Verify Morpho provider is created with market allowlist
191
+ const morphoProvider = actions['lendProviders']['morpho']
192
+ expect(morphoProvider).toBeDefined()
196
193
  })
197
194
 
198
195
  it('should create Morpho provider with multiple markets in allowlist', () => {
@@ -243,8 +240,9 @@ describe('Actions SDK', () => {
243
240
  {
244
241
  chains: [{ chainId: unichain.id }],
245
242
  lend: {
246
- provider: 'morpho',
247
- marketAllowlist: mockMarkets,
243
+ morpho: {
244
+ marketAllowlist: mockMarkets,
245
+ },
248
246
  },
249
247
  wallet: {
250
248
  hostedWalletConfig: {
@@ -271,49 +269,9 @@ describe('Actions SDK', () => {
271
269
  )
272
270
 
273
271
  expect(actions.lend).toBeDefined()
274
- const allowlist = actions.lend.config.marketAllowlist
275
- expect(allowlist).toBeDefined()
276
- expect(allowlist).toHaveLength(2)
277
- expect(allowlist![0].name).toBe('Gauntlet USDC')
278
- expect(allowlist![1].name).toBe('Test WETH Market')
279
- })
280
-
281
- it('should throw error for unsupported lending provider', () => {
282
- expect(() => {
283
- new Actions<
284
- TestWalletProvider['providerTypes'],
285
- TestWalletProvider,
286
- 'privy'
287
- >(
288
- {
289
- chains: [{ chainId: unichain.id }],
290
- lend: {
291
- provider: 'invalid' as any,
292
- },
293
- wallet: {
294
- hostedWalletConfig: {
295
- provider: {
296
- type: 'privy',
297
- config: {
298
- privyClient: createMockPrivyClient(
299
- 'test-id',
300
- 'test-secret',
301
- ),
302
- authorizationContext: getMockAuthorizationContext(),
303
- },
304
- },
305
- },
306
- smartWalletConfig: {
307
- provider: { type: 'default' },
308
- },
309
- },
310
- },
311
- {
312
- hostedWalletProviderRegistry:
313
- new TestHostedWalletProviderRegistry(),
314
- },
315
- )
316
- }).toThrow('Unsupported lending provider: invalid')
272
+ // Verify Morpho provider is created with multiple markets
273
+ const morphoProvider = actions['lendProviders']['morpho']
274
+ expect(morphoProvider).toBeDefined()
317
275
  })
318
276
 
319
277
  it('should work without lend configuration', () => {
@@ -348,16 +306,14 @@ describe('Actions SDK', () => {
348
306
  },
349
307
  )
350
308
 
351
- expect(actions['lendProvider']).toBeUndefined()
309
+ expect(actions['lendProviders']).toEqual({})
352
310
  expect(() => actions.lend).toThrow('Lend provider not configured')
353
311
  })
354
312
  })
355
313
 
356
314
  describe('Lending Configuration Types', () => {
357
315
  it('should accept valid MorphoLendConfig', () => {
358
- const config: MorphoLendConfig = {
359
- provider: 'morpho',
360
- defaultSlippage: 100,
316
+ const morphoConfig: LendProviderConfig = {
361
317
  marketAllowlist: [],
362
318
  }
363
319
 
@@ -369,7 +325,7 @@ describe('Actions SDK', () => {
369
325
  >(
370
326
  {
371
327
  chains: [{ chainId: unichain.id }],
372
- lend: config,
328
+ lend: { morpho: morphoConfig },
373
329
  wallet: {
374
330
  hostedWalletConfig: {
375
331
  provider: {
@@ -397,9 +353,7 @@ describe('Actions SDK', () => {
397
353
  })
398
354
 
399
355
  it('should accept minimal MorphoLendConfig', () => {
400
- const config: MorphoLendConfig = {
401
- provider: 'morpho',
402
- }
356
+ const morphoConfig: LendProviderConfig = {}
403
357
 
404
358
  expect(() => {
405
359
  new Actions<
@@ -409,7 +363,7 @@ describe('Actions SDK', () => {
409
363
  >(
410
364
  {
411
365
  chains: [{ chainId: unichain.id }],
412
- lend: config,
366
+ lend: { morpho: morphoConfig },
413
367
  wallet: {
414
368
  hostedWalletConfig: {
415
369
  provider: {
@@ -450,7 +404,7 @@ describe('Actions SDK', () => {
450
404
  { chainId: 84532 }, // Base Sepolia
451
405
  ],
452
406
  lend: {
453
- provider: 'morpho',
407
+ morpho: {},
454
408
  },
455
409
  wallet: {
456
410
  hostedWalletConfig: {
@@ -493,8 +447,7 @@ describe('Actions SDK', () => {
493
447
  {
494
448
  chains: [{ chainId: unichain.id }],
495
449
  lend: {
496
- provider: 'morpho',
497
- defaultSlippage: 50,
450
+ morpho: {},
498
451
  },
499
452
  wallet: {
500
453
  hostedWalletConfig: {
@@ -546,10 +499,7 @@ describe('Actions SDK', () => {
546
499
  chainId: unichain.id,
547
500
  },
548
501
  ],
549
- lend: {
550
- provider: 'morpho',
551
- defaultSlippage: 50,
552
- },
502
+ lend: {},
553
503
  wallet: {
554
504
  hostedWalletConfig: {
555
505
  provider: {
@@ -601,10 +551,7 @@ describe('Actions SDK', () => {
601
551
  chainId: unichain.id,
602
552
  },
603
553
  ],
604
- lend: {
605
- provider: 'morpho',
606
- defaultSlippage: 50,
607
- },
554
+ lend: {},
608
555
  wallet: {
609
556
  hostedWalletConfig: {
610
557
  provider: {
@@ -689,10 +636,7 @@ describe('Actions SDK', () => {
689
636
  chainId: unichain.id,
690
637
  },
691
638
  ],
692
- lend: {
693
- provider: 'morpho',
694
- defaultSlippage: 50,
695
- },
639
+ lend: {},
696
640
  wallet: {
697
641
  hostedWalletConfig: {
698
642
  provider: {
@@ -752,10 +696,7 @@ describe('Actions SDK', () => {
752
696
  chainId: unichain.id,
753
697
  },
754
698
  ],
755
- lend: {
756
- provider: 'morpho',
757
- defaultSlippage: 50,
758
- },
699
+ lend: {},
759
700
  wallet: {
760
701
  hostedWalletConfig: {
761
702
  provider: {
@@ -807,8 +748,7 @@ describe('Actions SDK', () => {
807
748
  },
808
749
  ],
809
750
  lend: {
810
- provider: 'morpho',
811
- defaultSlippage: 50,
751
+ morpho: {},
812
752
  },
813
753
  wallet: {
814
754
  hostedWalletConfig: {
@@ -859,8 +799,7 @@ describe('Actions SDK', () => {
859
799
  },
860
800
  ],
861
801
  lend: {
862
- provider: 'morpho',
863
- defaultSlippage: 50,
802
+ morpho: {},
864
803
  },
865
804
  wallet: {
866
805
  hostedWalletConfig: {
package/src/actions.ts CHANGED
@@ -1,9 +1,14 @@
1
- import { DEFAULT_ACTIONS_CONFIG } from '@/constants/config.js'
2
- import { MorphoLendProvider } from '@/lend/index.js'
1
+ import type { LendProvider } from '@/lend/index.js'
2
+ import { AaveLendProvider, MorphoLendProvider } from '@/lend/index.js'
3
3
  import { ActionsLendNamespace } from '@/lend/namespaces/ActionsLendNamespace.js'
4
4
  import { ChainManager } from '@/services/ChainManager.js'
5
- import type { ActionsConfig } from '@/types/actions.js'
6
- import type { LendConfig, LendProvider } from '@/types/lend/index.js'
5
+ import { SUPPORTED_TOKENS } from '@/supported/tokens.js'
6
+ import type {
7
+ ActionsConfig,
8
+ AssetsConfig,
9
+ LendProviderConfig,
10
+ } from '@/types/actions.js'
11
+ import type { Asset } from '@/types/asset.js'
7
12
  import { WalletNamespace } from '@/wallet/core/namespace/WalletNamespace.js'
8
13
  import type { HostedWalletProvider } from '@/wallet/core/providers/hosted/abstract/HostedWalletProvider.js'
9
14
  import type { HostedWalletProviderRegistry } from '@/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js'
@@ -38,8 +43,12 @@ export class Actions<
38
43
  SmartWalletProvider
39
44
  >
40
45
  private chainManager: ChainManager
41
- private _lend?: ActionsLendNamespace<LendConfig>
42
- private _lendProvider?: LendProvider<LendConfig>
46
+ private _lend?: ActionsLendNamespace
47
+ private _lendProviders: {
48
+ morpho?: LendProvider<LendProviderConfig>
49
+ aave?: LendProvider<LendProviderConfig>
50
+ } = {}
51
+ private _assetsConfig?: AssetsConfig
43
52
  private hostedWalletProvider!: THostedWalletProvidersSchema['providerInstances'][THostedWalletProviderType]
44
53
  private smartWalletProvider!: SmartWalletProvider
45
54
  private hostedWalletProviderRegistry: HostedWalletProviderRegistry<
@@ -62,24 +71,27 @@ export class Actions<
62
71
  ) {
63
72
  this.chainManager = new ChainManager(config.chains)
64
73
  this.hostedWalletProviderRegistry = deps.hostedWalletProviderRegistry
74
+ this._assetsConfig = config.assets
65
75
 
66
- // Create lending provider if configured
76
+ // Create lending providers if configured
67
77
  if (config.lend) {
68
- if (config.lend.provider === 'morpho') {
69
- this._lendProvider = new MorphoLendProvider(
70
- {
71
- ...config.lend,
72
- defaultSlippage:
73
- config.lend.defaultSlippage ??
74
- DEFAULT_ACTIONS_CONFIG.lend.defaultSlippage,
75
- },
78
+ if (config.lend.morpho) {
79
+ this._lendProviders.morpho = new MorphoLendProvider(
80
+ config.lend.morpho,
76
81
  this.chainManager,
77
82
  )
83
+ }
84
+
85
+ if (config.lend.aave) {
86
+ this._lendProviders.aave = new AaveLendProvider(
87
+ config.lend.aave,
88
+ this.chainManager,
89
+ )
90
+ }
78
91
 
79
- // Create read-only lend namespace
80
- this._lend = new ActionsLendNamespace(this._lendProvider!)
81
- } else {
82
- throw new Error(`Unsupported lending provider: ${config.lend.provider}`)
92
+ // Create lend namespace if any providers are configured
93
+ if (this._lendProviders.morpho || this._lendProviders.aave) {
94
+ this._lend = new ActionsLendNamespace(this._lendProviders)
83
95
  }
84
96
  }
85
97
 
@@ -93,7 +105,7 @@ export class Actions<
93
105
  * @returns ActionsLendNamespace for lending operations
94
106
  * @throws Error if lend provider not configured
95
107
  */
96
- get lend(): ActionsLendNamespace<LendConfig> {
108
+ get lend(): ActionsLendNamespace {
97
109
  if (!this._lend) {
98
110
  throw new Error(
99
111
  'Lend provider not configured. Please add lend configuration to ActionsConfig.',
@@ -103,11 +115,50 @@ export class Actions<
103
115
  }
104
116
 
105
117
  /**
106
- * Get the lend provider instance
107
- * @returns LendProvider instance if configured, undefined otherwise
118
+ * Get the lend provider instances
119
+ * @returns Object containing configured lend providers
120
+ */
121
+ get lendProviders(): {
122
+ morpho?: LendProvider<LendProviderConfig>
123
+ aave?: LendProvider<LendProviderConfig>
124
+ } {
125
+ return this._lendProviders
126
+ }
127
+
128
+ /**
129
+ * Get the list of supported assets based on configuration
130
+ * @description Returns filtered assets based on allow/block lists in assets config.
131
+ * If no config provided, returns all SUPPORTED_TOKENS.
132
+ * @returns Array of supported assets
108
133
  */
109
- get lendProvider(): LendProvider<LendConfig> | undefined {
110
- return this._lendProvider
134
+ public getSupportedAssets(): Asset[] {
135
+ // If no assets config, return all supported tokens
136
+ if (!this._assetsConfig) {
137
+ return SUPPORTED_TOKENS
138
+ }
139
+
140
+ // If allow list provided, return only those
141
+ if (this._assetsConfig.allow && this._assetsConfig.allow.length > 0) {
142
+ return this._assetsConfig.allow
143
+ }
144
+
145
+ // If block list provided, filter out blocked assets
146
+ if (this._assetsConfig.block && this._assetsConfig.block.length > 0) {
147
+ const blockedAddresses = new Set(
148
+ this._assetsConfig.block.flatMap((asset) =>
149
+ Object.values(asset.address).map((addr) => addr.toLowerCase()),
150
+ ),
151
+ )
152
+ return SUPPORTED_TOKENS.filter((token) => {
153
+ const tokenAddresses = Object.values(token.address).map((addr) =>
154
+ addr.toLowerCase(),
155
+ )
156
+ return !tokenAddresses.some((addr) => blockedAddresses.has(addr))
157
+ })
158
+ }
159
+
160
+ // Default to all supported tokens
161
+ return SUPPORTED_TOKENS
111
162
  }
112
163
 
113
164
  /**
@@ -141,7 +192,11 @@ export class Actions<
141
192
  )
142
193
  }
143
194
  this.hostedWalletProvider = factory.create(
144
- { chainManager: this.chainManager, lendProvider: this.lendProvider },
195
+ {
196
+ chainManager: this.chainManager,
197
+ lendProviders: this._lendProviders,
198
+ supportedAssets: this.getSupportedAssets(),
199
+ },
145
200
  options,
146
201
  )
147
202
 
@@ -151,7 +206,8 @@ export class Actions<
151
206
  ) {
152
207
  this.smartWalletProvider = new DefaultSmartWalletProvider(
153
208
  this.chainManager,
154
- this.lendProvider,
209
+ this._lendProviders,
210
+ this.getSupportedAssets(),
155
211
  config.smartWalletConfig.provider.attributionSuffix,
156
212
  )
157
213
  } else {
package/src/index.ts CHANGED
@@ -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,9 +2,9 @@ import type { Address } from 'viem'
2
2
  import { parseUnits } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import type { LendProviderConfig } from '@/types/actions.js'
5
6
  import type { Asset } from '@/types/asset.js'
6
7
  import type {
7
- BaseLendConfig,
8
8
  ClosePositionParams,
9
9
  GetLendMarketParams,
10
10
  GetLendMarketsParams,
@@ -25,7 +25,7 @@ import { validateMarketAsset } from '@/utils/markets.js'
25
25
  * @description Base class for lending provider implementations
26
26
  */
27
27
  export abstract class LendProvider<
28
- TConfig extends BaseLendConfig = BaseLendConfig,
28
+ TConfig extends LendProviderConfig = LendProviderConfig,
29
29
  > {
30
30
  /** Lending provider configuration */
31
31
  protected readonly _config: TConfig
@@ -237,7 +237,7 @@ export abstract class LendProvider<
237
237
  }
238
238
 
239
239
  const foundMarket = this._config.marketAllowlist.find(
240
- (allowedMarket) =>
240
+ (allowedMarket: LendMarketConfig) =>
241
241
  allowedMarket.address.toLowerCase() ===
242
242
  marketId.address.toLowerCase() &&
243
243
  allowedMarket.chainId === marketId.chainId,
@@ -262,8 +262,9 @@ export abstract class LendProvider<
262
262
  ): LendMarketConfig[] {
263
263
  let configs = this._config.marketAllowlist || []
264
264
  if (chainId !== undefined)
265
- configs = configs.filter((m) => m.chainId === chainId)
266
- if (asset !== undefined) configs = configs.filter((m) => m.asset === asset)
265
+ configs = configs.filter((m: LendMarketConfig) => m.chainId === chainId)
266
+ if (asset !== undefined)
267
+ configs = configs.filter((m: LendMarketConfig) => m.asset === asset)
267
268
  return configs
268
269
  }
269
270