@hyperlane-xyz/sdk 0.5.5 → 1.0.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 (272) hide show
  1. package/package.json +3 -3
  2. package/dist/HyperlaneApp.d.ts +0 -13
  3. package/dist/HyperlaneApp.d.ts.map +0 -1
  4. package/dist/HyperlaneApp.js +0 -25
  5. package/dist/HyperlaneApp.js.map +0 -1
  6. package/dist/consts/chainConnectionConfigs.d.ts +0 -29
  7. package/dist/consts/chainConnectionConfigs.d.ts.map +0 -1
  8. package/dist/consts/chainConnectionConfigs.js +0 -146
  9. package/dist/consts/chainConnectionConfigs.js.map +0 -1
  10. package/dist/consts/chainMetadata.d.ts +0 -44
  11. package/dist/consts/chainMetadata.d.ts.map +0 -1
  12. package/dist/consts/chainMetadata.js +0 -144
  13. package/dist/consts/chainMetadata.js.map +0 -1
  14. package/dist/consts/chains.d.ts +0 -38
  15. package/dist/consts/chains.d.ts.map +0 -1
  16. package/dist/consts/chains.js +0 -52
  17. package/dist/consts/chains.js.map +0 -1
  18. package/dist/consts/environments/index.d.ts +0 -1493
  19. package/dist/consts/environments/index.d.ts.map +0 -1
  20. package/dist/consts/environments/index.js +0 -28
  21. package/dist/consts/environments/index.js.map +0 -1
  22. package/dist/consts/environments/mainnet.json +0 -682
  23. package/dist/consts/environments/test.json +0 -113
  24. package/dist/consts/environments/testnet2.json +0 -682
  25. package/dist/consts/metamask.d.ts +0 -17
  26. package/dist/consts/metamask.d.ts.map +0 -1
  27. package/dist/consts/metamask.js +0 -50
  28. package/dist/consts/metamask.js.map +0 -1
  29. package/dist/contracts.d.ts +0 -17
  30. package/dist/contracts.d.ts.map +0 -1
  31. package/dist/contracts.js +0 -61
  32. package/dist/contracts.js.map +0 -1
  33. package/dist/core/HyperlaneCore.d.ts +0 -1523
  34. package/dist/core/HyperlaneCore.d.ts.map +0 -1
  35. package/dist/core/HyperlaneCore.js +0 -132
  36. package/dist/core/HyperlaneCore.js.map +0 -1
  37. package/dist/core/HyperlaneCore.test.d.ts +0 -2
  38. package/dist/core/HyperlaneCore.test.d.ts.map +0 -1
  39. package/dist/core/HyperlaneCore.test.js +0 -27
  40. package/dist/core/HyperlaneCore.test.js.map +0 -1
  41. package/dist/core/TestCoreApp.d.ts +0 -27
  42. package/dist/core/TestCoreApp.d.ts.map +0 -1
  43. package/dist/core/TestCoreApp.js +0 -63
  44. package/dist/core/TestCoreApp.js.map +0 -1
  45. package/dist/core/TestCoreDeployer.d.ts +0 -13
  46. package/dist/core/TestCoreDeployer.d.ts.map +0 -1
  47. package/dist/core/TestCoreDeployer.js +0 -85
  48. package/dist/core/TestCoreDeployer.js.map +0 -1
  49. package/dist/core/contracts.d.ts +0 -33
  50. package/dist/core/contracts.d.ts.map +0 -1
  51. package/dist/core/contracts.js +0 -14
  52. package/dist/core/contracts.js.map +0 -1
  53. package/dist/core/events.d.ts +0 -9
  54. package/dist/core/events.d.ts.map +0 -1
  55. package/dist/core/events.js +0 -3
  56. package/dist/core/events.js.map +0 -1
  57. package/dist/core/message.d.ts +0 -161
  58. package/dist/core/message.d.ts.map +0 -1
  59. package/dist/core/message.js +0 -310
  60. package/dist/core/message.js.map +0 -1
  61. package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts +0 -3
  62. package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts.map +0 -1
  63. package/dist/core/testHyperlaneDeploy.hardhat-test.js +0 -66
  64. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +0 -1
  65. package/dist/deploy/HyperlaneAppChecker.d.ts +0 -22
  66. package/dist/deploy/HyperlaneAppChecker.d.ts.map +0 -1
  67. package/dist/deploy/HyperlaneAppChecker.js +0 -84
  68. package/dist/deploy/HyperlaneAppChecker.js.map +0 -1
  69. package/dist/deploy/HyperlaneDeployer.d.ts +0 -45
  70. package/dist/deploy/HyperlaneDeployer.d.ts.map +0 -1
  71. package/dist/deploy/HyperlaneDeployer.js +0 -187
  72. package/dist/deploy/HyperlaneDeployer.js.map +0 -1
  73. package/dist/deploy/core/HyperlaneCoreChecker.d.ts +0 -17
  74. package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +0 -1
  75. package/dist/deploy/core/HyperlaneCoreChecker.js +0 -208
  76. package/dist/deploy/core/HyperlaneCoreChecker.js.map +0 -1
  77. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +0 -33
  78. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +0 -1
  79. package/dist/deploy/core/HyperlaneCoreDeployer.js +0 -135
  80. package/dist/deploy/core/HyperlaneCoreDeployer.js.map +0 -1
  81. package/dist/deploy/core/types.d.ts +0 -64
  82. package/dist/deploy/core/types.d.ts.map +0 -1
  83. package/dist/deploy/core/types.js +0 -23
  84. package/dist/deploy/core/types.js.map +0 -1
  85. package/dist/deploy/middleware/LiquidityLayerApp.d.ts +0 -34
  86. package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +0 -1
  87. package/dist/deploy/middleware/LiquidityLayerApp.js +0 -180
  88. package/dist/deploy/middleware/LiquidityLayerApp.js.map +0 -1
  89. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +0 -44
  90. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +0 -1
  91. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +0 -127
  92. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +0 -1
  93. package/dist/deploy/middleware/TokenBridgeApp.d.ts +0 -26
  94. package/dist/deploy/middleware/TokenBridgeApp.d.ts.map +0 -1
  95. package/dist/deploy/middleware/TokenBridgeApp.js +0 -115
  96. package/dist/deploy/middleware/TokenBridgeApp.js.map +0 -1
  97. package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts +0 -33
  98. package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts.map +0 -1
  99. package/dist/deploy/middleware/TokenBridgeRouterDeployer.js +0 -93
  100. package/dist/deploy/middleware/TokenBridgeRouterDeployer.js.map +0 -1
  101. package/dist/deploy/middleware/deploy.d.ts +0 -21
  102. package/dist/deploy/middleware/deploy.d.ts.map +0 -1
  103. package/dist/deploy/middleware/deploy.js +0 -62
  104. package/dist/deploy/middleware/deploy.js.map +0 -1
  105. package/dist/deploy/proxy.d.ts +0 -17
  106. package/dist/deploy/proxy.d.ts.map +0 -1
  107. package/dist/deploy/proxy.js +0 -35
  108. package/dist/deploy/proxy.js.map +0 -1
  109. package/dist/deploy/router/HyperlaneRouterChecker.d.ts +0 -14
  110. package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +0 -1
  111. package/dist/deploy/router/HyperlaneRouterChecker.js +0 -53
  112. package/dist/deploy/router/HyperlaneRouterChecker.js.map +0 -1
  113. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts +0 -13
  114. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +0 -1
  115. package/dist/deploy/router/HyperlaneRouterDeployer.js +0 -108
  116. package/dist/deploy/router/HyperlaneRouterDeployer.js.map +0 -1
  117. package/dist/deploy/router/types.d.ts +0 -7
  118. package/dist/deploy/router/types.d.ts.map +0 -1
  119. package/dist/deploy/router/types.js +0 -3
  120. package/dist/deploy/router/types.js.map +0 -1
  121. package/dist/deploy/types.d.ts +0 -23
  122. package/dist/deploy/types.d.ts.map +0 -1
  123. package/dist/deploy/types.js +0 -9
  124. package/dist/deploy/types.js.map +0 -1
  125. package/dist/deploy/utils.d.ts +0 -10
  126. package/dist/deploy/utils.d.ts.map +0 -1
  127. package/dist/deploy/utils.js +0 -38
  128. package/dist/deploy/utils.js.map +0 -1
  129. package/dist/deploy/verify/ContractVerifier.d.ts +0 -19
  130. package/dist/deploy/verify/ContractVerifier.d.ts.map +0 -1
  131. package/dist/deploy/verify/ContractVerifier.js +0 -137
  132. package/dist/deploy/verify/ContractVerifier.js.map +0 -1
  133. package/dist/deploy/verify/types.d.ts +0 -14
  134. package/dist/deploy/verify/types.d.ts.map +0 -1
  135. package/dist/deploy/verify/types.js +0 -3
  136. package/dist/deploy/verify/types.js.map +0 -1
  137. package/dist/deploy/verify/utils.d.ts +0 -6
  138. package/dist/deploy/verify/utils.d.ts.map +0 -1
  139. package/dist/deploy/verify/utils.js +0 -25
  140. package/dist/deploy/verify/utils.js.map +0 -1
  141. package/dist/domains.d.ts +0 -4
  142. package/dist/domains.d.ts.map +0 -1
  143. package/dist/domains.js +0 -12
  144. package/dist/domains.js.map +0 -1
  145. package/dist/events.d.ts +0 -25
  146. package/dist/events.d.ts.map +0 -1
  147. package/dist/events.js +0 -161
  148. package/dist/events.js.map +0 -1
  149. package/dist/gas/calculator.d.ts +0 -134
  150. package/dist/gas/calculator.d.ts.map +0 -1
  151. package/dist/gas/calculator.js +0 -235
  152. package/dist/gas/calculator.js.map +0 -1
  153. package/dist/gas/calculator.test.d.ts +0 -2
  154. package/dist/gas/calculator.test.d.ts.map +0 -1
  155. package/dist/gas/calculator.test.js +0 -211
  156. package/dist/gas/calculator.test.js.map +0 -1
  157. package/dist/gas/token-prices.d.ts +0 -34
  158. package/dist/gas/token-prices.d.ts.map +0 -1
  159. package/dist/gas/token-prices.js +0 -105
  160. package/dist/gas/token-prices.js.map +0 -1
  161. package/dist/gas/token-prices.test.d.ts +0 -2
  162. package/dist/gas/token-prices.test.d.ts.map +0 -1
  163. package/dist/gas/token-prices.test.js +0 -46
  164. package/dist/gas/token-prices.test.js.map +0 -1
  165. package/dist/index.d.ts +0 -46
  166. package/dist/index.d.ts.map +0 -1
  167. package/dist/index.js +0 -134
  168. package/dist/index.js.map +0 -1
  169. package/dist/middleware/accounts.hardhat-test.d.ts +0 -2
  170. package/dist/middleware/accounts.hardhat-test.d.ts.map +0 -1
  171. package/dist/middleware/accounts.hardhat-test.js +0 -63
  172. package/dist/middleware/accounts.hardhat-test.js.map +0 -1
  173. package/dist/middleware/accounts.test.d.ts +0 -2
  174. package/dist/middleware/accounts.test.d.ts.map +0 -1
  175. package/dist/middleware/accounts.test.js +0 -61
  176. package/dist/middleware/accounts.test.js.map +0 -1
  177. package/dist/middleware/liquidity-layer.hardhat-test.d.ts +0 -2
  178. package/dist/middleware/liquidity-layer.hardhat-test.d.ts.map +0 -1
  179. package/dist/middleware/liquidity-layer.hardhat-test.js +0 -116
  180. package/dist/middleware/liquidity-layer.hardhat-test.js.map +0 -1
  181. package/dist/middleware/queries.hardhat-test.d.ts +0 -2
  182. package/dist/middleware/queries.hardhat-test.d.ts.map +0 -1
  183. package/dist/middleware/queries.hardhat-test.js +0 -69
  184. package/dist/middleware/queries.hardhat-test.js.map +0 -1
  185. package/dist/middleware/queries.test.d.ts +0 -2
  186. package/dist/middleware/queries.test.d.ts.map +0 -1
  187. package/dist/middleware/queries.test.js +0 -69
  188. package/dist/middleware/queries.test.js.map +0 -1
  189. package/dist/middleware/tokenbridge.hardhat-test.d.ts +0 -2
  190. package/dist/middleware/tokenbridge.hardhat-test.d.ts.map +0 -1
  191. package/dist/middleware/tokenbridge.hardhat-test.js +0 -89
  192. package/dist/middleware/tokenbridge.hardhat-test.js.map +0 -1
  193. package/dist/middleware.d.ts +0 -18
  194. package/dist/middleware.d.ts.map +0 -1
  195. package/dist/middleware.js +0 -16
  196. package/dist/middleware.js.map +0 -1
  197. package/dist/providers/ChainConnection.d.ts +0 -22
  198. package/dist/providers/ChainConnection.d.ts.map +0 -1
  199. package/dist/providers/ChainConnection.js +0 -67
  200. package/dist/providers/ChainConnection.js.map +0 -1
  201. package/dist/providers/MultiProvider.d.ts +0 -56
  202. package/dist/providers/MultiProvider.d.ts.map +0 -1
  203. package/dist/providers/MultiProvider.js +0 -111
  204. package/dist/providers/MultiProvider.js.map +0 -1
  205. package/dist/providers/RetryProvider.d.ts +0 -18
  206. package/dist/providers/RetryProvider.d.ts.map +0 -1
  207. package/dist/providers/RetryProvider.js +0 -49
  208. package/dist/providers/RetryProvider.js.map +0 -1
  209. package/dist/proxy.d.ts +0 -23
  210. package/dist/proxy.d.ts.map +0 -1
  211. package/dist/proxy.js +0 -30
  212. package/dist/proxy.js.map +0 -1
  213. package/dist/router.d.ts +0 -19
  214. package/dist/router.d.ts.map +0 -1
  215. package/dist/router.js +0 -3
  216. package/dist/router.js.map +0 -1
  217. package/dist/test/envSubsetDeployer/app.d.ts +0 -36
  218. package/dist/test/envSubsetDeployer/app.d.ts.map +0 -1
  219. package/dist/test/envSubsetDeployer/app.js +0 -77
  220. package/dist/test/envSubsetDeployer/app.js.map +0 -1
  221. package/dist/test/envSubsetDeployer/check-single-chain.d.ts +0 -2
  222. package/dist/test/envSubsetDeployer/check-single-chain.d.ts.map +0 -1
  223. package/dist/test/envSubsetDeployer/check-single-chain.js +0 -49
  224. package/dist/test/envSubsetDeployer/check-single-chain.js.map +0 -1
  225. package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts +0 -2
  226. package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts.map +0 -1
  227. package/dist/test/envSubsetDeployer/deploy-single-chain.js +0 -42
  228. package/dist/test/envSubsetDeployer/deploy-single-chain.js.map +0 -1
  229. package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts +0 -2
  230. package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts.map +0 -1
  231. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js +0 -83
  232. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js.map +0 -1
  233. package/dist/test/envSubsetDeployer/utils.d.ts +0 -7
  234. package/dist/test/envSubsetDeployer/utils.d.ts.map +0 -1
  235. package/dist/test/envSubsetDeployer/utils.js +0 -25
  236. package/dist/test/envSubsetDeployer/utils.js.map +0 -1
  237. package/dist/test/testUtils.d.ts +0 -31
  238. package/dist/test/testUtils.d.ts.map +0 -1
  239. package/dist/test/testUtils.js +0 -106
  240. package/dist/test/testUtils.js.map +0 -1
  241. package/dist/tokenBridge.d.ts +0 -10
  242. package/dist/tokenBridge.d.ts.map +0 -1
  243. package/dist/tokenBridge.js +0 -9
  244. package/dist/tokenBridge.js.map +0 -1
  245. package/dist/types.d.ts +0 -21
  246. package/dist/types.d.ts.map +0 -1
  247. package/dist/types.js +0 -3
  248. package/dist/types.js.map +0 -1
  249. package/dist/utils/MultiGeneric.d.ts +0 -27
  250. package/dist/utils/MultiGeneric.d.ts.map +0 -1
  251. package/dist/utils/MultiGeneric.js +0 -70
  252. package/dist/utils/MultiGeneric.js.map +0 -1
  253. package/dist/utils/ids.d.ts +0 -20
  254. package/dist/utils/ids.d.ts.map +0 -1
  255. package/dist/utils/ids.js +0 -47
  256. package/dist/utils/ids.js.map +0 -1
  257. package/dist/utils/number.d.ts +0 -32
  258. package/dist/utils/number.d.ts.map +0 -1
  259. package/dist/utils/number.js +0 -59
  260. package/dist/utils/number.js.map +0 -1
  261. package/dist/utils/objects.d.ts +0 -8
  262. package/dist/utils/objects.d.ts.map +0 -1
  263. package/dist/utils/objects.js +0 -33
  264. package/dist/utils/objects.js.map +0 -1
  265. package/dist/utils/time.d.ts +0 -8
  266. package/dist/utils/time.d.ts.map +0 -1
  267. package/dist/utils/time.js +0 -15
  268. package/dist/utils/time.js.map +0 -1
  269. package/dist/utils/utils.test.d.ts +0 -2
  270. package/dist/utils/utils.test.d.ts.map +0 -1
  271. package/dist/utils/utils.test.js +0 -41
  272. package/dist/utils/utils.test.js.map +0 -1
@@ -1,211 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const chai_1 = require("chai");
16
- const ethers_1 = require("ethers");
17
- const sinon_1 = __importDefault(require("sinon"));
18
- const chains_1 = require("../consts/chains");
19
- const HyperlaneCore_1 = require("../core/HyperlaneCore");
20
- const MultiProvider_1 = require("../providers/MultiProvider");
21
- const testUtils_1 = require("../test/testUtils");
22
- const calculator_1 = require("./calculator");
23
- const HANDLE_GAS = 100000;
24
- const SUGGESTED_GAS_PRICE = 10;
25
- const INBOX_PROCESS_OVERHEAD_GAS = 100000;
26
- // Exposes protected methods so they can be stubbed.
27
- class TestInterchainGasCalculator extends calculator_1.InterchainGasCalculator {
28
- estimateGasForProcess(origin, destination) {
29
- return super.estimateGasForProcess(origin, destination);
30
- }
31
- estimateGasForHandle(message) {
32
- return super.estimateGasForHandle(message);
33
- }
34
- convertBetweenTokens(fromChain, toChain, fromAmount) {
35
- return super.convertBetweenTokens(fromChain, toChain, fromAmount);
36
- }
37
- tokenDecimals(chain) {
38
- return super.tokenDecimals(chain);
39
- }
40
- getGasPrice(chain) {
41
- return super.getGasPrice(chain);
42
- }
43
- }
44
- describe('InterchainGasCalculator', () => {
45
- const provider = new testUtils_1.MockProvider();
46
- // TODO: fix types to not require the <any> here.
47
- // This is because InterchainGasCalculator isn't very strongly typed,
48
- // which is because ParsedMessage isn't very strongly typed. This results
49
- // in InterchainGasCalculator expecting a multiprovider with providers for
50
- // every chain.
51
- const multiProvider = new MultiProvider_1.MultiProvider({
52
- test1: { provider },
53
- test2: { provider },
54
- test3: { provider },
55
- });
56
- const core = HyperlaneCore_1.HyperlaneCore.fromEnvironment('test', multiProvider);
57
- const origin = chains_1.Chains.test1;
58
- const destination = chains_1.Chains.test2;
59
- let tokenPriceGetter;
60
- let calculator;
61
- beforeEach(() => {
62
- tokenPriceGetter = new testUtils_1.MockTokenPriceGetter();
63
- tokenPriceGetter.setTokenPrice(origin, 9.0909);
64
- tokenPriceGetter.setTokenPrice(destination, 5.5);
65
- calculator = new TestInterchainGasCalculator(multiProvider, core, {
66
- tokenPriceGetter,
67
- // A multiplier of 1 makes testing easier to reason about
68
- paymentEstimateMultiplier: '1',
69
- });
70
- });
71
- afterEach(() => {
72
- sinon_1.default.restore();
73
- provider.clearMethodResolveValues();
74
- });
75
- describe('estimatePaymentForGas', () => {
76
- it('estimates origin token payment from a specified destination gas amount', () => __awaiter(void 0, void 0, void 0, function* () {
77
- // Set destination gas price to 10 wei
78
- provider.setMethodResolveValue('getGasPrice', ethers_1.BigNumber.from(SUGGESTED_GAS_PRICE));
79
- const estimatedPayment = yield calculator.estimatePaymentForGas(origin, destination, ethers_1.BigNumber.from(HANDLE_GAS));
80
- // 100k gas * 10 gas price * ($5.5 per destination token / $9.0909 per origin token)
81
- (0, chai_1.expect)(estimatedPayment.toNumber()).to.equal(605000);
82
- }));
83
- });
84
- describe('estimatePaymentForHandleGas', () => {
85
- it('estimates origin token payment from a specified destination handle gas amount', () => __awaiter(void 0, void 0, void 0, function* () {
86
- // Set destination gas price to 10 wei
87
- provider.setMethodResolveValue('getGasPrice', ethers_1.BigNumber.from(SUGGESTED_GAS_PRICE));
88
- // Stub the inbox process overhead gas
89
- sinon_1.default
90
- .stub(calculator, 'estimateGasForProcess')
91
- .returns(Promise.resolve(ethers_1.BigNumber.from(INBOX_PROCESS_OVERHEAD_GAS)));
92
- const estimatedPayment = yield calculator.estimatePaymentForHandleGas(origin, destination, ethers_1.BigNumber.from(HANDLE_GAS));
93
- // (100_000 dest handler gas + 100_000 process overhead gas)
94
- // * 10 gas price * ($5.5 per destination token / $9.0909 per origin token)
95
- (0, chai_1.expect)(estimatedPayment.toNumber()).to.equal(1210000);
96
- }));
97
- });
98
- /*
99
- describe('estimatePaymentForMessage', () => {
100
- it('estimates origin token payment from a specified message', async () => {
101
- // Set destination gas price to 10 wei
102
- provider.setMethodResolveValue(
103
- 'getGasPrice',
104
- BigNumber.from(SUGGESTED_GAS_PRICE),
105
- );
106
- // Set the estimated handle gas
107
- sinon
108
- .stub(calculator, 'estimateGasForHandle')
109
- .returns(Promise.resolve(BigNumber.from(HANDLE_GAS)));
110
- // Stub the inbox process overhead gas
111
- sinon
112
- .stub(calculator, 'estimateGasForProcess')
113
- .returns(Promise.resolve(BigNumber.from(INBOX_PROCESS_OVERHEAD_GAS)));
114
-
115
- const zeroAddressBytes32 = utils.addressToBytes32(
116
- ethers.constants.AddressZero,
117
- );
118
- const message: ParsedMessage<TestChainNames, Chains.test2> = {
119
- origin: origin,
120
- sender: zeroAddressBytes32,
121
- destination: destination,
122
- recipient: zeroAddressBytes32,
123
- body: '0x12345678',
124
- };
125
-
126
- const estimatedPayment = await calculator.estimatePaymentForMessage(
127
- message,
128
- );
129
-
130
- // (100_000 dest handler gas + 100_000 process overhead gas)
131
- // * 10 gas price * ($5.5 per destination token / $9.0909 per origin token)
132
- expect(estimatedPayment.toNumber()).to.equal(1_210_000);
133
- });
134
- });
135
- */
136
- describe('convertBetweenTokens', () => {
137
- const destinationWei = ethers_1.BigNumber.from('1000');
138
- it('converts using the USD value of origin and destination native tokens', () => __awaiter(void 0, void 0, void 0, function* () {
139
- const originWei = yield calculator.convertBetweenTokens(destination, origin, destinationWei);
140
- // 1000 * (5.5 / 9.0909)
141
- (0, chai_1.expect)(originWei.toNumber()).to.equal(605);
142
- }));
143
- it('considers when the origin token decimals > the destination token decimals', () => __awaiter(void 0, void 0, void 0, function* () {
144
- calculator.tokenDecimals = (chain) => {
145
- if (chain === origin) {
146
- return 20;
147
- }
148
- return 18;
149
- };
150
- const originWei = yield calculator.convertBetweenTokens(destination, origin, destinationWei);
151
- // 1000 * (5.5 / 9.0909) * 100
152
- (0, chai_1.expect)(originWei.toNumber()).to.equal(60500);
153
- }));
154
- it('considers when the origin token decimals < the destination token decimals', () => __awaiter(void 0, void 0, void 0, function* () {
155
- sinon_1.default
156
- .stub(calculator, 'tokenDecimals')
157
- .callsFake((chain) => {
158
- if (chain === origin) {
159
- return 16;
160
- }
161
- return 18;
162
- });
163
- const originWei = yield calculator.convertBetweenTokens(destination, origin, destinationWei);
164
- // 1000 * (5.5 / 9.0909) / 100
165
- (0, chai_1.expect)(originWei.toNumber()).to.equal(6);
166
- }));
167
- });
168
- describe('getGasPrice', () => {
169
- it('gets the gas price from the provider', () => __awaiter(void 0, void 0, void 0, function* () {
170
- provider.setMethodResolveValue('getGasPrice', ethers_1.BigNumber.from(SUGGESTED_GAS_PRICE));
171
- (0, chai_1.expect)((yield calculator.getGasPrice(destination)).toNumber()).to.equal(SUGGESTED_GAS_PRICE);
172
- }));
173
- });
174
- describe('estimateGasForProcess', () => {
175
- let threshold;
176
- // Mock the return value of InboxValidatorManager.threshold
177
- // to return `threshold`. Because the mocking involves a closure,
178
- // changing `threshold` will change the return value of InboxValidatorManager.threshold.
179
- before(() => {
180
- const getContractsStub = sinon_1.default.stub(core, 'getContracts');
181
- let thresholdStub;
182
- getContractsStub.callsFake((chain) => {
183
- // Get the "real" return value of getContracts.
184
- const contracts = getContractsStub.wrappedMethod.bind(core)(chain);
185
- // Ethers contracts are frozen using Object.freeze, so we make a copy
186
- // of the object so we can stub `threshold`.
187
- const validatorManager = Object.assign({},
188
- // @ts-ignore
189
- contracts.inboxes[origin].inboxValidatorManager);
190
- // Because we are stubbing vaidatorManager.threshold when core.getContracts gets called,
191
- // we must ensure we don't try to stub more than once or sinon will complain.
192
- if (!thresholdStub) {
193
- thresholdStub = sinon_1.default
194
- .stub(validatorManager, 'threshold')
195
- .callsFake(() => Promise.resolve(ethers_1.BigNumber.from(threshold)));
196
- // @ts-ignore
197
- contracts.inboxes[origin].inboxValidatorManager = validatorManager;
198
- }
199
- return contracts;
200
- });
201
- });
202
- it('scales the gas cost with the quorum threshold', () => __awaiter(void 0, void 0, void 0, function* () {
203
- threshold = 2;
204
- const gasWithThresholdLow = yield calculator.estimateGasForProcess(origin, destination);
205
- threshold = 3;
206
- const gasWithThresholdHigh = yield calculator.estimateGasForProcess(origin, destination);
207
- (0, chai_1.expect)(gasWithThresholdHigh.gt(gasWithThresholdLow)).to.be.true;
208
- }));
209
- });
210
- });
211
- //# sourceMappingURL=calculator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../src/gas/calculator.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,mCAAmC;AACnC,kDAA0B;AAE1B,6CAA0C;AAC1C,yDAAsD;AAEtD,8DAA2D;AAC3D,iDAAuE;AAGvE,6CAAsE;AAEtE,MAAM,UAAU,GAAG,MAAO,CAAC;AAC3B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,0BAA0B,GAAG,MAAO,CAAC;AAE3C,oDAAoD;AACpD,MAAM,2BAEJ,SAAQ,oCAA8B;IACtC,qBAAqB,CACnB,MAAmC,EACnC,WAAwB;QAExB,OAAO,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IACD,oBAAoB,CAClB,OAAyC;QAEzC,OAAO,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,oBAAoB,CAClB,SAAgB,EAChB,OAAc,EACd,UAAqB;QAErB,OAAO,KAAK,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IACD,aAAa,CAAC,KAAY;QACxB,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,WAAW,CAAC,KAAY;QACtB,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,MAAM,QAAQ,GAAG,IAAI,wBAAY,EAAE,CAAC;IACpC,iDAAiD;IACjD,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,eAAe;IACf,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC;QACtC,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,KAAK,EAAE,EAAE,QAAQ,EAAE;QACnB,KAAK,EAAE,EAAE,QAAQ,EAAE;KACpB,CAAC,CAAC;IACH,MAAM,IAAI,GAAkC,6BAAa,CAAC,eAAe,CACvE,MAAM,EACN,aAAa,CACd,CAAC;IACF,MAAM,MAAM,GAAG,eAAM,CAAC,KAAK,CAAC;IAC5B,MAAM,WAAW,GAAG,eAAM,CAAC,KAAK,CAAC;IAEjC,IAAI,gBAAsC,CAAC;IAC3C,IAAI,UAAuD,CAAC;IAE5D,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,IAAI,gCAAoB,EAAE,CAAC;QAC9C,gBAAgB,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,gBAAgB,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACjD,UAAU,GAAG,IAAI,2BAA2B,CAAC,aAAa,EAAE,IAAI,EAAE;YAChE,gBAAgB;YAChB,yDAAyD;YACzD,yBAAyB,EAAE,GAAG;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,eAAK,CAAC,OAAO,EAAE,CAAC;QAChB,QAAQ,CAAC,wBAAwB,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,wEAAwE,EAAE,GAAS,EAAE;YACtF,sCAAsC;YACtC,QAAQ,CAAC,qBAAqB,CAC5B,aAAa,EACb,kBAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACpC,CAAC;YAEF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAC7D,MAAM,EACN,WAAW,EACX,kBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC;YAEF,oFAAoF;YACpF,IAAA,aAAM,EAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;QACxD,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,+EAA+E,EAAE,GAAS,EAAE;YAC7F,sCAAsC;YACtC,QAAQ,CAAC,qBAAqB,CAC5B,aAAa,EACb,kBAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACpC,CAAC;YAEF,sCAAsC;YACtC,eAAK;iBACF,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC;iBACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAExE,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,2BAA2B,CACnE,MAAM,EACN,WAAW,EACX,kBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC;YAEF,4DAA4D;YAC5D,2EAA2E;YAC3E,IAAA,aAAM,EAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAS,CAAC,CAAC;QAC1D,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCE;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,cAAc,GAAG,kBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9C,EAAE,CAAC,sEAAsE,EAAE,GAAS,EAAE;YACpF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,oBAAoB,CACrD,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;YAEF,wBAAwB;YACxB,IAAA,aAAM,EAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAS,EAAE;YACzF,UAAU,CAAC,aAAa,GAAG,CAAC,KAAqB,EAAE,EAAE;gBACnD,IAAI,KAAK,KAAK,MAAM,EAAE;oBACpB,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,oBAAoB,CACrD,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;YAEF,8BAA8B;YAC9B,IAAA,aAAM,EAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAS,EAAE;YACzF,eAAK;iBACF,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;iBACjC,SAAS,CAAC,CAAC,KAAqB,EAAE,EAAE;gBACnC,IAAI,KAAK,KAAK,MAAM,EAAE;oBACpB,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEL,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,oBAAoB,CACrD,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;YAEF,8BAA8B;YAC9B,IAAA,aAAM,EAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,sCAAsC,EAAE,GAAS,EAAE;YACpD,QAAQ,CAAC,qBAAqB,CAC5B,aAAa,EACb,kBAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACpC,CAAC;YAEF,IAAA,aAAM,EAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CACrE,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,IAAI,SAAiB,CAAC;QACtB,2DAA2D;QAC3D,iEAAiE;QACjE,wFAAwF;QACxF,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,gBAAgB,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC1D,IAAI,aAA0C,CAAC;YAC/C,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnC,+CAA+C;gBAC/C,MAAM,SAAS,GACb,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAEnD,qEAAqE;gBACrE,4CAA4C;gBAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACpC,EAAE;gBACF,aAAa;gBACb,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAChD,CAAC;gBAEF,wFAAwF;gBACxF,6EAA6E;gBAC7E,IAAI,CAAC,aAAa,EAAE;oBAClB,aAAa,GAAG,eAAK;yBAClB,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC;yBACnC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAE/D,aAAa;oBACb,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;iBACpE;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;YAC7D,SAAS,GAAG,CAAC,CAAC;YACd,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAChE,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,SAAS,GAAG,CAAC,CAAC;YACd,MAAM,oBAAoB,GAAG,MAAM,UAAU,CAAC,qBAAqB,CACjE,MAAM,EACN,WAAW,CACZ,CAAC;YAEF,IAAA,aAAM,EAAC,oBAAoB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClE,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,34 +0,0 @@
1
- import CoinGecko from 'coingecko-api';
2
- import { ChainName } from '../types';
3
- export interface TokenPriceGetter {
4
- getTokenPrice(chain: ChainName): Promise<number>;
5
- getTokenExchangeRate(base: ChainName, quote: ChainName): Promise<number>;
6
- }
7
- export declare type CoinGeckoInterface = Pick<CoinGecko, 'simple'>;
8
- export declare type CoinGeckoSimpleInterface = CoinGecko['simple'];
9
- export declare type CoinGeckoSimplePriceParams = Parameters<CoinGeckoSimpleInterface['price']>[0];
10
- export declare type CoinGeckoResponse = ReturnType<CoinGeckoSimpleInterface['price']>;
11
- declare type TokenPriceCacheEntry = {
12
- price: number;
13
- timestamp: Date;
14
- };
15
- declare class TokenPriceCache {
16
- protected cache: Map<ChainName, TokenPriceCacheEntry>;
17
- protected freshSeconds: number;
18
- protected evictionSeconds: number;
19
- constructor(freshSeconds?: number, evictionSeconds?: number);
20
- put(chain: ChainName, price: number): void;
21
- isFresh(chain: ChainName): boolean;
22
- fetch(chain: ChainName): number;
23
- }
24
- export declare class CoinGeckoTokenPriceGetter implements TokenPriceGetter {
25
- protected coinGecko: CoinGeckoInterface;
26
- protected cache: TokenPriceCache;
27
- constructor(coinGecko: CoinGeckoInterface, expirySeconds?: number);
28
- getTokenPrice(chain: ChainName): Promise<number>;
29
- getTokenExchangeRate(base: ChainName, quote: ChainName): Promise<number>;
30
- private getTokenPrices;
31
- private queryTokenPrices;
32
- }
33
- export {};
34
- //# sourceMappingURL=token-prices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-prices.d.ts","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAMtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED,oBAAY,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3D,oBAAY,wBAAwB,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC3D,oBAAY,0BAA0B,GAAG,UAAU,CACjD,wBAAwB,CAAC,OAAO,CAAC,CAClC,CAAC,CAAC,CAAC,CAAC;AACL,oBAAY,iBAAiB,GAAG,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9E,aAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,cAAM,eAAe;IACnB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACtD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;gBAEtB,YAAY,SAAK,EAAE,eAAe,SAAc;IAM5D,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAWlC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAchC;AAED,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,SAAS,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,MAAM;IAK3D,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD,oBAAoB,CACxB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC;YAKJ,cAAc;YA0Bd,gBAAgB;CAe/B"}
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CoinGeckoTokenPriceGetter = void 0;
13
- const utils_1 = require("@hyperlane-xyz/utils");
14
- const chainMetadata_1 = require("../consts/chainMetadata");
15
- const chains_1 = require("../consts/chains");
16
- class TokenPriceCache {
17
- constructor(freshSeconds = 60, evictionSeconds = 3 * 60 * 60) {
18
- this.cache = new Map();
19
- this.freshSeconds = freshSeconds;
20
- this.evictionSeconds = evictionSeconds;
21
- }
22
- put(chain, price) {
23
- const now = new Date();
24
- this.cache.set(chain, { timestamp: now, price });
25
- }
26
- isFresh(chain) {
27
- const entry = this.cache.get(chain);
28
- if (!entry)
29
- return false;
30
- const expiryTime = new Date(entry.timestamp.getTime() + 1000 * this.freshSeconds);
31
- const now = new Date();
32
- return now < expiryTime;
33
- }
34
- fetch(chain) {
35
- const entry = this.cache.get(chain);
36
- if (!entry) {
37
- throw new Error(`no entry found for ${chain} in token price cache`);
38
- }
39
- const evictionTime = new Date(entry.timestamp.getTime() + 1000 * this.evictionSeconds);
40
- const now = new Date();
41
- if (now > evictionTime) {
42
- throw new Error(`evicted entry found for ${chain} in token price cache`);
43
- }
44
- return entry.price;
45
- }
46
- }
47
- class CoinGeckoTokenPriceGetter {
48
- constructor(coinGecko, expirySeconds) {
49
- this.coinGecko = coinGecko;
50
- this.cache = new TokenPriceCache(expirySeconds);
51
- }
52
- getTokenPrice(chain) {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- const [price] = yield this.getTokenPrices([chain]);
55
- return price;
56
- });
57
- }
58
- getTokenExchangeRate(base, quote) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const [basePrice, quotePrice] = yield this.getTokenPrices([base, quote]);
61
- return basePrice / quotePrice;
62
- });
63
- }
64
- getTokenPrices(chains) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- const isMainnet = chains.map((c) => chains_1.Mainnets.includes(c));
67
- const allMainnets = isMainnet.every((v) => v === true);
68
- const allTestnets = isMainnet.every((v) => v === false);
69
- if (allTestnets) {
70
- // Testnet tokens are all artificially priced at 1.0 USD.
71
- return chains.map(() => 1);
72
- }
73
- if (!allMainnets) {
74
- throw new Error('Cannot mix testnets and mainnets when fetching token prices');
75
- }
76
- const toQuery = chains.filter((c) => !this.cache.isFresh(c));
77
- if (toQuery.length > 0) {
78
- try {
79
- yield this.queryTokenPrices(toQuery);
80
- }
81
- catch (e) {
82
- (0, utils_1.warn)('Failed to query token prices', e);
83
- }
84
- }
85
- return chains.map((chain) => this.cache.fetch(chain));
86
- });
87
- }
88
- queryTokenPrices(chains) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- const currency = 'usd';
91
- // The CoinGecko API expects, in some cases, IDs that do not match
92
- // ChainNames.
93
- const ids = chains.map((chain) => chainMetadata_1.chainMetadata[chain].gasCurrencyCoinGeckoId || chain);
94
- const response = yield this.coinGecko.simple.price({
95
- ids,
96
- vs_currencies: [currency],
97
- });
98
- const prices = ids.map((id) => response.data[id][currency]);
99
- // Update the cache with the newly fetched prices
100
- chains.map((chain, i) => this.cache.put(chain, prices[i]));
101
- });
102
- }
103
- }
104
- exports.CoinGeckoTokenPriceGetter = CoinGeckoTokenPriceGetter;
105
- //# sourceMappingURL=token-prices.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-prices.js","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=token-prices.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-prices.test.d.ts","sourceRoot":"","sources":["../../src/gas/token-prices.test.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const chai_1 = require("chai");
13
- const chains_1 = require("../consts/chains");
14
- const testUtils_1 = require("../test/testUtils");
15
- const token_prices_1 = require("./token-prices");
16
- describe('TokenPriceGetter', () => {
17
- let tokenPriceGetter;
18
- let mockCoinGecko;
19
- const chainA = chains_1.Chains.ethereum, chainB = chains_1.Chains.polygon, priceA = 10, priceB = 5.5;
20
- before(() => __awaiter(void 0, void 0, void 0, function* () {
21
- mockCoinGecko = new testUtils_1.MockCoinGecko();
22
- // Origin token
23
- mockCoinGecko.setTokenPrice(chainA, priceA);
24
- // Destination token
25
- mockCoinGecko.setTokenPrice(chainB, priceB);
26
- tokenPriceGetter = new token_prices_1.CoinGeckoTokenPriceGetter(mockCoinGecko);
27
- }));
28
- describe('getTokenPrice', () => {
29
- it('returns a token price', () => __awaiter(void 0, void 0, void 0, function* () {
30
- (0, chai_1.expect)(yield tokenPriceGetter.getTokenPrice(chainA)).to.equal(priceA);
31
- }));
32
- it('caches a token price', () => __awaiter(void 0, void 0, void 0, function* () {
33
- mockCoinGecko.setFail(chainA, true);
34
- (0, chai_1.expect)(yield tokenPriceGetter.getTokenPrice(chainA)).to.equal(priceA);
35
- mockCoinGecko.setFail(chainA, false);
36
- }));
37
- });
38
- describe('getTokenExchangeRate', () => {
39
- it('returns a value consistent with getTokenPrice()', () => __awaiter(void 0, void 0, void 0, function* () {
40
- const exchangeRate = yield tokenPriceGetter.getTokenExchangeRate(chainA, chainB);
41
- const expectedExchangeRate = priceA / priceB;
42
- (0, chai_1.expect)(exchangeRate).to.equal(expectedExchangeRate);
43
- }));
44
- });
45
- });
46
- //# sourceMappingURL=token-prices.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-prices.test.js","sourceRoot":"","sources":["../../src/gas/token-prices.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAE9B,6CAA0C;AAC1C,iDAAkD;AAElD,iDAA2D;AAE3D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,gBAA2C,CAAC;IAChD,IAAI,aAA4B,CAAC;IACjC,MAAM,MAAM,GAAG,eAAM,CAAC,QAAQ,EAC5B,MAAM,GAAG,eAAM,CAAC,OAAO,EACvB,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,GAAG,CAAC;IACf,MAAM,CAAC,GAAS,EAAE;QAChB,aAAa,GAAG,IAAI,yBAAa,EAAE,CAAC;QACpC,eAAe;QACf,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,oBAAoB;QACpB,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,gBAAgB,GAAG,IAAI,wCAAyB,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;YACrC,IAAA,aAAM,EAAC,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAS,EAAE;YACpC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACpC,IAAA,aAAM,EAAC,MAAM,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;YAC/D,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,oBAAoB,CAC9D,MAAM,EACN,MAAM,CACP,CAAC;YACF,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;YAC7C,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACtD,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,46 +0,0 @@
1
- export { AllChains, Chains, Mainnets, AllDeprecatedChains, } from './consts/chains';
2
- export { chainMetadata } from './consts/chainMetadata';
3
- export { chainConnectionConfigs, testChainConnectionConfigs, } from './consts/chainConnectionConfigs';
4
- export { environments as coreEnvironments, hyperlaneCoreAddresses, } from './consts/environments';
5
- export { ChainMap, ChainName, CompleteChainMap, Connection, NameOrDomain, RemoteChainMap, Remotes, TestChainNames, IChainConnection, } from './types';
6
- export { ChainNameToDomainId, DomainIdToChainName } from './domains';
7
- export { HyperlaneApp } from './HyperlaneApp';
8
- export { HyperlaneAddresses, HyperlaneContracts, HyperlaneFactories, buildContracts, connectContracts, serializeContracts, } from './contracts';
9
- export { Annotated, getEvents, queryAnnotatedEvents, TSContract, } from './events';
10
- export { BeaconProxyAddresses, ProxiedContract, ProxyAddresses } from './proxy';
11
- export { Router, RouterContracts, RouterFactories } from './router';
12
- export { ChainConnection } from './providers/ChainConnection';
13
- export { MultiProvider } from './providers/MultiProvider';
14
- export { RetryJsonRpcProvider, RetryProvider } from './providers/RetryProvider';
15
- export { HyperlaneCore, CoreContractsMap, DispatchedMessage, } from './core/HyperlaneCore';
16
- export { CoreContracts, coreFactories, InboxContracts, OutboxContracts, } from './core/contracts';
17
- export { HyperlaneLifecyleEvent, AnnotatedDispatch, AnnotatedLifecycleEvent, } from './core/events';
18
- export { HyperlaneMessage, HyperlaneStatus, MessageStatus, resolveDomain, resolveId, resolveChains, } from './core/message';
19
- export { TestCoreApp, TestCoreContracts, TestInboxContracts, TestOutboxContracts, } from './core/TestCoreApp';
20
- export { TestCoreDeployer } from './core/TestCoreDeployer';
21
- export { InterchainGasCalculator, ParsedMessage } from './gas/calculator';
22
- export { CoinGeckoTokenPriceGetter, TokenPriceGetter, } from './gas/token-prices';
23
- export { HyperlaneAppChecker } from './deploy/HyperlaneAppChecker';
24
- export { CheckerViolation, EnvironmentConfig, OwnerViolation, ViolationType, } from './deploy/types';
25
- export { HyperlaneCoreDeployer } from './deploy/core/HyperlaneCoreDeployer';
26
- export { HyperlaneCoreChecker } from './deploy/core/HyperlaneCoreChecker';
27
- export { CoreConfig, CoreViolationType, ValidatorManagerConfig, ValidatorManagerViolation, EnrolledInboxesViolation, ConnectionManagerViolation, ConnectionManagerViolationType, EnrolledValidatorsViolation, ValidatorManagerViolationType, } from './deploy/core/types';
28
- export { HyperlaneDeployer } from './deploy/HyperlaneDeployer';
29
- export { UpgradeBeaconViolation } from './deploy/proxy';
30
- export { HyperlaneRouterDeployer } from './deploy/router/HyperlaneRouterDeployer';
31
- export { HyperlaneRouterChecker } from './deploy/router/HyperlaneRouterChecker';
32
- export { InterchainAccountDeployer, InterchainQueryDeployer, } from './deploy/middleware/deploy';
33
- export { LiquidityLayerDeployer, BridgeAdapterType, BridgeAdapterConfig, CircleBridgeAdapterConfig, PortalAdapterConfig, } from './deploy/middleware/LiquidityLayerRouterDeployer';
34
- export { LiquidityLayerApp } from './deploy/middleware/LiquidityLayerApp';
35
- export { LiquidityLayerContracts, interchainAccountFactories, interchainQueryFactories, liquidityLayerFactories, } from './middleware';
36
- export { RouterConfig } from './deploy/router/types';
37
- export { getTestMultiProvider, getChainToOwnerMap } from './deploy/utils';
38
- export { ContractVerifier } from './deploy/verify/ContractVerifier';
39
- export { ContractVerificationInput, VerificationInput, CompilerOptions, } from './deploy/verify/types';
40
- export * as verificationUtils from './deploy/verify/utils';
41
- export { canonizeId, evmId } from './utils/ids';
42
- export { MultiGeneric } from './utils/MultiGeneric';
43
- export { bigToFixed, convertDecimalValue, fixedToBig, mulBigAndFixed, } from './utils/number';
44
- export { objMap, objMapEntries, promiseObjAll, pick } from './utils/objects';
45
- export { delay } from './utils/time';
46
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}