@across-protocol/sdk 4.2.2-alpha.0 → 4.2.2
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/svm/BlockUtils.d.ts +15 -0
- package/dist/cjs/arch/svm/BlockUtils.js +181 -0
- package/dist/cjs/arch/svm/BlockUtils.js.map +1 -0
- package/dist/cjs/arch/svm/index.d.ts +1 -0
- package/dist/cjs/arch/svm/index.js +1 -0
- package/dist/cjs/arch/svm/index.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +1 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +2 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +19 -18
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +3 -4
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +13 -5
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/index.d.ts +3 -3
- package/dist/cjs/clients/SpokePoolClient/index.js +5 -5
- package/dist/cjs/clients/index.d.ts +1 -1
- package/dist/cjs/clients/index.js +2 -2
- package/dist/cjs/clients/mocks/MockSpokePoolClient.d.ts +11 -5
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js +35 -18
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +1 -1
- package/dist/cjs/constants.d.ts +1 -1
- package/dist/cjs/constants.js +3 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/interfaces/SpokePool.d.ts +3 -1
- package/dist/cjs/interfaces/SpokePool.js.map +1 -1
- package/dist/cjs/providers/infura.js +1 -0
- package/dist/cjs/providers/infura.js.map +1 -1
- package/dist/cjs/utils/BlockFinder.d.ts +0 -1
- package/dist/cjs/utils/BlockFinder.js.map +1 -1
- package/dist/cjs/utils/NetworkUtils.d.ts +0 -2
- package/dist/cjs/utils/NetworkUtils.js +18 -26
- package/dist/cjs/utils/NetworkUtils.js.map +1 -1
- package/dist/esm/arch/svm/BlockUtils.d.ts +25 -0
- package/dist/esm/arch/svm/BlockUtils.js +208 -0
- package/dist/esm/arch/svm/BlockUtils.js.map +1 -0
- package/dist/esm/arch/svm/index.d.ts +1 -0
- package/dist/esm/arch/svm/index.js +1 -0
- package/dist/esm/arch/svm/index.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +2 -2
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +3 -2
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +19 -18
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +3 -4
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +13 -5
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/index.d.ts +3 -3
- package/dist/esm/clients/SpokePoolClient/index.js +4 -4
- package/dist/esm/clients/index.d.ts +1 -1
- package/dist/esm/clients/index.js +1 -1
- package/dist/esm/clients/mocks/MockSpokePoolClient.d.ts +11 -5
- package/dist/esm/clients/mocks/MockSpokePoolClient.js +38 -21
- package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +2 -2
- package/dist/esm/constants.d.ts +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/interfaces/SpokePool.d.ts +3 -1
- package/dist/esm/interfaces/SpokePool.js.map +1 -1
- package/dist/esm/providers/infura.js +1 -0
- package/dist/esm/providers/infura.js.map +1 -1
- package/dist/esm/utils/BlockFinder.d.ts +0 -1
- package/dist/esm/utils/BlockFinder.js.map +1 -1
- package/dist/esm/utils/NetworkUtils.d.ts +0 -12
- package/dist/esm/utils/NetworkUtils.js +5 -19
- package/dist/esm/utils/NetworkUtils.js.map +1 -1
- package/dist/types/arch/svm/BlockUtils.d.ts +26 -0
- package/dist/types/arch/svm/BlockUtils.d.ts.map +1 -0
- package/dist/types/arch/svm/index.d.ts +1 -0
- package/dist/types/arch/svm/index.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +3 -4
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/index.d.ts +3 -3
- package/dist/types/clients/index.d.ts +1 -1
- package/dist/types/clients/mocks/MockSpokePoolClient.d.ts +11 -5
- package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/interfaces/SpokePool.d.ts +3 -1
- package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
- package/dist/types/providers/infura.d.ts.map +1 -1
- package/dist/types/utils/BlockFinder.d.ts +0 -1
- package/dist/types/utils/BlockFinder.d.ts.map +1 -1
- package/dist/types/utils/NetworkUtils.d.ts +0 -12
- package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/arch/svm/BlockUtils.ts +171 -0
- package/src/arch/svm/index.ts +1 -0
- package/src/clients/BundleDataClient/BundleDataClient.ts +2 -2
- package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +3 -1
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +6 -4
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +18 -8
- package/src/clients/SpokePoolClient/index.ts +4 -4
- package/src/clients/index.ts +1 -1
- package/src/clients/mocks/MockSpokePoolClient.ts +66 -36
- package/src/clients/mocks/MockSvmSpokePoolClient.ts +2 -2
- package/src/constants.ts +2 -0
- package/src/interfaces/SpokePool.ts +4 -1
- package/src/providers/infura.ts +1 -0
- package/src/utils/BlockFinder.ts +0 -1
- package/src/utils/NetworkUtils.ts +13 -21
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { __awaiter, __extends, __generator } from "tslib";
|
|
3
|
+
import assert from "assert";
|
|
4
|
+
import { clamp, sortedIndexBy } from "lodash";
|
|
5
|
+
import { BlockFinder, } from "../../utils/BlockFinder";
|
|
6
|
+
import { isDefined } from "../../utils/TypeGuards";
|
|
7
|
+
import { getCurrentTime } from "../../utils/TimeUtils";
|
|
8
|
+
import { CHAIN_IDs } from "../../constants";
|
|
9
|
+
var now = getCurrentTime();
|
|
10
|
+
var averageBlockTimes = (_a = {},
|
|
11
|
+
_a[CHAIN_IDs.SOLANA] = { average: 0.4, timestamp: now, blockRange: 1 },
|
|
12
|
+
_a);
|
|
13
|
+
/**
|
|
14
|
+
* @description Compute the average slot time over a slot range.
|
|
15
|
+
* @dev Solana slots are all defined to be ~400ms away from each other += a small deviation, so we can hardcode this.
|
|
16
|
+
* @returns Average number of seconds per slot
|
|
17
|
+
*/
|
|
18
|
+
export function averageBlockTime(_provider, _opts) {
|
|
19
|
+
if (_opts === void 0) { _opts = {}; }
|
|
20
|
+
// @todo This may need to be expanded to work without assuming that chainId = CHAIN_IDs.SOLANA.
|
|
21
|
+
return averageBlockTimes[CHAIN_IDs.SOLANA];
|
|
22
|
+
}
|
|
23
|
+
function estimateBlocksElapsed(seconds, cushionPercentage, provider) {
|
|
24
|
+
if (cushionPercentage === void 0) { cushionPercentage = 0.0; }
|
|
25
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
26
|
+
var cushionMultiplier, average;
|
|
27
|
+
return __generator(this, function (_a) {
|
|
28
|
+
switch (_a.label) {
|
|
29
|
+
case 0:
|
|
30
|
+
cushionMultiplier = cushionPercentage + 1.0;
|
|
31
|
+
return [4 /*yield*/, averageBlockTime(provider)];
|
|
32
|
+
case 1:
|
|
33
|
+
average = (_a.sent()).average;
|
|
34
|
+
return [2 /*return*/, Math.floor((seconds * cushionMultiplier) / average)];
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
var SVMBlockFinder = /** @class */ (function (_super) {
|
|
40
|
+
__extends(SVMBlockFinder, _super);
|
|
41
|
+
function SVMBlockFinder(provider, blocks) {
|
|
42
|
+
if (blocks === void 0) { blocks = []; }
|
|
43
|
+
var _this = _super.call(this) || this;
|
|
44
|
+
_this.provider = provider;
|
|
45
|
+
_this.blocks = blocks;
|
|
46
|
+
return _this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @notice Gets the latest slot whose timestamp is <= the provided timestamp.
|
|
50
|
+
* @param number Timestamp timestamp to search.
|
|
51
|
+
* @param hints Optional low and high slot to bound the search space.
|
|
52
|
+
*/
|
|
53
|
+
SVMBlockFinder.prototype.getBlockForTimestamp = function (timestamp, hints) {
|
|
54
|
+
if (hints === void 0) { hints = {}; }
|
|
55
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
+
var block, initialBlock, cushion, incrementDistance, _a, _b, multiplier, distance, blockNumber, block, index;
|
|
57
|
+
var _this = this;
|
|
58
|
+
return __generator(this, function (_c) {
|
|
59
|
+
switch (_c.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
timestamp = Number(timestamp);
|
|
62
|
+
assert(timestamp !== undefined && timestamp !== null, "timestamp must be provided");
|
|
63
|
+
if (!(this.blocks.length === 0 || this.blocks[this.blocks.length - 1].timestamp < timestamp)) return [3 /*break*/, 2];
|
|
64
|
+
return [4 /*yield*/, this.getLatestBlock()];
|
|
65
|
+
case 1:
|
|
66
|
+
block = _c.sent();
|
|
67
|
+
if (timestamp >= block.timestamp)
|
|
68
|
+
return [2 /*return*/, block];
|
|
69
|
+
_c.label = 2;
|
|
70
|
+
case 2:
|
|
71
|
+
// Prime the BlockFinder cache with any supplied hints.
|
|
72
|
+
// If the hint is accurate, then this will bypass the subsequent estimation.
|
|
73
|
+
return [4 /*yield*/, Promise.all(Object.values(hints)
|
|
74
|
+
.filter(isDefined)
|
|
75
|
+
.map(function (blockNumber) { return _this.getBlock(blockNumber); }))];
|
|
76
|
+
case 3:
|
|
77
|
+
// Prime the BlockFinder cache with any supplied hints.
|
|
78
|
+
// If the hint is accurate, then this will bypass the subsequent estimation.
|
|
79
|
+
_c.sent();
|
|
80
|
+
if (!(this.blocks[0].timestamp > timestamp)) return [3 /*break*/, 8];
|
|
81
|
+
initialBlock = this.blocks[0];
|
|
82
|
+
cushion = 1;
|
|
83
|
+
_b = (_a = Math).max;
|
|
84
|
+
// Ensure the increment slot distance is _at least_ a single slot to prevent an infinite loop.
|
|
85
|
+
return [4 /*yield*/, estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider)];
|
|
86
|
+
case 4:
|
|
87
|
+
incrementDistance = _b.apply(_a, [
|
|
88
|
+
// Ensure the increment slot distance is _at least_ a single slot to prevent an infinite loop.
|
|
89
|
+
_c.sent(), 1]);
|
|
90
|
+
multiplier = 1;
|
|
91
|
+
_c.label = 5;
|
|
92
|
+
case 5:
|
|
93
|
+
distance = multiplier * incrementDistance;
|
|
94
|
+
blockNumber = Math.max(0, initialBlock.number - distance);
|
|
95
|
+
return [4 /*yield*/, this.getBlock(blockNumber)];
|
|
96
|
+
case 6:
|
|
97
|
+
block = _c.sent();
|
|
98
|
+
if (block.timestamp <= timestamp)
|
|
99
|
+
return [3 /*break*/, 8]; // Found an earlier block.
|
|
100
|
+
assert(blockNumber > 0, "timestamp is before block 0");
|
|
101
|
+
_c.label = 7;
|
|
102
|
+
case 7:
|
|
103
|
+
multiplier++;
|
|
104
|
+
return [3 /*break*/, 5];
|
|
105
|
+
case 8:
|
|
106
|
+
index = sortedIndexBy(this.blocks, { timestamp: timestamp }, "timestamp");
|
|
107
|
+
return [2 /*return*/, this.findBlock(this.blocks[index - 1], this.blocks[index], timestamp)];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
// Grabs the most recent slot and caches it.
|
|
113
|
+
SVMBlockFinder.prototype.getLatestBlock = function () {
|
|
114
|
+
var _a;
|
|
115
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
116
|
+
var latestSlot, estimatedSlotTime, block, index;
|
|
117
|
+
return __generator(this, function (_b) {
|
|
118
|
+
switch (_b.label) {
|
|
119
|
+
case 0: return [4 /*yield*/, this.provider.getSlot().send()];
|
|
120
|
+
case 1:
|
|
121
|
+
latestSlot = _b.sent();
|
|
122
|
+
return [4 /*yield*/, this.provider.getBlockTime(latestSlot).send()];
|
|
123
|
+
case 2:
|
|
124
|
+
estimatedSlotTime = _b.sent();
|
|
125
|
+
block = {
|
|
126
|
+
timestamp: Number(estimatedSlotTime),
|
|
127
|
+
number: Number(latestSlot),
|
|
128
|
+
};
|
|
129
|
+
index = sortedIndexBy(this.blocks, block, "number");
|
|
130
|
+
if (((_a = this.blocks[index]) === null || _a === void 0 ? void 0 : _a.number) !== block.number)
|
|
131
|
+
this.blocks.splice(index, 0, block);
|
|
132
|
+
return [2 /*return*/, this.blocks[index]];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
// Grabs the slot for a particular number and caches it.
|
|
138
|
+
SVMBlockFinder.prototype.getBlock = function (number) {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
141
|
+
var index, estimatedSlotTime, block;
|
|
142
|
+
return __generator(this, function (_c) {
|
|
143
|
+
switch (_c.label) {
|
|
144
|
+
case 0:
|
|
145
|
+
index = sortedIndexBy(this.blocks, { number: number }, "number");
|
|
146
|
+
if (((_a = this.blocks[index]) === null || _a === void 0 ? void 0 : _a.number) === number)
|
|
147
|
+
return [2 /*return*/, this.blocks[index]]; // Return early if block already exists.
|
|
148
|
+
return [4 /*yield*/, this.provider.getBlockTime(BigInt(number)).send()];
|
|
149
|
+
case 1:
|
|
150
|
+
estimatedSlotTime = _c.sent();
|
|
151
|
+
block = {
|
|
152
|
+
timestamp: Number(estimatedSlotTime),
|
|
153
|
+
number: number,
|
|
154
|
+
};
|
|
155
|
+
// Recompute the index after the async call since the state of this.blocks could have changed!
|
|
156
|
+
index = sortedIndexBy(this.blocks, { number: number }, "number");
|
|
157
|
+
// Rerun this check to avoid duplicate insertion.
|
|
158
|
+
if (((_b = this.blocks[index]) === null || _b === void 0 ? void 0 : _b.number) === number)
|
|
159
|
+
return [2 /*return*/, this.blocks[index]];
|
|
160
|
+
this.blocks.splice(index, 0, block); // A simple insert at index.
|
|
161
|
+
return [2 /*return*/, block];
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
// Return the latest slot, between startSlot and endSlot, whose timestamp is <= timestamp.
|
|
167
|
+
// Effectively, this is an interpolation search algorithm to minimize slot requests.
|
|
168
|
+
// Note: startSlot and endSlot _must_ be different slots.
|
|
169
|
+
SVMBlockFinder.prototype.findBlock = function (_startSlot, _endSlot, timestamp) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
171
|
+
var _a, startBlock, endBlock, totalTimeDifference, totalBlockDistance, blockPercentile, estimatedBlock, newBlock;
|
|
172
|
+
return __generator(this, function (_b) {
|
|
173
|
+
switch (_b.label) {
|
|
174
|
+
case 0:
|
|
175
|
+
_a = [_startSlot, _endSlot], startBlock = _a[0], endBlock = _a[1];
|
|
176
|
+
// In the case of equality, the endBlock is expected to be passed as the one whose timestamp === the requested
|
|
177
|
+
// timestamp.
|
|
178
|
+
if (endBlock.timestamp === timestamp)
|
|
179
|
+
return [2 /*return*/, endBlock];
|
|
180
|
+
// If there's no equality, but the blocks are adjacent, return the startBlock, since we want the returned slot's
|
|
181
|
+
// timestamp to be <= the requested timestamp.
|
|
182
|
+
if (endBlock.number === startBlock.number + 1)
|
|
183
|
+
return [2 /*return*/, startBlock];
|
|
184
|
+
assert(endBlock.number !== startBlock.number, "startBlock cannot equal endBlock");
|
|
185
|
+
assert(timestamp < endBlock.timestamp && timestamp > startBlock.timestamp, "timestamp not in between start and end blocks");
|
|
186
|
+
totalTimeDifference = endBlock.timestamp - startBlock.timestamp;
|
|
187
|
+
totalBlockDistance = endBlock.number - startBlock.number;
|
|
188
|
+
blockPercentile = (timestamp - startBlock.timestamp) / totalTimeDifference;
|
|
189
|
+
estimatedBlock = startBlock.number + Math.round(blockPercentile * totalBlockDistance);
|
|
190
|
+
return [4 /*yield*/, this.getBlock(clamp(estimatedBlock, startBlock.number + 1, endBlock.number - 1))];
|
|
191
|
+
case 1:
|
|
192
|
+
newBlock = _b.sent();
|
|
193
|
+
// Depending on whether the new slot is below or above the timestamp, narrow the search space accordingly.
|
|
194
|
+
if (newBlock.timestamp < timestamp) {
|
|
195
|
+
return [2 /*return*/, this.findBlock(newBlock, endBlock, timestamp)];
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
return [2 /*return*/, this.findBlock(startBlock, newBlock, timestamp)];
|
|
199
|
+
}
|
|
200
|
+
return [2 /*return*/];
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
return SVMBlockFinder;
|
|
206
|
+
}(BlockFinder));
|
|
207
|
+
export { SVMBlockFinder };
|
|
208
|
+
//# sourceMappingURL=BlockUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/BlockUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/arch/svm/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/arch/svm/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { findFillEvent as findEvmFillEvent } from "../../arch/evm";
|
|
|
6
6
|
import { findFillEvent as findSvmFillEvent } from "../../arch/svm";
|
|
7
7
|
import { BigNumber, bnZero, queryHistoricalDepositForFill, assign, fixedPointAdjustment, isDefined, toBN, forEachAsync, getBlockRangeForChain, getImpliedBundleBlockRanges, getRelayEventKey, isSlowFill, mapAsync, bnUint32Max, isZeroValueDeposit, isZeroValueFillOrSlowFillRequest, chainIsEvm, isValidEvmAddress, duplicateEvent, invalidOutputToken, } from "../../utils";
|
|
8
8
|
import { BundleDataSS, getEndBlockBuffers, getRefundInformationFromFill, getRefundsFromBundle, getWidestPossibleExpectedBlockRange, isChainDisabled, prettyPrintV3SpokePoolEvents, verifyFillRepayment, } from "./utils";
|
|
9
|
-
import { isEVMSpokePoolClient,
|
|
9
|
+
import { isEVMSpokePoolClient, isSVMSpokePoolClient } from "../SpokePoolClient";
|
|
10
10
|
// max(uint256) - 1
|
|
11
11
|
export var INFINITE_FILL_DEADLINE = bnUint32Max;
|
|
12
12
|
// V3 dictionary helper functions
|
|
@@ -1396,7 +1396,7 @@ var BundleDataClient = /** @class */ (function () {
|
|
|
1396
1396
|
return __generator(this, function (_a) {
|
|
1397
1397
|
switch (_a.label) {
|
|
1398
1398
|
case 0:
|
|
1399
|
-
if (!
|
|
1399
|
+
if (!isSVMSpokePoolClient(spokePoolClient)) return [3 /*break*/, 2];
|
|
1400
1400
|
return [4 /*yield*/, findSvmFillEvent(deposit, spokePoolClient.chainId, spokePoolClient.svmEventsClient, spokePoolClient.deploymentBlock, spokePoolClient.latestHeightSearched)];
|
|
1401
1401
|
case 1: return [2 /*return*/, _a.sent()];
|
|
1402
1402
|
case 2:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __extends, __generator, __spreadArray } from "tslib";
|
|
2
2
|
import { fillStatusArray, findDepositBlock, getMaxFillDeadlineInRange as getMaxFillDeadline, getTimeAt as _getTimeAt, relayFillStatus, getTimestampForBlock as _getTimestampForBlock, } from "../../arch/evm";
|
|
3
|
-
import { BigNumber, getNetworkName, InvalidFill, isZeroAddress, toBN, } from "../../utils";
|
|
3
|
+
import { BigNumber, getNetworkName, InvalidFill, isZeroAddress, toBN, EvmAddress, } from "../../utils";
|
|
4
4
|
import { logToSortableEvent, paginatedEventQuery, sortEventsAscendingInPlace, spreadEventWithBlockNumber, } from "../../utils/EventUtils";
|
|
5
5
|
import { isUpdateFailureReason } from "../BaseAbstractClient";
|
|
6
6
|
import { knownEventNames, SpokePoolClient } from "./SpokePoolClient";
|
|
@@ -13,6 +13,7 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
13
13
|
if (eventSearchConfig === void 0) { eventSearchConfig = { from: 0, maxLookBack: 0 }; }
|
|
14
14
|
var _this = _super.call(this, logger, hubPoolClient, chainId, deploymentBlock, eventSearchConfig) || this;
|
|
15
15
|
_this.spokePool = spokePool;
|
|
16
|
+
_this.spokePoolAddress = EvmAddress.from(spokePool.address);
|
|
16
17
|
return _this;
|
|
17
18
|
}
|
|
18
19
|
EVMSpokePoolClient.prototype.relayFillStatus = function (relayData, atHeight) {
|
|
@@ -162,7 +163,7 @@ var EVMSpokePoolClient = /** @class */ (function (_super) {
|
|
|
162
163
|
deposit.toLiteChain = this.isDestinationLiteChain(deposit);
|
|
163
164
|
this.logger.debug({
|
|
164
165
|
at: "SpokePoolClient#findDeposit",
|
|
165
|
-
message: "Located deposit outside of SpokePoolClient's search range",
|
|
166
|
+
message: "Located V3 deposit outside of SpokePoolClient's search range",
|
|
166
167
|
deposit: deposit,
|
|
167
168
|
elapsedMs: tStop - tStart,
|
|
168
169
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/EVMSpokePoolClient.ts"],"names":[],"mappings":";AACA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,yBAAyB,IAAI,kBAAkB,EAC/C,SAAS,IAAI,UAAU,EACvB,eAAe,EACf,oBAAoB,IAAI,qBAAqB,GAC9C,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,SAAS,EAET,cAAc,EACd,WAAW,EACX,aAAa,EAEb,IAAI,
|
|
1
|
+
{"version":3,"file":"EVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/EVMSpokePoolClient.ts"],"names":[],"mappings":";AACA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,yBAAyB,IAAI,kBAAkB,EAC/C,SAAS,IAAI,UAAU,EACvB,eAAe,EACf,oBAAoB,IAAI,qBAAqB,GAC9C,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,SAAS,EAET,cAAc,EACd,WAAW,EACX,aAAa,EAEb,IAAI,EACJ,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAmB,MAAM,mBAAmB,CAAC;AAItF;;GAEG;AACH;IAAwC,sCAAe;IACrD,4BACE,MAAsB,EACN,SAAmB,EACnC,aAAmC,EACnC,OAAe,EACf,eAAuB,EACvB,iBAAsF;QAAtF,kCAAA,EAAA,sBAA6D,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;QANxF,YAQE,kBAAM,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,SAE1E;QARiB,eAAS,GAAT,SAAS,CAAU;QAOnC,KAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;;IAC7D,CAAC;IAEe,4CAAe,GAA/B,UAAgC,SAAoB,EAAE,QAAiB;QACrE,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEe,4CAAe,GAA/B,UAAgC,SAAsB,EAAE,QAAiB;QACvE,OAAO,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEe,sDAAyB,GAAzC,UAA0C,UAAkB,EAAE,QAAgB;QAC5E,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAEO,oDAAuB,GAA/B,UAAgC,UAAsC;QAAtE,iBAMC;QAN+B,2BAAA,EAAA,4BAAsC;QACpE,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS;aAC/B,MAAM,CAAC,UAAC,EAAc;gBAAZ,IAAI,UAAA,EAAE,IAAI,UAAA;YAAO,OAAA,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAA7C,CAA6C,CAAC;aACzE,GAAG,CAAC,UAAC,EAAQ;gBAAN,IAAI,UAAA;YAAO,OAAA,CAAC,IAAI,EAAE,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAAtC,CAAsC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAEe,iDAAoB,GAApC;QACE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IACpE,CAAC;IAEwB,oCAAO,GAAhC,UAAiC,aAAuB;;;;;;4BACjC,qBAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAA;;wBAArE,YAAY,GAAG,SAAsD;wBAC3E,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE;4BACjC,MAAM,GAAG,YAAY,CAAC;4BAC5B,sBAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAA,EAAE,EAAC;yBACnC;wBAEK,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,SAAS;4BACrD,IAAI,CAAC,KAAI,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gCACpD,MAAM,IAAI,KAAK,CAAC,2EAAoE,SAAS,CAAE,CAAC,CAAC;6BAClG;4BAED,IAAM,aAAa,gBAAQ,YAAY,CAAE,CAAC,CAAC,eAAe;4BAE1D,8GAA8G;4BAC9G,uFAAuF;4BACvF,mGAAmG;4BACnG,IAAI,SAAS,KAAK,qBAAqB,IAAI,CAAC,KAAI,CAAC,SAAS,EAAE;gCAC1D,aAAa,CAAC,IAAI,GAAG,KAAI,CAAC,eAAe,CAAC;6BAC3C;4BAED,OAAO;gCACL,MAAM,EAAE,KAAI,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC;gCACjD,YAAY,EAAE,aAAa;6BAC5B,CAAC;wBACJ,CAAC,CAAC,CAAC;wBAEK,SAAS,GAAK,IAAI,UAAT,CAAU;wBAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,8CAAuC,IAAI,CAAC,OAAO,CAAE,EAAE;4BACvE,aAAa,eAAA;4BACb,YAAY,cAAA;4BACZ,SAAS,EAAE,SAAS,CAAC,OAAO;yBAC7B,CAAC,CAAC;wBAEG,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACxB,kBAAkB,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBACT,qBAAM,OAAO,CAAC,GAAG;gCACpD,SAAS,CAAC,UAAU,CAAC,SAAS,CAC5B,kBAAkB,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,EACxE,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,CAC9B;+BACE,kBAAkB,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,mBAAmB,CAAC,KAAI,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EAAvE,CAAuE,CAAC,QAC9G,EAAA;;wBANI,KAA+B,SAMnC,EANK,eAAe,QAAA,EAAK,MAAM,cAAA;wBAOjC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gDAAyC,IAAI,CAAC,OAAO,eAAK,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,QAAK,CAAC,CAAC;wBAEnG,WAAW,GAAI,kBAAkB,CAAC,GAAG,CAC1C,UAAC,EAAE,EAAE,GAAG,IAAK,OAAA,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAArE,CAAqE,CACnF,GAFiB,CAEhB;wBAEF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;4BACrE,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC;gCAC/C,CAAC,CAAC,uBAAgB,WAAW,gBAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE;gCAC3D,CAAC,CAAC,0CAAmC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAE,CAAC;4BACrE,MAAM,IAAI,KAAK,CAAC,sCAA+B,MAAM,CAAE,CAAC,CAAC;yBAC1D;wBAED,mEAAmE;wBACnE,MAAM,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAA1D,CAA0D,CAAC,CAAC;wBAGjF,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,SAAS;4BACjD,OAAA,SAAS,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,0BAA0B,CAAC,KAAK,CAAC,EAAjC,CAAiC,CAAC;wBAA3D,CAA2D,CAC5D,CAAC;wBAEF,sBAAO;gCACL,OAAO,EAAE,IAAI;gCACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gCACnC,cAAc,EAAE,YAAY,CAAC,EAAE;gCAC/B,MAAM,EAAE,qBAAqB;6BAC9B,EAAC;;;;KACH;IAEe,sCAAS,GAAzB,UAA0B,WAAmB;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAEqB,wCAAW,GAAjC,UAAkC,SAAoB;;;;;;;wBAChD,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;wBACzC,IAAI,OAAO,EAAE;4BACX,sBAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,SAAA,EAAE,EAAC;yBACjC;wBAGK,UAAU,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,CAAC;wBAC7C,qBAAM,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAA;;wBAA1F,IAAI,GAAG,SAAmF;wBAC1F,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3C,IAAI,CAAC,IAAI,EAAE;4BACH,MAAM,GACV,yBAAkB,KAAK,wBAAc,SAAS,CAAE;gCAChD,0BAAmB,IAAI,CAAC,eAAe,eAAK,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,QAAQ,OAAI,CAAC;4BACzE,sBAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,QAAA,EAAE,EAAC;yBACtE;wBAEK,EAAE,GAAG,IAAI,CAAC;wBACV,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAElB,WAAW,GAAK,IAAI,CAAC,iBAAiB,YAA3B,CAA4B;wBAE7C,qBAAM,OAAO,CAAC,GAAG,CAAC;gCAChB,mBAAmB,CACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAChF,EAAE,IAAI,MAAA,EAAE,EAAE,IAAA,EAAE,WAAW,aAAA,EAAE,CAC1B;gCACD,mBAAmB,CACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAC9E,EAAE,IAAI,MAAA,EAAE,EAAE,IAAA,EAAE,WAAW,aAAA,EAAE,CAC1B;6BACF,CAAC,EAAA;;wBAZE,KAAK,GAAG,CACZ,SAWE,CACH,CAAC,IAAI,EAAE;wBACF,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAEnB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,EAAQ;gCAAN,IAAI,UAAA;4BAAO,OAAA,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;wBAA/B,CAA+B,CAAC,CAAC;wBACxE,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,sBAAO;oCACL,KAAK,EAAE,KAAK;oCACZ,IAAI,EAAE,WAAW,CAAC,iBAAiB;oCACnC,MAAM,EAAE,UAAG,KAAK,wBAAc,SAAS,iCAAuB,IAAI,MAAG;iCACtE,EAAC;yBACH;2CAGI,0BAA0B,CAAC,KAAK,CAAC;+BACpC,aAAa,EAAE,IAAI,CAAC,OAAO;wBACT,qBAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAA;;wBAHnF,OAAO,GAAG,mCAGR,mBAAgB,GAAE,SAA+D,EACjF,gBAAa,GAAE,IAAI,EACnB,cAAW,GAAE,IAAI,QACE,CAAC;wBAEtB,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;4BACtC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;yBACnE;wBACD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBACxD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;wBAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,EAAE,EAAE,6BAA6B;4BACjC,OAAO,EAAE,8DAA8D;4BACvE,OAAO,SAAA;4BACP,SAAS,EAAE,KAAK,GAAG,MAAM;yBAC1B,CAAC,CAAC;wBAEH,sBAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,SAAA,EAAE,EAAC;;;;KACjC;IAEe,iDAAoB,GAApC,UAAqC,WAAmB;QACtD,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;IACH,yBAAC;AAAD,CAAC,AA1LD,CAAwC,eAAe,GA0LtD"}
|
|
@@ -9,7 +9,7 @@ import { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
|
9
9
|
* SvmSpokePoolClient is a client for the SVM SpokePool program. It extends the base SpokePoolClient
|
|
10
10
|
* and implements the abstract methods required for interacting with an SVM Spoke Pool.
|
|
11
11
|
*/
|
|
12
|
-
export declare class
|
|
12
|
+
export declare class SVMSpokePoolClient extends SpokePoolClient {
|
|
13
13
|
svmEventsClient: SvmCpiEventsClient;
|
|
14
14
|
protected programId: Address;
|
|
15
15
|
protected statePda: Address;
|
|
@@ -22,12 +22,12 @@ export declare class SvmSpokePoolClient extends SpokePoolClient {
|
|
|
22
22
|
* Factory method to asynchronously create an instance of SvmSpokePoolClient.
|
|
23
23
|
*/
|
|
24
24
|
static create(logger: winston.Logger, hubPoolClient: HubPoolClient | null, chainId: number, deploymentSlot: bigint, eventSearchConfig: MakeOptional<EventSearchConfig, "to"> | undefined, // Provide default
|
|
25
|
-
rpc: Rpc<SolanaRpcApiFromTransport<RpcTransport>>): Promise<
|
|
25
|
+
rpc: Rpc<SolanaRpcApiFromTransport<RpcTransport>>): Promise<SVMSpokePoolClient>;
|
|
26
26
|
/**
|
|
27
27
|
* Factory method to asynchronously create an instance of SvmSpokePoolClient with an existing event client.
|
|
28
28
|
*/
|
|
29
29
|
static createWithExistingEventClient(logger: winston.Logger, hubPoolClient: HubPoolClient | null, chainId: number, deploymentSlot: bigint, eventSearchConfig: MakeOptional<EventSearchConfig, "to"> | undefined, // Provide default
|
|
30
|
-
eventClient: SvmCpiEventsClient): Promise<
|
|
30
|
+
eventClient: SvmCpiEventsClient): Promise<SVMSpokePoolClient>;
|
|
31
31
|
_queryableEventNames(): string[];
|
|
32
32
|
/**
|
|
33
33
|
* Performs an update to refresh the state of this client by querying SVM events.
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { __assign, __awaiter, __extends, __generator, __spreadArray } from "tslib";
|
|
2
2
|
import { SVMEventNames, unwrapEventData, getFillDeadline, getTimestampForSlot, getStatePda, SvmCpiEventsClient, findDeposit, relayFillStatus, fillStatusArray, } from "../../arch/svm";
|
|
3
|
-
import { InvalidFill, isZeroAddress, sortEventsAscendingInPlace, } from "../../utils";
|
|
3
|
+
import { InvalidFill, isZeroAddress, sortEventsAscendingInPlace, SvmAddress, } from "../../utils";
|
|
4
4
|
import { isUpdateFailureReason } from "../BaseAbstractClient";
|
|
5
5
|
import { knownEventNames, SpokePoolClient } from "./SpokePoolClient";
|
|
6
6
|
/**
|
|
7
7
|
* SvmSpokePoolClient is a client for the SVM SpokePool program. It extends the base SpokePoolClient
|
|
8
8
|
* and implements the abstract methods required for interacting with an SVM Spoke Pool.
|
|
9
9
|
*/
|
|
10
|
-
var
|
|
11
|
-
__extends(
|
|
10
|
+
var SVMSpokePoolClient = /** @class */ (function (_super) {
|
|
11
|
+
__extends(SVMSpokePoolClient, _super);
|
|
12
12
|
/**
|
|
13
13
|
* Protected constructor. Use the async create() method to instantiate.
|
|
14
14
|
*/
|
|
15
|
-
function
|
|
15
|
+
function SVMSpokePoolClient(logger, hubPoolClient, chainId, deploymentSlot, // Using slot instead of block number for SVM
|
|
16
16
|
eventSearchConfig, svmEventsClient, programId, statePda) {
|
|
17
17
|
var _this =
|
|
18
18
|
// Convert deploymentSlot to number for base class, might need refinement
|
|
@@ -20,12 +20,13 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
20
20
|
_this.svmEventsClient = svmEventsClient;
|
|
21
21
|
_this.programId = programId;
|
|
22
22
|
_this.statePda = statePda;
|
|
23
|
+
_this.spokePoolAddress = SvmAddress.from(programId.toString());
|
|
23
24
|
return _this;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Factory method to asynchronously create an instance of SvmSpokePoolClient.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
|
+
SVMSpokePoolClient.create = function (logger, hubPoolClient, chainId, deploymentSlot, eventSearchConfig, // Provide default
|
|
29
30
|
rpc) {
|
|
30
31
|
if (eventSearchConfig === void 0) { eventSearchConfig = { from: 0, maxLookBack: 0 }; }
|
|
31
32
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -39,7 +40,7 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
39
40
|
return [4 /*yield*/, getStatePda(programId)];
|
|
40
41
|
case 2:
|
|
41
42
|
statePda = _a.sent();
|
|
42
|
-
return [2 /*return*/, new
|
|
43
|
+
return [2 /*return*/, new SVMSpokePoolClient(logger, hubPoolClient, chainId, deploymentSlot, eventSearchConfig, svmEventsClient, programId, statePda)];
|
|
43
44
|
}
|
|
44
45
|
});
|
|
45
46
|
});
|
|
@@ -47,7 +48,7 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
47
48
|
/**
|
|
48
49
|
* Factory method to asynchronously create an instance of SvmSpokePoolClient with an existing event client.
|
|
49
50
|
*/
|
|
50
|
-
|
|
51
|
+
SVMSpokePoolClient.createWithExistingEventClient = function (logger, hubPoolClient, chainId, deploymentSlot, eventSearchConfig, // Provide default
|
|
51
52
|
eventClient) {
|
|
52
53
|
if (eventSearchConfig === void 0) { eventSearchConfig = { from: 0, maxLookBack: 0 }; }
|
|
53
54
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -59,12 +60,12 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
59
60
|
return [4 /*yield*/, getStatePda(programId)];
|
|
60
61
|
case 1:
|
|
61
62
|
statePda = _a.sent();
|
|
62
|
-
return [2 /*return*/, new
|
|
63
|
+
return [2 /*return*/, new SVMSpokePoolClient(logger, hubPoolClient, chainId, deploymentSlot, eventSearchConfig, eventClient, programId, statePda)];
|
|
63
64
|
}
|
|
64
65
|
});
|
|
65
66
|
});
|
|
66
67
|
};
|
|
67
|
-
|
|
68
|
+
SVMSpokePoolClient.prototype._queryableEventNames = function () {
|
|
68
69
|
// We want to take the internal event names relevant to
|
|
69
70
|
// the SVM SpokePoolClient and filter them against the
|
|
70
71
|
// knownEventNames list that we reference in practice
|
|
@@ -74,7 +75,7 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
74
75
|
/**
|
|
75
76
|
* Performs an update to refresh the state of this client by querying SVM events.
|
|
76
77
|
*/
|
|
77
|
-
|
|
78
|
+
SVMSpokePoolClient.prototype._update = function (eventsToQuery) {
|
|
78
79
|
return __awaiter(this, void 0, void 0, function () {
|
|
79
80
|
var searchConfig, reason, deploymentSlot, eventSearchConfigs, spokePoolAddress, timerStart, _a, currentTime, eventsQueried, errMsg;
|
|
80
81
|
var _this = this;
|
|
@@ -148,13 +149,13 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
148
149
|
* Retrieves the fill deadline buffer fetched from the State PDA.
|
|
149
150
|
* @note This function assumes that fill deadline buffer is a constant value in svm environments.
|
|
150
151
|
*/
|
|
151
|
-
|
|
152
|
+
SVMSpokePoolClient.prototype.getMaxFillDeadlineInRange = function (_startSlot, _endSlot) {
|
|
152
153
|
return getFillDeadline(this.svmEventsClient.getRpc(), this.statePda);
|
|
153
154
|
};
|
|
154
155
|
/**
|
|
155
156
|
* Retrieves the timestamp for a given SVM slot number.
|
|
156
157
|
*/
|
|
157
|
-
|
|
158
|
+
SVMSpokePoolClient.prototype.getTimestampForBlock = function (slot) {
|
|
158
159
|
return getTimestampForSlot(this.svmEventsClient.getRpc(), slot);
|
|
159
160
|
};
|
|
160
161
|
/**
|
|
@@ -162,13 +163,13 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
162
163
|
* @note This function uses the same underlying function as getTimestampForBlock.
|
|
163
164
|
* It is kept for consistency with the EVM SpokePoolClient.
|
|
164
165
|
*/
|
|
165
|
-
|
|
166
|
+
SVMSpokePoolClient.prototype.getTimeAt = function (slot) {
|
|
166
167
|
return getTimestampForSlot(this.svmEventsClient.getRpc(), slot);
|
|
167
168
|
};
|
|
168
169
|
/**
|
|
169
170
|
* Finds a deposit based on its deposit ID on the SVM chain.
|
|
170
171
|
*/
|
|
171
|
-
|
|
172
|
+
SVMSpokePoolClient.prototype.findDeposit = function (depositId) {
|
|
172
173
|
return __awaiter(this, void 0, void 0, function () {
|
|
173
174
|
var deposit, _a;
|
|
174
175
|
var _b, _c;
|
|
@@ -204,7 +205,7 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
204
205
|
/**
|
|
205
206
|
* Retrieves the fill status for a given relay data from the SVM chain.
|
|
206
207
|
*/
|
|
207
|
-
|
|
208
|
+
SVMSpokePoolClient.prototype.relayFillStatus = function (relayData, atHeight, destinationChainId) {
|
|
208
209
|
destinationChainId !== null && destinationChainId !== void 0 ? destinationChainId : (destinationChainId = this.chainId);
|
|
209
210
|
return relayFillStatus(this.programId, relayData, destinationChainId, this.svmEventsClient, atHeight);
|
|
210
211
|
};
|
|
@@ -214,12 +215,12 @@ var SvmSpokePoolClient = /** @class */ (function (_super) {
|
|
|
214
215
|
* @param atHeight The slot at which to query the fill status.
|
|
215
216
|
* @returns The fill status for each of the given relay data.
|
|
216
217
|
*/
|
|
217
|
-
|
|
218
|
+
SVMSpokePoolClient.prototype.fillStatusArray = function (relayData, atHeight, destinationChainId) {
|
|
218
219
|
// @note: deploymentBlock actually refers to the deployment slot. Also, blockTag should be a slot number.
|
|
219
220
|
destinationChainId !== null && destinationChainId !== void 0 ? destinationChainId : (destinationChainId = this.chainId);
|
|
220
221
|
return fillStatusArray(this.programId, relayData, destinationChainId, this.svmEventsClient, atHeight, this.logger);
|
|
221
222
|
};
|
|
222
|
-
return
|
|
223
|
+
return SVMSpokePoolClient;
|
|
223
224
|
}(SpokePoolClient));
|
|
224
|
-
export {
|
|
225
|
+
export { SVMSpokePoolClient };
|
|
225
226
|
//# sourceMappingURL=SVMSpokePoolClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/SVMSpokePoolClient.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAIL,WAAW,EACX,aAAa,EAEb,0BAA0B,
|
|
1
|
+
{"version":3,"file":"SVMSpokePoolClient.js","sourceRoot":"","sources":["../../../../src/clients/SpokePoolClient/SVMSpokePoolClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import winston from "winston";
|
|
2
|
-
import { AnyObject, BigNumber, DefaultLogLevels, DepositSearchResult, EventSearchConfig, MakeOptional } from "../../utils";
|
|
2
|
+
import { AnyObject, BigNumber, DefaultLogLevels, DepositSearchResult, EventSearchConfig, MakeOptional, Address } from "../../utils";
|
|
3
3
|
import { Deposit, DepositWithBlock, Fill, FillStatus, FillWithBlock, RelayData, RelayerRefundExecutionWithBlock, RootBundleRelayWithBlock, SlowFillRequestWithBlock, SortableEvent, SpeedUpWithBlock, TokensBridged } from "../../interfaces";
|
|
4
4
|
import { BaseAbstractClient, UpdateFailureReason } from "../BaseAbstractClient";
|
|
5
5
|
import { AcrossConfigStoreClient } from "../AcrossConfigStoreClient";
|
|
@@ -53,6 +53,7 @@ export declare abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
53
53
|
protected relayerRefundExecutions: RelayerRefundExecutionWithBlock[];
|
|
54
54
|
protected configStoreClient: AcrossConfigStoreClient | undefined;
|
|
55
55
|
protected invalidFills: Set<string>;
|
|
56
|
+
spokePoolAddress: Address | undefined;
|
|
56
57
|
fills: {
|
|
57
58
|
[OriginChainId: number]: FillWithBlock[];
|
|
58
59
|
};
|
|
@@ -172,9 +173,7 @@ export declare abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
172
173
|
* @param relayData RelayData field for the SlowFill request.
|
|
173
174
|
* @returns The corresponding SlowFillRequest event if found, otherwise undefined.
|
|
174
175
|
*/
|
|
175
|
-
getSlowFillRequest(relayData:
|
|
176
|
-
messageHash: string;
|
|
177
|
-
}): SlowFillRequestWithBlock | undefined;
|
|
176
|
+
getSlowFillRequest(relayData: RelayData): SlowFillRequestWithBlock | undefined;
|
|
178
177
|
/**
|
|
179
178
|
* Retrieves a list of slow fill requests for deposits from a specific origin chain ID.
|
|
180
179
|
* @param originChainId The origin chain ID.
|
|
@@ -230,7 +230,8 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
230
230
|
* @returns The corresponding SlowFillRequest event if found, otherwise undefined.
|
|
231
231
|
*/
|
|
232
232
|
SpokePoolClient.prototype.getSlowFillRequest = function (relayData) {
|
|
233
|
-
var
|
|
233
|
+
var messageHash = getMessageHash(relayData.message);
|
|
234
|
+
var hash = getRelayEventKey(__assign(__assign({}, relayData), { messageHash: messageHash, destinationChainId: this.chainId }));
|
|
234
235
|
return this.slowFillRequests[hash];
|
|
235
236
|
};
|
|
236
237
|
/**
|
|
@@ -444,7 +445,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
444
445
|
}
|
|
445
446
|
});
|
|
446
447
|
}); };
|
|
447
|
-
_e = 0, _f = ["FundsDeposited"];
|
|
448
|
+
_e = 0, _f = ["V3FundsDeposited", "FundsDeposited"];
|
|
448
449
|
_k.label = 2;
|
|
449
450
|
case 2:
|
|
450
451
|
if (!(_e < _f.length)) return [3 /*break*/, 5];
|
|
@@ -477,7 +478,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
477
478
|
}
|
|
478
479
|
};
|
|
479
480
|
// Update deposits with speed up requests from depositor.
|
|
480
|
-
["RequestedSpeedUpDeposit"].forEach(function (event) {
|
|
481
|
+
["RequestedSpeedUpV3Deposit", "RequestedSpeedUpDeposit"].forEach(function (event) {
|
|
481
482
|
if (eventsToQuery.includes(event)) {
|
|
482
483
|
querySpeedUpDepositEvents(event);
|
|
483
484
|
}
|
|
@@ -489,6 +490,9 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
489
490
|
for (var _i = 0, slowFillRequests_1 = slowFillRequests; _i < slowFillRequests_1.length; _i++) {
|
|
490
491
|
var event_8 = slowFillRequests_1[_i];
|
|
491
492
|
var slowFillRequest = __assign(__assign({}, event_8), { destinationChainId: _this.chainId });
|
|
493
|
+
if (eventName === "RequestedV3SlowFill") {
|
|
494
|
+
slowFillRequest.messageHash = getMessageHash(slowFillRequest.message);
|
|
495
|
+
}
|
|
492
496
|
var depositHash = getRelayEventKey(__assign(__assign({}, slowFillRequest), { destinationChainId: _this.chainId }));
|
|
493
497
|
// Sanity check that this event is not a duplicate.
|
|
494
498
|
if (_this.slowFillRequests[depositHash] !== undefined) {
|
|
@@ -498,7 +502,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
498
502
|
(_b = (_c = _this.slowFillRequests)[depositHash]) !== null && _b !== void 0 ? _b : (_c[depositHash] = slowFillRequest);
|
|
499
503
|
}
|
|
500
504
|
};
|
|
501
|
-
["RequestedSlowFill"].forEach(function (event) {
|
|
505
|
+
["RequestedV3SlowFill", "RequestedSlowFill"].forEach(function (event) {
|
|
502
506
|
if (eventsToQuery.includes(event)) {
|
|
503
507
|
queryRequestedSlowFillEvents(event);
|
|
504
508
|
}
|
|
@@ -513,6 +517,10 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
513
517
|
}
|
|
514
518
|
var _loop_2 = function (event_9) {
|
|
515
519
|
var fill = __assign(__assign({}, event_9), { destinationChainId: _this.chainId });
|
|
520
|
+
if (eventName === "FilledV3Relay") {
|
|
521
|
+
fill.messageHash = getMessageHash(event_9.message);
|
|
522
|
+
fill.relayExecutionInfo.updatedMessageHash = getMessageHash(event_9.relayExecutionInfo.updatedMessage);
|
|
523
|
+
}
|
|
516
524
|
// Sanity check that this event is not a duplicate.
|
|
517
525
|
var duplicateFill = (_b = _this.fills[fill.originChainId]) === null || _b === void 0 ? void 0 : _b.find(function (f) { return duplicateEvent(fill, f); });
|
|
518
526
|
if (duplicateFill) {
|
|
@@ -530,7 +538,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
|
|
|
530
538
|
}
|
|
531
539
|
};
|
|
532
540
|
// Update observed fills with ingested event data.
|
|
533
|
-
["FilledRelay"].forEach(function (event) {
|
|
541
|
+
["FilledV3Relay", "FilledRelay"].forEach(function (event) {
|
|
534
542
|
if (eventsToQuery.includes(event)) {
|
|
535
543
|
queryFilledRelayEvents(event);
|
|
536
544
|
}
|