@hyperlane-xyz/sdk 1.1.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HyperlaneApp.d.ts +7 -8
- package/dist/HyperlaneApp.d.ts.map +1 -1
- package/dist/HyperlaneApp.js +1 -4
- package/dist/HyperlaneApp.js.map +1 -1
- package/dist/consts/chainMetadata.d.ts +54 -25
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +59 -62
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +5 -5
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +5 -1
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +2 -2
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +10 -387
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +6 -11
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCore.test.js +2 -3
- package/dist/core/HyperlaneCore.test.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +5 -5
- package/dist/core/TestCoreApp.d.ts.map +1 -1
- package/dist/core/TestCoreApp.js +2 -4
- package/dist/core/TestCoreApp.js.map +1 -1
- package/dist/core/TestCoreDeployer.d.ts +6 -6
- package/dist/core/TestCoreDeployer.d.ts.map +1 -1
- package/dist/core/TestCoreDeployer.js +1 -1
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +8 -12
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +8 -8
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +5 -5
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +15 -15
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +28 -35
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts +9 -9
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/deploy/core/HyperlaneCoreChecker.js +11 -11
- package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +11 -11
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/deploy/core/HyperlaneCoreDeployer.js +12 -20
- package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerApp.d.ts +17 -17
- package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerApp.js +18 -23
- package/dist/deploy/middleware/LiquidityLayerApp.js.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +7 -7
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +6 -9
- package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/deploy/middleware/deploy.d.ts +9 -9
- package/dist/deploy/middleware/deploy.d.ts.map +1 -1
- package/dist/deploy/middleware/deploy.js.map +1 -1
- package/dist/deploy/router/GasRouterDeployer.d.ts +4 -4
- package/dist/deploy/router/GasRouterDeployer.d.ts.map +1 -1
- package/dist/deploy/router/GasRouterDeployer.js +3 -6
- package/dist/deploy/router/GasRouterDeployer.js.map +1 -1
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts +6 -6
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/deploy/router/HyperlaneRouterChecker.js +2 -2
- package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/deploy/router/HyperlaneRouterDeployer.d.ts +7 -7
- package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/deploy/router/HyperlaneRouterDeployer.js +18 -21
- package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/deploy/types.d.ts +3 -4
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/utils.d.ts +2 -6
- package/dist/deploy/utils.d.ts.map +1 -1
- package/dist/deploy/utils.js +1 -27
- package/dist/deploy/utils.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts +7 -7
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +2 -5
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/events.d.ts +4 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +12 -9
- package/dist/events.js.map +1 -1
- package/dist/gas/calculator.d.ts +20 -20
- package/dist/gas/calculator.d.ts.map +1 -1
- package/dist/gas/calculator.hardhat-test.js +5 -4
- package/dist/gas/calculator.hardhat-test.js.map +1 -1
- package/dist/gas/calculator.js +9 -11
- package/dist/gas/calculator.js.map +1 -1
- package/dist/gas/calculator.test.js +2 -14
- package/dist/gas/calculator.test.js.map +1 -1
- package/dist/gas/token-prices.d.ts +4 -2
- package/dist/gas/token-prices.d.ts.map +1 -1
- package/dist/gas/token-prices.js +4 -2
- package/dist/gas/token-prices.js.map +1 -1
- package/dist/index.d.ts +27 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -71
- package/dist/index.js.map +1 -1
- package/dist/middleware/accounts.hardhat-test.js +18 -12
- package/dist/middleware/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/liquidity-layer.hardhat-test.js +10 -9
- package/dist/middleware/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/queries.hardhat-test.js +10 -9
- package/dist/middleware/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +186 -37
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +408 -63
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/router.d.ts +5 -5
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +1 -2
- package/dist/router.js.map +1 -1
- package/dist/test/envSubsetDeployer/app.d.ts +12 -21
- package/dist/test/envSubsetDeployer/app.d.ts.map +1 -1
- package/dist/test/envSubsetDeployer/app.js +13 -18
- package/dist/test/envSubsetDeployer/app.js.map +1 -1
- package/dist/test/envSubsetDeployer/check-single-chain.js +1 -11
- package/dist/test/envSubsetDeployer/check-single-chain.js.map +1 -1
- package/dist/test/envSubsetDeployer/deploy-single-chain.js +3 -9
- package/dist/test/envSubsetDeployer/deploy-single-chain.js.map +1 -1
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.js +4 -3
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.js.map +1 -1
- package/dist/test/envSubsetDeployer/utils.d.ts +0 -3
- package/dist/test/envSubsetDeployer/utils.d.ts.map +1 -1
- package/dist/test/envSubsetDeployer/utils.js +2 -10
- package/dist/test/envSubsetDeployer/utils.js.map +1 -1
- package/dist/test/testUtils.d.ts +5 -1
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +8 -1
- package/dist/test/testUtils.js.map +1 -1
- package/dist/types.d.ts +2 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.d.ts +11 -12
- package/dist/utils/MultiGeneric.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.js +3 -6
- package/dist/utils/MultiGeneric.js.map +1 -1
- package/dist/utils/wagmi.d.ts +1 -1
- package/dist/utils/wagmi.d.ts.map +1 -1
- package/dist/utils/wagmi.js +7 -6
- package/dist/utils/wagmi.js.map +1 -1
- package/package.json +3 -4
- package/dist/consts/chainConnectionConfigs.d.ts +0 -21
- package/dist/consts/chainConnectionConfigs.d.ts.map +0 -1
- package/dist/consts/chainConnectionConfigs.js +0 -35
- package/dist/consts/chainConnectionConfigs.js.map +0 -1
- package/dist/core/message.d.ts +0 -146
- package/dist/core/message.d.ts.map +0 -1
- package/dist/core/message.js +0 -285
- package/dist/core/message.js.map +0 -1
- package/dist/domains.d.ts +0 -4
- package/dist/domains.d.ts.map +0 -1
- package/dist/domains.js +0 -12
- package/dist/domains.js.map +0 -1
- package/dist/providers/ChainConnection.d.ts +0 -23
- package/dist/providers/ChainConnection.d.ts.map +0 -1
- package/dist/providers/ChainConnection.js +0 -67
- package/dist/providers/ChainConnection.js.map +0 -1
package/dist/events.js
CHANGED
|
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.findEvent = exports.getEvents = exports.findAnnotatedSingleEvent = exports.queryAnnotatedEvents = exports.Annotated = void 0;
|
|
13
|
-
const chainMetadata_1 = require("./consts/chainMetadata");
|
|
14
13
|
class Annotated {
|
|
15
14
|
constructor(domain, receipt, event, callerKnowsWhatTheyAreDoing = false) {
|
|
16
15
|
var _a;
|
|
@@ -55,20 +54,21 @@ exports.Annotated = Annotated;
|
|
|
55
54
|
function queryAnnotatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
56
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
56
|
const events = yield getEvents(multiprovider, chain, contract, filter, startBlock, endBlock);
|
|
58
|
-
return Annotated.fromEvents(
|
|
57
|
+
return Annotated.fromEvents(multiprovider.getChainId(chain), events);
|
|
59
58
|
});
|
|
60
59
|
}
|
|
61
60
|
exports.queryAnnotatedEvents = queryAnnotatedEvents;
|
|
62
61
|
function findAnnotatedSingleEvent(multiprovider, chain, contract, filter, startBlock) {
|
|
63
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
63
|
const events = yield findEvent(multiprovider, chain, contract, filter, startBlock);
|
|
65
|
-
return Annotated.fromEvents(
|
|
64
|
+
return Annotated.fromEvents(multiprovider.getChainId(chain), events);
|
|
66
65
|
});
|
|
67
66
|
}
|
|
68
67
|
exports.findAnnotatedSingleEvent = findAnnotatedSingleEvent;
|
|
69
68
|
function getEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
70
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const
|
|
70
|
+
const metadata = multiprovider.getChainMetadata(chain);
|
|
71
|
+
const mustPaginate = !!metadata.publicRpcUrls[0].pagination;
|
|
72
72
|
if (mustPaginate) {
|
|
73
73
|
return getPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock);
|
|
74
74
|
}
|
|
@@ -78,7 +78,8 @@ function getEvents(multiprovider, chain, contract, filter, startBlock, endBlock)
|
|
|
78
78
|
exports.getEvents = getEvents;
|
|
79
79
|
function findEvent(multiprovider, chain, contract, filter, startBlock) {
|
|
80
80
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
const
|
|
81
|
+
const metadata = multiprovider.getChainMetadata(chain);
|
|
82
|
+
const mustPaginate = !!metadata.publicRpcUrls[0].pagination;
|
|
82
83
|
if (mustPaginate) {
|
|
83
84
|
return findFromPaginatedEvents(multiprovider, chain, contract, filter, startBlock);
|
|
84
85
|
}
|
|
@@ -88,7 +89,8 @@ function findEvent(multiprovider, chain, contract, filter, startBlock) {
|
|
|
88
89
|
exports.findEvent = findEvent;
|
|
89
90
|
function getPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
90
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
const
|
|
92
|
+
const metadata = multiprovider.getChainMetadata(chain);
|
|
93
|
+
const pagination = metadata.publicRpcUrls[0].pagination;
|
|
92
94
|
if (!pagination) {
|
|
93
95
|
throw new Error('Domain need not be paginated');
|
|
94
96
|
}
|
|
@@ -101,7 +103,7 @@ function getPaginatedEvents(multiprovider, chain, contract, filter, startBlock,
|
|
|
101
103
|
// or current block number
|
|
102
104
|
let lastBlock;
|
|
103
105
|
if (!endBlock) {
|
|
104
|
-
const provider = multiprovider.
|
|
106
|
+
const provider = multiprovider.getProvider(chain);
|
|
105
107
|
lastBlock = yield provider.getBlockNumber();
|
|
106
108
|
}
|
|
107
109
|
else {
|
|
@@ -126,7 +128,8 @@ function getPaginatedEvents(multiprovider, chain, contract, filter, startBlock,
|
|
|
126
128
|
}
|
|
127
129
|
function findFromPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
128
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
const
|
|
131
|
+
const metadata = multiprovider.getChainMetadata(chain);
|
|
132
|
+
const pagination = metadata.publicRpcUrls[0].pagination;
|
|
130
133
|
if (!pagination) {
|
|
131
134
|
throw new Error('Domain need not be paginated');
|
|
132
135
|
}
|
|
@@ -139,7 +142,7 @@ function findFromPaginatedEvents(multiprovider, chain, contract, filter, startBl
|
|
|
139
142
|
// or current block number
|
|
140
143
|
let lastBlock;
|
|
141
144
|
if (!endBlock) {
|
|
142
|
-
const provider = multiprovider.
|
|
145
|
+
const provider = multiprovider.getProvider(chain);
|
|
143
146
|
lastBlock = yield provider.getBlockNumber();
|
|
144
147
|
}
|
|
145
148
|
else {
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/gas/calculator.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { BigNumber } from 'ethers';
|
|
2
2
|
import { types } from '@hyperlane-xyz/utils';
|
|
3
|
-
import { CoreEnvironment,
|
|
3
|
+
import { CoreEnvironment, HyperlaneCore } from '../core/HyperlaneCore';
|
|
4
4
|
import { MultiProvider } from '../providers/MultiProvider';
|
|
5
|
-
import { ChainName
|
|
5
|
+
import { ChainName } from '../types';
|
|
6
6
|
import { TokenPriceGetter } from './token-prices';
|
|
7
7
|
export interface InterchainGasCalculatorConfig {
|
|
8
8
|
/**
|
|
@@ -27,24 +27,24 @@ export interface InterchainGasCalculatorConfig {
|
|
|
27
27
|
*/
|
|
28
28
|
tokenPriceGetter?: TokenPriceGetter;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
31
|
-
origin:
|
|
30
|
+
export interface ParsedMessage {
|
|
31
|
+
origin: ChainName;
|
|
32
32
|
sender: string;
|
|
33
|
-
destination:
|
|
33
|
+
destination: ChainName;
|
|
34
34
|
recipient: string;
|
|
35
35
|
body: string;
|
|
36
|
-
}
|
|
36
|
+
}
|
|
37
37
|
/**
|
|
38
38
|
* Calculates interchain gas payments.
|
|
39
39
|
*/
|
|
40
|
-
export declare class InterchainGasCalculator
|
|
40
|
+
export declare class InterchainGasCalculator {
|
|
41
41
|
private core;
|
|
42
42
|
private multiProvider;
|
|
43
43
|
private tokenPriceGetter;
|
|
44
44
|
private paymentEstimateMultiplier;
|
|
45
45
|
private messageGasEstimateBuffer;
|
|
46
|
-
static fromEnvironment<Env extends CoreEnvironment>(env: Env, multiProvider: MultiProvider
|
|
47
|
-
constructor(multiProvider: MultiProvider
|
|
46
|
+
static fromEnvironment<Env extends CoreEnvironment>(env: Env, multiProvider: MultiProvider, config?: InterchainGasCalculatorConfig): InterchainGasCalculator;
|
|
47
|
+
constructor(multiProvider: MultiProvider, core: HyperlaneCore, config?: InterchainGasCalculatorConfig);
|
|
48
48
|
/**
|
|
49
49
|
* Only intended for IGPs that quote gas payments on-chain.
|
|
50
50
|
* Calls the default ISM IGP's `quoteGasPayment` function to get the amount of native tokens
|
|
@@ -59,7 +59,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
59
59
|
* function.
|
|
60
60
|
* @returns The amount of native tokens required to pay for interchain gas.
|
|
61
61
|
*/
|
|
62
|
-
quoteGasPaymentForDefaultIsmIgp
|
|
62
|
+
quoteGasPaymentForDefaultIsmIgp(origin: ChainName, destination: ChainName, gasAmount: BigNumber): Promise<BigNumber>;
|
|
63
63
|
/**
|
|
64
64
|
* Only intended for IGPs that quote gas payments on-chain.
|
|
65
65
|
* Calls the "base" IGP's `quoteGasPayment` function to get the amount of native tokens
|
|
@@ -74,7 +74,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
74
74
|
* gas cost.
|
|
75
75
|
* @returns The amount of native tokens required to pay for interchain gas.
|
|
76
76
|
*/
|
|
77
|
-
quoteGasPayment
|
|
77
|
+
quoteGasPayment(origin: ChainName, destination: ChainName, gasAmount: BigNumber): Promise<BigNumber>;
|
|
78
78
|
/**
|
|
79
79
|
* Only intended for IGPs that quote gas payments on-chain.
|
|
80
80
|
* Calls the origin's default IGP's `quoteGasPayment` function to get the
|
|
@@ -89,7 +89,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
89
89
|
* function.
|
|
90
90
|
* @returns The amount of native tokens required to pay for interchain gas.
|
|
91
91
|
*/
|
|
92
|
-
quoteGasPaymentForIGP
|
|
92
|
+
quoteGasPaymentForIGP(origin: ChainName, destination: ChainName, gasAmount: BigNumber, interchainGasPaymasterAddress: types.Address): Promise<BigNumber>;
|
|
93
93
|
/**
|
|
94
94
|
* Only intended for IGPs that do *not* quote gas payments on-chain.
|
|
95
95
|
* Given an amount of gas to consume on the destination chain, calculates the
|
|
@@ -102,7 +102,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
102
102
|
* @returns An estimated amount of origin chain tokens to cover gas costs on the
|
|
103
103
|
* destination chain.
|
|
104
104
|
*/
|
|
105
|
-
estimatePaymentForGas
|
|
105
|
+
estimatePaymentForGas(origin: ChainName, destination: ChainName, gas: BigNumber): Promise<BigNumber>;
|
|
106
106
|
/**
|
|
107
107
|
* Only intended for IGPs that do *not* quote gas payments on-chain.
|
|
108
108
|
* Given an amount of gas the message's recipient `handle` function is expected
|
|
@@ -119,7 +119,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
119
119
|
* @returns An estimated amount of origin chain tokens to cover gas costs of the
|
|
120
120
|
* message on the destination chain.
|
|
121
121
|
*/
|
|
122
|
-
estimatePaymentForHandleGas
|
|
122
|
+
estimatePaymentForHandleGas(origin: ChainName, destination: ChainName, handleGas: BigNumber): Promise<BigNumber>;
|
|
123
123
|
/**
|
|
124
124
|
* Only intended for IGPs that do *not* quote gas payments on-chain.
|
|
125
125
|
* Calculates the estimated payment to process the message on its destination chain,
|
|
@@ -132,7 +132,7 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
132
132
|
* @returns An estimated amount of origin chain tokens to cover gas costs of the
|
|
133
133
|
* message on the destination chain.
|
|
134
134
|
*/
|
|
135
|
-
protected estimatePaymentForMessage
|
|
135
|
+
protected estimatePaymentForMessage(message: ParsedMessage): Promise<BigNumber>;
|
|
136
136
|
/**
|
|
137
137
|
* Using the exchange rates provided by tokenPriceGetter, returns the amount of
|
|
138
138
|
* `toChain` native tokens equivalent in value to the provided `fromAmount` of
|
|
@@ -143,19 +143,19 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
143
143
|
* @returns The amount of `toChain` native tokens whose value is equivalent to
|
|
144
144
|
* `fromAmount` of `fromChain` native tokens.
|
|
145
145
|
*/
|
|
146
|
-
protected convertBetweenTokens(fromChain:
|
|
146
|
+
protected convertBetweenTokens(fromChain: ChainName, toChain: ChainName, value: BigNumber): Promise<BigNumber>;
|
|
147
147
|
/**
|
|
148
148
|
* Gets a suggested gas price for a chain.
|
|
149
149
|
* @param chainName The name of the chain to get the gas price for
|
|
150
150
|
* @returns The suggested gas price in wei on the destination chain.
|
|
151
151
|
*/
|
|
152
|
-
protected getGasPrice(chain:
|
|
152
|
+
protected getGasPrice(chain: ChainName): Promise<BigNumber>;
|
|
153
153
|
/**
|
|
154
154
|
* Gets the number of decimals of the provided chain's native token.
|
|
155
155
|
* @param chain The chain.
|
|
156
156
|
* @returns The number of decimals of `chain`'s native token.
|
|
157
157
|
*/
|
|
158
|
-
protected tokenDecimals(chain:
|
|
158
|
+
protected tokenDecimals(chain: ChainName): number;
|
|
159
159
|
/**
|
|
160
160
|
* Estimates the amount of gas used by message's recipient `handle` function
|
|
161
161
|
* on its destination chain. This does not assume the Inbox of the destination
|
|
@@ -170,13 +170,13 @@ export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
|
170
170
|
* @returns The estimated gas required by the message's recipient handle function
|
|
171
171
|
* on the destination chain.
|
|
172
172
|
*/
|
|
173
|
-
protected estimateGasForHandle
|
|
173
|
+
protected estimateGasForHandle(message: ParsedMessage): Promise<BigNumber>;
|
|
174
174
|
/**
|
|
175
175
|
* @returns A generous estimation of the gas consumption of all process
|
|
176
176
|
* operations within Inbox.sol, including intrinsic gas. Does not include any gas
|
|
177
177
|
* consumed within a message's recipient `handle` function.
|
|
178
178
|
*/
|
|
179
|
-
protected estimateGasForProcess
|
|
179
|
+
protected estimateGasForProcess(origin: ChainName, destination: ChainName): Promise<BigNumber>;
|
|
180
180
|
/**
|
|
181
181
|
* @returns The intrinsic gas of a basic transaction. Note this does not consider calldata
|
|
182
182
|
* costs or potentially different intrinsic gas costs for different chains.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/gas/calculator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAuB,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAS,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/gas/calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
13
|
const ethers_1 = require("ethers");
|
|
14
14
|
const hardhat_1 = require("hardhat");
|
|
15
|
+
const chains_1 = require("../consts/chains");
|
|
15
16
|
const HyperlaneCore_1 = require("../core/HyperlaneCore");
|
|
16
17
|
const TestCoreDeployer_1 = require("../core/TestCoreDeployer");
|
|
17
|
-
const
|
|
18
|
+
const MultiProvider_1 = require("../providers/MultiProvider");
|
|
18
19
|
const calculator_1 = require("./calculator");
|
|
19
20
|
describe('InterchainGasCalculator', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
const localChain =
|
|
21
|
-
const remoteChain =
|
|
21
|
+
const localChain = chains_1.Chains.test1;
|
|
22
|
+
const remoteChain = chains_1.Chains.test2;
|
|
22
23
|
const expectedDefaultQuote = ethers_1.BigNumber.from('1');
|
|
23
24
|
const testGasAmount = ethers_1.BigNumber.from('100000');
|
|
24
25
|
let signer;
|
|
@@ -27,7 +28,7 @@ describe('InterchainGasCalculator', () => __awaiter(void 0, void 0, void 0, func
|
|
|
27
28
|
let igp;
|
|
28
29
|
before(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
30
|
[signer] = yield hardhat_1.ethers.getSigners();
|
|
30
|
-
multiProvider = (
|
|
31
|
+
multiProvider = MultiProvider_1.MultiProvider.createTestMultiProvider({ signer });
|
|
31
32
|
const coreDeployer = new TestCoreDeployer_1.TestCoreDeployer(multiProvider);
|
|
32
33
|
const coreContractsMaps = yield coreDeployer.deploy();
|
|
33
34
|
const core = new HyperlaneCore_1.HyperlaneCore(coreContractsMaps, multiProvider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculator.hardhat-test.js","sourceRoot":"","sources":["../../src/gas/calculator.hardhat-test.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,+BAA8B;AAC9B,mCAAmC;AACnC,qCAAiC;AAIjC,yDAAsD;AACtD,+DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"calculator.hardhat-test.js","sourceRoot":"","sources":["../../src/gas/calculator.hardhat-test.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,+BAA8B;AAC9B,mCAAmC;AACnC,qCAAiC;AAIjC,6CAA0C;AAC1C,yDAAsD;AACtD,+DAA4D;AAC5D,8DAA2D;AAE3D,6CAAuD;AAEvD,QAAQ,CAAC,yBAAyB,EAAE,GAAS,EAAE;IAC7C,MAAM,UAAU,GAAG,eAAM,CAAC,KAAK,CAAC;IAChC,MAAM,WAAW,GAAG,eAAM,CAAC,KAAK,CAAC;IAEjC,MAAM,oBAAoB,GAAG,kBAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,kBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAyB,CAAC;IAC9B,IAAI,aAA4B,CAAC;IAEjC,IAAI,UAAmC,CAAC;IACxC,IAAI,GAAkB,CAAC;IAEvB,MAAM,CAAC,GAAS,EAAE;QAChB,CAAC,MAAM,CAAC,GAAG,MAAM,gBAAM,CAAC,UAAU,EAAE,CAAC;QAErC,aAAa,GAAG,6BAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,MAAM,YAAY,GAAG,IAAI,mCAAgB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,6BAAa,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACjE,UAAU,GAAG,IAAI,oCAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC;IACrE,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,sDAAsD,EAAE,GAAS,EAAE;YACpE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,+BAA+B,CAC5D,UAAU,EACV,WAAW,EACX,aAAa,CACd,CAAC;YAEF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACxD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,eAAe,CAC5C,UAAU,EACV,WAAW,EACX,aAAa,CACd,CAAC;YAEF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACxD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAClD,UAAU,EACV,WAAW,EACX,aAAa,EACb,GAAG,CACJ,CAAC;YAEF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAA,CAAC,CAAC"}
|
package/dist/gas/calculator.js
CHANGED
|
@@ -17,9 +17,7 @@ const coingecko_api_1 = __importDefault(require("coingecko-api"));
|
|
|
17
17
|
const ethers_1 = require("ethers");
|
|
18
18
|
const core_1 = require("@hyperlane-xyz/core");
|
|
19
19
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
20
|
-
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
21
20
|
const HyperlaneCore_1 = require("../core/HyperlaneCore");
|
|
22
|
-
const domains_1 = require("../domains");
|
|
23
21
|
const number_1 = require("../utils/number");
|
|
24
22
|
const token_prices_1 = require("./token-prices");
|
|
25
23
|
/**
|
|
@@ -124,9 +122,10 @@ class InterchainGasCalculator {
|
|
|
124
122
|
*/
|
|
125
123
|
quoteGasPaymentForIGP(origin, destination, gasAmount, interchainGasPaymasterAddress) {
|
|
126
124
|
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
-
const originProvider = this.multiProvider.
|
|
125
|
+
const originProvider = this.multiProvider.getProvider(origin);
|
|
128
126
|
const igp = core_1.InterchainGasPaymaster__factory.connect(interchainGasPaymasterAddress, originProvider);
|
|
129
|
-
|
|
127
|
+
const domainId = this.multiProvider.getDomainId(destination);
|
|
128
|
+
return igp.quoteGasPayment(domainId, gasAmount);
|
|
130
129
|
});
|
|
131
130
|
}
|
|
132
131
|
/**
|
|
@@ -216,7 +215,7 @@ class InterchainGasCalculator {
|
|
|
216
215
|
*/
|
|
217
216
|
getGasPrice(chain) {
|
|
218
217
|
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
const provider = this.multiProvider.
|
|
218
|
+
const provider = this.multiProvider.getProvider(chain);
|
|
220
219
|
if (provider == undefined) {
|
|
221
220
|
throw new Error(`Missing provider for ${chain}`);
|
|
222
221
|
}
|
|
@@ -229,8 +228,8 @@ class InterchainGasCalculator {
|
|
|
229
228
|
* @returns The number of decimals of `chain`'s native token.
|
|
230
229
|
*/
|
|
231
230
|
tokenDecimals(chain) {
|
|
232
|
-
var _a;
|
|
233
|
-
return (_a =
|
|
231
|
+
var _a, _b, _c;
|
|
232
|
+
return ((_c = (_b = (_a = this.multiProvider.tryGetChainMetadata(chain)) === null || _a === void 0 ? void 0 : _a.nativeToken) === null || _b === void 0 ? void 0 : _b.decimals) !== null && _c !== void 0 ? _c : DEFAULT_TOKEN_DECIMALS);
|
|
234
233
|
}
|
|
235
234
|
/**
|
|
236
235
|
* Estimates the amount of gas used by message's recipient `handle` function
|
|
@@ -248,8 +247,7 @@ class InterchainGasCalculator {
|
|
|
248
247
|
*/
|
|
249
248
|
estimateGasForHandle(message) {
|
|
250
249
|
return __awaiter(this, void 0, void 0, function* () {
|
|
251
|
-
const provider = this.multiProvider.
|
|
252
|
-
.provider;
|
|
250
|
+
const provider = this.multiProvider.getProvider(message.destination);
|
|
253
251
|
const mailbox = this.core.getContracts(message.destination).mailbox
|
|
254
252
|
.contract;
|
|
255
253
|
const handlerInterface = new ethers_1.ethers.utils.Interface([
|
|
@@ -262,7 +260,7 @@ class InterchainGasCalculator {
|
|
|
262
260
|
to: utils_1.utils.bytes32ToAddress(message.recipient),
|
|
263
261
|
from: mailbox.address,
|
|
264
262
|
data: handlerInterface.encodeFunctionData('handle', [
|
|
265
|
-
|
|
263
|
+
this.multiProvider.getChainId(message.origin),
|
|
266
264
|
utils_1.utils.addressToBytes32(message.sender),
|
|
267
265
|
message.body,
|
|
268
266
|
]),
|
|
@@ -285,7 +283,7 @@ class InterchainGasCalculator {
|
|
|
285
283
|
return __awaiter(this, void 0, void 0, function* () {
|
|
286
284
|
// TODO: Check the recipient module
|
|
287
285
|
const module = this.core.getContracts(destination).multisigIsm;
|
|
288
|
-
const threshold = yield module.threshold(
|
|
286
|
+
const threshold = yield module.threshold(this.multiProvider.getDomainId(origin));
|
|
289
287
|
return ethers_1.BigNumber.from(threshold)
|
|
290
288
|
.mul(GAS_OVERHEAD_PER_SIGNATURE)
|
|
291
289
|
.add(GAS_OVERHEAD_BASE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/gas/calculator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAAsC;AACtC,mCAAwD;AAExD,8CAAsE;AACtE,gDAAoD;AAEpD,
|
|
1
|
+
{"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/gas/calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const chai_1 = require("chai");
|
|
16
16
|
const ethers_1 = require("ethers");
|
|
17
17
|
const sinon_1 = __importDefault(require("sinon"));
|
|
18
|
-
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
19
18
|
const chains_1 = require("../consts/chains");
|
|
20
19
|
const HyperlaneCore_1 = require("../core/HyperlaneCore");
|
|
21
20
|
const MultiProvider_1 = require("../providers/MultiProvider");
|
|
@@ -44,16 +43,7 @@ class TestInterchainGasCalculator extends calculator_1.InterchainGasCalculator {
|
|
|
44
43
|
}
|
|
45
44
|
describe('InterchainGasCalculator', () => {
|
|
46
45
|
const provider = new testUtils_1.MockProvider();
|
|
47
|
-
|
|
48
|
-
// This is because InterchainGasCalculator isn't very strongly typed,
|
|
49
|
-
// which is because ParsedMessage isn't very strongly typed. This results
|
|
50
|
-
// in InterchainGasCalculator expecting a multiprovider with providers for
|
|
51
|
-
// every chain.
|
|
52
|
-
const multiProvider = new MultiProvider_1.MultiProvider({
|
|
53
|
-
test1: { id: chainMetadata_1.chainMetadata.test1.id, provider },
|
|
54
|
-
test2: { id: chainMetadata_1.chainMetadata.test2.id, provider },
|
|
55
|
-
test3: { id: chainMetadata_1.chainMetadata.test3.id, provider },
|
|
56
|
-
});
|
|
46
|
+
const multiProvider = MultiProvider_1.MultiProvider.createTestMultiProvider({ provider });
|
|
57
47
|
const core = HyperlaneCore_1.HyperlaneCore.fromEnvironment('test', multiProvider);
|
|
58
48
|
const origin = chains_1.Chains.test1;
|
|
59
49
|
const destination = chains_1.Chains.test2;
|
|
@@ -153,9 +143,7 @@ describe('InterchainGasCalculator', () => {
|
|
|
153
143
|
(0, chai_1.expect)(originWei.toNumber()).to.equal(60500);
|
|
154
144
|
}));
|
|
155
145
|
it('considers when the origin token decimals < the destination token decimals', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
156
|
-
sinon_1.default
|
|
157
|
-
.stub(calculator, 'tokenDecimals')
|
|
158
|
-
.callsFake((chain) => {
|
|
146
|
+
sinon_1.default.stub(calculator, 'tokenDecimals').callsFake((chain) => {
|
|
159
147
|
if (chain === origin) {
|
|
160
148
|
return 16;
|
|
161
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../src/gas/calculator.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,mCAAmC;AACnC,kDAA0B;AAE1B,
|
|
1
|
+
{"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../src/gas/calculator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import CoinGecko from 'coingecko-api';
|
|
2
|
-
import {
|
|
2
|
+
import { ChainMetadata } from '../consts/chainMetadata';
|
|
3
|
+
import { ChainMap, ChainName } from '../types';
|
|
3
4
|
export interface TokenPriceGetter {
|
|
4
5
|
getTokenPrice(chain: ChainName): Promise<number>;
|
|
5
6
|
getTokenExchangeRate(base: ChainName, quote: ChainName): Promise<number>;
|
|
@@ -24,7 +25,8 @@ declare class TokenPriceCache {
|
|
|
24
25
|
export declare class CoinGeckoTokenPriceGetter implements TokenPriceGetter {
|
|
25
26
|
protected coinGecko: CoinGeckoInterface;
|
|
26
27
|
protected cache: TokenPriceCache;
|
|
27
|
-
|
|
28
|
+
protected metadata: ChainMap<ChainMetadata>;
|
|
29
|
+
constructor(coinGecko: CoinGeckoInterface, expirySeconds?: number, chainMetadata?: Record<string, ChainMetadata>);
|
|
28
30
|
getTokenPrice(chain: ChainName): Promise<number>;
|
|
29
31
|
getTokenExchangeRate(base: ChainName, quote: ChainName): Promise<number>;
|
|
30
32
|
private getTokenPrices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-prices.d.ts","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"token-prices.d.ts","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,eAAe,CAAC;AAItC,OAAO,EACL,aAAa,EAEd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,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;IACjC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAG1C,SAAS,EAAE,kBAAkB,EAC7B,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,gCAAuB;IAOhC,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;YA2Bd,gBAAgB;CAe/B"}
|
package/dist/gas/token-prices.js
CHANGED
|
@@ -45,9 +45,10 @@ class TokenPriceCache {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
class CoinGeckoTokenPriceGetter {
|
|
48
|
-
constructor(coinGecko, expirySeconds) {
|
|
48
|
+
constructor(coinGecko, expirySeconds, chainMetadata = chainMetadata_1.chainMetadata) {
|
|
49
49
|
this.coinGecko = coinGecko;
|
|
50
50
|
this.cache = new TokenPriceCache(expirySeconds);
|
|
51
|
+
this.metadata = chainMetadata;
|
|
51
52
|
}
|
|
52
53
|
getTokenPrice(chain) {
|
|
53
54
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -63,6 +64,7 @@ class CoinGeckoTokenPriceGetter {
|
|
|
63
64
|
}
|
|
64
65
|
getTokenPrices(chains) {
|
|
65
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
// TODO improve PI support here?
|
|
66
68
|
const isMainnet = chains.map((c) => chains_1.Mainnets.includes(c));
|
|
67
69
|
const allMainnets = isMainnet.every((v) => v === true);
|
|
68
70
|
const allTestnets = isMainnet.every((v) => v === false);
|
|
@@ -90,7 +92,7 @@ class CoinGeckoTokenPriceGetter {
|
|
|
90
92
|
const currency = 'usd';
|
|
91
93
|
// The CoinGecko API expects, in some cases, IDs that do not match
|
|
92
94
|
// ChainNames.
|
|
93
|
-
const ids = chains.map((chain) =>
|
|
95
|
+
const ids = chains.map((chain) => this.metadata[chain].gasCurrencyCoinGeckoId || chain);
|
|
94
96
|
const response = yield this.coinGecko.simple.price({
|
|
95
97
|
ids,
|
|
96
98
|
vs_currencies: [currency],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-prices.js","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,gDAA4C;AAE5C,
|
|
1
|
+
{"version":3,"file":"token-prices.js","sourceRoot":"","sources":["../../src/gas/token-prices.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,gDAA4C;AAE5C,2DAGiC;AACjC,6CAA2D;AAoB3D,MAAM,eAAe;IAKnB,YAAY,YAAY,GAAG,EAAE,EAAE,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,KAAgB,EAAE,KAAa;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,UAAU,GAAG,IAAI,IAAI,CACzB,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CACrD,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,UAAU,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,uBAAuB,CAAC,CAAC;SACrE;QACD,MAAM,YAAY,GAAG,IAAI,IAAI,CAC3B,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,CACxD,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,YAAY,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,uBAAuB,CAAC,CAAC;SAC1E;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAa,yBAAyB;IAKpC,YACE,SAA6B,EAC7B,aAAsB,EACtB,aAAa,GAAG,6BAAoB;QAEpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;IAChC,CAAC;IAEK,aAAa,CAAC,KAAgB;;YAClC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IAEK,oBAAoB,CACxB,IAAe,EACf,KAAgB;;YAEhB,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACzE,OAAO,SAAS,GAAG,UAAU,CAAC;QAChC,CAAC;KAAA;IAEa,cAAc,CAAC,MAAmB;;YAC9C,gCAAgC;YAChC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAQ,CAAC,QAAQ,CAAC,CAAkB,CAAC,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE;gBACf,yDAAyD;gBACzD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aAC5B;YAED,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;aACH;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI;oBACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;iBACtC;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAA,YAAI,EAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;iBACzC;aACF;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;KAAA;IAEa,gBAAgB,CAAC,MAAmB;;YAChD,MAAM,QAAQ,GAAG,KAAK,CAAC;YACvB,kEAAkE;YAClE,cAAc;YACd,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CACpB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,sBAAsB,IAAI,KAAK,CAChE,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;gBACjD,GAAG;gBACH,aAAa,EAAE,CAAC,QAAQ,CAAC;aAC1B,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,iDAAiD;YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;KAAA;CACF;AAtED,8DAsEC"}
|