@across-protocol/sdk 4.3.12 → 4.3.14
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 +1 -0
- package/dist/cjs/arch/svm/BlockUtils.js +69 -52
- package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +21 -10
- package/dist/cjs/arch/svm/SpokeUtils.js +303 -49
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/eventsClient.js +1 -1
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
- package/dist/cjs/arch/svm/types.d.ts +7 -0
- package/dist/cjs/arch/svm/utils.d.ts +8 -3
- package/dist/cjs/arch/svm/utils.js +82 -5
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +5 -2
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
- package/dist/cjs/clients/HubPoolClient.d.ts +1 -0
- package/dist/cjs/clients/HubPoolClient.js +11 -0
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/arch/svm/BlockUtils.d.ts +7 -0
- package/dist/esm/arch/svm/BlockUtils.js +76 -54
- package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +51 -10
- package/dist/esm/arch/svm/SpokeUtils.js +296 -10
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/eventsClient.js +1 -1
- package/dist/esm/arch/svm/eventsClient.js.map +1 -1
- package/dist/esm/arch/svm/types.d.ts +7 -0
- package/dist/esm/arch/svm/utils.d.ts +35 -3
- package/dist/esm/arch/svm/utils.js +104 -4
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +5 -2
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
- package/dist/esm/clients/HubPoolClient.d.ts +1 -0
- package/dist/esm/clients/HubPoolClient.js +19 -0
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/types/arch/svm/BlockUtils.d.ts +7 -0
- package/dist/types/arch/svm/BlockUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +51 -10
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/types.d.ts +7 -0
- package/dist/types/arch/svm/types.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +35 -3
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
- package/dist/types/clients/HubPoolClient.d.ts +1 -0
- package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/arch/svm/BlockUtils.ts +33 -16
- package/src/arch/svm/SpokeUtils.ts +277 -12
- package/src/arch/svm/eventsClient.ts +1 -1
- package/src/arch/svm/types.ts +8 -0
- package/src/arch/svm/utils.ts +100 -9
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +5 -2
- package/src/clients/HubPoolClient.ts +23 -0
|
@@ -10,8 +10,10 @@ export declare const SortableEventSS: {
|
|
|
10
10
|
};
|
|
11
11
|
export declare const BundleDataSS: import("superstruct").Struct<{
|
|
12
12
|
bundleDepositsV3: Record<string, Record<string, {
|
|
13
|
+
message: string;
|
|
13
14
|
depositId: BigNumber;
|
|
14
15
|
outputAmount: BigNumber;
|
|
16
|
+
inputAmount: BigNumber;
|
|
15
17
|
originChainId: number;
|
|
16
18
|
destinationChainId: number;
|
|
17
19
|
fromLiteChain: boolean;
|
|
@@ -21,9 +23,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
21
23
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
22
24
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
23
25
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
24
|
-
inputAmount: BigNumber;
|
|
25
26
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
26
|
-
message: string;
|
|
27
27
|
fillDeadline: number;
|
|
28
28
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
29
29
|
exclusivityDeadline: number;
|
|
@@ -44,6 +44,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
44
44
|
fills: {
|
|
45
45
|
depositId: BigNumber;
|
|
46
46
|
outputAmount: BigNumber;
|
|
47
|
+
inputAmount: BigNumber;
|
|
47
48
|
originChainId: number;
|
|
48
49
|
destinationChainId: number;
|
|
49
50
|
repaymentChainId: number;
|
|
@@ -52,7 +53,6 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
52
53
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
53
54
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
54
55
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
55
|
-
inputAmount: BigNumber;
|
|
56
56
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
57
57
|
fillDeadline: number;
|
|
58
58
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
@@ -79,8 +79,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
79
79
|
totalRefundAmount: BigNumber;
|
|
80
80
|
}>>;
|
|
81
81
|
bundleSlowFillsV3: Record<string, Record<string, {
|
|
82
|
+
message: string;
|
|
82
83
|
depositId: BigNumber;
|
|
83
84
|
outputAmount: BigNumber;
|
|
85
|
+
inputAmount: BigNumber;
|
|
84
86
|
originChainId: number;
|
|
85
87
|
destinationChainId: number;
|
|
86
88
|
fromLiteChain: boolean;
|
|
@@ -90,9 +92,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
90
92
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
91
93
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
92
94
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
93
|
-
inputAmount: BigNumber;
|
|
94
95
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
95
|
-
message: string;
|
|
96
96
|
fillDeadline: number;
|
|
97
97
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
98
98
|
exclusivityDeadline: number;
|
|
@@ -111,8 +111,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
111
111
|
relayerFeePct?: BigNumber | undefined;
|
|
112
112
|
}[]>>;
|
|
113
113
|
expiredDepositsToRefundV3: Record<string, Record<string, {
|
|
114
|
+
message: string;
|
|
114
115
|
depositId: BigNumber;
|
|
115
116
|
outputAmount: BigNumber;
|
|
117
|
+
inputAmount: BigNumber;
|
|
116
118
|
originChainId: number;
|
|
117
119
|
destinationChainId: number;
|
|
118
120
|
fromLiteChain: boolean;
|
|
@@ -122,9 +124,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
122
124
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
123
125
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
124
126
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
125
|
-
inputAmount: BigNumber;
|
|
126
127
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
127
|
-
message: string;
|
|
128
128
|
fillDeadline: number;
|
|
129
129
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
130
130
|
exclusivityDeadline: number;
|
|
@@ -142,8 +142,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
142
142
|
relayerFeePct?: BigNumber | undefined;
|
|
143
143
|
}[]>>;
|
|
144
144
|
unexecutableSlowFills: Record<string, Record<string, {
|
|
145
|
+
message: string;
|
|
145
146
|
depositId: BigNumber;
|
|
146
147
|
outputAmount: BigNumber;
|
|
148
|
+
inputAmount: BigNumber;
|
|
147
149
|
originChainId: number;
|
|
148
150
|
destinationChainId: number;
|
|
149
151
|
fromLiteChain: boolean;
|
|
@@ -153,9 +155,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
153
155
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
154
156
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
155
157
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
156
|
-
inputAmount: BigNumber;
|
|
157
158
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
158
|
-
message: string;
|
|
159
159
|
fillDeadline: number;
|
|
160
160
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
161
161
|
exclusivityDeadline: number;
|
|
@@ -175,8 +175,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
175
175
|
}[]>>;
|
|
176
176
|
}, {
|
|
177
177
|
bundleDepositsV3: import("superstruct").Struct<Record<string, Record<string, {
|
|
178
|
+
message: string;
|
|
178
179
|
depositId: BigNumber;
|
|
179
180
|
outputAmount: BigNumber;
|
|
181
|
+
inputAmount: BigNumber;
|
|
180
182
|
originChainId: number;
|
|
181
183
|
destinationChainId: number;
|
|
182
184
|
fromLiteChain: boolean;
|
|
@@ -186,9 +188,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
186
188
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
187
189
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
188
190
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
189
|
-
inputAmount: BigNumber;
|
|
190
191
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
191
|
-
message: string;
|
|
192
192
|
fillDeadline: number;
|
|
193
193
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
194
194
|
exclusivityDeadline: number;
|
|
@@ -206,8 +206,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
206
206
|
relayerFeePct?: BigNumber | undefined;
|
|
207
207
|
}[]>>, null>;
|
|
208
208
|
expiredDepositsToRefundV3: import("superstruct").Struct<Record<string, Record<string, {
|
|
209
|
+
message: string;
|
|
209
210
|
depositId: BigNumber;
|
|
210
211
|
outputAmount: BigNumber;
|
|
212
|
+
inputAmount: BigNumber;
|
|
211
213
|
originChainId: number;
|
|
212
214
|
destinationChainId: number;
|
|
213
215
|
fromLiteChain: boolean;
|
|
@@ -217,9 +219,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
217
219
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
218
220
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
219
221
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
220
|
-
inputAmount: BigNumber;
|
|
221
222
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
222
|
-
message: string;
|
|
223
223
|
fillDeadline: number;
|
|
224
224
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
225
225
|
exclusivityDeadline: number;
|
|
@@ -237,8 +237,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
237
237
|
relayerFeePct?: BigNumber | undefined;
|
|
238
238
|
}[]>>, null>;
|
|
239
239
|
unexecutableSlowFills: import("superstruct").Struct<Record<string, Record<string, {
|
|
240
|
+
message: string;
|
|
240
241
|
depositId: BigNumber;
|
|
241
242
|
outputAmount: BigNumber;
|
|
243
|
+
inputAmount: BigNumber;
|
|
242
244
|
originChainId: number;
|
|
243
245
|
destinationChainId: number;
|
|
244
246
|
fromLiteChain: boolean;
|
|
@@ -248,9 +250,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
248
250
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
249
251
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
250
252
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
251
|
-
inputAmount: BigNumber;
|
|
252
253
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
253
|
-
message: string;
|
|
254
254
|
fillDeadline: number;
|
|
255
255
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
256
256
|
exclusivityDeadline: number;
|
|
@@ -269,8 +269,10 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
269
269
|
relayerFeePct?: BigNumber | undefined;
|
|
270
270
|
}[]>>, null>;
|
|
271
271
|
bundleSlowFillsV3: import("superstruct").Struct<Record<string, Record<string, {
|
|
272
|
+
message: string;
|
|
272
273
|
depositId: BigNumber;
|
|
273
274
|
outputAmount: BigNumber;
|
|
275
|
+
inputAmount: BigNumber;
|
|
274
276
|
originChainId: number;
|
|
275
277
|
destinationChainId: number;
|
|
276
278
|
fromLiteChain: boolean;
|
|
@@ -280,9 +282,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
280
282
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
281
283
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
282
284
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
283
|
-
inputAmount: BigNumber;
|
|
284
285
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
285
|
-
message: string;
|
|
286
286
|
fillDeadline: number;
|
|
287
287
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
288
288
|
exclusivityDeadline: number;
|
|
@@ -304,6 +304,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
304
304
|
fills: {
|
|
305
305
|
depositId: BigNumber;
|
|
306
306
|
outputAmount: BigNumber;
|
|
307
|
+
inputAmount: BigNumber;
|
|
307
308
|
originChainId: number;
|
|
308
309
|
destinationChainId: number;
|
|
309
310
|
repaymentChainId: number;
|
|
@@ -312,7 +313,6 @@ export declare const BundleDataSS: import("superstruct").Struct<{
|
|
|
312
313
|
depositor: SvmAddress | EvmAddress | RawAddress;
|
|
313
314
|
recipient: SvmAddress | EvmAddress | RawAddress;
|
|
314
315
|
inputToken: SvmAddress | EvmAddress | RawAddress;
|
|
315
|
-
inputAmount: BigNumber;
|
|
316
316
|
outputToken: SvmAddress | EvmAddress | RawAddress;
|
|
317
317
|
fillDeadline: number;
|
|
318
318
|
exclusiveRelayer: SvmAddress | EvmAddress | RawAddress;
|
|
@@ -142,6 +142,7 @@ export declare class HubPoolClient extends BaseAbstractClient {
|
|
|
142
142
|
getNthFullyExecutedRootBundle(n: number, startBlock?: number): ProposedRootBundle | undefined;
|
|
143
143
|
getLatestBundleEndBlockForChain(chainIdList: number[], latestMainnetBlock: number, chainId: number): number;
|
|
144
144
|
getNextBundleStartBlockNumber(chainIdList: number[], latestMainnetBlock: number, chainId: number): number;
|
|
145
|
+
getOptimisticBundleStartBlockNumber(chainIdList: number[], latestMainnetBlock: number, chainId: number): number;
|
|
145
146
|
getLatestExecutedRootBundleContainingL1Token(block: number, chain: number, l1Token: EvmAddress): ExecutedRootBundle | undefined;
|
|
146
147
|
getRunningBalanceBeforeBlockForChain(block: number, chain: number, l1Token: EvmAddress): TokenRunningBalance;
|
|
147
148
|
getRunningBalanceForToken(l1Token: EvmAddress, executedRootBundle: ExecutedRootBundle | undefined): TokenRunningBalance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HubPoolClient.d.ts","sourceRoot":"","sources":["../../../src/clients/HubPoolClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HubPoolClient.d.ts","sourceRoot":"","sources":["../../../src/clients/HubPoolClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ import { isDefined } from "../../utils/TypeGuards";
|
|
|
5
5
|
import { getCurrentTime } from "../../utils/TimeUtils";
|
|
6
6
|
import { CHAIN_IDs } from "../../constants";
|
|
7
7
|
import { SVMProvider } from "./";
|
|
8
|
+
import { getTimestampForSlot } from "./SpokeUtils";
|
|
8
9
|
|
|
9
10
|
interface SVMBlock extends Block {}
|
|
10
11
|
|
|
@@ -23,13 +24,9 @@ export function averageBlockTime(): Pick<BlockTimeAverage, "average" | "blockRan
|
|
|
23
24
|
return averageBlockTimes[CHAIN_IDs.SOLANA];
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
seconds: number,
|
|
28
|
-
cushionPercentage = 0.0,
|
|
29
|
-
_provider: SVMProvider
|
|
30
|
-
): Promise<number> {
|
|
27
|
+
function estimateBlocksElapsed(seconds: number, cushionPercentage = 0.0, _provider: SVMProvider): number {
|
|
31
28
|
const cushionMultiplier = cushionPercentage + 1.0;
|
|
32
|
-
const { average } =
|
|
29
|
+
const { average } = averageBlockTime();
|
|
33
30
|
return Math.floor((seconds * cushionMultiplier) / average);
|
|
34
31
|
}
|
|
35
32
|
|
|
@@ -73,7 +70,7 @@ export class SVMBlockFinder extends BlockFinder<SVMBlock> {
|
|
|
73
70
|
const cushion = 1;
|
|
74
71
|
const incrementDistance = Math.max(
|
|
75
72
|
// Ensure the increment slot distance is _at least_ a single slot to prevent an infinite loop.
|
|
76
|
-
|
|
73
|
+
estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider),
|
|
77
74
|
1
|
|
78
75
|
);
|
|
79
76
|
|
|
@@ -92,15 +89,33 @@ export class SVMBlockFinder extends BlockFinder<SVMBlock> {
|
|
|
92
89
|
return this.findBlock(this.blocks[index - 1], this.blocks[index], timestamp);
|
|
93
90
|
}
|
|
94
91
|
|
|
92
|
+
/**
|
|
93
|
+
* For a given slot, resolve the current or preceding timestamp.
|
|
94
|
+
* Not all Solana slots have an associated block timestamp; in case of no block at the requested slot, the most
|
|
95
|
+
* immediate preceding block timestamp will be used. Note that this may return an eventually-incorrect timestamp for
|
|
96
|
+
* future slots.
|
|
97
|
+
*/
|
|
98
|
+
private async getBlockTime(_slot?: bigint): Promise<{ slot: bigint; timestamp: number }> {
|
|
99
|
+
let timestamp: number | undefined;
|
|
100
|
+
let slot = _slot ?? (await this.provider.getSlot({ commitment: "finalized" }).send());
|
|
101
|
+
|
|
102
|
+
do {
|
|
103
|
+
timestamp = await getTimestampForSlot(this.provider, slot);
|
|
104
|
+
} while (!isDefined(timestamp) && --slot);
|
|
105
|
+
assert(isDefined(timestamp), `Unable to resolve block time for SVM slot ${_slot ?? "latest"}`);
|
|
106
|
+
assert(BigInt(Number(timestamp) === timestamp), `Unexpected SVM block timestamp: ${timestamp}`);
|
|
107
|
+
|
|
108
|
+
return { slot, timestamp: Number(timestamp) };
|
|
109
|
+
}
|
|
110
|
+
|
|
95
111
|
// Grabs the most recent slot and caches it.
|
|
96
112
|
private async getLatestBlock(): Promise<SVMBlock> {
|
|
97
|
-
const
|
|
98
|
-
const estimatedSlotTime = await this.provider.getBlockTime(latestSlot).send();
|
|
113
|
+
const { slot, timestamp } = await this.getBlockTime();
|
|
99
114
|
|
|
100
115
|
// Cast the return type to an SVMBlock.
|
|
101
116
|
const block: SVMBlock = {
|
|
102
|
-
timestamp
|
|
103
|
-
number: Number(
|
|
117
|
+
timestamp,
|
|
118
|
+
number: Number(slot),
|
|
104
119
|
};
|
|
105
120
|
const index = sortedIndexBy(this.blocks, block, "number");
|
|
106
121
|
if (this.blocks[index]?.number !== block.number) this.blocks.splice(index, 0, block);
|
|
@@ -112,18 +127,20 @@ export class SVMBlockFinder extends BlockFinder<SVMBlock> {
|
|
|
112
127
|
let index = sortedIndexBy(this.blocks, { number } as Block, "number");
|
|
113
128
|
if (this.blocks[index]?.number === number) return this.blocks[index]; // Return early if block already exists.
|
|
114
129
|
|
|
115
|
-
|
|
130
|
+
// The resolved slot may be rotated backwards if no timestamp exists at the requested slot.
|
|
131
|
+
const { slot: _slot, timestamp } = await this.getBlockTime(BigInt(number));
|
|
132
|
+
const slot = Number(_slot);
|
|
116
133
|
// Cast the return type to an SVMBlock.
|
|
117
134
|
const block: SVMBlock = {
|
|
118
|
-
timestamp
|
|
119
|
-
number,
|
|
135
|
+
timestamp,
|
|
136
|
+
number: slot,
|
|
120
137
|
};
|
|
121
138
|
|
|
122
139
|
// Recompute the index after the async call since the state of this.blocks could have changed!
|
|
123
|
-
index = sortedIndexBy(this.blocks, { number } as Block, "number");
|
|
140
|
+
index = sortedIndexBy(this.blocks, { number: slot } as Block, "number");
|
|
124
141
|
|
|
125
142
|
// Rerun this check to avoid duplicate insertion.
|
|
126
|
-
if (this.blocks[index]?.number ===
|
|
143
|
+
if (this.blocks[index]?.number === slot) return this.blocks[index];
|
|
127
144
|
this.blocks.splice(index, 0, block); // A simple insert at index.
|
|
128
145
|
return block;
|
|
129
146
|
}
|