@eth-optimism/actions-sdk 0.1.0 → 0.3.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/LICENSE +1 -1
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -0
  3. package/dist/{test → __mocks__}/MockAssets.js +2 -0
  4. package/dist/__mocks__/MockAssets.js.map +1 -0
  5. package/dist/__mocks__/MockPrivyClient.d.ts.map +1 -0
  6. package/dist/__mocks__/MockPrivyClient.js.map +1 -0
  7. package/dist/__mocks__/utils.d.ts.map +1 -0
  8. package/dist/__mocks__/utils.js.map +1 -0
  9. package/dist/__tests__/actions.test.d.ts.map +1 -0
  10. package/dist/{actions.test.js → __tests__/actions.test.js} +5 -9
  11. package/dist/__tests__/actions.test.js.map +1 -0
  12. package/dist/actions.d.ts +20 -1
  13. package/dist/actions.d.ts.map +1 -1
  14. package/dist/actions.js +37 -13
  15. package/dist/actions.js.map +1 -1
  16. package/dist/constants/assets.d.ts +23 -0
  17. package/dist/constants/assets.d.ts.map +1 -1
  18. package/dist/constants/assets.js +99 -6
  19. package/dist/constants/assets.js.map +1 -1
  20. package/dist/constants/contracts.d.ts +4 -0
  21. package/dist/constants/contracts.d.ts.map +1 -0
  22. package/dist/constants/contracts.js +3 -0
  23. package/dist/constants/contracts.js.map +1 -0
  24. package/dist/constants/supportedChains.d.ts +1 -1
  25. package/dist/constants/supportedChains.d.ts.map +1 -1
  26. package/dist/constants/supportedChains.js +7 -3
  27. package/dist/constants/supportedChains.js.map +1 -1
  28. package/dist/core/asset/__mocks__/mockAsset.js +1 -1
  29. package/dist/core/asset/__mocks__/mockAsset.js.map +1 -1
  30. package/dist/index.d.ts +4 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/{test → lend/__mocks__}/MockLendProvider.d.ts +7 -6
  35. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  36. package/dist/{test → lend/__mocks__}/MockLendProvider.js +20 -21
  37. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -0
  38. package/dist/{test → lend/__mocks__}/MockMarkets.d.ts +1 -1
  39. package/dist/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  40. package/dist/{test → lend/__mocks__}/MockMarkets.js +1 -1
  41. package/dist/lend/__mocks__/MockMarkets.js.map +1 -0
  42. package/dist/lend/__mocks__/mockLendTransaction.d.ts +3 -12
  43. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +1 -1
  44. package/dist/lend/__mocks__/mockLendTransaction.js +3 -19
  45. package/dist/lend/__mocks__/mockLendTransaction.js.map +1 -1
  46. package/dist/lend/core/LendProvider.d.ts +14 -8
  47. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  48. package/dist/lend/core/LendProvider.js +29 -17
  49. package/dist/lend/core/LendProvider.js.map +1 -1
  50. package/dist/lend/core/__tests__/LendProvider.test.js +4 -6
  51. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  52. package/dist/lend/namespaces/ActionsLendNamespace.d.ts +2 -36
  53. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -1
  54. package/dist/lend/namespaces/ActionsLendNamespace.js +2 -48
  55. package/dist/lend/namespaces/ActionsLendNamespace.js.map +1 -1
  56. package/dist/lend/namespaces/BaseLendNamespace.d.ts +47 -0
  57. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  58. package/dist/lend/namespaces/BaseLendNamespace.js +58 -0
  59. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -0
  60. package/dist/lend/namespaces/WalletLendNamespace.d.ts +8 -36
  61. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +1 -1
  62. package/dist/lend/namespaces/WalletLendNamespace.js +14 -69
  63. package/dist/lend/namespaces/WalletLendNamespace.js.map +1 -1
  64. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js +2 -2
  65. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -1
  66. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts +2 -0
  67. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  68. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +110 -0
  69. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  70. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js +8 -10
  71. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -1
  72. package/dist/lend/providers/aave/AaveLendProvider.d.ts +19 -27
  73. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  74. package/dist/lend/providers/aave/AaveLendProvider.js +124 -180
  75. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  76. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts +11 -0
  77. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  78. package/dist/lend/providers/aave/__mocks__/mockReserve.js +80 -0
  79. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  80. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts +2 -0
  81. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  82. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +315 -0
  83. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  84. package/dist/lend/providers/aave/abis/pool.d.ts +153 -0
  85. package/dist/lend/providers/aave/abis/pool.d.ts.map +1 -0
  86. package/dist/lend/providers/aave/abis/pool.js +79 -0
  87. package/dist/lend/providers/aave/abis/pool.js.map +1 -0
  88. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  89. package/dist/lend/providers/aave/sdk.js +6 -65
  90. package/dist/lend/providers/aave/sdk.js.map +1 -1
  91. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +0 -1
  92. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  93. package/dist/lend/providers/morpho/MorphoLendProvider.js +13 -28
  94. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  95. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js +5 -24
  96. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -1
  97. package/dist/lend/providers/morpho/__tests__/api.test.js +248 -54
  98. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  99. package/dist/lend/providers/morpho/__tests__/sdk.test.js +3 -2
  100. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  101. package/dist/lend/providers/morpho/api.d.ts +4 -0
  102. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  103. package/dist/lend/providers/morpho/api.js.map +1 -1
  104. package/dist/lend/providers/morpho/contracts.d.ts +19 -0
  105. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -0
  106. package/dist/lend/providers/morpho/contracts.js +32 -0
  107. package/dist/lend/providers/morpho/contracts.js.map +1 -0
  108. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  109. package/dist/lend/providers/morpho/sdk.js +177 -71
  110. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  111. package/dist/services/ChainManager.d.ts +1 -1
  112. package/dist/{test → services/__mocks__}/MockChainManager.d.ts +1 -1
  113. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -0
  114. package/dist/services/__mocks__/MockChainManager.js.map +1 -0
  115. package/dist/services/tokenBalance.d.ts.map +1 -1
  116. package/dist/services/tokenBalance.js +4 -5
  117. package/dist/services/tokenBalance.js.map +1 -1
  118. package/dist/services/tokenBalance.spec.js +2 -2
  119. package/dist/services/tokenBalance.spec.js.map +1 -1
  120. package/dist/supported/tokens.d.ts +4 -4
  121. package/dist/supported/tokens.d.ts.map +1 -1
  122. package/dist/supported/tokens.js +10 -70
  123. package/dist/supported/tokens.js.map +1 -1
  124. package/dist/swap/__mocks__/MockSwapProvider.d.ts +38 -0
  125. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  126. package/dist/swap/__mocks__/MockSwapProvider.js +138 -0
  127. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  128. package/dist/swap/core/SwapProvider.d.ts +56 -0
  129. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  130. package/dist/swap/core/SwapProvider.js +177 -0
  131. package/dist/swap/core/SwapProvider.js.map +1 -0
  132. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  133. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  134. package/dist/swap/core/__tests__/SwapProvider.test.js +329 -0
  135. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  136. package/dist/swap/index.d.ts +7 -0
  137. package/dist/swap/index.d.ts.map +1 -0
  138. package/dist/swap/index.js +8 -0
  139. package/dist/swap/index.js.map +1 -0
  140. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  141. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  142. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  143. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  144. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +33 -0
  145. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  146. package/dist/swap/namespaces/BaseSwapNamespace.js +58 -0
  147. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  148. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +22 -0
  149. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  150. package/dist/swap/namespaces/WalletSwapNamespace.js +60 -0
  151. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  152. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  153. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  154. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +106 -0
  155. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  156. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  157. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  158. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +132 -0
  159. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  160. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +68 -0
  161. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  162. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +206 -0
  163. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  164. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  165. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  166. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +257 -0
  167. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  168. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  169. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  170. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  171. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  172. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  173. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  174. package/dist/swap/providers/uniswap/abis.js +138 -0
  175. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  176. package/dist/swap/providers/uniswap/addresses.d.ts +21 -0
  177. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  178. package/dist/swap/providers/uniswap/addresses.js +81 -0
  179. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  180. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  181. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  182. package/dist/swap/providers/uniswap/encoding.js +233 -0
  183. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  184. package/dist/swap/providers/uniswap/types.d.ts +20 -0
  185. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  186. package/dist/swap/providers/uniswap/types.js +2 -0
  187. package/dist/swap/providers/uniswap/types.js.map +1 -0
  188. package/dist/types/actions.d.ts +19 -5
  189. package/dist/types/actions.d.ts.map +1 -1
  190. package/dist/types/asset.d.ts +3 -3
  191. package/dist/types/asset.d.ts.map +1 -1
  192. package/dist/types/index.d.ts +2 -0
  193. package/dist/types/index.d.ts.map +1 -1
  194. package/dist/types/index.js +2 -0
  195. package/dist/types/index.js.map +1 -1
  196. package/dist/types/lend/base.d.ts +7 -22
  197. package/dist/types/lend/base.d.ts.map +1 -1
  198. package/dist/types/lend/base.js.map +1 -1
  199. package/dist/types/lend/contracts.d.ts +17 -0
  200. package/dist/types/lend/contracts.d.ts.map +1 -0
  201. package/dist/types/lend/contracts.js +2 -0
  202. package/dist/types/lend/contracts.js.map +1 -0
  203. package/dist/types/lend/index.d.ts +1 -0
  204. package/dist/types/lend/index.d.ts.map +1 -1
  205. package/dist/types/lend/index.js +1 -0
  206. package/dist/types/lend/index.js.map +1 -1
  207. package/dist/types/swap/base.d.ts +238 -0
  208. package/dist/types/swap/base.d.ts.map +1 -0
  209. package/dist/types/swap/base.js +4 -0
  210. package/dist/types/swap/base.js.map +1 -0
  211. package/dist/types/swap/index.d.ts +2 -0
  212. package/dist/types/swap/index.d.ts.map +1 -0
  213. package/dist/types/swap/index.js +2 -0
  214. package/dist/types/swap/index.js.map +1 -0
  215. package/dist/types/transaction.d.ts +14 -0
  216. package/dist/types/transaction.d.ts.map +1 -0
  217. package/dist/types/transaction.js +2 -0
  218. package/dist/types/transaction.js.map +1 -0
  219. package/dist/utils/assets.d.ts +11 -6
  220. package/dist/utils/assets.d.ts.map +1 -1
  221. package/dist/utils/assets.js +16 -12
  222. package/dist/utils/assets.js.map +1 -1
  223. package/dist/utils/assets.test.js +14 -2
  224. package/dist/utils/assets.test.js.map +1 -1
  225. package/dist/utils/constants.d.ts +5 -0
  226. package/dist/utils/constants.d.ts.map +1 -0
  227. package/dist/utils/constants.js +5 -0
  228. package/dist/utils/constants.js.map +1 -0
  229. package/dist/utils/permit2.d.ts +46 -0
  230. package/dist/utils/permit2.d.ts.map +1 -0
  231. package/dist/utils/permit2.js +100 -0
  232. package/dist/utils/permit2.js.map +1 -0
  233. package/dist/utils/permit2.test.d.ts +2 -0
  234. package/dist/utils/permit2.test.d.ts.map +1 -0
  235. package/dist/utils/permit2.test.js +110 -0
  236. package/dist/utils/permit2.test.js.map +1 -0
  237. package/dist/utils/validation.d.ts +12 -0
  238. package/dist/utils/validation.d.ts.map +1 -0
  239. package/dist/utils/validation.js +44 -0
  240. package/dist/utils/validation.js.map +1 -0
  241. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  242. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  243. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  244. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  245. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +4 -4
  246. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  247. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +7 -1
  248. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  249. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  250. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  251. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +2 -2
  252. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  253. package/dist/wallet/core/providers/hosted/types/index.d.ts +5 -1
  254. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  255. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +7 -1
  256. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  257. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  258. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  259. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +5 -5
  260. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  261. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +13 -2
  262. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  263. package/dist/wallet/core/wallets/abstract/Wallet.js +7 -1
  264. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  265. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +2 -2
  266. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  267. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +2 -2
  268. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  269. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +7 -2
  270. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  271. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  272. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  273. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +3 -3
  274. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  275. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js +1 -1
  276. package/dist/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.js.map +1 -1
  277. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js +1 -1
  278. package/dist/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.js.map +1 -1
  279. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -1
  280. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  281. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  282. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  283. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +4 -4
  284. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  285. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  286. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +4 -3
  287. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  288. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +2 -2
  289. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  290. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -1
  291. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  292. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  293. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  294. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  295. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  296. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +6 -1
  297. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  298. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  299. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  300. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +3 -3
  301. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  302. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +2 -2
  303. package/dist/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  304. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -1
  305. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  306. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  307. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  308. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  309. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  310. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  311. package/dist/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  312. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +7 -1
  313. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  314. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +6 -2
  315. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  316. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.d.ts.map +1 -1
  317. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js +1 -1
  318. package/dist/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.js.map +1 -1
  319. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +6 -2
  320. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  321. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +6 -1
  322. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  323. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +5 -2
  324. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  325. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.d.ts.map +1 -1
  326. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js +1 -1
  327. package/dist/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.js.map +1 -1
  328. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +3 -2
  329. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  330. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +6 -3
  331. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  332. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +5 -4
  333. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  334. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +2 -2
  335. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  336. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  337. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +6 -6
  338. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  339. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  340. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  341. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -1
  342. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  343. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  344. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  345. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -2
  346. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  347. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js +1 -1
  348. package/dist/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.js.map +1 -1
  349. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -1
  350. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  351. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  352. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  353. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -2
  354. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  355. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js +1 -1
  356. package/dist/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.js.map +1 -1
  357. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -1
  358. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  359. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  360. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  361. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -2
  362. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  363. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js +1 -1
  364. package/dist/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.js.map +1 -1
  365. package/package.json +2 -2
  366. package/src/{test → __mocks__}/MockAssets.ts +2 -0
  367. package/src/{test → __mocks__}/MockPrivyClient.ts +1 -1
  368. package/src/{actions.test.ts → __tests__/actions.test.ts} +2 -6
  369. package/src/actions.ts +57 -19
  370. package/src/constants/assets.ts +108 -8
  371. package/src/constants/contracts.ts +5 -0
  372. package/src/constants/supportedChains.ts +10 -2
  373. package/src/core/asset/__mocks__/mockAsset.ts +1 -1
  374. package/src/index.ts +30 -2
  375. package/src/{test → lend/__mocks__}/MockLendProvider.ts +20 -23
  376. package/src/{test → lend/__mocks__}/MockMarkets.ts +1 -1
  377. package/src/lend/__mocks__/mockLendTransaction.ts +4 -26
  378. package/src/lend/core/LendProvider.ts +40 -20
  379. package/src/lend/core/__tests__/LendProvider.test.ts +4 -7
  380. package/src/lend/namespaces/ActionsLendNamespace.ts +2 -85
  381. package/src/lend/namespaces/BaseLendNamespace.ts +89 -0
  382. package/src/lend/namespaces/WalletLendNamespace.ts +25 -121
  383. package/src/lend/namespaces/__tests__/ActionsLendNamespace.spec.ts +10 -9
  384. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +137 -0
  385. package/src/lend/namespaces/__tests__/WalletLendNamespace.spec.ts +19 -22
  386. package/src/lend/providers/aave/AaveLendProvider.ts +163 -231
  387. package/src/lend/providers/aave/__mocks__/mockReserve.ts +84 -0
  388. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +419 -0
  389. package/src/lend/providers/aave/abis/pool.ts +81 -0
  390. package/src/lend/providers/aave/sdk.ts +7 -69
  391. package/src/lend/providers/morpho/MorphoLendProvider.ts +20 -41
  392. package/src/lend/providers/morpho/__tests__/MorphoLendProvider.test.ts +8 -32
  393. package/src/lend/providers/morpho/__tests__/api.test.ts +277 -51
  394. package/src/lend/providers/morpho/__tests__/sdk.test.ts +3 -2
  395. package/src/lend/providers/morpho/api.ts +4 -0
  396. package/src/lend/providers/morpho/contracts.ts +37 -0
  397. package/src/lend/providers/morpho/sdk.ts +241 -84
  398. package/src/services/tokenBalance.spec.ts +2 -2
  399. package/src/services/tokenBalance.ts +6 -7
  400. package/src/supported/tokens.ts +18 -77
  401. package/src/swap/__mocks__/MockSwapProvider.ts +216 -0
  402. package/src/swap/core/SwapProvider.ts +319 -0
  403. package/src/swap/core/__tests__/SwapProvider.test.ts +478 -0
  404. package/src/swap/index.ts +14 -0
  405. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  406. package/src/swap/namespaces/BaseSwapNamespace.ts +77 -0
  407. package/src/swap/namespaces/WalletSwapNamespace.ts +82 -0
  408. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +138 -0
  409. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +162 -0
  410. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +304 -0
  411. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  412. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +370 -0
  413. package/src/swap/providers/uniswap/abis.ts +144 -0
  414. package/src/swap/providers/uniswap/addresses.ts +108 -0
  415. package/src/swap/providers/uniswap/encoding.ts +406 -0
  416. package/src/swap/providers/uniswap/types.ts +24 -0
  417. package/src/types/actions.ts +22 -6
  418. package/src/types/asset.ts +3 -3
  419. package/src/types/index.ts +2 -0
  420. package/src/types/lend/base.ts +12 -25
  421. package/src/types/lend/contracts.ts +18 -0
  422. package/src/types/lend/index.ts +1 -0
  423. package/src/types/swap/base.ts +259 -0
  424. package/src/types/swap/index.ts +1 -0
  425. package/src/types/transaction.ts +14 -0
  426. package/src/utils/assets.test.ts +17 -2
  427. package/src/utils/assets.ts +28 -11
  428. package/src/utils/constants.ts +4 -0
  429. package/src/utils/permit2.test.ts +142 -0
  430. package/src/utils/permit2.ts +144 -0
  431. package/src/utils/validation.ts +76 -0
  432. package/src/wallet/core/namespace/WalletNamespace.ts +2 -4
  433. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +6 -6
  434. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +6 -6
  435. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +9 -1
  436. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +3 -3
  437. package/src/wallet/core/providers/hosted/types/index.ts +5 -1
  438. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +13 -1
  439. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +9 -9
  440. package/src/wallet/core/wallets/abstract/Wallet.ts +18 -2
  441. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +2 -2
  442. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +2 -2
  443. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +14 -5
  444. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +3 -3
  445. package/src/wallet/core/wallets/smart/default/utils/__tests__/findSignerInArray.spec.ts +1 -1
  446. package/src/wallet/core/wallets/smart/default/utils/__tests__/getSignerPublicKey.spec.ts +1 -1
  447. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +13 -2
  448. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +5 -5
  449. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +10 -2
  450. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +3 -3
  451. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +8 -2
  452. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  453. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +11 -2
  454. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -4
  455. package/src/wallet/node/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +2 -2
  456. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -2
  457. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  458. package/src/wallet/node/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  459. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +10 -2
  460. package/src/wallet/react/providers/hosted/dynamic/__mocks__/DynamicHostedWalletProviderMock.ts +1 -1
  461. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +9 -5
  462. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +9 -2
  463. package/src/wallet/react/providers/hosted/privy/__mocks__/PrivyHostedWalletProviderMock.ts +1 -1
  464. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +5 -5
  465. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +9 -4
  466. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +2 -2
  467. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +18 -6
  468. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +5 -7
  469. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +12 -2
  470. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -2
  471. package/src/wallet/react/wallets/hosted/dynamic/utils/__tests__/createSigner.spec.ts +1 -1
  472. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +10 -2
  473. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -2
  474. package/src/wallet/react/wallets/hosted/privy/utils/__tests__/createSigner.spec.ts +1 -1
  475. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +10 -2
  476. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -2
  477. package/src/wallet/react/wallets/hosted/turnkey/utils/__tests__/createSigner.spec.ts +1 -1
  478. package/dist/actions.test.d.ts.map +0 -1
  479. package/dist/actions.test.js.map +0 -1
  480. package/dist/test/MockAssets.d.ts.map +0 -1
  481. package/dist/test/MockAssets.js.map +0 -1
  482. package/dist/test/MockChainManager.d.ts.map +0 -1
  483. package/dist/test/MockChainManager.js.map +0 -1
  484. package/dist/test/MockLendProvider.d.ts.map +0 -1
  485. package/dist/test/MockLendProvider.js.map +0 -1
  486. package/dist/test/MockMarkets.d.ts.map +0 -1
  487. package/dist/test/MockMarkets.js.map +0 -1
  488. package/dist/test/MockPrivyClient.d.ts.map +0 -1
  489. package/dist/test/MockPrivyClient.js.map +0 -1
  490. package/dist/test/utils.d.ts.map +0 -1
  491. package/dist/test/utils.js.map +0 -1
  492. /package/dist/{test → __mocks__}/MockAssets.d.ts +0 -0
  493. /package/dist/{test → __mocks__}/MockPrivyClient.d.ts +0 -0
  494. /package/dist/{test → __mocks__}/MockPrivyClient.js +0 -0
  495. /package/dist/{test → __mocks__}/utils.d.ts +0 -0
  496. /package/dist/{test → __mocks__}/utils.js +0 -0
  497. /package/dist/{actions.test.d.ts → __tests__/actions.test.d.ts} +0 -0
  498. /package/dist/{test → services/__mocks__}/MockChainManager.js +0 -0
  499. /package/src/{test → __mocks__}/utils.ts +0 -0
  500. /package/src/{test → services/__mocks__}/MockChainManager.ts +0 -0
@@ -1,21 +1,35 @@
1
+ import type { UniswapSwapProviderConfig } from '@/swap/providers/uniswap/types.js'
1
2
  import type { Asset } from '@/types/asset.js'
2
3
  import type { ChainConfig } from '@/types/chain.js'
3
4
  import type { LendProviderConfig } from '@/types/lend/index.js'
5
+ import type { SwapProviderConfig } from '@/types/swap/index.js'
4
6
  import type { ProviderSpec } from '@/wallet/core/providers/hosted/types/index.js'
5
7
 
6
- // Re-export LendProviderConfig for convenience
7
- export type { LendProviderConfig }
8
+ // Re-export provider configs for convenience
9
+ export type { LendProviderConfig, SwapProviderConfig }
10
+
11
+ /** Require at least one property to be defined */
12
+ type RequireAtLeastOne<T> = {
13
+ [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
14
+ }[keyof T]
8
15
 
9
16
  /**
10
- * Lending configuration
11
- * @description Configuration for all lending providers
17
+ * Lending configuration — at least one provider must be configured
12
18
  */
13
- export interface LendConfig {
19
+ export type LendConfig = RequireAtLeastOne<{
14
20
  /** Morpho lending provider configuration */
15
21
  morpho?: LendProviderConfig
16
22
  /** Aave lending provider configuration */
17
23
  aave?: LendProviderConfig
18
- }
24
+ }>
25
+
26
+ /**
27
+ * Swap configuration — at least one provider must be configured
28
+ */
29
+ export type SwapConfig = RequireAtLeastOne<{
30
+ /** Uniswap swap provider configuration */
31
+ uniswap?: UniswapSwapProviderConfig
32
+ }>
19
33
 
20
34
  /**
21
35
  * Network configuration for lending providers
@@ -49,6 +63,8 @@ export interface ActionsConfig<
49
63
  wallet: WalletConfig<THostedWalletProviderType, TConfigMap>
50
64
  /** Lending providers configuration (optional) */
51
65
  lend?: LendConfig
66
+ /** Swap providers configuration (optional) */
67
+ swap?: SwapConfig
52
68
  /** Assets configuration (optional) */
53
69
  assets?: AssetsConfig
54
70
  /** Chains to use for the SDK */
@@ -6,8 +6,8 @@ import type { SupportedChainId } from '@/constants/supportedChains.js'
6
6
  * Asset type inspired by EIP 7811 but adapted for multi-chain asset definitions
7
7
  */
8
8
  export interface Asset {
9
- /** Multi-chain address mapping */
10
- address: Partial<Record<SupportedChainId, Address>>
9
+ /** Multi-chain address mapping. Native assets use 'native' string to prevent accidental contract calls. */
10
+ address: Partial<Record<SupportedChainId, Address | 'native'>>
11
11
  /** Asset metadata */
12
12
  metadata: {
13
13
  decimals: number
@@ -28,7 +28,7 @@ export interface TokenBalance {
28
28
  chainBalances: Array<{
29
29
  chainId: SupportedChainId
30
30
  balance: bigint
31
- tokenAddress: Address
31
+ tokenAddress: Address | 'native'
32
32
  formattedBalance: string
33
33
  }>
34
34
  }
@@ -2,4 +2,6 @@ export * from '@/types/actions.js'
2
2
  export * from '@/types/asset.js'
3
3
  export * from '@/types/chain.js'
4
4
  export * from '@/types/lend/index.js'
5
+ export * from '@/types/swap/index.js'
6
+ export * from '@/types/transaction.js'
5
7
  export * from '@/types/wallet.js'
@@ -1,7 +1,9 @@
1
- import type { Address, Hex } from 'viem'
1
+ import type { Address } from 'viem'
2
2
 
3
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
4
4
  import type { Asset } from '@/types/asset.js'
5
+ // Import and re-export shared transaction type for backwards compatibility
6
+ import type { TransactionData } from '@/types/transaction.js'
5
7
  import type {
6
8
  BatchTransactionReturnType,
7
9
  TransactionReturnType,
@@ -10,6 +12,7 @@ import type {
10
12
  export { LendProvider } from '@/lend/core/LendProvider.js'
11
13
  export { ActionsLendNamespace } from '@/lend/namespaces/ActionsLendNamespace.js'
12
14
  export { WalletLendNamespace } from '@/lend/namespaces/WalletLendNamespace.js'
15
+ export type { TransactionData }
13
16
 
14
17
  /**
15
18
  * Lending market identifier
@@ -45,19 +48,6 @@ export type LendMarketConfig = LendMarketId & LendMarketConfigMetadata
45
48
  */
46
49
  export type GetLendMarketParams = LendMarketId
47
50
 
48
- /**
49
- * Transaction data for execution
50
- * @description Raw transaction data for wallet execution
51
- */
52
- export interface TransactionData {
53
- /** Target contract address */
54
- to: Address
55
- /** Encoded function call data */
56
- data: Hex
57
- /** ETH value to send */
58
- value: bigint
59
- }
60
-
61
51
  /**
62
52
  * Supply metrics for a lending market
63
53
  * @description Total assets and shares in the vault
@@ -83,16 +73,13 @@ export interface LendTransaction {
83
73
  marketId: string
84
74
  /** Estimated APY at time of lending */
85
75
  apy: number
86
- /** Transaction data for execution (optional) */
87
- transactionData?: {
76
+ /** Transaction data for execution */
77
+ transactionData: {
88
78
  /** Approval transaction (if needed) */
89
79
  approval?: TransactionData
90
- /** Main operation transaction (openPosition or closePosition) */
91
- openPosition?: TransactionData
92
- closePosition?: TransactionData
80
+ /** Main position transaction */
81
+ position: TransactionData
93
82
  }
94
- /** Slippage tolerance used */
95
- slippage?: number
96
83
  }
97
84
 
98
85
  /**
@@ -204,8 +191,6 @@ export interface LendMarket {
204
191
  * @description Configuration options for lending operations
205
192
  */
206
193
  export interface LendOptions {
207
- /** Maximum slippage tolerance (basis points) */
208
- slippage?: number
209
194
  /** Deadline for transaction (timestamp) */
210
195
  deadline?: number
211
196
  /** Gas limit override */
@@ -268,8 +253,10 @@ export interface LendOpenPositionParams extends LendOpenPositionBaseParams {
268
253
  /**
269
254
  * Internal parameters for provider _openPosition method with amount already converted to wei
270
255
  */
271
- export interface LendOpenPositionInternalParams
272
- extends Omit<LendOpenPositionBaseParams, 'walletAddress'> {
256
+ export interface LendOpenPositionInternalParams extends Omit<
257
+ LendOpenPositionBaseParams,
258
+ 'walletAddress'
259
+ > {
273
260
  /** Amount to lend in wei */
274
261
  amountWei: bigint
275
262
  /** Wallet address for receiving shares and as owner (required in internal params) */
@@ -0,0 +1,18 @@
1
+ import type { Address } from 'viem'
2
+
3
+ /**
4
+ * Morpho contract addresses needed per chain
5
+ */
6
+ export interface MorphoContracts {
7
+ /** Morpho Blue core contract - market state, positions, supply/withdraw */
8
+ morphoBlue: Address
9
+ /** Interest Rate Model contract - borrow rate calculation for APY */
10
+ irm: Address
11
+ /** MetaMorpho vault factory (optional, only for vault creation) */
12
+ metaMorphoFactory?: Address
13
+ }
14
+
15
+ /**
16
+ * Registry mapping chainId to Morpho contracts
17
+ */
18
+ export type MorphoContractsRegistry = Record<number, MorphoContracts>
@@ -1,2 +1,3 @@
1
1
  export * from '@/types/lend/base.js'
2
+ export * from '@/types/lend/contracts.js'
2
3
  export * from '@/types/lend/morpho.js'
@@ -0,0 +1,259 @@
1
+ import type { Address } from 'viem'
2
+
3
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
4
+ import type { SwapProvider } from '@/swap/core/SwapProvider.js'
5
+ import type { Asset } from '@/types/asset.js'
6
+ import type { TransactionData } from '@/types/transaction.js'
7
+ import type {
8
+ BatchTransactionReturnType,
9
+ TransactionReturnType,
10
+ } from '@/wallet/core/wallets/abstract/types/index.js'
11
+
12
+ export { SwapProvider } from '@/swap/core/SwapProvider.js'
13
+ export { ActionsSwapNamespace } from '@/swap/namespaces/ActionsSwapNamespace.js'
14
+ export { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
15
+
16
+ /**
17
+ * Map of available swap providers keyed by provider name
18
+ */
19
+ export type SwapProviders = {
20
+ uniswap?: SwapProvider<SwapProviderConfig>
21
+ }
22
+
23
+ /**
24
+ * Swap provider configuration
25
+ * @description Configuration for a single swap provider (mirrors LendProviderConfig pattern)
26
+ */
27
+ export interface SwapProviderConfig {
28
+ /** Default slippage tolerance (e.g., 0.005 for 0.5%) */
29
+ defaultSlippage?: number
30
+ /** Maximum allowed slippage (e.g., 0.5 for 50%). Defaults to 0.5. */
31
+ maxSlippage?: number
32
+ /** Allowlist of swap markets (optional - defaults to all supported assets) */
33
+ marketAllowlist?: SwapMarketConfig[]
34
+ /** Blocklist of swap markets to exclude */
35
+ marketBlocklist?: SwapMarketConfig[]
36
+ }
37
+
38
+ /**
39
+ * Swap market filter
40
+ * @description Define allowed/blocked trading markets by assets.
41
+ * 2 assets = one explicit pair. 3+ = all pairs between them.
42
+ */
43
+ export interface SwapMarketConfig {
44
+ /** 2 assets = one explicit pair. 3+ = all pairs between them. */
45
+ assets: [Asset, Asset, ...Asset[]]
46
+ /** Restrict to a specific chain. Omit = all configured chains. */
47
+ chainId?: SupportedChainId
48
+ }
49
+
50
+ /**
51
+ * Swap market identifier
52
+ * @description Unique identifier for a swap market (mirrors LendMarketId pattern)
53
+ */
54
+ export type SwapMarketId = {
55
+ /** Pool identifier (keccak256 hash of PoolKey) */
56
+ poolId: string
57
+ /** Chain ID where this market exists */
58
+ chainId: SupportedChainId
59
+ }
60
+
61
+ /**
62
+ * Parameters for getting a specific swap market
63
+ */
64
+ export type GetSwapMarketParams = SwapMarketId
65
+
66
+ /**
67
+ * Parameters for getting swap markets
68
+ */
69
+ export interface GetSwapMarketsParams {
70
+ /** Filter by chain ID */
71
+ chainId?: SupportedChainId
72
+ /** Filter by asset (returns markets containing this asset) */
73
+ asset?: Asset
74
+ }
75
+
76
+ /**
77
+ * Parameters for a wallet swap — what the developer passes.
78
+ * Exactly one of amountIn or amountOut must be provided.
79
+ */
80
+ export interface WalletSwapParams {
81
+ /** Amount of input token (human-readable). For exact-in swaps. Mutually exclusive with amountOut. */
82
+ amountIn?: number
83
+ /** Amount of output token (human-readable). For exact-out swaps. Mutually exclusive with amountIn. */
84
+ amountOut?: number
85
+ /** Token to sell */
86
+ assetIn: Asset
87
+ /** Token to buy */
88
+ assetOut: Asset
89
+ /** Chain to execute swap on */
90
+ chainId: SupportedChainId
91
+ /** Slippage tolerance override (e.g., 0.01 for 1%). Overrides provider and config defaults. */
92
+ slippage?: number
93
+ /** Transaction deadline as Unix timestamp. Defaults to now + 1 minute. */
94
+ deadline?: number
95
+ /** Recipient address. Defaults to wallet address. */
96
+ recipient?: Address
97
+ }
98
+
99
+ /**
100
+ * Full swap execute parameters including wallet address.
101
+ * walletAddress is auto-injected by the wallet namespace.
102
+ */
103
+ export interface SwapExecuteParams extends WalletSwapParams {
104
+ walletAddress: Address
105
+ }
106
+
107
+ /**
108
+ * Fully resolved swap parameters with defaults applied and amounts in wei.
109
+ * Passed to provider _execute() implementations.
110
+ */
111
+ export interface ResolvedSwapParams {
112
+ amountInWei?: bigint
113
+ amountOutWei?: bigint
114
+ assetIn: Asset
115
+ assetOut: Asset
116
+ slippage: number
117
+ deadline: number
118
+ recipient: Address
119
+ walletAddress: Address
120
+ chainId: SupportedChainId
121
+ }
122
+
123
+ /**
124
+ * Parameters for getting a swap price quote
125
+ * @description Specify either amountIn (for exact-in) or amountOut (for exact-out),
126
+ * not both. Amounts should be human-readable numbers (e.g., 100 for 100 USDC).
127
+ */
128
+ export interface SwapPriceParams {
129
+ /** Token to get price for (required) */
130
+ assetIn: Asset
131
+ /** Token to price against. Defaults to USDC if not provided. */
132
+ assetOut?: Asset
133
+ /** Amount of input token (human-readable). Defaults to 1 unit. For exact-in quotes. */
134
+ amountIn?: number
135
+ /** Amount of output token (human-readable). For exact-out quotes. */
136
+ amountOut?: number
137
+ /** Chain to get price on */
138
+ chainId: SupportedChainId
139
+ }
140
+
141
+ /**
142
+ * Market information for a swap hop
143
+ */
144
+ export interface SwapMarketInfo {
145
+ /** Market address or identifier */
146
+ address: Address
147
+ /** Fee tier in pips */
148
+ fee: number
149
+ /** Protocol version used (v2, v3, v4) */
150
+ version: 'v2' | 'v3' | 'v4'
151
+ }
152
+
153
+ /**
154
+ * Swap route information
155
+ */
156
+ export interface SwapRoute {
157
+ /** Ordered list of assets in the route path */
158
+ path: Asset[]
159
+ /** Market information for each hop */
160
+ pools: SwapMarketInfo[]
161
+ }
162
+
163
+ /**
164
+ * Swap price quote response
165
+ */
166
+ export interface SwapPrice {
167
+ /** Exchange rate as human-readable string (e.g., "3245.50") */
168
+ price: string
169
+ /** Inverse exchange rate */
170
+ priceInverse: string
171
+ /** Human-readable input amount */
172
+ amountIn: number
173
+ /** Human-readable output amount */
174
+ amountOut: number
175
+ /** Input amount in wei */
176
+ amountInWei: bigint
177
+ /** Expected output amount in wei */
178
+ amountOutWei: bigint
179
+ /** Price impact as decimal (0.03 = 3%). Derived from pool mid-price vs execution price. */
180
+ priceImpact: number
181
+ /** Route taken for the swap */
182
+ route: SwapRoute
183
+ /** Estimated gas cost in wei */
184
+ gasEstimate?: bigint
185
+ }
186
+
187
+ /**
188
+ * Transaction data for swap execution
189
+ */
190
+ export interface SwapTransactionData {
191
+ /** Permit2 approval transaction (if needed) */
192
+ permit2Approval?: TransactionData
193
+ /** Token approval to Permit2 (if needed) */
194
+ tokenApproval?: TransactionData
195
+ /** Main swap transaction */
196
+ swap: TransactionData
197
+ }
198
+
199
+ /**
200
+ * Swap transaction result
201
+ */
202
+ export interface SwapTransaction {
203
+ /** Human-readable input amount */
204
+ amountIn: number
205
+ /** Human-readable output amount */
206
+ amountOut: number
207
+ /** Input amount in wei */
208
+ amountInWei: bigint
209
+ /** Output amount in wei (expected) */
210
+ amountOutWei: bigint
211
+ /** Input asset */
212
+ assetIn: Asset
213
+ /** Output asset */
214
+ assetOut: Asset
215
+ /** Execution price */
216
+ price: string
217
+ /** Price impact as decimal (0.03 = 3%) */
218
+ priceImpact: number
219
+ /** Transaction data for execution */
220
+ transactionData: SwapTransactionData
221
+ }
222
+
223
+ /**
224
+ * Swap execution receipt
225
+ */
226
+ export interface SwapReceipt {
227
+ /** Transaction receipt(s) */
228
+ receipt: TransactionReturnType | BatchTransactionReturnType
229
+ /** Human-readable input amount */
230
+ amountIn: number
231
+ /** Human-readable output amount */
232
+ amountOut: number
233
+ /** Actual input amount in wei */
234
+ amountInWei: bigint
235
+ /** Actual output amount in wei */
236
+ amountOutWei: bigint
237
+ /** Input asset */
238
+ assetIn: Asset
239
+ /** Output asset */
240
+ assetOut: Asset
241
+ /** Execution price as human-readable string */
242
+ price: string
243
+ /** Price impact as decimal (0.03 = 3%) */
244
+ priceImpact: number
245
+ }
246
+
247
+ /**
248
+ * Swap market information
249
+ */
250
+ export interface SwapMarket {
251
+ /** Market identifier (contains poolId and chainId) */
252
+ marketId: SwapMarketId
253
+ /** Token pair in the market */
254
+ assets: [Asset, Asset]
255
+ /** Fee tier in pips (500 = 0.05%) */
256
+ fee: number
257
+ /** Provider name */
258
+ provider: 'uniswap'
259
+ }
@@ -0,0 +1 @@
1
+ export * from '@/types/swap/base.js'
@@ -0,0 +1,14 @@
1
+ import type { Address, Hex } from 'viem'
2
+
3
+ /**
4
+ * Transaction data for execution
5
+ * @description Raw transaction data for wallet execution
6
+ */
7
+ export interface TransactionData {
8
+ /** Target contract address */
9
+ to: Address
10
+ /** Encoded function call data */
11
+ data: Hex
12
+ /** ETH value to send */
13
+ value: bigint
14
+ }
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, it } from 'vitest'
2
2
 
3
- import { MockUSDCAsset, MockWETHAsset } from '@/test/MockAssets.js'
4
- import { isAssetSupportedOnChain } from '@/utils/assets.js'
3
+ import { MockUSDCAsset, MockWETHAsset } from '@/__mocks__/MockAssets.js'
4
+ import { isAssetSupportedOnChain, parseAssetAmount } from '@/utils/assets.js'
5
5
 
6
6
  describe('Asset Utilities', () => {
7
7
  describe('isAssetSupportedOnChain', () => {
@@ -25,4 +25,19 @@ describe('Asset Utilities', () => {
25
25
  expect(MockWETHAsset.type).toBe('erc20')
26
26
  })
27
27
  })
28
+
29
+ describe('parseAssetAmount', () => {
30
+ it('converts human-readable amount to wei using asset decimals', () => {
31
+ expect(parseAssetAmount(MockUSDCAsset, 100)).toBe(100000000n)
32
+ expect(parseAssetAmount(MockWETHAsset, 1)).toBe(1000000000000000000n)
33
+ })
34
+
35
+ it('returns undefined when amount is undefined', () => {
36
+ expect(parseAssetAmount(MockUSDCAsset, undefined)).toBeUndefined()
37
+ })
38
+
39
+ it('handles fractional amounts', () => {
40
+ expect(parseAssetAmount(MockUSDCAsset, 0.5)).toBe(500000n)
41
+ })
42
+ })
28
43
  })
@@ -5,17 +5,20 @@ import type { SupportedChainId } from '@/constants/supportedChains.js'
5
5
  import type { Asset } from '@/types/asset.js'
6
6
 
7
7
  /**
8
- * Parse human-readable amount to wei/smallest unit
9
- * @param amount - Human-readable amount (e.g. 1.5)
10
- * @param decimals - Token decimals
11
- * @returns Amount in smallest unit (wei equivalent)
8
+ * Parse human-readable amount to wei using an asset's decimals.
9
+ * Returns undefined when amount is undefined.
12
10
  */
13
- export function parseAssetAmount(amount: number, decimals: number): bigint {
14
- // Convert number to string with proper precision
15
- const amountStr = amount.toString()
16
-
17
- // Use viem's parseUnits for proper decimal handling
18
- return parseUnits(amountStr, decimals)
11
+ export function parseAssetAmount(asset: Asset, amount: number): bigint
12
+ export function parseAssetAmount(
13
+ asset: Asset,
14
+ amount: number | undefined,
15
+ ): bigint | undefined
16
+ export function parseAssetAmount(
17
+ asset: Asset,
18
+ amount: number | undefined,
19
+ ): bigint | undefined {
20
+ if (amount === undefined) return undefined
21
+ return parseUnits(amount.toString(), asset.metadata.decimals)
19
22
  }
20
23
 
21
24
  /**
@@ -37,6 +40,15 @@ export function formatAssetAmount(amount: bigint, decimals: number): number {
37
40
  return parseFloat(result)
38
41
  }
39
42
 
43
+ /**
44
+ * Check if asset is a native asset (e.g. ETH)
45
+ * @param asset - Asset definition
46
+ * @returns Whether the asset is native
47
+ */
48
+ export function isNativeAsset(asset: Asset): boolean {
49
+ return asset.type === 'native'
50
+ }
51
+
40
52
  /**
41
53
  * Check if asset is supported on a specific chain
42
54
  * @param asset - Asset definition
@@ -55,7 +67,7 @@ export function isAssetSupportedOnChain(
55
67
  * @param asset - Asset definition
56
68
  * @param chainId - Chain ID
57
69
  * @returns Asset address on the specified chain
58
- * @throws Error if asset is not supported on the chain
70
+ * @throws Error if asset is not supported on the chain or is a native asset
59
71
  */
60
72
  export function getAssetAddress(
61
73
  asset: Asset,
@@ -67,5 +79,10 @@ export function getAssetAddress(
67
79
  `Asset ${asset.metadata.symbol} is not supported on chain ${chainId}`,
68
80
  )
69
81
  }
82
+ if (address === 'native') {
83
+ throw new Error(
84
+ `Asset ${asset.metadata.symbol} is a native asset and has no contract address.`,
85
+ )
86
+ }
70
87
  return address
71
88
  }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Seconds per year for APY calculations (365 days)
3
+ */
4
+ export const SECONDS_PER_YEAR = 31536000n