@eth-optimism/actions-sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/dist/__mocks__/MockAssets.d.ts +17 -2
  2. package/dist/__mocks__/MockAssets.d.ts.map +1 -1
  3. package/dist/__mocks__/MockAssets.js +49 -4
  4. package/dist/__mocks__/MockAssets.js.map +1 -1
  5. package/dist/__tests__/actions.test.js +1 -5
  6. package/dist/__tests__/actions.test.js.map +1 -1
  7. package/dist/actions.d.ts +23 -9
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +68 -36
  10. package/dist/actions.js.map +1 -1
  11. package/dist/constants/assets.d.ts +217 -2
  12. package/dist/constants/assets.d.ts.map +1 -1
  13. package/dist/constants/assets.js +744 -6
  14. package/dist/constants/assets.js.map +1 -1
  15. package/dist/constants/contracts.d.ts +4 -0
  16. package/dist/constants/contracts.d.ts.map +1 -0
  17. package/dist/constants/contracts.js +3 -0
  18. package/dist/constants/contracts.js.map +1 -0
  19. package/dist/constants/providers.d.ts +6 -0
  20. package/dist/constants/providers.d.ts.map +1 -0
  21. package/dist/constants/providers.js +6 -0
  22. package/dist/constants/providers.js.map +1 -0
  23. package/dist/constants/supportedChains.d.ts +2 -2
  24. package/dist/constants/supportedChains.d.ts.map +1 -1
  25. package/dist/constants/supportedChains.js +12 -2
  26. package/dist/constants/supportedChains.js.map +1 -1
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/lend/__mocks__/MockLendProvider.d.ts +1 -1
  32. package/dist/lend/__mocks__/MockLendProvider.d.ts.map +1 -1
  33. package/dist/lend/__mocks__/MockLendProvider.js +7 -2
  34. package/dist/lend/__mocks__/MockLendProvider.js.map +1 -1
  35. package/dist/lend/core/LendProvider.d.ts +12 -14
  36. package/dist/lend/core/LendProvider.d.ts.map +1 -1
  37. package/dist/lend/core/LendProvider.js +16 -31
  38. package/dist/lend/core/LendProvider.js.map +1 -1
  39. package/dist/lend/core/__tests__/LendProvider.test.js +2 -4
  40. package/dist/lend/core/__tests__/LendProvider.test.js.map +1 -1
  41. package/dist/lend/namespaces/BaseLendNamespace.d.ts +2 -6
  42. package/dist/lend/namespaces/BaseLendNamespace.d.ts.map +1 -1
  43. package/dist/lend/namespaces/BaseLendNamespace.js.map +1 -1
  44. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js +7 -4
  45. package/dist/lend/namespaces/__tests__/BaseLendNamespace.spec.js.map +1 -1
  46. package/dist/lend/providers/aave/AaveLendProvider.d.ts +1 -6
  47. package/dist/lend/providers/aave/AaveLendProvider.d.ts.map +1 -1
  48. package/dist/lend/providers/aave/AaveLendProvider.js +3 -6
  49. package/dist/lend/providers/aave/AaveLendProvider.js.map +1 -1
  50. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js +14 -6
  51. package/dist/lend/providers/aave/__tests__/AaveLendProvider.test.js.map +1 -1
  52. package/dist/lend/providers/aave/addresses.d.ts +13 -39
  53. package/dist/lend/providers/aave/addresses.d.ts.map +1 -1
  54. package/dist/lend/providers/aave/addresses.js +65 -60
  55. package/dist/lend/providers/aave/addresses.js.map +1 -1
  56. package/dist/lend/providers/aave/sdk.d.ts +2 -2
  57. package/dist/lend/providers/aave/sdk.d.ts.map +1 -1
  58. package/dist/lend/providers/aave/sdk.js +6 -28
  59. package/dist/lend/providers/aave/sdk.js.map +1 -1
  60. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts +1 -6
  61. package/dist/lend/providers/morpho/MorphoLendProvider.d.ts.map +1 -1
  62. package/dist/lend/providers/morpho/MorphoLendProvider.js +4 -13
  63. package/dist/lend/providers/morpho/MorphoLendProvider.js.map +1 -1
  64. package/dist/lend/providers/morpho/__tests__/api.test.js +52 -43
  65. package/dist/lend/providers/morpho/__tests__/api.test.js.map +1 -1
  66. package/dist/lend/providers/morpho/__tests__/sdk.test.js +41 -41
  67. package/dist/lend/providers/morpho/__tests__/sdk.test.js.map +1 -1
  68. package/dist/lend/providers/morpho/api.d.ts +3 -3
  69. package/dist/lend/providers/morpho/api.d.ts.map +1 -1
  70. package/dist/lend/providers/morpho/api.js +2 -2
  71. package/dist/lend/providers/morpho/api.js.map +1 -1
  72. package/dist/lend/providers/morpho/contracts.d.ts +11 -10
  73. package/dist/lend/providers/morpho/contracts.d.ts.map +1 -1
  74. package/dist/lend/providers/morpho/contracts.js +43 -10
  75. package/dist/lend/providers/morpho/contracts.js.map +1 -1
  76. package/dist/lend/providers/morpho/sdk.d.ts +7 -2
  77. package/dist/lend/providers/morpho/sdk.d.ts.map +1 -1
  78. package/dist/lend/providers/morpho/sdk.js +67 -54
  79. package/dist/lend/providers/morpho/sdk.js.map +1 -1
  80. package/dist/nodeActionsFactory.d.ts +1 -1
  81. package/dist/reactActionsFactory.d.ts +1 -1
  82. package/dist/services/ChainManager.d.ts +8 -8
  83. package/dist/services/ChainManager.d.ts.map +1 -1
  84. package/dist/services/ChainManager.js.map +1 -1
  85. package/dist/services/__mocks__/MockChainManager.d.ts +4 -4
  86. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  87. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  88. package/dist/services/tokenBalance.d.ts +1 -1
  89. package/dist/services/tokenBalance.d.ts.map +1 -1
  90. package/dist/services/tokenBalance.js +31 -30
  91. package/dist/services/tokenBalance.js.map +1 -1
  92. package/dist/services/tokenBalance.spec.js +20 -24
  93. package/dist/services/tokenBalance.spec.js.map +1 -1
  94. package/dist/swap/__mocks__/MockSwapProvider.d.ts +50 -0
  95. package/dist/swap/__mocks__/MockSwapProvider.d.ts.map +1 -0
  96. package/dist/swap/__mocks__/MockSwapProvider.js +161 -0
  97. package/dist/swap/__mocks__/MockSwapProvider.js.map +1 -0
  98. package/dist/swap/core/SwapProvider.d.ts +145 -0
  99. package/dist/swap/core/SwapProvider.d.ts.map +1 -0
  100. package/dist/swap/core/SwapProvider.js +359 -0
  101. package/dist/swap/core/SwapProvider.js.map +1 -0
  102. package/dist/swap/core/__tests__/SwapProvider.test.d.ts +2 -0
  103. package/dist/swap/core/__tests__/SwapProvider.test.d.ts.map +1 -0
  104. package/dist/swap/core/__tests__/SwapProvider.test.js +435 -0
  105. package/dist/swap/core/__tests__/SwapProvider.test.js.map +1 -0
  106. package/dist/swap/core/markets.d.ts +47 -0
  107. package/dist/swap/core/markets.d.ts.map +1 -0
  108. package/dist/swap/core/markets.js +65 -0
  109. package/dist/swap/core/markets.js.map +1 -0
  110. package/dist/swap/index.d.ts +9 -0
  111. package/dist/swap/index.d.ts.map +1 -0
  112. package/dist/swap/index.js +9 -0
  113. package/dist/swap/index.js.map +1 -0
  114. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts +8 -0
  115. package/dist/swap/namespaces/ActionsSwapNamespace.d.ts.map +1 -0
  116. package/dist/swap/namespaces/ActionsSwapNamespace.js +8 -0
  117. package/dist/swap/namespaces/ActionsSwapNamespace.js.map +1 -0
  118. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +73 -0
  119. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -0
  120. package/dist/swap/namespaces/BaseSwapNamespace.js +181 -0
  121. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -0
  122. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +34 -0
  123. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -0
  124. package/dist/swap/namespaces/WalletSwapNamespace.js +84 -0
  125. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -0
  126. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts +2 -0
  127. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.d.ts.map +1 -0
  128. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +245 -0
  129. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -0
  130. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts +2 -0
  131. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.d.ts.map +1 -0
  132. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js +209 -0
  133. package/dist/swap/namespaces/__tests__/WalletSwapNamespace.spec.js.map +1 -0
  134. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +35 -0
  135. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -0
  136. package/dist/swap/providers/uniswap/UniswapSwapProvider.js +148 -0
  137. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -0
  138. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts +2 -0
  139. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.d.ts.map +1 -0
  140. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js +258 -0
  141. package/dist/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.js.map +1 -0
  142. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts +2 -0
  143. package/dist/swap/providers/uniswap/__tests__/sdk.test.d.ts.map +1 -0
  144. package/dist/swap/providers/uniswap/__tests__/sdk.test.js +312 -0
  145. package/dist/swap/providers/uniswap/__tests__/sdk.test.js.map +1 -0
  146. package/dist/swap/providers/uniswap/abis.d.ts +227 -0
  147. package/dist/swap/providers/uniswap/abis.d.ts.map +1 -0
  148. package/dist/swap/providers/uniswap/abis.js +138 -0
  149. package/dist/swap/providers/uniswap/abis.js.map +1 -0
  150. package/dist/swap/providers/uniswap/addresses.d.ts +26 -0
  151. package/dist/swap/providers/uniswap/addresses.d.ts.map +1 -0
  152. package/dist/swap/providers/uniswap/addresses.js +81 -0
  153. package/dist/swap/providers/uniswap/addresses.js.map +1 -0
  154. package/dist/swap/providers/uniswap/encoding.d.ts +77 -0
  155. package/dist/swap/providers/uniswap/encoding.d.ts.map +1 -0
  156. package/dist/swap/providers/uniswap/encoding.js +233 -0
  157. package/dist/swap/providers/uniswap/encoding.js.map +1 -0
  158. package/dist/swap/providers/uniswap/markets.d.ts +19 -0
  159. package/dist/swap/providers/uniswap/markets.d.ts.map +1 -0
  160. package/dist/swap/providers/uniswap/markets.js +48 -0
  161. package/dist/swap/providers/uniswap/markets.js.map +1 -0
  162. package/dist/swap/providers/uniswap/types.d.ts +21 -0
  163. package/dist/swap/providers/uniswap/types.d.ts.map +1 -0
  164. package/dist/swap/providers/uniswap/types.js +2 -0
  165. package/dist/swap/providers/uniswap/types.js.map +1 -0
  166. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +49 -0
  167. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -0
  168. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js +140 -0
  169. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -0
  170. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts +2 -0
  171. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.d.ts.map +1 -0
  172. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js +255 -0
  173. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.js.map +1 -0
  174. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts +2 -0
  175. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.d.ts.map +1 -0
  176. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js +166 -0
  177. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.js.map +1 -0
  178. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts +2 -0
  179. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.d.ts.map +1 -0
  180. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +419 -0
  181. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -0
  182. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts +2 -0
  183. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.d.ts.map +1 -0
  184. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js +51 -0
  185. package/dist/swap/providers/velodrome/__tests__/encoding.cl.test.js.map +1 -0
  186. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts +14 -0
  187. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.d.ts.map +1 -0
  188. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js +13 -0
  189. package/dist/swap/providers/velodrome/__tests__/encoding.helpers.js.map +1 -0
  190. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts +2 -0
  191. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.d.ts.map +1 -0
  192. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js +173 -0
  193. package/dist/swap/providers/velodrome/__tests__/encoding.v2.test.js.map +1 -0
  194. package/dist/swap/providers/velodrome/abis.d.ts +396 -0
  195. package/dist/swap/providers/velodrome/abis.d.ts.map +1 -0
  196. package/dist/swap/providers/velodrome/abis.js +257 -0
  197. package/dist/swap/providers/velodrome/abis.js.map +1 -0
  198. package/dist/swap/providers/velodrome/addresses.d.ts +39 -0
  199. package/dist/swap/providers/velodrome/addresses.d.ts.map +1 -0
  200. package/dist/swap/providers/velodrome/addresses.js +57 -0
  201. package/dist/swap/providers/velodrome/addresses.js.map +1 -0
  202. package/dist/swap/providers/velodrome/config.d.ts +22 -0
  203. package/dist/swap/providers/velodrome/config.d.ts.map +1 -0
  204. package/dist/swap/providers/velodrome/config.js +29 -0
  205. package/dist/swap/providers/velodrome/config.js.map +1 -0
  206. package/dist/swap/providers/velodrome/encoding/helpers.d.ts +37 -0
  207. package/dist/swap/providers/velodrome/encoding/helpers.d.ts.map +1 -0
  208. package/dist/swap/providers/velodrome/encoding/helpers.js +60 -0
  209. package/dist/swap/providers/velodrome/encoding/helpers.js.map +1 -0
  210. package/dist/swap/providers/velodrome/encoding/index.d.ts +8 -0
  211. package/dist/swap/providers/velodrome/encoding/index.d.ts.map +1 -0
  212. package/dist/swap/providers/velodrome/encoding/index.js +5 -0
  213. package/dist/swap/providers/velodrome/encoding/index.js.map +1 -0
  214. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts +39 -0
  215. package/dist/swap/providers/velodrome/encoding/poolRouter.d.ts.map +1 -0
  216. package/dist/swap/providers/velodrome/encoding/poolRouter.js +83 -0
  217. package/dist/swap/providers/velodrome/encoding/poolRouter.js.map +1 -0
  218. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts +15 -0
  219. package/dist/swap/providers/velodrome/encoding/routers/approval.d.ts.map +1 -0
  220. package/dist/swap/providers/velodrome/encoding/routers/approval.js +33 -0
  221. package/dist/swap/providers/velodrome/encoding/routers/approval.js.map +1 -0
  222. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts +40 -0
  223. package/dist/swap/providers/velodrome/encoding/routers/cl.d.ts.map +1 -0
  224. package/dist/swap/providers/velodrome/encoding/routers/cl.js +80 -0
  225. package/dist/swap/providers/velodrome/encoding/routers/cl.js.map +1 -0
  226. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts +42 -0
  227. package/dist/swap/providers/velodrome/encoding/routers/v2.d.ts.map +1 -0
  228. package/dist/swap/providers/velodrome/encoding/routers/v2.js +166 -0
  229. package/dist/swap/providers/velodrome/encoding/routers/v2.js.map +1 -0
  230. package/dist/swap/providers/velodrome/markets.d.ts +21 -0
  231. package/dist/swap/providers/velodrome/markets.d.ts.map +1 -0
  232. package/dist/swap/providers/velodrome/markets.js +69 -0
  233. package/dist/swap/providers/velodrome/markets.js.map +1 -0
  234. package/dist/swap/providers/velodrome/types.d.ts +31 -0
  235. package/dist/swap/providers/velodrome/types.d.ts.map +1 -0
  236. package/dist/swap/providers/velodrome/types.js +2 -0
  237. package/dist/swap/providers/velodrome/types.js.map +1 -0
  238. package/dist/types/actions.d.ts +60 -11
  239. package/dist/types/actions.d.ts.map +1 -1
  240. package/dist/types/asset.d.ts +7 -9
  241. package/dist/types/asset.d.ts.map +1 -1
  242. package/dist/types/chain.d.ts +2 -2
  243. package/dist/types/chain.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +2 -0
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/lend/base.d.ts +9 -19
  249. package/dist/types/lend/base.d.ts.map +1 -1
  250. package/dist/types/lend/base.js.map +1 -1
  251. package/dist/types/lend/contracts.d.ts +2 -1
  252. package/dist/types/lend/contracts.d.ts.map +1 -1
  253. package/dist/types/providers.d.ts +21 -0
  254. package/dist/types/providers.d.ts.map +1 -0
  255. package/dist/types/providers.js +2 -0
  256. package/dist/types/providers.js.map +1 -0
  257. package/dist/types/swap/base.d.ts +338 -0
  258. package/dist/types/swap/base.d.ts.map +1 -0
  259. package/dist/types/swap/base.js +4 -0
  260. package/dist/types/swap/base.js.map +1 -0
  261. package/dist/types/swap/index.d.ts +2 -0
  262. package/dist/types/swap/index.d.ts.map +1 -0
  263. package/dist/types/swap/index.js +2 -0
  264. package/dist/types/swap/index.js.map +1 -0
  265. package/dist/types/transaction.d.ts +14 -0
  266. package/dist/types/transaction.d.ts.map +1 -0
  267. package/dist/types/transaction.js +2 -0
  268. package/dist/types/transaction.js.map +1 -0
  269. package/dist/utils/approve.d.ts +82 -0
  270. package/dist/utils/approve.d.ts.map +1 -0
  271. package/dist/utils/approve.js +134 -0
  272. package/dist/utils/approve.js.map +1 -0
  273. package/dist/utils/approve.test.d.ts +2 -0
  274. package/dist/utils/approve.test.d.ts.map +1 -0
  275. package/dist/utils/approve.test.js +203 -0
  276. package/dist/utils/approve.test.js.map +1 -0
  277. package/dist/utils/assets.d.ts +10 -5
  278. package/dist/utils/assets.d.ts.map +1 -1
  279. package/dist/utils/assets.js +14 -11
  280. package/dist/utils/assets.js.map +1 -1
  281. package/dist/utils/assets.test.js +13 -1
  282. package/dist/utils/assets.test.js.map +1 -1
  283. package/dist/utils/validateAddresses.d.ts +32 -0
  284. package/dist/utils/validateAddresses.d.ts.map +1 -0
  285. package/dist/utils/validateAddresses.js +103 -0
  286. package/dist/utils/validateAddresses.js.map +1 -0
  287. package/dist/utils/validateAddresses.test.d.ts +2 -0
  288. package/dist/utils/validateAddresses.test.d.ts.map +1 -0
  289. package/dist/utils/validateAddresses.test.js +314 -0
  290. package/dist/utils/validateAddresses.test.js.map +1 -0
  291. package/dist/utils/validation.d.ts +12 -0
  292. package/dist/utils/validation.d.ts.map +1 -0
  293. package/dist/utils/validation.js +44 -0
  294. package/dist/utils/validation.js.map +1 -0
  295. package/dist/wallet/core/namespace/WalletNamespace.d.ts +21 -9
  296. package/dist/wallet/core/namespace/WalletNamespace.d.ts.map +1 -1
  297. package/dist/wallet/core/namespace/WalletNamespace.js +44 -15
  298. package/dist/wallet/core/namespace/WalletNamespace.js.map +1 -1
  299. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js +4 -4
  300. package/dist/wallet/core/namespace/__tests__/WalletNamespace.spec.js.map +1 -1
  301. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts +4 -10
  302. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.d.ts.map +1 -1
  303. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js +2 -1
  304. package/dist/wallet/core/providers/hosted/abstract/HostedWalletProvider.js.map +1 -1
  305. package/dist/wallet/core/providers/hosted/types/index.d.ts +6 -7
  306. package/dist/wallet/core/providers/hosted/types/index.d.ts.map +1 -1
  307. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts +5 -6
  308. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.d.ts.map +1 -1
  309. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js +5 -1
  310. package/dist/wallet/core/providers/smart/default/DefaultSmartWalletProvider.js.map +1 -1
  311. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js +2 -2
  312. package/dist/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.js.map +1 -1
  313. package/dist/wallet/core/wallets/abstract/Wallet.d.ts +12 -12
  314. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  315. package/dist/wallet/core/wallets/abstract/Wallet.js +9 -4
  316. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  317. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts +10 -1
  318. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.d.ts.map +1 -1
  319. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js +2 -2
  320. package/dist/wallet/core/wallets/abstract/__mocks__/TestWallet.js.map +1 -1
  321. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js +12 -4
  322. package/dist/wallet/core/wallets/abstract/__tests__/Wallet.spec.js.map +1 -1
  323. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts +5 -7
  324. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.d.ts.map +1 -1
  325. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js +6 -5
  326. package/dist/wallet/core/wallets/smart/default/DefaultSmartWallet.js.map +1 -1
  327. package/dist/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.js.map +1 -1
  328. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +4 -6
  329. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  330. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js +3 -1
  331. package/dist/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  332. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts +2 -4
  333. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.d.ts.map +1 -1
  334. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js +8 -9
  335. package/dist/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.js.map +1 -1
  336. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js +4 -4
  337. package/dist/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.js.map +1 -1
  338. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +3 -6
  339. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  340. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +4 -2
  341. package/dist/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  342. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts +4 -6
  343. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  344. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js +4 -3
  345. package/dist/wallet/node/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  346. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts +3 -6
  347. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  348. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  349. package/dist/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  350. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts +6 -6
  351. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.d.ts.map +1 -1
  352. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js +7 -2
  353. package/dist/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.js.map +1 -1
  354. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js +1 -0
  355. package/dist/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.js.map +1 -1
  356. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts +5 -6
  357. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.d.ts.map +1 -1
  358. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js +6 -2
  359. package/dist/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.js.map +1 -1
  360. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js +1 -0
  361. package/dist/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.js.map +1 -1
  362. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts +5 -8
  363. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.d.ts.map +1 -1
  364. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js +6 -4
  365. package/dist/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.js.map +1 -1
  366. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts +2 -4
  367. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.d.ts.map +1 -1
  368. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js +11 -13
  369. package/dist/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.js.map +1 -1
  370. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js +6 -6
  371. package/dist/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.js.map +1 -1
  372. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts +7 -6
  373. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.d.ts.map +1 -1
  374. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js +5 -3
  375. package/dist/wallet/react/wallets/hosted/dynamic/DynamicWallet.js.map +1 -1
  376. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts +2 -6
  377. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.d.ts.map +1 -1
  378. package/dist/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.js.map +1 -1
  379. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts +5 -6
  380. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.d.ts.map +1 -1
  381. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js +3 -3
  382. package/dist/wallet/react/wallets/hosted/privy/PrivyWallet.js.map +1 -1
  383. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts +5 -6
  384. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.d.ts.map +1 -1
  385. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js +2 -2
  386. package/dist/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.js.map +1 -1
  387. package/package.json +4 -3
  388. package/src/__mocks__/MockAssets.ts +54 -4
  389. package/src/__tests__/actions.test.ts +1 -5
  390. package/src/actions.ts +106 -71
  391. package/src/constants/assets.ts +792 -5
  392. package/src/constants/contracts.ts +5 -0
  393. package/src/constants/providers.ts +5 -0
  394. package/src/constants/supportedChains.ts +22 -2
  395. package/src/index.ts +76 -6
  396. package/src/lend/__mocks__/MockLendProvider.ts +8 -3
  397. package/src/lend/core/LendProvider.ts +28 -41
  398. package/src/lend/core/__tests__/LendProvider.test.ts +2 -5
  399. package/src/lend/namespaces/BaseLendNamespace.ts +2 -6
  400. package/src/lend/namespaces/__tests__/BaseLendNamespace.spec.ts +12 -5
  401. package/src/lend/providers/aave/AaveLendProvider.ts +3 -7
  402. package/src/lend/providers/aave/__tests__/AaveLendProvider.test.ts +16 -7
  403. package/src/lend/providers/aave/addresses.ts +82 -64
  404. package/src/lend/providers/aave/sdk.ts +11 -36
  405. package/src/lend/providers/morpho/MorphoLendProvider.ts +4 -16
  406. package/src/lend/providers/morpho/__tests__/api.test.ts +65 -44
  407. package/src/lend/providers/morpho/__tests__/sdk.test.ts +43 -42
  408. package/src/lend/providers/morpho/api.ts +7 -4
  409. package/src/lend/providers/morpho/contracts.ts +62 -13
  410. package/src/lend/providers/morpho/sdk.ts +85 -54
  411. package/src/services/ChainManager.ts +12 -21
  412. package/src/services/__mocks__/MockChainManager.ts +4 -7
  413. package/src/services/tokenBalance.spec.ts +20 -24
  414. package/src/services/tokenBalance.ts +39 -33
  415. package/src/swap/__mocks__/MockSwapProvider.ts +251 -0
  416. package/src/swap/core/SwapProvider.ts +577 -0
  417. package/src/swap/core/__tests__/SwapProvider.test.ts +620 -0
  418. package/src/swap/core/markets.ts +104 -0
  419. package/src/swap/index.ts +19 -0
  420. package/src/swap/namespaces/ActionsSwapNamespace.ts +7 -0
  421. package/src/swap/namespaces/BaseSwapNamespace.ts +258 -0
  422. package/src/swap/namespaces/WalletSwapNamespace.ts +121 -0
  423. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +365 -0
  424. package/src/swap/namespaces/__tests__/WalletSwapNamespace.spec.ts +257 -0
  425. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +217 -0
  426. package/src/swap/providers/uniswap/__tests__/UniswapSwapProvider.test.ts +299 -0
  427. package/src/swap/providers/uniswap/__tests__/sdk.test.ts +369 -0
  428. package/src/swap/providers/uniswap/abis.ts +144 -0
  429. package/src/swap/providers/uniswap/addresses.ts +110 -0
  430. package/src/swap/providers/uniswap/encoding.ts +406 -0
  431. package/src/swap/providers/uniswap/markets.ts +84 -0
  432. package/src/swap/providers/uniswap/types.ts +25 -0
  433. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +224 -0
  434. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.network.test.ts +341 -0
  435. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.routing.test.ts +202 -0
  436. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +506 -0
  437. package/src/swap/providers/velodrome/__tests__/encoding.cl.test.ts +69 -0
  438. package/src/swap/providers/velodrome/__tests__/encoding.helpers.ts +20 -0
  439. package/src/swap/providers/velodrome/__tests__/encoding.v2.test.ts +235 -0
  440. package/src/swap/providers/velodrome/abis.ts +264 -0
  441. package/src/swap/providers/velodrome/addresses.ts +107 -0
  442. package/src/swap/providers/velodrome/config.ts +46 -0
  443. package/src/swap/providers/velodrome/encoding/helpers.ts +82 -0
  444. package/src/swap/providers/velodrome/encoding/index.ts +7 -0
  445. package/src/swap/providers/velodrome/encoding/poolRouter.ts +124 -0
  446. package/src/swap/providers/velodrome/encoding/routers/approval.ts +45 -0
  447. package/src/swap/providers/velodrome/encoding/routers/cl.ts +156 -0
  448. package/src/swap/providers/velodrome/encoding/routers/v2.ts +267 -0
  449. package/src/swap/providers/velodrome/markets.ts +100 -0
  450. package/src/swap/providers/velodrome/types.ts +30 -0
  451. package/src/types/actions.ts +68 -12
  452. package/src/types/asset.ts +12 -9
  453. package/src/types/chain.ts +2 -2
  454. package/src/types/index.ts +2 -0
  455. package/src/types/lend/base.ts +10 -20
  456. package/src/types/lend/contracts.ts +5 -1
  457. package/src/types/providers.ts +22 -0
  458. package/src/types/swap/base.ts +372 -0
  459. package/src/types/swap/index.ts +1 -0
  460. package/src/types/transaction.ts +14 -0
  461. package/src/utils/approve.test.ts +258 -0
  462. package/src/utils/approve.ts +197 -0
  463. package/src/utils/assets.test.ts +16 -1
  464. package/src/utils/assets.ts +27 -10
  465. package/src/utils/validateAddresses.test.ts +439 -0
  466. package/src/utils/validateAddresses.ts +153 -0
  467. package/src/utils/validation.ts +76 -0
  468. package/src/wallet/core/namespace/WalletNamespace.ts +70 -16
  469. package/src/wallet/core/namespace/__tests__/WalletNamespace.spec.ts +8 -4
  470. package/src/wallet/core/providers/hosted/abstract/HostedWalletProvider.ts +6 -10
  471. package/src/wallet/core/providers/hosted/types/index.ts +9 -7
  472. package/src/wallet/core/providers/smart/default/DefaultSmartWalletProvider.ts +10 -10
  473. package/src/wallet/core/providers/smart/default/__tests__/DefaultSmartWalletProvider.spec.ts +2 -0
  474. package/src/wallet/core/wallets/abstract/Wallet.ts +23 -14
  475. package/src/wallet/core/wallets/abstract/__mocks__/TestWallet.ts +13 -1
  476. package/src/wallet/core/wallets/abstract/__tests__/Wallet.spec.ts +21 -5
  477. package/src/wallet/core/wallets/smart/default/DefaultSmartWallet.ts +11 -14
  478. package/src/wallet/core/wallets/smart/default/__tests__/DefaultSmartWallet.spec.ts +0 -1
  479. package/src/wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.ts +11 -7
  480. package/src/wallet/node/providers/hosted/registry/NodeHostedWalletProviderRegistry.ts +16 -8
  481. package/src/wallet/node/providers/hosted/registry/__tests__/NodeHostedWalletProviderRegistry.spec.ts +4 -4
  482. package/src/wallet/node/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +6 -7
  483. package/src/wallet/node/wallets/hosted/privy/PrivyWallet.ts +8 -11
  484. package/src/wallet/node/wallets/hosted/turnkey/TurnkeyWallet.ts +7 -11
  485. package/src/wallet/react/providers/hosted/dynamic/DynamicHostedWalletProvider.ts +11 -7
  486. package/src/wallet/react/providers/hosted/dynamic/__tests__/DynamicHostedWalletProvider.spec.ts +1 -0
  487. package/src/wallet/react/providers/hosted/privy/PrivyHostedWalletProvider.ts +10 -7
  488. package/src/wallet/react/providers/hosted/privy/__tests__/PrivyHostedWalletProvider.spec.ts +1 -0
  489. package/src/wallet/react/providers/hosted/turnkey/TurnkeyHostedWalletProvider.ts +10 -9
  490. package/src/wallet/react/providers/registry/ReactHostedWalletProviderRegistry.ts +38 -13
  491. package/src/wallet/react/providers/registry/__tests__/ReactHostedWalletProviderRegistry.spec.ts +6 -6
  492. package/src/wallet/react/wallets/hosted/dynamic/DynamicWallet.ts +13 -11
  493. package/src/wallet/react/wallets/hosted/dynamic/__mocks__/DynamicWalletMock.ts +2 -6
  494. package/src/wallet/react/wallets/hosted/privy/PrivyWallet.ts +11 -11
  495. package/src/wallet/react/wallets/hosted/turnkey/TurnkeyWallet.ts +11 -11
  496. package/dist/supported/tokens.d.ts +0 -25
  497. package/dist/supported/tokens.d.ts.map +0 -1
  498. package/dist/supported/tokens.js +0 -37
  499. package/dist/supported/tokens.js.map +0 -1
  500. package/src/supported/tokens.ts +0 -52
@@ -0,0 +1,314 @@
1
+ import { unichain } from 'viem/chains';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { createMockPrivyClient, getMockAuthorizationContext, } from '../__mocks__/MockPrivyClient.js';
4
+ import { Actions } from '../actions.js';
5
+ import { NATIVELY_SUPPORTED_ASSETS, OP_DEMO, USDC_DEMO, } from '../constants/assets.js';
6
+ import { POOL_ADDRESSES_MAINNET, POOL_ADDRESSES_TESTNET, WETH_GATEWAY_ADDRESSES_MAINNET, WETH_GATEWAY_ADDRESSES_TESTNET, } from '../lend/providers/aave/addresses.js';
7
+ import { MORPHO_CONTRACTS } from '../lend/providers/morpho/contracts.js';
8
+ import { UNISWAP_ADDRESSES } from '../swap/providers/uniswap/addresses.js';
9
+ import { VELODROME_CHAINS } from '../swap/providers/velodrome/addresses.js';
10
+ import { validateAddressMap, validateAssetAddresses, validateConfigAddresses, } from './validateAddresses.js';
11
+ import { HostedWalletProviderRegistry } from '../wallet/core/providers/hosted/registry/HostedWalletProviderRegistry.js';
12
+ import { PrivyHostedWalletProvider } from '../wallet/node/providers/hosted/privy/PrivyHostedWalletProvider.js';
13
+ const VALID_ADDRESS = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
14
+ const VALID_ADDRESS_2 = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
15
+ const INVALID_ADDRESS = '0xabc';
16
+ const INVALID_ADDRESS_2 = '0xdeadbeef';
17
+ describe('validateAddressMap', () => {
18
+ it('throws when any address in the map is malformed, listing the bad address, key name, and chain ID', () => {
19
+ const map = {
20
+ 10: { poolAddress: INVALID_ADDRESS },
21
+ };
22
+ expect(() => validateAddressMap(map)).toThrow(/poolAddress\[10\]/);
23
+ expect(() => validateAddressMap(map)).toThrow(INVALID_ADDRESS);
24
+ });
25
+ it('collects multiple failures and throws once with all of them listed', () => {
26
+ const map = {
27
+ 10: { poolAddress: INVALID_ADDRESS },
28
+ 8453: { rewardAddress: INVALID_ADDRESS_2 },
29
+ };
30
+ let err;
31
+ try {
32
+ validateAddressMap(map);
33
+ }
34
+ catch (e) {
35
+ err = e;
36
+ }
37
+ expect(err).toBeDefined();
38
+ expect(err.message).toMatch(/poolAddress\[10\]/);
39
+ expect(err.message).toMatch(/rewardAddress\[8453\]/);
40
+ });
41
+ it('passes for valid checksummed addresses', () => {
42
+ const map = {
43
+ 10: { poolAddress: VALID_ADDRESS },
44
+ 8453: { rewardAddress: VALID_ADDRESS_2 },
45
+ };
46
+ expect(() => validateAddressMap(map)).not.toThrow();
47
+ });
48
+ it('passes for valid lowercase (non-checksummed) addresses', () => {
49
+ const map = {
50
+ 10: { poolAddress: VALID_ADDRESS.toLowerCase() },
51
+ };
52
+ expect(() => validateAddressMap(map)).not.toThrow();
53
+ });
54
+ it('returns the original map reference on success', () => {
55
+ const map = { 10: { poolAddress: VALID_ADDRESS } };
56
+ expect(validateAddressMap(map)).toBe(map);
57
+ });
58
+ it('handles simple Record<number, Address> values', () => {
59
+ const map = { 10: INVALID_ADDRESS };
60
+ expect(() => validateAddressMap(map)).toThrow(/\[10\]/);
61
+ });
62
+ });
63
+ describe('validateAssetAddresses', () => {
64
+ it("skips 'native' entries without throwing", () => {
65
+ const map = { 1: 'native', 10: 'native' };
66
+ expect(() => validateAssetAddresses(map)).not.toThrow();
67
+ });
68
+ it('throws with location info for invalid non-native addresses', () => {
69
+ const map = { 10: INVALID_ADDRESS };
70
+ expect(() => validateAssetAddresses(map)).toThrow(/\[10\]/);
71
+ expect(() => validateAssetAddresses(map)).toThrow(INVALID_ADDRESS);
72
+ });
73
+ it('collects multiple failures before throwing', () => {
74
+ const map = { 10: INVALID_ADDRESS, 8453: INVALID_ADDRESS_2 };
75
+ let err;
76
+ try {
77
+ validateAssetAddresses(map);
78
+ }
79
+ catch (e) {
80
+ err = e;
81
+ }
82
+ expect(err).toBeDefined();
83
+ expect(err.message).toMatch(/\[10\]/);
84
+ expect(err.message).toMatch(/\[8453\]/);
85
+ });
86
+ it('passes for valid addresses and skips native', () => {
87
+ const map = { 1: 'native', 10: VALID_ADDRESS };
88
+ expect(() => validateAssetAddresses(map)).not.toThrow();
89
+ });
90
+ it('passes for valid addresses', () => {
91
+ const map = { 10: VALID_ADDRESS };
92
+ expect(() => validateAssetAddresses(map)).not.toThrow();
93
+ });
94
+ });
95
+ describe('validateConfigAddresses', () => {
96
+ const validMarket = {
97
+ address: VALID_ADDRESS,
98
+ chainId: unichain.id,
99
+ name: 'Valid Market',
100
+ asset: {
101
+ address: { [unichain.id]: VALID_ADDRESS_2 },
102
+ metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
103
+ type: 'erc20',
104
+ },
105
+ lendProvider: 'morpho',
106
+ };
107
+ const invalidMarketAddress = {
108
+ ...validMarket,
109
+ address: INVALID_ADDRESS,
110
+ };
111
+ const invalidAssetAddress = {
112
+ ...validMarket,
113
+ asset: {
114
+ ...validMarket.asset,
115
+ address: { [unichain.id]: INVALID_ADDRESS },
116
+ },
117
+ };
118
+ const validAsset = {
119
+ address: { [unichain.id]: VALID_ADDRESS },
120
+ metadata: { decimals: 6, name: 'USDC', symbol: 'USDC' },
121
+ type: 'erc20',
122
+ };
123
+ const invalidAsset = {
124
+ address: { [unichain.id]: INVALID_ADDRESS },
125
+ metadata: { decimals: 6, name: 'USDC', symbol: 'USDC' },
126
+ type: 'erc20',
127
+ };
128
+ it('throws with a descriptive message when a bad address appears in marketAllowlist', () => {
129
+ expect(() => validateConfigAddresses({
130
+ lend: { morpho: { marketAllowlist: [invalidMarketAddress] } },
131
+ })).toThrow(/lend\.morpho\.marketAllowlist/);
132
+ });
133
+ it('throws with a descriptive message when a bad address appears in marketBlocklist', () => {
134
+ expect(() => validateConfigAddresses({
135
+ lend: { morpho: { marketBlocklist: [invalidMarketAddress] } },
136
+ })).toThrow(/lend\.morpho\.marketBlocklist/);
137
+ });
138
+ it('throws with a descriptive message when a bad address appears in assets.allow', () => {
139
+ expect(() => validateConfigAddresses({ assets: { allow: [invalidAsset] } })).toThrow(/assets\.allow/);
140
+ });
141
+ it('throws with a descriptive message when a bad address appears in assets.block', () => {
142
+ expect(() => validateConfigAddresses({ assets: { block: [invalidAsset] } })).toThrow(/assets\.block/);
143
+ });
144
+ it('throws with a descriptive message when a bad address appears in lend.aave.marketAllowlist', () => {
145
+ expect(() => validateConfigAddresses({
146
+ lend: {
147
+ aave: {
148
+ marketAllowlist: [
149
+ { ...invalidMarketAddress, lendProvider: 'aave' },
150
+ ],
151
+ },
152
+ },
153
+ })).toThrow(/lend\.aave\.marketAllowlist/);
154
+ });
155
+ it('throws with a descriptive message when a bad address appears in lend.aave.marketBlocklist', () => {
156
+ expect(() => validateConfigAddresses({
157
+ lend: {
158
+ aave: {
159
+ marketBlocklist: [
160
+ { ...invalidMarketAddress, lendProvider: 'aave' },
161
+ ],
162
+ },
163
+ },
164
+ })).toThrow(/lend\.aave\.marketBlocklist/);
165
+ });
166
+ it('throws with a descriptive message when a bad address appears in swap.uniswap.marketAllowlist', () => {
167
+ expect(() => validateConfigAddresses({
168
+ swap: {
169
+ uniswap: {
170
+ marketAllowlist: [{ assets: [invalidAsset, validAsset] }],
171
+ },
172
+ },
173
+ })).toThrow(/swap\.uniswap\.marketAllowlist/);
174
+ });
175
+ it('throws with a descriptive message when a bad address appears in swap.uniswap.marketBlocklist', () => {
176
+ expect(() => validateConfigAddresses({
177
+ swap: {
178
+ uniswap: {
179
+ marketBlocklist: [{ assets: [invalidAsset, validAsset] }],
180
+ },
181
+ },
182
+ })).toThrow(/swap\.uniswap\.marketBlocklist/);
183
+ });
184
+ it('collects failures across multiple config sections and throws once with all of them', () => {
185
+ let err;
186
+ try {
187
+ validateConfigAddresses({
188
+ lend: {
189
+ morpho: {
190
+ marketAllowlist: [invalidMarketAddress],
191
+ marketBlocklist: [invalidAssetAddress],
192
+ },
193
+ },
194
+ assets: { allow: [invalidAsset] },
195
+ });
196
+ }
197
+ catch (e) {
198
+ err = e;
199
+ }
200
+ expect(err).toBeDefined();
201
+ expect(err.message).toMatch(/lend\.morpho\.marketAllowlist/);
202
+ expect(err.message).toMatch(/lend\.morpho\.marketBlocklist/);
203
+ expect(err.message).toMatch(/assets\.allow/);
204
+ });
205
+ it('returns void (no throw) when all addresses are valid', () => {
206
+ expect(() => validateConfigAddresses({
207
+ lend: { morpho: { marketAllowlist: [validMarket] } },
208
+ assets: { allow: [validAsset] },
209
+ })).not.toThrow();
210
+ });
211
+ });
212
+ describe('hardcoded address maps contain valid EVM addresses', () => {
213
+ it('all hardcoded address maps contain valid EVM addresses', () => {
214
+ expect(() => validateAddressMap(POOL_ADDRESSES_MAINNET)).not.toThrow();
215
+ expect(() => validateAddressMap(POOL_ADDRESSES_TESTNET)).not.toThrow();
216
+ expect(() => validateAddressMap(WETH_GATEWAY_ADDRESSES_MAINNET)).not.toThrow();
217
+ expect(() => validateAddressMap(WETH_GATEWAY_ADDRESSES_TESTNET)).not.toThrow();
218
+ expect(() => validateAddressMap(MORPHO_CONTRACTS)).not.toThrow();
219
+ expect(() => validateAddressMap(UNISWAP_ADDRESSES)).not.toThrow();
220
+ // Velodrome: contracts are cleanly separated from metadata
221
+ const veloContracts = Object.fromEntries(Object.entries(VELODROME_CHAINS).map(([id, cfg]) => [id, cfg.contracts]));
222
+ expect(() => validateAddressMap(veloContracts)).not.toThrow();
223
+ });
224
+ it('all hardcoded asset address maps contain valid EVM addresses', () => {
225
+ for (const asset of NATIVELY_SUPPORTED_ASSETS) {
226
+ expect(() => validateAssetAddresses(asset.address)).not.toThrow();
227
+ }
228
+ expect(() => validateAssetAddresses(USDC_DEMO.address)).not.toThrow();
229
+ expect(() => validateAssetAddresses(OP_DEMO.address)).not.toThrow();
230
+ });
231
+ });
232
+ describe('Actions constructor address validation', () => {
233
+ class TestHostedWalletProviderRegistry extends HostedWalletProviderRegistry {
234
+ constructor() {
235
+ super();
236
+ this.register({
237
+ type: 'privy',
238
+ validateOptions(options) {
239
+ return Boolean(options?.privyClient);
240
+ },
241
+ create({ chainManager }, options) {
242
+ return new PrivyHostedWalletProvider({
243
+ privyClient: options.privyClient,
244
+ chainManager,
245
+ authorizationContext: options.authorizationContext,
246
+ });
247
+ },
248
+ });
249
+ }
250
+ }
251
+ const baseWalletConfig = {
252
+ hostedWalletConfig: {
253
+ provider: {
254
+ type: 'privy',
255
+ config: {
256
+ privyClient: createMockPrivyClient('test-id', 'test-secret'),
257
+ authorizationContext: getMockAuthorizationContext(),
258
+ },
259
+ },
260
+ },
261
+ smartWalletConfig: { provider: { type: 'default' } },
262
+ };
263
+ it('throws on construction when ActionsConfig contains an invalid address', () => {
264
+ expect(() => new Actions({
265
+ chains: [{ chainId: unichain.id }],
266
+ lend: {
267
+ morpho: {
268
+ marketAllowlist: [
269
+ {
270
+ address: '0xbad',
271
+ chainId: unichain.id,
272
+ name: 'Bad Market',
273
+ asset: {
274
+ address: { [unichain.id]: VALID_ADDRESS },
275
+ metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
276
+ type: 'erc20',
277
+ },
278
+ lendProvider: 'morpho',
279
+ },
280
+ ],
281
+ },
282
+ },
283
+ wallet: baseWalletConfig,
284
+ }, {
285
+ hostedWalletProviderRegistry: new TestHostedWalletProviderRegistry(),
286
+ })).toThrow(/Invalid addresses found/);
287
+ });
288
+ it('constructs successfully when all addresses are valid', () => {
289
+ expect(() => new Actions({
290
+ chains: [{ chainId: unichain.id }],
291
+ lend: {
292
+ morpho: {
293
+ marketAllowlist: [
294
+ {
295
+ address: VALID_ADDRESS,
296
+ chainId: unichain.id,
297
+ name: 'Valid Market',
298
+ asset: {
299
+ address: { [unichain.id]: VALID_ADDRESS_2 },
300
+ metadata: { decimals: 18, name: 'WETH', symbol: 'WETH' },
301
+ type: 'erc20',
302
+ },
303
+ lendProvider: 'morpho',
304
+ },
305
+ ],
306
+ },
307
+ },
308
+ wallet: baseWalletConfig,
309
+ }, {
310
+ hostedWalletProviderRegistry: new TestHostedWalletProviderRegistry(),
311
+ })).not.toThrow();
312
+ });
313
+ });
314
+ //# sourceMappingURL=validateAddresses.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAddresses.test.js","sourceRoot":"","sources":["../../src/utils/validateAddresses.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Address } from 'viem';
2
+ import type { SupportedChainId } from '../constants/supportedChains.js';
3
+ import type { Asset } from '../types/asset.js';
4
+ export declare function validateAmountProvided(amountIn?: number, amountOut?: number): void;
5
+ export declare function validateAmountPositiveIfExists(amount?: number): void;
6
+ export declare function validateNotBothAmounts(amountIn?: number, amountOut?: number): void;
7
+ export declare function validateNotSameAsset(assetIn: Asset, assetOut: Asset): void;
8
+ export declare function validateNotZeroAddress(address: Address, label: string): void;
9
+ export declare function validateSlippage(slippage: number, maxSlippage: number): void;
10
+ export declare function validateChainSupported(chainId: number, supportedChainIds: readonly number[]): void;
11
+ export declare function validateAssetOnChain(asset: Asset, chainId: SupportedChainId): void;
12
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAK7C,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAIN;AAED,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpE;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAIN;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,CAO1E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAM5E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,IAAI,CAMN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAMN"}
@@ -0,0 +1,44 @@
1
+ import { isAssetSupportedOnChain } from './assets.js';
2
+ const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
3
+ export function validateAmountProvided(amountIn, amountOut) {
4
+ if (amountIn === undefined && amountOut === undefined) {
5
+ throw new Error('Either amountIn or amountOut must be provided');
6
+ }
7
+ }
8
+ export function validateAmountPositiveIfExists(amount) {
9
+ if (amount !== undefined && amount <= 0) {
10
+ throw new Error('Amount must be positive');
11
+ }
12
+ }
13
+ export function validateNotBothAmounts(amountIn, amountOut) {
14
+ if (amountIn !== undefined && amountOut !== undefined) {
15
+ throw new Error('Provide either amountIn or amountOut, not both');
16
+ }
17
+ }
18
+ export function validateNotSameAsset(assetIn, assetOut) {
19
+ if (assetIn.metadata.symbol.toLowerCase() ===
20
+ assetOut.metadata.symbol.toLowerCase()) {
21
+ throw new Error('Cannot swap an asset for itself');
22
+ }
23
+ }
24
+ export function validateNotZeroAddress(address, label) {
25
+ if (address === ZERO_ADDRESS) {
26
+ throw new Error(`${label} cannot be the zero address`);
27
+ }
28
+ }
29
+ export function validateSlippage(slippage, maxSlippage) {
30
+ if (slippage < 0 || slippage > maxSlippage) {
31
+ throw new Error(`Slippage ${slippage} exceeds allowed range [0, ${maxSlippage * 100}%]`);
32
+ }
33
+ }
34
+ export function validateChainSupported(chainId, supportedChainIds) {
35
+ if (!supportedChainIds.includes(chainId)) {
36
+ throw new Error(`Chain ${chainId} is not supported. Supported chains: ${supportedChainIds.join(', ')}`);
37
+ }
38
+ }
39
+ export function validateAssetOnChain(asset, chainId) {
40
+ if (!isAssetSupportedOnChain(asset, chainId)) {
41
+ throw new Error(`Asset ${asset.metadata.symbol} not supported on chain ${chainId}`);
42
+ }
43
+ }
44
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,YAAY,GAAG,4CAA4C,CAAA;AAEjE,MAAM,UAAU,sBAAsB,CACpC,QAAiB,EACjB,SAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAe;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAiB,EACjB,SAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAc,EAAE,QAAe;IAClE,IACE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;QACrC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,KAAa;IACpE,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,WAAmB;IACpE,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,YAAY,QAAQ,8BAA8B,WAAW,GAAG,GAAG,IAAI,CACxE,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,iBAAoC;IAEpC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,wCAAwC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,OAAyB;IAEzB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,SAAS,KAAK,CAAC,QAAQ,CAAC,MAAM,2BAA2B,OAAO,EAAE,CACnE,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -6,27 +6,38 @@ import type { SmartWalletCreationResult } from '../providers/smart/abstract/type
6
6
  import type { WalletProvider } from '../providers/WalletProvider.js';
7
7
  import type { Wallet } from '../wallets/abstract/Wallet.js';
8
8
  import type { SmartWallet } from '../wallets/smart/abstract/SmartWallet.js';
9
+ /**
10
+ * Provider factory function for lazy initialization
11
+ */
12
+ type WalletProviderFactory<THostedProviderType extends string, TToActionsMap extends Record<THostedProviderType, unknown>, H extends HostedWalletProvider<THostedProviderType, TToActionsMap>, S extends SmartWalletProvider> = () => Promise<WalletProvider<THostedProviderType, TToActionsMap, H, S>>;
9
13
  /**
10
14
  * Wallet namespace that provides unified wallet operations
11
- * @description Provides access to wallet functionality through a single provider interface
15
+ * @description Provides access to wallet functionality through a single provider interface.
16
+ * Supports lazy initialization — the wallet provider is created on first method call,
17
+ * enabling tree-shaking of unused wallet provider dependencies.
12
18
  */
13
19
  export declare class WalletNamespace<THostedProviderType extends string, TToActionsMap extends Record<THostedProviderType, unknown>, H extends HostedWalletProvider<THostedProviderType, TToActionsMap> = HostedWalletProvider<THostedProviderType, TToActionsMap>, S extends SmartWalletProvider = SmartWalletProvider> {
14
- private provider;
15
- constructor(provider: WalletProvider<THostedProviderType, TToActionsMap, H, S>);
20
+ private _provider;
21
+ private _providerFactory;
22
+ private _initPromise;
23
+ constructor(providerOrFactory: WalletProvider<THostedProviderType, TToActionsMap, H, S> | WalletProviderFactory<THostedProviderType, TToActionsMap, H, S>);
24
+ private resolveProvider;
16
25
  /**
17
26
  * Get direct access to the hosted wallet provider
18
27
  * @description Provides direct access to the underlying hosted wallet provider when
19
- * advanced functionality beyond the unified interface is needed
20
- * @returns The configured hosted wallet provider instance
28
+ * advanced functionality beyond the unified interface is needed.
29
+ * Lazily initializes the provider if not yet created.
30
+ * @returns Promise resolving to the configured hosted wallet provider instance
21
31
  */
22
- get hostedWalletProvider(): H;
32
+ hostedWalletProvider(): Promise<H>;
23
33
  /**
24
34
  * Get direct access to the smart wallet provider
25
35
  * @description Provides direct access to the underlying smart wallet provider when
26
- * advanced functionality beyond the unified interface is needed
27
- * @returns The configured smart wallet provider instance
36
+ * advanced functionality beyond the unified interface is needed.
37
+ * Lazily initializes the provider if not yet created.
38
+ * @returns Promise resolving to the configured smart wallet provider instance
28
39
  */
29
- get smartWalletProvider(): S;
40
+ smartWalletProvider(): Promise<S>;
30
41
  /**
31
42
  * Create a new smart wallet
32
43
  * @description Creates a smart wallet and attempts to deploy it across all supported chains.
@@ -81,4 +92,5 @@ export declare class WalletNamespace<THostedProviderType extends string, TToActi
81
92
  */
82
93
  getSmartWallet(params: GetSmartWalletOptions): Promise<SmartWallet>;
83
94
  }
95
+ export {};
84
96
  //# sourceMappingURL=WalletNamespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletNamespace.d.ts","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AACxG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAA;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAEtF;;;GAGG;AACH,qBAAa,eAAe,CAC1B,mBAAmB,SAAS,MAAM,EAClC,aAAa,SAAS,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC1D,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAChE,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAC1D,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAEnD,OAAO,CAAC,QAAQ,CAA0D;gBAGxE,QAAQ,EAAE,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAKpE;;;;;OAKG;IACH,IAAI,oBAAoB,IAAI,CAAC,CAE5B;IAED;;;;;OAKG;IACH,IAAI,mBAAmB,IAAI,CAAC,CAE3B;IAED;;;;;;;;;;;;;;;;OAgBG;IACG,iBAAiB,CACrB,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAIlD;;;;;;;;OAQG;IACG,YAAY,CAChB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;;;OAOG;IACG,eAAe,CACnB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB;CAGnD"}
1
+ {"version":3,"file":"WalletNamespace.d.ts","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AACxG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAA;AACtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AAEtF;;GAEG;AACH,KAAK,qBAAqB,CACxB,mBAAmB,SAAS,MAAM,EAClC,aAAa,SAAS,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC1D,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAClE,CAAC,SAAS,mBAAmB,IAC3B,MAAM,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,qBAAa,eAAe,CAC1B,mBAAmB,SAAS,MAAM,EAClC,aAAa,SAAS,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAC1D,CAAC,SAAS,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAChE,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAC1D,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAEnD,OAAO,CAAC,SAAS,CAKF;IACf,OAAO,CAAC,gBAAgB,CAKvB;IACD,OAAO,CAAC,YAAY,CAEL;gBAGb,iBAAiB,EACb,cAAc,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,GACxD,qBAAqB,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IAUrE,OAAO,CAAC,eAAe;IAavB;;;;;;OAMG;IACG,oBAAoB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKxC;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKvC;;;;;;;;;;;;;;;;OAgBG;IACG,iBAAiB,CACrB,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAKlD;;;;;;;;OAQG;IACG,YAAY,CAChB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,YAAY,CAAC;IAKxB;;;;;;;OAOG;IACG,eAAe,CACnB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB;CAInD"}
@@ -1,28 +1,53 @@
1
1
  /**
2
2
  * Wallet namespace that provides unified wallet operations
3
- * @description Provides access to wallet functionality through a single provider interface
3
+ * @description Provides access to wallet functionality through a single provider interface.
4
+ * Supports lazy initialization — the wallet provider is created on first method call,
5
+ * enabling tree-shaking of unused wallet provider dependencies.
4
6
  */
5
7
  export class WalletNamespace {
6
- constructor(provider) {
7
- this.provider = provider;
8
+ constructor(providerOrFactory) {
9
+ this._provider = null;
10
+ this._initPromise = null;
11
+ if (typeof providerOrFactory === 'function') {
12
+ this._providerFactory = providerOrFactory;
13
+ }
14
+ else {
15
+ this._provider = providerOrFactory;
16
+ this._providerFactory = () => Promise.resolve(providerOrFactory);
17
+ }
18
+ }
19
+ resolveProvider() {
20
+ if (this._provider)
21
+ return Promise.resolve(this._provider);
22
+ if (!this._initPromise) {
23
+ this._initPromise = this._providerFactory().then((provider) => {
24
+ this._provider = provider;
25
+ return provider;
26
+ });
27
+ }
28
+ return this._initPromise;
8
29
  }
9
30
  /**
10
31
  * Get direct access to the hosted wallet provider
11
32
  * @description Provides direct access to the underlying hosted wallet provider when
12
- * advanced functionality beyond the unified interface is needed
13
- * @returns The configured hosted wallet provider instance
33
+ * advanced functionality beyond the unified interface is needed.
34
+ * Lazily initializes the provider if not yet created.
35
+ * @returns Promise resolving to the configured hosted wallet provider instance
14
36
  */
15
- get hostedWalletProvider() {
16
- return this.provider.hostedWalletProvider;
37
+ async hostedWalletProvider() {
38
+ const provider = await this.resolveProvider();
39
+ return provider.hostedWalletProvider;
17
40
  }
18
41
  /**
19
42
  * Get direct access to the smart wallet provider
20
43
  * @description Provides direct access to the underlying smart wallet provider when
21
- * advanced functionality beyond the unified interface is needed
22
- * @returns The configured smart wallet provider instance
44
+ * advanced functionality beyond the unified interface is needed.
45
+ * Lazily initializes the provider if not yet created.
46
+ * @returns Promise resolving to the configured smart wallet provider instance
23
47
  */
24
- get smartWalletProvider() {
25
- return this.provider.smartWalletProvider;
48
+ async smartWalletProvider() {
49
+ const provider = await this.resolveProvider();
50
+ return provider.smartWalletProvider;
26
51
  }
27
52
  /**
28
53
  * Create a new smart wallet
@@ -42,7 +67,8 @@ export class WalletNamespace {
42
67
  * @throws Error if signer is not included in the signers array
43
68
  */
44
69
  async createSmartWallet(params) {
45
- return this.provider.createSmartWallet(params);
70
+ const provider = await this.resolveProvider();
71
+ return provider.createSmartWallet(params);
46
72
  }
47
73
  /**
48
74
  * Create a viem LocalAccount signer from the hosted wallet
@@ -54,7 +80,8 @@ export class WalletNamespace {
54
80
  * @returns Promise resolving to a viem `LocalAccount` with the hosted wallet as the signer backend
55
81
  */
56
82
  async createSigner(params) {
57
- return this.provider.createSigner(params);
83
+ const provider = await this.resolveProvider();
84
+ return provider.createSigner(params);
58
85
  }
59
86
  /**
60
87
  * Convert a hosted wallet to an Actions wallet
@@ -65,7 +92,8 @@ export class WalletNamespace {
65
92
  * @returns Promise resolving to the Actions wallet instance
66
93
  */
67
94
  async toActionsWallet(params) {
68
- return this.provider.hostedWalletToActionsWallet(params);
95
+ const provider = await this.resolveProvider();
96
+ return provider.hostedWalletToActionsWallet(params);
69
97
  }
70
98
  /**
71
99
  * Get an existing smart wallet with a provided signer
@@ -83,7 +111,8 @@ export class WalletNamespace {
83
111
  * @throws Error if neither walletAddress nor deploymentSigners provided
84
112
  */
85
113
  async getSmartWallet(params) {
86
- return this.provider.getSmartWallet(params);
114
+ const provider = await this.resolveProvider();
115
+ return provider.getSmartWallet(params);
87
116
  }
88
117
  }
89
118
  //# sourceMappingURL=WalletNamespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletNamespace.js","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,MAAM,OAAO,eAAe;IAS1B,YACE,QAAkE;QAElE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAA;IAC3C,CAAC;IAED;;;;;OAKG;IACH,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAA;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAgC;QAEhC,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,MAA0C;QAE1C,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAA0C;QAE1C,OAAO,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAC1D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,MAA6B;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;CACF"}
1
+ {"version":3,"file":"WalletNamespace.js","sourceRoot":"","sources":["../../../../src/wallet/core/namespace/WalletNamespace.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAuB1B,YACE,iBAEmE;QAnB7D,cAAS,GAKN,IAAI,CAAA;QAOP,iBAAY,GAET,IAAI,CAAA;QAOb,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAA;YAClC,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAEO,eAAe;QAGrB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;gBACzB,OAAO,QAAQ,CAAA;YACjB,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,oBAAoB,CAAA;IACtC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,mBAAmB,CAAA;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,MAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAA0C;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,MAA6B;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAC7C,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;CACF"}
@@ -25,7 +25,7 @@ describe('WalletNamespace', () => {
25
25
  vi.clearAllMocks();
26
26
  });
27
27
  describe('hostedWalletProvider', () => {
28
- it('should provide access to hosted wallet provider', () => {
28
+ it('should provide access to hosted wallet provider', async () => {
29
29
  const hostedWalletProvider = new PrivyHostedWalletProvider({
30
30
  privyClient: mockPrivyClient,
31
31
  chainManager: mockChainManager,
@@ -34,11 +34,11 @@ describe('WalletNamespace', () => {
34
34
  const smartWalletProvider = new DefaultSmartWalletProvider(mockChainManager, { morpho: mockLendProvider });
35
35
  const walletProvider = new WalletProvider(hostedWalletProvider, smartWalletProvider);
36
36
  const walletNamespace = new WalletNamespace(walletProvider);
37
- expect(walletNamespace.hostedWalletProvider).toBe(hostedWalletProvider);
37
+ expect(await walletNamespace.hostedWalletProvider()).toBe(hostedWalletProvider);
38
38
  });
39
39
  });
40
40
  describe('smartWalletProvider', () => {
41
- it('should provide access to smart wallet provider', () => {
41
+ it('should provide access to smart wallet provider', async () => {
42
42
  const mockPrivyClient = createMockPrivyClient('test-app-id', 'test-app-secret');
43
43
  const hostedWalletProvider = new PrivyHostedWalletProvider({
44
44
  privyClient: mockPrivyClient,
@@ -48,7 +48,7 @@ describe('WalletNamespace', () => {
48
48
  const smartWalletProvider = new DefaultSmartWalletProvider(mockChainManager, { morpho: mockLendProvider });
49
49
  const walletProvider = new WalletProvider(hostedWalletProvider, smartWalletProvider);
50
50
  const walletNamespace = new WalletNamespace(walletProvider);
51
- expect(walletNamespace.smartWalletProvider).toBe(smartWalletProvider);
51
+ expect(await walletNamespace.smartWalletProvider()).toBe(smartWalletProvider);
52
52
  });
53
53
  });
54
54
  describe('createSmartWallet', () => {