@across-protocol/sdk 4.1.41 → 4.1.43
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/cjs/arch/evm/SpokeUtils.d.ts +15 -0
- package/dist/cjs/arch/evm/SpokeUtils.js +312 -0
- package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -0
- package/dist/cjs/arch/evm/index.d.ts +1 -1
- package/dist/cjs/arch/evm/index.js +2 -2
- package/dist/cjs/arch/evm/index.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +3 -2
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +8 -8
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -2
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +11 -8
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +2 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/types.d.ts +2 -2
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +2 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/utils/DepositUtils.js +1 -1
- package/dist/cjs/utils/DepositUtils.js.map +1 -1
- package/dist/cjs/utils/SpokeUtils.d.ts +2 -14
- package/dist/cjs/utils/SpokeUtils.js +8 -313
- package/dist/cjs/utils/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/evm/SpokeUtils.d.ts +58 -0
- package/dist/esm/arch/evm/SpokeUtils.js +345 -0
- package/dist/esm/arch/evm/SpokeUtils.js.map +1 -0
- package/dist/esm/arch/evm/index.d.ts +1 -1
- package/dist/esm/arch/evm/index.js +1 -1
- package/dist/esm/arch/evm/index.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +3 -2
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +8 -8
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -2
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +7 -4
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +9 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/types.d.ts +2 -2
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +2 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/utils/DepositUtils.js +2 -1
- package/dist/esm/utils/DepositUtils.js.map +1 -1
- package/dist/esm/utils/SpokeUtils.d.ts +5 -55
- package/dist/esm/utils/SpokeUtils.js +11 -348
- package/dist/esm/utils/SpokeUtils.js.map +1 -1
- package/dist/types/arch/evm/SpokeUtils.d.ts +59 -0
- package/dist/types/arch/evm/SpokeUtils.d.ts.map +1 -0
- package/dist/types/arch/evm/index.d.ts +1 -1
- package/dist/types/arch/evm/index.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +8 -8
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -2
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +9 -1
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/providers/types.d.ts +2 -2
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/dist/types/utils/DepositUtils.d.ts.map +1 -1
- package/dist/types/utils/SpokeUtils.d.ts +5 -55
- package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/arch/evm/SpokeUtils.ts +324 -0
- package/src/arch/evm/index.ts +1 -1
- package/src/clients/BundleDataClient/BundleDataClient.ts +2 -3
- package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +27 -16
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +13 -5
- package/src/index.ts +1 -0
- package/src/relayFeeCalculator/chain-queries/baseQuery.ts +1 -1
- package/src/utils/DepositUtils.ts +2 -1
- package/src/utils/SpokeUtils.ts +16 -314
|
@@ -1,22 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMessageHash = exports.isZeroAddress = exports.
|
|
3
|
+
exports.getMessageHash = exports.isZeroAddress = exports.isUnsafeDepositId = exports.getRelayHashFromEvent = exports.getRelayDataHash = exports.getDepositRelayData = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
5
|
var ethers_1 = require("ethers");
|
|
7
6
|
var constants_1 = require("../constants");
|
|
8
|
-
var
|
|
9
|
-
var ArrayUtils_1 = require("./ArrayUtils");
|
|
10
|
-
var BigNumberUtils_1 = require("./BigNumberUtils");
|
|
7
|
+
var AddressUtils_1 = require("./AddressUtils");
|
|
11
8
|
var common_1 = require("./common");
|
|
9
|
+
var BigNumberUtils_1 = require("./BigNumberUtils");
|
|
12
10
|
var DepositUtils_1 = require("./DepositUtils");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var EventUtils_1 = require("./EventUtils");
|
|
16
|
-
var AddressUtils_1 = require("./AddressUtils");
|
|
17
|
-
function populateV3Relay(spokePool, deposit, relayer, repaymentChainId) {
|
|
18
|
-
if (repaymentChainId === void 0) { repaymentChainId = deposit.destinationChainId; }
|
|
19
|
-
var v3RelayData = {
|
|
11
|
+
function getDepositRelayData(deposit) {
|
|
12
|
+
return {
|
|
20
13
|
depositor: (0, AddressUtils_1.toBytes32)(deposit.depositor),
|
|
21
14
|
recipient: (0, AddressUtils_1.toBytes32)(deposit.recipient),
|
|
22
15
|
exclusiveRelayer: (0, AddressUtils_1.toBytes32)(deposit.exclusiveRelayer),
|
|
@@ -30,82 +23,11 @@ function populateV3Relay(spokePool, deposit, relayer, repaymentChainId) {
|
|
|
30
23
|
exclusivityDeadline: deposit.exclusivityDeadline,
|
|
31
24
|
message: deposit.message,
|
|
32
25
|
};
|
|
33
|
-
if ((0, TypeGuards_1.isDefined)(deposit.speedUpSignature)) {
|
|
34
|
-
(0, assert_1.default)((0, TypeGuards_1.isDefined)(deposit.updatedRecipient) && !isZeroAddress(deposit.updatedRecipient));
|
|
35
|
-
(0, assert_1.default)((0, TypeGuards_1.isDefined)(deposit.updatedOutputAmount));
|
|
36
|
-
(0, assert_1.default)((0, TypeGuards_1.isDefined)(deposit.updatedMessage));
|
|
37
|
-
return spokePool.populateTransaction.fillRelayWithUpdatedDeposit(v3RelayData, repaymentChainId, (0, AddressUtils_1.toBytes32)(relayer), deposit.updatedOutputAmount, (0, AddressUtils_1.toBytes32)(deposit.updatedRecipient), deposit.updatedMessage, deposit.speedUpSignature, { from: relayer });
|
|
38
|
-
}
|
|
39
|
-
return spokePool.populateTransaction.fillRelay(v3RelayData, repaymentChainId, (0, AddressUtils_1.toBytes32)(relayer), { from: relayer });
|
|
40
|
-
}
|
|
41
|
-
exports.populateV3Relay = populateV3Relay;
|
|
42
|
-
function getTimeAt(spokePool, blockNumber) {
|
|
43
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
44
|
-
var currentTime;
|
|
45
|
-
return tslib_1.__generator(this, function (_a) {
|
|
46
|
-
switch (_a.label) {
|
|
47
|
-
case 0: return [4, spokePool.getCurrentTime({ blockTag: blockNumber })];
|
|
48
|
-
case 1:
|
|
49
|
-
currentTime = _a.sent();
|
|
50
|
-
(0, assert_1.default)(BigNumberUtils_1.BigNumber.isBigNumber(currentTime) && currentTime.lt(BigNumberUtils_1.bnUint32Max));
|
|
51
|
-
return [2, currentTime.toNumber()];
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
exports.getTimeAt = getTimeAt;
|
|
57
|
-
function getTimestampForBlock(provider, blockNumber) {
|
|
58
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
59
|
-
var block;
|
|
60
|
-
return tslib_1.__generator(this, function (_a) {
|
|
61
|
-
switch (_a.label) {
|
|
62
|
-
case 0: return [4, provider.getBlock(blockNumber)];
|
|
63
|
-
case 1:
|
|
64
|
-
block = _a.sent();
|
|
65
|
-
return [2, block.timestamp];
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
exports.getTimestampForBlock = getTimestampForBlock;
|
|
71
|
-
function getMaxFillDeadlineInRange(spokePool, startBlock, endBlock) {
|
|
72
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
73
|
-
var fillDeadlineBuffers;
|
|
74
|
-
return tslib_1.__generator(this, function (_a) {
|
|
75
|
-
switch (_a.label) {
|
|
76
|
-
case 0: return [4, Promise.all([
|
|
77
|
-
spokePool.fillDeadlineBuffer({ blockTag: startBlock }),
|
|
78
|
-
spokePool.fillDeadlineBuffer({ blockTag: endBlock }),
|
|
79
|
-
])];
|
|
80
|
-
case 1:
|
|
81
|
-
fillDeadlineBuffers = _a.sent();
|
|
82
|
-
return [2, Math.max(fillDeadlineBuffers[0], fillDeadlineBuffers[1])];
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
26
|
}
|
|
87
|
-
exports.
|
|
88
|
-
function getDepositIdAtBlock(contract, blockTag) {
|
|
89
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
90
|
-
var _depositIdAtBlock, depositIdAtBlock;
|
|
91
|
-
return tslib_1.__generator(this, function (_a) {
|
|
92
|
-
switch (_a.label) {
|
|
93
|
-
case 0: return [4, contract.numberOfDeposits({ blockTag: blockTag })];
|
|
94
|
-
case 1:
|
|
95
|
-
_depositIdAtBlock = _a.sent();
|
|
96
|
-
depositIdAtBlock = (0, BigNumberUtils_1.toBN)(_depositIdAtBlock);
|
|
97
|
-
if (depositIdAtBlock.lt(BigNumberUtils_1.bnZero)) {
|
|
98
|
-
throw new Error("Invalid deposit count");
|
|
99
|
-
}
|
|
100
|
-
return [2, depositIdAtBlock];
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
exports.getDepositIdAtBlock = getDepositIdAtBlock;
|
|
27
|
+
exports.getDepositRelayData = getDepositRelayData;
|
|
106
28
|
function getRelayDataHash(relayData, destinationChainId) {
|
|
107
|
-
var _relayData = tslib_1.__assign(tslib_1.__assign({}, relayData), { depositor:
|
|
108
|
-
return
|
|
29
|
+
var _relayData = tslib_1.__assign(tslib_1.__assign({}, relayData), { depositor: (0, AddressUtils_1.toBytes32)(relayData.depositor), recipient: (0, AddressUtils_1.toBytes32)(relayData.recipient), inputToken: (0, AddressUtils_1.toBytes32)(relayData.inputToken), outputToken: (0, AddressUtils_1.toBytes32)(relayData.outputToken), exclusiveRelayer: (0, AddressUtils_1.toBytes32)(relayData.exclusiveRelayer) });
|
|
30
|
+
return (0, common_1.keccak256)(ethers_1.utils.defaultAbiCoder.encode([
|
|
109
31
|
"tuple(" +
|
|
110
32
|
"bytes32 depositor," +
|
|
111
33
|
"bytes32 recipient," +
|
|
@@ -128,238 +50,11 @@ function getRelayHashFromEvent(e) {
|
|
|
128
50
|
return getRelayDataHash(e, e.destinationChainId);
|
|
129
51
|
}
|
|
130
52
|
exports.getRelayHashFromEvent = getRelayHashFromEvent;
|
|
131
|
-
function findDepositBlock(spokePool, depositId, lowBlock, highBlock) {
|
|
132
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
133
|
-
var _a, _b, nDepositsLow, nDepositsHigh, midBlock, nDeposits, _c;
|
|
134
|
-
return tslib_1.__generator(this, function (_d) {
|
|
135
|
-
switch (_d.label) {
|
|
136
|
-
case 0:
|
|
137
|
-
if (isUnsafeDepositId(depositId)) {
|
|
138
|
-
throw new Error("Cannot binary search for depositId ".concat(depositId));
|
|
139
|
-
}
|
|
140
|
-
if (!(highBlock !== null && highBlock !== void 0)) return [3, 1];
|
|
141
|
-
_a = highBlock;
|
|
142
|
-
return [3, 3];
|
|
143
|
-
case 1: return [4, spokePool.provider.getBlockNumber()];
|
|
144
|
-
case 2:
|
|
145
|
-
_a = (highBlock = _d.sent());
|
|
146
|
-
_d.label = 3;
|
|
147
|
-
case 3:
|
|
148
|
-
_a;
|
|
149
|
-
(0, assert_1.default)(highBlock > lowBlock, "Block numbers out of range (".concat(lowBlock, " >= ").concat(highBlock, ")"));
|
|
150
|
-
return [4, Promise.all([
|
|
151
|
-
spokePool.numberOfDeposits({ blockTag: lowBlock }),
|
|
152
|
-
spokePool.numberOfDeposits({ blockTag: highBlock }),
|
|
153
|
-
])];
|
|
154
|
-
case 4:
|
|
155
|
-
_b = (_d.sent()).map(function (n) { return (0, BigNumberUtils_1.toBN)(n); }), nDepositsLow = _b[0], nDepositsHigh = _b[1];
|
|
156
|
-
if (nDepositsLow.gt(depositId) || nDepositsHigh.lte(depositId)) {
|
|
157
|
-
return [2, undefined];
|
|
158
|
-
}
|
|
159
|
-
_d.label = 5;
|
|
160
|
-
case 5:
|
|
161
|
-
midBlock = Math.floor((highBlock + lowBlock) / 2);
|
|
162
|
-
_c = BigNumberUtils_1.toBN;
|
|
163
|
-
return [4, spokePool.numberOfDeposits({ blockTag: midBlock })];
|
|
164
|
-
case 6:
|
|
165
|
-
nDeposits = _c.apply(void 0, [_d.sent()]);
|
|
166
|
-
if (nDeposits.gt(depositId)) {
|
|
167
|
-
highBlock = midBlock;
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
lowBlock = midBlock + 1;
|
|
171
|
-
}
|
|
172
|
-
_d.label = 7;
|
|
173
|
-
case 7:
|
|
174
|
-
if (lowBlock < highBlock) return [3, 5];
|
|
175
|
-
_d.label = 8;
|
|
176
|
-
case 8: return [2, lowBlock];
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
exports.findDepositBlock = findDepositBlock;
|
|
182
53
|
function isUnsafeDepositId(depositId) {
|
|
183
54
|
var maxSafeDepositId = BigNumberUtils_1.BigNumber.from(constants_1.MAX_SAFE_DEPOSIT_ID);
|
|
184
55
|
return maxSafeDepositId.lt(depositId);
|
|
185
56
|
}
|
|
186
57
|
exports.isUnsafeDepositId = isUnsafeDepositId;
|
|
187
|
-
function relayFillStatus(spokePool, relayData, blockTag, destinationChainId) {
|
|
188
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
189
|
-
var _a, hash, _fillStatus, fillStatus, originChainId, depositId;
|
|
190
|
-
return tslib_1.__generator(this, function (_b) {
|
|
191
|
-
switch (_b.label) {
|
|
192
|
-
case 0:
|
|
193
|
-
if (!(destinationChainId !== null && destinationChainId !== void 0)) return [3, 1];
|
|
194
|
-
_a = destinationChainId;
|
|
195
|
-
return [3, 3];
|
|
196
|
-
case 1: return [4, spokePool.chainId()];
|
|
197
|
-
case 2:
|
|
198
|
-
_a = (destinationChainId = _b.sent());
|
|
199
|
-
_b.label = 3;
|
|
200
|
-
case 3:
|
|
201
|
-
_a;
|
|
202
|
-
(0, assert_1.default)((0, TypeGuards_1.isDefined)(destinationChainId));
|
|
203
|
-
hash = getRelayDataHash(relayData, destinationChainId);
|
|
204
|
-
return [4, spokePool.fillStatuses(hash, { blockTag: blockTag })];
|
|
205
|
-
case 4:
|
|
206
|
-
_fillStatus = _b.sent();
|
|
207
|
-
fillStatus = Number(_fillStatus);
|
|
208
|
-
if (![interfaces_1.FillStatus.Unfilled, interfaces_1.FillStatus.RequestedSlowFill, interfaces_1.FillStatus.Filled].includes(fillStatus)) {
|
|
209
|
-
originChainId = relayData.originChainId, depositId = relayData.depositId;
|
|
210
|
-
throw new Error("relayFillStatus: Unexpected fillStatus for ".concat(originChainId, " deposit ").concat(depositId.toString(), " (").concat(fillStatus, ")"));
|
|
211
|
-
}
|
|
212
|
-
return [2, fillStatus];
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
exports.relayFillStatus = relayFillStatus;
|
|
218
|
-
function fillStatusArray(spokePool, relayData, blockTag) {
|
|
219
|
-
if (blockTag === void 0) { blockTag = "latest"; }
|
|
220
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
221
|
-
var fillStatuses, destinationChainId, queries, chunkSize, chunkedQueries, multicalls, status, bnUnfilled, bnFilled;
|
|
222
|
-
return tslib_1.__generator(this, function (_a) {
|
|
223
|
-
switch (_a.label) {
|
|
224
|
-
case 0:
|
|
225
|
-
fillStatuses = "fillStatuses";
|
|
226
|
-
return [4, spokePool.chainId()];
|
|
227
|
-
case 1:
|
|
228
|
-
destinationChainId = _a.sent();
|
|
229
|
-
queries = relayData.map(function (relayData) {
|
|
230
|
-
var hash = getRelayDataHash(relayData, destinationChainId);
|
|
231
|
-
return spokePool.interface.encodeFunctionData(fillStatuses, [hash]);
|
|
232
|
-
});
|
|
233
|
-
chunkSize = 250;
|
|
234
|
-
chunkedQueries = (0, ArrayUtils_1.chunk)(queries, chunkSize);
|
|
235
|
-
return [4, Promise.all(chunkedQueries.map(function (queries) { return spokePool.callStatic.multicall(queries, { blockTag: blockTag }); }))];
|
|
236
|
-
case 2:
|
|
237
|
-
multicalls = _a.sent();
|
|
238
|
-
status = multicalls
|
|
239
|
-
.map(function (multicall) {
|
|
240
|
-
return multicall.map(function (result) { return spokePool.interface.decodeFunctionResult(fillStatuses, result)[0]; });
|
|
241
|
-
})
|
|
242
|
-
.flat();
|
|
243
|
-
bnUnfilled = (0, BigNumberUtils_1.toBN)(interfaces_1.FillStatus.Unfilled);
|
|
244
|
-
bnFilled = (0, BigNumberUtils_1.toBN)(interfaces_1.FillStatus.Filled);
|
|
245
|
-
return [2, status.map(function (status) {
|
|
246
|
-
return BigNumberUtils_1.BigNumber.isBigNumber(status) && status.gte(bnUnfilled) && status.lte(bnFilled)
|
|
247
|
-
? status.toNumber()
|
|
248
|
-
: undefined;
|
|
249
|
-
})];
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
exports.fillStatusArray = fillStatusArray;
|
|
255
|
-
function findFillBlock(spokePool, relayData, lowBlockNumber, highBlockNumber) {
|
|
256
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
257
|
-
var provider, _a, destinationChainId, _b, _c, _d, initialFillStatus, finalFillStatus, depositId, originChainId, _e, srcChain, dstChain, midBlockNumber, fillStatus;
|
|
258
|
-
return tslib_1.__generator(this, function (_f) {
|
|
259
|
-
switch (_f.label) {
|
|
260
|
-
case 0:
|
|
261
|
-
provider = spokePool.provider;
|
|
262
|
-
if (!(highBlockNumber !== null && highBlockNumber !== void 0)) return [3, 1];
|
|
263
|
-
_a = highBlockNumber;
|
|
264
|
-
return [3, 3];
|
|
265
|
-
case 1: return [4, provider.getBlockNumber()];
|
|
266
|
-
case 2:
|
|
267
|
-
_a = (highBlockNumber = _f.sent());
|
|
268
|
-
_f.label = 3;
|
|
269
|
-
case 3:
|
|
270
|
-
_a;
|
|
271
|
-
(0, assert_1.default)(highBlockNumber > lowBlockNumber, "Block numbers out of range (".concat(lowBlockNumber, " >= ").concat(highBlockNumber, ")"));
|
|
272
|
-
if (!Object.values(constants_1.CHAIN_IDs).includes(relayData.originChainId)) return [3, 5];
|
|
273
|
-
return [4, provider.getNetwork()];
|
|
274
|
-
case 4:
|
|
275
|
-
_b = (_f.sent()).chainId;
|
|
276
|
-
return [3, 7];
|
|
277
|
-
case 5:
|
|
278
|
-
_c = Number;
|
|
279
|
-
return [4, spokePool.chainId()];
|
|
280
|
-
case 6:
|
|
281
|
-
_b = _c.apply(void 0, [_f.sent()]);
|
|
282
|
-
_f.label = 7;
|
|
283
|
-
case 7:
|
|
284
|
-
destinationChainId = _b;
|
|
285
|
-
(0, assert_1.default)(relayData.originChainId !== destinationChainId, "Origin & destination chain IDs must not be equal (".concat(destinationChainId, ")"));
|
|
286
|
-
return [4, Promise.all([
|
|
287
|
-
relayFillStatus(spokePool, relayData, lowBlockNumber, destinationChainId),
|
|
288
|
-
relayFillStatus(spokePool, relayData, highBlockNumber, destinationChainId),
|
|
289
|
-
])];
|
|
290
|
-
case 8:
|
|
291
|
-
_d = (_f.sent()).map(Number), initialFillStatus = _d[0], finalFillStatus = _d[1];
|
|
292
|
-
if (finalFillStatus !== interfaces_1.FillStatus.Filled) {
|
|
293
|
-
return [2, undefined];
|
|
294
|
-
}
|
|
295
|
-
if (initialFillStatus === interfaces_1.FillStatus.Filled) {
|
|
296
|
-
depositId = relayData.depositId, originChainId = relayData.originChainId;
|
|
297
|
-
_e = [(0, NetworkUtils_1.getNetworkName)(originChainId), (0, NetworkUtils_1.getNetworkName)(destinationChainId)], srcChain = _e[0], dstChain = _e[1];
|
|
298
|
-
throw new Error("".concat(srcChain, " deposit ").concat(depositId.toString(), " filled on ").concat(dstChain, " before block ").concat(lowBlockNumber));
|
|
299
|
-
}
|
|
300
|
-
_f.label = 9;
|
|
301
|
-
case 9:
|
|
302
|
-
midBlockNumber = Math.floor((highBlockNumber + lowBlockNumber) / 2);
|
|
303
|
-
return [4, relayFillStatus(spokePool, relayData, midBlockNumber, destinationChainId)];
|
|
304
|
-
case 10:
|
|
305
|
-
fillStatus = _f.sent();
|
|
306
|
-
if (fillStatus === interfaces_1.FillStatus.Filled) {
|
|
307
|
-
highBlockNumber = midBlockNumber;
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
lowBlockNumber = midBlockNumber + 1;
|
|
311
|
-
}
|
|
312
|
-
_f.label = 11;
|
|
313
|
-
case 11:
|
|
314
|
-
if (lowBlockNumber < highBlockNumber) return [3, 9];
|
|
315
|
-
_f.label = 12;
|
|
316
|
-
case 12: return [2, lowBlockNumber];
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
exports.findFillBlock = findFillBlock;
|
|
322
|
-
function findFillEvent(spokePool, relayData, lowBlockNumber, highBlockNumber) {
|
|
323
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
324
|
-
var blockNumber, maxBlockLookBack, _a, fromBlock, toBlock, query, event, destinationChainId, _b, _c, fill;
|
|
325
|
-
return tslib_1.__generator(this, function (_d) {
|
|
326
|
-
switch (_d.label) {
|
|
327
|
-
case 0: return [4, findFillBlock(spokePool, relayData, lowBlockNumber, highBlockNumber)];
|
|
328
|
-
case 1:
|
|
329
|
-
blockNumber = _d.sent();
|
|
330
|
-
if (!blockNumber)
|
|
331
|
-
return [2, undefined];
|
|
332
|
-
maxBlockLookBack = 0;
|
|
333
|
-
_a = [blockNumber, blockNumber], fromBlock = _a[0], toBlock = _a[1];
|
|
334
|
-
return [4, Promise.all([
|
|
335
|
-
(0, EventUtils_1.paginatedEventQuery)(spokePool, spokePool.filters.FilledRelay(null, null, null, null, null, relayData.originChainId, relayData.depositId), { fromBlock: fromBlock, toBlock: toBlock, maxBlockLookBack: maxBlockLookBack }),
|
|
336
|
-
(0, EventUtils_1.paginatedEventQuery)(spokePool, spokePool.filters.FilledV3Relay(null, null, null, null, null, relayData.originChainId, relayData.depositId), { fromBlock: fromBlock, toBlock: toBlock, maxBlockLookBack: maxBlockLookBack }),
|
|
337
|
-
])];
|
|
338
|
-
case 2:
|
|
339
|
-
query = (_d.sent()).flat();
|
|
340
|
-
if (query.length === 0)
|
|
341
|
-
throw new Error("Failed to find fill event at block ".concat(blockNumber));
|
|
342
|
-
event = query[0];
|
|
343
|
-
if (!Object.values(constants_1.CHAIN_IDs).includes(relayData.originChainId)) return [3, 4];
|
|
344
|
-
return [4, spokePool.provider.getNetwork()];
|
|
345
|
-
case 3:
|
|
346
|
-
_b = (_d.sent()).chainId;
|
|
347
|
-
return [3, 6];
|
|
348
|
-
case 4:
|
|
349
|
-
_c = Number;
|
|
350
|
-
return [4, spokePool.chainId()];
|
|
351
|
-
case 5:
|
|
352
|
-
_b = _c.apply(void 0, [_d.sent()]);
|
|
353
|
-
_d.label = 6;
|
|
354
|
-
case 6:
|
|
355
|
-
destinationChainId = _b;
|
|
356
|
-
fill = tslib_1.__assign(tslib_1.__assign({}, (0, EventUtils_1.spreadEventWithBlockNumber)(event)), { destinationChainId: destinationChainId, messageHash: getMessageHash(event.args.message) });
|
|
357
|
-
return [2, fill];
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
exports.findFillEvent = findFillEvent;
|
|
363
58
|
function isZeroAddress(address) {
|
|
364
59
|
return address === constants_1.ZERO_ADDRESS || address === constants_1.ZERO_BYTES;
|
|
365
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpokeUtils.js","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpokeUtils.js","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":";;;;AAAA,iCAA8C;AAC9C,0CAA6E;AAE7E,+CAA2C;AAC3C,mCAAqC;AACrC,mDAA6C;AAC7C,+CAAgD;AAOhD,SAAgB,mBAAmB,CAAC,OAAqC;IACvE,OAAO;QACL,SAAS,EAAE,IAAA,wBAAS,EAAC,OAAO,CAAC,SAAS,CAAC;QACvC,SAAS,EAAE,IAAA,wBAAS,EAAC,OAAO,CAAC,SAAS,CAAC;QACvC,gBAAgB,EAAE,IAAA,wBAAS,EAAC,OAAO,CAAC,gBAAgB,CAAC;QACrD,UAAU,EAAE,IAAA,wBAAS,EAAC,OAAO,CAAC,UAAU,CAAC;QACzC,WAAW,EAAE,IAAA,wBAAS,EAAC,OAAO,CAAC,WAAW,CAAC;QAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAfD,kDAeC;AAQD,SAAgB,gBAAgB,CAAC,SAAoB,EAAE,kBAA0B;IAC/E,IAAM,UAAU,yCACX,SAAS,KACZ,SAAS,EAAE,IAAA,wBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,EACzC,SAAS,EAAE,IAAA,wBAAS,EAAC,SAAS,CAAC,SAAS,CAAC,EACzC,UAAU,EAAE,IAAA,wBAAS,EAAC,SAAS,CAAC,UAAU,CAAC,EAC3C,WAAW,EAAE,IAAA,wBAAS,EAAC,SAAS,CAAC,WAAW,CAAC,EAC7C,gBAAgB,EAAE,IAAA,wBAAS,EAAC,SAAS,CAAC,gBAAgB,CAAC,GACxD,CAAC;IACF,OAAO,IAAA,kBAAS,EACd,cAAW,CAAC,eAAe,CAAC,MAAM,CAChC;QACE,QAAQ;YACN,oBAAoB;YACpB,oBAAoB;YACpB,2BAA2B;YAC3B,qBAAqB;YACrB,sBAAsB;YACtB,sBAAsB;YACtB,uBAAuB;YACvB,wBAAwB;YACxB,oBAAoB;YACpB,sBAAsB;YACtB,6BAA6B;YAC7B,eAAe;YACf,GAAG;QACL,4BAA4B;KAC7B,EACD,CAAC,UAAU,EAAE,kBAAkB,CAAC,CACjC,CACF,CAAC;AACJ,CAAC;AA/BD,4CA+BC;AAED,SAAgB,qBAAqB,CAAC,CAA6C;IACjF,OAAO,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACnD,CAAC;AAFD,sDAEC;AAED,SAAgB,iBAAiB,CAAC,SAAoB;IAMpD,IAAM,gBAAgB,GAAG,0BAAS,CAAC,IAAI,CAAC,+BAAmB,CAAC,CAAC;IAC7D,OAAO,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AARD,8CAQC;AAGD,SAAgB,aAAa,CAAC,OAAe;IAC3C,OAAO,OAAO,KAAK,wBAAY,IAAI,OAAO,KAAK,sBAAU,CAAC;AAC5D,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAAC,OAAe;IAC5C,OAAO,IAAA,6BAAc,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,sBAAU,CAAC,CAAC,CAAC,IAAA,kBAAS,EAAC,OAAO,CAAC,CAAC;AACnE,CAAC;AAFD,wCAEC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Contract, PopulatedTransaction, providers } from "ethers";
|
|
2
|
+
import { Deposit, FillStatus, FillWithBlock, RelayData } from "../../interfaces";
|
|
3
|
+
import { BigNumber } from "../../utils";
|
|
4
|
+
type BlockTag = providers.BlockTag;
|
|
5
|
+
/**
|
|
6
|
+
* @param spokePool SpokePool Contract instance.
|
|
7
|
+
* @param deposit V3Deopsit instance.
|
|
8
|
+
* @param repaymentChainId Optional repaymentChainId (defaults to destinationChainId).
|
|
9
|
+
* @returns An Ethers UnsignedTransaction instance.
|
|
10
|
+
*/
|
|
11
|
+
export declare function populateV3Relay(spokePool: Contract, deposit: Omit<Deposit, "messageHash">, relayer: string, repaymentChainId?: number): Promise<PopulatedTransaction>;
|
|
12
|
+
/**
|
|
13
|
+
* Retrieves the time from the SpokePool contract at a particular block.
|
|
14
|
+
* @returns The time at the specified block tag.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getTimeAt(spokePool: Contract, blockNumber: number): Promise<number>;
|
|
17
|
+
/**
|
|
18
|
+
* Retrieves the chain time at a particular block.
|
|
19
|
+
* @note This should be the same as getTimeAt() but can differ in test. These two functions should be consolidated.
|
|
20
|
+
* @returns The chain time at the specified block tag.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getTimestampForBlock(provider: providers.Provider, blockNumber: number): Promise<number>;
|
|
23
|
+
/**
|
|
24
|
+
* Return maximum of fill deadline buffer at start and end of block range.
|
|
25
|
+
* @param spokePool SpokePool contract instance
|
|
26
|
+
* @param startBlock start block
|
|
27
|
+
* @param endBlock end block
|
|
28
|
+
* @returns maximum of fill deadline buffer at start and end block
|
|
29
|
+
*/
|
|
30
|
+
export declare function getMaxFillDeadlineInRange(spokePool: Contract, startBlock: number, endBlock: number): Promise<number>;
|
|
31
|
+
/**
|
|
32
|
+
* Finds the deposit id at a specific block number.
|
|
33
|
+
* @param blockTag The block number to search for the deposit ID at.
|
|
34
|
+
* @returns The deposit ID.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getDepositIdAtBlock(contract: Contract, blockTag: number): Promise<BigNumber>;
|
|
37
|
+
export declare function findDepositBlock(spokePool: Contract, depositId: BigNumber, lowBlock: number, highBlock?: number): Promise<number | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* Find the amount filled for a deposit at a particular block.
|
|
40
|
+
* @param spokePool SpokePool contract instance.
|
|
41
|
+
* @param relayData Deposit information that is used to complete a fill.
|
|
42
|
+
* @param blockTag Block tag (numeric or "latest") to query at.
|
|
43
|
+
* @returns The amount filled for the specified deposit at the requested block (or latest).
|
|
44
|
+
*/
|
|
45
|
+
export declare function relayFillStatus(spokePool: Contract, relayData: RelayData, blockTag?: number | "latest", destinationChainId?: number): Promise<FillStatus>;
|
|
46
|
+
export declare function fillStatusArray(spokePool: Contract, relayData: RelayData[], blockTag?: BlockTag): Promise<(FillStatus | undefined)[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Find the block at which a fill was completed.
|
|
49
|
+
* @todo After SpokePool upgrade, this function can be simplified to use the FillStatus enum.
|
|
50
|
+
* @param spokePool SpokePool contract instance.
|
|
51
|
+
* @param relayData Deposit information that is used to complete a fill.
|
|
52
|
+
* @param lowBlockNumber The lower bound of the search. Must be bounded by SpokePool deployment.
|
|
53
|
+
* @param highBlocknumber Optional upper bound for the search.
|
|
54
|
+
* @returns The block number at which the relay was completed, or undefined.
|
|
55
|
+
*/
|
|
56
|
+
export declare function findFillBlock(spokePool: Contract, relayData: RelayData, lowBlockNumber: number, highBlockNumber?: number): Promise<number | undefined>;
|
|
57
|
+
export declare function findFillEvent(spokePool: Contract, relayData: RelayData, lowBlockNumber: number, highBlockNumber?: number): Promise<FillWithBlock | undefined>;
|
|
58
|
+
export {};
|