@hyperlane-xyz/sdk 3.8.0-beta0 → 3.8.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/consts/chainMetadata.d.ts +0 -5
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +6 -121
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +0 -5
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +0 -10
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +1 -73
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/testnet.json +0 -72
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +4 -44
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts +5 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +3 -0
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.js +20 -2
- package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.test.d.ts +2 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.test.d.ts.map +1 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.test.js +25 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.test.js.map +1 -0
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js +0 -2
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +6 -0
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +7 -5
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +8 -2
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +82 -41
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/chainMetadata.test.js +1 -1
- package/dist/metadata/chainMetadata.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +36 -16
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +11 -2
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.d.ts +9 -1
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +12 -0
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.test.js +10 -10
- package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
- package/dist/providers/transactionFeeEstimators.d.ts +50 -0
- package/dist/providers/transactionFeeEstimators.d.ts.map +1 -0
- package/dist/providers/transactionFeeEstimators.js +169 -0
- package/dist/providers/transactionFeeEstimators.js.map +1 -0
- package/dist/token/IToken.d.ts +2 -2
- package/dist/token/IToken.d.ts.map +1 -1
- package/dist/token/Token.d.ts +11 -7
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +29 -12
- package/dist/token/Token.js.map +1 -1
- package/dist/token/Token.test.js +5 -5
- package/dist/token/Token.test.js.map +1 -1
- package/dist/token/TokenConnection.d.ts +7 -1
- package/dist/token/TokenConnection.d.ts.map +1 -1
- package/dist/token/TokenConnection.js +14 -1
- package/dist/token/TokenConnection.js.map +1 -1
- package/dist/token/TokenStandard.d.ts +2 -0
- package/dist/token/TokenStandard.d.ts.map +1 -1
- package/dist/token/TokenStandard.js +11 -1
- package/dist/token/TokenStandard.js.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +2 -2
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.js +6 -6
- package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.d.ts +2 -2
- package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.js +2 -2
- package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts +2 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +7 -4
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/ITokenAdapter.d.ts +1 -1
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.d.ts +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.js +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
- package/dist/warp/WarpCore.d.ts +76 -10
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +169 -35
- package/dist/warp/WarpCore.js.map +1 -1
- package/dist/warp/WarpCore.test.js +72 -21
- package/dist/warp/WarpCore.test.js.map +1 -1
- package/dist/warp/types.d.ts +82 -25
- package/dist/warp/types.d.ts.map +1 -1
- package/dist/warp/types.js +15 -15
- package/dist/warp/types.js.map +1 -1
- package/logos/black/plume.svg +1 -6
- package/logos/color/plume.svg +1 -1
- package/package.json +3 -3
package/dist/warp/WarpCore.js
CHANGED
|
@@ -6,19 +6,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.WarpCore = void 0;
|
|
7
7
|
const debug_1 = __importDefault(require("debug"));
|
|
8
8
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
9
|
+
const transactionFeeEstimators_1 = require("../providers/transactionFeeEstimators");
|
|
9
10
|
const Token_1 = require("../token/Token");
|
|
10
11
|
const TokenAmount_1 = require("../token/TokenAmount");
|
|
12
|
+
const TokenConnection_1 = require("../token/TokenConnection");
|
|
11
13
|
const TokenStandard_1 = require("../token/TokenStandard");
|
|
14
|
+
const EvmTokenAdapter_1 = require("../token/adapters/EvmTokenAdapter");
|
|
12
15
|
const types_1 = require("./types");
|
|
13
16
|
class WarpCore {
|
|
14
17
|
constructor(multiProvider, tokens, options) {
|
|
15
18
|
this.multiProvider = multiProvider;
|
|
16
19
|
this.tokens = tokens;
|
|
17
|
-
this.
|
|
20
|
+
this.localFeeConstants = options?.localFeeConstants || [];
|
|
21
|
+
this.interchainFeeConstants = options?.interchainFeeConstants || [];
|
|
18
22
|
this.routeBlacklist = options?.routeBlacklist || [];
|
|
19
23
|
this.logger = (0, debug_1.default)(options?.loggerName || 'hyperlane:WarpCore');
|
|
20
24
|
}
|
|
21
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Takes the serialized representation of a warp config and returns a WarpCore instance
|
|
27
|
+
* @param multiProvider the MultiProtocolProvider containing chain metadata
|
|
28
|
+
* @param config the config object of type WarpCoreConfig
|
|
29
|
+
*/
|
|
22
30
|
static FromConfig(multiProvider, config) {
|
|
23
31
|
// Validate and parse config data
|
|
24
32
|
const parsedConfig = types_1.WarpCoreConfigSchema.parse(config);
|
|
@@ -32,10 +40,9 @@ class WarpCore {
|
|
|
32
40
|
parsedConfig.tokens.forEach((config, i) => {
|
|
33
41
|
for (const connection of config.connections || []) {
|
|
34
42
|
const token1 = tokens[i];
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
(0, utils_1.assert)(token2, `Connected token not found: ${chainName} ${addrOrDenom}`);
|
|
43
|
+
const { chainName, addressOrDenom } = (0, TokenConnection_1.parseTokenConnectionId)(connection.token);
|
|
44
|
+
const token2 = tokens.find((t) => t.chainName === chainName && t.addressOrDenom === addressOrDenom);
|
|
45
|
+
(0, utils_1.assert)(token2, `Connected token not found: ${chainName} ${addressOrDenom}`);
|
|
39
46
|
token1.addConnection({
|
|
40
47
|
...connection,
|
|
41
48
|
token: token2,
|
|
@@ -43,18 +50,19 @@ class WarpCore {
|
|
|
43
50
|
}
|
|
44
51
|
});
|
|
45
52
|
// Create new Warp
|
|
46
|
-
return new WarpCore(multiProvider, tokens,
|
|
47
|
-
igpQuoteConstants: parsedConfig.options?.igpQuoteConstants,
|
|
48
|
-
routeBlacklist: parsedConfig.options?.routeBlacklist,
|
|
49
|
-
});
|
|
53
|
+
return new WarpCore(multiProvider, tokens, parsedConfig.options);
|
|
50
54
|
}
|
|
51
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Queries the token router for an interchain gas quote (i.e. IGP fee)
|
|
57
|
+
*/
|
|
58
|
+
async getInterchainTransferFee({ originToken, destination, }) {
|
|
59
|
+
this.logger(`Fetching interchain transfer quote to ${destination}`);
|
|
52
60
|
const { chainName: originName } = originToken;
|
|
53
61
|
const destinationName = this.multiProvider.getChainName(destination);
|
|
54
62
|
let gasAmount;
|
|
55
63
|
let gasAddressOrDenom;
|
|
56
64
|
// Check constant quotes first
|
|
57
|
-
const defaultQuote = this.
|
|
65
|
+
const defaultQuote = this.interchainFeeConstants.find((q) => q.origin === originName && q.destination === destinationName);
|
|
58
66
|
if (defaultQuote) {
|
|
59
67
|
gasAmount = BigInt(defaultQuote.amount.toString());
|
|
60
68
|
gasAddressOrDenom = defaultQuote.addressOrDenom;
|
|
@@ -63,7 +71,7 @@ class WarpCore {
|
|
|
63
71
|
// Otherwise, compute IGP quote via the adapter
|
|
64
72
|
const hypAdapter = originToken.getHypAdapter(this.multiProvider, destinationName);
|
|
65
73
|
const destinationDomainId = this.multiProvider.getDomainId(destination);
|
|
66
|
-
const quote = await hypAdapter.
|
|
74
|
+
const quote = await hypAdapter.quoteTransferRemoteGas(destinationDomainId);
|
|
67
75
|
gasAmount = BigInt(quote.amount);
|
|
68
76
|
gasAddressOrDenom = quote.addressOrDenom;
|
|
69
77
|
}
|
|
@@ -74,20 +82,69 @@ class WarpCore {
|
|
|
74
82
|
}
|
|
75
83
|
else {
|
|
76
84
|
const searchResult = this.findToken(originName, gasAddressOrDenom);
|
|
77
|
-
(0, utils_1.assert)(searchResult, `
|
|
85
|
+
(0, utils_1.assert)(searchResult, `Fee token ${gasAddressOrDenom} is unknown`);
|
|
78
86
|
igpToken = searchResult;
|
|
79
87
|
}
|
|
80
|
-
this.logger(`Quoted
|
|
88
|
+
this.logger(`Quoted interchain transfer fee: ${gasAmount} ${igpToken.symbol}`);
|
|
81
89
|
return new TokenAmount_1.TokenAmount(gasAmount, igpToken);
|
|
82
90
|
}
|
|
83
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Simulates a transfer to estimate 'local' gas fees on the origin chain
|
|
93
|
+
*/
|
|
94
|
+
async getLocalTransferFee({ originToken, destination, sender, senderPubKey, interchainFee, }) {
|
|
95
|
+
const originMetadata = this.multiProvider.getChainMetadata(originToken.chainName);
|
|
96
|
+
const destinationMetadata = this.multiProvider.getChainMetadata(destination);
|
|
97
|
+
// Check constant quotes first
|
|
98
|
+
const defaultQuote = this.localFeeConstants.find((q) => q.origin === originMetadata.name &&
|
|
99
|
+
q.destination === destinationMetadata.name);
|
|
100
|
+
if (defaultQuote) {
|
|
101
|
+
return { gasUnits: 0, gasPrice: 0, fee: Number(defaultQuote.amount) };
|
|
102
|
+
}
|
|
103
|
+
// Form transactions to estimate local gas with
|
|
104
|
+
const recipient = (0, utils_1.convertToProtocolAddress)(sender, destinationMetadata.protocol, destinationMetadata.bech32Prefix);
|
|
105
|
+
const txs = await this.getTransferRemoteTxs({
|
|
106
|
+
originTokenAmount: originToken.amount(1),
|
|
107
|
+
destination,
|
|
108
|
+
sender,
|
|
109
|
+
recipient,
|
|
110
|
+
interchainFee,
|
|
111
|
+
});
|
|
112
|
+
// Typically the transfers require a single transaction
|
|
113
|
+
if (txs.length === 1) {
|
|
114
|
+
return this.multiProvider.estimateTransactionFee({
|
|
115
|
+
chainNameOrId: originMetadata.name,
|
|
116
|
+
transaction: txs[0],
|
|
117
|
+
sender,
|
|
118
|
+
senderPubKey,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// On ethereum, sometimes 2 txs are required (one approve, one transferRemote)
|
|
122
|
+
else if (txs.length === 2 &&
|
|
123
|
+
originToken.protocol === utils_1.ProtocolType.Ethereum) {
|
|
124
|
+
const provider = this.multiProvider.getEthersV5Provider(originMetadata.name);
|
|
125
|
+
// We use a hard-coded const as an estimate for the transferRemote because we
|
|
126
|
+
// cannot reliably simulate the tx when an approval tx is required first
|
|
127
|
+
return (0, transactionFeeEstimators_1.estimateTransactionFeeEthersV5ForGasUnits)({
|
|
128
|
+
provider,
|
|
129
|
+
gasUnits: EvmTokenAdapter_1.EVM_TRANSFER_REMOTE_GAS_ESTIMATE,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
throw new Error('Cannot estimate local gas for multiple transactions');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Gets a list of populated transactions required to transfer a token to a remote chain
|
|
138
|
+
* Typically just 1 transaction but sometimes more, like when an approval is required first
|
|
139
|
+
*/
|
|
140
|
+
async getTransferRemoteTxs({ originTokenAmount, destination, sender, recipient, interchainFee, }) {
|
|
84
141
|
const transactions = [];
|
|
85
142
|
const { token, amount } = originTokenAmount;
|
|
86
143
|
const destinationName = this.multiProvider.getChainName(destination);
|
|
87
144
|
const destinationDomainId = this.multiProvider.getDomainId(destination);
|
|
88
145
|
const providerType = TokenStandard_1.TOKEN_STANDARD_TO_PROVIDER_TYPE[token.standard];
|
|
89
146
|
const hypAdapter = token.getHypAdapter(this.multiProvider, destinationName);
|
|
90
|
-
if (await this.isApproveRequired(originTokenAmount, sender)) {
|
|
147
|
+
if (await this.isApproveRequired({ originTokenAmount, owner: sender })) {
|
|
91
148
|
this.logger(`Approval required for transfer of ${token.symbol}`);
|
|
92
149
|
const approveTxReq = await hypAdapter.populateApproveTx({
|
|
93
150
|
weiAmountOrId: amount.toString(),
|
|
@@ -101,15 +158,20 @@ class WarpCore {
|
|
|
101
158
|
};
|
|
102
159
|
transactions.push(approveTx);
|
|
103
160
|
}
|
|
104
|
-
|
|
161
|
+
if (!interchainFee) {
|
|
162
|
+
interchainFee = await this.getInterchainTransferFee({
|
|
163
|
+
originToken: token,
|
|
164
|
+
destination,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
105
167
|
const transferTxReq = await hypAdapter.populateTransferRemoteTx({
|
|
106
168
|
weiAmountOrId: amount.toString(),
|
|
107
169
|
destination: destinationDomainId,
|
|
108
170
|
fromAccountOwner: sender,
|
|
109
171
|
recipient,
|
|
110
172
|
interchainGas: {
|
|
111
|
-
amount:
|
|
112
|
-
addressOrDenom:
|
|
173
|
+
amount: interchainFee.amount,
|
|
174
|
+
addressOrDenom: interchainFee.token.addressOrDenom,
|
|
113
175
|
},
|
|
114
176
|
});
|
|
115
177
|
this.logger(`Remote transfer tx for ${token.symbol} populated`);
|
|
@@ -121,10 +183,69 @@ class WarpCore {
|
|
|
121
183
|
transactions.push(transferTx);
|
|
122
184
|
return transactions;
|
|
123
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Fetch local and interchain fee estimates for a remote transfer
|
|
188
|
+
*/
|
|
189
|
+
async estimateTransferRemoteFees({ originToken, destination, sender, senderPubKey, }) {
|
|
190
|
+
this.logger('Fetching remote transfer fee estimates');
|
|
191
|
+
// First get interchain gas quote (aka IGP quote)
|
|
192
|
+
// Start with this because it's used in the local fee estimation
|
|
193
|
+
const interchainQuote = await this.getInterchainTransferFee({
|
|
194
|
+
originToken,
|
|
195
|
+
destination,
|
|
196
|
+
});
|
|
197
|
+
const originMetadata = this.multiProvider.getChainMetadata(originToken.chainName);
|
|
198
|
+
// If there's no native token, we can't represent local gas
|
|
199
|
+
if (!originMetadata.nativeToken)
|
|
200
|
+
throw new Error(`No native token found for ${originMetadata.name}`);
|
|
201
|
+
// Next, get the local gas quote
|
|
202
|
+
const localFee = await this.getLocalTransferFee({
|
|
203
|
+
originToken,
|
|
204
|
+
destination,
|
|
205
|
+
sender,
|
|
206
|
+
senderPubKey,
|
|
207
|
+
interchainFee: interchainQuote,
|
|
208
|
+
});
|
|
209
|
+
// Get the local gas token. This assumes the chain's native token will pay for local gas
|
|
210
|
+
// This will need to be smarter if more complex scenarios on Cosmos are supported
|
|
211
|
+
const localGasToken = Token_1.Token.FromChainMetadataNativeToken(originMetadata);
|
|
212
|
+
const localQuote = localGasToken.amount(localFee.fee);
|
|
213
|
+
return {
|
|
214
|
+
interchainQuote,
|
|
215
|
+
localQuote,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Computes the max transferrable amount of the from the given
|
|
220
|
+
* token balance, accounting for local and interchain gas fees
|
|
221
|
+
*/
|
|
222
|
+
async getMaxTransferAmount({ balance, destination, sender, senderPubKey, feeEstimate, }) {
|
|
223
|
+
const originToken = balance.token;
|
|
224
|
+
if (!feeEstimate) {
|
|
225
|
+
feeEstimate = await this.estimateTransferRemoteFees({
|
|
226
|
+
originToken,
|
|
227
|
+
destination,
|
|
228
|
+
sender,
|
|
229
|
+
senderPubKey,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
const { localQuote, interchainQuote } = feeEstimate;
|
|
233
|
+
let maxAmount = balance;
|
|
234
|
+
if (originToken.isFungibleWith(localQuote.token)) {
|
|
235
|
+
maxAmount = maxAmount.minus(localQuote.amount);
|
|
236
|
+
}
|
|
237
|
+
if (originToken.isFungibleWith(interchainQuote.token)) {
|
|
238
|
+
maxAmount = maxAmount.minus(interchainQuote.amount);
|
|
239
|
+
}
|
|
240
|
+
if (maxAmount.amount > 0)
|
|
241
|
+
return maxAmount;
|
|
242
|
+
else
|
|
243
|
+
return originToken.amount(0);
|
|
244
|
+
}
|
|
124
245
|
/**
|
|
125
246
|
* Checks if destination chain's collateral is sufficient to cover the transfer
|
|
126
247
|
*/
|
|
127
|
-
async isDestinationCollateralSufficient(originTokenAmount, destination) {
|
|
248
|
+
async isDestinationCollateralSufficient({ originTokenAmount, destination, }) {
|
|
128
249
|
const { token: originToken, amount } = originTokenAmount;
|
|
129
250
|
const destinationName = this.multiProvider.getChainName(destination);
|
|
130
251
|
this.logger(`Checking collateral for ${originToken.symbol} to ${destination}`);
|
|
@@ -144,7 +265,7 @@ class WarpCore {
|
|
|
144
265
|
/**
|
|
145
266
|
* Checks if a token transfer requires an approval tx first
|
|
146
267
|
*/
|
|
147
|
-
async isApproveRequired(originTokenAmount, owner) {
|
|
268
|
+
async isApproveRequired({ originTokenAmount, owner, }) {
|
|
148
269
|
const { token, amount } = originTokenAmount;
|
|
149
270
|
const adapter = token.getAdapter(this.multiProvider);
|
|
150
271
|
const isRequired = await adapter.isApproveRequired(owner, token.addressOrDenom, amount);
|
|
@@ -154,7 +275,7 @@ class WarpCore {
|
|
|
154
275
|
/**
|
|
155
276
|
* Ensure the remote token transfer would be valid for the given chains, amount, sender, and recipient
|
|
156
277
|
*/
|
|
157
|
-
async validateTransfer(originTokenAmount, destination, sender,
|
|
278
|
+
async validateTransfer({ originTokenAmount, destination, recipient, sender, senderPubKey, }) {
|
|
158
279
|
const chainError = this.validateChains(originTokenAmount.token.chainName, destination);
|
|
159
280
|
if (chainError)
|
|
160
281
|
return chainError;
|
|
@@ -164,7 +285,7 @@ class WarpCore {
|
|
|
164
285
|
const amountError = this.validateAmount(originTokenAmount);
|
|
165
286
|
if (amountError)
|
|
166
287
|
return amountError;
|
|
167
|
-
const balancesError = await this.validateTokenBalances(originTokenAmount, destination, sender);
|
|
288
|
+
const balancesError = await this.validateTokenBalances(originTokenAmount, destination, sender, senderPubKey);
|
|
168
289
|
if (balancesError)
|
|
169
290
|
return balancesError;
|
|
170
291
|
return null;
|
|
@@ -224,23 +345,36 @@ class WarpCore {
|
|
|
224
345
|
/**
|
|
225
346
|
* Ensure the sender has sufficient balances for transfer and interchain gas
|
|
226
347
|
*/
|
|
227
|
-
async validateTokenBalances(originTokenAmount, destination, sender) {
|
|
348
|
+
async validateTokenBalances(originTokenAmount, destination, sender, senderPubKey) {
|
|
228
349
|
const { token, amount } = originTokenAmount;
|
|
229
350
|
const { amount: senderBalance } = await token.getBalance(this.multiProvider, sender);
|
|
351
|
+
const senderBalanceAmount = originTokenAmount.token.amount(senderBalance);
|
|
230
352
|
// First check basic token balance
|
|
231
353
|
if (amount > senderBalance)
|
|
232
354
|
return { amount: 'Insufficient balance' };
|
|
233
|
-
// Next, ensure balances can cover
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
355
|
+
// Next, ensure balances can cover the COMBINED amount and fees
|
|
356
|
+
const feeEstimate = await this.estimateTransferRemoteFees({
|
|
357
|
+
originToken: token,
|
|
358
|
+
destination,
|
|
359
|
+
sender,
|
|
360
|
+
senderPubKey,
|
|
361
|
+
});
|
|
362
|
+
const maxTransfer = await this.getMaxTransferAmount({
|
|
363
|
+
balance: senderBalanceAmount,
|
|
364
|
+
destination,
|
|
365
|
+
sender,
|
|
366
|
+
senderPubKey,
|
|
367
|
+
feeEstimate,
|
|
368
|
+
});
|
|
369
|
+
if (amount > maxTransfer.amount) {
|
|
370
|
+
return { amount: 'Insufficient balance for gas and transfer' };
|
|
239
371
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
372
|
+
// Finally, ensure there's sufficient balance for the IGP fee, which may
|
|
373
|
+
// be a different token than the transfer token
|
|
374
|
+
const igpQuote = feeEstimate.interchainQuote;
|
|
375
|
+
const igpTokenBalance = await igpQuote.token.getBalance(this.multiProvider, sender);
|
|
376
|
+
if (igpTokenBalance.amount < igpQuote.amount) {
|
|
377
|
+
return { amount: `Insufficient ${igpQuote.token.symbol} for gas` };
|
|
244
378
|
}
|
|
245
379
|
return null;
|
|
246
380
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarpCore.js","sourceRoot":"","sources":["../../src/warp/WarpCore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WarpCore.js","sourceRoot":"","sources":["../../src/warp/WarpCore.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,8 @@ const Token_1 = require("../token/Token");
|
|
|
17
17
|
const TokenStandard_1 = require("../token/TokenStandard");
|
|
18
18
|
const WarpCore_1 = require("./WarpCore");
|
|
19
19
|
const types_1 = require("./types");
|
|
20
|
-
const
|
|
20
|
+
const MOCK_LOCAL_QUOTE = { gasUnits: 2000n, gasPrice: 100, fee: 200000n };
|
|
21
|
+
const MOCK_INTERCHAIN_QUOTE = { amount: 20000n };
|
|
21
22
|
const TRANSFER_AMOUNT = BigInt('1000000000000000000'); // 1 units @ 18 decimals
|
|
22
23
|
const BIG_TRANSFER_AMOUNT = BigInt('100000000000000000000'); // 100 units @ 18 decimals
|
|
23
24
|
const MOCK_BALANCE = BigInt('10000000000000000000'); // 10 units @ 18 decimals
|
|
@@ -30,6 +31,10 @@ describe('WarpCore', () => {
|
|
|
30
31
|
let cwHypCollateral;
|
|
31
32
|
let cw20;
|
|
32
33
|
let cosmosIbc;
|
|
34
|
+
// Stub MultiProvider fee estimation to avoid real network calls
|
|
35
|
+
sinon_1.default
|
|
36
|
+
.stub(multiProvider, 'estimateTransactionFee')
|
|
37
|
+
.returns(Promise.resolve(MOCK_LOCAL_QUOTE));
|
|
33
38
|
it('Constructs', () => {
|
|
34
39
|
const fromArgs = new WarpCore_1.WarpCore(multiProvider, [
|
|
35
40
|
Token_1.Token.FromChainMetadataNativeToken(chainMetadata_1.chainMetadata[chains_1.Chains.ethereum]),
|
|
@@ -56,12 +61,20 @@ describe('WarpCore', () => {
|
|
|
56
61
|
});
|
|
57
62
|
it('Gets transfer gas quote', async () => {
|
|
58
63
|
const stubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
|
|
59
|
-
|
|
64
|
+
quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
|
|
65
|
+
isApproveRequired: () => Promise.resolve(false),
|
|
66
|
+
populateTransferRemoteTx: () => Promise.resolve({}),
|
|
60
67
|
}));
|
|
61
|
-
const testQuote = async (token,
|
|
62
|
-
const result = await warpCore.
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
const testQuote = async (token, destination, standard, interchainQuote = MOCK_INTERCHAIN_QUOTE) => {
|
|
69
|
+
const result = await warpCore.estimateTransferRemoteFees({
|
|
70
|
+
originToken: token,
|
|
71
|
+
destination,
|
|
72
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
73
|
+
});
|
|
74
|
+
(0, chai_1.expect)(result.localQuote.token.standard, `token local standard check for ${token.chainName} to ${destination}`).equals(standard);
|
|
75
|
+
(0, chai_1.expect)(result.localQuote.amount, `token local amount check for ${token.chainName} to ${destination}`).to.equal(MOCK_LOCAL_QUOTE.fee);
|
|
76
|
+
(0, chai_1.expect)(result.interchainQuote.token.standard, `token interchain standard check for ${token.chainName} to ${destination}`).equals(standard);
|
|
77
|
+
(0, chai_1.expect)(result.interchainQuote.amount, `token interchain amount check for ${token.chainName} to ${destination}`).to.equal(interchainQuote.amount);
|
|
65
78
|
};
|
|
66
79
|
await testQuote(evmHypNative, chains_1.Chains.arbitrum, TokenStandard_1.TokenStandard.EvmNative);
|
|
67
80
|
await testQuote(evmHypNative, chains_1.Chains.neutron, TokenStandard_1.TokenStandard.EvmNative);
|
|
@@ -80,11 +93,17 @@ describe('WarpCore', () => {
|
|
|
80
93
|
const stubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
|
|
81
94
|
getBalance: () => Promise.resolve(MOCK_BALANCE),
|
|
82
95
|
}));
|
|
83
|
-
const testCollateral = async (token,
|
|
84
|
-
const smallResult = await warpCore.isDestinationCollateralSufficient(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
96
|
+
const testCollateral = async (token, destination, expectedBigResult = true) => {
|
|
97
|
+
const smallResult = await warpCore.isDestinationCollateralSufficient({
|
|
98
|
+
originTokenAmount: token.amount(TRANSFER_AMOUNT),
|
|
99
|
+
destination,
|
|
100
|
+
});
|
|
101
|
+
(0, chai_1.expect)(smallResult, `small collateral check for ${token.chainName} to ${destination}`).to.be.true;
|
|
102
|
+
const bigResult = await warpCore.isDestinationCollateralSufficient({
|
|
103
|
+
originTokenAmount: token.amount(BIG_TRANSFER_AMOUNT),
|
|
104
|
+
destination,
|
|
105
|
+
});
|
|
106
|
+
(0, chai_1.expect)(bigResult, `big collateral check for ${token.chainName} to ${destination}`).to.equal(expectedBigResult);
|
|
88
107
|
};
|
|
89
108
|
await testCollateral(evmHypNative, chains_1.Chains.arbitrum);
|
|
90
109
|
await testCollateral(evmHypNative, chains_1.Chains.neutron, false);
|
|
@@ -97,17 +116,44 @@ describe('WarpCore', () => {
|
|
|
97
116
|
.stub(t, 'getBalance')
|
|
98
117
|
.returns(Promise.resolve({ amount: MOCK_BALANCE })));
|
|
99
118
|
const quoteStubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
|
|
100
|
-
|
|
119
|
+
quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
|
|
120
|
+
isApproveRequired: () => Promise.resolve(false),
|
|
121
|
+
populateTransferRemoteTx: () => Promise.resolve({}),
|
|
101
122
|
}));
|
|
102
|
-
const validResult = await warpCore.validateTransfer(
|
|
123
|
+
const validResult = await warpCore.validateTransfer({
|
|
124
|
+
originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
|
|
125
|
+
destination: chains_1.Chains.arbitrum,
|
|
126
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
127
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
128
|
+
});
|
|
103
129
|
(0, chai_1.expect)(validResult).to.be.null;
|
|
104
|
-
const invalidChain = await warpCore.validateTransfer(
|
|
130
|
+
const invalidChain = await warpCore.validateTransfer({
|
|
131
|
+
originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
|
|
132
|
+
destination: 'fakechain',
|
|
133
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
134
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
135
|
+
});
|
|
105
136
|
(0, chai_1.expect)(Object.keys(invalidChain || {})[0]).to.equal('destination');
|
|
106
|
-
const invalidRecipient = await warpCore.validateTransfer(
|
|
137
|
+
const invalidRecipient = await warpCore.validateTransfer({
|
|
138
|
+
originTokenAmount: evmHypNative.amount(TRANSFER_AMOUNT),
|
|
139
|
+
destination: chains_1.Chains.neutron,
|
|
140
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
141
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
142
|
+
});
|
|
107
143
|
(0, chai_1.expect)(Object.keys(invalidRecipient || {})[0]).to.equal('recipient');
|
|
108
|
-
const invalidAmount = await warpCore.validateTransfer(
|
|
144
|
+
const invalidAmount = await warpCore.validateTransfer({
|
|
145
|
+
originTokenAmount: evmHypNative.amount(-10),
|
|
146
|
+
destination: chains_1.Chains.arbitrum,
|
|
147
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
148
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
149
|
+
});
|
|
109
150
|
(0, chai_1.expect)(Object.keys(invalidAmount || {})[0]).to.equal('amount');
|
|
110
|
-
const insufficientBalance = await warpCore.validateTransfer(
|
|
151
|
+
const insufficientBalance = await warpCore.validateTransfer({
|
|
152
|
+
originTokenAmount: evmHypNative.amount(BIG_TRANSFER_AMOUNT),
|
|
153
|
+
destination: chains_1.Chains.arbitrum,
|
|
154
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
155
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
156
|
+
});
|
|
111
157
|
(0, chai_1.expect)(Object.keys(insufficientBalance || {})[0]).to.equal('amount');
|
|
112
158
|
balanceStubs.forEach((s) => s.restore());
|
|
113
159
|
quoteStubs.forEach((s) => s.restore());
|
|
@@ -117,13 +163,18 @@ describe('WarpCore', () => {
|
|
|
117
163
|
.stub(warpCore, 'isApproveRequired')
|
|
118
164
|
.returns(Promise.resolve(false));
|
|
119
165
|
const adapterStubs = warpCore.tokens.map((t) => sinon_1.default.stub(t, 'getHypAdapter').returns({
|
|
120
|
-
|
|
166
|
+
quoteTransferRemoteGas: () => Promise.resolve(MOCK_INTERCHAIN_QUOTE),
|
|
121
167
|
populateTransferRemoteTx: () => Promise.resolve({}),
|
|
122
168
|
}));
|
|
123
|
-
const testGetTxs = async (token,
|
|
124
|
-
const result = await warpCore.getTransferRemoteTxs(
|
|
169
|
+
const testGetTxs = async (token, destination, providerType = ProviderType_1.ProviderType.EthersV5) => {
|
|
170
|
+
const result = await warpCore.getTransferRemoteTxs({
|
|
171
|
+
originTokenAmount: token.amount(TRANSFER_AMOUNT),
|
|
172
|
+
destination,
|
|
173
|
+
sender: ethers_1.ethers.constants.AddressZero,
|
|
174
|
+
recipient: ethers_1.ethers.constants.AddressZero,
|
|
175
|
+
});
|
|
125
176
|
(0, chai_1.expect)(result.length).to.equal(1);
|
|
126
|
-
(0, chai_1.expect)(result[0], `transfer tx for ${token.chainName} to ${
|
|
177
|
+
(0, chai_1.expect)(result[0], `transfer tx for ${token.chainName} to ${destination}`).to.eql({
|
|
127
178
|
category: types_1.WarpTxCategory.Transfer,
|
|
128
179
|
transaction: {},
|
|
129
180
|
type: providerType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarpCore.test.js","sourceRoot":"","sources":["../../src/warp/WarpCore.test.ts"],"names":[],"mappings":";;;;;AAAA,+BAA8B;AAC9B,mCAAgC;AAChC,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,+BAA0C;AAE1C,2DAAwD;AACxD,6CAA0C;AAC1C,8EAA2E;AAC3E,4DAAyD;AACzD,0CAAuC;AACvC,0DAAuD;AAIvD,yCAAsC;AACtC,mCAAyC;AAEzC,MAAM,
|
|
1
|
+
{"version":3,"file":"WarpCore.test.js","sourceRoot":"","sources":["../../src/warp/WarpCore.test.ts"],"names":[],"mappings":"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"}
|