@hyperlane-xyz/sdk 3.11.0-beta-0 → 3.20.0-beta0

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 (326) hide show
  1. package/dist/app/MultiProtocolApp.test.js +9 -11
  2. package/dist/app/MultiProtocolApp.test.js.map +1 -1
  3. package/dist/consts/crud.d.ts +2 -0
  4. package/dist/consts/crud.d.ts.map +1 -0
  5. package/dist/consts/crud.js +2 -0
  6. package/dist/consts/crud.js.map +1 -0
  7. package/dist/consts/igp.d.ts +3 -1
  8. package/dist/consts/igp.d.ts.map +1 -1
  9. package/dist/consts/igp.js +3 -1
  10. package/dist/consts/igp.js.map +1 -1
  11. package/dist/consts/multisigIsm.d.ts.map +1 -1
  12. package/dist/consts/multisigIsm.js +23 -0
  13. package/dist/consts/multisigIsm.js.map +1 -1
  14. package/dist/consts/multisigIsmVerifyCosts.d.ts +210 -0
  15. package/dist/consts/multisigIsmVerifyCosts.d.ts.map +1 -0
  16. package/dist/consts/multisigIsmVerifyCosts.js +211 -0
  17. package/dist/consts/multisigIsmVerifyCosts.js.map +1 -0
  18. package/dist/consts/testChains.d.ts +17 -0
  19. package/dist/consts/testChains.d.ts.map +1 -0
  20. package/dist/consts/testChains.js +105 -0
  21. package/dist/consts/testChains.js.map +1 -0
  22. package/dist/core/CoreDeployer.hardhat-test.js +49 -8
  23. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  24. package/dist/core/HyperlaneCore.d.ts +6 -2
  25. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  26. package/dist/core/HyperlaneCore.js +51 -11
  27. package/dist/core/HyperlaneCore.js.map +1 -1
  28. package/dist/core/HyperlaneCore.test.js +2 -6
  29. package/dist/core/HyperlaneCore.test.js.map +1 -1
  30. package/dist/core/MultiProtocolCore.d.ts +0 -2
  31. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  32. package/dist/core/MultiProtocolCore.js +0 -8
  33. package/dist/core/MultiProtocolCore.js.map +1 -1
  34. package/dist/core/MultiProtocolCore.test.js +15 -77
  35. package/dist/core/MultiProtocolCore.test.js.map +1 -1
  36. package/dist/core/TestCoreApp.d.ts.map +1 -1
  37. package/dist/core/TestCoreApp.js +2 -1
  38. package/dist/core/TestCoreApp.js.map +1 -1
  39. package/dist/core/TestCoreDeployer.js +2 -2
  40. package/dist/core/TestCoreDeployer.js.map +1 -1
  41. package/dist/core/adapters/CosmWasmCoreAdapter.test.js +10 -2
  42. package/dist/core/adapters/CosmWasmCoreAdapter.test.js.map +1 -1
  43. package/dist/core/read.d.ts +28 -0
  44. package/dist/core/read.d.ts.map +1 -0
  45. package/dist/core/read.js +44 -0
  46. package/dist/core/read.js.map +1 -0
  47. package/dist/core/testHyperlaneDeploy.hardhat-test.js +3 -3
  48. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
  49. package/dist/crud/AbstractCrudModule.d.ts +21 -0
  50. package/dist/crud/AbstractCrudModule.d.ts.map +1 -0
  51. package/dist/crud/AbstractCrudModule.js +10 -0
  52. package/dist/crud/AbstractCrudModule.js.map +1 -0
  53. package/dist/crud/EvmHookModule.d.ts +18 -0
  54. package/dist/crud/EvmHookModule.d.ts.map +1 -0
  55. package/dist/crud/EvmHookModule.js +28 -0
  56. package/dist/crud/EvmHookModule.js.map +1 -0
  57. package/dist/crud/EvmIsmModule.d.ts +18 -0
  58. package/dist/crud/EvmIsmModule.d.ts.map +1 -0
  59. package/dist/crud/EvmIsmModule.js +28 -0
  60. package/dist/crud/EvmIsmModule.js.map +1 -0
  61. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  62. package/dist/deploy/HyperlaneDeployer.js +4 -4
  63. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  64. package/dist/deploy/schemas.d.ts +70 -0
  65. package/dist/deploy/schemas.d.ts.map +1 -0
  66. package/dist/deploy/schemas.js +7 -0
  67. package/dist/deploy/schemas.js.map +1 -0
  68. package/dist/deploy/types.d.ts +12 -3
  69. package/dist/deploy/types.d.ts.map +1 -1
  70. package/dist/deploy/types.js +1 -0
  71. package/dist/deploy/types.js.map +1 -1
  72. package/dist/gas/HyperlaneIgp.d.ts +0 -2
  73. package/dist/gas/HyperlaneIgp.d.ts.map +1 -1
  74. package/dist/gas/HyperlaneIgp.js +0 -9
  75. package/dist/gas/HyperlaneIgp.js.map +1 -1
  76. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  77. package/dist/gas/HyperlaneIgpChecker.js +3 -6
  78. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  79. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  80. package/dist/gas/HyperlaneIgpDeployer.js +12 -7
  81. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  82. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +3 -2
  83. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -1
  84. package/dist/gas/oracle/types.d.ts.map +1 -1
  85. package/dist/gas/oracle/types.js +4 -3
  86. package/dist/gas/oracle/types.js.map +1 -1
  87. package/dist/gas/token-prices.d.ts +2 -2
  88. package/dist/gas/token-prices.d.ts.map +1 -1
  89. package/dist/gas/token-prices.js +4 -7
  90. package/dist/gas/token-prices.js.map +1 -1
  91. package/dist/gas/token-prices.test.js +6 -6
  92. package/dist/gas/token-prices.test.js.map +1 -1
  93. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  94. package/dist/hook/HyperlaneHookDeployer.js +1 -2
  95. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  96. package/dist/hook/read.d.ts +35 -0
  97. package/dist/hook/read.d.ts.map +1 -0
  98. package/dist/hook/read.js +191 -0
  99. package/dist/hook/read.js.map +1 -0
  100. package/dist/hook/read.test.d.ts +2 -0
  101. package/dist/hook/read.test.d.ts.map +1 -0
  102. package/dist/hook/read.test.js +147 -0
  103. package/dist/hook/read.test.js.map +1 -0
  104. package/dist/hook/types.d.ts +14 -3
  105. package/dist/hook/types.d.ts.map +1 -1
  106. package/dist/hook/types.js +14 -0
  107. package/dist/hook/types.js.map +1 -1
  108. package/dist/index.d.ts +19 -9
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +15 -6
  111. package/dist/index.js.map +1 -1
  112. package/dist/ism/HyperlaneIsmFactory.d.ts +0 -2
  113. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  114. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +37 -9
  115. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  116. package/dist/ism/HyperlaneIsmFactory.js +16 -27
  117. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  118. package/dist/ism/read.d.ts +29 -0
  119. package/dist/ism/read.d.ts.map +1 -0
  120. package/dist/ism/read.js +152 -0
  121. package/dist/ism/read.js.map +1 -0
  122. package/dist/ism/read.test.d.ts +2 -0
  123. package/dist/ism/read.test.d.ts.map +1 -0
  124. package/dist/ism/read.test.js +124 -0
  125. package/dist/ism/read.test.js.map +1 -0
  126. package/dist/ism/schemas.d.ts +177 -0
  127. package/dist/ism/schemas.d.ts.map +1 -0
  128. package/dist/ism/schemas.js +59 -0
  129. package/dist/ism/schemas.js.map +1 -0
  130. package/dist/ism/schemas.test.d.ts +2 -0
  131. package/dist/ism/schemas.test.d.ts.map +1 -0
  132. package/dist/ism/schemas.test.js +18 -0
  133. package/dist/ism/schemas.test.js.map +1 -0
  134. package/dist/ism/types.d.ts +11 -4
  135. package/dist/ism/types.d.ts.map +1 -1
  136. package/dist/ism/types.js +4 -3
  137. package/dist/ism/types.js.map +1 -1
  138. package/dist/ism/utils.d.ts.map +1 -1
  139. package/dist/ism/utils.js +10 -4
  140. package/dist/ism/utils.js.map +1 -1
  141. package/dist/metadata/ChainMetadataManager.d.ts +12 -2
  142. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  143. package/dist/metadata/ChainMetadataManager.js +27 -13
  144. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  145. package/dist/metadata/agentConfig.d.ts +464 -246
  146. package/dist/metadata/agentConfig.d.ts.map +1 -1
  147. package/dist/metadata/agentConfig.js +4 -8
  148. package/dist/metadata/agentConfig.js.map +1 -1
  149. package/dist/metadata/agentConfig.test.js +9 -9
  150. package/dist/metadata/agentConfig.test.js.map +1 -1
  151. package/dist/metadata/blockExplorer.d.ts.map +1 -1
  152. package/dist/metadata/blockExplorer.js +3 -7
  153. package/dist/metadata/blockExplorer.js.map +1 -1
  154. package/dist/metadata/blockExplorer.test.d.ts +2 -0
  155. package/dist/metadata/blockExplorer.test.d.ts.map +1 -0
  156. package/dist/metadata/blockExplorer.test.js +41 -0
  157. package/dist/metadata/blockExplorer.test.js.map +1 -0
  158. package/dist/metadata/chainMetadata.test.js +0 -10
  159. package/dist/metadata/chainMetadata.test.js.map +1 -1
  160. package/dist/metadata/chainMetadataTypes.d.ts +335 -1
  161. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  162. package/dist/metadata/chainMetadataTypes.js +33 -9
  163. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  164. package/dist/middleware/account/InterchainAccount.d.ts +0 -2
  165. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  166. package/dist/middleware/account/InterchainAccount.js +2 -12
  167. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  168. package/dist/middleware/account/accounts.hardhat-test.js +3 -3
  169. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  170. package/dist/middleware/account/schemas.d.ts +21 -0
  171. package/dist/middleware/account/schemas.d.ts.map +1 -0
  172. package/dist/middleware/account/schemas.js +11 -0
  173. package/dist/middleware/account/schemas.js.map +1 -0
  174. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +5 -6
  175. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
  176. package/dist/middleware/query/InterchainQuery.d.ts +0 -2
  177. package/dist/middleware/query/InterchainQuery.d.ts.map +1 -1
  178. package/dist/middleware/query/InterchainQuery.js +0 -9
  179. package/dist/middleware/query/InterchainQuery.js.map +1 -1
  180. package/dist/middleware/query/queries.hardhat-test.js +5 -6
  181. package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
  182. package/dist/providers/MultiProtocolProvider.d.ts +6 -2
  183. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  184. package/dist/providers/MultiProtocolProvider.js +15 -2
  185. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  186. package/dist/providers/MultiProtocolProvider.test.js +8 -9
  187. package/dist/providers/MultiProtocolProvider.test.js.map +1 -1
  188. package/dist/providers/MultiProvider.d.ts +1 -1
  189. package/dist/providers/MultiProvider.d.ts.map +1 -1
  190. package/dist/providers/MultiProvider.js +7 -8
  191. package/dist/providers/MultiProvider.js.map +1 -1
  192. package/dist/providers/ProviderType.d.ts +26 -2
  193. package/dist/providers/ProviderType.d.ts.map +1 -1
  194. package/dist/providers/ProviderType.js +0 -3
  195. package/dist/providers/ProviderType.js.map +1 -1
  196. package/dist/providers/SmartProvider/SmartProvider.js +1 -1
  197. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  198. package/dist/providers/providerBuilders.d.ts.map +1 -1
  199. package/dist/providers/providerBuilders.js +0 -2
  200. package/dist/providers/providerBuilders.js.map +1 -1
  201. package/dist/router/HyperlaneRouterChecker.js +2 -1
  202. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  203. package/dist/router/MultiProtocolRouterApps.test.js +4 -4
  204. package/dist/router/MultiProtocolRouterApps.test.js.map +1 -1
  205. package/dist/router/RouterApps.d.ts +1 -1
  206. package/dist/router/RouterApps.d.ts.map +1 -1
  207. package/dist/router/RouterApps.js +11 -5
  208. package/dist/router/RouterApps.js.map +1 -1
  209. package/dist/router/schemas.d.ts +71 -0
  210. package/dist/router/schemas.d.ts.map +1 -0
  211. package/dist/router/schemas.js +16 -0
  212. package/dist/router/schemas.js.map +1 -0
  213. package/dist/router/types.d.ts +5 -12
  214. package/dist/router/types.d.ts.map +1 -1
  215. package/dist/router/types.js.map +1 -1
  216. package/dist/test/MockCoinGecko.d.ts +12 -0
  217. package/dist/test/MockCoinGecko.d.ts.map +1 -0
  218. package/dist/test/MockCoinGecko.js +38 -0
  219. package/dist/test/MockCoinGecko.js.map +1 -0
  220. package/dist/test/testUtils.d.ts +8 -10
  221. package/dist/test/testUtils.d.ts.map +1 -1
  222. package/dist/test/testUtils.js +25 -39
  223. package/dist/test/testUtils.js.map +1 -1
  224. package/dist/token/Token.test.js +30 -37
  225. package/dist/token/Token.test.js.map +1 -1
  226. package/dist/token/TokenAmount.test.js +4 -5
  227. package/dist/token/TokenAmount.test.js.map +1 -1
  228. package/dist/token/TokenStandard.d.ts +2 -3
  229. package/dist/token/TokenStandard.d.ts.map +1 -1
  230. package/dist/token/TokenStandard.js +3 -8
  231. package/dist/token/TokenStandard.js.map +1 -1
  232. package/dist/token/adapters/CosmWasmTokenAdapter.test.d.ts.map +1 -1
  233. package/dist/token/adapters/CosmWasmTokenAdapter.test.js +10 -13
  234. package/dist/token/adapters/CosmWasmTokenAdapter.test.js.map +1 -1
  235. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  236. package/dist/token/adapters/EvmTokenAdapter.js +4 -2
  237. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  238. package/dist/token/app.d.ts +11 -0
  239. package/dist/token/app.d.ts.map +1 -0
  240. package/dist/token/app.js +22 -0
  241. package/dist/token/app.js.map +1 -0
  242. package/dist/token/checker.d.ts +10 -0
  243. package/dist/token/checker.d.ts.map +1 -0
  244. package/dist/token/checker.js +73 -0
  245. package/dist/token/checker.js.map +1 -0
  246. package/dist/token/config.d.ts +9 -4
  247. package/dist/token/config.d.ts.map +1 -1
  248. package/dist/token/config.js.map +1 -1
  249. package/dist/token/contracts.d.ts +9 -0
  250. package/dist/token/contracts.d.ts.map +1 -1
  251. package/dist/token/contracts.js +4 -1
  252. package/dist/token/contracts.js.map +1 -1
  253. package/dist/token/deploy.d.ts.map +1 -1
  254. package/dist/token/deploy.hardhat-test.js +48 -2
  255. package/dist/token/deploy.hardhat-test.js.map +1 -1
  256. package/dist/token/deploy.js +7 -3
  257. package/dist/token/deploy.js.map +1 -1
  258. package/dist/token/read.d.ts +42 -0
  259. package/dist/token/read.d.ts.map +1 -0
  260. package/dist/token/read.js +88 -0
  261. package/dist/token/read.js.map +1 -0
  262. package/dist/token/schemas.d.ts +375 -0
  263. package/dist/token/schemas.d.ts.map +1 -0
  264. package/dist/token/schemas.js +48 -0
  265. package/dist/token/schemas.js.map +1 -0
  266. package/dist/token/schemas.test.d.ts +2 -0
  267. package/dist/token/schemas.test.d.ts.map +1 -0
  268. package/dist/token/schemas.test.js +85 -0
  269. package/dist/token/schemas.test.js.map +1 -0
  270. package/dist/token/types.d.ts +5 -0
  271. package/dist/token/types.d.ts.map +1 -0
  272. package/dist/token/types.js +2 -0
  273. package/dist/token/types.js.map +1 -0
  274. package/dist/types.d.ts +0 -1
  275. package/dist/types.d.ts.map +1 -1
  276. package/dist/utils/MultiGeneric.d.ts +1 -1
  277. package/dist/utils/MultiGeneric.d.ts.map +1 -1
  278. package/dist/utils/MultiGeneric.js +2 -3
  279. package/dist/utils/MultiGeneric.js.map +1 -1
  280. package/dist/utils/cosmos.d.ts +1180 -0
  281. package/dist/utils/cosmos.d.ts.map +1 -0
  282. package/dist/utils/cosmos.js +375 -0
  283. package/dist/utils/cosmos.js.map +1 -0
  284. package/dist/utils/fork.d.ts +38 -0
  285. package/dist/utils/fork.d.ts.map +1 -0
  286. package/dist/utils/fork.js +89 -0
  287. package/dist/utils/fork.js.map +1 -0
  288. package/dist/utils/ism.js +1 -1
  289. package/dist/utils/ism.js.map +1 -1
  290. package/dist/utils/wagmi.d.ts +0 -2
  291. package/dist/utils/wagmi.d.ts.map +1 -1
  292. package/dist/utils/wagmi.js +2 -5
  293. package/dist/utils/wagmi.js.map +1 -1
  294. package/dist/warp/WarpCore.d.ts.map +1 -1
  295. package/dist/warp/WarpCore.js +9 -5
  296. package/dist/warp/WarpCore.js.map +1 -1
  297. package/dist/warp/WarpCore.test.js +34 -35
  298. package/dist/warp/WarpCore.test.js.map +1 -1
  299. package/package.json +4 -5
  300. package/dist/consts/chainMetadata.d.ts +0 -85
  301. package/dist/consts/chainMetadata.d.ts.map +0 -1
  302. package/dist/consts/chainMetadata.js +0 -929
  303. package/dist/consts/chainMetadata.js.map +0 -1
  304. package/dist/consts/chains.d.ts +0 -54
  305. package/dist/consts/chains.d.ts.map +0 -1
  306. package/dist/consts/chains.js +0 -93
  307. package/dist/consts/chains.js.map +0 -1
  308. package/dist/consts/environments/index.d.ts +0 -503
  309. package/dist/consts/environments/index.d.ts.map +0 -1
  310. package/dist/consts/environments/index.js +0 -7
  311. package/dist/consts/environments/index.js.map +0 -1
  312. package/dist/consts/environments/mainnet.json +0 -342
  313. package/dist/consts/environments/testnet.json +0 -132
  314. package/dist/consts/multisigIsmVerifyCosts.json +0 -209
  315. package/dist/metadata/health.d.ts +0 -9
  316. package/dist/metadata/health.d.ts.map +0 -1
  317. package/dist/metadata/health.js +0 -112
  318. package/dist/metadata/health.js.map +0 -1
  319. package/dist/providers/SmartProvider/SmartProvider.test.d.ts +0 -2
  320. package/dist/providers/SmartProvider/SmartProvider.test.d.ts.map +0 -1
  321. package/dist/providers/SmartProvider/SmartProvider.test.js +0 -161
  322. package/dist/providers/SmartProvider/SmartProvider.test.js.map +0 -1
  323. package/dist/test/metadata-check.d.ts +0 -2
  324. package/dist/test/metadata-check.d.ts.map +0 -1
  325. package/dist/test/metadata-check.js +0 -81
  326. package/dist/test/metadata-check.js.map +0 -1
@@ -0,0 +1,88 @@
1
+ import { ethers } from 'ethers';
2
+ import { ERC20__factory, HypERC20Collateral__factory, } from '@hyperlane-xyz/core';
3
+ import { DEFAULT_CONTRACT_READ_CONCURRENCY } from '../consts/crud.js';
4
+ import { EvmHookReader } from '../hook/read.js';
5
+ import { EvmIsmReader } from '../ism/read.js';
6
+ export class EvmERC20WarpRouteReader {
7
+ multiProvider;
8
+ chain;
9
+ concurrency;
10
+ provider;
11
+ evmHookReader;
12
+ evmIsmReader;
13
+ constructor(multiProvider, chain, concurrency = DEFAULT_CONTRACT_READ_CONCURRENCY) {
14
+ this.multiProvider = multiProvider;
15
+ this.chain = chain;
16
+ this.concurrency = concurrency;
17
+ this.provider = this.multiProvider.getProvider(chain);
18
+ this.evmHookReader = new EvmHookReader(multiProvider, chain, concurrency);
19
+ this.evmIsmReader = new EvmIsmReader(multiProvider, chain, concurrency);
20
+ }
21
+ /**
22
+ * Derives the configuration for a Hyperlane ERC20 router contract at the given address.
23
+ *
24
+ * @param address - The address of the Hyperlane ERC20 router contract.
25
+ * @returns The configuration for the Hyperlane ERC20 router.
26
+ *
27
+ */
28
+ async deriveWarpRouteConfig(address) {
29
+ const fetchedBaseMetadata = await this.fetchBaseMetadata(address);
30
+ const fetchedTokenMetadata = await this.fetchTokenMetadata(fetchedBaseMetadata.token);
31
+ const results = {
32
+ ...fetchedBaseMetadata,
33
+ ...fetchedTokenMetadata,
34
+ };
35
+ if (fetchedBaseMetadata.interchainSecurityModule !==
36
+ ethers.constants.AddressZero) {
37
+ results.interchainSecurityModule =
38
+ await this.evmIsmReader.deriveIsmConfig(fetchedBaseMetadata.interchainSecurityModule);
39
+ }
40
+ // @todo add after https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/3667 is fixed
41
+ // if (fetchedBaseMetadata.hook !== ethers.constants.AddressZero) {
42
+ // results.hook = await this.evmHookReader.deriveHookConfig(
43
+ // fetchedBaseMetadata.hook,
44
+ // );
45
+ // }
46
+ return results;
47
+ }
48
+ /**
49
+ * Fetches the base metadata for a Warp Route contract.
50
+ *
51
+ * @param routerAddress - The address of the Warp Route contract.
52
+ * @returns The base metadata for the Warp Route contract, including the mailbox, owner, wrapped token address, hook, and interchain security module.
53
+ */
54
+ async fetchBaseMetadata(routerAddress) {
55
+ const warpRoute = HypERC20Collateral__factory.connect(routerAddress, this.provider);
56
+ const [mailbox, owner, token, hook, interchainSecurityModule] = await Promise.all([
57
+ warpRoute.mailbox(),
58
+ warpRoute.owner(),
59
+ warpRoute.wrappedToken(),
60
+ warpRoute.hook(),
61
+ warpRoute.interchainSecurityModule(),
62
+ ]);
63
+ return {
64
+ mailbox,
65
+ owner,
66
+ token,
67
+ hook,
68
+ interchainSecurityModule,
69
+ };
70
+ }
71
+ /**
72
+ * Fetches the metadata for a token address.
73
+ *
74
+ * @param tokenAddress - The address of the token.
75
+ * @returns A partial ERC20 metadata object containing the token name, symbol, total supply, and decimals.
76
+ */
77
+ async fetchTokenMetadata(tokenAddress) {
78
+ const erc20 = ERC20__factory.connect(tokenAddress, this.provider);
79
+ const [name, symbol, totalSupply, decimals] = await Promise.all([
80
+ erc20.name(),
81
+ erc20.symbol(),
82
+ erc20.totalSupply(),
83
+ erc20.decimals(),
84
+ ]);
85
+ return { name, symbol, totalSupply, decimals };
86
+ }
87
+ }
88
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/token/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,375 @@
1
+ import { z } from 'zod';
2
+ import { TokenType } from './config.js';
3
+ export declare const TokenMetadataSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ symbol: z.ZodString;
6
+ totalSupply: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ symbol: string;
9
+ name: string;
10
+ totalSupply: string | number;
11
+ }, {
12
+ symbol: string;
13
+ name: string;
14
+ totalSupply: string | number;
15
+ }>;
16
+ export declare const TokenDecimalsSchema: z.ZodObject<{
17
+ decimals: z.ZodNumber;
18
+ scale: z.ZodOptional<z.ZodNumber>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ decimals: number;
21
+ scale?: number | undefined;
22
+ }, {
23
+ decimals: number;
24
+ scale?: number | undefined;
25
+ }>;
26
+ export declare const ERC20MetadataSchema: z.ZodObject<{
27
+ symbol: z.ZodOptional<z.ZodString>;
28
+ name: z.ZodOptional<z.ZodString>;
29
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
30
+ decimals: z.ZodOptional<z.ZodNumber>;
31
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ symbol?: string | undefined;
34
+ name?: string | undefined;
35
+ totalSupply?: string | number | undefined;
36
+ decimals?: number | undefined;
37
+ scale?: number | undefined;
38
+ }, {
39
+ symbol?: string | undefined;
40
+ name?: string | undefined;
41
+ totalSupply?: string | number | undefined;
42
+ decimals?: number | undefined;
43
+ scale?: number | undefined;
44
+ }>;
45
+ export declare const ERC721MetadataSchema: z.ZodObject<{
46
+ isNft: z.ZodOptional<z.ZodBoolean>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ isNft?: boolean | undefined;
49
+ }, {
50
+ isNft?: boolean | undefined;
51
+ }>;
52
+ export declare const CollateralConfigSchema: z.ZodObject<{
53
+ symbol: z.ZodOptional<z.ZodString>;
54
+ name: z.ZodOptional<z.ZodString>;
55
+ decimals: z.ZodOptional<z.ZodNumber>;
56
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
57
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
58
+ isNft: z.ZodOptional<z.ZodBoolean>;
59
+ type: z.ZodEnum<[TokenType.collateral, TokenType.collateralUri, TokenType.fastCollateral, TokenType.collateralVault]>;
60
+ token: z.ZodString;
61
+ }, "strip", z.ZodTypeAny, {
62
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
63
+ token: string;
64
+ symbol?: string | undefined;
65
+ name?: string | undefined;
66
+ decimals?: number | undefined;
67
+ totalSupply?: string | number | undefined;
68
+ scale?: number | undefined;
69
+ isNft?: boolean | undefined;
70
+ }, {
71
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
72
+ token: string;
73
+ symbol?: string | undefined;
74
+ name?: string | undefined;
75
+ decimals?: number | undefined;
76
+ totalSupply?: string | number | undefined;
77
+ scale?: number | undefined;
78
+ isNft?: boolean | undefined;
79
+ }>;
80
+ export declare const NativeConfigSchema: z.ZodObject<{
81
+ decimals: z.ZodOptional<z.ZodNumber>;
82
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
83
+ type: z.ZodEnum<[TokenType.native]>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ type: TokenType.native;
86
+ decimals?: number | undefined;
87
+ scale?: number | undefined;
88
+ }, {
89
+ type: TokenType.native;
90
+ decimals?: number | undefined;
91
+ scale?: number | undefined;
92
+ }>;
93
+ export declare const SyntheticConfigSchema: z.ZodObject<{
94
+ symbol: z.ZodOptional<z.ZodString>;
95
+ name: z.ZodOptional<z.ZodString>;
96
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
97
+ type: z.ZodEnum<[TokenType.synthetic, TokenType.syntheticUri, TokenType.fastSynthetic]>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
100
+ symbol?: string | undefined;
101
+ name?: string | undefined;
102
+ totalSupply?: string | number | undefined;
103
+ }, {
104
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
105
+ symbol?: string | undefined;
106
+ name?: string | undefined;
107
+ totalSupply?: string | number | undefined;
108
+ }>;
109
+ /**
110
+ * @remarks
111
+ * The discriminatedUnion is basically a switch statement for zod schemas
112
+ * It uses the 'type' key to pick from the array of schemas to validate
113
+ */
114
+ export declare const TokenConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
115
+ decimals: z.ZodOptional<z.ZodNumber>;
116
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
117
+ type: z.ZodEnum<[TokenType.native]>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ type: TokenType.native;
120
+ decimals?: number | undefined;
121
+ scale?: number | undefined;
122
+ }, {
123
+ type: TokenType.native;
124
+ decimals?: number | undefined;
125
+ scale?: number | undefined;
126
+ }>, z.ZodObject<{
127
+ symbol: z.ZodOptional<z.ZodString>;
128
+ name: z.ZodOptional<z.ZodString>;
129
+ decimals: z.ZodOptional<z.ZodNumber>;
130
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
131
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
132
+ isNft: z.ZodOptional<z.ZodBoolean>;
133
+ type: z.ZodEnum<[TokenType.collateral, TokenType.collateralUri, TokenType.fastCollateral, TokenType.collateralVault]>;
134
+ token: z.ZodString;
135
+ }, "strip", z.ZodTypeAny, {
136
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
137
+ token: string;
138
+ symbol?: string | undefined;
139
+ name?: string | undefined;
140
+ decimals?: number | undefined;
141
+ totalSupply?: string | number | undefined;
142
+ scale?: number | undefined;
143
+ isNft?: boolean | undefined;
144
+ }, {
145
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
146
+ token: string;
147
+ symbol?: string | undefined;
148
+ name?: string | undefined;
149
+ decimals?: number | undefined;
150
+ totalSupply?: string | number | undefined;
151
+ scale?: number | undefined;
152
+ isNft?: boolean | undefined;
153
+ }>, z.ZodObject<{
154
+ symbol: z.ZodOptional<z.ZodString>;
155
+ name: z.ZodOptional<z.ZodString>;
156
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
157
+ type: z.ZodEnum<[TokenType.synthetic, TokenType.syntheticUri, TokenType.fastSynthetic]>;
158
+ }, "strip", z.ZodTypeAny, {
159
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
160
+ symbol?: string | undefined;
161
+ name?: string | undefined;
162
+ totalSupply?: string | number | undefined;
163
+ }, {
164
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
165
+ symbol?: string | undefined;
166
+ name?: string | undefined;
167
+ totalSupply?: string | number | undefined;
168
+ }>]>;
169
+ export declare const TokenRouterConfigSchema: z.ZodIntersection<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
170
+ decimals: z.ZodOptional<z.ZodNumber>;
171
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
172
+ type: z.ZodEnum<[TokenType.native]>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ type: TokenType.native;
175
+ decimals?: number | undefined;
176
+ scale?: number | undefined;
177
+ }, {
178
+ type: TokenType.native;
179
+ decimals?: number | undefined;
180
+ scale?: number | undefined;
181
+ }>, z.ZodObject<{
182
+ symbol: z.ZodOptional<z.ZodString>;
183
+ name: z.ZodOptional<z.ZodString>;
184
+ decimals: z.ZodOptional<z.ZodNumber>;
185
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
186
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
187
+ isNft: z.ZodOptional<z.ZodBoolean>;
188
+ type: z.ZodEnum<[TokenType.collateral, TokenType.collateralUri, TokenType.fastCollateral, TokenType.collateralVault]>;
189
+ token: z.ZodString;
190
+ }, "strip", z.ZodTypeAny, {
191
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
192
+ token: string;
193
+ symbol?: string | undefined;
194
+ name?: string | undefined;
195
+ decimals?: number | undefined;
196
+ totalSupply?: string | number | undefined;
197
+ scale?: number | undefined;
198
+ isNft?: boolean | undefined;
199
+ }, {
200
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
201
+ token: string;
202
+ symbol?: string | undefined;
203
+ name?: string | undefined;
204
+ decimals?: number | undefined;
205
+ totalSupply?: string | number | undefined;
206
+ scale?: number | undefined;
207
+ isNft?: boolean | undefined;
208
+ }>, z.ZodObject<{
209
+ symbol: z.ZodOptional<z.ZodString>;
210
+ name: z.ZodOptional<z.ZodString>;
211
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
212
+ type: z.ZodEnum<[TokenType.synthetic, TokenType.syntheticUri, TokenType.fastSynthetic]>;
213
+ }, "strip", z.ZodTypeAny, {
214
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
215
+ symbol?: string | undefined;
216
+ name?: string | undefined;
217
+ totalSupply?: string | number | undefined;
218
+ }, {
219
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
220
+ symbol?: string | undefined;
221
+ name?: string | undefined;
222
+ totalSupply?: string | number | undefined;
223
+ }>]>, z.ZodObject<{
224
+ owner: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
225
+ origin: z.ZodString;
226
+ owner: z.ZodString;
227
+ localRouter: z.ZodOptional<z.ZodString>;
228
+ routerOverride: z.ZodOptional<z.ZodString>;
229
+ ismOverride: z.ZodOptional<z.ZodString>;
230
+ }, "strip", z.ZodTypeAny, {
231
+ owner: string;
232
+ origin: string;
233
+ localRouter?: string | undefined;
234
+ routerOverride?: string | undefined;
235
+ ismOverride?: string | undefined;
236
+ }, {
237
+ owner: string;
238
+ origin: string;
239
+ localRouter?: string | undefined;
240
+ routerOverride?: string | undefined;
241
+ ismOverride?: string | undefined;
242
+ }>]>>;
243
+ hook: z.ZodOptional<z.ZodOptional<z.ZodString>>;
244
+ interchainSecurityModule: z.ZodOptional<z.ZodOptional<z.ZodType<import("../index.js").IsmConfig, z.ZodTypeDef, import("../index.js").IsmConfig>>>;
245
+ mailbox: z.ZodOptional<z.ZodString>;
246
+ foreignDeployment: z.ZodOptional<z.ZodOptional<z.ZodString>>;
247
+ }, "strip", z.ZodTypeAny, {
248
+ owner?: string | {
249
+ owner: string;
250
+ origin: string;
251
+ localRouter?: string | undefined;
252
+ routerOverride?: string | undefined;
253
+ ismOverride?: string | undefined;
254
+ } | undefined;
255
+ hook?: string | undefined;
256
+ interchainSecurityModule?: import("../index.js").IsmConfig | undefined;
257
+ mailbox?: string | undefined;
258
+ foreignDeployment?: string | undefined;
259
+ }, {
260
+ owner?: string | {
261
+ owner: string;
262
+ origin: string;
263
+ localRouter?: string | undefined;
264
+ routerOverride?: string | undefined;
265
+ ismOverride?: string | undefined;
266
+ } | undefined;
267
+ hook?: string | undefined;
268
+ interchainSecurityModule?: import("../index.js").IsmConfig | undefined;
269
+ mailbox?: string | undefined;
270
+ foreignDeployment?: string | undefined;
271
+ }>>;
272
+ export declare const WarpRouteDeployConfigSchema: z.ZodRecord<z.ZodString, z.ZodIntersection<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
273
+ decimals: z.ZodOptional<z.ZodNumber>;
274
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
275
+ type: z.ZodEnum<[TokenType.native]>;
276
+ }, "strip", z.ZodTypeAny, {
277
+ type: TokenType.native;
278
+ decimals?: number | undefined;
279
+ scale?: number | undefined;
280
+ }, {
281
+ type: TokenType.native;
282
+ decimals?: number | undefined;
283
+ scale?: number | undefined;
284
+ }>, z.ZodObject<{
285
+ symbol: z.ZodOptional<z.ZodString>;
286
+ name: z.ZodOptional<z.ZodString>;
287
+ decimals: z.ZodOptional<z.ZodNumber>;
288
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
289
+ scale: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
290
+ isNft: z.ZodOptional<z.ZodBoolean>;
291
+ type: z.ZodEnum<[TokenType.collateral, TokenType.collateralUri, TokenType.fastCollateral, TokenType.collateralVault]>;
292
+ token: z.ZodString;
293
+ }, "strip", z.ZodTypeAny, {
294
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
295
+ token: string;
296
+ symbol?: string | undefined;
297
+ name?: string | undefined;
298
+ decimals?: number | undefined;
299
+ totalSupply?: string | number | undefined;
300
+ scale?: number | undefined;
301
+ isNft?: boolean | undefined;
302
+ }, {
303
+ type: TokenType.collateral | TokenType.collateralVault | TokenType.fastCollateral | TokenType.collateralUri;
304
+ token: string;
305
+ symbol?: string | undefined;
306
+ name?: string | undefined;
307
+ decimals?: number | undefined;
308
+ totalSupply?: string | number | undefined;
309
+ scale?: number | undefined;
310
+ isNft?: boolean | undefined;
311
+ }>, z.ZodObject<{
312
+ symbol: z.ZodOptional<z.ZodString>;
313
+ name: z.ZodOptional<z.ZodString>;
314
+ totalSupply: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
315
+ type: z.ZodEnum<[TokenType.synthetic, TokenType.syntheticUri, TokenType.fastSynthetic]>;
316
+ }, "strip", z.ZodTypeAny, {
317
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
318
+ symbol?: string | undefined;
319
+ name?: string | undefined;
320
+ totalSupply?: string | number | undefined;
321
+ }, {
322
+ type: TokenType.synthetic | TokenType.fastSynthetic | TokenType.syntheticUri;
323
+ symbol?: string | undefined;
324
+ name?: string | undefined;
325
+ totalSupply?: string | number | undefined;
326
+ }>]>, z.ZodObject<{
327
+ owner: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
328
+ origin: z.ZodString;
329
+ owner: z.ZodString;
330
+ localRouter: z.ZodOptional<z.ZodString>;
331
+ routerOverride: z.ZodOptional<z.ZodString>;
332
+ ismOverride: z.ZodOptional<z.ZodString>;
333
+ }, "strip", z.ZodTypeAny, {
334
+ owner: string;
335
+ origin: string;
336
+ localRouter?: string | undefined;
337
+ routerOverride?: string | undefined;
338
+ ismOverride?: string | undefined;
339
+ }, {
340
+ owner: string;
341
+ origin: string;
342
+ localRouter?: string | undefined;
343
+ routerOverride?: string | undefined;
344
+ ismOverride?: string | undefined;
345
+ }>]>>;
346
+ hook: z.ZodOptional<z.ZodOptional<z.ZodString>>;
347
+ interchainSecurityModule: z.ZodOptional<z.ZodOptional<z.ZodType<import("../index.js").IsmConfig, z.ZodTypeDef, import("../index.js").IsmConfig>>>;
348
+ mailbox: z.ZodOptional<z.ZodString>;
349
+ foreignDeployment: z.ZodOptional<z.ZodOptional<z.ZodString>>;
350
+ }, "strip", z.ZodTypeAny, {
351
+ owner?: string | {
352
+ owner: string;
353
+ origin: string;
354
+ localRouter?: string | undefined;
355
+ routerOverride?: string | undefined;
356
+ ismOverride?: string | undefined;
357
+ } | undefined;
358
+ hook?: string | undefined;
359
+ interchainSecurityModule?: import("../index.js").IsmConfig | undefined;
360
+ mailbox?: string | undefined;
361
+ foreignDeployment?: string | undefined;
362
+ }, {
363
+ owner?: string | {
364
+ owner: string;
365
+ origin: string;
366
+ localRouter?: string | undefined;
367
+ routerOverride?: string | undefined;
368
+ ismOverride?: string | undefined;
369
+ } | undefined;
370
+ hook?: string | undefined;
371
+ interchainSecurityModule?: import("../index.js").IsmConfig | undefined;
372
+ mailbox?: string | undefined;
373
+ foreignDeployment?: string | undefined;
374
+ }>>>;
375
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/token/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAC0B,CAAC;AAE3D,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAQjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI5B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGnC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGvC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ import { routerConfigSchema } from '../router/schemas.js';
3
+ import { TokenType } from './config.js';
4
+ export const TokenMetadataSchema = z.object({
5
+ name: z.string(),
6
+ symbol: z.string(),
7
+ totalSupply: z.string().or(z.number()),
8
+ });
9
+ export const TokenDecimalsSchema = z.object({
10
+ decimals: z.number(),
11
+ scale: z.number().optional(),
12
+ });
13
+ export const ERC20MetadataSchema = TokenMetadataSchema.merge(TokenDecimalsSchema).partial();
14
+ export const ERC721MetadataSchema = z.object({
15
+ isNft: z.boolean().optional(),
16
+ });
17
+ export const CollateralConfigSchema = ERC721MetadataSchema.merge(ERC20MetadataSchema).merge(z.object({
18
+ type: z.enum([
19
+ TokenType.collateral,
20
+ TokenType.collateralUri,
21
+ TokenType.fastCollateral,
22
+ TokenType.collateralVault,
23
+ ]),
24
+ token: z.string(),
25
+ }));
26
+ export const NativeConfigSchema = TokenDecimalsSchema.partial().merge(z.object({
27
+ type: z.enum([TokenType.native]),
28
+ }));
29
+ export const SyntheticConfigSchema = TokenMetadataSchema.partial().merge(z.object({
30
+ type: z.enum([
31
+ TokenType.synthetic,
32
+ TokenType.syntheticUri,
33
+ TokenType.fastSynthetic,
34
+ ]),
35
+ }));
36
+ /**
37
+ * @remarks
38
+ * The discriminatedUnion is basically a switch statement for zod schemas
39
+ * It uses the 'type' key to pick from the array of schemas to validate
40
+ */
41
+ export const TokenConfigSchema = z.discriminatedUnion('type', [
42
+ NativeConfigSchema,
43
+ CollateralConfigSchema,
44
+ SyntheticConfigSchema,
45
+ ]);
46
+ export const TokenRouterConfigSchema = z.intersection(TokenConfigSchema, routerConfigSchema);
47
+ export const WarpRouteDeployConfigSchema = z.record(z.string(), TokenRouterConfigSchema);
48
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/token/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;AAE3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,KAAK,CAC9D,mBAAmB,CACpB,CAAC,KAAK,CACL,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,SAAS,CAAC,UAAU;QACpB,SAAS,CAAC,aAAa;QACvB,SAAS,CAAC,cAAc;QACxB,SAAS,CAAC,eAAe;KAC1B,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,KAAK,CACnE,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,KAAK,CACtE,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,SAAS,CAAC,SAAS;QACnB,SAAS,CAAC,YAAY;QACtB,SAAS,CAAC,aAAa;KACxB,CAAC;CACH,CAAC,CACH,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,YAAY,CACnD,iBAAiB,EACjB,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,MAAM,EAAE,EACV,uBAAuB,CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.d.ts","sourceRoot":"","sources":["../../src/token/schemas.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ import { expect } from 'chai';
2
+ import { ethers } from 'ethers';
3
+ import { constants } from 'ethers';
4
+ import { TokenType, WarpRouteDeployConfigSchema } from '@hyperlane-xyz/sdk';
5
+ const SOME_ADDRESS = ethers.Wallet.createRandom().address;
6
+ const COLLATERAL_TYPES = [
7
+ TokenType.collateral,
8
+ TokenType.collateralUri,
9
+ TokenType.fastCollateral,
10
+ TokenType.collateralVault,
11
+ ];
12
+ const NON_COLLATERAL_TYPES = [
13
+ TokenType.synthetic,
14
+ TokenType.syntheticUri,
15
+ TokenType.fastSynthetic,
16
+ TokenType.native,
17
+ ];
18
+ describe('WarpRouteDeployConfigSchema refine', () => {
19
+ it('should require type address', () => {
20
+ const config = {
21
+ arbitrum: {
22
+ type: TokenType.collateral,
23
+ token: SOME_ADDRESS,
24
+ },
25
+ };
26
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
27
+ delete config.arbitrum.type;
28
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.false;
29
+ });
30
+ it('should require token address', () => {
31
+ const config = {
32
+ arbitrum: {
33
+ type: TokenType.collateral,
34
+ token: SOME_ADDRESS,
35
+ },
36
+ };
37
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
38
+ delete config.arbitrum.token;
39
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.false;
40
+ });
41
+ it('should allow mailbox to be optional', () => {
42
+ const config = {
43
+ arbitrum: {
44
+ type: TokenType.collateral,
45
+ token: constants.AddressZero,
46
+ mailbox: SOME_ADDRESS,
47
+ },
48
+ };
49
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
50
+ delete config.arbitrum.mailbox;
51
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
52
+ });
53
+ it('should throw if collateral type and token is empty', async () => {
54
+ for (const type of COLLATERAL_TYPES) {
55
+ const config = {
56
+ arbitrum: {
57
+ type,
58
+ mailbox: SOME_ADDRESS,
59
+ name: 'Arby Coin',
60
+ symbol: 'ARBY',
61
+ totalSupply: '10000',
62
+ },
63
+ };
64
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.false;
65
+ // Set to some address
66
+ config.arbitrum.token = SOME_ADDRESS;
67
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
68
+ }
69
+ });
70
+ it('should succeed if non-collateral type and token is empty', async () => {
71
+ for (const type of NON_COLLATERAL_TYPES) {
72
+ const config = {
73
+ arbitrum: {
74
+ type,
75
+ mailbox: SOME_ADDRESS,
76
+ name: 'Arby Coin',
77
+ symbol: 'ARBY',
78
+ totalSupply: '10000',
79
+ },
80
+ };
81
+ expect(WarpRouteDeployConfigSchema.safeParse(config).success).to.be.true;
82
+ }
83
+ });
84
+ });
85
+ //# sourceMappingURL=schemas.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../src/token/schemas.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { TokenRouterConfigSchema, WarpRouteDeployConfigSchema } from './schemas.js';
3
+ export type TokenRouterConfig = z.infer<typeof TokenRouterConfigSchema>;
4
+ export type WarpRouteDeployConfig = z.infer<typeof WarpRouteDeployConfigSchema>;
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/token/types.ts"],"names":[],"mappings":""}
package/dist/types.d.ts CHANGED
@@ -2,7 +2,6 @@ import type { ethers } from 'ethers';
2
2
  import type { ChainId, Domain } from '@hyperlane-xyz/utils';
3
3
  export type ChainName = string;
4
4
  export type ChainMap<Value> = Record<string, Value>;
5
- export type TestChainNames = 'test1' | 'test2' | 'test3';
6
5
  export type ChainNameOrId = ChainName | ChainId | Domain;
7
6
  export type Connection = ethers.providers.Provider | ethers.Signer;
8
7
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC"}
@@ -20,7 +20,7 @@ export declare class MultiGeneric<Value> {
20
20
  chains(): ChainName[];
21
21
  forEach(fn: (n: ChainName, dc: Value) => void): void;
22
22
  map<Output>(fn: (n: ChainName, dc: Value) => Output): ChainMap<Output>;
23
- remoteChains(name: ChainName): ChainName[];
23
+ remoteChains(name: ChainName): Promise<ChainName[]>;
24
24
  knownChain(chain: ChainName): boolean;
25
25
  }
26
26
  //# sourceMappingURL=MultiGeneric.d.ts.map