@across-protocol/sdk 4.0.2 → 4.0.3

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 (118) hide show
  1. package/dist/cjs/clients/BundleDataClient/BundleDataClient.d.ts +3 -3
  2. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +38 -18
  3. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  4. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.d.ts +3 -0
  5. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +20 -10
  6. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  7. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +14 -2
  8. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +4 -1
  9. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  10. package/dist/cjs/clients/SpokePoolClient.js +155 -88
  11. package/dist/cjs/clients/SpokePoolClient.js.map +1 -1
  12. package/dist/cjs/clients/mocks/MockSpokePoolClient.d.ts +20 -6
  13. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +77 -35
  14. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  15. package/dist/cjs/constants.d.ts +2 -1
  16. package/dist/cjs/constants.js +3 -2
  17. package/dist/cjs/constants.js.map +1 -1
  18. package/dist/cjs/interfaces/SpokePool.d.ts +6 -2
  19. package/dist/cjs/interfaces/SpokePool.js.map +1 -1
  20. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  21. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  22. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +1 -1
  23. package/dist/cjs/utils/AddressUtils.d.ts +1 -0
  24. package/dist/cjs/utils/AddressUtils.js +5 -1
  25. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  26. package/dist/cjs/utils/CachingUtils.js +1 -1
  27. package/dist/cjs/utils/CachingUtils.js.map +1 -1
  28. package/dist/cjs/utils/DepositUtils.d.ts +1 -1
  29. package/dist/cjs/utils/DepositUtils.js +11 -8
  30. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  31. package/dist/cjs/utils/FlowUtils.d.ts +4 -3
  32. package/dist/cjs/utils/FlowUtils.js +5 -1
  33. package/dist/cjs/utils/FlowUtils.js.map +1 -1
  34. package/dist/cjs/utils/SpokeUtils.d.ts +9 -3
  35. package/dist/cjs/utils/SpokeUtils.js +22 -2
  36. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  37. package/dist/esm/clients/BundleDataClient/BundleDataClient.d.ts +3 -3
  38. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +42 -24
  39. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  40. package/dist/esm/clients/BundleDataClient/utils/FillUtils.d.ts +3 -0
  41. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +20 -11
  42. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  43. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +14 -2
  44. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +4 -1
  45. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  46. package/dist/esm/clients/SpokePoolClient.js +172 -92
  47. package/dist/esm/clients/SpokePoolClient.js.map +1 -1
  48. package/dist/esm/clients/mocks/MockSpokePoolClient.d.ts +20 -6
  49. package/dist/esm/clients/mocks/MockSpokePoolClient.js +79 -37
  50. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  51. package/dist/esm/constants.d.ts +2 -1
  52. package/dist/esm/constants.js +6 -1
  53. package/dist/esm/constants.js.map +1 -1
  54. package/dist/esm/interfaces/SpokePool.d.ts +6 -2
  55. package/dist/esm/interfaces/SpokePool.js.map +1 -1
  56. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  57. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  58. package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +1 -1
  59. package/dist/esm/utils/AddressUtils.d.ts +1 -0
  60. package/dist/esm/utils/AddressUtils.js +7 -4
  61. package/dist/esm/utils/AddressUtils.js.map +1 -1
  62. package/dist/esm/utils/CachingUtils.js +2 -2
  63. package/dist/esm/utils/CachingUtils.js.map +1 -1
  64. package/dist/esm/utils/DepositUtils.d.ts +1 -1
  65. package/dist/esm/utils/DepositUtils.js +12 -9
  66. package/dist/esm/utils/DepositUtils.js.map +1 -1
  67. package/dist/esm/utils/FlowUtils.d.ts +4 -3
  68. package/dist/esm/utils/FlowUtils.js +6 -1
  69. package/dist/esm/utils/FlowUtils.js.map +1 -1
  70. package/dist/esm/utils/SpokeUtils.d.ts +16 -3
  71. package/dist/esm/utils/SpokeUtils.js +27 -1
  72. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  73. package/dist/esm/utils/abi/typechain/Multicall3.d.ts +4 -1
  74. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  75. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts +3 -3
  76. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
  77. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts +3 -0
  78. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -1
  79. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +14 -2
  80. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts.map +1 -1
  81. package/dist/types/clients/SpokePoolClient.d.ts.map +1 -1
  82. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts +20 -6
  83. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
  84. package/dist/types/constants.d.ts +2 -1
  85. package/dist/types/constants.d.ts.map +1 -1
  86. package/dist/types/interfaces/SpokePool.d.ts +6 -2
  87. package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
  88. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  89. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
  90. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +1 -1
  91. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
  92. package/dist/types/utils/AddressUtils.d.ts +1 -0
  93. package/dist/types/utils/AddressUtils.d.ts.map +1 -1
  94. package/dist/types/utils/DepositUtils.d.ts +1 -1
  95. package/dist/types/utils/DepositUtils.d.ts.map +1 -1
  96. package/dist/types/utils/FlowUtils.d.ts +4 -3
  97. package/dist/types/utils/FlowUtils.d.ts.map +1 -1
  98. package/dist/types/utils/SpokeUtils.d.ts +16 -3
  99. package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
  100. package/dist/types/utils/abi/typechain/Multicall3.d.ts +4 -1
  101. package/dist/types/utils/abi/typechain/Multicall3.d.ts.map +1 -1
  102. package/dist/types/utils/abi/typechain/common.d.ts.map +1 -1
  103. package/dist/types/utils/abi/typechain/factories/Multicall3__factory.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/src/clients/BundleDataClient/BundleDataClient.ts +47 -30
  106. package/src/clients/BundleDataClient/utils/FillUtils.ts +26 -13
  107. package/src/clients/BundleDataClient/utils/SuperstructUtils.ts +7 -1
  108. package/src/clients/SpokePoolClient.ts +119 -41
  109. package/src/clients/mocks/MockSpokePoolClient.ts +134 -36
  110. package/src/constants.ts +6 -1
  111. package/src/interfaces/SpokePool.ts +6 -2
  112. package/src/relayFeeCalculator/chain-queries/baseQuery.ts +6 -3
  113. package/src/relayFeeCalculator/relayFeeCalculator.ts +1 -1
  114. package/src/utils/AddressUtils.ts +8 -4
  115. package/src/utils/CachingUtils.ts +2 -2
  116. package/src/utils/DepositUtils.ts +8 -3
  117. package/src/utils/FlowUtils.ts +10 -4
  118. package/src/utils/SpokeUtils.ts +33 -3
@@ -1 +1 @@
1
- {"version":3,"file":"FillUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/FillUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FillUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/FillUtils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Infer } from "superstruct";
1
2
  import { BigNumber } from "../../../utils";
2
3
  export declare const BundleDataSS: import("superstruct").Struct<{
3
4
  bundleDepositsV3: Record<string, Record<string, {
@@ -10,6 +11,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
10
11
  inputToken: string;
11
12
  inputAmount: BigNumber;
12
13
  quoteTimestamp: number;
14
+ messageHash: string;
13
15
  destinationChainId: number;
14
16
  fromLiteChain: boolean;
15
17
  toLiteChain: boolean;
@@ -39,6 +41,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
39
41
  inputToken: string;
40
42
  inputAmount: BigNumber;
41
43
  quoteTimestamp: number;
44
+ messageHash: string;
42
45
  destinationChainId: number;
43
46
  depositor: string;
44
47
  recipient: string;
@@ -55,9 +58,9 @@ export declare const BundleDataSS: import("superstruct").Struct<{
55
58
  updatedOutputAmount: BigNumber;
56
59
  updatedMessage: string;
57
60
  fillType: number;
61
+ updatedMessageHash: string;
58
62
  };
59
63
  lpFeePct: BigNumber;
60
- messageHash?: string | undefined;
61
64
  }[];
62
65
  refunds: Record<string, BigNumber>;
63
66
  realizedLpFees: BigNumber;
@@ -73,6 +76,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
73
76
  inputToken: string;
74
77
  inputAmount: BigNumber;
75
78
  quoteTimestamp: number;
79
+ messageHash: string;
76
80
  destinationChainId: number;
77
81
  fromLiteChain: boolean;
78
82
  toLiteChain: boolean;
@@ -102,6 +106,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
102
106
  inputToken: string;
103
107
  inputAmount: BigNumber;
104
108
  quoteTimestamp: number;
109
+ messageHash: string;
105
110
  destinationChainId: number;
106
111
  fromLiteChain: boolean;
107
112
  toLiteChain: boolean;
@@ -130,6 +135,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
130
135
  inputToken: string;
131
136
  inputAmount: BigNumber;
132
137
  quoteTimestamp: number;
138
+ messageHash: string;
133
139
  destinationChainId: number;
134
140
  fromLiteChain: boolean;
135
141
  toLiteChain: boolean;
@@ -160,6 +166,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
160
166
  inputToken: string;
161
167
  inputAmount: BigNumber;
162
168
  quoteTimestamp: number;
169
+ messageHash: string;
163
170
  destinationChainId: number;
164
171
  fromLiteChain: boolean;
165
172
  toLiteChain: boolean;
@@ -188,6 +195,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
188
195
  inputToken: string;
189
196
  inputAmount: BigNumber;
190
197
  quoteTimestamp: number;
198
+ messageHash: string;
191
199
  destinationChainId: number;
192
200
  fromLiteChain: boolean;
193
201
  toLiteChain: boolean;
@@ -216,6 +224,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
216
224
  inputToken: string;
217
225
  inputAmount: BigNumber;
218
226
  quoteTimestamp: number;
227
+ messageHash: string;
219
228
  destinationChainId: number;
220
229
  fromLiteChain: boolean;
221
230
  toLiteChain: boolean;
@@ -245,6 +254,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
245
254
  inputToken: string;
246
255
  inputAmount: BigNumber;
247
256
  quoteTimestamp: number;
257
+ messageHash: string;
248
258
  destinationChainId: number;
249
259
  fromLiteChain: boolean;
250
260
  toLiteChain: boolean;
@@ -275,6 +285,7 @@ export declare const BundleDataSS: import("superstruct").Struct<{
275
285
  inputToken: string;
276
286
  inputAmount: BigNumber;
277
287
  quoteTimestamp: number;
288
+ messageHash: string;
278
289
  destinationChainId: number;
279
290
  depositor: string;
280
291
  recipient: string;
@@ -291,12 +302,13 @@ export declare const BundleDataSS: import("superstruct").Struct<{
291
302
  updatedOutputAmount: BigNumber;
292
303
  updatedMessage: string;
293
304
  fillType: number;
305
+ updatedMessageHash: string;
294
306
  };
295
307
  lpFeePct: BigNumber;
296
- messageHash?: string | undefined;
297
308
  }[];
298
309
  refunds: Record<string, BigNumber>;
299
310
  realizedLpFees: BigNumber;
300
311
  totalRefundAmount: BigNumber;
301
312
  }>>, null>;
302
313
  }>;
314
+ export type BundleData = Infer<typeof BundleDataSS>;
@@ -1,5 +1,6 @@
1
1
  import { __assign } from "tslib";
2
2
  import { object, number, optional, string, array, record, coerce, instance, pattern, boolean, defaulted, union, type, } from "superstruct";
3
+ import { UNDEFINED_MESSAGE_HASH } from "../../../constants";
3
4
  import { BigNumber } from "../../../utils";
4
5
  var PositiveIntegerStringSS = pattern(string(), /\d+/);
5
6
  var Web3AddressSS = pattern(string(), /^0x[a-fA-F0-9]{40}$/);
@@ -36,6 +37,7 @@ var SortableEventSS = {
36
37
  transactionHash: string(),
37
38
  };
38
39
  var V3DepositSS = {
40
+ messageHash: defaulted(string(), UNDEFINED_MESSAGE_HASH),
39
41
  fromLiteChain: defaulted(boolean(), false),
40
42
  toLiteChain: defaulted(boolean(), false),
41
43
  destinationChainId: number(),
@@ -54,8 +56,9 @@ var V3RelayExecutionEventInfoSS = object({
54
56
  fillType: FillTypeSS,
55
57
  updatedRecipient: string(),
56
58
  updatedMessage: string(),
59
+ updatedMessageHash: defaulted(string(), UNDEFINED_MESSAGE_HASH),
57
60
  });
58
- var V3FillSS = __assign(__assign({}, V3RelayDataSS), { destinationChainId: number(), relayer: string(), repaymentChainId: number(), relayExecutionInfo: V3RelayExecutionEventInfoSS, quoteTimestamp: number(), messageHash: optional(string()) });
61
+ var V3FillSS = __assign(__assign({}, V3RelayDataSS), { messageHash: defaulted(string(), UNDEFINED_MESSAGE_HASH), destinationChainId: number(), relayer: string(), repaymentChainId: number(), relayExecutionInfo: V3RelayExecutionEventInfoSS, quoteTimestamp: number() });
59
62
  var V3FillWithBlockSS = __assign(__assign({}, SortableEventSS), V3FillSS);
60
63
  var BundleFillV3SS = object(__assign(__assign({}, V3FillWithBlockSS), { lpFeePct: BigNumberType }));
61
64
  var nestedV3DepositRecordSS = record(PositiveIntegerStringSS, record(Web3AddressSS, array(V3DepositWithBlockSS)));
@@ -1 +1 @@
1
- {"version":3,"file":"SuperstructUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/SuperstructUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SuperstructUtils.js","sourceRoot":"","sources":["../../../../../src/clients/BundleDataClient/utils/SuperstructUtils.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { __assign, __awaiter, __extends, __generator, __spreadArray } from "tslib";
2
- import { BigNumber, bnZero, MAX_BIG_INT, assign, getRelayDataHash, isDefined, toBN, bnOne, isUnsafeDepositId, } from "../utils";
2
+ import { BigNumber, bnZero, MAX_BIG_INT, assign, getRelayEventKey, isDefined, toBN, bnOne, getMessageHash, isUnsafeDepositId, isSlowFill, isValidEvmAddress, isZeroAddress, } from "../utils";
3
3
  import { paginatedEventQuery, sortEventsAscendingInPlace, spreadEvent, spreadEventWithBlockNumber, } from "../utils/EventUtils";
4
4
  import { validateFillForDeposit } from "../utils/FlowUtils";
5
5
  import { ZERO_ADDRESS } from "../constants";
6
6
  import { getNetworkName } from "../utils/NetworkUtils";
7
7
  import { getBlockRangeForDepositId, getDepositIdAtBlock, relayFillStatus } from "../utils/SpokeUtils";
8
8
  import { BaseAbstractClient, isUpdateFailureReason } from "./BaseAbstractClient";
9
+ import { getRepaymentChainId, forceDestinationRepayment } from "./BundleDataClient/utils/FillUtils";
9
10
  /**
10
11
  * SpokePoolClient is a client for the SpokePool contract. It is responsible for querying the SpokePool contract
11
12
  * for events and storing them in memory. It also provides some convenience methods for querying the stored events.
@@ -93,7 +94,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
93
94
  */
94
95
  SpokePoolClient.prototype._getDuplicateDeposits = function (deposit) {
95
96
  var _a;
96
- var depositHash = this.getDepositHash(deposit);
97
+ var depositHash = getRelayEventKey(deposit);
97
98
  return (_a = this.duplicateDepositHashes[depositHash]) !== null && _a !== void 0 ? _a : [];
98
99
  };
99
100
  /**
@@ -229,8 +230,10 @@ var SpokePoolClient = /** @class */ (function (_super) {
229
230
  * @returns The corresponding deposit if found, undefined otherwise.
230
231
  */
231
232
  SpokePoolClient.prototype.getDeposit = function (depositId) {
232
- var depositHash = this.getDepositHash({ depositId: depositId, originChainId: this.chainId });
233
- return this.depositHashes[depositHash];
233
+ return Object.values(this.depositHashes).find(function (_a) {
234
+ var _depositId = _a.depositId;
235
+ return _depositId.eq(depositId);
236
+ });
234
237
  };
235
238
  /**
236
239
  * Find a SlowFillRequested event based on its deposit RelayData.
@@ -238,7 +241,8 @@ var SpokePoolClient = /** @class */ (function (_super) {
238
241
  * @returns The corresponding SlowFIllRequest event if found, otherwise undefined.
239
242
  */
240
243
  SpokePoolClient.prototype.getSlowFillRequest = function (relayData) {
241
- var hash = getRelayDataHash(relayData, this.chainId);
244
+ var messageHash = getMessageHash(relayData.message);
245
+ var hash = getRelayEventKey(__assign(__assign({}, relayData), { messageHash: messageHash, destinationChainId: this.chainId }));
242
246
  return this.slowFillRequests[hash];
243
247
  };
244
248
  /**
@@ -262,7 +266,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
262
266
  * @returns The corresponding deposit if found, undefined otherwise.
263
267
  */
264
268
  SpokePoolClient.prototype.getDepositForFill = function (fill) {
265
- var deposit = this.depositHashes[this.getDepositHash(fill)];
269
+ var deposit = this.depositHashes[getRelayEventKey(fill)];
266
270
  var match = validateFillForDeposit(fill, deposit);
267
271
  if (match.valid) {
268
272
  return deposit;
@@ -282,7 +286,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
282
286
  * @returns A valid fill for the deposit, or undefined.
283
287
  */
284
288
  SpokePoolClient.prototype.getFillForDeposit = function (deposit) {
285
- var fills = this.depositHashesToFills[this.getDepositHash(deposit)];
289
+ var fills = this.depositHashesToFills[getRelayEventKey(deposit)];
286
290
  return fills === null || fills === void 0 ? void 0 : fills.find(function (fill) { return validateFillForDeposit(fill, deposit); });
287
291
  };
288
292
  /**
@@ -293,21 +297,37 @@ var SpokePoolClient = /** @class */ (function (_super) {
293
297
  * @returns The unfilled amount.
294
298
  */
295
299
  SpokePoolClient.prototype.getValidUnfilledAmountForDeposit = function (deposit) {
300
+ var _this = this;
296
301
  var outputAmount = deposit.outputAmount;
297
- var fillsForDeposit = this.depositHashesToFills[this.getDepositHash(deposit)];
302
+ var fillsForDeposit = this.depositHashesToFills[getRelayEventKey(deposit)];
298
303
  // If no fills then the full amount is remaining.
299
304
  if (fillsForDeposit === undefined || fillsForDeposit.length === 0) {
300
305
  return { unfilledAmount: outputAmount, fillCount: 0, invalidFills: [] };
301
306
  }
302
307
  var _a = fillsForDeposit.reduce(function (groupedFills, fill) {
303
308
  if (validateFillForDeposit(fill, deposit).valid) {
309
+ var repaymentChainId = getRepaymentChainId(fill, deposit);
310
+ // In order to keep this function sync, we can't call verifyFillRepayment so we'll log any fills that
311
+ // we'll have to overwrite repayment information for. This includes fills for lite chains where the
312
+ // repayment address is invalid, and fills for non-lite chains where the repayment address is valid or
313
+ // the repayment chain is invalid. We don't check that the origin chain is a valid EVM chain for
314
+ // lite chain deposits yet because only EVM chains are supported on Across...for now. This means
315
+ // this logic will have to be revisited when we add SVM to log properly.
316
+ if (_this.hubPoolClient &&
317
+ !isSlowFill(fill) &&
318
+ (!isValidEvmAddress(fill.relayer) ||
319
+ forceDestinationRepayment(repaymentChainId, __assign(__assign({}, deposit), { quoteBlockNumber: _this.hubPoolClient.latestBlockSearched }), _this.hubPoolClient))) {
320
+ groupedFills.unrepayableFills.push(fill);
321
+ }
322
+ // This fill is still valid and means that the deposit cannot be filled on-chain anymore, but it
323
+ // also can be unrepayable which we should want to log.
304
324
  groupedFills.validFills.push(fill);
305
325
  }
306
326
  else {
307
327
  groupedFills.invalidFills.push(fill);
308
328
  }
309
329
  return groupedFills;
310
- }, { validFills: [], invalidFills: [] }), validFills = _a.validFills, invalidFills = _a.invalidFills;
330
+ }, { validFills: [], invalidFills: [], unrepayableFills: [] }), validFills = _a.validFills, invalidFills = _a.invalidFills, unrepayableFills = _a.unrepayableFills;
311
331
  // Log any invalid deposits with same deposit id but different params.
312
332
  var invalidFillsForDeposit = invalidFills.filter(function (x) { return x.depositId.eq(deposit.depositId); });
313
333
  if (invalidFillsForDeposit.length > 0) {
@@ -320,6 +340,17 @@ var SpokePoolClient = /** @class */ (function (_super) {
320
340
  notificationPath: "across-invalid-fills",
321
341
  });
322
342
  }
343
+ var unrepayableFillsForDeposit = unrepayableFills.filter(function (x) { return x.depositId.eq(deposit.depositId); });
344
+ if (unrepayableFillsForDeposit.length > 0) {
345
+ this.logger.warn({
346
+ at: "SpokePoolClient",
347
+ chainId: this.chainId,
348
+ message: "Unrepayable fills found where we need to switch repayment address and or chain",
349
+ deposit: deposit,
350
+ unrepayableFills: Object.fromEntries(unrepayableFillsForDeposit.map(function (x) { return [x.relayer, x]; })),
351
+ notificationPath: "across-unrepayable-fills",
352
+ });
353
+ }
323
354
  // If all fills are invalid we can consider this unfilled.
324
355
  if (validFills.length === 0) {
325
356
  return { unfilledAmount: outputAmount, fillCount: 0, invalidFills: invalidFills };
@@ -470,129 +501,178 @@ var SpokePoolClient = /** @class */ (function (_super) {
470
501
  * @see _update
471
502
  */
472
503
  SpokePoolClient.prototype.update = function (eventsToQuery) {
473
- var _a, _b, _c;
474
504
  if (eventsToQuery === void 0) { eventsToQuery = this.queryableEventNames; }
475
505
  return __awaiter(this, void 0, void 0, function () {
476
- var update, queryResults, currentTime, oldestTime, searchEndBlock, _i, _d, event_1, depositEvents, quoteBlockNumbers, _e, depositEvents_1, event_2, quoteBlockNumber, deposit, speedUpEvents, _f, speedUpEvents_1, event_3, speedUp, depositHash, depositDataAssociatedWithSpeedUp, slowFillRequests, _g, slowFillRequests_1, event_4, slowFillRequest, relayDataHash, fillEvents, _h, fillEvents_1, event_5, fill, enableDepositsEvents, _j, enableDepositsEvents_1, event_6, enableDeposit, relayedRootBundleEvents, _k, relayedRootBundleEvents_1, event_7, refundEvents, _l, refundEvents_1, event_8, executedRefund;
477
- return __generator(this, function (_m) {
478
- switch (_m.label) {
506
+ var update, queryResults, currentTime, oldestTime, searchEndBlock, _i, _a, event_1, queryDepositEvents, _b, _c, event_2, querySpeedUpDepositEvents, queryRequestedSlowFillEvents, queryFilledRelayEvents, enableDepositsEvents, _d, enableDepositsEvents_1, event_3, enableDeposit, relayedRootBundleEvents, _e, relayedRootBundleEvents_1, event_4, refundEvents, _f, refundEvents_1, event_5, executedRefund;
507
+ var _this = this;
508
+ return __generator(this, function (_g) {
509
+ switch (_g.label) {
479
510
  case 0:
480
511
  if (this.hubPoolClient !== null && !this.hubPoolClient.isUpdated) {
481
512
  throw new Error("HubPoolClient not updated");
482
513
  }
483
514
  return [4 /*yield*/, this._update(eventsToQuery)];
484
515
  case 1:
485
- update = _m.sent();
516
+ update = _g.sent();
486
517
  if (!update.success) {
487
518
  return [2 /*return*/];
488
519
  }
489
520
  queryResults = update.events, currentTime = update.currentTime, oldestTime = update.oldestTime, searchEndBlock = update.searchEndBlock;
490
521
  if (eventsToQuery.includes("TokensBridged")) {
491
- for (_i = 0, _d = queryResults[eventsToQuery.indexOf("TokensBridged")]; _i < _d.length; _i++) {
492
- event_1 = _d[_i];
522
+ for (_i = 0, _a = queryResults[eventsToQuery.indexOf("TokensBridged")]; _i < _a.length; _i++) {
523
+ event_1 = _a[_i];
493
524
  this.tokensBridged.push(spreadEventWithBlockNumber(event_1));
494
525
  }
495
526
  }
496
- if (!eventsToQuery.includes("V3FundsDeposited")) return [3 /*break*/, 3];
497
- depositEvents = (_a = queryResults[eventsToQuery.indexOf("V3FundsDeposited")]) !== null && _a !== void 0 ? _a : [];
498
- if (depositEvents.length > 0) {
499
- this.log("debug", "Using ".concat(depositEvents.length, " newly queried deposit events for chain ").concat(this.chainId), {
500
- earliestEvent: depositEvents[0].blockNumber,
527
+ queryDepositEvents = function (eventName) { return __awaiter(_this, void 0, void 0, function () {
528
+ var depositEvents, quoteBlockNumbers, _i, depositEvents_1, event_6, quoteBlockNumber, deposit;
529
+ var _a;
530
+ return __generator(this, function (_b) {
531
+ switch (_b.label) {
532
+ case 0:
533
+ depositEvents = (_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : [];
534
+ if (depositEvents.length > 0) {
535
+ this.log("debug", "Using ".concat(depositEvents.length, " newly queried ").concat(eventName, " deposit events for chain ").concat(this.chainId), {
536
+ earliestEvent: depositEvents[0].blockNumber,
537
+ });
538
+ }
539
+ return [4 /*yield*/, this.getBlockNumbers(depositEvents.map(function (_a) {
540
+ var args = _a.args;
541
+ return Number(args["quoteTimestamp"]);
542
+ }))];
543
+ case 1:
544
+ quoteBlockNumbers = _b.sent();
545
+ for (_i = 0, depositEvents_1 = depositEvents; _i < depositEvents_1.length; _i++) {
546
+ event_6 = depositEvents_1[_i];
547
+ quoteBlockNumber = quoteBlockNumbers[Number(event_6.args["quoteTimestamp"])];
548
+ deposit = __assign(__assign({}, spreadEventWithBlockNumber(event_6)), { messageHash: getMessageHash(event_6.args.message), quoteBlockNumber: quoteBlockNumber, originChainId: this.chainId,
549
+ // The following properties are placeholders to be updated immediately.
550
+ fromLiteChain: true, toLiteChain: true });
551
+ deposit.fromLiteChain = this.isOriginLiteChain(deposit);
552
+ deposit.toLiteChain = this.isDestinationLiteChain(deposit);
553
+ if (isZeroAddress(deposit.outputToken)) {
554
+ deposit.outputToken = this.getDestinationTokenForDeposit(deposit);
555
+ }
556
+ if (this.depositHashes[getRelayEventKey(deposit)] !== undefined) {
557
+ assign(this.duplicateDepositHashes, [getRelayEventKey(deposit)], [deposit]);
558
+ continue;
559
+ }
560
+ assign(this.depositHashes, [getRelayEventKey(deposit)], deposit);
561
+ if (deposit.depositId.lt(this.earliestDepositIdQueried) && !isUnsafeDepositId(deposit.depositId)) {
562
+ this.earliestDepositIdQueried = deposit.depositId;
563
+ }
564
+ if (deposit.depositId.gt(this.latestDepositIdQueried) && !isUnsafeDepositId(deposit.depositId)) {
565
+ this.latestDepositIdQueried = deposit.depositId;
566
+ }
567
+ }
568
+ return [2 /*return*/];
569
+ }
501
570
  });
502
- }
503
- return [4 /*yield*/, this.getBlockNumbers(depositEvents.map(function (_a) {
504
- var args = _a.args;
505
- return Number(args["quoteTimestamp"]);
506
- }))];
571
+ }); };
572
+ _b = 0, _c = ["V3FundsDeposited", "FundsDeposited"];
573
+ _g.label = 2;
507
574
  case 2:
508
- quoteBlockNumbers = _m.sent();
509
- for (_e = 0, depositEvents_1 = depositEvents; _e < depositEvents_1.length; _e++) {
510
- event_2 = depositEvents_1[_e];
511
- quoteBlockNumber = quoteBlockNumbers[Number(event_2.args["quoteTimestamp"])];
512
- deposit = __assign(__assign({}, spreadEventWithBlockNumber(event_2)), { quoteBlockNumber: quoteBlockNumber, originChainId: this.chainId,
513
- // The following properties are placeholders to be updated immediately.
514
- fromLiteChain: true, toLiteChain: true });
515
- deposit.fromLiteChain = this.isOriginLiteChain(deposit);
516
- deposit.toLiteChain = this.isDestinationLiteChain(deposit);
517
- if (deposit.outputToken === ZERO_ADDRESS) {
518
- deposit.outputToken = this.getDestinationTokenForDeposit(deposit);
519
- }
520
- if (this.depositHashes[this.getDepositHash(deposit)] !== undefined) {
521
- assign(this.duplicateDepositHashes, [this.getDepositHash(deposit)], [deposit]);
522
- continue;
523
- }
524
- assign(this.depositHashes, [this.getDepositHash(deposit)], deposit);
525
- if (deposit.depositId.lt(this.earliestDepositIdQueried) && !isUnsafeDepositId(deposit.depositId)) {
526
- this.earliestDepositIdQueried = deposit.depositId;
527
- }
528
- if (deposit.depositId.gt(this.latestDepositIdQueried) && !isUnsafeDepositId(deposit.depositId)) {
529
- this.latestDepositIdQueried = deposit.depositId;
530
- }
531
- }
532
- _m.label = 3;
575
+ if (!(_b < _c.length)) return [3 /*break*/, 5];
576
+ event_2 = _c[_b];
577
+ if (!eventsToQuery.includes(event_2)) return [3 /*break*/, 4];
578
+ return [4 /*yield*/, queryDepositEvents(event_2)];
533
579
  case 3:
534
- // Update deposits with speed up requests from depositor.
535
- if (eventsToQuery.includes("RequestedSpeedUpV3Deposit")) {
536
- speedUpEvents = (_b = queryResults[eventsToQuery.indexOf("RequestedSpeedUpV3Deposit")]) !== null && _b !== void 0 ? _b : [];
537
- for (_f = 0, speedUpEvents_1 = speedUpEvents; _f < speedUpEvents_1.length; _f++) {
538
- event_3 = speedUpEvents_1[_f];
539
- speedUp = __assign(__assign({}, spreadEventWithBlockNumber(event_3)), { originChainId: this.chainId });
540
- assign(this.speedUps, [speedUp.depositor, speedUp.depositId.toString()], [speedUp]);
541
- depositHash = this.getDepositHash(speedUp);
542
- depositDataAssociatedWithSpeedUp = this.depositHashes[depositHash];
543
- if (isDefined(depositDataAssociatedWithSpeedUp)) {
544
- this.depositHashes[depositHash] = this.appendMaxSpeedUpSignatureToDeposit(depositDataAssociatedWithSpeedUp);
580
+ _g.sent();
581
+ _g.label = 4;
582
+ case 4:
583
+ _b++;
584
+ return [3 /*break*/, 2];
585
+ case 5:
586
+ querySpeedUpDepositEvents = function (eventName) {
587
+ var _a;
588
+ var speedUpEvents = (_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : [];
589
+ for (var _i = 0, speedUpEvents_1 = speedUpEvents; _i < speedUpEvents_1.length; _i++) {
590
+ var event_7 = speedUpEvents_1[_i];
591
+ var speedUp = __assign(__assign({}, spreadEventWithBlockNumber(event_7)), { originChainId: _this.chainId });
592
+ assign(_this.speedUps, [speedUp.depositor, speedUp.depositId.toString()], [speedUp]);
593
+ // Find deposit hash matching this speed up event and update the deposit data associated with the hash,
594
+ // if the hash+data exists.
595
+ var deposit = _this.getDeposit(speedUp.depositId);
596
+ // We can assume all deposits in this lookback window are loaded in-memory already so if the depositHash
597
+ // is not mapped to a deposit, then we can throw away the speedup as it can't be applied to anything.
598
+ if (isDefined(deposit)) {
599
+ var eventKey = getRelayEventKey(deposit);
600
+ _this.depositHashes[eventKey] = _this.appendMaxSpeedUpSignatureToDeposit(deposit);
545
601
  }
546
602
  }
547
- }
548
- if (eventsToQuery.includes("RequestedV3SlowFill")) {
549
- slowFillRequests = queryResults[eventsToQuery.indexOf("RequestedV3SlowFill")];
550
- for (_g = 0, slowFillRequests_1 = slowFillRequests; _g < slowFillRequests_1.length; _g++) {
551
- event_4 = slowFillRequests_1[_g];
552
- slowFillRequest = __assign(__assign({}, spreadEventWithBlockNumber(event_4)), { destinationChainId: this.chainId });
553
- relayDataHash = getRelayDataHash(slowFillRequest, this.chainId);
554
- if (this.slowFillRequests[relayDataHash] !== undefined) {
555
- continue;
603
+ };
604
+ // Update deposits with speed up requests from depositor.
605
+ ["RequestedSpeedUpV3Deposit", "RequestedSpeedUpDeposit"].forEach(function (event) {
606
+ if (eventsToQuery.includes(event)) {
607
+ querySpeedUpDepositEvents(event);
608
+ }
609
+ });
610
+ queryRequestedSlowFillEvents = function (eventName) {
611
+ var _a;
612
+ var _b;
613
+ var slowFillRequests = queryResults[eventsToQuery.indexOf(eventName)];
614
+ for (var _i = 0, slowFillRequests_1 = slowFillRequests; _i < slowFillRequests_1.length; _i++) {
615
+ var event_8 = slowFillRequests_1[_i];
616
+ var slowFillRequest = __assign(__assign({}, spreadEventWithBlockNumber(event_8)), { destinationChainId: _this.chainId });
617
+ if (eventName === "RequestedV3SlowFill") {
618
+ slowFillRequest.messageHash = getMessageHash(slowFillRequest.message);
556
619
  }
557
- this.slowFillRequests[relayDataHash] = slowFillRequest;
620
+ var depositHash = getRelayEventKey(__assign(__assign({}, slowFillRequest), { destinationChainId: _this.chainId }));
621
+ (_a = (_b = _this.slowFillRequests)[depositHash]) !== null && _a !== void 0 ? _a : (_b[depositHash] = slowFillRequest);
558
622
  }
559
- }
560
- if (eventsToQuery.includes("FilledV3Relay")) {
561
- fillEvents = (_c = queryResults[eventsToQuery.indexOf("FilledV3Relay")]) !== null && _c !== void 0 ? _c : [];
623
+ };
624
+ ["RequestedV3SlowFill", "RequestedSlowFill"].forEach(function (event) {
625
+ if (eventsToQuery.includes(event)) {
626
+ queryRequestedSlowFillEvents(event);
627
+ }
628
+ });
629
+ queryFilledRelayEvents = function (eventName) {
630
+ var _a;
631
+ var fillEvents = (_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : [];
562
632
  if (fillEvents.length > 0) {
563
- this.log("debug", "Using ".concat(fillEvents.length, " newly queried fill events for chain ").concat(this.chainId), {
633
+ _this.log("debug", "Using ".concat(fillEvents.length, " newly queried ").concat(eventName, " events for chain ").concat(_this.chainId), {
564
634
  earliestEvent: fillEvents[0].blockNumber,
565
635
  });
566
636
  }
567
637
  // @note The type assertions here suppress errors that might arise due to incomplete types. For now, verify via
568
638
  // test that the types are complete. A broader change in strategy for safely unpacking events will be introduced.
569
- for (_h = 0, fillEvents_1 = fillEvents; _h < fillEvents_1.length; _h++) {
570
- event_5 = fillEvents_1[_h];
571
- fill = __assign(__assign({}, spreadEventWithBlockNumber(event_5)), { destinationChainId: this.chainId });
572
- assign(this.fills, [fill.originChainId], [fill]);
573
- assign(this.depositHashesToFills, [this.getDepositHash(fill)], [fill]);
639
+ for (var _i = 0, fillEvents_1 = fillEvents; _i < fillEvents_1.length; _i++) {
640
+ var event_9 = fillEvents_1[_i];
641
+ var fill = __assign(__assign({}, spreadEventWithBlockNumber(event_9)), { messageHash: getMessageHash(event_9.args["message"]), destinationChainId: _this.chainId });
642
+ if (eventName === "FilledV3Relay") {
643
+ fill.messageHash = getMessageHash(event_9.args.message);
644
+ fill.relayExecutionInfo.updatedMessageHash = getMessageHash(event_9.args.relayExecutionInfo.updatedMessage);
645
+ }
646
+ assign(_this.fills, [fill.originChainId], [fill]);
647
+ assign(_this.depositHashesToFills, [getRelayEventKey(fill)], [fill]);
574
648
  }
575
- }
649
+ };
650
+ // Update observed fills with ingested event data.
651
+ ["FilledV3Relay", "FilledRelay"].forEach(function (event) {
652
+ if (eventsToQuery.includes(event)) {
653
+ queryFilledRelayEvents(event);
654
+ }
655
+ });
576
656
  if (eventsToQuery.includes("EnabledDepositRoute")) {
577
657
  enableDepositsEvents = queryResults[eventsToQuery.indexOf("EnabledDepositRoute")];
578
- for (_j = 0, enableDepositsEvents_1 = enableDepositsEvents; _j < enableDepositsEvents_1.length; _j++) {
579
- event_6 = enableDepositsEvents_1[_j];
580
- enableDeposit = spreadEvent(event_6.args);
658
+ for (_d = 0, enableDepositsEvents_1 = enableDepositsEvents; _d < enableDepositsEvents_1.length; _d++) {
659
+ event_3 = enableDepositsEvents_1[_d];
660
+ enableDeposit = spreadEvent(event_3.args);
581
661
  assign(this.depositRoutes, [enableDeposit.originToken, enableDeposit.destinationChainId], enableDeposit.enabled);
582
662
  }
583
663
  }
584
664
  if (eventsToQuery.includes("RelayedRootBundle")) {
585
665
  relayedRootBundleEvents = queryResults[eventsToQuery.indexOf("RelayedRootBundle")];
586
- for (_k = 0, relayedRootBundleEvents_1 = relayedRootBundleEvents; _k < relayedRootBundleEvents_1.length; _k++) {
587
- event_7 = relayedRootBundleEvents_1[_k];
588
- this.rootBundleRelays.push(spreadEventWithBlockNumber(event_7));
666
+ for (_e = 0, relayedRootBundleEvents_1 = relayedRootBundleEvents; _e < relayedRootBundleEvents_1.length; _e++) {
667
+ event_4 = relayedRootBundleEvents_1[_e];
668
+ this.rootBundleRelays.push(spreadEventWithBlockNumber(event_4));
589
669
  }
590
670
  }
591
671
  if (eventsToQuery.includes("ExecutedRelayerRefundRoot")) {
592
672
  refundEvents = queryResults[eventsToQuery.indexOf("ExecutedRelayerRefundRoot")];
593
- for (_l = 0, refundEvents_1 = refundEvents; _l < refundEvents_1.length; _l++) {
594
- event_8 = refundEvents_1[_l];
595
- executedRefund = spreadEventWithBlockNumber(event_8);
673
+ for (_f = 0, refundEvents_1 = refundEvents; _f < refundEvents_1.length; _f++) {
674
+ event_5 = refundEvents_1[_f];
675
+ executedRefund = spreadEventWithBlockNumber(event_5);
596
676
  executedRefund.l2TokenAddress = SpokePoolClient.getExecutedRefundLeafL2Token(executedRefund.chainId, executedRefund.l2TokenAddress);
597
677
  this.relayerRefundExecutions.push(executedRefund);
598
678
  }
@@ -724,7 +804,7 @@ var SpokePoolClient = /** @class */ (function (_super) {
724
804
  return [4 /*yield*/, this.getBlockNumber(Number(event.args["quoteTimestamp"]))];
725
805
  case 3:
726
806
  deposit = __assign.apply(void 0, _a.concat([(_b.quoteBlockNumber = _c.sent(), _b.fromLiteChain = true, _b.toLiteChain = true, _b)]));
727
- if (deposit.outputToken === ZERO_ADDRESS) {
807
+ if (isZeroAddress(deposit.outputToken)) {
728
808
  deposit.outputToken = this.getDestinationTokenForDeposit(deposit);
729
809
  }
730
810
  deposit.fromLiteChain = this.isOriginLiteChain(deposit);