@across-protocol/sdk 3.1.33 → 3.1.35

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 (278) hide show
  1. package/dist/cjs/apiClient/abstractClient.d.ts +2 -2
  2. package/dist/cjs/apiClient/mockedClient.d.ts +2 -2
  3. package/dist/cjs/apiClient/mockedClient.js +13 -12
  4. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  5. package/dist/cjs/apiClient/productionClient.d.ts +2 -2
  6. package/dist/cjs/apiClient/productionClient.js +10 -10
  7. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  8. package/dist/cjs/apiClient/types.d.ts +10 -10
  9. package/dist/cjs/caching/Arweave/ArweaveClient.d.ts +2 -2
  10. package/dist/cjs/caching/Arweave/ArweaveClient.js +3 -4
  11. package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
  12. package/dist/cjs/clients/BaseAbstractClient.d.ts +4 -3
  13. package/dist/cjs/clients/BaseAbstractClient.js +4 -3
  14. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  15. package/dist/cjs/clients/BundleDataClient/BundleDataClient.d.ts +1 -1
  16. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +2 -3
  17. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  18. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  19. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  20. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +1 -1
  21. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +3 -3
  22. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  23. package/dist/cjs/clients/HubPoolClient.d.ts +2 -2
  24. package/dist/cjs/clients/HubPoolClient.js +1 -2
  25. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  26. package/dist/cjs/clients/SpokePoolClient.d.ts +2 -2
  27. package/dist/cjs/clients/SpokePoolClient.js +2 -3
  28. package/dist/cjs/clients/SpokePoolClient.js.map +1 -1
  29. package/dist/cjs/clients/index.d.ts +1 -0
  30. package/dist/cjs/clients/index.js +3 -1
  31. package/dist/cjs/clients/index.js.map +1 -1
  32. package/dist/cjs/clients/mocks/MockHubPoolClient.d.ts +2 -1
  33. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  34. package/dist/cjs/clients/mocks/MockSpokePoolClient.d.ts +2 -1
  35. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  36. package/dist/cjs/constants.d.ts +0 -3
  37. package/dist/cjs/constants.js +1 -3
  38. package/dist/cjs/constants.js.map +1 -1
  39. package/dist/cjs/contracts/utils.d.ts +2 -1
  40. package/dist/cjs/contracts/utils.js +2 -3
  41. package/dist/cjs/contracts/utils.js.map +1 -1
  42. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +4 -3
  43. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  44. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +2 -3
  45. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  46. package/dist/cjs/gasPriceOracle/adapters/polygon.js +3 -4
  47. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  48. package/dist/cjs/gasPriceOracle/types.d.ts +2 -1
  49. package/dist/cjs/gasPriceOracle/util.d.ts +2 -1
  50. package/dist/cjs/gasPriceOracle/util.js.map +1 -1
  51. package/dist/cjs/interfaces/Bridge.d.ts +1 -1
  52. package/dist/cjs/interfaces/BundleData.d.ts +2 -1
  53. package/dist/cjs/interfaces/Common.d.ts +1 -1
  54. package/dist/cjs/interfaces/ConfigStore.d.ts +1 -1
  55. package/dist/cjs/interfaces/HubPool.d.ts +1 -1
  56. package/dist/cjs/interfaces/SpokePool.d.ts +1 -1
  57. package/dist/cjs/pool/poolClient.d.ts +2 -2
  58. package/dist/cjs/pool/poolClient.js +14 -14
  59. package/dist/cjs/pool/poolClient.js.map +1 -1
  60. package/dist/cjs/providers/retryProvider.js +34 -24
  61. package/dist/cjs/providers/retryProvider.js.map +1 -1
  62. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  63. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +1 -2
  64. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  65. package/dist/cjs/utils/AddressUtils.js +3 -2
  66. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  67. package/dist/cjs/utils/BigNumberUtils.d.ts +9 -5
  68. package/dist/cjs/utils/BigNumberUtils.js +13 -8
  69. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  70. package/dist/cjs/utils/FormattingUtils.d.ts +3 -4
  71. package/dist/cjs/utils/FormattingUtils.js +5 -5
  72. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  73. package/dist/cjs/utils/JSONUtils.js +5 -5
  74. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  75. package/dist/cjs/utils/Multicall.js.map +1 -1
  76. package/dist/cjs/utils/SpokeUtils.js +1 -1
  77. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  78. package/dist/cjs/utils/TokenUtils.d.ts +2 -1
  79. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  80. package/dist/cjs/utils/ValidatorUtils.js +4 -3
  81. package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
  82. package/dist/cjs/utils/common.d.ts +4 -4
  83. package/dist/cjs/utils/common.js +5 -7
  84. package/dist/cjs/utils/common.js.map +1 -1
  85. package/dist/esm/apiClient/abstractClient.d.ts +2 -2
  86. package/dist/esm/apiClient/mockedClient.d.ts +2 -2
  87. package/dist/esm/apiClient/mockedClient.js +13 -12
  88. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  89. package/dist/esm/apiClient/productionClient.d.ts +2 -2
  90. package/dist/esm/apiClient/productionClient.js +10 -10
  91. package/dist/esm/apiClient/productionClient.js.map +1 -1
  92. package/dist/esm/apiClient/types.d.ts +10 -10
  93. package/dist/esm/caching/Arweave/ArweaveClient.d.ts +2 -2
  94. package/dist/esm/caching/Arweave/ArweaveClient.js +2 -3
  95. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  96. package/dist/esm/clients/BaseAbstractClient.d.ts +4 -3
  97. package/dist/esm/clients/BaseAbstractClient.js +4 -3
  98. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  99. package/dist/esm/clients/BundleDataClient/BundleDataClient.d.ts +1 -1
  100. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1 -2
  101. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  102. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  103. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  104. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +1 -1
  105. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +1 -1
  106. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  107. package/dist/esm/clients/HubPoolClient.d.ts +2 -2
  108. package/dist/esm/clients/HubPoolClient.js +1 -2
  109. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  110. package/dist/esm/clients/SpokePoolClient.d.ts +2 -2
  111. package/dist/esm/clients/SpokePoolClient.js +1 -2
  112. package/dist/esm/clients/SpokePoolClient.js.map +1 -1
  113. package/dist/esm/clients/index.d.ts +1 -0
  114. package/dist/esm/clients/index.js +1 -0
  115. package/dist/esm/clients/index.js.map +1 -1
  116. package/dist/esm/clients/mocks/MockHubPoolClient.d.ts +2 -1
  117. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  118. package/dist/esm/clients/mocks/MockSpokePoolClient.d.ts +2 -1
  119. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  120. package/dist/esm/constants.d.ts +0 -3
  121. package/dist/esm/constants.js +1 -3
  122. package/dist/esm/constants.js.map +1 -1
  123. package/dist/esm/contracts/utils.d.ts +2 -1
  124. package/dist/esm/contracts/utils.js +1 -2
  125. package/dist/esm/contracts/utils.js.map +1 -1
  126. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +5 -4
  127. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  128. package/dist/esm/gasPriceOracle/adapters/ethereum.js +1 -2
  129. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  130. package/dist/esm/gasPriceOracle/adapters/polygon.js +4 -5
  131. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  132. package/dist/esm/gasPriceOracle/types.d.ts +2 -1
  133. package/dist/esm/gasPriceOracle/util.d.ts +2 -1
  134. package/dist/esm/gasPriceOracle/util.js.map +1 -1
  135. package/dist/esm/interfaces/Bridge.d.ts +1 -1
  136. package/dist/esm/interfaces/BundleData.d.ts +2 -1
  137. package/dist/esm/interfaces/Common.d.ts +1 -1
  138. package/dist/esm/interfaces/ConfigStore.d.ts +1 -1
  139. package/dist/esm/interfaces/HubPool.d.ts +1 -1
  140. package/dist/esm/interfaces/SpokePool.d.ts +1 -1
  141. package/dist/esm/pool/poolClient.d.ts +2 -2
  142. package/dist/esm/pool/poolClient.js +8 -8
  143. package/dist/esm/pool/poolClient.js.map +1 -1
  144. package/dist/esm/providers/retryProvider.js +34 -24
  145. package/dist/esm/providers/retryProvider.js.map +1 -1
  146. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  147. package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +1 -2
  148. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  149. package/dist/esm/utils/AddressUtils.js +2 -1
  150. package/dist/esm/utils/AddressUtils.js.map +1 -1
  151. package/dist/esm/utils/BigNumberUtils.d.ts +9 -5
  152. package/dist/esm/utils/BigNumberUtils.js +11 -5
  153. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  154. package/dist/esm/utils/FormattingUtils.d.ts +3 -4
  155. package/dist/esm/utils/FormattingUtils.js +7 -7
  156. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  157. package/dist/esm/utils/JSONUtils.js +1 -1
  158. package/dist/esm/utils/JSONUtils.js.map +1 -1
  159. package/dist/esm/utils/Multicall.js.map +1 -1
  160. package/dist/esm/utils/SpokeUtils.js +2 -2
  161. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  162. package/dist/esm/utils/TokenUtils.d.ts +34 -33
  163. package/dist/esm/utils/TokenUtils.js.map +1 -1
  164. package/dist/esm/utils/ValidatorUtils.js +5 -4
  165. package/dist/esm/utils/ValidatorUtils.js.map +1 -1
  166. package/dist/esm/utils/common.d.ts +4 -4
  167. package/dist/esm/utils/common.js +4 -6
  168. package/dist/esm/utils/common.js.map +1 -1
  169. package/dist/types/apiClient/abstractClient.d.ts +2 -2
  170. package/dist/types/apiClient/abstractClient.d.ts.map +1 -1
  171. package/dist/types/apiClient/mockedClient.d.ts +2 -2
  172. package/dist/types/apiClient/mockedClient.d.ts.map +1 -1
  173. package/dist/types/apiClient/productionClient.d.ts +2 -2
  174. package/dist/types/apiClient/productionClient.d.ts.map +1 -1
  175. package/dist/types/apiClient/types.d.ts +10 -10
  176. package/dist/types/apiClient/types.d.ts.map +1 -1
  177. package/dist/types/caching/Arweave/ArweaveClient.d.ts +2 -2
  178. package/dist/types/caching/Arweave/ArweaveClient.d.ts.map +1 -1
  179. package/dist/types/clients/BaseAbstractClient.d.ts +4 -3
  180. package/dist/types/clients/BaseAbstractClient.d.ts.map +1 -1
  181. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts +1 -1
  182. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
  183. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts +1 -1
  184. package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
  185. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +1 -1
  186. package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts.map +1 -1
  187. package/dist/types/clients/HubPoolClient.d.ts +2 -2
  188. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  189. package/dist/types/clients/SpokePoolClient.d.ts +2 -2
  190. package/dist/types/clients/SpokePoolClient.d.ts.map +1 -1
  191. package/dist/types/clients/index.d.ts +1 -0
  192. package/dist/types/clients/index.d.ts.map +1 -1
  193. package/dist/types/clients/mocks/MockHubPoolClient.d.ts +2 -1
  194. package/dist/types/clients/mocks/MockHubPoolClient.d.ts.map +1 -1
  195. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts +2 -1
  196. package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
  197. package/dist/types/constants.d.ts +0 -3
  198. package/dist/types/constants.d.ts.map +1 -1
  199. package/dist/types/contracts/utils.d.ts +2 -1
  200. package/dist/types/contracts/utils.d.ts.map +1 -1
  201. package/dist/types/gasPriceOracle/adapters/arbitrum.d.ts.map +1 -1
  202. package/dist/types/gasPriceOracle/adapters/ethereum.d.ts.map +1 -1
  203. package/dist/types/gasPriceOracle/adapters/polygon.d.ts.map +1 -1
  204. package/dist/types/gasPriceOracle/types.d.ts +2 -1
  205. package/dist/types/gasPriceOracle/types.d.ts.map +1 -1
  206. package/dist/types/gasPriceOracle/util.d.ts +2 -1
  207. package/dist/types/gasPriceOracle/util.d.ts.map +1 -1
  208. package/dist/types/interfaces/Bridge.d.ts +1 -1
  209. package/dist/types/interfaces/Bridge.d.ts.map +1 -1
  210. package/dist/types/interfaces/BundleData.d.ts +2 -1
  211. package/dist/types/interfaces/BundleData.d.ts.map +1 -1
  212. package/dist/types/interfaces/Common.d.ts +1 -1
  213. package/dist/types/interfaces/Common.d.ts.map +1 -1
  214. package/dist/types/interfaces/ConfigStore.d.ts +1 -1
  215. package/dist/types/interfaces/ConfigStore.d.ts.map +1 -1
  216. package/dist/types/interfaces/HubPool.d.ts +1 -1
  217. package/dist/types/interfaces/HubPool.d.ts.map +1 -1
  218. package/dist/types/interfaces/SpokePool.d.ts +1 -1
  219. package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
  220. package/dist/types/pool/poolClient.d.ts +2 -2
  221. package/dist/types/pool/poolClient.d.ts.map +1 -1
  222. package/dist/types/providers/retryProvider.d.ts.map +1 -1
  223. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +3 -3
  224. package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
  225. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +1 -2
  226. package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
  227. package/dist/types/utils/AddressUtils.d.ts.map +1 -1
  228. package/dist/types/utils/BigNumberUtils.d.ts +9 -5
  229. package/dist/types/utils/BigNumberUtils.d.ts.map +1 -1
  230. package/dist/types/utils/FormattingUtils.d.ts +3 -4
  231. package/dist/types/utils/FormattingUtils.d.ts.map +1 -1
  232. package/dist/types/utils/Multicall.d.ts.map +1 -1
  233. package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
  234. package/dist/types/utils/TokenUtils.d.ts +34 -33
  235. package/dist/types/utils/TokenUtils.d.ts.map +1 -1
  236. package/dist/types/utils/ValidatorUtils.d.ts.map +1 -1
  237. package/dist/types/utils/common.d.ts +4 -4
  238. package/dist/types/utils/common.d.ts.map +1 -1
  239. package/package.json +2 -1
  240. package/src/apiClient/abstractClient.ts +2 -2
  241. package/src/apiClient/mockedClient.ts +14 -13
  242. package/src/apiClient/productionClient.ts +11 -12
  243. package/src/apiClient/types.ts +10 -10
  244. package/src/caching/Arweave/ArweaveClient.ts +3 -4
  245. package/src/clients/BaseAbstractClient.ts +1 -0
  246. package/src/clients/BundleDataClient/BundleDataClient.ts +1 -1
  247. package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +1 -2
  248. package/src/clients/BundleDataClient/utils/SuperstructUtils.ts +1 -1
  249. package/src/clients/HubPoolClient.ts +2 -1
  250. package/src/clients/SpokePoolClient.ts +2 -1
  251. package/src/clients/index.ts +1 -0
  252. package/src/clients/mocks/MockHubPoolClient.ts +2 -2
  253. package/src/clients/mocks/MockSpokePoolClient.ts +2 -2
  254. package/src/constants.ts +1 -4
  255. package/src/contracts/utils.ts +2 -2
  256. package/src/gasPriceOracle/adapters/arbitrum.ts +4 -3
  257. package/src/gasPriceOracle/adapters/ethereum.ts +2 -2
  258. package/src/gasPriceOracle/adapters/polygon.ts +5 -5
  259. package/src/gasPriceOracle/types.ts +2 -1
  260. package/src/gasPriceOracle/util.ts +2 -1
  261. package/src/interfaces/Bridge.ts +1 -1
  262. package/src/interfaces/BundleData.ts +2 -1
  263. package/src/interfaces/Common.ts +1 -1
  264. package/src/interfaces/ConfigStore.ts +1 -1
  265. package/src/interfaces/HubPool.ts +1 -1
  266. package/src/interfaces/SpokePool.ts +1 -1
  267. package/src/pool/poolClient.ts +19 -10
  268. package/src/providers/retryProvider.ts +35 -17
  269. package/src/relayFeeCalculator/relayFeeCalculator.ts +1 -1
  270. package/src/utils/AddressUtils.ts +2 -1
  271. package/src/utils/BigNumberUtils.ts +12 -6
  272. package/src/utils/FormattingUtils.ts +9 -9
  273. package/src/utils/JSONUtils.ts +1 -1
  274. package/src/utils/Multicall.ts +2 -1
  275. package/src/utils/SpokeUtils.ts +2 -2
  276. package/src/utils/TokenUtils.ts +2 -1
  277. package/src/utils/ValidatorUtils.ts +5 -4
  278. package/src/utils/common.ts +4 -5
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  import { ethers } from "ethers";
3
3
  import { deepCopy } from "ethers/lib/utils";
4
+ import { BigNumber, bnOne } from "../utils";
4
5
  import AbstractApiClient from "./abstractClient";
5
6
  import {
6
7
  AcrossBridgeStatisticsType,
@@ -39,7 +40,7 @@ export default class MockedApiClient extends AbstractApiClient {
39
40
  );
40
41
  }
41
42
  public getSuggestedFees(
42
- _amount: ethers.BigNumber,
43
+ _amount: BigNumber,
43
44
  _originToken: string,
44
45
  _toChainid: number,
45
46
  _fromChainid: number
@@ -47,20 +48,20 @@ export default class MockedApiClient extends AbstractApiClient {
47
48
  return Promise.resolve(
48
49
  this.mockedData.SuggestedFees ?? {
49
50
  relayerFee: {
50
- pct: ethers.constants.One,
51
- total: ethers.constants.One,
51
+ pct: bnOne,
52
+ total: bnOne,
52
53
  },
53
54
  relayerCapitalFee: {
54
- pct: ethers.constants.One,
55
- total: ethers.constants.One,
55
+ pct: bnOne,
56
+ total: bnOne,
56
57
  },
57
58
  relayerGasFee: {
58
- pct: ethers.constants.One,
59
- total: ethers.constants.One,
59
+ pct: bnOne,
60
+ total: bnOne,
60
61
  },
61
62
  isAmountTooLow: false,
62
- quoteBlock: ethers.constants.One,
63
- quoteTimestamp: ethers.constants.One,
63
+ quoteBlock: bnOne,
64
+ quoteTimestamp: bnOne,
64
65
  }
65
66
  );
66
67
  }
@@ -71,10 +72,10 @@ export default class MockedApiClient extends AbstractApiClient {
71
72
  ): Promise<BridgeLimitsReturnType> {
72
73
  return Promise.resolve(
73
74
  this.mockedData.BridgeLimits ?? {
74
- minDeposit: ethers.BigNumber.from("317845960607070"),
75
- maxDeposit: ethers.BigNumber.from("1625976243310274613043"),
76
- maxDepositInstant: ethers.BigNumber.from("148518401181482545509"),
77
- maxDepositShortDelay: ethers.BigNumber.from("1625976243310274613043"),
75
+ minDeposit: BigNumber.from("317845960607070"),
76
+ maxDeposit: BigNumber.from("1625976243310274613043"),
77
+ maxDepositInstant: BigNumber.from("148518401181482545509"),
78
+ maxDepositShortDelay: BigNumber.from("1625976243310274613043"),
78
79
  }
79
80
  );
80
81
  }
@@ -1,6 +1,6 @@
1
1
  import axios from "axios";
2
- import { ethers } from "ethers";
3
2
  import AbstractApiClient from "./abstractClient";
3
+ import { BigNumber, parseEther } from "../utils";
4
4
  import {
5
5
  CoingeckoDataReturnType,
6
6
  SuggestedFeeReturnType,
@@ -27,14 +27,13 @@ export default class ProductionApiClient extends AbstractApiClient {
27
27
  },
28
28
  });
29
29
  const result = response.data;
30
- const price =
31
- baseCurrency === "usd" ? ethers.utils.parseEther(String(result.price)) : ethers.BigNumber.from(result.price);
30
+ const price = baseCurrency === "usd" ? parseEther(String(result.price)) : BigNumber.from(result.price);
32
31
  return {
33
32
  price,
34
33
  };
35
34
  }
36
35
  public async getSuggestedFees(
37
- amount: ethers.BigNumber,
36
+ amount: BigNumber,
38
37
  originToken: string,
39
38
  toChainid: number,
40
39
  fromChainid: number
@@ -49,19 +48,19 @@ export default class ProductionApiClient extends AbstractApiClient {
49
48
  },
50
49
  });
51
50
  const result = response.data;
52
- const relayFeePct = ethers.BigNumber.from(result["relayFeePct"]);
53
- const relayFeeTotal = ethers.BigNumber.from(result["relayFeeTotal"]);
51
+ const relayFeePct = BigNumber.from(result["relayFeePct"]);
52
+ const relayFeeTotal = BigNumber.from(result["relayFeeTotal"]);
54
53
 
55
- const capitalFeePct = ethers.BigNumber.from(result["capitalFeePct"]);
56
- const capitalFeeTotal = ethers.BigNumber.from(result["capitalFeeTotal"]);
54
+ const capitalFeePct = BigNumber.from(result["capitalFeePct"]);
55
+ const capitalFeeTotal = BigNumber.from(result["capitalFeeTotal"]);
57
56
 
58
- const relayGasFeePct = ethers.BigNumber.from(result["relayGasFeePct"]);
59
- const relayGasFeeTotal = ethers.BigNumber.from(result["relayGasFeeTotal"]);
57
+ const relayGasFeePct = BigNumber.from(result["relayGasFeePct"]);
58
+ const relayGasFeeTotal = BigNumber.from(result["relayGasFeeTotal"]);
60
59
 
61
60
  const isAmountTooLow = result["isAmountTooLow"];
62
61
 
63
- const quoteTimestamp = ethers.BigNumber.from(result["timestamp"]);
64
- const quoteBlock = ethers.BigNumber.from(result["quoteBlock"]);
62
+ const quoteTimestamp = BigNumber.from(result["timestamp"]);
63
+ const quoteBlock = BigNumber.from(result["quoteBlock"]);
65
64
 
66
65
  return {
67
66
  relayerFee: {
@@ -1,25 +1,25 @@
1
- import { ethers } from "ethers";
1
+ import { BigNumber } from "../utils";
2
2
 
3
- export type CoingeckoDataReturnType = { price: ethers.BigNumber };
3
+ export type CoingeckoDataReturnType = { price: BigNumber };
4
4
 
5
5
  export type Fee = {
6
- total: ethers.BigNumber;
7
- pct: ethers.BigNumber;
6
+ total: BigNumber;
7
+ pct: BigNumber;
8
8
  };
9
9
  export type SuggestedFeeReturnType = {
10
10
  relayerFee: Fee;
11
11
  relayerGasFee: Fee;
12
12
  relayerCapitalFee: Fee;
13
13
  isAmountTooLow: boolean;
14
- quoteTimestamp: ethers.BigNumber;
15
- quoteBlock: ethers.BigNumber;
14
+ quoteTimestamp: BigNumber;
15
+ quoteBlock: BigNumber;
16
16
  };
17
17
 
18
18
  export type BridgeLimitsReturnType = {
19
- minDeposit: ethers.BigNumber;
20
- maxDeposit: ethers.BigNumber;
21
- maxDepositInstant: ethers.BigNumber;
22
- maxDepositShortDelay: ethers.BigNumber;
19
+ minDeposit: BigNumber;
20
+ maxDeposit: BigNumber;
21
+ maxDepositInstant: BigNumber;
22
+ maxDepositShortDelay: BigNumber;
23
23
  };
24
24
 
25
25
  export type SpecificRewardType = {
@@ -1,11 +1,10 @@
1
1
  import Arweave from "arweave";
2
2
  import { JWKInterface } from "arweave/node/lib/wallet";
3
3
  import axios from "axios";
4
- import { BigNumber, ethers } from "ethers";
5
4
  import { Struct, create } from "superstruct";
6
5
  import winston from "winston";
7
6
  import { ARWEAVE_TAG_APP_NAME, ARWEAVE_TAG_APP_VERSION, DEFAULT_ARWEAVE_STORAGE_ADDRESS } from "../../constants";
8
- import { isDefined, jsonReplacerWithBigNumbers, toBN } from "../../utils";
7
+ import { BigNumber, isDefined, jsonReplacerWithBigNumbers, toBN } from "../../utils";
9
8
 
10
9
  export class ArweaveClient {
11
10
  private client: Arweave;
@@ -230,14 +229,14 @@ export class ArweaveClient {
230
229
  * The balance of the signer
231
230
  * @returns The balance of the signer in winston units
232
231
  */
233
- async getBalance(): Promise<ethers.BigNumber> {
232
+ async getBalance(): Promise<BigNumber> {
234
233
  const address = await this.getAddress();
235
234
  const balanceInFloat = await this.client.wallets.getBalance(address);
236
235
  // Sometimes the balance is returned in scientific notation, so we need to
237
236
  // convert it to a BigNumber
238
237
  if (balanceInFloat.includes("e")) {
239
238
  const [balance, exponent] = balanceInFloat.split("e");
240
- const resultingBN = ethers.BigNumber.from(balance).mul(toBN(10).pow(exponent.replace("+", "")));
239
+ const resultingBN = BigNumber.from(balance).mul(toBN(10).pow(exponent.replace("+", "")));
241
240
  return BigNumber.from(resultingBN.toString());
242
241
  } else {
243
242
  return BigNumber.from(balanceInFloat);
@@ -3,6 +3,7 @@ import { CachingMechanismInterface } from "../interfaces";
3
3
  import { EventSearchConfig, isDefined, MakeOptional } from "../utils";
4
4
 
5
5
  export enum UpdateFailureReason {
6
+ NotReady,
6
7
  AlreadyUpdated,
7
8
  BadRequest,
8
9
  RPCError,
@@ -17,6 +17,7 @@ import {
17
17
  } from "../../interfaces";
18
18
  import { AcrossConfigStoreClient, SpokePoolClient } from "..";
19
19
  import {
20
+ BigNumber,
20
21
  bnZero,
21
22
  queryHistoricalDepositForFill,
22
23
  assign,
@@ -31,7 +32,6 @@ import {
31
32
  mapAsync,
32
33
  bnUint32Max,
33
34
  } from "../../utils";
34
- import { BigNumber } from "ethers";
35
35
  import winston from "winston";
36
36
  import {
37
37
  _buildPoolRebalanceRoot,
@@ -1,8 +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 } from "ethers";
5
- import { bnZero, compareAddresses } from "../../../utils";
4
+ import { BigNumber, bnZero, compareAddresses } from "../../../utils";
6
5
  import { HubPoolClient } from "../../HubPoolClient";
7
6
  import { V3DepositWithBlock } from "./shims";
8
7
  import { AcrossConfigStoreClient } from "../../AcrossConfigStoreClient";
@@ -11,7 +11,7 @@ import {
11
11
  boolean,
12
12
  defaulted,
13
13
  } from "superstruct";
14
- import { BigNumber } from "ethers";
14
+ import { BigNumber } from "../../../utils";
15
15
 
16
16
  const PositiveIntegerStringSS = pattern(string(), /\d+/);
17
17
  const Web3AddressSS = pattern(string(), /^0x[a-fA-F0-9]{40}$/);
@@ -1,5 +1,5 @@
1
1
  import assert from "assert";
2
- import { BigNumber, Contract, Event, EventFilter } from "ethers";
2
+ import { Contract, Event, EventFilter } from "ethers";
3
3
  import _ from "lodash";
4
4
  import winston from "winston";
5
5
  import { DEFAULT_CACHING_SAFE_LAG, DEFAULT_CACHING_TTL } from "../constants";
@@ -22,6 +22,7 @@ import {
22
22
  } from "../interfaces";
23
23
  import * as lpFeeCalculator from "../lpFeeCalculator";
24
24
  import {
25
+ BigNumber,
25
26
  BlockFinder,
26
27
  bnZero,
27
28
  dedupArray,
@@ -1,7 +1,8 @@
1
- import { BigNumber, Contract, Event, EventFilter } from "ethers";
1
+ import { Contract, Event, EventFilter } from "ethers";
2
2
  import winston from "winston";
3
3
  import {
4
4
  AnyObject,
5
+ BigNumber,
5
6
  bnZero,
6
7
  DefaultLogLevels,
7
8
  EventSearchConfig,
@@ -4,6 +4,7 @@ export {
4
4
  AcrossConfigStoreClient,
5
5
  ConfigStoreUpdate,
6
6
  } from "./AcrossConfigStoreClient";
7
+ export { UpdateFailureReason } from "./BaseAbstractClient";
7
8
  export { HubPoolClient, LpFeeRequest } from "./HubPoolClient";
8
9
  export { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
9
10
  export * as BundleDataClient from "./BundleDataClient";
@@ -1,6 +1,6 @@
1
1
  import winston from "winston";
2
- import { BigNumber, Contract, Event } from "ethers";
3
- import { randomAddress, assign, bnZero } from "../../utils";
2
+ import { Contract, Event } from "ethers";
3
+ import { BigNumber, randomAddress, assign, bnZero } from "../../utils";
4
4
  import { L1Token, PendingRootBundle, RealizedLpFee } from "../../interfaces";
5
5
  import { AcrossConfigStoreClient as ConfigStoreClient } from "../AcrossConfigStoreClient";
6
6
  import { HubPoolClient, HubPoolUpdate, LpFeeRequest } from "../HubPoolClient";
@@ -1,5 +1,5 @@
1
1
  import assert from "assert";
2
- import { BigNumber, Contract, Event, providers } from "ethers";
2
+ import { Contract, Event, providers } from "ethers";
3
3
  import { random } from "lodash";
4
4
  import winston from "winston";
5
5
  import { ZERO_ADDRESS } from "../../constants";
@@ -15,7 +15,7 @@ import {
15
15
  SlowFillLeaf,
16
16
  SpeedUp,
17
17
  } from "../../interfaces";
18
- import { bnZero, toBN, toBNWei, forEachAsync, getCurrentTime, randomAddress } from "../../utils";
18
+ import { BigNumber, bnZero, toBN, toBNWei, forEachAsync, getCurrentTime, randomAddress } from "../../utils";
19
19
  import { SpokePoolClient, SpokePoolUpdate } from "../SpokePoolClient";
20
20
  import { HubPoolClient } from "../HubPoolClient";
21
21
  import { EventManager, EventOverrides, getEventManager } from "./MockEvents";
package/src/constants.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { constants as ethersConstants, BigNumber, utils } from "ethers";
1
+ import { constants as ethersConstants } from "ethers";
2
2
  import { TOKEN_SYMBOLS_MAP } from "@across-protocol/constants";
3
3
 
4
4
  export {
@@ -44,9 +44,6 @@ export const PROTOCOL_DEFAULT_CHAIN_ID_INDICES = [1, 10, 137, 288, 42161];
44
44
  export const DEFAULT_CACHING_TTL = 60 * 60 * 24 * 7 * 2; // 2 Weeks
45
45
  export const DEFAULT_CACHING_SAFE_LAG = 60 * 60; // 1 hour
46
46
 
47
- export const UBA_BOUNDS_RANGE_MAX = BigNumber.from(String(Number.MAX_SAFE_INTEGER)).mul(utils.parseEther("1.0"));
48
- export const UBA_BOUNDS_RANGE_MIN = UBA_BOUNDS_RANGE_MAX.mul(-1);
49
-
50
47
  export const DEFAULT_SIMULATED_RELAYER_ADDRESS = "0x07aE8551Be970cB1cCa11Dd7a11F47Ae82e70E67";
51
48
  export const DEFAULT_SIMULATED_RELAYER_ADDRESS_TEST = "0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D"; // Görli, ...
52
49
 
@@ -1,6 +1,6 @@
1
1
  import assert from "assert";
2
- import { BigNumber, BigNumberish, Event } from "ethers";
3
- import { isDefined } from "../utils";
2
+ import { Event } from "ethers";
3
+ import { BigNumber, BigNumberish, isDefined } from "../utils";
4
4
 
5
5
  /**
6
6
  * @dev Originally imported from @uma/sdk.
@@ -1,14 +1,15 @@
1
- import { providers, utils as ethersUtils } from "ethers";
2
- import { bnOne } from "../../utils";
1
+ import { providers } from "ethers";
2
+ import { BigNumber, bnOne, parseUnits } from "../../utils";
3
3
  import { GasPriceEstimate } from "../types";
4
4
  import * as ethereum from "./ethereum";
5
5
 
6
- const DEFAULT_PRIORITY_FEE = ethersUtils.parseUnits("1.5", 9);
6
+ let DEFAULT_PRIORITY_FEE: BigNumber | undefined = undefined;
7
7
 
8
8
  // Arbitrum Nitro implements EIP-1559 pricing, but the priority fee is always refunded to the caller. Further,
9
9
  // ethers typically hardcodes the priority fee to 1.5 Gwei. So, confirm that the priority fee supplied was 1.5
10
10
  // Gwei, and then drop it to 1 Wei. Reference: https://developer.arbitrum.io/faqs/gas-faqs#q-priority
11
11
  export async function eip1559(provider: providers.Provider, chainId: number): Promise<GasPriceEstimate> {
12
+ DEFAULT_PRIORITY_FEE ??= parseUnits("1.5", 9);
12
13
  const { maxFeePerGas: _maxFeePerGas, maxPriorityFeePerGas } = await ethereum.eip1559(provider, chainId);
13
14
 
14
15
  // If this throws, ethers default behaviour has changed, or Arbitrum RPCs are returning something more sensible.
@@ -1,5 +1,5 @@
1
- import { BigNumber, providers } from "ethers";
2
- import { bnZero } from "../../utils";
1
+ import { providers } from "ethers";
2
+ import { BigNumber, bnZero } from "../../utils";
3
3
  import { GasPriceEstimate } from "../types";
4
4
  import { gasPriceError } from "../util";
5
5
 
@@ -1,6 +1,6 @@
1
- import { providers, utils as ethersUtils } from "ethers";
1
+ import { providers } from "ethers";
2
2
  import { BaseHTTPAdapter, BaseHTTPAdapterArgs } from "../../priceClient/adapters/baseAdapter";
3
- import { bnZero, isDefined } from "../../utils";
3
+ import { bnZero, isDefined, parseUnits } from "../../utils";
4
4
  import { CHAIN_IDs } from "../../constants";
5
5
  import { GasPriceEstimate } from "../types";
6
6
  import { gasPriceError } from "../util";
@@ -50,12 +50,12 @@ class PolygonGasStation extends BaseHTTPAdapter {
50
50
 
51
51
  [gasPrice.maxFee, gasPrice.maxPriorityFee].forEach((gasPrice) => {
52
52
  if (Number(gasPrice) < 0) {
53
- gasPriceError("getFeeData()", this.chainId, ethersUtils.parseUnits(gasPrice.toString(), 9));
53
+ gasPriceError("getFeeData()", this.chainId, parseUnits(gasPrice.toString(), 9));
54
54
  }
55
55
  });
56
56
 
57
- const maxPriorityFeePerGas = ethersUtils.parseUnits(gasPrice.maxPriorityFee.toString(), 9);
58
- const maxFeePerGas = ethersUtils.parseUnits(gasPrice.maxFee.toString(), 9);
57
+ const maxPriorityFeePerGas = parseUnits(gasPrice.maxPriorityFee.toString(), 9);
58
+ const maxFeePerGas = parseUnits(gasPrice.maxFee.toString(), 9);
59
59
 
60
60
  return { maxPriorityFeePerGas, maxFeePerGas };
61
61
  }
@@ -1,4 +1,5 @@
1
- import { BigNumber, providers } from "ethers";
1
+ import { providers } from "ethers";
2
+ import { BigNumber } from "../utils";
2
3
 
3
4
  export type GasPriceEstimate = {
4
5
  maxFeePerGas: BigNumber;
@@ -1,4 +1,5 @@
1
- import { BigNumber, providers } from "ethers";
1
+ import { providers } from "ethers";
2
+ import { BigNumber } from "../utils";
2
3
 
3
4
  export function gasPriceError(method: string, chainId: number, data: providers.FeeData | BigNumber): void {
4
5
  throw new Error(`Malformed ${method} response on chain ID ${chainId} (${JSON.stringify(data)})`);
@@ -1,4 +1,4 @@
1
- import { BigNumber } from "ethers";
1
+ import { BigNumber } from "../utils";
2
2
 
3
3
  export interface OutstandingTransfers {
4
4
  [address: string]: {
@@ -1,8 +1,9 @@
1
- import { BigNumber, Signer } from "ethers";
1
+ import { Signer } from "ethers";
2
2
  import { DepositWithBlock, FillWithBlock, Refund } from "./SpokePool";
3
3
  import { HubPoolClient } from "../clients/HubPoolClient";
4
4
  import { AcrossConfigStoreClient } from "../clients";
5
5
  import { ArweaveClient } from "../caching";
6
+ import { BigNumber } from "../utils";
6
7
 
7
8
  export type ExpiredDepositsToRefundV3 = {
8
9
  [originChainId: number]: {
@@ -1,4 +1,4 @@
1
- import { BigNumber } from "ethers";
1
+ import { BigNumber } from "../utils";
2
2
 
3
3
  export interface SortableEvent {
4
4
  blockNumber: number;
@@ -1,5 +1,5 @@
1
- import { BigNumber } from "ethers";
2
1
  import { RateModelDictionary } from "../lpFeeCalculator/rateModel";
2
+ import { BigNumber } from "../utils";
3
3
  import { SortableEvent } from "./Common";
4
4
 
5
5
  export interface ParsedTokenConfig {
@@ -1,4 +1,4 @@
1
- import { BigNumber } from "ethers";
1
+ import { BigNumber } from "../utils";
2
2
  import { SortableEvent } from "./Common";
3
3
 
4
4
  export interface PoolRebalanceLeaf {
@@ -1,7 +1,7 @@
1
- import { BigNumber } from "ethers";
2
1
  import { SortableEvent } from "./Common";
3
2
  import { FilledRelayEvent, FilledV3RelayEvent, FundsDepositedEvent, V3FundsDepositedEvent } from "../typechain";
4
3
  import { SpokePoolClient } from "../clients";
4
+ import { BigNumber } from "../utils";
5
5
  import { RelayerRefundLeaf } from "./HubPool";
6
6
 
7
7
  export type { FilledRelayEvent, FilledV3RelayEvent, FundsDepositedEvent, V3FundsDepositedEvent };
@@ -1,7 +1,16 @@
1
1
  import assert from "assert";
2
2
  import * as uma from "@uma/sdk";
3
- import { toBNWei, fixedPointAdjustment, calcPeriodicCompoundInterest, calcApr, BigNumberish, fromWei } from "../utils";
4
- import { ethers, Signer, BigNumber } from "ethers";
3
+ import {
4
+ bnZero,
5
+ toBNWei,
6
+ fixedPointAdjustment,
7
+ calcPeriodicCompoundInterest,
8
+ calcApr,
9
+ BigNumber,
10
+ BigNumberish,
11
+ fromWei,
12
+ } from "../utils";
13
+ import { ethers, Signer } from "ethers";
5
14
  import type { Overrides } from "@ethersproject/contracts";
6
15
  import { TransactionRequest, TransactionReceipt, Log } from "@ethersproject/abstract-provider";
7
16
  import { Provider, Block } from "@ethersproject/providers";
@@ -256,10 +265,10 @@ class UserState {
256
265
  if (endBlock <= this.startBlock) return [];
257
266
  const { userAddress } = this;
258
267
  const events: TypedEvent<
259
- [string, string, uma.oracle.types.ethers.BigNumber] & {
268
+ [string, string, BigNumber] & {
260
269
  from: string;
261
270
  to: string;
262
- value: uma.oracle.types.ethers.BigNumber;
271
+ value: BigNumber;
263
272
  }
264
273
  >[] = (
265
274
  await Promise.all([
@@ -352,9 +361,9 @@ function joinUserState(
352
361
  poolState: Pool,
353
362
  tokenEventState: hubPool.TokenEventState,
354
363
  userState: Awaited<ReturnType<UserState["read"]>>,
355
- transferValue: BigNumber = ethers.constants.Zero,
356
- cumulativeStakeBalance: BigNumber = ethers.constants.Zero,
357
- cumulativeStakeClaimBalance: BigNumber = ethers.constants.Zero
364
+ transferValue = bnZero,
365
+ cumulativeStakeBalance = bnZero,
366
+ cumulativeStakeClaimBalance = bnZero
358
367
  ): User {
359
368
  const positionValue = BigNumber.from(poolState.exchangeRateCurrent)
360
369
  .mul(userState.balanceOf.add(cumulativeStakeBalance))
@@ -534,7 +543,7 @@ export class Client {
534
543
  )
535
544
  )
536
545
  )
537
- ).reduce((prev, acc) => acc.add(prev), ethers.constants.Zero);
546
+ ).reduce((prev, acc) => acc.add(prev), bnZero);
538
547
 
539
548
  // Get the cumulative balance of the user from the accelerating distributor contract.
540
549
  const { cumulativeBalance } = await acceleratingDistributorContract.getUserStake(lpToken, userState.address);
@@ -578,7 +587,7 @@ export class Client {
578
587
  }
579
588
  // we make sure to filter out any transfers where to/from is the same user
580
589
  return result;
581
- }, ethers.constants.Zero);
590
+ }, bnZero);
582
591
  }
583
592
  private getOrCreateTransactionManager(signer: Signer, address: string) {
584
593
  if (this.transactionManagers[address]) return this.transactionManagers[address];
@@ -744,7 +753,7 @@ export class Client {
744
753
  const { address: userAddress } = userState;
745
754
  const transferValue = this.config.hasArchive
746
755
  ? await this.calculateLpTransferValue(l1TokenAddress, userState)
747
- : ethers.constants.Zero;
756
+ : bnZero;
748
757
  const stakeData = await this.resolveStakingData(lpToken, l1TokenAddress, userState);
749
758
  const tokenEventState = poolEventState[l1TokenAddress];
750
759
  const newUserState = this.setUserState(
@@ -53,6 +53,8 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
53
53
  });
54
54
  });
55
55
 
56
+ this.pollingInterval = 1000;
57
+
56
58
  if (this.nodeQuorumThreshold < 1 || !Number.isInteger(this.nodeQuorumThreshold)) {
57
59
  throw new Error(
58
60
  `nodeQuorum,Threshold cannot be < 1 and must be an integer. Currently set to ${this.nodeQuorumThreshold}`
@@ -125,9 +127,38 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
125
127
  return values[0][1];
126
128
  }
127
129
 
128
- const throwQuorumError = () => {
130
+ const getMismatchedProviders = (values: [ethers.providers.StaticJsonRpcProvider, unknown][]) => {
131
+ return Object.fromEntries(
132
+ values
133
+ .filter(([, result]) => !compareRpcResults(method, result, quorumResult))
134
+ .map(([provider, result]) => [provider.connection.url, result])
135
+ );
136
+ };
137
+
138
+ const logQuorumMismatchOrFailureDetails = (
139
+ method: string,
140
+ params: Array<unknown>,
141
+ quorumProviders: string[],
142
+ mismatchedProviders: { [k: string]: unknown },
143
+ errors: [ethers.providers.StaticJsonRpcProvider, string][]
144
+ ) => {
145
+ logger.warn({
146
+ at: "ProviderUtils",
147
+ message: "Some providers mismatched with the quorum result or failed 🚸",
148
+ notificationPath: "across-warn",
149
+ method,
150
+ params: JSON.stringify(params),
151
+ quorumProviders,
152
+ mismatchedProviders: JSON.stringify(mismatchedProviders),
153
+ erroringProviders: errors.map(([provider, errorText]) => formatProviderError(provider, errorText)),
154
+ });
155
+ };
156
+
157
+ const throwQuorumError = (fallbackValues?: [ethers.providers.StaticJsonRpcProvider, unknown][]) => {
129
158
  const errorTexts = errors.map(([provider, errorText]) => formatProviderError(provider, errorText));
130
159
  const successfulProviderUrls = values.map(([provider]) => provider.connection.url);
160
+ const mismatchedProviders = getMismatchedProviders([...values, ...(fallbackValues || [])]);
161
+ logQuorumMismatchOrFailureDetails(method, params, successfulProviderUrls, mismatchedProviders, errors);
131
162
  throw new Error(
132
163
  "Not enough providers agreed to meet quorum.\n" +
133
164
  "Providers that errored:\n" +
@@ -186,29 +217,16 @@ export class RetryProvider extends ethers.providers.StaticJsonRpcProvider {
186
217
 
187
218
  // If this count is less than we need for quorum, throw the quorum error.
188
219
  if (count < quorumThreshold) {
189
- throwQuorumError();
220
+ throwQuorumError(fallbackValues);
190
221
  }
191
222
 
192
223
  // If we've achieved quorum, then we should still log the providers that mismatched with the quorum result.
193
- const mismatchedProviders = Object.fromEntries(
194
- [...values, ...fallbackValues]
195
- .filter(([, result]) => !compareRpcResults(method, result, quorumResult))
196
- .map(([provider, result]) => [provider.connection.url, result])
197
- );
224
+ const mismatchedProviders = getMismatchedProviders([...values, ...fallbackValues]);
198
225
  const quorumProviders = [...values, ...fallbackValues]
199
226
  .filter(([, result]) => compareRpcResults(method, result, quorumResult))
200
227
  .map(([provider]) => provider.connection.url);
201
228
  if (Object.keys(mismatchedProviders).length > 0 || errors.length > 0) {
202
- logger.warn({
203
- at: "ProviderUtils",
204
- message: "Some providers mismatched with the quorum result or failed 🚸",
205
- notificationPath: "across-warn",
206
- method,
207
- params,
208
- quorumProviders,
209
- mismatchedProviders,
210
- erroringProviders: errors.map(([provider, errorText]) => formatProviderError(provider, errorText)),
211
- });
229
+ logQuorumMismatchOrFailureDetails(method, params, quorumProviders, mismatchedProviders, errors);
212
230
  }
213
231
 
214
232
  return quorumResult;
@@ -1,8 +1,8 @@
1
1
  import assert from "assert";
2
- import { BigNumber } from "ethers";
3
2
  import { DEFAULT_SIMULATED_RELAYER_ADDRESS, TOKEN_SYMBOLS_MAP } from "../constants";
4
3
  import { Deposit } from "../interfaces";
5
4
  import {
5
+ BigNumber,
6
6
  BigNumberish,
7
7
  MAX_BIG_INT,
8
8
  TransactionCostEstimate,
@@ -1,4 +1,5 @@
1
- import { BigNumber, providers, utils } from "ethers";
1
+ import { providers, utils } from "ethers";
2
+ import { BigNumber } from "./BigNumberUtils";
2
3
 
3
4
  /**
4
5
  * Checks if a contract is deployed at the given address