@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.
Files changed (59) hide show
  1. package/dist/cjs/arch/svm/BlockUtils.d.ts +1 -0
  2. package/dist/cjs/arch/svm/BlockUtils.js +69 -52
  3. package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
  4. package/dist/cjs/arch/svm/SpokeUtils.d.ts +21 -10
  5. package/dist/cjs/arch/svm/SpokeUtils.js +303 -49
  6. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  7. package/dist/cjs/arch/svm/eventsClient.js +1 -1
  8. package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
  9. package/dist/cjs/arch/svm/types.d.ts +7 -0
  10. package/dist/cjs/arch/svm/utils.d.ts +8 -3
  11. package/dist/cjs/arch/svm/utils.js +82 -5
  12. package/dist/cjs/arch/svm/utils.js.map +1 -1
  13. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  14. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +5 -2
  15. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  16. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
  17. package/dist/cjs/clients/HubPoolClient.d.ts +1 -0
  18. package/dist/cjs/clients/HubPoolClient.js +11 -0
  19. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  20. package/dist/esm/arch/svm/BlockUtils.d.ts +7 -0
  21. package/dist/esm/arch/svm/BlockUtils.js +76 -54
  22. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  23. package/dist/esm/arch/svm/SpokeUtils.d.ts +51 -10
  24. package/dist/esm/arch/svm/SpokeUtils.js +296 -10
  25. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  26. package/dist/esm/arch/svm/eventsClient.js +1 -1
  27. package/dist/esm/arch/svm/eventsClient.js.map +1 -1
  28. package/dist/esm/arch/svm/types.d.ts +7 -0
  29. package/dist/esm/arch/svm/utils.d.ts +35 -3
  30. package/dist/esm/arch/svm/utils.js +104 -4
  31. package/dist/esm/arch/svm/utils.js.map +1 -1
  32. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  33. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +5 -2
  34. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  35. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
  36. package/dist/esm/clients/HubPoolClient.d.ts +1 -0
  37. package/dist/esm/clients/HubPoolClient.js +19 -0
  38. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  39. package/dist/types/arch/svm/BlockUtils.d.ts +7 -0
  40. package/dist/types/arch/svm/BlockUtils.d.ts.map +1 -1
  41. package/dist/types/arch/svm/SpokeUtils.d.ts +51 -10
  42. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  43. package/dist/types/arch/svm/types.d.ts +7 -0
  44. package/dist/types/arch/svm/types.d.ts.map +1 -1
  45. package/dist/types/arch/svm/utils.d.ts +35 -3
  46. package/dist/types/arch/svm/utils.d.ts.map +1 -1
  47. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  48. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
  49. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +18 -18
  50. package/dist/types/clients/HubPoolClient.d.ts +1 -0
  51. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  52. package/package.json +1 -1
  53. package/src/arch/svm/BlockUtils.ts +33 -16
  54. package/src/arch/svm/SpokeUtils.ts +277 -12
  55. package/src/arch/svm/eventsClient.ts +1 -1
  56. package/src/arch/svm/types.ts +8 -0
  57. package/src/arch/svm/utils.ts +100 -9
  58. package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +5 -2
  59. 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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "4.3.12",
4
+ "version": "4.3.14",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -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
- async function estimateBlocksElapsed(
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 } = await averageBlockTime();
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
- await estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider),
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 latestSlot = await this.provider.getSlot().send();
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: Number(estimatedSlotTime),
103
- number: Number(latestSlot),
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
- const estimatedSlotTime = await this.provider.getBlockTime(BigInt(number)).send();
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: Number(estimatedSlotTime),
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 === number) return this.blocks[index];
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
  }