@across-protocol/sdk 4.2.7 → 4.2.9-alpha.0

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 (190) hide show
  1. package/dist/cjs/arch/evm/SpokeUtils.d.ts +2 -2
  2. package/dist/cjs/arch/evm/SpokeUtils.js +18 -3
  3. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  4. package/dist/cjs/arch/svm/SpokeUtils.js +7 -7
  5. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  6. package/dist/cjs/arch/svm/utils.d.ts +1 -1
  7. package/dist/cjs/arch/svm/utils.js +15 -13
  8. package/dist/cjs/arch/svm/utils.js.map +1 -1
  9. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +3 -3
  10. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +4 -2
  11. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  12. package/dist/cjs/clients/BundleDataClient/BundleDataClient.d.ts +2 -2
  13. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +57 -53
  14. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  15. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +13 -13
  16. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  17. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.d.ts +2 -1
  18. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +3 -2
  19. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  20. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +3 -3
  21. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  22. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +63 -63
  23. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +11 -8
  24. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  25. package/dist/cjs/clients/HubPoolClient.d.ts +20 -20
  26. package/dist/cjs/clients/HubPoolClient.js +78 -57
  27. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  28. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +2 -2
  29. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  30. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +5 -3
  31. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +35 -29
  32. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  33. package/dist/cjs/clients/mocks/MockHubPoolClient.d.ts +9 -9
  34. package/dist/cjs/clients/mocks/MockHubPoolClient.js +15 -9
  35. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  36. package/dist/cjs/clients/mocks/MockSpokePoolClient.d.ts +9 -13
  37. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +40 -56
  38. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  39. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
  40. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +2 -2
  41. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  42. package/dist/cjs/interfaces/HubPool.d.ts +18 -13
  43. package/dist/cjs/interfaces/SpokePool.d.ts +14 -16
  44. package/dist/cjs/interfaces/SpokePool.js.map +1 -1
  45. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +6 -6
  46. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +7 -7
  47. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  48. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  49. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +10 -10
  50. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  51. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +5 -5
  52. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +7 -7
  53. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  54. package/dist/cjs/utils/AddressUtils.d.ts +7 -4
  55. package/dist/cjs/utils/AddressUtils.js +21 -8
  56. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  57. package/dist/cjs/utils/SpokeUtils.d.ts +3 -3
  58. package/dist/cjs/utils/SpokeUtils.js +4 -22
  59. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  60. package/dist/cjs/utils/TokenUtils.d.ts +4 -4
  61. package/dist/cjs/utils/TokenUtils.js +3 -3
  62. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  63. package/dist/esm/arch/evm/SpokeUtils.d.ts +2 -2
  64. package/dist/esm/arch/evm/SpokeUtils.js +19 -4
  65. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  66. package/dist/esm/arch/svm/SpokeUtils.js +8 -8
  67. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  68. package/dist/esm/arch/svm/utils.d.ts +1 -1
  69. package/dist/esm/arch/svm/utils.js +15 -13
  70. package/dist/esm/arch/svm/utils.js.map +1 -1
  71. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +3 -3
  72. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +4 -2
  73. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  74. package/dist/esm/clients/BundleDataClient/BundleDataClient.d.ts +2 -2
  75. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +58 -54
  76. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  77. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +14 -14
  78. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  79. package/dist/esm/clients/BundleDataClient/utils/FillUtils.d.ts +2 -1
  80. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +4 -3
  81. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  82. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +4 -4
  83. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  84. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +63 -63
  85. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +12 -9
  86. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  87. package/dist/esm/clients/HubPoolClient.d.ts +22 -21
  88. package/dist/esm/clients/HubPoolClient.js +91 -61
  89. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  90. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +3 -3
  91. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  92. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +5 -3
  93. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +37 -30
  94. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  95. package/dist/esm/clients/mocks/MockHubPoolClient.d.ts +9 -9
  96. package/dist/esm/clients/mocks/MockHubPoolClient.js +16 -10
  97. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  98. package/dist/esm/clients/mocks/MockSpokePoolClient.d.ts +9 -13
  99. package/dist/esm/clients/mocks/MockSpokePoolClient.js +44 -60
  100. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  101. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
  102. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +3 -3
  103. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  104. package/dist/esm/interfaces/HubPool.d.ts +18 -13
  105. package/dist/esm/interfaces/SpokePool.d.ts +14 -16
  106. package/dist/esm/interfaces/SpokePool.js.map +1 -1
  107. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +6 -6
  108. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +8 -8
  109. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  110. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  111. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +10 -10
  112. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  113. package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +5 -5
  114. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +8 -8
  115. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  116. package/dist/esm/utils/AddressUtils.d.ts +7 -4
  117. package/dist/esm/utils/AddressUtils.js +25 -10
  118. package/dist/esm/utils/AddressUtils.js.map +1 -1
  119. package/dist/esm/utils/SpokeUtils.d.ts +3 -8
  120. package/dist/esm/utils/SpokeUtils.js +4 -26
  121. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  122. package/dist/esm/utils/TokenUtils.d.ts +4 -16
  123. package/dist/esm/utils/TokenUtils.js +3 -3
  124. package/dist/esm/utils/TokenUtils.js.map +1 -1
  125. package/dist/types/arch/evm/SpokeUtils.d.ts +2 -2
  126. package/dist/types/arch/evm/SpokeUtils.d.ts.map +1 -1
  127. package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
  128. package/dist/types/arch/svm/utils.d.ts +1 -1
  129. package/dist/types/arch/svm/utils.d.ts.map +1 -1
  130. package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +3 -3
  131. package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
  132. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts +2 -2
  133. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
  134. package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts.map +1 -1
  135. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts +2 -1
  136. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -1
  137. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
  138. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +63 -63
  139. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts.map +1 -1
  140. package/dist/types/clients/HubPoolClient.d.ts +22 -21
  141. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  142. package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
  143. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +5 -3
  144. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
  145. package/dist/types/clients/mocks/MockHubPoolClient.d.ts +9 -9
  146. package/dist/types/clients/mocks/MockHubPoolClient.d.ts.map +1 -1
  147. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts +9 -13
  148. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
  149. package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +2 -2
  150. package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts.map +1 -1
  151. package/dist/types/interfaces/HubPool.d.ts +18 -13
  152. package/dist/types/interfaces/HubPool.d.ts.map +1 -1
  153. package/dist/types/interfaces/SpokePool.d.ts +14 -16
  154. package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
  155. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +6 -6
  156. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
  157. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +3 -3
  158. package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
  159. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +5 -5
  160. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
  161. package/dist/types/utils/AddressUtils.d.ts +7 -4
  162. package/dist/types/utils/AddressUtils.d.ts.map +1 -1
  163. package/dist/types/utils/SpokeUtils.d.ts +3 -8
  164. package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
  165. package/dist/types/utils/TokenUtils.d.ts +4 -16
  166. package/dist/types/utils/TokenUtils.d.ts.map +1 -1
  167. package/package.json +1 -1
  168. package/src/arch/evm/SpokeUtils.ts +22 -8
  169. package/src/arch/svm/SpokeUtils.ts +7 -8
  170. package/src/arch/svm/utils.ts +3 -3
  171. package/src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts +7 -4
  172. package/src/clients/BundleDataClient/BundleDataClient.ts +49 -47
  173. package/src/clients/BundleDataClient/utils/DataworkerUtils.ts +28 -13
  174. package/src/clients/BundleDataClient/utils/FillUtils.ts +6 -4
  175. package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +4 -4
  176. package/src/clients/BundleDataClient/utils/SuperstructUtils.ts +13 -9
  177. package/src/clients/HubPoolClient.ts +113 -79
  178. package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +7 -1
  179. package/src/clients/SpokePoolClient/SpokePoolClient.ts +104 -37
  180. package/src/clients/mocks/MockHubPoolClient.ts +24 -19
  181. package/src/clients/mocks/MockSpokePoolClient.ts +53 -74
  182. package/src/clients/mocks/MockSvmSpokePoolClient.ts +12 -3
  183. package/src/interfaces/HubPool.ts +22 -13
  184. package/src/interfaces/SpokePool.ts +14 -17
  185. package/src/relayFeeCalculator/chain-queries/baseQuery.ts +10 -8
  186. package/src/relayFeeCalculator/chain-queries/svmQuery.ts +10 -10
  187. package/src/relayFeeCalculator/relayFeeCalculator.ts +11 -9
  188. package/src/utils/AddressUtils.ts +32 -14
  189. package/src/utils/SpokeUtils.ts +11 -33
  190. package/src/utils/TokenUtils.ts +7 -7
@@ -17,6 +17,7 @@ import {
17
17
  fixedPointAdjustment,
18
18
  count2DDictionaryValues,
19
19
  count3DDictionaryValues,
20
+ toAddressType,
20
21
  } from "../../../utils";
21
22
  import {
22
23
  addLastRunningBalance,
@@ -65,10 +66,10 @@ export function getRefundsFromBundle(
65
66
  Object.entries(depositsForChain).forEach(([l2TokenAddress, deposits]) => {
66
67
  deposits.forEach((deposit) => {
67
68
  if (combinedRefunds[originChainId][l2TokenAddress] === undefined) {
68
- combinedRefunds[originChainId][l2TokenAddress] = { [deposit.depositor]: deposit.inputAmount };
69
+ combinedRefunds[originChainId][l2TokenAddress] = { [deposit.depositor.toBytes32()]: deposit.inputAmount };
69
70
  } else {
70
- const existingRefundAmount = combinedRefunds[originChainId][l2TokenAddress][deposit.depositor];
71
- combinedRefunds[originChainId][l2TokenAddress][deposit.depositor] = deposit.inputAmount.add(
71
+ const existingRefundAmount = combinedRefunds[originChainId][l2TokenAddress][deposit.depositor.toBytes32()];
72
+ combinedRefunds[originChainId][l2TokenAddress][deposit.depositor.toBytes32()] = deposit.inputAmount.add(
72
73
  existingRefundAmount ?? bnZero
73
74
  );
74
75
  }
@@ -153,19 +154,23 @@ export function _buildPoolRebalanceRoot(
153
154
  // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
154
155
  // there are no relevant L1 running balances.
155
156
  if (
156
- !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(l2TokenAddress, repaymentChainId, mainnetBundleEndBlock)
157
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
158
+ toAddressType(l2TokenAddress),
159
+ repaymentChainId,
160
+ mainnetBundleEndBlock
161
+ )
157
162
  ) {
158
163
  chainWithRefundsOnly.add(repaymentChainId);
159
164
  return;
160
165
  }
161
166
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
162
- l2TokenAddress,
167
+ toAddressType(l2TokenAddress),
163
168
  repaymentChainId,
164
169
  mainnetBundleEndBlock
165
170
  );
166
171
 
167
- updateRunningBalance(runningBalances, repaymentChainId, l1TokenCounterpart, totalRefundAmount);
168
- updateRunningBalance(realizedLpFees, repaymentChainId, l1TokenCounterpart, totalRealizedLpFee);
172
+ updateRunningBalance(runningBalances, repaymentChainId, l1TokenCounterpart.toEvmAddress(), totalRefundAmount);
173
+ updateRunningBalance(realizedLpFees, repaymentChainId, l1TokenCounterpart.toEvmAddress(), totalRealizedLpFee);
169
174
  }
170
175
  );
171
176
  });
@@ -182,12 +187,17 @@ export function _buildPoolRebalanceRoot(
182
187
  Object.entries(depositsForChain).forEach(([outputToken, deposits]) => {
183
188
  deposits.forEach((deposit) => {
184
189
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
185
- outputToken,
190
+ toAddressType(outputToken),
186
191
  destinationChainId,
187
192
  mainnetBundleEndBlock
188
193
  );
189
194
  const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
190
- updateRunningBalance(runningBalances, destinationChainId, l1TokenCounterpart, deposit.inputAmount.sub(lpFee));
195
+ updateRunningBalance(
196
+ runningBalances,
197
+ destinationChainId,
198
+ l1TokenCounterpart.toEvmAddress(),
199
+ deposit.inputAmount.sub(lpFee)
200
+ );
191
201
  // Slow fill LP fees are accounted for when the slow fill executes and a V3FilledRelay is emitted. i.e. when
192
202
  // the slow fill execution is included in bundleFillsV3.
193
203
  });
@@ -206,12 +216,17 @@ export function _buildPoolRebalanceRoot(
206
216
  Object.entries(slowFilledDepositsForChain).forEach(([outputToken, slowFilledDeposits]) => {
207
217
  slowFilledDeposits.forEach((deposit) => {
208
218
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
209
- outputToken,
219
+ toAddressType(outputToken),
210
220
  destinationChainId,
211
221
  mainnetBundleEndBlock
212
222
  );
213
223
  const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
214
- updateRunningBalance(runningBalances, destinationChainId, l1TokenCounterpart, lpFee.sub(deposit.inputAmount));
224
+ updateRunningBalance(
225
+ runningBalances,
226
+ destinationChainId,
227
+ l1TokenCounterpart.toEvmAddress(),
228
+ lpFee.sub(deposit.inputAmount)
229
+ );
215
230
  // Slow fills don't add to lpFees, only when the slow fill is executed and a V3FilledRelay is emitted, so
216
231
  // we don't need to subtract it here. Moreover, the HubPoole expects bundleLpFees to be > 0.
217
232
  });
@@ -271,11 +286,11 @@ export function _buildPoolRebalanceRoot(
271
286
  return;
272
287
  }
273
288
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
274
- inputToken,
289
+ toAddressType(inputToken),
275
290
  originChainId,
276
291
  mainnetBundleEndBlock
277
292
  );
278
- updateRunningBalance(runningBalances, originChainId, l1TokenCounterpart, deposit.inputAmount);
293
+ updateRunningBalance(runningBalances, originChainId, l1TokenCounterpart.toEvmAddress(), deposit.inputAmount);
279
294
  });
280
295
  });
281
296
  });
@@ -2,7 +2,7 @@ import _ from "lodash";
2
2
  import assert from "assert";
3
3
  import { providers } from "ethers";
4
4
  import { DepositWithBlock, Fill, FillWithBlock } from "../../../interfaces";
5
- import { isSlowFill, isValidEvmAddress, isDefined, chainIsEvm } from "../../../utils";
5
+ import { isSlowFill, isValidEvmAddress, isDefined, chainIsEvm, Address, toAddressType } from "../../../utils";
6
6
  import { HubPoolClient } from "../../HubPoolClient";
7
7
  import { SVMProvider } from "../../../arch/svm";
8
8
 
@@ -25,7 +25,7 @@ export function getRefundInformationFromFill(
25
25
  bundleEndBlockForMainnet: number
26
26
  ): {
27
27
  chainToSendRefundTo: number;
28
- repaymentToken: string;
28
+ repaymentToken: Address;
29
29
  } {
30
30
  const chainToSendRefundTo = _getRepaymentChainId(relayData, hubPoolClient, bundleEndBlockForMainnet);
31
31
  if (chainToSendRefundTo === relayData.originChainId) {
@@ -49,6 +49,7 @@ export function getRefundInformationFromFill(
49
49
  chainToSendRefundTo,
50
50
  bundleEndBlockForMainnet
51
51
  );
52
+
52
53
  return {
53
54
  chainToSendRefundTo,
54
55
  repaymentToken,
@@ -125,7 +126,8 @@ export async function verifyFillRepayment(
125
126
  return undefined;
126
127
  }
127
128
  }
128
- fill.relayer = destinationRelayer;
129
+ fill.relayer = toAddressType(destinationRelayer);
130
+ assert(fill.relayer.isValidEvmAddress(), `Cannot re-assign fill to msg.sender: ${destinationRelayer}`);
129
131
  } else {
130
132
  return undefined;
131
133
  }
@@ -200,5 +202,5 @@ function _repaymentAddressNeedsToBeOverwritten(fill: Fill): boolean {
200
202
  // - i.e. If chainIsSvm && !isValidSvmAddress(fill.relayer) then return false
201
203
  // If chainIsEvm && !isValidEvmAddress(fill.relayer) then return false
202
204
  // If chainIsEvm && isValidEvmAddress(fill.relayer) then return true
203
- return !isValidEvmAddress(fill.relayer);
205
+ return chainIsEvm(fill.repaymentChainId) && !fill.relayer.isValidEvmAddress();
204
206
  }
@@ -1,7 +1,7 @@
1
1
  import { MerkleTree } from "@across-protocol/contracts/dist/utils/MerkleTree";
2
2
  import { RunningBalances, PoolRebalanceLeaf, Clients, SpokePoolTargetBalance } from "../../../interfaces";
3
3
  import { SpokePoolClient } from "../../SpokePoolClient";
4
- import { BigNumber, bnZero, compareAddresses } from "../../../utils";
4
+ import { BigNumber, bnZero, compareAddresses, EvmAddress } from "../../../utils";
5
5
  import { HubPoolClient } from "../../HubPoolClient";
6
6
  import { V3DepositWithBlock } from "./shims";
7
7
  import { AcrossConfigStoreClient } from "../../AcrossConfigStoreClient";
@@ -151,7 +151,7 @@ export function addLastRunningBalance(
151
151
  const { runningBalance } = hubPoolClient.getRunningBalanceBeforeBlockForChain(
152
152
  latestMainnetBlock,
153
153
  Number(repaymentChainId),
154
- l1TokenAddress
154
+ EvmAddress.from(l1TokenAddress)
155
155
  );
156
156
  if (!runningBalance.eq(bnZero)) {
157
157
  updateRunningBalance(runningBalances, Number(repaymentChainId), l1TokenAddress, runningBalance);
@@ -172,7 +172,7 @@ export function updateRunningBalanceForDeposit(
172
172
  deposit.originChainId,
173
173
  mainnetBundleEndBlock
174
174
  );
175
- updateRunningBalance(runningBalances, deposit.originChainId, l1TokenCounterpart, updateAmount);
175
+ updateRunningBalance(runningBalances, deposit.originChainId, l1TokenCounterpart.toEvmAddress(), updateAmount);
176
176
  }
177
177
 
178
178
  export function constructPoolRebalanceLeaves(
@@ -253,7 +253,7 @@ export function constructPoolRebalanceLeaves(
253
253
  runningBalances: leafRunningBalances,
254
254
  groupIndex: groupIndexForChainId++,
255
255
  leafId: leaves.length,
256
- l1Tokens: l1TokensToIncludeInThisLeaf,
256
+ l1Tokens: l1TokensToIncludeInThisLeaf.map((l1TokenAddr: string) => EvmAddress.from(l1TokenAddr)),
257
257
  });
258
258
  }
259
259
  });
@@ -15,7 +15,7 @@ import {
15
15
  type,
16
16
  } from "superstruct";
17
17
  import { UNDEFINED_MESSAGE_HASH } from "../../../constants";
18
- import { BigNumber } from "../../../utils";
18
+ import { BigNumber, toAddressType, Address } from "../../../utils";
19
19
 
20
20
  const PositiveIntegerStringSS = pattern(string(), /\d+/);
21
21
  const Web3AddressSS = pattern(string(), /^0x[a-fA-F0-9]{40}$/);
@@ -31,19 +31,23 @@ const BigNumberType = coerce(instance(BigNumber), union([string(), number()]), (
31
31
  }
32
32
  });
33
33
 
34
+ const AddressType = coerce(instance(Address), string(), (value) => {
35
+ return toAddressType(value);
36
+ });
37
+
34
38
  const FillTypeSS = number();
35
39
 
36
40
  const V3RelayDataSS = {
37
- inputToken: string(),
41
+ inputToken: AddressType,
38
42
  inputAmount: BigNumberType,
39
- outputToken: string(),
43
+ outputToken: AddressType,
40
44
  outputAmount: BigNumberType,
41
45
  fillDeadline: number(),
42
- exclusiveRelayer: string(),
46
+ exclusiveRelayer: AddressType,
43
47
  exclusivityDeadline: number(),
44
48
  originChainId: number(),
45
- depositor: string(),
46
- recipient: string(),
49
+ depositor: AddressType,
50
+ recipient: AddressType,
47
51
  depositId: BigNumberType,
48
52
  message: string(),
49
53
  };
@@ -67,7 +71,7 @@ const V3DepositSS = {
67
71
  quoteTimestamp: number(),
68
72
  relayerFeePct: optional(BigNumberType),
69
73
  speedUpSignature: optional(string()),
70
- updatedRecipient: optional(string()),
74
+ updatedRecipient: optional(AddressType),
71
75
  updatedOutputAmount: optional(BigNumberType),
72
76
  updatedMessage: optional(string()),
73
77
  };
@@ -88,7 +92,7 @@ const V3DepositWithBlockLpFeeSS = object({
88
92
  const V3RelayExecutionEventInfoSS = object({
89
93
  updatedOutputAmount: BigNumberType,
90
94
  fillType: FillTypeSS,
91
- updatedRecipient: string(),
95
+ updatedRecipient: AddressType,
92
96
  updatedMessage: optional(string()),
93
97
  updatedMessageHash: defaulted(string(), UNDEFINED_MESSAGE_HASH),
94
98
  });
@@ -98,7 +102,7 @@ const V3FillSS = {
98
102
  message: optional(string()),
99
103
  messageHash: defaulted(string(), UNDEFINED_MESSAGE_HASH),
100
104
  destinationChainId: number(),
101
- relayer: string(),
105
+ relayer: AddressType,
102
106
  repaymentChainId: number(),
103
107
  relayExecutionInfo: V3RelayExecutionEventInfoSS,
104
108
  quoteTimestamp: number(),