@eth-optimism/actions-sdk 0.4.0 → 0.6.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 (770) 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 +61 -22
  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 +1 -1
  95. package/dist/actions/shared/morpho/contracts.d.ts.map +1 -0
  96. package/dist/{lend/providers → actions/shared}/morpho/contracts.js.map +1 -1
  97. package/dist/{types/lend/contracts.d.ts → actions/shared/morpho/types.d.ts} +2 -2
  98. package/dist/actions/shared/morpho/types.d.ts.map +1 -0
  99. package/dist/actions/shared/morpho/types.js.map +1 -0
  100. package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.d.ts +7 -6
  101. package/dist/actions/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  102. package/dist/{swap → actions/swap}/__mocks__/MockSwapProvider.js +5 -2
  103. package/dist/actions/swap/__mocks__/MockSwapProvider.js.map +1 -0
  104. package/dist/{swap → actions/swap}/core/SwapProvider.d.ts +33 -18
  105. package/dist/actions/swap/core/SwapProvider.d.ts.map +1 -0
  106. package/dist/{swap → actions/swap}/core/SwapProvider.js +59 -44
  107. package/dist/actions/swap/core/SwapProvider.js.map +1 -0
  108. package/dist/actions/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  109. package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.js +39 -0
  110. package/dist/actions/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  111. package/dist/{swap → actions/swap}/core/markets.d.ts +3 -3
  112. package/dist/actions/swap/core/markets.d.ts.map +1 -0
  113. package/dist/{swap → actions/swap}/core/markets.js +2 -1
  114. package/dist/actions/swap/core/markets.js.map +1 -0
  115. package/dist/actions/swap/index.d.ts.map +1 -0
  116. package/dist/actions/swap/index.js.map +1 -0
  117. package/dist/actions/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  118. package/dist/actions/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  119. package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.d.ts +27 -28
  120. package/dist/actions/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  121. package/dist/{swap → actions/swap}/namespaces/BaseSwapNamespace.js +73 -69
  122. package/dist/actions/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  123. package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts +56 -0
  124. package/dist/actions/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  125. package/dist/actions/swap/namespaces/WalletSwapNamespace.js +109 -0
  126. package/dist/actions/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  127. package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.js +6 -6
  129. package/dist/actions/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  131. package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.js +83 -19
  132. package/dist/actions/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  133. package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.d.ts +9 -5
  134. package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  135. package/dist/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.js +14 -5
  136. package/dist/actions/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  137. package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  138. package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.js +1 -1
  139. package/dist/actions/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  140. package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  141. package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.js +47 -1
  142. package/dist/actions/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  143. package/dist/actions/swap/providers/uniswap/abis.d.ts.map +1 -0
  144. package/dist/actions/swap/providers/uniswap/abis.js.map +1 -0
  145. package/dist/{swap → actions/swap}/providers/uniswap/addresses.d.ts +1 -1
  146. package/dist/actions/swap/providers/uniswap/addresses.d.ts.map +1 -0
  147. package/dist/{swap → actions/swap}/providers/uniswap/addresses.js +6 -2
  148. package/dist/actions/swap/providers/uniswap/addresses.js.map +1 -0
  149. package/dist/{swap → actions/swap}/providers/uniswap/encoding.d.ts +3 -3
  150. package/dist/actions/swap/providers/uniswap/encoding.d.ts.map +1 -0
  151. package/dist/{swap → actions/swap}/providers/uniswap/encoding.js +2 -2
  152. package/dist/actions/swap/providers/uniswap/encoding.js.map +1 -0
  153. package/dist/{swap → actions/swap}/providers/uniswap/markets.d.ts +3 -3
  154. package/dist/actions/swap/providers/uniswap/markets.d.ts.map +1 -0
  155. package/dist/{swap → actions/swap}/providers/uniswap/markets.js +1 -1
  156. package/dist/actions/swap/providers/uniswap/markets.js.map +1 -0
  157. package/dist/{swap → actions/swap}/providers/uniswap/types.d.ts +1 -1
  158. package/dist/actions/swap/providers/uniswap/types.d.ts.map +1 -0
  159. package/dist/actions/swap/providers/uniswap/types.js.map +1 -0
  160. package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.d.ts +10 -4
  161. package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  162. package/dist/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.js +37 -11
  163. package/dist/actions/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  164. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  165. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  166. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  167. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +7 -6
  168. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  169. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  170. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +40 -4
  171. package/dist/actions/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  172. package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  173. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.js +22 -1
  174. package/dist/actions/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  175. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.d.ts +1 -1
  176. package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  177. package/dist/actions/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  178. package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  179. package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.js +25 -1
  180. package/dist/actions/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  181. package/dist/actions/swap/providers/velodrome/abis.d.ts.map +1 -0
  182. package/dist/actions/swap/providers/velodrome/abis.js.map +1 -0
  183. package/dist/{swap → actions/swap}/providers/velodrome/addresses.d.ts +1 -1
  184. package/dist/actions/swap/providers/velodrome/addresses.d.ts.map +1 -0
  185. package/dist/actions/swap/providers/velodrome/addresses.js.map +1 -0
  186. package/dist/{swap → actions/swap}/providers/velodrome/config.d.ts +1 -1
  187. package/dist/actions/swap/providers/velodrome/config.d.ts.map +1 -0
  188. package/dist/{swap → actions/swap}/providers/velodrome/config.js +5 -1
  189. package/dist/actions/swap/providers/velodrome/config.js.map +1 -0
  190. package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.d.ts +3 -3
  191. package/dist/actions/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  192. package/dist/{swap → actions/swap}/providers/velodrome/encoding/helpers.js +4 -3
  193. package/dist/actions/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  194. package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.d.ts +0 -1
  195. package/dist/actions/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  196. package/dist/{swap → actions/swap}/providers/velodrome/encoding/index.js +0 -1
  197. package/dist/actions/swap/providers/velodrome/encoding/index.js.map +1 -0
  198. package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.d.ts +3 -3
  199. package/dist/actions/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  200. package/dist/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.js +2 -1
  201. package/dist/actions/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  202. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.d.ts +24 -3
  203. package/dist/actions/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  204. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.js +22 -10
  205. package/dist/actions/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  206. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.d.ts +23 -3
  207. package/dist/actions/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  208. package/dist/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.js +24 -13
  209. package/dist/actions/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  210. package/dist/{swap → actions/swap}/providers/velodrome/markets.d.ts +3 -3
  211. package/dist/actions/swap/providers/velodrome/markets.d.ts.map +1 -0
  212. package/dist/{swap → actions/swap}/providers/velodrome/markets.js +4 -3
  213. package/dist/actions/swap/providers/velodrome/markets.js.map +1 -0
  214. package/dist/{swap → actions/swap}/providers/velodrome/types.d.ts +1 -1
  215. package/dist/actions/swap/providers/velodrome/types.d.ts.map +1 -0
  216. package/dist/actions/swap/providers/velodrome/types.js +2 -0
  217. package/dist/actions/swap/providers/velodrome/types.js.map +1 -0
  218. package/dist/actions.d.ts +12 -2
  219. package/dist/actions.d.ts.map +1 -1
  220. package/dist/actions.js +56 -22
  221. package/dist/actions.js.map +1 -1
  222. package/dist/core/error/__tests__/errors.test.d.ts +2 -0
  223. package/dist/core/error/__tests__/errors.test.d.ts.map +1 -0
  224. package/dist/core/error/__tests__/errors.test.js +195 -0
  225. package/dist/core/error/__tests__/errors.test.js.map +1 -0
  226. package/dist/core/error/errors.d.ts +131 -15
  227. package/dist/core/error/errors.d.ts.map +1 -1
  228. package/dist/core/error/errors.js +201 -17
  229. package/dist/core/error/errors.js.map +1 -1
  230. package/dist/index.d.ts +7 -3
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +6 -2
  233. package/dist/index.js.map +1 -1
  234. package/dist/services/ChainManager.d.ts +7 -0
  235. package/dist/services/ChainManager.d.ts.map +1 -1
  236. package/dist/services/ChainManager.js +35 -7
  237. package/dist/services/ChainManager.js.map +1 -1
  238. package/dist/services/__mocks__/MockChainManager.d.ts +1 -0
  239. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  240. package/dist/services/__mocks__/MockChainManager.js +5 -0
  241. package/dist/services/__mocks__/MockChainManager.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/services/nameservices/ens/EnsNamespace.d.ts +57 -0
  249. package/dist/services/nameservices/ens/EnsNamespace.d.ts.map +1 -0
  250. package/dist/services/nameservices/ens/EnsNamespace.js +158 -0
  251. package/dist/services/nameservices/ens/EnsNamespace.js.map +1 -0
  252. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.d.ts +2 -0
  253. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.d.ts.map +1 -0
  254. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.js +144 -0
  255. package/dist/services/nameservices/ens/__tests__/EnsNamespace.spec.js.map +1 -0
  256. package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts +2 -0
  257. package/dist/services/nameservices/ens/__tests__/utils.spec.d.ts.map +1 -0
  258. package/dist/services/nameservices/ens/__tests__/utils.spec.js +75 -0
  259. package/dist/services/nameservices/ens/__tests__/utils.spec.js.map +1 -0
  260. package/dist/services/nameservices/ens/errors.d.ts +24 -0
  261. package/dist/services/nameservices/ens/errors.d.ts.map +1 -0
  262. package/dist/services/nameservices/ens/errors.js +35 -0
  263. package/dist/services/nameservices/ens/errors.js.map +1 -0
  264. package/dist/services/nameservices/ens/index.d.ts +5 -0
  265. package/dist/services/nameservices/ens/index.d.ts.map +1 -0
  266. package/dist/services/nameservices/ens/index.js +5 -0
  267. package/dist/services/nameservices/ens/index.js.map +1 -0
  268. package/dist/services/nameservices/ens/types.d.ts +63 -0
  269. package/dist/services/nameservices/ens/types.d.ts.map +1 -0
  270. package/dist/services/nameservices/ens/types.js +14 -0
  271. package/dist/services/nameservices/ens/types.js.map +1 -0
  272. package/dist/services/nameservices/ens/utils.d.ts +25 -0
  273. package/dist/services/nameservices/ens/utils.d.ts.map +1 -0
  274. package/dist/services/nameservices/ens/utils.js +53 -0
  275. package/dist/services/nameservices/ens/utils.js.map +1 -0
  276. package/dist/services/tokenBalance.d.ts +8 -5
  277. package/dist/services/tokenBalance.d.ts.map +1 -1
  278. package/dist/services/tokenBalance.js +15 -8
  279. package/dist/services/tokenBalance.js.map +1 -1
  280. package/dist/types/actions.d.ts +69 -7
  281. package/dist/types/actions.d.ts.map +1 -1
  282. package/dist/types/asset.d.ts +7 -0
  283. package/dist/types/asset.d.ts.map +1 -1
  284. package/dist/types/common/FilterAssetChain.d.ts +13 -0
  285. package/dist/types/common/FilterAssetChain.d.ts.map +1 -0
  286. package/dist/types/common/FilterAssetChain.js +2 -0
  287. package/dist/types/common/FilterAssetChain.js.map +1 -0
  288. package/dist/types/common/TransactionOptions.d.ts +13 -0
  289. package/dist/types/common/TransactionOptions.d.ts.map +1 -0
  290. package/dist/types/common/TransactionOptions.js +2 -0
  291. package/dist/types/common/TransactionOptions.js.map +1 -0
  292. package/dist/types/common/index.d.ts +3 -0
  293. package/dist/types/common/index.d.ts.map +1 -0
  294. package/dist/types/common/index.js +3 -0
  295. package/dist/types/common/index.js.map +1 -0
  296. package/dist/types/index.d.ts +1 -0
  297. package/dist/types/index.d.ts.map +1 -1
  298. package/dist/types/index.js +1 -0
  299. package/dist/types/index.js.map +1 -1
  300. package/dist/types/lend/base.d.ts +44 -34
  301. package/dist/types/lend/base.d.ts.map +1 -1
  302. package/dist/types/lend/base.js +3 -3
  303. package/dist/types/lend/base.js.map +1 -1
  304. package/dist/types/lend/index.d.ts +0 -1
  305. package/dist/types/lend/index.d.ts.map +1 -1
  306. package/dist/types/lend/index.js +0 -1
  307. package/dist/types/lend/index.js.map +1 -1
  308. package/dist/types/providers.d.ts +2 -2
  309. package/dist/types/providers.d.ts.map +1 -1
  310. package/dist/types/swap/base.d.ts +29 -16
  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__/serializers.test.d.ts +2 -0
  321. package/dist/utils/__tests__/serializers.test.d.ts.map +1 -0
  322. package/dist/utils/__tests__/serializers.test.js +43 -0
  323. package/dist/utils/__tests__/serializers.test.js.map +1 -0
  324. package/dist/utils/__tests__/validateAddresses.test.d.ts.map +1 -0
  325. package/dist/utils/{validateAddresses.test.js → __tests__/validateAddresses.test.js} +10 -10
  326. package/dist/utils/__tests__/validateAddresses.test.js.map +1 -0
  327. package/dist/utils/abi/permit2.d.ts +48 -0
  328. package/dist/utils/abi/permit2.d.ts.map +1 -0
  329. package/dist/utils/abi/permit2.js +34 -0
  330. package/dist/utils/abi/permit2.js.map +1 -0
  331. package/dist/utils/approve.d.ts +26 -3
  332. package/dist/utils/approve.d.ts.map +1 -1
  333. package/dist/utils/approve.js +34 -37
  334. package/dist/utils/approve.js.map +1 -1
  335. package/dist/utils/assets.d.ts.map +1 -1
  336. package/dist/utils/assets.js +3 -2
  337. package/dist/utils/assets.js.map +1 -1
  338. package/dist/utils/serializers.d.ts +16 -0
  339. package/dist/utils/serializers.d.ts.map +1 -0
  340. package/dist/utils/serializers.js +18 -0
  341. package/dist/utils/serializers.js.map +1 -0
  342. package/dist/utils/validation.d.ts +13 -1
  343. package/dist/utils/validation.d.ts.map +1 -1
  344. package/dist/utils/validation.js +38 -8
  345. package/dist/utils/validation.js.map +1 -1
  346. package/dist/wallet/core/error/errors.d.ts +21 -0
  347. package/dist/wallet/core/error/errors.d.ts.map +1 -0
  348. package/dist/wallet/core/error/errors.js +24 -0
  349. package/dist/wallet/core/error/errors.js.map +1 -0
  350. package/dist/wallet/core/namespace/WalletNamespace.d.ts +24 -8
  351. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  352. package/dist/wallet/core/namespace/WalletNamespace.js +48 -17
  353. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  354. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +105 -10
  355. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  356. package/dist/wallet/core/providers/WalletProvider.d.ts +3 -2
  357. package/dist/wallet/core/providers/WalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/core/providers/WalletProvider.js +8 -2
  359. package/dist/wallet/core/providers/WalletProvider.js.map +1 -1
  360. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js +1 -1
  361. package/dist/wallet/core/providers/__tests__/WalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.d.ts.map +1 -1
  363. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js +2 -1
  364. package/dist/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js.map +1 -1
  365. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js +1 -1
  366. package/dist/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.js.map +1 -1
  367. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +1 -1
  368. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  369. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts +2 -0
  370. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.d.ts.map +1 -0
  371. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js +31 -0
  372. package/dist/wallet/core/utils/__tests__/executeTransactionBatch.spec.js.map +1 -0
  373. package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +1 -0
  374. package/dist/wallet/core/utils/__tests__/retryOnStaleRead.spec.js.map +1 -0
  375. package/dist/wallet/core/utils/executeTransactionBatch.d.ts +22 -0
  376. package/dist/wallet/core/utils/executeTransactionBatch.d.ts.map +1 -0
  377. package/dist/wallet/core/utils/executeTransactionBatch.js +26 -0
  378. package/dist/wallet/core/utils/executeTransactionBatch.js.map +1 -0
  379. package/dist/wallet/core/utils/retryOnStaleRead.d.ts.map +1 -0
  380. package/dist/wallet/core/utils/retryOnStaleRead.js.map +1 -0
  381. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +8 -8
  382. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  383. package/dist/wallet/core/wallets/abstract/Wallet.js +15 -12
  384. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  385. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +3 -3
  386. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  387. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  388. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +28 -2
  389. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  390. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts +1 -1
  391. package/dist/wallet/core/wallets/eoa/EOAWallet.d.ts.map +1 -1
  392. package/dist/wallet/core/wallets/eoa/EOAWallet.js.map +1 -1
  393. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts +1 -1
  394. package/dist/wallet/core/wallets/smart/abstract/SmartWallet.d.ts.map +1 -1
  395. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +1 -1
  396. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  397. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +2 -2
  398. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  399. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js +1 -1
  400. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  401. package/dist/wallet/node/index.d.ts +1 -0
  402. package/dist/wallet/node/index.d.ts.map +1 -1
  403. package/dist/wallet/node/index.js +1 -0
  404. package/dist/wallet/node/index.js.map +1 -1
  405. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
  406. package/dist/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  407. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +1 -1
  408. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  409. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
  410. package/dist/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  411. package/dist/wallet/node/wallets/local/LocalWallet.d.ts +24 -0
  412. package/dist/wallet/node/wallets/local/LocalWallet.d.ts.map +1 -0
  413. package/dist/wallet/node/wallets/local/LocalWallet.js +21 -0
  414. package/dist/wallet/node/wallets/local/LocalWallet.js.map +1 -0
  415. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts +2 -0
  416. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.d.ts.map +1 -0
  417. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js +51 -0
  418. package/dist/wallet/node/wallets/local/__tests__/LocalWallet.spec.js.map +1 -0
  419. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -1
  420. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  421. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -1
  422. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  423. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js +1 -1
  424. package/dist/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.js.map +1 -1
  425. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +1 -1
  426. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  427. package/package.json +2 -2
  428. package/src/__tests__/actions.test.ts +3 -1
  429. package/src/{lend → actions/lend}/__mocks__/MockLendProvider.ts +24 -9
  430. package/src/{lend → actions/lend}/__mocks__/mockLendTransaction.ts +2 -2
  431. package/src/{lend → actions/lend}/core/LendProvider.ts +123 -39
  432. package/src/{lend → actions/lend}/core/__tests__/LendProvider.test.ts +82 -3
  433. package/src/actions/lend/index.ts +3 -0
  434. package/src/{lend → actions/lend}/namespaces/BaseLendNamespace.ts +20 -37
  435. package/src/{lend → actions/lend}/namespaces/WalletLendNamespace.ts +15 -22
  436. package/src/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.ts +3 -3
  437. package/src/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.ts +3 -3
  438. package/src/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.ts +6 -6
  439. package/src/{lend → actions/lend}/providers/aave/AaveLendProvider.ts +65 -73
  440. package/src/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.ts +7 -7
  441. package/src/{lend → actions/lend}/providers/aave/sdk.ts +15 -9
  442. package/src/{lend → actions/lend}/providers/morpho/MorphoLendProvider.ts +67 -53
  443. package/src/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.ts +79 -5
  444. package/src/{lend → actions/lend}/providers/morpho/__tests__/api.test.ts +3 -3
  445. package/src/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.ts +2 -2
  446. package/src/{lend → actions/lend}/providers/morpho/sdk.ts +23 -12
  447. package/src/actions/lend/utils/markets.ts +62 -0
  448. package/src/actions/shared/BaseNamespace.ts +46 -0
  449. package/src/actions/shared/__tests__/BaseNamespace.spec.ts +58 -0
  450. package/src/{lend/providers → actions/shared}/morpho/contracts.ts +2 -2
  451. package/src/{swap → actions/swap}/__mocks__/MockSwapProvider.ts +6 -2
  452. package/src/{swap → actions/swap}/core/SwapProvider.ts +99 -65
  453. package/src/{swap → actions/swap}/core/__tests__/SwapProvider.test.ts +51 -1
  454. package/src/{swap → actions/swap}/core/markets.ts +2 -1
  455. package/src/actions/swap/index.ts +19 -0
  456. package/src/{swap → actions/swap}/namespaces/ActionsSwapNamespace.ts +1 -1
  457. package/src/{swap → actions/swap}/namespaces/BaseSwapNamespace.ts +127 -109
  458. package/src/actions/swap/namespaces/WalletSwapNamespace.ts +154 -0
  459. package/src/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.ts +10 -6
  460. package/src/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.ts +110 -22
  461. package/src/{swap → actions/swap}/providers/uniswap/UniswapSwapProvider.ts +37 -15
  462. package/src/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +2 -2
  463. package/src/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.ts +65 -3
  464. package/src/{swap → actions/swap}/providers/uniswap/addresses.ts +5 -1
  465. package/src/{swap → actions/swap}/providers/uniswap/encoding.ts +3 -3
  466. package/src/{swap → actions/swap}/providers/uniswap/markets.ts +2 -2
  467. package/src/{swap → actions/swap}/providers/velodrome/VelodromeSwapProvider.ts +74 -32
  468. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +2 -2
  469. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +8 -7
  470. package/src/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +47 -5
  471. package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.ts +31 -2
  472. package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.ts +34 -3
  473. package/src/{swap → actions/swap}/providers/velodrome/config.ts +5 -1
  474. package/src/{swap → actions/swap}/providers/velodrome/encoding/helpers.ts +3 -2
  475. package/src/{swap → actions/swap}/providers/velodrome/encoding/index.ts +0 -1
  476. package/src/{swap → actions/swap}/providers/velodrome/encoding/poolRouter.ts +4 -3
  477. package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/cl.ts +31 -23
  478. package/src/{swap → actions/swap}/providers/velodrome/encoding/routers/v2.ts +34 -27
  479. package/src/{swap → actions/swap}/providers/velodrome/markets.ts +4 -3
  480. package/src/actions.ts +82 -36
  481. package/src/core/error/__tests__/errors.test.ts +236 -0
  482. package/src/core/error/errors.ts +282 -22
  483. package/src/index.ts +25 -10
  484. package/src/services/ChainManager.ts +36 -9
  485. package/src/services/__mocks__/MockChainManager.ts +8 -0
  486. package/src/services/{ChainManager.spec.ts → __tests__/ChainManager.spec.ts} +6 -6
  487. package/src/services/{tokenBalance.spec.ts → __tests__/tokenBalance.spec.ts} +56 -1
  488. package/src/services/nameservices/ens/EnsNamespace.ts +210 -0
  489. package/src/services/nameservices/ens/__tests__/EnsNamespace.spec.ts +173 -0
  490. package/src/services/nameservices/ens/__tests__/utils.spec.ts +105 -0
  491. package/src/services/nameservices/ens/errors.ts +45 -0
  492. package/src/services/nameservices/ens/index.ts +17 -0
  493. package/src/services/nameservices/ens/types.ts +76 -0
  494. package/src/services/nameservices/ens/utils.ts +85 -0
  495. package/src/services/tokenBalance.ts +16 -7
  496. package/src/types/actions.ts +72 -7
  497. package/src/types/asset.ts +8 -0
  498. package/src/types/common/FilterAssetChain.ts +13 -0
  499. package/src/types/common/TransactionOptions.ts +12 -0
  500. package/src/types/common/index.ts +2 -0
  501. package/src/types/index.ts +1 -0
  502. package/src/types/lend/base.ts +48 -36
  503. package/src/types/lend/index.ts +0 -1
  504. package/src/types/providers.ts +2 -2
  505. package/src/types/swap/base.ts +29 -16
  506. package/src/utils/{approve.test.ts → __tests__/approve.test.ts} +51 -18
  507. package/src/utils/__tests__/serializers.test.ts +53 -0
  508. package/src/utils/{validateAddresses.test.ts → __tests__/validateAddresses.test.ts} +9 -9
  509. package/src/utils/abi/permit2.ts +33 -0
  510. package/src/utils/approve.ts +48 -37
  511. package/src/utils/assets.ts +6 -6
  512. package/src/utils/serializers.ts +21 -0
  513. package/src/utils/validation.ts +53 -15
  514. package/src/wallet/core/error/errors.ts +30 -0
  515. package/src/wallet/core/namespace/WalletNamespace.ts +82 -20
  516. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +141 -16
  517. package/src/wallet/core/providers/WalletProvider.ts +12 -3
  518. package/src/wallet/core/providers/__tests__/WalletProvider.spec.ts +1 -1
  519. package/src/wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.ts +2 -1
  520. package/src/wallet/core/providers/hosted/registry/__tests__/HostedWalletProviderRegistry.spec.ts +1 -1
  521. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +1 -1
  522. package/src/wallet/core/utils/__tests__/executeTransactionBatch.spec.ts +42 -0
  523. package/src/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.ts +1 -1
  524. package/src/wallet/core/utils/executeTransactionBatch.ts +37 -0
  525. package/src/wallet/core/wallets/abstract/Wallet.ts +19 -14
  526. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +3 -3
  527. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +54 -3
  528. package/src/wallet/core/wallets/eoa/EOAWallet.ts +1 -1
  529. package/src/wallet/core/wallets/smart/abstract/SmartWallet.ts +1 -1
  530. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +3 -3
  531. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +1 -1
  532. package/src/wallet/node/index.ts +1 -0
  533. package/src/wallet/node/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
  534. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +1 -1
  535. package/src/wallet/node/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
  536. package/src/wallet/node/wallets/local/LocalWallet.ts +48 -0
  537. package/src/wallet/node/wallets/local/__tests__/LocalWallet.spec.ts +64 -0
  538. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -1
  539. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -1
  540. package/src/wallet/react/providers/hosted/turnkey/__tests__/TurnkeyHostedWalletProvider.spec.ts +1 -1
  541. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +1 -1
  542. package/dist/core/asset/__mocks__/mockAsset.d.ts +0 -6
  543. package/dist/core/asset/__mocks__/mockAsset.d.ts.map +0 -1
  544. package/dist/core/asset/__mocks__/mockAsset.js +0 -12
  545. package/dist/core/asset/__mocks__/mockAsset.js.map +0 -1
  546. package/dist/core/utils/__tests__/retryOnStaleRead.spec.d.ts.map +0 -1
  547. package/dist/core/utils/__tests__/retryOnStaleRead.spec.js.map +0 -1
  548. package/dist/core/utils/retryOnStaleRead.d.ts.map +0 -1
  549. package/dist/core/utils/retryOnStaleRead.js.map +0 -1
  550. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +0 -1
  551. package/dist/lend/__mocks__/MockLendProvider.js.map +0 -1
  552. package/dist/lend/__mocks__/MockMarkets.d.ts.map +0 -1
  553. package/dist/lend/__mocks__/MockMarkets.js.map +0 -1
  554. package/dist/lend/__mocks__/mockLendTransaction.d.ts.map +0 -1
  555. package/dist/lend/__mocks__/mockLendTransaction.js.map +0 -1
  556. package/dist/lend/core/LendProvider.d.ts.map +0 -1
  557. package/dist/lend/core/LendProvider.js.map +0 -1
  558. package/dist/lend/core/__tests__/LendProvider.test.d.ts.map +0 -1
  559. package/dist/lend/core/__tests__/LendProvider.test.js.map +0 -1
  560. package/dist/lend/index.d.ts.map +0 -1
  561. package/dist/lend/index.js.map +0 -1
  562. package/dist/lend/namespaces/ActionsLendNamespace.d.ts.map +0 -1
  563. package/dist/lend/namespaces/ActionsLendNamespace.js.map +0 -1
  564. package/dist/lend/namespaces/BaseLendNamespace.d.ts +0 -43
  565. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +0 -1
  566. package/dist/lend/namespaces/BaseLendNamespace.js.map +0 -1
  567. package/dist/lend/namespaces/WalletLendNamespace.d.ts.map +0 -1
  568. package/dist/lend/namespaces/WalletLendNamespace.js.map +0 -1
  569. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.d.ts.map +0 -1
  570. package/dist/lend/namespaces/__tests__/ActionsLendNamespace.spec.js.map +0 -1
  571. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.d.ts.map +0 -1
  572. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +0 -1
  573. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.d.ts.map +0 -1
  574. package/dist/lend/namespaces/__tests__/WalletLendNamespace.spec.js.map +0 -1
  575. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +0 -1
  576. package/dist/lend/providers/aave/AaveLendProvider.js.map +0 -1
  577. package/dist/lend/providers/aave/__mocks__/mockReserve.d.ts.map +0 -1
  578. package/dist/lend/providers/aave/__mocks__/mockReserve.js.map +0 -1
  579. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.d.ts.map +0 -1
  580. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +0 -1
  581. package/dist/lend/providers/aave/abis/pool.d.ts.map +0 -1
  582. package/dist/lend/providers/aave/abis/pool.js.map +0 -1
  583. package/dist/lend/providers/aave/addresses.d.ts.map +0 -1
  584. package/dist/lend/providers/aave/addresses.js.map +0 -1
  585. package/dist/lend/providers/aave/sdk.d.ts.map +0 -1
  586. package/dist/lend/providers/aave/sdk.js.map +0 -1
  587. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +0 -1
  588. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +0 -1
  589. package/dist/lend/providers/morpho/__mocks__/mockVault.d.ts.map +0 -1
  590. package/dist/lend/providers/morpho/__mocks__/mockVault.js.map +0 -1
  591. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.d.ts.map +0 -1
  592. package/dist/lend/providers/morpho/__tests__/MorphoLendProvider.test.js.map +0 -1
  593. package/dist/lend/providers/morpho/__tests__/api.test.d.ts.map +0 -1
  594. package/dist/lend/providers/morpho/__tests__/api.test.js.map +0 -1
  595. package/dist/lend/providers/morpho/__tests__/sdk.test.d.ts.map +0 -1
  596. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +0 -1
  597. package/dist/lend/providers/morpho/api.d.ts.map +0 -1
  598. package/dist/lend/providers/morpho/api.js.map +0 -1
  599. package/dist/lend/providers/morpho/contracts.d.ts.map +0 -1
  600. package/dist/lend/providers/morpho/sdk.d.ts.map +0 -1
  601. package/dist/lend/providers/morpho/sdk.js.map +0 -1
  602. package/dist/services/ChainManager.spec.d.ts.map +0 -1
  603. package/dist/services/ChainManager.spec.js.map +0 -1
  604. package/dist/services/tokenBalance.spec.d.ts.map +0 -1
  605. package/dist/services/tokenBalance.spec.js.map +0 -1
  606. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +0 -1
  607. package/dist/swap/__mocks__/MockSwapProvider.js.map +0 -1
  608. package/dist/swap/core/SwapProvider.d.ts.map +0 -1
  609. package/dist/swap/core/SwapProvider.js.map +0 -1
  610. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +0 -1
  611. package/dist/swap/core/__tests__/SwapProvider.test.js.map +0 -1
  612. package/dist/swap/core/markets.d.ts.map +0 -1
  613. package/dist/swap/core/markets.js.map +0 -1
  614. package/dist/swap/index.d.ts.map +0 -1
  615. package/dist/swap/index.js.map +0 -1
  616. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +0 -1
  617. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +0 -1
  618. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +0 -1
  619. package/dist/swap/namespaces/BaseSwapNamespace.js.map +0 -1
  620. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +0 -34
  621. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +0 -1
  622. package/dist/swap/namespaces/WalletSwapNamespace.js +0 -84
  623. package/dist/swap/namespaces/WalletSwapNamespace.js.map +0 -1
  624. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +0 -1
  625. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +0 -1
  626. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +0 -1
  627. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +0 -1
  628. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +0 -1
  629. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +0 -1
  630. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +0 -1
  631. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +0 -1
  632. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +0 -1
  633. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +0 -1
  634. package/dist/swap/providers/uniswap/abis.d.ts.map +0 -1
  635. package/dist/swap/providers/uniswap/abis.js.map +0 -1
  636. package/dist/swap/providers/uniswap/addresses.d.ts.map +0 -1
  637. package/dist/swap/providers/uniswap/addresses.js.map +0 -1
  638. package/dist/swap/providers/uniswap/encoding.d.ts.map +0 -1
  639. package/dist/swap/providers/uniswap/encoding.js.map +0 -1
  640. package/dist/swap/providers/uniswap/markets.d.ts.map +0 -1
  641. package/dist/swap/providers/uniswap/markets.js.map +0 -1
  642. package/dist/swap/providers/uniswap/types.d.ts.map +0 -1
  643. package/dist/swap/providers/uniswap/types.js.map +0 -1
  644. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +0 -1
  645. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +0 -1
  646. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +0 -1
  647. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +0 -1
  648. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +0 -1
  649. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +0 -1
  650. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +0 -1
  651. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +0 -1
  652. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +0 -1
  653. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +0 -1
  654. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +0 -1
  655. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +0 -1
  656. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +0 -1
  657. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +0 -1
  658. package/dist/swap/providers/velodrome/abis.d.ts.map +0 -1
  659. package/dist/swap/providers/velodrome/abis.js.map +0 -1
  660. package/dist/swap/providers/velodrome/addresses.d.ts.map +0 -1
  661. package/dist/swap/providers/velodrome/addresses.js.map +0 -1
  662. package/dist/swap/providers/velodrome/config.d.ts.map +0 -1
  663. package/dist/swap/providers/velodrome/config.js.map +0 -1
  664. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +0 -1
  665. package/dist/swap/providers/velodrome/encoding/helpers.js.map +0 -1
  666. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +0 -1
  667. package/dist/swap/providers/velodrome/encoding/index.js.map +0 -1
  668. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +0 -1
  669. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +0 -1
  670. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +0 -15
  671. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +0 -1
  672. package/dist/swap/providers/velodrome/encoding/routers/approval.js +0 -33
  673. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +0 -1
  674. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +0 -1
  675. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +0 -1
  676. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +0 -1
  677. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +0 -1
  678. package/dist/swap/providers/velodrome/markets.d.ts.map +0 -1
  679. package/dist/swap/providers/velodrome/markets.js.map +0 -1
  680. package/dist/swap/providers/velodrome/types.d.ts.map +0 -1
  681. package/dist/swap/providers/velodrome/types.js.map +0 -1
  682. package/dist/types/lend/contracts.d.ts.map +0 -1
  683. package/dist/types/lend/contracts.js +0 -2
  684. package/dist/types/lend/contracts.js.map +0 -1
  685. package/dist/utils/approve.test.d.ts.map +0 -1
  686. package/dist/utils/approve.test.js.map +0 -1
  687. package/dist/utils/assets.test.d.ts.map +0 -1
  688. package/dist/utils/assets.test.js.map +0 -1
  689. package/dist/utils/markets.d.ts +0 -17
  690. package/dist/utils/markets.d.ts.map +0 -1
  691. package/dist/utils/markets.js +0 -25
  692. package/dist/utils/markets.js.map +0 -1
  693. package/dist/utils/validateAddresses.test.d.ts.map +0 -1
  694. package/dist/utils/validateAddresses.test.js.map +0 -1
  695. package/src/core/asset/__mocks__/mockAsset.ts +0 -13
  696. package/src/lend/index.ts +0 -3
  697. package/src/swap/index.ts +0 -19
  698. package/src/swap/namespaces/WalletSwapNamespace.ts +0 -121
  699. package/src/swap/providers/velodrome/encoding/routers/approval.ts +0 -45
  700. package/src/utils/markets.ts +0 -35
  701. /package/dist/{lend → actions/lend}/core/__tests__/LendProvider.test.d.ts +0 -0
  702. /package/dist/{lend → actions/lend}/index.d.ts +0 -0
  703. /package/dist/{lend → actions/lend}/index.js +0 -0
  704. /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.d.ts +0 -0
  705. /package/dist/{lend → actions/lend}/namespaces/ActionsLendNamespace.js +0 -0
  706. /package/dist/{lend → actions/lend}/namespaces/__tests__/ActionsLendNamespace.spec.d.ts +0 -0
  707. /package/dist/{lend → actions/lend}/namespaces/__tests__/BaseLendNamespace.spec.d.ts +0 -0
  708. /package/dist/{lend → actions/lend}/namespaces/__tests__/WalletLendNamespace.spec.d.ts +0 -0
  709. /package/dist/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.js +0 -0
  710. /package/dist/{lend → actions/lend}/providers/aave/__tests__/AaveLendProvider.test.d.ts +0 -0
  711. /package/dist/{lend → actions/lend}/providers/aave/abis/pool.d.ts +0 -0
  712. /package/dist/{lend → actions/lend}/providers/aave/abis/pool.js +0 -0
  713. /package/dist/{lend → actions/lend}/providers/aave/addresses.d.ts +0 -0
  714. /package/dist/{lend → actions/lend}/providers/aave/addresses.js +0 -0
  715. /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.d.ts +0 -0
  716. /package/dist/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.js +0 -0
  717. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/MorphoLendProvider.test.d.ts +0 -0
  718. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/api.test.d.ts +0 -0
  719. /package/dist/{lend → actions/lend}/providers/morpho/__tests__/sdk.test.d.ts +0 -0
  720. /package/dist/{lend → actions/lend}/providers/morpho/api.d.ts +0 -0
  721. /package/dist/{lend → actions/lend}/providers/morpho/api.js +0 -0
  722. /package/dist/{lend/providers → actions/shared}/morpho/contracts.js +0 -0
  723. /package/dist/{swap/providers/uniswap → actions/shared/morpho}/types.js +0 -0
  724. /package/dist/{swap → actions/swap}/core/__tests__/SwapProvider.test.d.ts +0 -0
  725. /package/dist/{swap → actions/swap}/index.d.ts +0 -0
  726. /package/dist/{swap → actions/swap}/index.js +0 -0
  727. /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.d.ts +0 -0
  728. /package/dist/{swap → actions/swap}/namespaces/ActionsSwapNamespace.js +0 -0
  729. /package/dist/{swap → actions/swap}/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +0 -0
  730. /package/dist/{swap → actions/swap}/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +0 -0
  731. /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +0 -0
  732. /package/dist/{swap → actions/swap}/providers/uniswap/__tests__/sdk.test.d.ts +0 -0
  733. /package/dist/{swap → actions/swap}/providers/uniswap/abis.d.ts +0 -0
  734. /package/dist/{swap → actions/swap}/providers/uniswap/abis.js +0 -0
  735. /package/dist/{swap/providers/velodrome → actions/swap/providers/uniswap}/types.js +0 -0
  736. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +0 -0
  737. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +0 -0
  738. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +0 -0
  739. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +0 -0
  740. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.cl.test.d.ts +0 -0
  741. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.js +0 -0
  742. /package/dist/{swap → actions/swap}/providers/velodrome/__tests__/encoding.v2.test.d.ts +0 -0
  743. /package/dist/{swap → actions/swap}/providers/velodrome/abis.d.ts +0 -0
  744. /package/dist/{swap → actions/swap}/providers/velodrome/abis.js +0 -0
  745. /package/dist/{swap → actions/swap}/providers/velodrome/addresses.js +0 -0
  746. /package/dist/services/{ChainManager.spec.d.ts → __tests__/ChainManager.spec.d.ts} +0 -0
  747. /package/dist/services/{tokenBalance.spec.d.ts → __tests__/tokenBalance.spec.d.ts} +0 -0
  748. /package/dist/utils/{approve.test.d.ts → __tests__/approve.test.d.ts} +0 -0
  749. /package/dist/utils/{assets.test.d.ts → __tests__/assets.test.d.ts} +0 -0
  750. /package/dist/utils/{validateAddresses.test.d.ts → __tests__/validateAddresses.test.d.ts} +0 -0
  751. /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.d.ts +0 -0
  752. /package/dist/{core → wallet/core}/utils/__tests__/retryOnStaleRead.spec.js +0 -0
  753. /package/dist/{core → wallet/core}/utils/retryOnStaleRead.d.ts +0 -0
  754. /package/dist/{core → wallet/core}/utils/retryOnStaleRead.js +0 -0
  755. /package/src/{lend → actions/lend}/__mocks__/MockMarkets.ts +0 -0
  756. /package/src/{lend → actions/lend}/namespaces/ActionsLendNamespace.ts +0 -0
  757. /package/src/{lend → actions/lend}/providers/aave/__mocks__/mockReserve.ts +0 -0
  758. /package/src/{lend → actions/lend}/providers/aave/abis/pool.ts +0 -0
  759. /package/src/{lend → actions/lend}/providers/aave/addresses.ts +0 -0
  760. /package/src/{lend → actions/lend}/providers/morpho/__mocks__/mockVault.ts +0 -0
  761. /package/src/{lend → actions/lend}/providers/morpho/api.ts +0 -0
  762. /package/src/{types/lend/contracts.ts → actions/shared/morpho/types.ts} +0 -0
  763. /package/src/{swap → actions/swap}/providers/uniswap/abis.ts +0 -0
  764. /package/src/{swap → actions/swap}/providers/uniswap/types.ts +0 -0
  765. /package/src/{swap → actions/swap}/providers/velodrome/__tests__/encoding.helpers.ts +0 -0
  766. /package/src/{swap → actions/swap}/providers/velodrome/abis.ts +0 -0
  767. /package/src/{swap → actions/swap}/providers/velodrome/addresses.ts +0 -0
  768. /package/src/{swap → actions/swap}/providers/velodrome/types.ts +0 -0
  769. /package/src/utils/{assets.test.ts → __tests__/assets.test.ts} +0 -0
  770. /package/src/{core → wallet/core}/utils/retryOnStaleRead.ts +0 -0
@@ -0,0 +1,210 @@
1
+ import { type Address, createPublicClient, http } from 'viem'
2
+ import { mainnet } from 'viem/chains'
3
+ import { normalize } from 'viem/ens'
4
+
5
+ import type { ChainManager } from '@/services/ChainManager.js'
6
+ import { resolveAddress } from '@/services/nameservices/ens/utils.js'
7
+
8
+ import { EnsResolutionError, EnsRpcError } from './errors.js'
9
+ import {
10
+ type EnsInfo,
11
+ type EnsName,
12
+ isEnsName,
13
+ type NameServiceProvider,
14
+ } from './types.js'
15
+
16
+ /** Default TTL for cached ENS lookups — 5 minutes */
17
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000
18
+
19
+ /** Public mainnet RPC used as fallback when mainnet is not in chain config */
20
+ const FALLBACK_MAINNET_RPC = 'https://cloudflare-eth.com'
21
+
22
+ /** ENSIP-5 / ENSIP-18 standard text record keys mapped to EnsInfo field names */
23
+ const ENS_TEXT_KEYS = {
24
+ avatar: 'avatar',
25
+ display: 'display',
26
+ description: 'description',
27
+ url: 'url',
28
+ email: 'email',
29
+ keywords: 'keywords',
30
+ twitter: 'com.twitter',
31
+ github: 'com.github',
32
+ discord: 'com.discord',
33
+ reddit: 'org.reddit',
34
+ } as const satisfies Record<keyof EnsInfo, string>
35
+
36
+ /**
37
+ * Namespace for human-readable name resolution on Ethereum.
38
+ * Currently backed by ENS (Ethereum Name Service) on mainnet.
39
+ *
40
+ * Implements {@link NameServiceProvider} — designed to be extensible: future
41
+ * versions could support alternative name services alongside ENS (e.g. Basename,
42
+ * Unstoppable Domains, Lens handles). The natural evolution is additional
43
+ * NameServiceProvider implementations registered under their own namespace
44
+ * (e.g. `actions.basename`).
45
+ *
46
+ * Falls back to a public mainnet RPC automatically if mainnet is not included
47
+ * in your chain configuration, so ENS works even in L2-only setups.
48
+ */
49
+ export class EnsNamespace implements NameServiceProvider {
50
+ private chainManager: ChainManager
51
+ private readonly cacheTtlMs: number
52
+ private addressCache = new Map<
53
+ string,
54
+ { value: Address; expiresAt: number }
55
+ >()
56
+ private nameCache = new Map<
57
+ Address,
58
+ { value: EnsName | null; expiresAt: number }
59
+ >()
60
+ private infoCache = new Map<string, { value: EnsInfo; expiresAt: number }>()
61
+
62
+ constructor(chainManager: ChainManager, cacheTtlMs = DEFAULT_CACHE_TTL_MS) {
63
+ this.chainManager = chainManager
64
+ this.cacheTtlMs = cacheTtlMs
65
+ }
66
+
67
+ /**
68
+ * Resolve an ENS name or hex address to a checksummed hex address.
69
+ * Hex addresses are returned as-is after format validation.
70
+ *
71
+ * If you need to resolve outside of an {@link Actions} instance (e.g. in a
72
+ * provider or script), use the lower-level `resolveAddress` utility instead.
73
+ * @param input - Hex address (0x...) or ENS name (e.g. "vitalik.eth")
74
+ * @returns Resolved hex address
75
+ * @throws {EnsResolutionError} If the name cannot be resolved
76
+ * @throws {EnsRpcError} If the RPC call fails
77
+ */
78
+ async getAddress(input: Address | EnsName): Promise<Address> {
79
+ const cached = this.addressCache.get(input)
80
+ if (cached && Date.now() < cached.expiresAt) return cached.value
81
+ const value = await resolveAddress(input, this.getMainnetClient())
82
+ this.addressCache.set(input, {
83
+ value,
84
+ expiresAt: Date.now() + this.cacheTtlMs,
85
+ })
86
+ return value
87
+ }
88
+
89
+ /**
90
+ * Reverse-resolve an address to its primary ENS name.
91
+ * @param address - Hex address to look up
92
+ * @returns ENS name, or null if none is set
93
+ * @throws {EnsRpcError} If the RPC call fails
94
+ */
95
+ async getName(address: Address): Promise<EnsName | null> {
96
+ const cached = this.nameCache.get(address)
97
+ if (cached && Date.now() < cached.expiresAt) return cached.value
98
+ const name = await this.getMainnetClient()
99
+ .getEnsName({ address })
100
+ .catch((cause: unknown) => {
101
+ throw new EnsRpcError(
102
+ `ENS reverse resolution failed for "${address}": RPC error`,
103
+ address,
104
+ { cause },
105
+ )
106
+ })
107
+ const value = name && isEnsName(name) ? name : null
108
+ this.nameCache.set(address, {
109
+ value,
110
+ expiresAt: Date.now() + this.cacheTtlMs,
111
+ })
112
+ return value
113
+ }
114
+
115
+ /**
116
+ * Fetch all standard ENS profile text record fields (ENSIP-5 / ENSIP-18)
117
+ * for an ENS name or address in a single batched call.
118
+ *
119
+ * All fields are null when not set. Returns all-null if the address has
120
+ * no primary ENS name.
121
+ * @param input - Hex address (0x...) or ENS name
122
+ * @returns EnsInfo object with all standard text record fields
123
+ * @throws {EnsResolutionError} If the name cannot be normalized
124
+ * @throws {EnsRpcError} If the RPC call fails
125
+ */
126
+ async getInfo(input: Address | EnsName): Promise<EnsInfo> {
127
+ const name = isEnsName(input) ? input : await this.getName(input)
128
+ if (!name) return nullInfo()
129
+
130
+ const cached = this.infoCache.get(name)
131
+ if (cached && Date.now() < cached.expiresAt) return cached.value
132
+
133
+ const normalized = (() => {
134
+ try {
135
+ return normalize(name)
136
+ } catch (cause) {
137
+ throw new EnsResolutionError(
138
+ `ENS name "${name}" is invalid and cannot be normalized`,
139
+ name,
140
+ { cause },
141
+ )
142
+ }
143
+ })()
144
+
145
+ const client = this.getMainnetClient()
146
+ const fetchKey = (key: string) =>
147
+ client.getEnsText({ name: normalized, key }).catch((cause: unknown) => {
148
+ throw new EnsRpcError(
149
+ `ENS text record lookup failed for "${name}" key "${key}": RPC error`,
150
+ name,
151
+ { cause },
152
+ )
153
+ })
154
+
155
+ const [
156
+ avatar,
157
+ display,
158
+ description,
159
+ url,
160
+ email,
161
+ keywords,
162
+ twitter,
163
+ github,
164
+ discord,
165
+ reddit,
166
+ ] = await Promise.all(Object.values(ENS_TEXT_KEYS).map(fetchKey))
167
+
168
+ const value: EnsInfo = {
169
+ avatar: avatar ?? null,
170
+ display: display ?? null,
171
+ description: description ?? null,
172
+ url: url ?? null,
173
+ email: email ?? null,
174
+ keywords: keywords ?? null,
175
+ twitter: twitter ?? null,
176
+ github: github ?? null,
177
+ discord: discord ?? null,
178
+ reddit: reddit ?? null,
179
+ }
180
+
181
+ this.infoCache.set(name, { value, expiresAt: Date.now() + this.cacheTtlMs })
182
+ return value
183
+ }
184
+
185
+ private getMainnetClient() {
186
+ return (
187
+ this.chainManager.tryGetPublicClient(mainnet.id) ??
188
+ createPublicClient({
189
+ chain: mainnet,
190
+ transport: http(FALLBACK_MAINNET_RPC),
191
+ batch: { multicall: true },
192
+ })
193
+ )
194
+ }
195
+ }
196
+
197
+ function nullInfo(): EnsInfo {
198
+ return {
199
+ avatar: null,
200
+ display: null,
201
+ description: null,
202
+ url: null,
203
+ email: null,
204
+ keywords: null,
205
+ twitter: null,
206
+ github: null,
207
+ discord: null,
208
+ reddit: null,
209
+ }
210
+ }
@@ -0,0 +1,173 @@
1
+ import type { Address, PublicClient } from 'viem'
2
+ import { describe, expect, it, vi } from 'vitest'
3
+
4
+ import type { ChainManager } from '@/services/ChainManager.js'
5
+ import { EnsNamespace } from '@/services/nameservices/ens/EnsNamespace.js'
6
+ import {
7
+ EnsResolutionError,
8
+ EnsRpcError,
9
+ } from '@/services/nameservices/ens/errors.js'
10
+ import type { EnsName } from '@/services/nameservices/ens/types.js'
11
+
12
+ const REAL_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' as Address
13
+ const ENS_NAME = 'vitalik.eth' as EnsName
14
+
15
+ function mockChainManager(client?: Partial<PublicClient>): ChainManager {
16
+ const tryGetPublicClient = client
17
+ ? vi.fn().mockReturnValue(client)
18
+ : vi.fn().mockReturnValue(undefined)
19
+ return { tryGetPublicClient } as unknown as ChainManager
20
+ }
21
+
22
+ function mockClient(
23
+ overrides: Partial<PublicClient> = {},
24
+ ): Partial<PublicClient> {
25
+ return {
26
+ getEnsAddress: vi.fn().mockResolvedValue(REAL_ADDRESS),
27
+ getEnsName: vi.fn().mockResolvedValue(ENS_NAME),
28
+ getEnsText: vi.fn().mockResolvedValue(null),
29
+ ...overrides,
30
+ }
31
+ }
32
+
33
+ describe('EnsNamespace', () => {
34
+ describe('getAddress', () => {
35
+ it('resolves a hex address directly', async () => {
36
+ const ens = new EnsNamespace(mockChainManager())
37
+ expect(await ens.getAddress(REAL_ADDRESS)).toBe(REAL_ADDRESS)
38
+ })
39
+
40
+ it('resolves an ENS name via mainnet client', async () => {
41
+ const client = mockClient()
42
+ const ens = new EnsNamespace(mockChainManager(client))
43
+ expect(await ens.getAddress(ENS_NAME)).toBe(REAL_ADDRESS)
44
+ expect(client.getEnsAddress).toHaveBeenCalledWith({ name: ENS_NAME })
45
+ })
46
+
47
+ it('caches resolved addresses on subsequent calls', async () => {
48
+ const client = mockClient()
49
+ const ens = new EnsNamespace(mockChainManager(client))
50
+ await ens.getAddress(ENS_NAME)
51
+ await ens.getAddress(ENS_NAME)
52
+ expect(client.getEnsAddress).toHaveBeenCalledTimes(1)
53
+ })
54
+ })
55
+
56
+ describe('getName', () => {
57
+ it('returns ENS name for a known address', async () => {
58
+ const client = mockClient()
59
+ const ens = new EnsNamespace(mockChainManager(client))
60
+ expect(await ens.getName(REAL_ADDRESS)).toBe(ENS_NAME)
61
+ expect(client.getEnsName).toHaveBeenCalledWith({ address: REAL_ADDRESS })
62
+ })
63
+
64
+ it('returns null when no primary name is set', async () => {
65
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) })
66
+ const ens = new EnsNamespace(mockChainManager(client))
67
+ expect(await ens.getName(REAL_ADDRESS)).toBeNull()
68
+ })
69
+
70
+ it('throws EnsRpcError on RPC failure', async () => {
71
+ const client = mockClient({
72
+ getEnsName: vi.fn().mockRejectedValue(new Error('rpc down')),
73
+ })
74
+ const ens = new EnsNamespace(mockChainManager(client))
75
+ await expect(ens.getName(REAL_ADDRESS)).rejects.toThrow(EnsRpcError)
76
+ })
77
+
78
+ it('caches results on subsequent calls', async () => {
79
+ const client = mockClient()
80
+ const ens = new EnsNamespace(mockChainManager(client))
81
+ await ens.getName(REAL_ADDRESS)
82
+ await ens.getName(REAL_ADDRESS)
83
+ expect(client.getEnsName).toHaveBeenCalledTimes(1)
84
+ })
85
+
86
+ it('caches null results', async () => {
87
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) })
88
+ const ens = new EnsNamespace(mockChainManager(client))
89
+ await ens.getName(REAL_ADDRESS)
90
+ await ens.getName(REAL_ADDRESS)
91
+ expect(client.getEnsName).toHaveBeenCalledTimes(1)
92
+ })
93
+ })
94
+
95
+ describe('getInfo', () => {
96
+ it('returns all-null EnsInfo when address has no primary name', async () => {
97
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) })
98
+ const ens = new EnsNamespace(mockChainManager(client))
99
+ const info = await ens.getInfo(REAL_ADDRESS)
100
+ expect(info).toEqual({
101
+ avatar: null,
102
+ display: null,
103
+ description: null,
104
+ url: null,
105
+ email: null,
106
+ keywords: null,
107
+ twitter: null,
108
+ github: null,
109
+ discord: null,
110
+ reddit: null,
111
+ })
112
+ })
113
+
114
+ it('returns all text record fields when name is given', async () => {
115
+ const client = mockClient({
116
+ getEnsText: vi.fn().mockResolvedValue('test-value'),
117
+ })
118
+ const ens = new EnsNamespace(mockChainManager(client))
119
+ const info = await ens.getInfo(ENS_NAME)
120
+ expect(info.avatar).toBe('test-value')
121
+ expect(info.twitter).toBe('test-value')
122
+ expect(info.github).toBe('test-value')
123
+ })
124
+
125
+ it('returns null fields when text records are not set', async () => {
126
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) })
127
+ const ens = new EnsNamespace(mockChainManager(client))
128
+ const info = await ens.getInfo(ENS_NAME)
129
+ expect(info.avatar).toBeNull()
130
+ expect(info.twitter).toBeNull()
131
+ })
132
+
133
+ it('fetches all 10 standard keys in parallel', async () => {
134
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) })
135
+ const ens = new EnsNamespace(mockChainManager(client))
136
+ await ens.getInfo(ENS_NAME)
137
+ expect(client.getEnsText).toHaveBeenCalledTimes(10)
138
+ })
139
+
140
+ it('throws EnsRpcError on text lookup RPC failure', async () => {
141
+ const client = mockClient({
142
+ getEnsText: vi.fn().mockRejectedValue(new Error('rpc down')),
143
+ })
144
+ const ens = new EnsNamespace(mockChainManager(client))
145
+ await expect(ens.getInfo(ENS_NAME)).rejects.toThrow(EnsRpcError)
146
+ })
147
+
148
+ it('throws EnsResolutionError when the resolved name fails normalization', async () => {
149
+ const client = mockClient({
150
+ getEnsName: vi.fn().mockResolvedValue('not!valid.eth'),
151
+ })
152
+ const ens = new EnsNamespace(mockChainManager(client))
153
+ await expect(ens.getInfo(REAL_ADDRESS)).rejects.toThrow(
154
+ EnsResolutionError,
155
+ )
156
+ })
157
+
158
+ it('skips reverse resolution when input is already an EnsName', async () => {
159
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) })
160
+ const ens = new EnsNamespace(mockChainManager(client))
161
+ await ens.getInfo(ENS_NAME)
162
+ expect(client.getEnsName).not.toHaveBeenCalled()
163
+ })
164
+
165
+ it('caches results on subsequent calls', async () => {
166
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) })
167
+ const ens = new EnsNamespace(mockChainManager(client))
168
+ await ens.getInfo(ENS_NAME)
169
+ await ens.getInfo(ENS_NAME)
170
+ expect(client.getEnsText).toHaveBeenCalledTimes(10)
171
+ })
172
+ })
173
+ })
@@ -0,0 +1,105 @@
1
+ import type { Address, PublicClient } from 'viem'
2
+ import { zeroAddress } from 'viem'
3
+ import { describe, expect, it, vi } from 'vitest'
4
+
5
+ import { resolveAddress } from '@/services/nameservices/ens/utils.js'
6
+
7
+ const REAL_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' as Address
8
+ const ZERO_ADDRESS = zeroAddress
9
+
10
+ function mockClient(
11
+ returnValue: Address | null,
12
+ rejects = false,
13
+ ): PublicClient {
14
+ const getEnsAddress = rejects
15
+ ? vi.fn().mockRejectedValue(new Error('network error'))
16
+ : vi.fn().mockResolvedValue(returnValue)
17
+ return { getEnsAddress } as unknown as PublicClient
18
+ }
19
+
20
+ describe('resolveAddress', () => {
21
+ describe('hex address input', () => {
22
+ it('returns a valid hex address as-is', async () => {
23
+ expect(await resolveAddress(REAL_ADDRESS)).toBe(REAL_ADDRESS)
24
+ })
25
+
26
+ it('does not require a mainnet client for hex addresses', async () => {
27
+ await expect(resolveAddress(REAL_ADDRESS)).resolves.toBe(REAL_ADDRESS)
28
+ })
29
+ })
30
+
31
+ describe('ENS name input', () => {
32
+ it('resolves a valid ENS name', async () => {
33
+ const client = mockClient(REAL_ADDRESS)
34
+ const result = await resolveAddress('vitalik.eth', client)
35
+ expect(result).toBe(REAL_ADDRESS)
36
+ expect(client.getEnsAddress).toHaveBeenCalledWith({ name: 'vitalik.eth' })
37
+ })
38
+
39
+ it('normalises the ENS name before resolving', async () => {
40
+ const client = mockClient(REAL_ADDRESS)
41
+ await resolveAddress('Vitalik.ETH', client)
42
+ expect(client.getEnsAddress).toHaveBeenCalledWith({ name: 'vitalik.eth' })
43
+ })
44
+
45
+ it('throws EnsNotConfiguredError when no mainnet client is provided', async () => {
46
+ const { EnsNotConfiguredError } =
47
+ await import('@/services/nameservices/ens/errors.js')
48
+ await expect(resolveAddress('vitalik.eth')).rejects.toThrow(
49
+ EnsNotConfiguredError,
50
+ )
51
+ })
52
+
53
+ it('includes chain ID 1 in the error when no mainnet client provided', async () => {
54
+ await expect(resolveAddress('vitalik.eth')).rejects.toThrow('1')
55
+ })
56
+
57
+ it('throws when ENS name cannot be resolved (returns null)', async () => {
58
+ const client = mockClient(null)
59
+ await expect(resolveAddress('unresolvable.eth', client)).rejects.toThrow(
60
+ '"unresolvable.eth" could not be resolved',
61
+ )
62
+ })
63
+
64
+ it('throws when ENS name resolves to zero address', async () => {
65
+ const client = mockClient(ZERO_ADDRESS)
66
+ await expect(resolveAddress('zero.eth', client)).rejects.toThrow(
67
+ 'zero address',
68
+ )
69
+ })
70
+
71
+ it('throws with RPC error label on network failure', async () => {
72
+ const client = mockClient(null, true)
73
+ await expect(resolveAddress('vitalik.eth', client)).rejects.toThrow(
74
+ 'RPC error',
75
+ )
76
+ })
77
+
78
+ it('preserves the original cause on RPC failure', async () => {
79
+ const client = mockClient(null, true)
80
+ let caught: Error | undefined
81
+ try {
82
+ await resolveAddress('vitalik.eth', client)
83
+ } catch (e) {
84
+ caught = e as Error
85
+ }
86
+ expect(caught?.cause).toBeInstanceOf(Error)
87
+ expect((caught?.cause as Error).message).toBe('network error')
88
+ })
89
+ })
90
+
91
+ describe('invalid input', () => {
92
+ it('throws for ENS-shaped strings that fail normalisation', async () => {
93
+ // Has a dot so satisfies EnsName, but contains invalid ENS characters
94
+ await expect(
95
+ resolveAddress('not!valid.eth', {} as PublicClient),
96
+ ).rejects.toThrow('Invalid address or ENS name')
97
+ })
98
+
99
+ it('includes the invalid input in the error message', async () => {
100
+ await expect(
101
+ resolveAddress('!!bad!!.eth', {} as PublicClient),
102
+ ).rejects.toThrow('"!!bad!!.eth"')
103
+ })
104
+ })
105
+ })
@@ -0,0 +1,45 @@
1
+ import { mainnet } from 'viem/chains'
2
+
3
+ /**
4
+ * Thrown when an ENS operation is attempted but the required chain is not
5
+ * included in the Actions chain configuration.
6
+ */
7
+ export class EnsNotConfiguredError extends Error {
8
+ chainId: number
9
+
10
+ constructor(chainId = mainnet.id) {
11
+ super(
12
+ `ENS operations require Ethereum mainnet. ` +
13
+ `Add chain ID ${chainId} to your chain configuration.`,
14
+ )
15
+ this.name = 'EnsNotConfiguredError'
16
+ this.chainId = chainId
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Thrown when an ENS name cannot be resolved to an address — e.g. the name
22
+ * is unregistered, resolves to the zero address, or fails normalization.
23
+ */
24
+ export class EnsResolutionError extends Error {
25
+ input: string
26
+
27
+ constructor(message: string, input: string, options?: ErrorOptions) {
28
+ super(message, options)
29
+ this.name = 'EnsResolutionError'
30
+ this.input = input
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Thrown when an ENS RPC call fails due to a network or provider error.
36
+ */
37
+ export class EnsRpcError extends Error {
38
+ input: string
39
+
40
+ constructor(message: string, input: string, options?: ErrorOptions) {
41
+ super(message, options)
42
+ this.name = 'EnsRpcError'
43
+ this.input = input
44
+ }
45
+ }
@@ -0,0 +1,17 @@
1
+ export { EnsNamespace } from './EnsNamespace.js'
2
+ export {
3
+ EnsNotConfiguredError,
4
+ EnsResolutionError,
5
+ EnsRpcError,
6
+ } from './errors.js'
7
+ export {
8
+ type EnsInfo,
9
+ type EnsName,
10
+ isEnsName,
11
+ type NameServiceProvider,
12
+ } from './types.js'
13
+ export {
14
+ passthroughResolver,
15
+ type RecipientResolver,
16
+ resolveAddress,
17
+ } from './utils.js'
@@ -0,0 +1,76 @@
1
+ import type { Address } from 'viem'
2
+
3
+ import type { SwapExecuteParams, SwapQuoteParams } from '@/types/swap/base.js'
4
+
5
+ /**
6
+ * A dot-separated ENS name (e.g. `vitalik.eth`, `sub.vitalik.eth`, `example.com`).
7
+ *
8
+ * ENS is not limited to `.eth` — it supports any DNSSEC-enabled DNS TLD as well
9
+ * as ENS-native TLDs (`.eth`, `.test`). Subdomains of arbitrary depth are valid.
10
+ *
11
+ * This type is a structural constraint (at least one dot) mirroring viem's Address type.
12
+ * True validity is determined at runtime by `normalize()` (ENSIP-15): a name is valid
13
+ * if and only if it does not throw during normalization.
14
+ */
15
+ export type EnsName = `${string}.${string}`
16
+
17
+ /**
18
+ * Type guard for EnsName. Mirrors the pattern of viem's isAddress.
19
+ * Rejects obviously invalid forms (leading/trailing dots, consecutive dots)
20
+ * but does not run full ENSIP-15 normalization — use normalize() for that.
21
+ * @param value - String to check
22
+ * @returns True if the value satisfies the EnsName structural constraint
23
+ */
24
+ export function isEnsName(value: string): value is EnsName {
25
+ return (
26
+ value.includes('.') &&
27
+ !value.startsWith('.') &&
28
+ !value.endsWith('.') &&
29
+ !value.includes('..')
30
+ )
31
+ }
32
+
33
+ /**
34
+ * Standard ENS profile text record fields as defined by ENSIP-5 and ENSIP-18.
35
+ * All fields are null when not set on the resolver.
36
+ */
37
+ export interface EnsInfo {
38
+ avatar: string | null
39
+ display: string | null
40
+ description: string | null
41
+ url: string | null
42
+ email: string | null
43
+ keywords: string | null
44
+ /** com.twitter */
45
+ twitter: string | null
46
+ /** com.github */
47
+ github: string | null
48
+ /** com.discord */
49
+ discord: string | null
50
+ /** org.reddit */
51
+ reddit: string | null
52
+ }
53
+
54
+ /** SwapExecuteParams with recipient narrowed to Address after ENS resolution */
55
+ export type SwapExecuteParamsResolved = Omit<SwapExecuteParams, 'recipient'> & {
56
+ recipient?: Address
57
+ }
58
+
59
+ /** SwapQuoteParams with recipient narrowed to Address after ENS resolution */
60
+ export type SwapQuoteParamsResolved = Omit<SwapQuoteParams, 'recipient'> & {
61
+ recipient?: Address
62
+ }
63
+
64
+ /**
65
+ * Common interface for human-readable name service providers.
66
+ * Implemented by {@link EnsNamespace}; designed to support future providers
67
+ * such as Basename, Lens, Unstoppable Domains, etc.
68
+ */
69
+ export interface NameServiceProvider {
70
+ /** Resolve a name or address to a checksummed hex address. */
71
+ getAddress(input: Address | EnsName): Promise<Address>
72
+ /** Reverse-resolve an address to its primary name, or null if not set. */
73
+ getName(address: Address): Promise<EnsName | null>
74
+ /** Fetch all standard profile text record fields in a single batched call. */
75
+ getInfo(input: Address | EnsName): Promise<EnsInfo>
76
+ }