@eth-optimism/actions-sdk 0.5.0 → 0.7.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 (815) hide show
  1. package/dist/__tests__/actions.test.js +1 -1
  2. package/dist/__tests__/actions.test.js.map +1 -1
  3. package/dist/{lend → actions/lend}/__mocks__/MockLendProvider.d.ts +6 -6
  4. package/dist/actions/lend/__mocks__/MockLendProvider.d.ts.map +1 -0
  5. package/dist/{lend → actions/lend}/__mocks__/MockLendProvider.js +20 -7
  6. package/dist/actions/lend/__mocks__/MockLendProvider.js.map +1 -0
  7. package/dist/{lend → actions/lend}/__mocks__/MockMarkets.d.ts +1 -1
  8. package/dist/actions/lend/__mocks__/MockMarkets.d.ts.map +1 -0
  9. package/dist/{lend → actions/lend}/__mocks__/MockMarkets.js +1 -1
  10. package/dist/actions/lend/__mocks__/MockMarkets.js.map +1 -0
  11. package/dist/{lend → actions/lend}/__mocks__/mockLendTransaction.d.ts +2 -2
  12. package/dist/actions/lend/__mocks__/mockLendTransaction.d.ts.map +1 -0
  13. package/dist/{lend → actions/lend}/__mocks__/mockLendTransaction.js +1 -1
  14. package/dist/actions/lend/__mocks__/mockLendTransaction.js.map +1 -0
  15. package/dist/{lend → actions/lend}/core/LendProvider.d.ts +38 -22
  16. package/dist/actions/lend/core/LendProvider.d.ts.map +1 -0
  17. package/dist/{lend → actions/lend}/core/LendProvider.js +62 -23
  18. package/dist/actions/lend/core/LendProvider.js.map +1 -0
  19. package/dist/actions/lend/core/__tests__/LendProvider.test.d.ts.map +1 -0
  20. package/dist/{lend → actions/lend}/core/__tests__/LendProvider.test.js +57 -3
  21. package/dist/actions/lend/core/__tests__/LendProvider.test.js.map +1 -0
  22. package/dist/actions/lend/index.d.ts.map +1 -0
  23. package/dist/actions/lend/index.js.map +1 -0
  24. package/dist/actions/lend/namespaces/ActionsLendNamespace.d.ts.map +1 -0
  25. package/dist/actions/lend/namespaces/ActionsLendNamespace.js.map +1 -0
  26. package/dist/actions/lend/namespaces/BaseLendNamespace.d.ts +33 -0
  27. package/dist/actions/lend/namespaces/BaseLendNamespace.d.ts.map +1 -0
  28. package/dist/{lend → actions/lend}/namespaces/BaseLendNamespace.js +11 -24
  29. package/dist/actions/lend/namespaces/BaseLendNamespace.js.map +1 -0
  30. package/dist/{lend → actions/lend}/namespaces/WalletLendNamespace.d.ts +8 -11
  31. package/dist/actions/lend/namespaces/WalletLendNamespace.d.ts.map +1 -0
  32. package/dist/{lend → actions/lend}/namespaces/WalletLendNamespace.js +13 -15
  33. package/dist/actions/lend/namespaces/WalletLendNamespace.js.map +1 -0
  34. package/dist/actions/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +1 -0
  35. package/dist/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.js +1 -1
  36. package/dist/actions/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +1 -0
  37. package/dist/actions/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +1 -0
  38. package/dist/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.js +2 -2
  39. package/dist/actions/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -0
  40. package/dist/actions/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +1 -0
  41. package/dist/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.js +5 -5
  42. package/dist/actions/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +1 -0
  43. package/dist/{lend → actions/lend}/providers/aave/AaveLendProvider.d.ts +18 -20
  44. package/dist/actions/lend/providers/aave/AaveLendProvider.d.ts.map +1 -0
  45. package/dist/{lend → actions/lend}/providers/aave/AaveLendProvider.js +56 -54
  46. package/dist/actions/lend/providers/aave/AaveLendProvider.js.map +1 -0
  47. package/dist/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.d.ts +1 -1
  48. package/dist/actions/lend/providers/aave/__mocks__/mockReserve.d.ts.map +1 -0
  49. package/dist/actions/lend/providers/aave/__mocks__/mockReserve.js.map +1 -0
  50. package/dist/actions/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +1 -0
  51. package/dist/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.js +4 -4
  52. package/dist/actions/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -0
  53. package/dist/actions/lend/providers/aave/abis/pool.d.ts.map +1 -0
  54. package/dist/actions/lend/providers/aave/abis/pool.js.map +1 -0
  55. package/dist/actions/lend/providers/aave/addresses.d.ts.map +1 -0
  56. package/dist/actions/lend/providers/aave/addresses.js.map +1 -0
  57. package/dist/{lend → actions/lend}/providers/aave/sdk.d.ts +4 -4
  58. package/dist/actions/lend/providers/aave/sdk.d.ts.map +1 -0
  59. package/dist/{lend → actions/lend}/providers/aave/sdk.js +10 -5
  60. package/dist/actions/lend/providers/aave/sdk.js.map +1 -0
  61. package/dist/{lend → actions/lend}/providers/morpho/MorphoLendProvider.d.ts +18 -14
  62. package/dist/actions/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -0
  63. package/dist/{lend → actions/lend}/providers/morpho/MorphoLendProvider.js +48 -44
  64. package/dist/actions/lend/providers/morpho/MorphoLendProvider.js.map +1 -0
  65. package/dist/actions/lend/providers/morpho/__mocks__/mockVault.d.ts.map +1 -0
  66. package/dist/actions/lend/providers/morpho/__mocks__/mockVault.js.map +1 -0
  67. package/dist/actions/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +1 -0
  68. package/dist/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.js +58 -3
  69. package/dist/actions/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +1 -0
  70. package/dist/actions/lend/providers/morpho/__tests__/api.test.d.ts.map +1 -0
  71. package/dist/{lend → actions/lend}/providers/morpho/__tests__/api.test.js +2 -2
  72. package/dist/actions/lend/providers/morpho/__tests__/api.test.js.map +1 -0
  73. package/dist/actions/lend/providers/morpho/__tests__/sdk.test.d.ts.map +1 -0
  74. package/dist/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.js +1 -1
  75. package/dist/actions/lend/providers/morpho/__tests__/sdk.test.js.map +1 -0
  76. package/dist/actions/lend/providers/morpho/api.d.ts.map +1 -0
  77. package/dist/actions/lend/providers/morpho/api.js.map +1 -0
  78. package/dist/{lend → actions/lend}/providers/morpho/sdk.d.ts +4 -4
  79. package/dist/actions/lend/providers/morpho/sdk.d.ts.map +1 -0
  80. package/dist/{lend → actions/lend}/providers/morpho/sdk.js +18 -7
  81. package/dist/actions/lend/providers/morpho/sdk.js.map +1 -0
  82. package/dist/actions/lend/utils/markets.d.ts +26 -0
  83. package/dist/actions/lend/utils/markets.d.ts.map +1 -0
  84. package/dist/actions/lend/utils/markets.js +44 -0
  85. package/dist/actions/lend/utils/markets.js.map +1 -0
  86. package/dist/actions/shared/BaseNamespace.d.ts +29 -0
  87. package/dist/actions/shared/BaseNamespace.d.ts.map +1 -0
  88. package/dist/actions/shared/BaseNamespace.js +31 -0
  89. package/dist/actions/shared/BaseNamespace.js.map +1 -0
  90. package/dist/actions/shared/__tests__/BaseNamespace.spec.d.ts +2 -0
  91. package/dist/actions/shared/__tests__/BaseNamespace.spec.d.ts.map +1 -0
  92. package/dist/actions/shared/__tests__/BaseNamespace.spec.js +42 -0
  93. package/dist/actions/shared/__tests__/BaseNamespace.spec.js.map +1 -0
  94. package/dist/{lend/providers → actions/shared}/morpho/contracts.d.ts +2 -2
  95. package/dist/actions/shared/morpho/contracts.d.ts.map +1 -0
  96. package/dist/{lend/providers → actions/shared}/morpho/contracts.js +1 -1
  97. package/dist/{lend/providers → actions/shared}/morpho/contracts.js.map +1 -1
  98. package/dist/{types/lend/contracts.d.ts → actions/shared/morpho/types.d.ts} +2 -2
  99. package/dist/actions/shared/morpho/types.d.ts.map +1 -0
  100. package/dist/actions/shared/morpho/types.js.map +1 -0
  101. package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.d.ts +7 -6
  102. package/dist/actions/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  103. package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.js +5 -2
  104. package/dist/actions/swap/__mocks__/MockSwapProvider.js.map +1 -0
  105. package/dist/{swap → actions/swap}/core/SwapProvider.d.ts +29 -14
  106. package/dist/actions/swap/core/SwapProvider.d.ts.map +1 -0
  107. package/dist/{swap → actions/swap}/core/SwapProvider.js +58 -39
  108. package/dist/actions/swap/core/SwapProvider.js.map +1 -0
  109. package/dist/actions/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  110. package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.js +39 -0
  111. package/dist/actions/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  112. package/dist/{swap → actions/swap}/core/markets.d.ts +3 -3
  113. package/dist/actions/swap/core/markets.d.ts.map +1 -0
  114. package/dist/{swap → actions/swap}/core/markets.js +2 -1
  115. package/dist/actions/swap/core/markets.js.map +1 -0
  116. package/dist/actions/swap/index.d.ts.map +1 -0
  117. package/dist/actions/swap/index.js.map +1 -0
  118. package/dist/actions/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  119. package/dist/actions/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  120. package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.d.ts +25 -28
  121. package/dist/actions/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  122. package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.js +58 -59
  123. package/dist/actions/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  124. package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts +56 -0
  125. package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  126. package/dist/{swap → actions/swap}/namespaces/WalletSwapNamespace.js +46 -23
  127. package/dist/actions/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  128. package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  129. package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.js +2 -2
  130. package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  131. package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.js +83 -19
  133. package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.d.ts +8 -5
  135. package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.js +14 -5
  137. package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  139. package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.js +1 -1
  140. package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  141. package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  142. package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.js +47 -1
  143. package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  144. package/dist/actions/swap/providers/uniswap/abis.d.ts.map +1 -0
  145. package/dist/actions/swap/providers/uniswap/abis.js.map +1 -0
  146. package/dist/{swap → actions/swap}/providers/uniswap/addresses.d.ts +1 -1
  147. package/dist/actions/swap/providers/uniswap/addresses.d.ts.map +1 -0
  148. package/dist/{swap → actions/swap}/providers/uniswap/addresses.js +6 -2
  149. package/dist/actions/swap/providers/uniswap/addresses.js.map +1 -0
  150. package/dist/{swap → actions/swap}/providers/uniswap/encoding.d.ts +3 -3
  151. package/dist/actions/swap/providers/uniswap/encoding.d.ts.map +1 -0
  152. package/dist/{swap → actions/swap}/providers/uniswap/encoding.js +2 -2
  153. package/dist/actions/swap/providers/uniswap/encoding.js.map +1 -0
  154. package/dist/{swap → actions/swap}/providers/uniswap/markets.d.ts +3 -3
  155. package/dist/actions/swap/providers/uniswap/markets.d.ts.map +1 -0
  156. package/dist/{swap → actions/swap}/providers/uniswap/markets.js +1 -1
  157. package/dist/actions/swap/providers/uniswap/markets.js.map +1 -0
  158. package/dist/{swap → actions/swap}/providers/uniswap/types.d.ts +1 -1
  159. package/dist/actions/swap/providers/uniswap/types.d.ts.map +1 -0
  160. package/dist/actions/swap/providers/uniswap/types.js.map +1 -0
  161. package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.d.ts +9 -4
  162. package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  163. package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.js +37 -11
  164. package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  165. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  166. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  167. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  168. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +7 -6
  169. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  170. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  171. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +39 -4
  172. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  173. package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  174. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.js +22 -1
  175. package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  176. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.d.ts +1 -1
  177. package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  178. package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  179. package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  180. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.js +25 -1
  181. package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  182. package/dist/actions/swap/providers/velodrome/abis.d.ts.map +1 -0
  183. package/dist/actions/swap/providers/velodrome/abis.js.map +1 -0
  184. package/dist/{swap → actions/swap}/providers/velodrome/addresses.d.ts +1 -1
  185. package/dist/actions/swap/providers/velodrome/addresses.d.ts.map +1 -0
  186. package/dist/actions/swap/providers/velodrome/addresses.js.map +1 -0
  187. package/dist/{swap → actions/swap}/providers/velodrome/config.d.ts +1 -1
  188. package/dist/actions/swap/providers/velodrome/config.d.ts.map +1 -0
  189. package/dist/{swap → actions/swap}/providers/velodrome/config.js +5 -1
  190. package/dist/actions/swap/providers/velodrome/config.js.map +1 -0
  191. package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.d.ts +3 -3
  192. package/dist/actions/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  193. package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.js +4 -3
  194. package/dist/actions/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  195. package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.d.ts +0 -1
  196. package/dist/actions/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  197. package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.js +0 -1
  198. package/dist/actions/swap/providers/velodrome/encoding/index.js.map +1 -0
  199. package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.d.ts +3 -3
  200. package/dist/actions/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  201. package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.js +2 -1
  202. package/dist/actions/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  203. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.d.ts +24 -3
  204. package/dist/actions/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  205. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.js +22 -10
  206. package/dist/actions/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  207. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.d.ts +23 -3
  208. package/dist/actions/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  209. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.js +24 -13
  210. package/dist/actions/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  211. package/dist/{swap → actions/swap}/providers/velodrome/markets.d.ts +3 -3
  212. package/dist/actions/swap/providers/velodrome/markets.d.ts.map +1 -0
  213. package/dist/{swap → actions/swap}/providers/velodrome/markets.js +4 -3
  214. package/dist/actions/swap/providers/velodrome/markets.js.map +1 -0
  215. package/dist/{swap → actions/swap}/providers/velodrome/types.d.ts +1 -1
  216. package/dist/actions/swap/providers/velodrome/types.d.ts.map +1 -0
  217. package/dist/actions/swap/providers/velodrome/types.js +2 -0
  218. package/dist/actions/swap/providers/velodrome/types.js.map +1 -0
  219. package/dist/actions.d.ts +4 -3
  220. package/dist/actions.d.ts.map +1 -1
  221. package/dist/actions.js +45 -22
  222. package/dist/actions.js.map +1 -1
  223. package/dist/constants/supportedChains.d.ts +5790 -2
  224. package/dist/constants/supportedChains.d.ts.map +1 -1
  225. package/dist/constants/supportedChains.js +66 -20
  226. package/dist/constants/supportedChains.js.map +1 -1
  227. package/dist/core/error/__tests__/errors.test.d.ts +2 -0
  228. package/dist/core/error/__tests__/errors.test.d.ts.map +1 -0
  229. package/dist/core/error/__tests__/errors.test.js +195 -0
  230. package/dist/core/error/__tests__/errors.test.js.map +1 -0
  231. package/dist/core/error/errors.d.ts +155 -15
  232. package/dist/core/error/errors.d.ts.map +1 -1
  233. package/dist/core/error/errors.js +229 -17
  234. package/dist/core/error/errors.js.map +1 -1
  235. package/dist/index.d.ts +10 -6
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js +9 -5
  238. package/dist/index.js.map +1 -1
  239. package/dist/services/ChainManager.d.ts.map +1 -1
  240. package/dist/services/ChainManager.js +42 -7
  241. package/dist/services/ChainManager.js.map +1 -1
  242. package/dist/services/__tests__/ChainManager.spec.d.ts.map +1 -0
  243. package/dist/services/{ChainManager.spec.js → __tests__/ChainManager.spec.js} +7 -7
  244. package/dist/services/__tests__/ChainManager.spec.js.map +1 -0
  245. package/dist/services/__tests__/tokenBalance.spec.d.ts.map +1 -0
  246. package/dist/services/{tokenBalance.spec.js → __tests__/tokenBalance.spec.js} +42 -5
  247. package/dist/services/__tests__/tokenBalance.spec.js.map +1 -0
  248. package/dist/{ens → services/nameservices/ens}/EnsNamespace.d.ts +1 -1
  249. package/dist/services/nameservices/ens/EnsNamespace.d.ts.map +1 -0
  250. package/dist/{ens → services/nameservices/ens}/EnsNamespace.js +1 -1
  251. package/dist/services/nameservices/ens/EnsNamespace.js.map +1 -0
  252. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.d.ts.map +1 -0
  253. package/dist/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.js +2 -2
  254. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.js.map +1 -0
  255. package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts +2 -0
  256. package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts.map +1 -0
  257. package/dist/{utils/ens.test.js → services/nameservices/ens/__tests__/utils.spec.js} +3 -3
  258. package/dist/services/nameservices/ens/__tests__/utils.spec.js.map +1 -0
  259. package/dist/services/nameservices/ens/errors.d.ts.map +1 -0
  260. package/dist/services/nameservices/ens/errors.js.map +1 -0
  261. package/dist/{ens → services/nameservices/ens}/index.d.ts +1 -0
  262. package/dist/services/nameservices/ens/index.d.ts.map +1 -0
  263. package/dist/{ens → services/nameservices/ens}/index.js +1 -0
  264. package/dist/services/nameservices/ens/index.js.map +1 -0
  265. package/dist/{ens → services/nameservices/ens}/types.d.ts +1 -1
  266. package/dist/services/nameservices/ens/types.d.ts.map +1 -0
  267. package/dist/services/nameservices/ens/types.js.map +1 -0
  268. package/dist/{utils/ens.d.ts → services/nameservices/ens/utils.d.ts} +3 -3
  269. package/dist/services/nameservices/ens/utils.d.ts.map +1 -0
  270. package/dist/{utils/ens.js → services/nameservices/ens/utils.js} +3 -3
  271. package/dist/services/nameservices/ens/utils.js.map +1 -0
  272. package/dist/services/tokenBalance.d.ts +8 -5
  273. package/dist/services/tokenBalance.d.ts.map +1 -1
  274. package/dist/services/tokenBalance.js +15 -8
  275. package/dist/services/tokenBalance.js.map +1 -1
  276. package/dist/types/actions.d.ts +80 -13
  277. package/dist/types/actions.d.ts.map +1 -1
  278. package/dist/types/actions.js +22 -1
  279. package/dist/types/actions.js.map +1 -1
  280. package/dist/types/asset.d.ts +7 -0
  281. package/dist/types/asset.d.ts.map +1 -1
  282. package/dist/types/common/FilterAssetChain.d.ts +13 -0
  283. package/dist/types/common/FilterAssetChain.d.ts.map +1 -0
  284. package/dist/types/common/FilterAssetChain.js +2 -0
  285. package/dist/types/common/FilterAssetChain.js.map +1 -0
  286. package/dist/types/common/TransactionOptions.d.ts +13 -0
  287. package/dist/types/common/TransactionOptions.d.ts.map +1 -0
  288. package/dist/types/common/TransactionOptions.js +2 -0
  289. package/dist/types/common/TransactionOptions.js.map +1 -0
  290. package/dist/types/common/index.d.ts +3 -0
  291. package/dist/types/common/index.d.ts.map +1 -0
  292. package/dist/types/common/index.js +3 -0
  293. package/dist/types/common/index.js.map +1 -0
  294. package/dist/types/index.d.ts +1 -0
  295. package/dist/types/index.d.ts.map +1 -1
  296. package/dist/types/index.js +1 -0
  297. package/dist/types/index.js.map +1 -1
  298. package/dist/types/lend/base.d.ts +44 -34
  299. package/dist/types/lend/base.d.ts.map +1 -1
  300. package/dist/types/lend/base.js +3 -3
  301. package/dist/types/lend/base.js.map +1 -1
  302. package/dist/types/lend/index.d.ts +0 -1
  303. package/dist/types/lend/index.d.ts.map +1 -1
  304. package/dist/types/lend/index.js +0 -1
  305. package/dist/types/lend/index.js.map +1 -1
  306. package/dist/types/providers.d.ts +22 -8
  307. package/dist/types/providers.d.ts.map +1 -1
  308. package/dist/types/providers.js +12 -1
  309. package/dist/types/providers.js.map +1 -1
  310. package/dist/types/swap/base.d.ts +25 -13
  311. package/dist/types/swap/base.d.ts.map +1 -1
  312. package/dist/types/swap/base.js +3 -3
  313. package/dist/types/swap/base.js.map +1 -1
  314. package/dist/utils/__tests__/approve.test.d.ts.map +1 -0
  315. package/dist/utils/{approve.test.js → __tests__/approve.test.js} +40 -18
  316. package/dist/utils/__tests__/approve.test.js.map +1 -0
  317. package/dist/utils/__tests__/assets.test.d.ts.map +1 -0
  318. package/dist/utils/{assets.test.js → __tests__/assets.test.js} +2 -2
  319. package/dist/utils/__tests__/assets.test.js.map +1 -0
  320. package/dist/utils/__tests__/lendConfig.test.d.ts +2 -0
  321. package/dist/utils/__tests__/lendConfig.test.d.ts.map +1 -0
  322. package/dist/utils/__tests__/lendConfig.test.js +44 -0
  323. package/dist/utils/__tests__/lendConfig.test.js.map +1 -0
  324. package/dist/utils/__tests__/serializers.test.d.ts +2 -0
  325. package/dist/utils/__tests__/serializers.test.d.ts.map +1 -0
  326. package/dist/utils/__tests__/serializers.test.js +43 -0
  327. package/dist/utils/__tests__/serializers.test.js.map +1 -0
  328. package/dist/utils/__tests__/validateAddresses.test.d.ts.map +1 -0
  329. package/dist/utils/{validateAddresses.test.js → __tests__/validateAddresses.test.js} +10 -10
  330. package/dist/utils/__tests__/validateAddresses.test.js.map +1 -0
  331. package/dist/utils/abi/permit2.d.ts +48 -0
  332. package/dist/utils/abi/permit2.d.ts.map +1 -0
  333. package/dist/utils/abi/permit2.js +34 -0
  334. package/dist/utils/abi/permit2.js.map +1 -0
  335. package/dist/utils/approve.d.ts +26 -3
  336. package/dist/utils/approve.d.ts.map +1 -1
  337. package/dist/utils/approve.js +34 -37
  338. package/dist/utils/approve.js.map +1 -1
  339. package/dist/utils/assets.d.ts.map +1 -1
  340. package/dist/utils/assets.js +3 -2
  341. package/dist/utils/assets.js.map +1 -1
  342. package/dist/utils/lendConfig.d.ts +9 -0
  343. package/dist/utils/lendConfig.d.ts.map +1 -0
  344. package/dist/utils/lendConfig.js +12 -0
  345. package/dist/utils/lendConfig.js.map +1 -0
  346. package/dist/utils/serializers.d.ts +16 -0
  347. package/dist/utils/serializers.d.ts.map +1 -0
  348. package/dist/utils/serializers.js +18 -0
  349. package/dist/utils/serializers.js.map +1 -0
  350. package/dist/utils/validation.d.ts +8 -1
  351. package/dist/utils/validation.d.ts.map +1 -1
  352. package/dist/utils/validation.js +28 -8
  353. package/dist/utils/validation.js.map +1 -1
  354. package/dist/wallet/core/error/errors.d.ts +21 -0
  355. package/dist/wallet/core/error/errors.d.ts.map +1 -0
  356. package/dist/wallet/core/error/errors.js +24 -0
  357. package/dist/wallet/core/error/errors.js.map +1 -0
  358. package/dist/wallet/core/namespace/WalletNamespace.d.ts +24 -8
  359. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  360. package/dist/wallet/core/namespace/WalletNamespace.js +48 -17
  361. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  362. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +105 -10
  363. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  364. package/dist/wallet/core/providers/WalletProvider.d.ts +3 -2
  365. package/dist/wallet/core/providers/WalletProvider.d.ts.map +1 -1
  366. package/dist/wallet/core/providers/WalletProvider.js +8 -2
  367. package/dist/wallet/core/providers/WalletProvider.js.map +1 -1
  368. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +1 -1
  369. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  370. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts.map +1 -1
  371. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js +2 -1
  372. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js.map +1 -1
  373. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +1 -1
  374. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  375. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +1 -1
  376. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  377. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts +2 -0
  378. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts.map +1 -0
  379. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js +31 -0
  380. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js.map +1 -0
  381. package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +1 -0
  382. package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.js.map +1 -0
  383. package/dist/wallet/core/utils/executeTransactionBatch.d.ts +22 -0
  384. package/dist/wallet/core/utils/executeTransactionBatch.d.ts.map +1 -0
  385. package/dist/wallet/core/utils/executeTransactionBatch.js +26 -0
  386. package/dist/wallet/core/utils/executeTransactionBatch.js.map +1 -0
  387. package/dist/wallet/core/utils/retryOnStaleRead.d.ts.map +1 -0
  388. package/dist/wallet/core/utils/retryOnStaleRead.js.map +1 -0
  389. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +17 -8
  390. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  391. package/dist/wallet/core/wallets/abstract/Wallet.js +24 -12
  392. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  393. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +3 -3
  394. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  395. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  396. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +41 -2
  397. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  398. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +13 -5
  399. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -1
  400. package/dist/wallet/core/wallets/eoa/EOAWallet.js +17 -12
  401. package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -1
  402. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js +37 -20
  403. package/dist/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.js.map +1 -1
  404. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts +1 -1
  405. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts.map +1 -1
  406. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +1 -1
  407. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  408. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +2 -2
  409. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  410. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  411. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  412. package/dist/wallet/node/index.d.ts +1 -0
  413. package/dist/wallet/node/index.d.ts.map +1 -1
  414. package/dist/wallet/node/index.js +1 -0
  415. package/dist/wallet/node/index.js.map +1 -1
  416. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
  417. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  418. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +1 -1
  419. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  420. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
  421. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  422. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +4 -1
  423. package/dist/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  424. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
  425. package/dist/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  426. package/dist/wallet/node/wallets/local/LocalWallet.d.ts +24 -0
  427. package/dist/wallet/node/wallets/local/LocalWallet.d.ts.map +1 -0
  428. package/dist/wallet/node/wallets/local/LocalWallet.js +21 -0
  429. package/dist/wallet/node/wallets/local/LocalWallet.js.map +1 -0
  430. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts +2 -0
  431. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts.map +1 -0
  432. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js +52 -0
  433. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js.map +1 -0
  434. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -1
  435. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  436. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
  437. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  438. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
  439. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  440. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  441. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  442. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js +2 -1
  443. package/dist/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.js.map +1 -1
  444. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js +2 -1
  445. package/dist/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.js.map +1 -1
  446. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js +2 -1
  447. package/dist/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.js.map +1 -1
  448. package/package.json +2 -2
  449. package/src/__tests__/actions.test.ts +3 -1
  450. package/src/{lend → actions/lend}/__mocks__/MockLendProvider.ts +24 -9
  451. package/src/{lend → actions/lend}/__mocks__/mockLendTransaction.ts +2 -2
  452. package/src/{lend → actions/lend}/core/LendProvider.ts +125 -41
  453. package/src/{lend → actions/lend}/core/__tests__/LendProvider.test.ts +82 -3
  454. package/src/actions/lend/index.ts +3 -0
  455. package/src/{lend → actions/lend}/namespaces/BaseLendNamespace.ts +20 -37
  456. package/src/{lend → actions/lend}/namespaces/WalletLendNamespace.ts +15 -22
  457. package/src/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.ts +3 -3
  458. package/src/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.ts +3 -3
  459. package/src/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.ts +6 -6
  460. package/src/{lend → actions/lend}/providers/aave/AaveLendProvider.ts +65 -73
  461. package/src/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.ts +7 -7
  462. package/src/{lend → actions/lend}/providers/aave/sdk.ts +15 -9
  463. package/src/{lend → actions/lend}/providers/morpho/MorphoLendProvider.ts +67 -53
  464. package/src/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.ts +79 -5
  465. package/src/{lend → actions/lend}/providers/morpho/__tests__/api.test.ts +3 -3
  466. package/src/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.ts +2 -2
  467. package/src/{lend → actions/lend}/providers/morpho/sdk.ts +23 -12
  468. package/src/actions/lend/utils/markets.ts +62 -0
  469. package/src/actions/shared/BaseNamespace.ts +46 -0
  470. package/src/actions/shared/__tests__/BaseNamespace.spec.ts +58 -0
  471. package/src/{lend/providers → actions/shared}/morpho/contracts.ts +3 -3
  472. package/src/{swap → actions/swap}/__mocks__/MockSwapProvider.ts +6 -2
  473. package/src/{swap → actions/swap}/core/SwapProvider.ts +89 -57
  474. package/src/{swap → actions/swap}/core/__tests__/SwapProvider.test.ts +51 -1
  475. package/src/{swap → actions/swap}/core/markets.ts +2 -1
  476. package/src/actions/swap/index.ts +19 -0
  477. package/src/{swap → actions/swap}/namespaces/ActionsSwapNamespace.ts +1 -1
  478. package/src/{swap → actions/swap}/namespaces/BaseSwapNamespace.ts +92 -90
  479. package/src/{swap → actions/swap}/namespaces/WalletSwapNamespace.ts +60 -34
  480. package/src/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.ts +6 -6
  481. package/src/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.ts +110 -22
  482. package/src/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.ts +34 -14
  483. package/src/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +2 -2
  484. package/src/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.ts +65 -3
  485. package/src/{swap → actions/swap}/providers/uniswap/addresses.ts +5 -1
  486. package/src/{swap → actions/swap}/providers/uniswap/encoding.ts +3 -3
  487. package/src/{swap → actions/swap}/providers/uniswap/markets.ts +2 -2
  488. package/src/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.ts +71 -31
  489. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +2 -2
  490. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +8 -7
  491. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +46 -5
  492. package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.ts +31 -2
  493. package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.ts +34 -3
  494. package/src/{swap → actions/swap}/providers/velodrome/config.ts +5 -1
  495. package/src/{swap → actions/swap}/providers/velodrome/encoding/helpers.ts +3 -2
  496. package/src/{swap → actions/swap}/providers/velodrome/encoding/index.ts +0 -1
  497. package/src/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.ts +4 -3
  498. package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.ts +31 -23
  499. package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.ts +34 -27
  500. package/src/{swap → actions/swap}/providers/velodrome/markets.ts +4 -3
  501. package/src/actions.ts +68 -37
  502. package/src/constants/supportedChains.ts +81 -21
  503. package/src/core/error/__tests__/errors.test.ts +236 -0
  504. package/src/core/error/errors.ts +319 -22
  505. package/src/index.ts +31 -13
  506. package/src/services/ChainManager.ts +45 -9
  507. package/src/services/{ChainManager.spec.ts → __tests__/ChainManager.spec.ts} +6 -6
  508. package/src/services/{tokenBalance.spec.ts → __tests__/tokenBalance.spec.ts} +56 -1
  509. package/src/{ens → services/nameservices/ens}/EnsNamespace.ts +1 -1
  510. package/src/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.ts +6 -4
  511. package/src/{utils/ens.test.ts → services/nameservices/ens/__tests__/utils.spec.ts} +3 -2
  512. package/src/{ens → services/nameservices/ens}/index.ts +5 -0
  513. package/src/{utils/ens.ts → services/nameservices/ens/utils.ts} +3 -3
  514. package/src/services/tokenBalance.ts +16 -7
  515. package/src/types/actions.ts +96 -16
  516. package/src/types/asset.ts +8 -0
  517. package/src/types/common/FilterAssetChain.ts +13 -0
  518. package/src/types/common/TransactionOptions.ts +12 -0
  519. package/src/types/common/index.ts +2 -0
  520. package/src/types/index.ts +1 -0
  521. package/src/types/lend/base.ts +48 -36
  522. package/src/types/lend/index.ts +0 -1
  523. package/src/types/providers.ts +26 -8
  524. package/src/types/swap/base.ts +25 -13
  525. package/src/utils/{approve.test.ts → __tests__/approve.test.ts} +51 -18
  526. package/src/utils/__tests__/lendConfig.test.ts +52 -0
  527. package/src/utils/__tests__/serializers.test.ts +53 -0
  528. package/src/utils/{validateAddresses.test.ts → __tests__/validateAddresses.test.ts} +9 -9
  529. package/src/utils/abi/permit2.ts +33 -0
  530. package/src/utils/approve.ts +48 -37
  531. package/src/utils/assets.ts +6 -6
  532. package/src/utils/lendConfig.ts +17 -0
  533. package/src/utils/serializers.ts +21 -0
  534. package/src/utils/validation.ts +42 -15
  535. package/src/wallet/core/error/errors.ts +30 -0
  536. package/src/wallet/core/namespace/WalletNamespace.ts +82 -20
  537. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +141 -16
  538. package/src/wallet/core/providers/WalletProvider.ts +12 -3
  539. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +1 -1
  540. package/src/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.ts +2 -1
  541. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +1 -1
  542. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +1 -1
  543. package/src/wallet/core/utils/__tests__/executeTransactionBatch.spec.ts +42 -0
  544. package/src/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.ts +1 -1
  545. package/src/wallet/core/utils/executeTransactionBatch.ts +37 -0
  546. package/src/wallet/core/wallets/abstract/Wallet.ts +29 -15
  547. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +3 -3
  548. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +69 -3
  549. package/src/wallet/core/wallets/eoa/EOAWallet.ts +18 -13
  550. package/src/wallet/core/wallets/eoa/__tests__/EOAWallet.spec.ts +43 -24
  551. package/src/wallet/core/wallets/smart/abstract/SmartWallet.ts +1 -1
  552. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +3 -3
  553. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +1 -1
  554. package/src/wallet/node/index.ts +1 -0
  555. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
  556. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +1 -1
  557. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
  558. package/src/wallet/node/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +4 -1
  559. package/src/wallet/node/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
  560. package/src/wallet/node/wallets/local/LocalWallet.ts +48 -0
  561. package/src/wallet/node/wallets/local/__tests__/LocalWallet.spec.ts +65 -0
  562. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -1
  563. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
  564. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
  565. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +1 -1
  566. package/src/wallet/react/wallets/hosted/dynamic/__tests__/DynamicWallet.spec.ts +2 -1
  567. package/src/wallet/react/wallets/hosted/privy/__tests__/PrivyWallet.spec.ts +2 -1
  568. package/src/wallet/react/wallets/hosted/turnkey/__tests__/TurnkeyWallet.spec.ts +2 -1
  569. package/dist/core/asset/__mocks__/mockAsset.d.ts +0 -6
  570. package/dist/core/asset/__mocks__/mockAsset.d.ts.map +0 -1
  571. package/dist/core/asset/__mocks__/mockAsset.js +0 -12
  572. package/dist/core/asset/__mocks__/mockAsset.js.map +0 -1
  573. package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +0 -1
  574. package/dist/core/utils/__tests__/retryOnStaleRead.spec.js.map +0 -1
  575. package/dist/core/utils/retryOnStaleRead.d.ts.map +0 -1
  576. package/dist/core/utils/retryOnStaleRead.js.map +0 -1
  577. package/dist/ens/EnsNamespace.d.ts.map +0 -1
  578. package/dist/ens/EnsNamespace.js.map +0 -1
  579. package/dist/ens/EnsNamespace.spec.d.ts.map +0 -1
  580. package/dist/ens/EnsNamespace.spec.js.map +0 -1
  581. package/dist/ens/errors.d.ts.map +0 -1
  582. package/dist/ens/errors.js.map +0 -1
  583. package/dist/ens/index.d.ts.map +0 -1
  584. package/dist/ens/index.js.map +0 -1
  585. package/dist/ens/types.d.ts.map +0 -1
  586. package/dist/ens/types.js.map +0 -1
  587. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +0 -1
  588. package/dist/lend/__mocks__/MockLendProvider.js.map +0 -1
  589. package/dist/lend/__mocks__/MockMarkets.d.ts.map +0 -1
  590. package/dist/lend/__mocks__/MockMarkets.js.map +0 -1
  591. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +0 -1
  592. package/dist/lend/__mocks__/mockLendTransaction.js.map +0 -1
  593. package/dist/lend/core/LendProvider.d.ts.map +0 -1
  594. package/dist/lend/core/LendProvider.js.map +0 -1
  595. package/dist/lend/core/__tests__/LendProvider.test.d.ts.map +0 -1
  596. package/dist/lend/core/__tests__/LendProvider.test.js.map +0 -1
  597. package/dist/lend/index.d.ts.map +0 -1
  598. package/dist/lend/index.js.map +0 -1
  599. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +0 -1
  600. package/dist/lend/namespaces/ActionsLendNamespace.js.map +0 -1
  601. package/dist/lend/namespaces/BaseLendNamespace.d.ts +0 -43
  602. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +0 -1
  603. package/dist/lend/namespaces/BaseLendNamespace.js.map +0 -1
  604. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +0 -1
  605. package/dist/lend/namespaces/WalletLendNamespace.js.map +0 -1
  606. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +0 -1
  607. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +0 -1
  608. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +0 -1
  609. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +0 -1
  610. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +0 -1
  611. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +0 -1
  612. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +0 -1
  613. package/dist/lend/providers/aave/AaveLendProvider.js.map +0 -1
  614. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +0 -1
  615. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +0 -1
  616. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +0 -1
  617. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +0 -1
  618. package/dist/lend/providers/aave/abis/pool.d.ts.map +0 -1
  619. package/dist/lend/providers/aave/abis/pool.js.map +0 -1
  620. package/dist/lend/providers/aave/addresses.d.ts.map +0 -1
  621. package/dist/lend/providers/aave/addresses.js.map +0 -1
  622. package/dist/lend/providers/aave/sdk.d.ts.map +0 -1
  623. package/dist/lend/providers/aave/sdk.js.map +0 -1
  624. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +0 -1
  625. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +0 -1
  626. package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts.map +0 -1
  627. package/dist/lend/providers/morpho/__mocks__/mockVault.js.map +0 -1
  628. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +0 -1
  629. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +0 -1
  630. package/dist/lend/providers/morpho/__tests__/api.test.d.ts.map +0 -1
  631. package/dist/lend/providers/morpho/__tests__/api.test.js.map +0 -1
  632. package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts.map +0 -1
  633. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +0 -1
  634. package/dist/lend/providers/morpho/api.d.ts.map +0 -1
  635. package/dist/lend/providers/morpho/api.js.map +0 -1
  636. package/dist/lend/providers/morpho/contracts.d.ts.map +0 -1
  637. package/dist/lend/providers/morpho/sdk.d.ts.map +0 -1
  638. package/dist/lend/providers/morpho/sdk.js.map +0 -1
  639. package/dist/services/ChainManager.spec.d.ts.map +0 -1
  640. package/dist/services/ChainManager.spec.js.map +0 -1
  641. package/dist/services/tokenBalance.spec.d.ts.map +0 -1
  642. package/dist/services/tokenBalance.spec.js.map +0 -1
  643. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +0 -1
  644. package/dist/swap/__mocks__/MockSwapProvider.js.map +0 -1
  645. package/dist/swap/core/SwapProvider.d.ts.map +0 -1
  646. package/dist/swap/core/SwapProvider.js.map +0 -1
  647. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +0 -1
  648. package/dist/swap/core/__tests__/SwapProvider.test.js.map +0 -1
  649. package/dist/swap/core/markets.d.ts.map +0 -1
  650. package/dist/swap/core/markets.js.map +0 -1
  651. package/dist/swap/index.d.ts.map +0 -1
  652. package/dist/swap/index.js.map +0 -1
  653. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +0 -1
  654. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +0 -1
  655. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +0 -1
  656. package/dist/swap/namespaces/BaseSwapNamespace.js.map +0 -1
  657. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +0 -35
  658. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +0 -1
  659. package/dist/swap/namespaces/WalletSwapNamespace.js.map +0 -1
  660. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +0 -1
  661. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +0 -1
  662. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +0 -1
  663. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +0 -1
  664. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +0 -1
  665. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +0 -1
  666. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +0 -1
  667. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +0 -1
  668. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +0 -1
  669. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +0 -1
  670. package/dist/swap/providers/uniswap/abis.d.ts.map +0 -1
  671. package/dist/swap/providers/uniswap/abis.js.map +0 -1
  672. package/dist/swap/providers/uniswap/addresses.d.ts.map +0 -1
  673. package/dist/swap/providers/uniswap/addresses.js.map +0 -1
  674. package/dist/swap/providers/uniswap/encoding.d.ts.map +0 -1
  675. package/dist/swap/providers/uniswap/encoding.js.map +0 -1
  676. package/dist/swap/providers/uniswap/markets.d.ts.map +0 -1
  677. package/dist/swap/providers/uniswap/markets.js.map +0 -1
  678. package/dist/swap/providers/uniswap/types.d.ts.map +0 -1
  679. package/dist/swap/providers/uniswap/types.js.map +0 -1
  680. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +0 -1
  681. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +0 -1
  682. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +0 -1
  683. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +0 -1
  684. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +0 -1
  685. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +0 -1
  686. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +0 -1
  687. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +0 -1
  688. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +0 -1
  689. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +0 -1
  690. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +0 -1
  691. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +0 -1
  692. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +0 -1
  693. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +0 -1
  694. package/dist/swap/providers/velodrome/abis.d.ts.map +0 -1
  695. package/dist/swap/providers/velodrome/abis.js.map +0 -1
  696. package/dist/swap/providers/velodrome/addresses.d.ts.map +0 -1
  697. package/dist/swap/providers/velodrome/addresses.js.map +0 -1
  698. package/dist/swap/providers/velodrome/config.d.ts.map +0 -1
  699. package/dist/swap/providers/velodrome/config.js.map +0 -1
  700. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +0 -1
  701. package/dist/swap/providers/velodrome/encoding/helpers.js.map +0 -1
  702. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +0 -1
  703. package/dist/swap/providers/velodrome/encoding/index.js.map +0 -1
  704. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +0 -1
  705. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +0 -1
  706. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +0 -15
  707. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +0 -1
  708. package/dist/swap/providers/velodrome/encoding/routers/approval.js +0 -33
  709. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +0 -1
  710. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +0 -1
  711. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +0 -1
  712. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +0 -1
  713. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +0 -1
  714. package/dist/swap/providers/velodrome/markets.d.ts.map +0 -1
  715. package/dist/swap/providers/velodrome/markets.js.map +0 -1
  716. package/dist/swap/providers/velodrome/types.d.ts.map +0 -1
  717. package/dist/swap/providers/velodrome/types.js.map +0 -1
  718. package/dist/types/lend/contracts.d.ts.map +0 -1
  719. package/dist/types/lend/contracts.js +0 -2
  720. package/dist/types/lend/contracts.js.map +0 -1
  721. package/dist/utils/approve.test.d.ts.map +0 -1
  722. package/dist/utils/approve.test.js.map +0 -1
  723. package/dist/utils/assets.test.d.ts.map +0 -1
  724. package/dist/utils/assets.test.js.map +0 -1
  725. package/dist/utils/ens.d.ts.map +0 -1
  726. package/dist/utils/ens.js.map +0 -1
  727. package/dist/utils/ens.test.d.ts +0 -2
  728. package/dist/utils/ens.test.d.ts.map +0 -1
  729. package/dist/utils/ens.test.js.map +0 -1
  730. package/dist/utils/markets.d.ts +0 -17
  731. package/dist/utils/markets.d.ts.map +0 -1
  732. package/dist/utils/markets.js +0 -25
  733. package/dist/utils/markets.js.map +0 -1
  734. package/dist/utils/validateAddresses.test.d.ts.map +0 -1
  735. package/dist/utils/validateAddresses.test.js.map +0 -1
  736. package/src/core/asset/__mocks__/mockAsset.ts +0 -13
  737. package/src/lend/index.ts +0 -3
  738. package/src/swap/index.ts +0 -19
  739. package/src/swap/providers/velodrome/encoding/routers/approval.ts +0 -45
  740. package/src/utils/markets.ts +0 -35
  741. /package/dist/{lend → actions/lend}/core/__tests__/LendProvider.test.d.ts +0 -0
  742. /package/dist/{lend → actions/lend}/index.d.ts +0 -0
  743. /package/dist/{lend → actions/lend}/index.js +0 -0
  744. /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.d.ts +0 -0
  745. /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.js +0 -0
  746. /package/dist/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.d.ts +0 -0
  747. /package/dist/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.d.ts +0 -0
  748. /package/dist/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.d.ts +0 -0
  749. /package/dist/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.js +0 -0
  750. /package/dist/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.d.ts +0 -0
  751. /package/dist/{lend → actions/lend}/providers/aave/abis/pool.d.ts +0 -0
  752. /package/dist/{lend → actions/lend}/providers/aave/abis/pool.js +0 -0
  753. /package/dist/{lend → actions/lend}/providers/aave/addresses.d.ts +0 -0
  754. /package/dist/{lend → actions/lend}/providers/aave/addresses.js +0 -0
  755. /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.d.ts +0 -0
  756. /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.js +0 -0
  757. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.d.ts +0 -0
  758. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/api.test.d.ts +0 -0
  759. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.d.ts +0 -0
  760. /package/dist/{lend → actions/lend}/providers/morpho/api.d.ts +0 -0
  761. /package/dist/{lend → actions/lend}/providers/morpho/api.js +0 -0
  762. /package/dist/{swap/providers/uniswap → actions/shared/morpho}/types.js +0 -0
  763. /package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.d.ts +0 -0
  764. /package/dist/{swap → actions/swap}/index.d.ts +0 -0
  765. /package/dist/{swap → actions/swap}/index.js +0 -0
  766. /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.d.ts +0 -0
  767. /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.js +0 -0
  768. /package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +0 -0
  769. /package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +0 -0
  770. /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +0 -0
  771. /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.d.ts +0 -0
  772. /package/dist/{swap → actions/swap}/providers/uniswap/abis.d.ts +0 -0
  773. /package/dist/{swap → actions/swap}/providers/uniswap/abis.js +0 -0
  774. /package/dist/{swap/providers/velodrome → actions/swap/providers/uniswap}/types.js +0 -0
  775. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +0 -0
  776. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +0 -0
  777. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +0 -0
  778. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +0 -0
  779. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.d.ts +0 -0
  780. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.js +0 -0
  781. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.d.ts +0 -0
  782. /package/dist/{swap → actions/swap}/providers/velodrome/abis.d.ts +0 -0
  783. /package/dist/{swap → actions/swap}/providers/velodrome/abis.js +0 -0
  784. /package/dist/{swap → actions/swap}/providers/velodrome/addresses.js +0 -0
  785. /package/dist/services/{ChainManager.spec.d.ts → __tests__/ChainManager.spec.d.ts} +0 -0
  786. /package/dist/services/{tokenBalance.spec.d.ts → __tests__/tokenBalance.spec.d.ts} +0 -0
  787. /package/dist/{ens → services/nameservices/ens/__tests__}/EnsNamespace.spec.d.ts +0 -0
  788. /package/dist/{ens → services/nameservices/ens}/errors.d.ts +0 -0
  789. /package/dist/{ens → services/nameservices/ens}/errors.js +0 -0
  790. /package/dist/{ens → services/nameservices/ens}/types.js +0 -0
  791. /package/dist/utils/{approve.test.d.ts → __tests__/approve.test.d.ts} +0 -0
  792. /package/dist/utils/{assets.test.d.ts → __tests__/assets.test.d.ts} +0 -0
  793. /package/dist/utils/{validateAddresses.test.d.ts → __tests__/validateAddresses.test.d.ts} +0 -0
  794. /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.d.ts +0 -0
  795. /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.js +0 -0
  796. /package/dist/{core → wallet/core}/utils/retryOnStaleRead.d.ts +0 -0
  797. /package/dist/{core → wallet/core}/utils/retryOnStaleRead.js +0 -0
  798. /package/src/{lend → actions/lend}/__mocks__/MockMarkets.ts +0 -0
  799. /package/src/{lend → actions/lend}/namespaces/ActionsLendNamespace.ts +0 -0
  800. /package/src/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.ts +0 -0
  801. /package/src/{lend → actions/lend}/providers/aave/abis/pool.ts +0 -0
  802. /package/src/{lend → actions/lend}/providers/aave/addresses.ts +0 -0
  803. /package/src/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.ts +0 -0
  804. /package/src/{lend → actions/lend}/providers/morpho/api.ts +0 -0
  805. /package/src/{types/lend/contracts.ts → actions/shared/morpho/types.ts} +0 -0
  806. /package/src/{swap → actions/swap}/providers/uniswap/abis.ts +0 -0
  807. /package/src/{swap → actions/swap}/providers/uniswap/types.ts +0 -0
  808. /package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.ts +0 -0
  809. /package/src/{swap → actions/swap}/providers/velodrome/abis.ts +0 -0
  810. /package/src/{swap → actions/swap}/providers/velodrome/addresses.ts +0 -0
  811. /package/src/{swap → actions/swap}/providers/velodrome/types.ts +0 -0
  812. /package/src/{ens → services/nameservices/ens}/errors.ts +0 -0
  813. /package/src/{ens → services/nameservices/ens}/types.ts +0 -0
  814. /package/src/utils/{assets.test.ts → __tests__/assets.test.ts} +0 -0
  815. /package/src/{core → wallet/core}/utils/retryOnStaleRead.ts +0 -0
@@ -0,0 +1,19 @@
1
+ // Core
2
+ export { SwapProvider } from '@/actions/swap/core/SwapProvider.js'
3
+
4
+ // Namespaces
5
+ export { ActionsSwapNamespace } from '@/actions/swap/namespaces/ActionsSwapNamespace.js'
6
+ export { BaseSwapNamespace } from '@/actions/swap/namespaces/BaseSwapNamespace.js'
7
+ export { WalletSwapNamespace } from '@/actions/swap/namespaces/WalletSwapNamespace.js'
8
+
9
+ // Providers
10
+ export type {
11
+ UniswapMarketConfig,
12
+ UniswapSwapProviderConfig,
13
+ } from '@/actions/swap/providers/uniswap/types.js'
14
+ export { UniswapSwapProvider } from '@/actions/swap/providers/uniswap/UniswapSwapProvider.js'
15
+ export type {
16
+ VelodromeMarketConfig,
17
+ VelodromeSwapProviderConfig,
18
+ } from '@/actions/swap/providers/velodrome/types.js'
19
+ export { VelodromeSwapProvider } from '@/actions/swap/providers/velodrome/VelodromeSwapProvider.js'
@@ -1,4 +1,4 @@
1
- import { BaseSwapNamespace } from '@/swap/namespaces/BaseSwapNamespace.js'
1
+ import { BaseSwapNamespace } from '@/actions/swap/namespaces/BaseSwapNamespace.js'
2
2
 
3
3
  /**
4
4
  * Actions swap namespace (read-only, no wallet required).
@@ -1,6 +1,16 @@
1
+ import { BaseNamespace } from '@/actions/shared/BaseNamespace.js'
2
+ import type { SwapProvider } from '@/actions/swap/core/SwapProvider.js'
1
3
  import type { SupportedChainId } from '@/constants/supportedChains.js'
2
- import type { SwapQuoteParamsResolved } from '@/ens/types.js'
3
- import type { SwapProvider } from '@/swap/core/SwapProvider.js'
4
+ import {
5
+ MarketNotAllowedError,
6
+ MarketNotFoundError,
7
+ ProviderNotConfiguredError,
8
+ } from '@/core/error/errors.js'
9
+ import type { SwapQuoteParamsResolved } from '@/services/nameservices/ens/types.js'
10
+ import {
11
+ passthroughResolver,
12
+ type RecipientResolver,
13
+ } from '@/services/nameservices/ens/utils.js'
4
14
  import type { SwapProviderName, SwapSettings } from '@/types/actions.js'
5
15
  import type { Asset } from '@/types/asset.js'
6
16
  import type {
@@ -12,19 +22,24 @@ import type {
12
22
  SwapQuote,
13
23
  SwapQuoteParams,
14
24
  } from '@/types/swap/index.js'
15
- import { passthroughResolver, type RecipientResolver } from '@/utils/ens.js'
25
+
26
+ type ConfiguredSwapProvider = SwapProvider<SwapProviderConfig>
16
27
 
17
28
  /**
18
29
  * Base swap namespace with shared read-only operations
19
30
  */
20
- export abstract class BaseSwapNamespace {
31
+ export abstract class BaseSwapNamespace extends BaseNamespace<
32
+ ConfiguredSwapProvider,
33
+ SwapProviders
34
+ > {
21
35
  protected readonly resolveRecipient: RecipientResolver
22
36
 
23
37
  constructor(
24
- protected readonly providers: SwapProviders,
38
+ providers: SwapProviders,
25
39
  resolveRecipient?: RecipientResolver,
26
40
  protected readonly settings?: SwapSettings,
27
41
  ) {
42
+ super(providers)
28
43
  this.resolveRecipient = resolveRecipient ?? passthroughResolver
29
44
  }
30
45
 
@@ -64,64 +79,7 @@ export abstract class BaseSwapNamespace {
64
79
  }
65
80
 
66
81
  /**
67
- * Fetch quotes from all eligible providers in parallel and return the best.
68
- * @param params - Quote parameters
69
- * @returns The quote with the highest amountOut
70
- * @throws If no provider returns a valid quote
71
- */
72
- private async getBestQuote(
73
- params: SwapQuoteParamsResolved,
74
- ): Promise<SwapQuote> {
75
- const quotes = await this.fetchAllQuotes(params)
76
-
77
- let best: SwapQuote | null = null
78
- for (const quote of quotes) {
79
- if (!best || quote.amountOutRaw > best.amountOutRaw) {
80
- best = quote
81
- }
82
- }
83
-
84
- if (!best) {
85
- throw new Error(
86
- `All providers failed to quote ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol}`,
87
- )
88
- }
89
-
90
- return best
91
- }
92
-
93
- /**
94
- * Fetch quotes from all eligible providers in parallel.
95
- * Providers that don't support the pair or fail to quote are silently skipped.
96
- * @param params - Quote parameters
97
- * @returns Array of successful quotes (may be empty if all providers fail)
98
- */
99
- private async fetchAllQuotes(
100
- params: SwapQuoteParamsResolved,
101
- ): Promise<SwapQuote[]> {
102
- const eligible = this.getAllProviders().filter((p) =>
103
- p.isMarketSupported(params.assetIn, params.assetOut, params.chainId),
104
- )
105
-
106
- if (eligible.length === 0) {
107
- throw new Error(
108
- `No provider supports ${params.assetIn.metadata.symbol}/${params.assetOut.metadata.symbol} on chain ${params.chainId}`,
109
- )
110
- }
111
-
112
- const results = await Promise.allSettled(
113
- eligible.map((p) => p.getQuote(params)),
114
- )
115
-
116
- return results
117
- .filter(
118
- (r): r is PromiseFulfilledResult<SwapQuote> => r.status === 'fulfilled',
119
- )
120
- .map((r) => r.value)
121
- }
122
-
123
- /**
124
- * Fetch quotes from all eligible providers in parallel.
82
+ * Fetch quotes from all providers with the wallet address as recipient.
125
83
  * Unlike getQuote(), returns all successful quotes instead of just the best.
126
84
  * If an explicit provider is specified, returns a single-element array from that provider.
127
85
  * @param params - Quote parameters (assets, amounts, chain, optional provider)
@@ -165,7 +123,7 @@ export abstract class BaseSwapNamespace {
165
123
  if (provider) {
166
124
  const named = this.providers[provider]
167
125
  if (!named) {
168
- throw new Error(`Swap provider "${provider}" not configured`)
126
+ throw new ProviderNotConfiguredError({ provider })
169
127
  }
170
128
  return named.getMarket(params)
171
129
  }
@@ -177,9 +135,10 @@ export abstract class BaseSwapNamespace {
177
135
  continue
178
136
  }
179
137
  }
180
- throw new Error(
181
- `Market with poolId ${params.poolId} not found on chain ${params.chainId}`,
182
- )
138
+ throw new MarketNotFoundError({
139
+ chainId: params.chainId,
140
+ poolId: params.poolId,
141
+ })
183
142
  }
184
143
 
185
144
  /**
@@ -194,26 +153,6 @@ export abstract class BaseSwapNamespace {
194
153
  return results.flat()
195
154
  }
196
155
 
197
- /**
198
- * Get all supported chain IDs across all providers
199
- */
200
- supportedChainIds(): SupportedChainId[] {
201
- const chainIds = new Set<SupportedChainId>()
202
- for (const provider of this.getAllProviders()) {
203
- for (const chainId of provider.supportedChainIds()) {
204
- chainIds.add(chainId)
205
- }
206
- }
207
- return Array.from(chainIds)
208
- }
209
-
210
- // SwapProviders keys are optional (uniswap?, velodrome?, etc.) so filter out unconfigured ones
211
- protected getAllProviders(): Array<SwapProvider<SwapProviderConfig>> {
212
- return Object.values(this.providers).filter(
213
- (p): p is SwapProvider<SwapProviderConfig> => p !== undefined,
214
- )
215
- }
216
-
217
156
  /**
218
157
  * Resolve which provider handles a request.
219
158
  *
@@ -229,17 +168,17 @@ export abstract class BaseSwapNamespace {
229
168
  assetIn: Asset,
230
169
  assetOut: Asset,
231
170
  chainId: SupportedChainId,
232
- ): SwapProvider<SwapProviderConfig> {
171
+ ): ConfiguredSwapProvider {
233
172
  const allProviders = this.getAllProviders()
234
173
  if (allProviders.length === 0) {
235
- throw new Error('No swap provider configured')
174
+ throw new ProviderNotConfiguredError({ provider: 'swap' })
236
175
  }
237
176
 
238
177
  // 1. Explicit provider param
239
178
  if (provider) {
240
179
  const named = this.providers[provider]
241
180
  if (!named) {
242
- throw new Error(`Swap provider "${provider}" not configured`)
181
+ throw new ProviderNotConfiguredError({ provider })
243
182
  }
244
183
  return named
245
184
  }
@@ -271,4 +210,67 @@ export abstract class BaseSwapNamespace {
271
210
 
272
211
  return allProviders[0]
273
212
  }
213
+
214
+ /**
215
+ * Fetch quotes from all eligible providers in parallel and return the best.
216
+ * @param params - Quote parameters
217
+ * @returns The quote with the highest amountOut
218
+ * @throws If no provider returns a valid quote
219
+ */
220
+ private async getBestQuote(
221
+ params: SwapQuoteParamsResolved,
222
+ ): Promise<SwapQuote> {
223
+ const quotes = await this.fetchAllQuotes(params)
224
+
225
+ let best: SwapQuote | null = null
226
+ for (const quote of quotes) {
227
+ if (!best || quote.amountOutRaw > best.amountOutRaw) {
228
+ best = quote
229
+ }
230
+ }
231
+
232
+ if (!best) {
233
+ throw new MarketNotAllowedError({
234
+ assetInSymbol: params.assetIn.metadata.symbol,
235
+ assetOutSymbol: params.assetOut.metadata.symbol,
236
+ chainId: params.chainId,
237
+ reason: 'All providers failed to quote this pair',
238
+ })
239
+ }
240
+
241
+ return best
242
+ }
243
+
244
+ /**
245
+ * Fetch quotes from all eligible providers in parallel.
246
+ * Providers that don't support the pair or fail to quote are silently skipped.
247
+ * @param params - Quote parameters
248
+ * @returns Array of successful quotes (may be empty if all providers fail)
249
+ */
250
+ private async fetchAllQuotes(
251
+ params: SwapQuoteParamsResolved,
252
+ ): Promise<SwapQuote[]> {
253
+ const eligible = this.getAllProviders().filter((p) =>
254
+ p.isMarketSupported(params.assetIn, params.assetOut, params.chainId),
255
+ )
256
+
257
+ if (eligible.length === 0) {
258
+ throw new MarketNotAllowedError({
259
+ assetInSymbol: params.assetIn.metadata.symbol,
260
+ assetOutSymbol: params.assetOut.metadata.symbol,
261
+ chainId: params.chainId,
262
+ reason: 'No configured provider supports this pair on this chain',
263
+ })
264
+ }
265
+
266
+ const results = await Promise.allSettled(
267
+ eligible.map((p) => p.getQuote(params)),
268
+ )
269
+
270
+ return results
271
+ .filter(
272
+ (r): r is PromiseFulfilledResult<SwapQuote> => r.status === 'fulfilled',
273
+ )
274
+ .map((r) => r.value)
275
+ }
274
276
  }
@@ -1,7 +1,11 @@
1
+ import { isAddressEqual } from 'viem'
2
+
3
+ import { QUOTE_DISCRIMINATOR } from '@/actions/swap/core/SwapProvider.js'
4
+ import { BaseSwapNamespace } from '@/actions/swap/namespaces/BaseSwapNamespace.js'
1
5
  import type { SupportedChainId } from '@/constants/supportedChains.js'
2
- import type { SwapExecuteParamsResolved } from '@/ens/types.js'
3
- import { QUOTE_DISCRIMINATOR } from '@/swap/core/SwapProvider.js'
4
- import { BaseSwapNamespace } from '@/swap/namespaces/BaseSwapNamespace.js'
6
+ import { QuoteRecipientMismatchError } from '@/core/error/errors.js'
7
+ import type { SwapExecuteParamsResolved } from '@/services/nameservices/ens/types.js'
8
+ import type { RecipientResolver } from '@/services/nameservices/ens/utils.js'
5
9
  import type { SwapSettings } from '@/types/actions.js'
6
10
  import type {
7
11
  SwapProviders,
@@ -11,7 +15,8 @@ import type {
11
15
  SwapTransaction,
12
16
  WalletSwapParams,
13
17
  } from '@/types/swap/index.js'
14
- import type { RecipientResolver } from '@/utils/ens.js'
18
+ import type { TransactionData } from '@/types/transaction.js'
19
+ import { executeTransactionBatch } from '@/wallet/core/utils/executeTransactionBatch.js'
15
20
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
16
21
 
17
22
  /**
@@ -51,22 +56,21 @@ export class WalletSwapNamespace extends BaseSwapNamespace {
51
56
 
52
57
  /**
53
58
  * Execute a token swap.
54
- * Accepts either raw params (re-quotes internally) or a pre-built SwapQuote (skips re-quoting).
59
+ * Accepts either raw params (re-quotes internally) or a pre-built SwapQuote
60
+ * (skips re-quoting). When a pre-built quote is passed, its recipient must
61
+ * equal this wallet's address — otherwise the calldata would route output
62
+ * tokens to a different address (a real risk on Velodrome v2/leaf paths
63
+ * where the recipient is encoded directly into the swap call). Re-quote via
64
+ * `wallet.swap.getQuote(...)` to bind the quote to this wallet.
55
65
  * @param params - Swap parameters or a pre-built SwapQuote from getQuote()
56
66
  * @returns Swap receipt with transaction details
67
+ * @throws If `params` is a SwapQuote whose recipient differs from this wallet
57
68
  */
58
69
  async execute(params: WalletSwapParams | SwapQuote): Promise<SwapReceipt> {
59
- // Inject walletAddress — raw params need it for validation,
60
- // quotes need it for on-chain allowance checks during approval building.
61
- // Resolve ENS recipient here so providers only ever receive an Address.
62
- const executeParams: SwapExecuteParamsResolved | SwapQuote =
70
+ const executeParams =
63
71
  QUOTE_DISCRIMINATOR in params
64
- ? { ...params, recipient: this.wallet.address }
65
- : {
66
- ...params,
67
- walletAddress: this.wallet.address,
68
- recipient: await this.resolveRecipient(params.recipient),
69
- }
72
+ ? this.requireQuoteForThisWallet(params)
73
+ : await this.resolveRawParams(params)
70
74
 
71
75
  const provider = this.resolveProvider(
72
76
  params.provider,
@@ -76,10 +80,43 @@ export class WalletSwapNamespace extends BaseSwapNamespace {
76
80
  )
77
81
 
78
82
  const swapTx = await provider.execute(executeParams)
79
- const receipt = await this.executeTransaction(swapTx, params.chainId)
83
+ const receipt = await this.dispatch(swapTx, params.chainId)
80
84
  return this.buildReceipt(swapTx, receipt)
81
85
  }
82
86
 
87
+ /**
88
+ * Validate that a pre-built quote is bound to this wallet. Throws when the
89
+ * quote's recipient differs from `wallet.address` — silently swapping
90
+ * recipients would route output tokens to the wrong address on routers that
91
+ * encode the recipient directly into calldata (e.g. Velodrome v2/leaf).
92
+ */
93
+ private requireQuoteForThisWallet(quote: SwapQuote): SwapQuote {
94
+ if (!isAddressEqual(quote.recipient, this.wallet.address)) {
95
+ throw new QuoteRecipientMismatchError({
96
+ quoteRecipient: quote.recipient,
97
+ walletAddress: this.wallet.address,
98
+ })
99
+ }
100
+ return quote
101
+ }
102
+
103
+ /**
104
+ * Inject `walletAddress` (needed for validation and on-chain allowance
105
+ * checks) and resolve any ENS recipient so providers only ever receive an
106
+ * `Address`.
107
+ */
108
+ private async resolveRawParams(
109
+ params: WalletSwapParams,
110
+ ): Promise<SwapExecuteParamsResolved> {
111
+ return {
112
+ ...params,
113
+ walletAddress: this.wallet.address,
114
+ recipient: await this.resolveRecipient(
115
+ params.recipient ?? this.wallet.address,
116
+ ),
117
+ }
118
+ }
119
+
83
120
  private buildReceipt(
84
121
  swapTx: SwapTransaction,
85
122
  receipt: SwapReceipt['receipt'],
@@ -98,32 +135,21 @@ export class WalletSwapNamespace extends BaseSwapNamespace {
98
135
  }
99
136
 
100
137
  /**
101
- * Execute swap transaction with approval batching
138
+ * Send a swap transaction, collecting any token/Permit2 approvals ahead
139
+ * of the swap call. Defers to `executeTransactionBatch` for the actual
140
+ * 1-vs-N send/sendBatch dispatch.
102
141
  */
103
- private async executeTransaction(
142
+ private dispatch(
104
143
  swapTx: SwapTransaction,
105
144
  chainId: SupportedChainId,
106
145
  ): Promise<SwapReceipt['receipt']> {
107
146
  const { transactionData } = swapTx
108
- const txs = []
109
-
110
- // Add token approval if needed
111
- if (transactionData.tokenApproval) {
112
- txs.push(transactionData.tokenApproval)
113
- }
114
-
115
- // Add Permit2 approval if needed
147
+ const txs: TransactionData[] = []
148
+ if (transactionData.tokenApproval) txs.push(transactionData.tokenApproval)
116
149
  if (transactionData.permit2Approval) {
117
150
  txs.push(transactionData.permit2Approval)
118
151
  }
119
-
120
- // Add main swap transaction
121
152
  txs.push(transactionData.swap)
122
-
123
- // Execute as batch if multiple transactions, otherwise single
124
- if (txs.length > 1) {
125
- return this.wallet.sendBatch(txs, chainId)
126
- }
127
- return this.wallet.send(transactionData.swap, chainId)
153
+ return executeTransactionBatch(this.wallet, txs, chainId)
128
154
  }
129
155
  }
@@ -1,13 +1,13 @@
1
1
  import { describe, expect, it } from 'vitest'
2
2
 
3
- import type { SupportedChainId } from '@/constants/supportedChains.js'
4
- import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
5
- import type { ChainManager } from '@/services/ChainManager.js'
6
3
  import {
7
4
  createMockSwapProvider,
8
5
  MockSwapProvider,
9
- } from '@/swap/__mocks__/MockSwapProvider.js'
10
- import { ActionsSwapNamespace } from '@/swap/namespaces/ActionsSwapNamespace.js'
6
+ } from '@/actions/swap/__mocks__/MockSwapProvider.js'
7
+ import { ActionsSwapNamespace } from '@/actions/swap/namespaces/ActionsSwapNamespace.js'
8
+ import type { SupportedChainId } from '@/constants/supportedChains.js'
9
+ import { MockChainManager } from '@/services/__mocks__/MockChainManager.js'
10
+ import type { ChainManager } from '@/services/ChainManager.js'
11
11
 
12
12
  describe('BaseSwapNamespace', () => {
13
13
  const USDC = {
@@ -50,7 +50,7 @@ describe('BaseSwapNamespace', () => {
50
50
  amountIn: 100,
51
51
  chainId: 84532 as SupportedChainId,
52
52
  }),
53
- ).rejects.toThrow('No swap provider configured')
53
+ ).rejects.toThrow("A 'swap' provider is not configured")
54
54
  })
55
55
  })
56
56
 
@@ -1,9 +1,9 @@
1
1
  import type { Address } from 'viem'
2
2
  import { describe, expect, it, vi } from 'vitest'
3
3
 
4
+ import { createMockSwapProvider } from '@/actions/swap/__mocks__/MockSwapProvider.js'
5
+ import { WalletSwapNamespace } from '@/actions/swap/namespaces/WalletSwapNamespace.js'
4
6
  import type { SupportedChainId } from '@/constants/supportedChains.js'
5
- import { createMockSwapProvider } from '@/swap/__mocks__/MockSwapProvider.js'
6
- import { WalletSwapNamespace } from '@/swap/namespaces/WalletSwapNamespace.js'
7
7
  import type { Wallet } from '@/wallet/core/wallets/abstract/Wallet.js'
8
8
 
9
9
  describe('WalletSwapNamespace', () => {
@@ -118,6 +118,47 @@ describe('WalletSwapNamespace', () => {
118
118
  )
119
119
  })
120
120
 
121
+ it('defaults recipient to wallet address when omitted', async () => {
122
+ const provider = createMockSwapProvider()
123
+ const wallet = createMockWallet()
124
+ const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
125
+
126
+ await namespace.execute({
127
+ amountIn: 100,
128
+ assetIn: USDC,
129
+ assetOut: ETH,
130
+ chainId: 84532 as SupportedChainId,
131
+ })
132
+
133
+ expect(provider.mockExecute).toHaveBeenCalledWith(
134
+ expect.objectContaining({
135
+ recipient: mockWalletAddress,
136
+ }),
137
+ )
138
+ })
139
+
140
+ it('preserves explicit recipient over wallet address', async () => {
141
+ const provider = createMockSwapProvider()
142
+ const wallet = createMockWallet()
143
+ const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
144
+ const customRecipient =
145
+ '0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' as Address
146
+
147
+ await namespace.execute({
148
+ amountIn: 100,
149
+ assetIn: USDC,
150
+ assetOut: ETH,
151
+ chainId: 84532 as SupportedChainId,
152
+ recipient: customRecipient,
153
+ })
154
+
155
+ expect(provider.mockExecute).toHaveBeenCalledWith(
156
+ expect.objectContaining({
157
+ recipient: customRecipient,
158
+ }),
159
+ )
160
+ })
161
+
121
162
  it('throws when no provider configured', async () => {
122
163
  const wallet = createMockWallet()
123
164
  const namespace = new WalletSwapNamespace({}, wallet)
@@ -129,7 +170,7 @@ describe('WalletSwapNamespace', () => {
129
170
  assetOut: ETH,
130
171
  chainId: 84532 as SupportedChainId,
131
172
  }),
132
- ).rejects.toThrow('No swap provider configured')
173
+ ).rejects.toThrow("A 'swap' provider is not configured")
133
174
  })
134
175
 
135
176
  it('executes swap from a SwapQuote (skips re-quoting)', async () => {
@@ -170,7 +211,7 @@ describe('WalletSwapNamespace', () => {
170
211
  })
171
212
 
172
213
  // Quote should have wallet address as the encoded recipient
173
- expect(quote.quotedRecipient).toBe(mockWalletAddress)
214
+ expect(quote.recipient).toBe(mockWalletAddress)
174
215
  })
175
216
 
176
217
  it('preserves explicit recipient over wallet address', async () => {
@@ -188,43 +229,61 @@ describe('WalletSwapNamespace', () => {
188
229
  recipient: customRecipient,
189
230
  })
190
231
 
191
- expect(quote.quotedRecipient).toBe(customRecipient)
232
+ expect(quote.recipient).toBe(customRecipient)
192
233
  })
193
234
  })
194
235
 
195
236
  describe('execute with recipient mismatch', () => {
196
- it('re-encodes when quote recipient differs from wallet', async () => {
237
+ it('throws when quote.recipient does not match wallet.address', async () => {
197
238
  const provider = createMockSwapProvider()
198
239
  const wallet = createMockWallet()
199
240
  const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
200
241
 
201
- // Get quote without wallet (simulates ActionsSwapNamespace quote)
242
+ // Get quote without wallet (simulates ActionsSwapNamespace quote — recipient
243
+ // defaults to UNIVERSAL_ROUTER_MSG_SENDER, not the executing wallet)
202
244
  const quote = await provider.getQuote({
203
245
  assetIn: USDC,
204
246
  assetOut: ETH,
205
247
  amountIn: 100,
206
248
  chainId: 84532 as SupportedChainId,
207
- // No recipient — uses placeholder
208
249
  })
209
250
 
210
- // quotedRecipient should be the placeholder, not the wallet
211
- expect(quote.quotedRecipient).not.toBe(mockWalletAddress)
251
+ expect(quote.recipient).not.toBe(mockWalletAddress)
212
252
 
213
- // Execute through wallet namespace — should re-quote with correct recipient
214
- const result = await namespace.execute(quote)
215
- expect(result.price).toBeDefined()
253
+ await expect(namespace.execute(quote)).rejects.toThrow(
254
+ /generated for a different recipient/i,
255
+ )
256
+ // Provider's getQuote was called once (the original); execute did not re-quote.
257
+ expect(provider.mockGetQuote).toHaveBeenCalledTimes(1)
258
+ })
259
+
260
+ it('throws on a quote built for a different wallet address', async () => {
261
+ const provider = createMockSwapProvider()
262
+ const wallet = createMockWallet()
263
+ const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
264
+ const otherWallet =
265
+ '0x9999999999999999999999999999999999999999' as Address
266
+
267
+ const quote = await provider.getQuote({
268
+ assetIn: USDC,
269
+ assetOut: ETH,
270
+ amountIn: 100,
271
+ chainId: 84532 as SupportedChainId,
272
+ recipient: otherWallet,
273
+ })
274
+
275
+ expect(quote.recipient).toBe(otherWallet)
216
276
 
217
- // Provider's getQuote should have been called twice:
218
- // 1) original quote, 2) re-quote with wallet address
219
- expect(provider.mockGetQuote).toHaveBeenCalledTimes(2)
277
+ await expect(namespace.execute(quote)).rejects.toThrow(
278
+ /generated for a different recipient/i,
279
+ )
220
280
  })
221
281
 
222
- it('skips re-encode when quote already has correct recipient', async () => {
282
+ it('executes when quote.recipient equals wallet.address', async () => {
223
283
  const provider = createMockSwapProvider()
224
284
  const wallet = createMockWallet()
225
285
  const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
226
286
 
227
- // Get quote through wallet namespace (has correct recipient)
228
287
  const quote = await namespace.getQuote({
229
288
  assetIn: USDC,
230
289
  assetOut: ETH,
@@ -232,15 +291,44 @@ describe('WalletSwapNamespace', () => {
232
291
  chainId: 84532 as SupportedChainId,
233
292
  })
234
293
 
235
- expect(quote.quotedRecipient).toBe(mockWalletAddress)
294
+ expect(quote.recipient).toBe(mockWalletAddress)
236
295
 
237
- // Execute — should NOT re-quote
238
296
  const result = await namespace.execute(quote)
239
297
  expect(result.price).toBeDefined()
240
-
241
- // getQuote called only once (the original)
298
+ // Single getQuote call — no re-quote, no re-encode.
242
299
  expect(provider.mockGetQuote).toHaveBeenCalledTimes(1)
243
300
  })
301
+
302
+ it('executes when quote.recipient differs only in case from wallet.address', async () => {
303
+ // Address with hex letters so case actually changes the string. The
304
+ // wallet uses checksummed casing; the quote uses lowercase. Without
305
+ // `isAddressEqual` the strict `!==` would falsely reject.
306
+ const checksummedAddress =
307
+ '0xAbCdEf1234567890aBcDeF1234567890ABcDeF12' as Address
308
+ const lowercaseAddress = checksummedAddress.toLowerCase() as Address
309
+
310
+ const provider = createMockSwapProvider()
311
+ const wallet = {
312
+ address: checksummedAddress,
313
+ send: vi.fn().mockResolvedValue({ transactionHash: '0xtx1' }),
314
+ sendBatch: vi.fn().mockResolvedValue({ transactionHash: '0xtx2' }),
315
+ } as unknown as Wallet
316
+ const namespace = new WalletSwapNamespace({ uniswap: provider }, wallet)
317
+
318
+ const quote = await provider.getQuote({
319
+ assetIn: USDC,
320
+ assetOut: ETH,
321
+ amountIn: 100,
322
+ chainId: 84532 as SupportedChainId,
323
+ recipient: lowercaseAddress,
324
+ })
325
+
326
+ expect(quote.recipient).toBe(lowercaseAddress)
327
+ expect(quote.recipient).not.toBe(checksummedAddress)
328
+
329
+ const result = await namespace.execute(quote)
330
+ expect(result.price).toBeDefined()
331
+ })
244
332
  })
245
333
 
246
334
  describe('inherits read-only methods', () => {