@paraswap/dex-lib 3.4.2-balancer-v2-single-swap.0 → 3.4.2

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 (110) hide show
  1. package/README.md +377 -377
  2. package/build/config.js +9 -5
  3. package/build/config.js.map +1 -1
  4. package/build/dex/algebra/algebra.js +25 -25
  5. package/build/dex/balancer-v1/balancer-v1.js +34 -34
  6. package/build/dex/balancer-v2/balancer-v2.d.ts +1 -1
  7. package/build/dex/balancer-v2/balancer-v2.js +65 -78
  8. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  9. package/build/dex/camelot/camelot.js +27 -27
  10. package/build/dex/kyberdmm/kyberdmm.js +27 -27
  11. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +25 -25
  12. package/build/dex/solidly/solidly.js +27 -27
  13. package/build/dex/solidly-v3/solidly-v3.js +25 -25
  14. package/build/dex/swaap-v2/config.js +15 -0
  15. package/build/dex/swaap-v2/config.js.map +1 -1
  16. package/build/dex/uniswap-v2/uniswap-v2.js +26 -26
  17. package/build/dex/uniswap-v3/uniswap-v3.js +25 -25
  18. package/funding.json +5 -5
  19. package/package.json +1 -1
  20. package/src/config.ts +500 -496
  21. package/src/constants.ts +67 -67
  22. package/src/dex/aave-v2/aave-v2.ts +409 -409
  23. package/src/dex/aave-v3/aave-v3.ts +320 -320
  24. package/src/dex/algebra/algebra.ts +1180 -1180
  25. package/src/dex/angle-staked-stable/angle-staked-stable.ts +347 -347
  26. package/src/dex/augustus-rfq.ts +180 -180
  27. package/src/dex/bProtocol/bProtocol.ts +108 -108
  28. package/src/dex/balancer-v1/balancer-v1.ts +572 -572
  29. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +1699 -1699
  30. package/src/dex/balancer-v2/balancer-v2.ts +1669 -1701
  31. package/src/dex/bancor/bancor.ts +128 -128
  32. package/src/dex/camelot/camelot.ts +873 -873
  33. package/src/dex/compound/compound.ts +107 -107
  34. package/src/dex/curve-v1/config.ts +1179 -1179
  35. package/src/dex/curve-v1/curve-v1-e2e.test.ts +507 -507
  36. package/src/dex/curve-v1/curve-v1.ts +1315 -1315
  37. package/src/dex/curve-v1-factory/config.ts +1018 -1018
  38. package/src/dex/curve-v1-factory/curve-v1-factory.ts +1288 -1288
  39. package/src/dex/curve-v2/curve-v2.ts +440 -440
  40. package/src/dex/dexalot/dexalot.ts +1100 -1100
  41. package/src/dex/dodo-v1/dodo-v1.ts +132 -132
  42. package/src/dex/dodo-v2.ts +266 -266
  43. package/src/dex/etherfi.ts +239 -239
  44. package/src/dex/generic-rfq/generic-rfq.ts +431 -431
  45. package/src/dex/gmx/gmx.ts +321 -321
  46. package/src/dex/hashflow/hashflow.ts +1135 -1135
  47. package/src/dex/idex.ts +254 -254
  48. package/src/dex/index.ts +357 -357
  49. package/src/dex/jarvis-v6/jarvis-v6.ts +509 -509
  50. package/src/dex/jarvis.ts +262 -262
  51. package/src/dex/kyberdmm/kyberdmm.ts +649 -649
  52. package/src/dex/lido/lido.ts +110 -110
  53. package/src/dex/maker-psm/maker-psm.ts +592 -592
  54. package/src/dex/maverick-v1/maverick-v1.ts +537 -537
  55. package/src/dex/nerve/config.ts +635 -635
  56. package/src/dex/nerve/nerve-e2e.test.ts +731 -731
  57. package/src/dex/nerve/nerve-events.test.ts +911 -911
  58. package/src/dex/nerve/nerve.ts +467 -467
  59. package/src/dex/onebit/onebit.ts +113 -113
  60. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +1150 -1150
  61. package/src/dex/paraswap-limit-orders/config.ts +60 -60
  62. package/src/dex/paraswap-limit-orders/paraswap-limit-orders-e2e.test.ts +137 -137
  63. package/src/dex/paraswap-limit-orders/paraswap-limit-orders-integration.test.ts +328 -328
  64. package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +631 -631
  65. package/src/dex/polygon-migrator/polygon-migrator.ts +194 -194
  66. package/src/dex/quick-perps/quick-perps.ts +337 -337
  67. package/src/dex/quickswap/config.ts +16 -16
  68. package/src/dex/quickswap/quickswap-e2e.test.ts +384 -384
  69. package/src/dex/smoothy/smoothy.ts +110 -110
  70. package/src/dex/solidly/config.ts +225 -225
  71. package/src/dex/solidly/solidly-e2e.test.ts +1421 -1421
  72. package/src/dex/solidly/solidly-integration.test.ts +1753 -1753
  73. package/src/dex/solidly/solidly.ts +687 -687
  74. package/src/dex/solidly-v3/solidly-v3.ts +968 -968
  75. package/src/dex/spark/spark.ts +284 -284
  76. package/src/dex/stable-pool/stable-pool.ts +129 -129
  77. package/src/dex/swaap-v2/config.ts +15 -0
  78. package/src/dex/swaap-v2/swaap-v2-e2e.test.ts +233 -17
  79. package/src/dex/swaap-v2/swaap-v2-integration.test.ts +1 -1
  80. package/src/dex/swaap-v2/swaap-v2.ts +1056 -1056
  81. package/src/dex/swell/swell.ts +312 -312
  82. package/src/dex/synthetix/synthetix.ts +420 -420
  83. package/src/dex/trader-joe-v2.1/trader-joe-v2.1.ts +180 -180
  84. package/src/dex/uniswap-v2/config.ts +637 -637
  85. package/src/dex/uniswap-v2/constants.ts +58 -58
  86. package/src/dex/uniswap-v2/uniswap-v2-e2e-avalanche.test.ts +1257 -1257
  87. package/src/dex/uniswap-v2/uniswap-v2-e2e-base.test.ts +42 -42
  88. package/src/dex/uniswap-v2/uniswap-v2-e2e-bsc.test.ts +1295 -1295
  89. package/src/dex/uniswap-v2/uniswap-v2-e2e-mainnet.test.ts +1834 -1834
  90. package/src/dex/uniswap-v2/uniswap-v2-e2e-polygon.test.ts +871 -871
  91. package/src/dex/uniswap-v2/uniswap-v2.ts +1117 -1117
  92. package/src/dex/uniswap-v3/uniswap-v3.ts +1501 -1501
  93. package/src/dex/uniswap-v3.ts +242 -242
  94. package/src/dex/weth/config.ts +73 -73
  95. package/src/dex/weth/weth.ts +230 -230
  96. package/src/dex/wombat/wombat.ts +467 -467
  97. package/src/dex/woo-fi-v2/woo-fi-v2.ts +529 -529
  98. package/src/dex/wsteth/wsteth.ts +304 -304
  99. package/src/dex/zerox/index.ts +328 -328
  100. package/src/executor/Executor01BytecodeBuilder.ts +474 -474
  101. package/src/executor/Executor02BytecodeBuilder.ts +1392 -1392
  102. package/src/executor/ExecutorBytecodeBuilder.ts +390 -390
  103. package/src/executor/ExecutorDetector.ts +131 -131
  104. package/src/executor/constants.ts +66 -66
  105. package/src/executor/executor01-bytecode-builder-e2e.test.ts +1478 -1478
  106. package/src/executor/utils.ts +62 -62
  107. package/src/router/simpleswap.ts +366 -366
  108. package/src/types.ts +342 -342
  109. package/tests/constants-e2e.ts +1632 -1622
  110. package/tests/generate-new-limit-order.ts +107 -107
package/src/config.ts CHANGED
@@ -1,496 +1,500 @@
1
- import { Config, Address, Token } from './types';
2
-
3
- import { Network, PORT_TEST_SERVER, ETHER_ADDRESS } from './constants';
4
- import { isETHAddress } from './utils';
5
- import { RFQConfig } from './dex/generic-rfq/types';
6
-
7
- // Hardcoded and environment values from which actual config is derived
8
- type BaseConfig = {
9
- network: number;
10
- networkName: string;
11
- isTestnet: boolean;
12
- mainnetNetwork?: number;
13
- nativeTokenName?: string;
14
- nativeTokenSymbol: string;
15
- wrappedNativeTokenName?: string;
16
- wrappedNativeTokenSymbol?: string;
17
- wrappedNativeTokenAddress: Address;
18
- hasEIP1559: boolean;
19
- augustusAddress: Address;
20
- augustusV6Address?: Address;
21
- augustusRFQAddress: Address;
22
- tokenTransferProxyAddress: Address;
23
- multicallV2Address: Address;
24
- privateHttpProvider?: string;
25
- adapterAddresses: { [name: string]: Address };
26
- executorsAddresses?: { [name: string]: Address };
27
- uniswapV2ExchangeRouterAddress: Address;
28
- uniswapV3EventLoggingSampleRate?: number;
29
- rfqConfigs: Record<string, RFQConfig>;
30
- rpcPollingMaxAllowedStateDelayInBlocks: number;
31
- rpcPollingBlocksBackToTriggerUpdate: number;
32
- hashFlowAuthToken?: string;
33
- hashFlowDisabledMMs: string[];
34
- swaapV2AuthToken?: string;
35
- dexalotAuthToken?: string;
36
- forceRpcFallbackDexs: string[];
37
- };
38
-
39
- const baseConfigs: { [network: number]: BaseConfig } = {
40
- [Network.MAINNET]: {
41
- network: Network.MAINNET,
42
- networkName: 'Ethereum Mainnet',
43
- isTestnet: false,
44
- nativeTokenName: 'Ether',
45
- nativeTokenSymbol: 'ETH',
46
- wrappedNativeTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
47
- hasEIP1559: true,
48
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
49
- augustusRFQAddress: '0xe92b586627ccA7a83dC919cc7127196d70f55a06',
50
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
51
- multicallV2Address: '0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696',
52
- privateHttpProvider: process.env.HTTP_PROVIDER_1,
53
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
54
- executorsAddresses: {
55
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
56
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
57
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
58
- },
59
- adapterAddresses: {
60
- Adapter01: '0x9bE264469eF954c139Da4A45Cf76CbCC5e3A6A73',
61
- Adapter02: '0xFC2Ba6E830a04C25e207B8214b26d8C713F6881F',
62
- Adapter03: '0xBAEeb4540f59d30E567a5B563CC0c4587eDd9366',
63
- Adapter04: '0x369A2FDb910d432f0a07381a5E3d27572c876713',
64
- Adapter05: '0x3329dfa55A40B450952FBE0203167Ae6908E656d',
65
- Adapter06: '0xe9166234DFB6d3ec05C82404109C02Ca82b16c22',
66
- BuyAdapter: '0x84bEF12C9931cE12662cc9F2366b6a5029E4BD29',
67
- BuyAdapter02: '0xF73335b89e6EeACD4d7D8e397ACCd9F93E723952',
68
- },
69
- uniswapV2ExchangeRouterAddress:
70
- '0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07',
71
- rpcPollingMaxAllowedStateDelayInBlocks: 0,
72
- rpcPollingBlocksBackToTriggerUpdate: 0,
73
- swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
74
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
75
- hashFlowDisabledMMs:
76
- process.env[`HASHFLOW_DISABLED_MMS_1`]?.split(',') || [],
77
- uniswapV3EventLoggingSampleRate: 0,
78
- rfqConfigs: {
79
- DummyParaSwapPool: {
80
- maker: process.env.TEST_ADDRESS!,
81
- tokensConfig: {
82
- reqParams: {
83
- url: `http://localhost:${PORT_TEST_SERVER}/tokens`,
84
- method: 'GET',
85
- },
86
- secret: {
87
- domain: 'paraswap-test',
88
- accessKey: 'access',
89
- secretKey: 'secret',
90
- },
91
- intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
92
- dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
93
- },
94
- pairsConfig: {
95
- reqParams: {
96
- url: `http://localhost:${PORT_TEST_SERVER}/pairs`,
97
- method: 'GET',
98
- },
99
- secret: {
100
- domain: 'paraswap-test',
101
- accessKey: 'access',
102
- secretKey: 'secret',
103
- },
104
- intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
105
- dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
106
- },
107
- rateConfig: {
108
- reqParams: {
109
- url: `http://localhost:${PORT_TEST_SERVER}/prices`,
110
- method: 'GET',
111
- },
112
- secret: {
113
- domain: 'paraswap-test',
114
- accessKey: 'access',
115
- secretKey: 'secret',
116
- },
117
- intervalMs: 1000 * 60 * 60 * 1, // every 1 minute
118
- dataTTLS: 1000 * 60 * 60 * 1, // ttl 1 minute
119
- },
120
- firmRateConfig: {
121
- url: `http://localhost:${PORT_TEST_SERVER}/firm`,
122
- method: 'POST',
123
- secret: {
124
- domain: 'paraswap-test',
125
- accessKey: 'access',
126
- secretKey: 'secret',
127
- },
128
- },
129
- },
130
- },
131
- forceRpcFallbackDexs: [],
132
- },
133
- [Network.BSC]: {
134
- network: Network.BSC,
135
- networkName: 'Binance Smart Chain Mainnet',
136
- isTestnet: false,
137
- nativeTokenSymbol: 'BNB',
138
- wrappedNativeTokenAddress: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
139
- hasEIP1559: false,
140
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
141
- augustusRFQAddress: '0x8DcDfe88EF0351f27437284D0710cD65b20288bb',
142
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
143
- multicallV2Address: '0xC50F4c1E81c873B2204D7eFf7069Ffec6Fbe136D',
144
- privateHttpProvider: process.env.HTTP_PROVIDER_56,
145
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
146
- executorsAddresses: {
147
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
148
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
149
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
150
- },
151
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
152
- hashFlowDisabledMMs:
153
- process.env[`HASHFLOW_DISABLED_MMS_56`]?.split(',') || [],
154
- adapterAddresses: {
155
- BscAdapter01: '0xA31d9C571DF00e0F428B0bD24c34D103E8112222',
156
- BscAdapter02: '0x7A8f0436981B893349514655a00Ca974A6e9fd93',
157
- BscBuyAdapter: '0x2389726B55948d8D8944b0145204761215AaEc71',
158
- },
159
- rpcPollingMaxAllowedStateDelayInBlocks: 1,
160
- rpcPollingBlocksBackToTriggerUpdate: 1,
161
- uniswapV2ExchangeRouterAddress:
162
- '0x53e693c6C7FFC4446c53B205Cf513105Bf140D7b',
163
- rfqConfigs: {},
164
- forceRpcFallbackDexs: [],
165
- },
166
- [Network.POLYGON]: {
167
- network: Network.POLYGON,
168
- networkName: 'Polygon Mainnet',
169
- isTestnet: false,
170
- nativeTokenName: 'Matic',
171
- nativeTokenSymbol: 'MATIC',
172
- wrappedNativeTokenAddress: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
173
- hasEIP1559: true,
174
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
175
- augustusRFQAddress: '0xF3CD476C3C4D3Ac5cA2724767f269070CA09A043',
176
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
177
- multicallV2Address: '0x275617327c958bD06b5D6b871E7f491D76113dd8',
178
- privateHttpProvider: process.env.HTTP_PROVIDER_137,
179
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
180
- executorsAddresses: {
181
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
182
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
183
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
184
- },
185
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
186
- hashFlowDisabledMMs:
187
- process.env[`HASHFLOW_DISABLED_MMS_137`]?.split(',') || [],
188
- adapterAddresses: {
189
- PolygonAdapter01: '0xE44769f42E1e9592f86B82f206407a8f7C84b4ed',
190
- PolygonAdapter02: '0xE7d4CC1589311BD7Bb58739269748a20DAAD755D',
191
- PolygonBuyAdapter: '0x8643Aa3E63dF7742223A713C7525677df336183f',
192
- },
193
- uniswapV2ExchangeRouterAddress:
194
- '0xf3938337F7294fEf84e9B2c6D548A93F956Cc281',
195
- uniswapV3EventLoggingSampleRate: 0,
196
- rfqConfigs: {},
197
- rpcPollingMaxAllowedStateDelayInBlocks: 2,
198
- rpcPollingBlocksBackToTriggerUpdate: 1,
199
- swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
200
- forceRpcFallbackDexs: [],
201
- },
202
- [Network.AVALANCHE]: {
203
- network: Network.AVALANCHE,
204
- networkName: 'Avalanche Mainnet C-Chain',
205
- isTestnet: false,
206
- nativeTokenName: 'Avax',
207
- nativeTokenSymbol: 'AVAX',
208
- wrappedNativeTokenAddress: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',
209
- hasEIP1559: true,
210
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
211
- augustusRFQAddress: '0x34302c4267d0dA0A8c65510282Cc22E9e39df51f',
212
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
213
- multicallV2Address: '0xd7Fc8aD069f95B6e2835f4DEff03eF84241cF0E1',
214
- privateHttpProvider: process.env.HTTP_PROVIDER_43114,
215
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
216
- hashFlowDisabledMMs:
217
- process.env[`HASHFLOW_DISABLED_MMS_43114`]?.split(',') || [],
218
- dexalotAuthToken: process.env.API_KEY_DEXALOT_AUTH_TOKEN || '',
219
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
220
- executorsAddresses: {
221
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
222
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
223
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
224
- },
225
- adapterAddresses: {
226
- AvalancheAdapter01: '0x745Ec73855CeC7249E5fF4c9DD81cc65b4D297a9',
227
- AvalancheAdapter02: '0xA10c9a84E72d9DfF424Fe2284B6460784bed407E',
228
- AvalancheBuyAdapter: '0x654dE10890f8B2C5bF54E50Af169a7E93165C416',
229
- },
230
- uniswapV2ExchangeRouterAddress:
231
- '0x53e693c6C7FFC4446c53B205Cf513105Bf140D7b',
232
- rfqConfigs: {},
233
- rpcPollingMaxAllowedStateDelayInBlocks: 2,
234
- rpcPollingBlocksBackToTriggerUpdate: 1,
235
- forceRpcFallbackDexs: [],
236
- },
237
- [Network.FANTOM]: {
238
- network: Network.FANTOM,
239
- networkName: 'Fantom Opera Mainnet',
240
- isTestnet: false,
241
- nativeTokenName: 'Fantom',
242
- nativeTokenSymbol: 'FTM',
243
- wrappedNativeTokenAddress: '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83',
244
- hasEIP1559: false,
245
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
246
- augustusRFQAddress: '0x2DF17455B96Dde3618FD6B1C3a9AA06D6aB89347',
247
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
248
- multicallV2Address: '0xdC6E2b14260F972ad4e5a31c68294Fba7E720701',
249
- privateHttpProvider: process.env.HTTP_PROVIDER_250,
250
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
251
- hashFlowDisabledMMs:
252
- process.env[`HASHFLOW_DISABLED_MMS_250`]?.split(',') || [],
253
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
254
- executorsAddresses: {
255
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
256
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
257
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
258
- },
259
- adapterAddresses: {
260
- FantomAdapter01: '0x654dE10890f8B2C5bF54E50Af169a7E93165C416',
261
- FantomAdapter02: '0x248009f6F78b5AcD5EA2fc86d56b77A7AeEe2eFc',
262
- FantomBuyAdapter: '0xEECA9223063bD13e8ca77ed9e39a07f2BD1923E6',
263
- },
264
- uniswapV2ExchangeRouterAddress:
265
- '0xAB86e2bC9ec5485a9b60E684BA6d49bf4686ACC2',
266
- rfqConfigs: {},
267
- rpcPollingMaxAllowedStateDelayInBlocks: 2,
268
- rpcPollingBlocksBackToTriggerUpdate: 1,
269
- forceRpcFallbackDexs: [],
270
- },
271
- [Network.ARBITRUM]: {
272
- network: Network.ARBITRUM,
273
- networkName: 'Arbitrum One',
274
- isTestnet: false,
275
- nativeTokenName: 'Ether',
276
- nativeTokenSymbol: 'ETH',
277
- wrappedNativeTokenAddress: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
278
- hasEIP1559: false,
279
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
280
- augustusRFQAddress: '0x0927FD43a7a87E3E8b81Df2c44B03C4756849F6D',
281
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
282
- multicallV2Address: '0x7eCfBaa8742fDf5756DAC92fbc8b90a19b8815bF',
283
- privateHttpProvider: process.env.HTTP_PROVIDER_42161,
284
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
285
- swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
286
- hashFlowDisabledMMs:
287
- process.env[`HASHFLOW_DISABLED_MMS_42161`]?.split(',') || [],
288
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
289
- executorsAddresses: {
290
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
291
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
292
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
293
- },
294
- dexalotAuthToken: process.env.API_KEY_DEXALOT_AUTH_TOKEN || '',
295
- adapterAddresses: {
296
- ArbitrumAdapter01: '0x369A2FDb910d432f0a07381a5E3d27572c876713',
297
- ArbitrumAdapter02: '0x58a5f0b73969800FAFf8556cD2187E3FCE71A6cb',
298
- ArbitrumAdapter03: '0x97bdD2B98D9802b0e387FefdB2882C1b2dc2c344',
299
- ArbitrumBuyAdapter: '0x005213c48d4aafFcA0b6D1CbA8710F4D035C18f9',
300
- },
301
- uniswapV2ExchangeRouterAddress:
302
- '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',
303
- uniswapV3EventLoggingSampleRate: 0,
304
- rfqConfigs: {},
305
- rpcPollingMaxAllowedStateDelayInBlocks: 4,
306
- rpcPollingBlocksBackToTriggerUpdate: 3,
307
- forceRpcFallbackDexs: [],
308
- },
309
- [Network.OPTIMISM]: {
310
- network: Network.OPTIMISM,
311
- networkName: 'Optimistic Ethereum',
312
- isTestnet: false,
313
- nativeTokenName: 'Ether',
314
- nativeTokenSymbol: 'ETH',
315
- wrappedNativeTokenAddress: '0x4200000000000000000000000000000000000006',
316
- hasEIP1559: false,
317
- augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
318
- augustusRFQAddress: '0x0927FD43a7a87E3E8b81Df2c44B03C4756849F6D',
319
- tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
320
- multicallV2Address: '0x2DC0E2aa608532Da689e89e237dF582B783E552C',
321
- privateHttpProvider: process.env.HTTP_PROVIDER_10,
322
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
323
- executorsAddresses: {
324
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
325
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
326
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
327
- },
328
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
329
- hashFlowDisabledMMs:
330
- process.env[`HASHFLOW_DISABLED_MMS_10`]?.split(',') || [],
331
- adapterAddresses: {
332
- OptimismAdapter01: '0x5dcf544b0c9689fa67dcb713fd2656d217e25a59',
333
- OptimismAdapter02: '0x4483Ae378897eB9FbF7f15Df98Bf07233ffFEe8b',
334
- OptimismBuyAdapter: '0xe9166234DFB6d3ec05C82404109C02Ca82b16c22',
335
- },
336
- uniswapV2ExchangeRouterAddress:
337
- '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',
338
- uniswapV3EventLoggingSampleRate: 0,
339
- rfqConfigs: {},
340
- rpcPollingMaxAllowedStateDelayInBlocks: 5,
341
- rpcPollingBlocksBackToTriggerUpdate: 3,
342
- forceRpcFallbackDexs: [],
343
- },
344
- [Network.ZKEVM]: {
345
- network: Network.ZKEVM,
346
- networkName: 'Polygon zkEVM',
347
- isTestnet: false,
348
- nativeTokenName: 'Ether',
349
- nativeTokenSymbol: 'ETH',
350
- wrappedNativeTokenAddress: '0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9',
351
- hasEIP1559: true,
352
- augustusAddress: '0xB83B554730d29cE4Cb55BB42206c3E2c03E4A40A',
353
- augustusRFQAddress: '0x7Ee1F7fa4C0b2eDB0Fdd5944c14A07167700486E',
354
- tokenTransferProxyAddress: '0xc8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a1',
355
- multicallV2Address: '0x6cA478C852DfA8941FC819fDf248606eA04780B6',
356
- privateHttpProvider: process.env.HTTP_PROVIDER_1101,
357
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
358
- executorsAddresses: {
359
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
360
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
361
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
362
- },
363
- adapterAddresses: {
364
- PolygonZkEvmAdapter01: '0xd63B7691dD98fa89A2ea5e1604700489c585aa7B',
365
- PolygonZkEvmBuyAdapter: '0xe2137168CdA486a2555E16c597905854C84F9127',
366
- },
367
-
368
- rpcPollingMaxAllowedStateDelayInBlocks: 0,
369
- rpcPollingBlocksBackToTriggerUpdate: 0,
370
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
371
- hashFlowDisabledMMs:
372
- process.env[`HASHFLOW_DISABLED_MMS_10`]?.split(',') || [],
373
- uniswapV3EventLoggingSampleRate: 0,
374
- rfqConfigs: {},
375
- forceRpcFallbackDexs: [],
376
- // FIXME: Not set properly
377
- uniswapV2ExchangeRouterAddress: '',
378
- },
379
- [Network.BASE]: {
380
- network: Network.BASE,
381
- networkName: 'Base',
382
- isTestnet: false,
383
- nativeTokenName: 'Ether',
384
- nativeTokenSymbol: 'ETH',
385
- wrappedNativeTokenAddress: '0x4200000000000000000000000000000000000006',
386
- hasEIP1559: false,
387
- augustusAddress: '0x59C7C832e96D2568bea6db468C1aAdcbbDa08A52',
388
- augustusRFQAddress: '0xa003dFBA51C9e1e56C67ae445b852bdEd7aC5EEd',
389
- tokenTransferProxyAddress: '0x93aAAe79a53759cD164340E4C8766E4Db5331cD7',
390
- multicallV2Address: '0xeDF6D2a16e8081F777eB623EeB4411466556aF3d',
391
- privateHttpProvider: process.env.HTTP_PROVIDER_8453,
392
- hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
393
- hashFlowDisabledMMs: [],
394
- augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
395
- executorsAddresses: {
396
- Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
397
- Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
398
- Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
399
- },
400
- adapterAddresses: {
401
- BaseAdapter01: '0xe53d24CD81cC81bbf271AD7B02D0d67f851D727c',
402
- BaseBuyAdapter: '0xe07678E5Fd104cbabb239049148b8a4E9dA5d07E',
403
- },
404
- uniswapV2ExchangeRouterAddress:
405
- '0x75d199EfB540e47D27D52c62Da3E7daC2B9e834F',
406
- uniswapV3EventLoggingSampleRate: 0,
407
- rfqConfigs: {},
408
- rpcPollingMaxAllowedStateDelayInBlocks: 5,
409
- rpcPollingBlocksBackToTriggerUpdate: 3,
410
- forceRpcFallbackDexs: [],
411
- },
412
- };
413
-
414
- // Should not be used, except by internal test code
415
- export function generateConfig(network: number): Config {
416
- const baseConfig = baseConfigs[network];
417
- if (!baseConfig) {
418
- throw new Error(`No configuration found for network ${network}`);
419
- }
420
- const nativeTokenName =
421
- baseConfig.nativeTokenName || baseConfig.nativeTokenSymbol;
422
- if (!baseConfig.privateHttpProvider) {
423
- throw new Error(`Missing HTTP Provider for network ${network}`);
424
- }
425
- return {
426
- network: baseConfig.network,
427
- networkName: baseConfig.networkName,
428
- isTestnet: baseConfig.isTestnet,
429
- mainnetNetwork: baseConfig.mainnetNetwork,
430
- nativeTokenName,
431
- nativeTokenSymbol: baseConfig.nativeTokenSymbol,
432
- wrappedNativeTokenName:
433
- baseConfig.wrappedNativeTokenName || `Wrapped ${nativeTokenName}`,
434
- wrappedNativeTokenSymbol:
435
- baseConfig.wrappedNativeTokenSymbol || `W${baseConfig.nativeTokenSymbol}`,
436
- wrappedNativeTokenAddress: baseConfig.wrappedNativeTokenAddress,
437
- hasEIP1559: baseConfig.hasEIP1559,
438
- augustusAddress: baseConfig.augustusAddress,
439
- augustusV6Address: baseConfig.augustusV6Address,
440
- augustusRFQAddress: baseConfig.augustusRFQAddress,
441
- tokenTransferProxyAddress: baseConfig.tokenTransferProxyAddress,
442
- multicallV2Address: baseConfig.multicallV2Address,
443
- privateHttpProvider: baseConfig.privateHttpProvider,
444
- adapterAddresses: { ...baseConfig.adapterAddresses },
445
- executorsAddresses: { ...baseConfig.executorsAddresses },
446
- uniswapV2ExchangeRouterAddress: baseConfig.uniswapV2ExchangeRouterAddress,
447
- uniswapV3EventLoggingSampleRate: baseConfig.uniswapV3EventLoggingSampleRate,
448
- rfqConfigs: baseConfig.rfqConfigs,
449
- rpcPollingMaxAllowedStateDelayInBlocks:
450
- baseConfig.rpcPollingMaxAllowedStateDelayInBlocks,
451
- rpcPollingBlocksBackToTriggerUpdate:
452
- baseConfig.rpcPollingBlocksBackToTriggerUpdate,
453
- hashFlowAuthToken: baseConfig.hashFlowAuthToken,
454
- swaapV2AuthToken: baseConfig.swaapV2AuthToken,
455
- dexalotAuthToken: baseConfig.dexalotAuthToken,
456
- hashFlowDisabledMMs: baseConfig.hashFlowDisabledMMs,
457
- forceRpcFallbackDexs: baseConfig.forceRpcFallbackDexs,
458
- };
459
- }
460
-
461
- export class ConfigHelper {
462
- public masterBlockNumberCacheKey: string;
463
-
464
- constructor(
465
- public isSlave: boolean,
466
- public data: Config,
467
- masterCachePrefix: string,
468
- ) {
469
- this.masterBlockNumberCacheKey =
470
- `${masterCachePrefix}_${data.network}_bn`.toLowerCase();
471
- }
472
-
473
- wrapETH(token: string): string;
474
- wrapETH(token: Token): Token;
475
- wrapETH(token: Token | string): Token | string {
476
- if (typeof token === 'string')
477
- return isETHAddress(token) ? this.data.wrappedNativeTokenAddress : token;
478
-
479
- return isETHAddress(token.address)
480
- ? { address: this.data.wrappedNativeTokenAddress, decimals: 18 }
481
- : token;
482
- }
483
-
484
- unwrapETH(token: Token): Token {
485
- return this.isWETH(token.address)
486
- ? { address: ETHER_ADDRESS, decimals: 18 }
487
- : token;
488
- }
489
-
490
- isWETH(tokenAddress: Address): boolean {
491
- return (
492
- tokenAddress.toLowerCase() ===
493
- this.data.wrappedNativeTokenAddress.toLowerCase()
494
- );
495
- }
496
- }
1
+ import { Config, Address, Token } from './types';
2
+
3
+ import { Network, PORT_TEST_SERVER, ETHER_ADDRESS } from './constants';
4
+ import { isETHAddress } from './utils';
5
+ import { RFQConfig } from './dex/generic-rfq/types';
6
+
7
+ // Hardcoded and environment values from which actual config is derived
8
+ type BaseConfig = {
9
+ network: number;
10
+ networkName: string;
11
+ isTestnet: boolean;
12
+ mainnetNetwork?: number;
13
+ nativeTokenName?: string;
14
+ nativeTokenSymbol: string;
15
+ wrappedNativeTokenName?: string;
16
+ wrappedNativeTokenSymbol?: string;
17
+ wrappedNativeTokenAddress: Address;
18
+ hasEIP1559: boolean;
19
+ augustusAddress: Address;
20
+ augustusV6Address?: Address;
21
+ augustusRFQAddress: Address;
22
+ tokenTransferProxyAddress: Address;
23
+ multicallV2Address: Address;
24
+ privateHttpProvider?: string;
25
+ adapterAddresses: { [name: string]: Address };
26
+ executorsAddresses?: { [name: string]: Address };
27
+ uniswapV2ExchangeRouterAddress: Address;
28
+ uniswapV3EventLoggingSampleRate?: number;
29
+ rfqConfigs: Record<string, RFQConfig>;
30
+ rpcPollingMaxAllowedStateDelayInBlocks: number;
31
+ rpcPollingBlocksBackToTriggerUpdate: number;
32
+ hashFlowAuthToken?: string;
33
+ hashFlowDisabledMMs: string[];
34
+ swaapV2AuthToken?: string;
35
+ dexalotAuthToken?: string;
36
+ forceRpcFallbackDexs: string[];
37
+ };
38
+
39
+ const baseConfigs: { [network: number]: BaseConfig } = {
40
+ [Network.MAINNET]: {
41
+ network: Network.MAINNET,
42
+ networkName: 'Ethereum Mainnet',
43
+ isTestnet: false,
44
+ nativeTokenName: 'Ether',
45
+ nativeTokenSymbol: 'ETH',
46
+ wrappedNativeTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
47
+ hasEIP1559: true,
48
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
49
+ augustusRFQAddress: '0xe92b586627ccA7a83dC919cc7127196d70f55a06',
50
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
51
+ multicallV2Address: '0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696',
52
+ privateHttpProvider: process.env.HTTP_PROVIDER_1,
53
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
54
+ executorsAddresses: {
55
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
56
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
57
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
58
+ },
59
+ adapterAddresses: {
60
+ Adapter01: '0x9bE264469eF954c139Da4A45Cf76CbCC5e3A6A73',
61
+ Adapter02: '0xFC2Ba6E830a04C25e207B8214b26d8C713F6881F',
62
+ Adapter03: '0xBAEeb4540f59d30E567a5B563CC0c4587eDd9366',
63
+ Adapter04: '0x369A2FDb910d432f0a07381a5E3d27572c876713',
64
+ Adapter05: '0x3329dfa55A40B450952FBE0203167Ae6908E656d',
65
+ Adapter06: '0xe9166234DFB6d3ec05C82404109C02Ca82b16c22',
66
+ BuyAdapter: '0x84bEF12C9931cE12662cc9F2366b6a5029E4BD29',
67
+ BuyAdapter02: '0xF73335b89e6EeACD4d7D8e397ACCd9F93E723952',
68
+ },
69
+ uniswapV2ExchangeRouterAddress:
70
+ '0xF9234CB08edb93c0d4a4d4c70cC3FfD070e78e07',
71
+ rpcPollingMaxAllowedStateDelayInBlocks: 0,
72
+ rpcPollingBlocksBackToTriggerUpdate: 0,
73
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
74
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
75
+ hashFlowDisabledMMs:
76
+ process.env[`HASHFLOW_DISABLED_MMS_1`]?.split(',') || [],
77
+ uniswapV3EventLoggingSampleRate: 0,
78
+ rfqConfigs: {
79
+ DummyParaSwapPool: {
80
+ maker: process.env.TEST_ADDRESS!,
81
+ tokensConfig: {
82
+ reqParams: {
83
+ url: `http://localhost:${PORT_TEST_SERVER}/tokens`,
84
+ method: 'GET',
85
+ },
86
+ secret: {
87
+ domain: 'paraswap-test',
88
+ accessKey: 'access',
89
+ secretKey: 'secret',
90
+ },
91
+ intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
92
+ dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
93
+ },
94
+ pairsConfig: {
95
+ reqParams: {
96
+ url: `http://localhost:${PORT_TEST_SERVER}/pairs`,
97
+ method: 'GET',
98
+ },
99
+ secret: {
100
+ domain: 'paraswap-test',
101
+ accessKey: 'access',
102
+ secretKey: 'secret',
103
+ },
104
+ intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
105
+ dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
106
+ },
107
+ rateConfig: {
108
+ reqParams: {
109
+ url: `http://localhost:${PORT_TEST_SERVER}/prices`,
110
+ method: 'GET',
111
+ },
112
+ secret: {
113
+ domain: 'paraswap-test',
114
+ accessKey: 'access',
115
+ secretKey: 'secret',
116
+ },
117
+ intervalMs: 1000 * 60 * 60 * 1, // every 1 minute
118
+ dataTTLS: 1000 * 60 * 60 * 1, // ttl 1 minute
119
+ },
120
+ firmRateConfig: {
121
+ url: `http://localhost:${PORT_TEST_SERVER}/firm`,
122
+ method: 'POST',
123
+ secret: {
124
+ domain: 'paraswap-test',
125
+ accessKey: 'access',
126
+ secretKey: 'secret',
127
+ },
128
+ },
129
+ },
130
+ },
131
+ forceRpcFallbackDexs: [],
132
+ },
133
+ [Network.BSC]: {
134
+ network: Network.BSC,
135
+ networkName: 'Binance Smart Chain Mainnet',
136
+ isTestnet: false,
137
+ nativeTokenSymbol: 'BNB',
138
+ wrappedNativeTokenAddress: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
139
+ hasEIP1559: false,
140
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
141
+ augustusRFQAddress: '0x8DcDfe88EF0351f27437284D0710cD65b20288bb',
142
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
143
+ multicallV2Address: '0xC50F4c1E81c873B2204D7eFf7069Ffec6Fbe136D',
144
+ privateHttpProvider: process.env.HTTP_PROVIDER_56,
145
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
146
+ executorsAddresses: {
147
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
148
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
149
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
150
+ },
151
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
152
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
153
+ hashFlowDisabledMMs:
154
+ process.env[`HASHFLOW_DISABLED_MMS_56`]?.split(',') || [],
155
+ adapterAddresses: {
156
+ BscAdapter01: '0xA31d9C571DF00e0F428B0bD24c34D103E8112222',
157
+ BscAdapter02: '0xb9768a1C6e4917E30927beeC4b2874d45fD333Cf',
158
+ BscBuyAdapter: '0x06158216cFf091ADc7340441717edd8Ebd7A54d7',
159
+ },
160
+ rpcPollingMaxAllowedStateDelayInBlocks: 1,
161
+ rpcPollingBlocksBackToTriggerUpdate: 1,
162
+ uniswapV2ExchangeRouterAddress:
163
+ '0x53e693c6C7FFC4446c53B205Cf513105Bf140D7b',
164
+ rfqConfigs: {},
165
+ forceRpcFallbackDexs: [],
166
+ },
167
+ [Network.POLYGON]: {
168
+ network: Network.POLYGON,
169
+ networkName: 'Polygon Mainnet',
170
+ isTestnet: false,
171
+ nativeTokenName: 'Matic',
172
+ nativeTokenSymbol: 'MATIC',
173
+ wrappedNativeTokenAddress: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
174
+ hasEIP1559: true,
175
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
176
+ augustusRFQAddress: '0xF3CD476C3C4D3Ac5cA2724767f269070CA09A043',
177
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
178
+ multicallV2Address: '0x275617327c958bD06b5D6b871E7f491D76113dd8',
179
+ privateHttpProvider: process.env.HTTP_PROVIDER_137,
180
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
181
+ executorsAddresses: {
182
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
183
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
184
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
185
+ },
186
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
187
+ hashFlowDisabledMMs:
188
+ process.env[`HASHFLOW_DISABLED_MMS_137`]?.split(',') || [],
189
+ adapterAddresses: {
190
+ PolygonAdapter01: '0xE44769f42E1e9592f86B82f206407a8f7C84b4ed',
191
+ PolygonAdapter02: '0xE7d4CC1589311BD7Bb58739269748a20DAAD755D',
192
+ PolygonBuyAdapter: '0x8643Aa3E63dF7742223A713C7525677df336183f',
193
+ },
194
+ uniswapV2ExchangeRouterAddress:
195
+ '0xf3938337F7294fEf84e9B2c6D548A93F956Cc281',
196
+ uniswapV3EventLoggingSampleRate: 0,
197
+ rfqConfigs: {},
198
+ rpcPollingMaxAllowedStateDelayInBlocks: 2,
199
+ rpcPollingBlocksBackToTriggerUpdate: 1,
200
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
201
+ forceRpcFallbackDexs: [],
202
+ },
203
+ [Network.AVALANCHE]: {
204
+ network: Network.AVALANCHE,
205
+ networkName: 'Avalanche Mainnet C-Chain',
206
+ isTestnet: false,
207
+ nativeTokenName: 'Avax',
208
+ nativeTokenSymbol: 'AVAX',
209
+ wrappedNativeTokenAddress: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',
210
+ hasEIP1559: true,
211
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
212
+ augustusRFQAddress: '0x34302c4267d0dA0A8c65510282Cc22E9e39df51f',
213
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
214
+ multicallV2Address: '0xd7Fc8aD069f95B6e2835f4DEff03eF84241cF0E1',
215
+ privateHttpProvider: process.env.HTTP_PROVIDER_43114,
216
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
217
+ hashFlowDisabledMMs:
218
+ process.env[`HASHFLOW_DISABLED_MMS_43114`]?.split(',') || [],
219
+ dexalotAuthToken: process.env.API_KEY_DEXALOT_AUTH_TOKEN || '',
220
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
221
+ executorsAddresses: {
222
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
223
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
224
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
225
+ },
226
+ adapterAddresses: {
227
+ AvalancheAdapter01: '0x745Ec73855CeC7249E5fF4c9DD81cc65b4D297a9',
228
+ AvalancheAdapter02: '0xA10c9a84E72d9DfF424Fe2284B6460784bed407E',
229
+ AvalancheBuyAdapter: '0x654dE10890f8B2C5bF54E50Af169a7E93165C416',
230
+ },
231
+ uniswapV2ExchangeRouterAddress:
232
+ '0x53e693c6C7FFC4446c53B205Cf513105Bf140D7b',
233
+ rfqConfigs: {},
234
+ rpcPollingMaxAllowedStateDelayInBlocks: 2,
235
+ rpcPollingBlocksBackToTriggerUpdate: 1,
236
+ forceRpcFallbackDexs: [],
237
+ },
238
+ [Network.FANTOM]: {
239
+ network: Network.FANTOM,
240
+ networkName: 'Fantom Opera Mainnet',
241
+ isTestnet: false,
242
+ nativeTokenName: 'Fantom',
243
+ nativeTokenSymbol: 'FTM',
244
+ wrappedNativeTokenAddress: '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83',
245
+ hasEIP1559: false,
246
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
247
+ augustusRFQAddress: '0x2DF17455B96Dde3618FD6B1C3a9AA06D6aB89347',
248
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
249
+ multicallV2Address: '0xdC6E2b14260F972ad4e5a31c68294Fba7E720701',
250
+ privateHttpProvider: process.env.HTTP_PROVIDER_250,
251
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
252
+ hashFlowDisabledMMs:
253
+ process.env[`HASHFLOW_DISABLED_MMS_250`]?.split(',') || [],
254
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
255
+ executorsAddresses: {
256
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
257
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
258
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
259
+ },
260
+ adapterAddresses: {
261
+ FantomAdapter01: '0x654dE10890f8B2C5bF54E50Af169a7E93165C416',
262
+ FantomAdapter02: '0x248009f6F78b5AcD5EA2fc86d56b77A7AeEe2eFc',
263
+ FantomBuyAdapter: '0xEECA9223063bD13e8ca77ed9e39a07f2BD1923E6',
264
+ },
265
+ uniswapV2ExchangeRouterAddress:
266
+ '0xAB86e2bC9ec5485a9b60E684BA6d49bf4686ACC2',
267
+ rfqConfigs: {},
268
+ rpcPollingMaxAllowedStateDelayInBlocks: 2,
269
+ rpcPollingBlocksBackToTriggerUpdate: 1,
270
+ forceRpcFallbackDexs: [],
271
+ },
272
+ [Network.ARBITRUM]: {
273
+ network: Network.ARBITRUM,
274
+ networkName: 'Arbitrum One',
275
+ isTestnet: false,
276
+ nativeTokenName: 'Ether',
277
+ nativeTokenSymbol: 'ETH',
278
+ wrappedNativeTokenAddress: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
279
+ hasEIP1559: false,
280
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
281
+ augustusRFQAddress: '0x0927FD43a7a87E3E8b81Df2c44B03C4756849F6D',
282
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
283
+ multicallV2Address: '0x7eCfBaa8742fDf5756DAC92fbc8b90a19b8815bF',
284
+ privateHttpProvider: process.env.HTTP_PROVIDER_42161,
285
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
286
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
287
+ hashFlowDisabledMMs:
288
+ process.env[`HASHFLOW_DISABLED_MMS_42161`]?.split(',') || [],
289
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
290
+ executorsAddresses: {
291
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
292
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
293
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
294
+ },
295
+ dexalotAuthToken: process.env.API_KEY_DEXALOT_AUTH_TOKEN || '',
296
+ adapterAddresses: {
297
+ ArbitrumAdapter01: '0x369A2FDb910d432f0a07381a5E3d27572c876713',
298
+ ArbitrumAdapter02: '0x58a5f0b73969800FAFf8556cD2187E3FCE71A6cb',
299
+ ArbitrumAdapter03: '0x97bdD2B98D9802b0e387FefdB2882C1b2dc2c344',
300
+ ArbitrumBuyAdapter: '0x005213c48d4aafFcA0b6D1CbA8710F4D035C18f9',
301
+ },
302
+ uniswapV2ExchangeRouterAddress:
303
+ '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',
304
+ uniswapV3EventLoggingSampleRate: 0,
305
+ rfqConfigs: {},
306
+ rpcPollingMaxAllowedStateDelayInBlocks: 4,
307
+ rpcPollingBlocksBackToTriggerUpdate: 3,
308
+ forceRpcFallbackDexs: [],
309
+ },
310
+ [Network.OPTIMISM]: {
311
+ network: Network.OPTIMISM,
312
+ networkName: 'Optimistic Ethereum',
313
+ isTestnet: false,
314
+ nativeTokenName: 'Ether',
315
+ nativeTokenSymbol: 'ETH',
316
+ wrappedNativeTokenAddress: '0x4200000000000000000000000000000000000006',
317
+ hasEIP1559: false,
318
+ augustusAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
319
+ augustusRFQAddress: '0x0927FD43a7a87E3E8b81Df2c44B03C4756849F6D',
320
+ tokenTransferProxyAddress: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
321
+ multicallV2Address: '0x2DC0E2aa608532Da689e89e237dF582B783E552C',
322
+ privateHttpProvider: process.env.HTTP_PROVIDER_10,
323
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
324
+ executorsAddresses: {
325
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
326
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
327
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
328
+ },
329
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
330
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
331
+ hashFlowDisabledMMs:
332
+ process.env[`HASHFLOW_DISABLED_MMS_10`]?.split(',') || [],
333
+ adapterAddresses: {
334
+ OptimismAdapter01: '0x5dcf544b0c9689fa67dcb713fd2656d217e25a59',
335
+ OptimismAdapter02: '0x7b4B828a461063F2F47558c3544dA74964c7393D',
336
+ OptimismBuyAdapter: '0x18a495DD563753DB872D6b18650Cf4446f3b758b',
337
+ },
338
+ uniswapV2ExchangeRouterAddress:
339
+ '0xB41dD984730dAf82f5C41489E21ac79D5e3B61bC',
340
+ uniswapV3EventLoggingSampleRate: 0,
341
+ rfqConfigs: {},
342
+ rpcPollingMaxAllowedStateDelayInBlocks: 5,
343
+ rpcPollingBlocksBackToTriggerUpdate: 3,
344
+ forceRpcFallbackDexs: [],
345
+ },
346
+ [Network.ZKEVM]: {
347
+ network: Network.ZKEVM,
348
+ networkName: 'Polygon zkEVM',
349
+ isTestnet: false,
350
+ nativeTokenName: 'Ether',
351
+ nativeTokenSymbol: 'ETH',
352
+ wrappedNativeTokenAddress: '0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9',
353
+ hasEIP1559: true,
354
+ augustusAddress: '0xB83B554730d29cE4Cb55BB42206c3E2c03E4A40A',
355
+ augustusRFQAddress: '0x7Ee1F7fa4C0b2eDB0Fdd5944c14A07167700486E',
356
+ tokenTransferProxyAddress: '0xc8a21fcd5a100c3ecc037c97e2f9c53a8d3a02a1',
357
+ multicallV2Address: '0x6cA478C852DfA8941FC819fDf248606eA04780B6',
358
+ privateHttpProvider: process.env.HTTP_PROVIDER_1101,
359
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
360
+ executorsAddresses: {
361
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
362
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
363
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
364
+ },
365
+ adapterAddresses: {
366
+ PolygonZkEvmAdapter01: '0xd63B7691dD98fa89A2ea5e1604700489c585aa7B',
367
+ PolygonZkEvmBuyAdapter: '0xe2137168CdA486a2555E16c597905854C84F9127',
368
+ },
369
+
370
+ rpcPollingMaxAllowedStateDelayInBlocks: 0,
371
+ rpcPollingBlocksBackToTriggerUpdate: 0,
372
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
373
+ hashFlowDisabledMMs:
374
+ process.env[`HASHFLOW_DISABLED_MMS_10`]?.split(',') || [],
375
+ uniswapV3EventLoggingSampleRate: 0,
376
+ rfqConfigs: {},
377
+ forceRpcFallbackDexs: [],
378
+ // FIXME: Not set properly
379
+ uniswapV2ExchangeRouterAddress: '',
380
+ },
381
+ [Network.BASE]: {
382
+ network: Network.BASE,
383
+ networkName: 'Base',
384
+ isTestnet: false,
385
+ nativeTokenName: 'Ether',
386
+ nativeTokenSymbol: 'ETH',
387
+ wrappedNativeTokenAddress: '0x4200000000000000000000000000000000000006',
388
+ hasEIP1559: false,
389
+ augustusAddress: '0x59C7C832e96D2568bea6db468C1aAdcbbDa08A52',
390
+ augustusRFQAddress: '0xa003dFBA51C9e1e56C67ae445b852bdEd7aC5EEd',
391
+ tokenTransferProxyAddress: '0x93aAAe79a53759cD164340E4C8766E4Db5331cD7',
392
+ multicallV2Address: '0xeDF6D2a16e8081F777eB623EeB4411466556aF3d',
393
+ privateHttpProvider: process.env.HTTP_PROVIDER_8453,
394
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
395
+ swaapV2AuthToken: process.env.API_KEY_SWAAP_V2_AUTH_TOKEN || '',
396
+ hashFlowDisabledMMs: [],
397
+ augustusV6Address: '0x000dB803A70511E09dA650D4C0506d0000100000',
398
+ executorsAddresses: {
399
+ Executor01: '0x9000D0c03F00f002C440030024042c02E2e0E0d0',
400
+ Executor02: '0xb0DE0000b80000520aCf020C52D006500017055f',
401
+ Executor03: '0xBa0200000D0903dC0c1000801B0573090078E09E',
402
+ },
403
+ adapterAddresses: {
404
+ BaseAdapter01: '0xe53d24CD81cC81bbf271AD7B02D0d67f851D727c',
405
+ BaseAdapter02: '0x97bdD2B98D9802b0e387FefdB2882C1b2dc2c344',
406
+ BaseBuyAdapter: '0x005213c48d4aafFcA0b6D1CbA8710F4D035C18f9',
407
+ },
408
+ uniswapV2ExchangeRouterAddress:
409
+ '0x75d199EfB540e47D27D52c62Da3E7daC2B9e834F',
410
+ uniswapV3EventLoggingSampleRate: 0,
411
+ rfqConfigs: {},
412
+ rpcPollingMaxAllowedStateDelayInBlocks: 5,
413
+ rpcPollingBlocksBackToTriggerUpdate: 3,
414
+ forceRpcFallbackDexs: [],
415
+ },
416
+ };
417
+
418
+ // Should not be used, except by internal test code
419
+ export function generateConfig(network: number): Config {
420
+ const baseConfig = baseConfigs[network];
421
+ if (!baseConfig) {
422
+ throw new Error(`No configuration found for network ${network}`);
423
+ }
424
+ const nativeTokenName =
425
+ baseConfig.nativeTokenName || baseConfig.nativeTokenSymbol;
426
+ if (!baseConfig.privateHttpProvider) {
427
+ throw new Error(`Missing HTTP Provider for network ${network}`);
428
+ }
429
+ return {
430
+ network: baseConfig.network,
431
+ networkName: baseConfig.networkName,
432
+ isTestnet: baseConfig.isTestnet,
433
+ mainnetNetwork: baseConfig.mainnetNetwork,
434
+ nativeTokenName,
435
+ nativeTokenSymbol: baseConfig.nativeTokenSymbol,
436
+ wrappedNativeTokenName:
437
+ baseConfig.wrappedNativeTokenName || `Wrapped ${nativeTokenName}`,
438
+ wrappedNativeTokenSymbol:
439
+ baseConfig.wrappedNativeTokenSymbol || `W${baseConfig.nativeTokenSymbol}`,
440
+ wrappedNativeTokenAddress: baseConfig.wrappedNativeTokenAddress,
441
+ hasEIP1559: baseConfig.hasEIP1559,
442
+ augustusAddress: baseConfig.augustusAddress,
443
+ augustusV6Address: baseConfig.augustusV6Address,
444
+ augustusRFQAddress: baseConfig.augustusRFQAddress,
445
+ tokenTransferProxyAddress: baseConfig.tokenTransferProxyAddress,
446
+ multicallV2Address: baseConfig.multicallV2Address,
447
+ privateHttpProvider: baseConfig.privateHttpProvider,
448
+ adapterAddresses: { ...baseConfig.adapterAddresses },
449
+ executorsAddresses: { ...baseConfig.executorsAddresses },
450
+ uniswapV2ExchangeRouterAddress: baseConfig.uniswapV2ExchangeRouterAddress,
451
+ uniswapV3EventLoggingSampleRate: baseConfig.uniswapV3EventLoggingSampleRate,
452
+ rfqConfigs: baseConfig.rfqConfigs,
453
+ rpcPollingMaxAllowedStateDelayInBlocks:
454
+ baseConfig.rpcPollingMaxAllowedStateDelayInBlocks,
455
+ rpcPollingBlocksBackToTriggerUpdate:
456
+ baseConfig.rpcPollingBlocksBackToTriggerUpdate,
457
+ hashFlowAuthToken: baseConfig.hashFlowAuthToken,
458
+ swaapV2AuthToken: baseConfig.swaapV2AuthToken,
459
+ dexalotAuthToken: baseConfig.dexalotAuthToken,
460
+ hashFlowDisabledMMs: baseConfig.hashFlowDisabledMMs,
461
+ forceRpcFallbackDexs: baseConfig.forceRpcFallbackDexs,
462
+ };
463
+ }
464
+
465
+ export class ConfigHelper {
466
+ public masterBlockNumberCacheKey: string;
467
+
468
+ constructor(
469
+ public isSlave: boolean,
470
+ public data: Config,
471
+ masterCachePrefix: string,
472
+ ) {
473
+ this.masterBlockNumberCacheKey =
474
+ `${masterCachePrefix}_${data.network}_bn`.toLowerCase();
475
+ }
476
+
477
+ wrapETH(token: string): string;
478
+ wrapETH(token: Token): Token;
479
+ wrapETH(token: Token | string): Token | string {
480
+ if (typeof token === 'string')
481
+ return isETHAddress(token) ? this.data.wrappedNativeTokenAddress : token;
482
+
483
+ return isETHAddress(token.address)
484
+ ? { address: this.data.wrappedNativeTokenAddress, decimals: 18 }
485
+ : token;
486
+ }
487
+
488
+ unwrapETH(token: Token): Token {
489
+ return this.isWETH(token.address)
490
+ ? { address: ETHER_ADDRESS, decimals: 18 }
491
+ : token;
492
+ }
493
+
494
+ isWETH(tokenAddress: Address): boolean {
495
+ return (
496
+ tokenAddress.toLowerCase() ===
497
+ this.data.wrappedNativeTokenAddress.toLowerCase()
498
+ );
499
+ }
500
+ }