@eth-optimism/actions-sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/dist/__mocks__/MockAssets.d.ts +17 -2
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -1
  3. package/dist/__mocks__/MockAssets.js +49 -4
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -5
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +23 -9
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +68 -36
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +217 -2
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +744 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/contracts.d.ts +4 -0
  16. package/dist/constants/contracts.d.ts.map +1 -0
  17. package/dist/constants/contracts.js +3 -0
  18. package/dist/constants/contracts.js.map +1 -0
  19. package/dist/constants/providers.d.ts +6 -0
  20. package/dist/constants/providers.d.ts.map +1 -0
  21. package/dist/constants/providers.js +6 -0
  22. package/dist/constants/providers.js.map +1 -0
  23. package/dist/constants/supportedChains.d.ts +2 -2
  24. package/dist/constants/supportedChains.d.ts.map +1 -1
  25. package/dist/constants/supportedChains.js +12 -2
  26. package/dist/constants/supportedChains.js.map +1 -1
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  32. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  33. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  34. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  35. package/dist/lend/core/LendProvider.d.ts +12 -14
  36. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  37. package/dist/lend/core/LendProvider.js +16 -31
  38. package/dist/lend/core/LendProvider.js.map +1 -1
  39. package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
  40. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  41. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  42. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  43. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  44. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  45. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  46. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  47. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  49. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  50. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  51. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  52. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  53. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  54. package/dist/lend/providers/aave/addresses.js +65 -60
  55. package/dist/lend/providers/aave/addresses.js.map +1 -1
  56. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  57. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  58. package/dist/lend/providers/aave/sdk.js +6 -28
  59. package/dist/lend/providers/aave/sdk.js.map +1 -1
  60. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  63. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  64. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  65. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  66. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
  67. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  68. package/dist/lend/providers/morpho/api.d.ts +3 -3
  69. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  70. package/dist/lend/providers/morpho/api.js +2 -2
  71. package/dist/lend/providers/morpho/api.js.map +1 -1
  72. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  73. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  74. package/dist/lend/providers/morpho/contracts.js +43 -10
  75. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  76. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  77. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  78. package/dist/lend/providers/morpho/sdk.js +67 -54
  79. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  80. package/dist/nodeActionsFactory.d.ts +1 -1
  81. package/dist/reactActionsFactory.d.ts +1 -1
  82. package/dist/services/ChainManager.d.ts +8 -8
  83. package/dist/services/ChainManager.d.ts.map +1 -1
  84. package/dist/services/ChainManager.js.map +1 -1
  85. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  86. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  87. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  88. package/dist/services/tokenBalance.d.ts +1 -1
  89. package/dist/services/tokenBalance.d.ts.map +1 -1
  90. package/dist/services/tokenBalance.js +31 -30
  91. package/dist/services/tokenBalance.js.map +1 -1
  92. package/dist/services/tokenBalance.spec.js +20 -24
  93. package/dist/services/tokenBalance.spec.js.map +1 -1
  94. package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
  95. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  96. package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
  97. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  98. package/dist/swap/core/SwapProvider.d.ts +145 -0
  99. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  100. package/dist/swap/core/SwapProvider.js +359 -0
  101. package/dist/swap/core/SwapProvider.js.map +1 -0
  102. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  103. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  104. package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
  105. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  106. package/dist/swap/core/markets.d.ts +47 -0
  107. package/dist/swap/core/markets.d.ts.map +1 -0
  108. package/dist/swap/core/markets.js +65 -0
  109. package/dist/swap/core/markets.js.map +1 -0
  110. package/dist/swap/index.d.ts +9 -0
  111. package/dist/swap/index.d.ts.map +1 -0
  112. package/dist/swap/index.js +9 -0
  113. package/dist/swap/index.js.map +1 -0
  114. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  115. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  116. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  117. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  118. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
  119. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  120. package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
  121. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  122. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
  123. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  124. package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
  125. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  126. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  127. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
  129. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  131. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
  133. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
  135. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
  137. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  139. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  140. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
  141. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  142. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  143. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  144. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  145. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  146. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  147. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  148. package/dist/swap/providers/uniswap/abis.js +138 -0
  149. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  150. package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  152. package/dist/swap/providers/uniswap/addresses.js +81 -0
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  154. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  155. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  156. package/dist/swap/providers/uniswap/encoding.js +233 -0
  157. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  159. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  160. package/dist/swap/providers/uniswap/markets.js +48 -0
  161. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  162. package/dist/swap/providers/uniswap/types.d.ts +21 -0
  163. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  164. package/dist/swap/providers/uniswap/types.js +2 -0
  165. package/dist/swap/providers/uniswap/types.js.map +1 -0
  166. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  167. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  169. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  181. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  190. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  191. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  193. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  194. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  195. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/abis.js +257 -0
  197. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  198. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  199. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/addresses.js +57 -0
  201. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  202. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  203. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/config.js +29 -0
  205. package/dist/swap/providers/velodrome/config.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  207. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  209. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  211. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  213. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  215. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  217. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  226. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  227. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  229. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  230. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  231. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/markets.js +69 -0
  233. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  234. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  235. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  236. package/dist/swap/providers/velodrome/types.js +2 -0
  237. package/dist/swap/providers/velodrome/types.js.map +1 -0
  238. package/dist/types/actions.d.ts +60 -11
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types/asset.d.ts +7 -9
  241. package/dist/types/asset.d.ts.map +1 -1
  242. package/dist/types/chain.d.ts +2 -2
  243. package/dist/types/chain.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +2 -0
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/lend/base.d.ts +9 -19
  249. package/dist/types/lend/base.d.ts.map +1 -1
  250. package/dist/types/lend/base.js.map +1 -1
  251. package/dist/types/lend/contracts.d.ts +2 -1
  252. package/dist/types/lend/contracts.d.ts.map +1 -1
  253. package/dist/types/providers.d.ts +21 -0
  254. package/dist/types/providers.d.ts.map +1 -0
  255. package/dist/types/providers.js +2 -0
  256. package/dist/types/providers.js.map +1 -0
  257. package/dist/types/swap/base.d.ts +338 -0
  258. package/dist/types/swap/base.d.ts.map +1 -0
  259. package/dist/types/swap/base.js +4 -0
  260. package/dist/types/swap/base.js.map +1 -0
  261. package/dist/types/swap/index.d.ts +2 -0
  262. package/dist/types/swap/index.d.ts.map +1 -0
  263. package/dist/types/swap/index.js +2 -0
  264. package/dist/types/swap/index.js.map +1 -0
  265. package/dist/types/transaction.d.ts +14 -0
  266. package/dist/types/transaction.d.ts.map +1 -0
  267. package/dist/types/transaction.js +2 -0
  268. package/dist/types/transaction.js.map +1 -0
  269. package/dist/utils/approve.d.ts +82 -0
  270. package/dist/utils/approve.d.ts.map +1 -0
  271. package/dist/utils/approve.js +134 -0
  272. package/dist/utils/approve.js.map +1 -0
  273. package/dist/utils/approve.test.d.ts +2 -0
  274. package/dist/utils/approve.test.d.ts.map +1 -0
  275. package/dist/utils/approve.test.js +203 -0
  276. package/dist/utils/approve.test.js.map +1 -0
  277. package/dist/utils/assets.d.ts +10 -5
  278. package/dist/utils/assets.d.ts.map +1 -1
  279. package/dist/utils/assets.js +14 -11
  280. package/dist/utils/assets.js.map +1 -1
  281. package/dist/utils/assets.test.js +13 -1
  282. package/dist/utils/assets.test.js.map +1 -1
  283. package/dist/utils/validateAddresses.d.ts +32 -0
  284. package/dist/utils/validateAddresses.d.ts.map +1 -0
  285. package/dist/utils/validateAddresses.js +103 -0
  286. package/dist/utils/validateAddresses.js.map +1 -0
  287. package/dist/utils/validateAddresses.test.d.ts +2 -0
  288. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  289. package/dist/utils/validateAddresses.test.js +314 -0
  290. package/dist/utils/validateAddresses.test.js.map +1 -0
  291. package/dist/utils/validation.d.ts +12 -0
  292. package/dist/utils/validation.d.ts.map +1 -0
  293. package/dist/utils/validation.js +44 -0
  294. package/dist/utils/validation.js.map +1 -0
  295. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  296. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  297. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  298. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  299. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  300. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  301. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
  302. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  303. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  304. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  305. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
  306. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  307. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
  308. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  309. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  310. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  311. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
  312. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  313. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
  314. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  315. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
  316. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  317. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  318. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  319. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  320. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  321. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  322. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  323. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
  324. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  325. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  326. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  327. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  328. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
  329. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  330. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  331. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  332. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  333. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  334. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
  335. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  336. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  337. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  338. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
  339. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  341. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
  343. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  344. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  345. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  346. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
  347. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  348. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  349. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  350. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
  351. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  352. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
  353. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  354. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
  355. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  356. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
  357. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
  359. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  360. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
  361. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
  363. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  364. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
  365. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  366. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  367. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  368. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  369. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  370. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  371. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  372. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
  373. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  374. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  375. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  376. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  377. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  378. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  379. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
  380. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  381. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  382. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  383. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
  384. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  385. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  386. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  387. package/package.json +4 -3
  388. package/src/__mocks__/MockAssets.ts +54 -4
  389. package/src/__tests__/actions.test.ts +1 -5
  390. package/src/actions.ts +106 -71
  391. package/src/constants/assets.ts +792 -5
  392. package/src/constants/contracts.ts +5 -0
  393. package/src/constants/providers.ts +5 -0
  394. package/src/constants/supportedChains.ts +22 -2
  395. package/src/index.ts +76 -6
  396. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  397. package/src/lend/core/LendProvider.ts +28 -41
  398. package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
  399. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  400. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  401. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  402. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  403. package/src/lend/providers/aave/addresses.ts +82 -64
  404. package/src/lend/providers/aave/sdk.ts +11 -36
  405. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  406. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  407. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
  408. package/src/lend/providers/morpho/api.ts +7 -4
  409. package/src/lend/providers/morpho/contracts.ts +62 -13
  410. package/src/lend/providers/morpho/sdk.ts +85 -54
  411. package/src/services/ChainManager.ts +12 -21
  412. package/src/services/__mocks__/MockChainManager.ts +4 -7
  413. package/src/services/tokenBalance.spec.ts +20 -24
  414. package/src/services/tokenBalance.ts +39 -33
  415. package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
  416. package/src/swap/core/SwapProvider.ts +577 -0
  417. package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
  418. package/src/swap/core/markets.ts +104 -0
  419. package/src/swap/index.ts +19 -0
  420. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  421. package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
  422. package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
  423. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
  424. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
  425. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
  426. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  427. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
  428. package/src/swap/providers/uniswap/abis.ts +144 -0
  429. package/src/swap/providers/uniswap/addresses.ts +110 -0
  430. package/src/swap/providers/uniswap/encoding.ts +406 -0
  431. package/src/swap/providers/uniswap/markets.ts +84 -0
  432. package/src/swap/providers/uniswap/types.ts +25 -0
  433. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  434. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  435. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  436. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  437. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  438. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  439. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  440. package/src/swap/providers/velodrome/abis.ts +264 -0
  441. package/src/swap/providers/velodrome/addresses.ts +107 -0
  442. package/src/swap/providers/velodrome/config.ts +46 -0
  443. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  444. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  445. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  446. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  447. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  448. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  449. package/src/swap/providers/velodrome/markets.ts +100 -0
  450. package/src/swap/providers/velodrome/types.ts +30 -0
  451. package/src/types/actions.ts +68 -12
  452. package/src/types/asset.ts +12 -9
  453. package/src/types/chain.ts +2 -2
  454. package/src/types/index.ts +2 -0
  455. package/src/types/lend/base.ts +10 -20
  456. package/src/types/lend/contracts.ts +5 -1
  457. package/src/types/providers.ts +22 -0
  458. package/src/types/swap/base.ts +372 -0
  459. package/src/types/swap/index.ts +1 -0
  460. package/src/types/transaction.ts +14 -0
  461. package/src/utils/approve.test.ts +258 -0
  462. package/src/utils/approve.ts +197 -0
  463. package/src/utils/assets.test.ts +16 -1
  464. package/src/utils/assets.ts +27 -10
  465. package/src/utils/validateAddresses.test.ts +439 -0
  466. package/src/utils/validateAddresses.ts +153 -0
  467. package/src/utils/validation.ts +76 -0
  468. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  469. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  470. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
  471. package/src/wallet/core/providers/hosted/types/index.ts +9 -7
  472. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
  473. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
  474. package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
  475. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  476. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  477. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
  478. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  479. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
  480. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
  481. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  482. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
  483. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
  484. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
  485. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
  486. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
  487. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
  488. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
  489. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
  490. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
  491. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  492. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
  493. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  494. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
  495. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
  496. package/dist/supported/tokens.d.ts +0 -25
  497. package/dist/supported/tokens.d.ts.map +0 -1
  498. package/dist/supported/tokens.js +0 -37
  499. package/dist/supported/tokens.js.map +0 -1
  500. package/src/supported/tokens.ts +0 -52
@@ -0,0 +1,5 @@
1
+ import type { Address } from 'viem'
2
+
3
+ /** Permit2 is deployed to the same address on all chains */
4
+ export const PERMIT2_ADDRESS: Address =
5
+ '0x000000000022D473030F116dDEE9F6B43aC78BA3'
@@ -0,0 +1,5 @@
1
+ /** Provider identifiers — must match keys in SwapProviders/LendProviders types */
2
+ export const UNISWAP = 'uniswap' as const
3
+ export const VELODROME = 'velodrome' as const
4
+ export const AAVE = 'aave' as const
5
+ export const MORPHO = 'morpho' as const
@@ -1,16 +1,26 @@
1
1
  import {
2
2
  base,
3
3
  baseSepolia,
4
+ bob,
5
+ celo,
6
+ fraxtal,
7
+ ink,
8
+ lisk,
4
9
  mainnet,
10
+ metalL2,
11
+ mode,
5
12
  optimism,
6
13
  optimismSepolia,
7
14
  sepolia,
15
+ soneium,
16
+ superseed,
17
+ swellchain,
8
18
  unichain,
9
19
  unichainSepolia,
10
20
  worldchain,
11
21
  } from 'viem/chains'
12
22
 
13
- export const SUPPORTED_CHAIN_IDS = [
23
+ export const ACTIONS_SUPPORTED_CHAIN_IDS = [
14
24
  mainnet.id,
15
25
  sepolia.id,
16
26
  optimism.id,
@@ -20,6 +30,16 @@ export const SUPPORTED_CHAIN_IDS = [
20
30
  unichain.id,
21
31
  unichainSepolia.id,
22
32
  worldchain.id,
33
+ bob.id,
34
+ celo.id,
35
+ fraxtal.id,
36
+ ink.id,
37
+ lisk.id,
38
+ metalL2.id,
39
+ mode.id,
40
+ soneium.id,
41
+ superseed.id,
42
+ swellchain.id,
23
43
  ] as const
24
44
 
25
- export type SupportedChainId = (typeof SUPPORTED_CHAIN_IDS)[number]
45
+ export type SupportedChainId = (typeof ACTIONS_SUPPORTED_CHAIN_IDS)[number]
package/src/index.ts CHANGED
@@ -1,13 +1,67 @@
1
1
  export type { Actions } from '@/actions.js'
2
- export { ETH, MORPHO, USDC, USDC_DEMO, WETH } from '@/constants/assets.js'
3
- export type { SupportedChainId } from '@/constants/supportedChains.js'
2
+ export {
3
+ AAVE,
4
+ ARB,
5
+ BAL,
6
+ CBBTC,
7
+ CBETH,
8
+ COMP,
9
+ CRV,
10
+ DAI,
11
+ EETH,
12
+ ENA,
13
+ ENS,
14
+ ETH,
15
+ ETHFI,
16
+ FRAX,
17
+ GRT,
18
+ LDO,
19
+ LINK,
20
+ MKR,
21
+ MORPHO,
22
+ NATIVELY_SUPPORTED_ASSETS,
23
+ ONDO,
24
+ ONEINCH,
25
+ OP,
26
+ OP_DEMO,
27
+ PENDLE,
28
+ PEPE,
29
+ POL,
30
+ PYUSD,
31
+ RENDER,
32
+ RETH,
33
+ RPL,
34
+ SHIB,
35
+ SKY,
36
+ SNX,
37
+ STETH,
38
+ SUSHI,
39
+ UNI,
40
+ USDC,
41
+ USDC_DEMO,
42
+ USDE,
43
+ USDT,
44
+ WBTC,
45
+ WEETH,
46
+ WETH,
47
+ WLD,
48
+ WSTETH,
49
+ } from '@/constants/assets.js'
50
+ export {
51
+ ACTIONS_SUPPORTED_CHAIN_IDS,
52
+ type SupportedChainId,
53
+ } from '@/constants/supportedChains.js'
4
54
  export * from '@/core/error/errors.js'
5
55
  export { LendProvider, MorphoLendProvider } from '@/lend/index.js'
6
56
  export {
7
- getTokenAddress,
8
- getTokenBySymbol,
9
- SUPPORTED_TOKENS,
10
- } from '@/supported/tokens.js'
57
+ SwapProvider,
58
+ type UniswapMarketConfig,
59
+ UniswapSwapProvider,
60
+ type UniswapSwapProviderConfig,
61
+ type VelodromeMarketConfig,
62
+ VelodromeSwapProvider,
63
+ type VelodromeSwapProviderConfig,
64
+ } from '@/swap/index.js'
11
65
  export type {
12
66
  ActionsConfig,
13
67
  ApyBreakdown,
@@ -24,10 +78,26 @@ export type {
24
78
  LendProviderConfig,
25
79
  LendTransaction,
26
80
  LendTransactionReceipt,
81
+ SwapConfig,
82
+ SwapExecuteParams,
83
+ SwapMarket,
84
+ SwapMarketConfig,
85
+ SwapMarketId,
86
+ SwapProviderConfig,
87
+ SwapProviderName,
88
+ SwapQuote,
89
+ SwapQuoteExecution,
90
+ SwapQuoteParams,
91
+ SwapReceipt,
92
+ SwapRoute,
93
+ SwapRoutingStrategy,
94
+ SwapSettings,
95
+ SwapTransaction,
27
96
  TokenBalance,
28
97
  TransactionData,
29
98
  UserOperationTransactionReceipt,
30
99
  WalletConfig,
100
+ WalletSwapParams,
31
101
  } from '@/types/index.js'
32
102
  export { getAssetAddress, isAssetSupportedOnChain } from '@/utils/assets.js'
33
103
  export { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
@@ -59,8 +59,6 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
59
59
  ) => Promise<LendTransaction>
60
60
  >
61
61
 
62
- protected readonly SUPPORTED_CHAIN_IDS = [1, 130, 8453, 84532] as const
63
-
64
62
  protected readonly SUPPORTED_CHAINS = {
65
63
  TESTNET: {
66
64
  chainId: 84532,
@@ -70,6 +68,10 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
70
68
 
71
69
  private mockConfig: MockLendProviderConfig
72
70
 
71
+ protocolSupportedChainIds(): number[] {
72
+ return [1, 130, 8453, 84532]
73
+ }
74
+
73
75
  constructor(
74
76
  config?: LendProviderConfig,
75
77
  mockConfig?: Partial<MockLendProviderConfig>,
@@ -77,7 +79,10 @@ export class MockLendProvider extends LendProvider<LendProviderConfig> {
77
79
  ) {
78
80
  super(
79
81
  config || {},
80
- chainManager || (new MockChainManager() as unknown as ChainManager),
82
+ chainManager ||
83
+ (new MockChainManager({
84
+ supportedChains: [84532],
85
+ }) as unknown as ChainManager),
81
86
  )
82
87
 
83
88
  this.mockConfig = {
@@ -1,7 +1,8 @@
1
1
  import type { Address } from 'viem'
2
- import { encodeFunctionData, erc20Abi, parseUnits } from 'viem'
2
+ import { parseUnits } from 'viem'
3
3
 
4
4
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
+ import { ACTIONS_SUPPORTED_CHAIN_IDS } from '@/constants/supportedChains.js'
5
6
  import type { ChainManager } from '@/services/ChainManager.js'
6
7
  import type { LendProviderConfig } from '@/types/actions.js'
7
8
  import type { Asset } from '@/types/asset.js'
@@ -20,7 +21,9 @@ import type {
20
21
  LendTransaction,
21
22
  TransactionData,
22
23
  } from '@/types/lend/index.js'
24
+ import { buildErc20ApprovalTx } from '@/utils/approve.js'
23
25
  import { validateMarketAsset } from '@/utils/markets.js'
26
+ import { validateChainSupported } from '@/utils/validation.js'
24
27
 
25
28
  /**
26
29
  * Lending provider abstract class
@@ -35,12 +38,6 @@ export abstract class LendProvider<
35
38
  /** Chain manager for blockchain interactions */
36
39
  protected readonly chainManager: ChainManager
37
40
 
38
- /**
39
- * Supported chain IDs
40
- * @description Array of chain IDs that this provider supports
41
- */
42
- protected abstract readonly SUPPORTED_CHAIN_IDS: readonly number[]
43
-
44
41
  /**
45
42
  * Create a new lending provider
46
43
  * @param config - Provider-specific lending configuration
@@ -56,12 +53,27 @@ export abstract class LendProvider<
56
53
  }
57
54
 
58
55
  /**
59
- * Get supported chain IDs
60
- * @description Returns an array of chain IDs that this provider supports
61
- * @returns Array of supported chain IDs
56
+ * Chain IDs supported by the underlying protocol.
57
+ * @description Each provider implements this to declare the chains its protocol
58
+ * is deployed on, without any SDK-level or developer-config filtering.
59
+ * @returns Array of chain IDs the protocol natively supports
60
+ */
61
+ abstract protocolSupportedChainIds(): number[]
62
+
63
+ /**
64
+ * Effective supported chain IDs.
65
+ * @description Intersection of the protocol's supported chains,
66
+ * the Actions SDK's known chains, and the developer's ActionsConfig.chains.
67
+ * All validation in public methods uses this set.
68
+ * @returns Array of chain IDs usable through this provider instance
62
69
  */
63
70
  supportedChainIds(): number[] {
64
- return [...this.SUPPORTED_CHAIN_IDS]
71
+ const configuredChains = this.chainManager.getSupportedChains()
72
+ return this.protocolSupportedChainIds().filter(
73
+ (id) =>
74
+ (ACTIONS_SUPPORTED_CHAIN_IDS as readonly number[]).includes(id) &&
75
+ (configuredChains as number[]).includes(id),
76
+ )
65
77
  }
66
78
 
67
79
  /**
@@ -77,7 +89,6 @@ export abstract class LendProvider<
77
89
  throw new Error('walletAddress is required')
78
90
  }
79
91
 
80
- this.validateProviderSupported(params.marketId.chainId)
81
92
  this.validateConfigSupported(params.marketId)
82
93
 
83
94
  // Convert human-readable amount to wei using the asset's decimals
@@ -105,7 +116,6 @@ export abstract class LendProvider<
105
116
  chainId: params.chainId,
106
117
  }
107
118
 
108
- this.validateProviderSupported(params.chainId)
109
119
  this.validateConfigSupported(marketId)
110
120
  return this._getMarket(marketId)
111
121
  }
@@ -117,7 +127,7 @@ export abstract class LendProvider<
117
127
  */
118
128
  async getMarkets(params: GetLendMarketsParams = {}): Promise<LendMarket[]> {
119
129
  if (params.chainId !== undefined)
120
- this.validateProviderSupported(params.chainId)
130
+ validateChainSupported(params.chainId, this.supportedChainIds())
121
131
 
122
132
  const filteredMarkets = this.filterMarketConfigs(
123
133
  params.chainId,
@@ -156,7 +166,6 @@ export abstract class LendProvider<
156
166
  )
157
167
  }
158
168
 
159
- this.validateProviderSupported(marketId.chainId)
160
169
  this.validateConfigSupported(marketId)
161
170
 
162
171
  return this._getPosition({ marketId, walletAddress })
@@ -176,7 +185,6 @@ export abstract class LendProvider<
176
185
  throw new Error('walletAddress is required')
177
186
  }
178
187
 
179
- this.validateProviderSupported(params.marketId.chainId)
180
188
  this.validateConfigSupported(params.marketId)
181
189
 
182
190
  const market = await this.getMarket({
@@ -214,20 +222,7 @@ export abstract class LendProvider<
214
222
  * @returns true if chain is supported, false otherwise
215
223
  */
216
224
  protected isChainSupported(chainId: number): boolean {
217
- return this.SUPPORTED_CHAIN_IDS.includes(chainId)
218
- }
219
-
220
- /**
221
- * Validate that a chainId is supported for lending operations
222
- * @param chainId - Chain ID to validate
223
- * @throws Error if chain is not supported
224
- */
225
- protected validateProviderSupported(chainId: number): void {
226
- if (!this.isChainSupported(chainId)) {
227
- throw new Error(
228
- `Chain ${chainId} is not supported. Supported chains: ${this.SUPPORTED_CHAIN_IDS.join(', ')}`,
229
- )
230
- }
225
+ return this.supportedChainIds().includes(chainId)
231
226
  }
232
227
 
233
228
  /**
@@ -236,6 +231,8 @@ export abstract class LendProvider<
236
231
  * @throws Error if market allowlist is configured but market is not in it
237
232
  */
238
233
  protected validateConfigSupported(marketId: LendMarketId): void {
234
+ validateChainSupported(marketId.chainId, this.supportedChainIds())
235
+
239
236
  if (
240
237
  !this._config.marketAllowlist ||
241
238
  this._config.marketAllowlist.length === 0
@@ -287,17 +284,7 @@ export abstract class LendProvider<
287
284
  spender: Address,
288
285
  amount: bigint,
289
286
  ): TransactionData {
290
- const approvalCallData = encodeFunctionData({
291
- abi: erc20Abi,
292
- functionName: 'approve',
293
- args: [spender, amount],
294
- })
295
-
296
- return {
297
- to: tokenAddress,
298
- data: approvalCallData,
299
- value: 0n,
300
- }
287
+ return buildErc20ApprovalTx(tokenAddress, spender, amount)
301
288
  }
302
289
 
303
290
  /**
@@ -4,13 +4,10 @@ import { describe, expect, it } from 'vitest'
4
4
  import { MockUSDCAsset } from '@/__mocks__/MockAssets.js'
5
5
  import { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
6
  import type { LendMarketConfig, LendMarketId } from '@/types/lend/index.js'
7
+ import { validateChainSupported } from '@/utils/validation.js'
7
8
 
8
9
  // Test helper class that exposes protected validation methods as public
9
10
  class TestLendProvider extends MockLendProvider {
10
- public validateProviderSupported(chainId: number): void {
11
- return super.validateProviderSupported(chainId)
12
- }
13
-
14
11
  public validateConfigSupported(marketId: LendMarketId): void {
15
12
  return super.validateConfigSupported(marketId)
16
13
  }
@@ -186,7 +183,7 @@ describe('LendProvider', () => {
186
183
  const provider = new TestLendProvider()
187
184
 
188
185
  expect(() => {
189
- provider.validateProviderSupported(999)
186
+ validateChainSupported(999, provider.supportedChainIds())
190
187
  }).toThrow('Chain 999 is not supported')
191
188
  })
192
189
 
@@ -1,18 +1,14 @@
1
- import type { LendProvider } from '@/lend/core/LendProvider.js'
2
1
  import type { AaveLendProvider } from '@/lend/providers/aave/AaveLendProvider.js'
3
2
  import type { MorphoLendProvider } from '@/lend/providers/morpho/MorphoLendProvider.js'
4
- import type { LendProviderConfig } from '@/types/actions.js'
5
3
  import type {
6
4
  GetLendMarketParams,
7
5
  GetLendMarketsParams,
8
6
  LendMarket,
9
7
  LendMarketId,
10
8
  } from '@/types/lend/index.js'
9
+ import type { LendProviders } from '@/types/providers.js'
11
10
 
12
- export type LendProviders = {
13
- morpho?: LendProvider<LendProviderConfig>
14
- aave?: LendProvider<LendProviderConfig>
15
- }
11
+ export type { LendProviders } from '@/types/providers.js'
16
12
 
17
13
  /**
18
14
  * Base Lend Namespace
@@ -3,8 +3,13 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
3
3
 
4
4
  import { getRandomAddress } from '@/__mocks__/utils.js'
5
5
  import type { MockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
- import { createMockLendProvider } from '@/lend/__mocks__/MockLendProvider.js'
6
+ import {
7
+ createMockLendProvider,
8
+ MockLendProvider as MockLendProviderClass,
9
+ } from '@/lend/__mocks__/MockLendProvider.js'
7
10
  import { BaseLendNamespace } from '@/lend/namespaces/BaseLendNamespace.js'
11
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
12
+ import type { ChainManager } from '@/services/ChainManager.js'
8
13
 
9
14
  // Concrete implementation for testing
10
15
  class TestLendNamespace extends BaseLendNamespace {}
@@ -109,10 +114,12 @@ describe('BaseLendNamespace', () => {
109
114
 
110
115
  describe('supportedChainIds', () => {
111
116
  it('should return unique chain IDs from all providers', () => {
112
- const namespace = new TestLendNamespace({
113
- morpho: mockMorphoProvider,
114
- aave: mockAaveProvider,
115
- })
117
+ const chainManager = new MockChainManager({
118
+ supportedChains: [1, 130, 8453, 84532],
119
+ }) as unknown as ChainManager
120
+ const morpho = new MockLendProviderClass({}, undefined, chainManager)
121
+ const aave = new MockLendProviderClass({}, undefined, chainManager)
122
+ const namespace = new TestLendNamespace({ morpho, aave })
116
123
 
117
124
  const chainIds = namespace.supportedChainIds()
118
125
 
@@ -25,18 +25,14 @@ import {
25
25
  } from './addresses.js'
26
26
  import { getATokenAddress, getReserve, getReserves } from './sdk.js'
27
27
 
28
- /**
29
- * Supported chain IDs for Aave lending
30
- * @description Array of chain IDs where Aave V3 is available on Optimism Superchain
31
- */
32
- export const SUPPORTED_CHAIN_IDS = getSupportedChainIds() as readonly number[]
33
-
34
28
  /**
35
29
  * Aave lending provider implementation
36
30
  * @description Lending provider implementation using Aave V3 protocol
37
31
  */
38
32
  export class AaveLendProvider extends LendProvider<LendProviderConfig> {
39
- protected readonly SUPPORTED_CHAIN_IDS = SUPPORTED_CHAIN_IDS
33
+ protocolSupportedChainIds(): number[] {
34
+ return getSupportedChainIds()
35
+ }
40
36
 
41
37
  /**
42
38
  * Create a new Aave lending provider
@@ -88,22 +88,31 @@ describe('AaveLendProvider', () => {
88
88
  })
89
89
  })
90
90
 
91
- describe('supportedChainIds', () => {
92
- it('should return array of supported chain IDs', () => {
93
- const chainIds = provider.supportedChainIds()
91
+ describe('protocolSupportedChainIds', () => {
92
+ it('should return all Aave V3 deployment chains', () => {
93
+ const chainIds = provider.protocolSupportedChainIds()
94
94
 
95
- expect(chainIds).toHaveLength(4)
95
+ expect(chainIds).toHaveLength(6)
96
96
  expect(chainIds).toContain(10) // Optimism
97
97
  expect(chainIds).toContain(8453) // Base
98
+ expect(chainIds).toContain(1868) // Soneium
99
+ expect(chainIds).toContain(57073) // Ink
98
100
  expect(chainIds).toContain(11155420) // Optimism Sepolia
99
101
  expect(chainIds).toContain(84532) // Base Sepolia
100
102
  })
103
+ })
101
104
 
102
- it('should return unique chain IDs', () => {
105
+ describe('supportedChainIds', () => {
106
+ it('should return only chains present in ActionsConfig', () => {
107
+ // mockChainManager is configured with supportedChains: [8453]
103
108
  const chainIds = provider.supportedChainIds()
104
- const uniqueIds = [...new Set(chainIds)]
105
109
 
106
- expect(chainIds.length).toBe(uniqueIds.length)
110
+ expect(chainIds).toEqual([8453])
111
+ })
112
+
113
+ it('should return unique chain IDs', () => {
114
+ const chainIds = provider.supportedChainIds()
115
+ expect(chainIds.length).toBe(new Set(chainIds).size)
107
116
  })
108
117
  })
109
118
 
@@ -1,95 +1,113 @@
1
1
  import type { Address } from 'viem'
2
- import { base, baseSepolia, optimism, optimismSepolia } from 'viem/chains'
2
+ import {
3
+ base,
4
+ baseSepolia,
5
+ ink,
6
+ optimism,
7
+ optimismSepolia,
8
+ soneium,
9
+ } from 'viem/chains'
3
10
 
4
- /**
5
- * Aave V3 Pool addresses for Optimism Superchain networks
6
- * @description Hardcoded Pool contract addresses for each supported chain
7
- */
11
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
8
12
 
9
13
  /**
10
- * Mainnet Pool addresses
14
+ * Aave V3 contract addresses per chain
11
15
  */
12
- export const POOL_ADDRESSES_MAINNET: Record<number, Address> = {
13
- [optimism.id]: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
14
- [base.id]: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
15
- } as const
16
+ export interface AaveAddresses {
17
+ pool: Address
18
+ wethGateway: Address
19
+ uiPoolDataProvider: Address
20
+ poolAddressesProvider: Address
21
+ }
16
22
 
17
23
  /**
18
- * Testnet Pool addresses
24
+ * Aave V3 contract addresses for OP Stack chains
25
+ * @see https://github.com/bgd-labs/aave-address-book
19
26
  */
20
- export const POOL_ADDRESSES_TESTNET: Record<number, Address> = {
21
- [optimismSepolia.id]: '0xb50201558b00496a145fe76f7424749556e326d8',
22
- [baseSepolia.id]: '0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27',
23
- } as const
27
+ const AAVE_ADDRESSES: Partial<Record<SupportedChainId, AaveAddresses>> = {
28
+ [optimism.id]: {
29
+ pool: '0x794a61358D6845594F94dc1DB02A252b5b4814aD',
30
+ wethGateway: '0x5f2508cAE9923b02316254026CD43d7902866725',
31
+ uiPoolDataProvider: '0x69FA688f1Dc47d4B5d8029D5a35FB7a548310654',
32
+ poolAddressesProvider: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
33
+ },
34
+ [base.id]: {
35
+ pool: '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5',
36
+ wethGateway: '0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24',
37
+ uiPoolDataProvider: '0xd82a47fdebB5bf5329b09441C3DaB4b5df2153Ad',
38
+ poolAddressesProvider: '0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D',
39
+ },
40
+ [soneium.id]: {
41
+ pool: '0xDd3d7A7d03D9fD9ef45f3E587287922eF65CA38B',
42
+ wethGateway: '0x6376D4df995f32f308f2d5049a7a320943023232',
43
+ uiPoolDataProvider: '0xc69299Ddd3a704F6954c8Ae1AD00e0892d77Aee4',
44
+ poolAddressesProvider: '0x82405D1a189bd6cE4667809C35B37fBE136A4c5B',
45
+ },
46
+ [ink.id]: {
47
+ pool: '0x2816cf15F6d2A220E789aA011D5EE4eB6c47FEbA',
48
+ wethGateway: '0xDe090EfCD6ef4b86792e2D84E55a5fa8d49D25D2',
49
+ uiPoolDataProvider: '0xF1485fb7DBFa5db0B368FeA808FD6ff945c36064',
50
+ poolAddressesProvider: '0x4172E6aAEC070ACB31aaCE343A58c93E4C70f44D',
51
+ },
52
+ [optimismSepolia.id]: {
53
+ pool: '0xb50201558b00496a145fe76f7424749556e326d8',
54
+ wethGateway: '0x589750BA8aF186cE5B55391B0b7148cAD43a1619',
55
+ uiPoolDataProvider: '0x86E2938daE289763D4e09a7e42c5cCcA62Cf9809',
56
+ poolAddressesProvider: '0x36616cf17557639614c1cdDb356b1B83fc0B2132',
57
+ },
58
+ [baseSepolia.id]: {
59
+ pool: '0x8bAB6d1b75f19e9eD9fCe8b9BD338844fF79aE27',
60
+ wethGateway: '0x0568130e794429D2eEBC4dafE18f25Ff1a1ed8b6',
61
+ uiPoolDataProvider: '0xBc9f5b7E248451CdD7cA54e717a2BFe1F32b566b',
62
+ poolAddressesProvider: '0xE4C23309117Aa30342BFaae6c95c6478e0A4Ad00',
63
+ },
64
+ }
24
65
 
25
66
  /**
26
- * All Pool addresses (mainnet + testnet)
67
+ * Get all Aave addresses for a chain
27
68
  */
28
- export const POOL_ADDRESSES: Record<number, Address> = {
29
- ...POOL_ADDRESSES_MAINNET,
30
- ...POOL_ADDRESSES_TESTNET,
31
- } as const
69
+ export function getAaveAddresses(chainId: number): AaveAddresses | undefined {
70
+ return AAVE_ADDRESSES[chainId as SupportedChainId]
71
+ }
32
72
 
33
73
  /**
34
74
  * Get Pool address for a given chain ID
35
- * @param chainId - Chain ID
36
- * @returns Pool address if supported, undefined otherwise
37
75
  */
38
76
  export function getPoolAddress(chainId: number): Address | undefined {
39
- return POOL_ADDRESSES[chainId]
77
+ return getAaveAddresses(chainId)?.pool
40
78
  }
41
79
 
42
80
  /**
43
- * Check if a chain ID has Aave V3 deployed
44
- * @param chainId - Chain ID to check
45
- * @returns true if Aave V3 is deployed on this chain
81
+ * Get WETHGateway address for a given chain ID
46
82
  */
47
- export function isAaveChainSupported(chainId: number): boolean {
48
- return chainId in POOL_ADDRESSES
83
+ export function getWETHGatewayAddress(chainId: number): Address | undefined {
84
+ return getAaveAddresses(chainId)?.wethGateway
49
85
  }
50
86
 
51
87
  /**
52
88
  * Get all supported chain IDs
53
- * @returns Array of chain IDs with Aave V3 deployed
54
89
  */
55
90
  export function getSupportedChainIds(): number[] {
56
- return Object.keys(POOL_ADDRESSES).map(Number)
91
+ return Object.keys(AAVE_ADDRESSES).map(Number)
57
92
  }
58
93
 
59
- /**
60
- * Aave V3 WETHGateway addresses for Optimism Superchain networks
61
- * @description Gateway contracts that handle native ETH wrapping and depositing
62
- */
63
-
64
- /**
65
- * Mainnet WETHGateway addresses
66
- */
94
+ export const POOL_ADDRESSES_MAINNET: Record<number, Address> = {
95
+ [optimism.id]: AAVE_ADDRESSES[optimism.id]!.pool,
96
+ [base.id]: AAVE_ADDRESSES[base.id]!.pool,
97
+ [soneium.id]: AAVE_ADDRESSES[soneium.id]!.pool,
98
+ [ink.id]: AAVE_ADDRESSES[ink.id]!.pool,
99
+ }
100
+ export const POOL_ADDRESSES_TESTNET: Record<number, Address> = {
101
+ [optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.pool,
102
+ [baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.pool,
103
+ }
67
104
  export const WETH_GATEWAY_ADDRESSES_MAINNET: Record<number, Address> = {
68
- [optimism.id]: '0x5f2508cAE9923b02316254026CD43d7902866725',
69
- [base.id]: '0xa0d9C1E9E48Ca30c8d8C3B5D69FF5dc1f6DFfC24',
70
- } as const
71
-
72
- /**
73
- * Testnet WETHGateway addresses
74
- */
105
+ [optimism.id]: AAVE_ADDRESSES[optimism.id]!.wethGateway,
106
+ [base.id]: AAVE_ADDRESSES[base.id]!.wethGateway,
107
+ [soneium.id]: AAVE_ADDRESSES[soneium.id]!.wethGateway,
108
+ [ink.id]: AAVE_ADDRESSES[ink.id]!.wethGateway,
109
+ }
75
110
  export const WETH_GATEWAY_ADDRESSES_TESTNET: Record<number, Address> = {
76
- [optimismSepolia.id]: '0x589750BA8aF186cE5B55391B0b7148cAD43a1619',
77
- [baseSepolia.id]: '0x0568130e794429D2eEBC4dafE18f25Ff1a1ed8b6',
78
- } as const
79
-
80
- /**
81
- * All WETHGateway addresses (mainnet + testnet)
82
- */
83
- export const WETH_GATEWAY_ADDRESSES: Record<number, Address> = {
84
- ...WETH_GATEWAY_ADDRESSES_MAINNET,
85
- ...WETH_GATEWAY_ADDRESSES_TESTNET,
86
- } as const
87
-
88
- /**
89
- * Get WETHGateway address for a given chain ID
90
- * @param chainId - Chain ID
91
- * @returns WETHGateway address if supported, undefined otherwise
92
- */
93
- export function getWETHGatewayAddress(chainId: number): Address | undefined {
94
- return WETH_GATEWAY_ADDRESSES[chainId]
111
+ [optimismSepolia.id]: AAVE_ADDRESSES[optimismSepolia.id]!.wethGateway,
112
+ [baseSepolia.id]: AAVE_ADDRESSES[baseSepolia.id]!.wethGateway,
95
113
  }