@paraswap/dex-lib 2.36.1 → 2.36.2-dexalot.10

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 (163) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/vcs.xml +6 -0
  8. package/build/abi/algebra/AlgebraPool.abi.json +727 -0
  9. package/build/abi/curve-v1/StableSwapFRXETH.json +889 -0
  10. package/build/abi/curve-v1/StableSwapWBETH.json +1223 -0
  11. package/build/abi/dexalot/DexalotMainnetRFQ.json +887 -0
  12. package/build/abi/sushiswap-v3/QuoterV2.json +267 -0
  13. package/build/abi/sushiswap-v3/RouterProcessor3.json +289 -0
  14. package/build/abi/wBETH.json +1527 -0
  15. package/build/config.js +2 -0
  16. package/build/config.js.map +1 -1
  17. package/build/dex/algebra/algebra-pool.d.ts +46 -0
  18. package/build/dex/algebra/algebra-pool.js +336 -0
  19. package/build/dex/algebra/algebra-pool.js.map +1 -0
  20. package/build/dex/curve-v1/pools/frxETHpool.d.ts +7 -0
  21. package/build/dex/curve-v1/pools/frxETHpool.js +27 -0
  22. package/build/dex/curve-v1/pools/frxETHpool.js.map +1 -0
  23. package/build/dex/curve-v1/pools/wbETHpool.d.ts +29 -0
  24. package/build/dex/curve-v1/pools/wbETHpool.js +408 -0
  25. package/build/dex/curve-v1/pools/wbETHpool.js.map +1 -0
  26. package/build/dex/{test-dex → dexalot}/config.d.ts +1 -1
  27. package/build/dex/dexalot/config.js +18 -0
  28. package/build/dex/dexalot/config.js.map +1 -0
  29. package/build/dex/dexalot/constants.d.ts +15 -0
  30. package/build/dex/dexalot/constants.js +22 -0
  31. package/build/dex/dexalot/constants.js.map +1 -0
  32. package/build/dex/dexalot/dexalot.d.ts +69 -0
  33. package/build/dex/dexalot/dexalot.js +614 -0
  34. package/build/dex/dexalot/dexalot.js.map +1 -0
  35. package/build/dex/dexalot/rate-fetcher.d.ts +28 -0
  36. package/build/dex/dexalot/rate-fetcher.js +100 -0
  37. package/build/dex/dexalot/rate-fetcher.js.map +1 -0
  38. package/build/dex/dexalot/types.d.ts +114 -0
  39. package/build/dex/dexalot/types.js +12 -0
  40. package/build/dex/dexalot/types.js.map +1 -0
  41. package/build/dex/dexalot/validators.d.ts +5 -0
  42. package/build/dex/dexalot/validators.js +45 -0
  43. package/build/dex/dexalot/validators.js.map +1 -0
  44. package/build/dex/index.js +2 -0
  45. package/build/dex/index.js.map +1 -1
  46. package/build/dex/pancakeswap-v3/types.d.ts +14 -0
  47. package/build/dex/{test-dex → pancakeswap-v3}/types.js.map +1 -1
  48. package/build/dex/ramses-v2/config.d.ts +4 -0
  49. package/build/dex/ramses-v2/config.js +28 -0
  50. package/build/dex/ramses-v2/config.js.map +1 -0
  51. package/build/dex/ramses-v2/constants.d.ts +28 -0
  52. package/build/dex/ramses-v2/constants.js +35 -0
  53. package/build/dex/ramses-v2/constants.js.map +1 -0
  54. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +4 -0
  55. package/build/dex/ramses-v2/contract-math/BitMath.js +93 -0
  56. package/build/dex/ramses-v2/contract-math/BitMath.js.map +1 -0
  57. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +3 -0
  58. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +8 -0
  59. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +1 -0
  60. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +4 -0
  61. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +9 -0
  62. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +1 -0
  63. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +4 -0
  64. package/build/dex/ramses-v2/contract-math/FullMath.js +19 -0
  65. package/build/dex/ramses-v2/contract-math/FullMath.js.map +1 -0
  66. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +3 -0
  67. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +22 -0
  68. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +1 -0
  69. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +10 -0
  70. package/build/dex/ramses-v2/contract-math/Oracle.js +133 -0
  71. package/build/dex/ramses-v2/contract-math/Oracle.js.map +1 -0
  72. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +10 -0
  73. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +91 -0
  74. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +1 -0
  75. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +8 -0
  76. package/build/dex/ramses-v2/contract-math/SwapMath.js +70 -0
  77. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +1 -0
  78. package/build/dex/ramses-v2/contract-math/Tick.d.ts +7 -0
  79. package/build/dex/ramses-v2/contract-math/Tick.js +45 -0
  80. package/build/dex/ramses-v2/contract-math/Tick.js.map +1 -0
  81. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +8 -0
  82. package/build/dex/ramses-v2/contract-math/TickBitMap.js +87 -0
  83. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +1 -0
  84. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +8 -0
  85. package/build/dex/ramses-v2/contract-math/TickMath.js +162 -0
  86. package/build/dex/ramses-v2/contract-math/TickMath.js.map +1 -0
  87. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +3 -0
  88. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +10 -0
  89. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +1 -0
  90. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +18 -0
  91. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +392 -0
  92. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +1 -0
  93. package/build/dex/ramses-v2/contract-math/utils.d.ts +3 -0
  94. package/build/dex/ramses-v2/contract-math/utils.js +16 -0
  95. package/build/dex/ramses-v2/contract-math/utils.js.map +1 -0
  96. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +42 -0
  97. package/build/dex/ramses-v2/ramses-v2-pool.js +307 -0
  98. package/build/dex/ramses-v2/ramses-v2-pool.js.map +1 -0
  99. package/build/dex/ramses-v2/ramses-v2.d.ts +61 -0
  100. package/build/dex/ramses-v2/ramses-v2.js +690 -0
  101. package/build/dex/ramses-v2/ramses-v2.js.map +1 -0
  102. package/build/dex/ramses-v2/types.d.ts +154 -0
  103. package/build/dex/ramses-v2/types.js +9 -0
  104. package/build/dex/ramses-v2/types.js.map +1 -0
  105. package/build/dex/ramses-v2/utils.d.ts +6 -0
  106. package/build/dex/ramses-v2/utils.js +71 -0
  107. package/build/dex/ramses-v2/utils.js.map +1 -0
  108. package/build/dex/sushiswap-v3/config.d.ts +4 -0
  109. package/build/dex/sushiswap-v3/config.js +132 -0
  110. package/build/dex/sushiswap-v3/config.js.map +1 -0
  111. package/build/dex/sushiswap-v3/constants.d.ts +4 -0
  112. package/build/dex/sushiswap-v3/constants.js +32 -0
  113. package/build/dex/sushiswap-v3/constants.js.map +1 -0
  114. package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +56 -0
  115. package/build/dex/sushiswap-v3/sushiswap-v3-original.js +598 -0
  116. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +1 -0
  117. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +1 -0
  118. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +6 -0
  119. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +1 -0
  120. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +21 -0
  121. package/build/dex/sushiswap-v3/sushiswap-v3.js +58 -0
  122. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +1 -0
  123. package/build/dex/sushiswap-v3/token.d.ts +6 -0
  124. package/build/dex/sushiswap-v3/token.js +23 -0
  125. package/build/dex/sushiswap-v3/token.js.map +1 -0
  126. package/build/dex/sushiswap-v3/types.d.ts +15 -0
  127. package/build/dex/sushiswap-v3/types.js +18 -0
  128. package/build/dex/sushiswap-v3/types.js.map +1 -0
  129. package/build/types.d.ts +1 -0
  130. package/package.json +1 -1
  131. package/src/abi/dexalot/DexalotMainnetRFQ.json +887 -0
  132. package/src/config.ts +3 -0
  133. package/src/dex/dexalot/config.ts +18 -0
  134. package/src/dex/dexalot/constants.ts +29 -0
  135. package/src/dex/dexalot/dexalot-e2e.test.ts +192 -0
  136. package/src/dex/dexalot/dexalot-integration.test.ts +188 -0
  137. package/src/dex/dexalot/dexalot.ts +935 -0
  138. package/src/dex/dexalot/rate-fetcher.ts +197 -0
  139. package/src/dex/dexalot/types.ts +131 -0
  140. package/src/dex/dexalot/validators.ts +46 -0
  141. package/src/dex/index.ts +2 -0
  142. package/src/types.ts +1 -0
  143. package/build/abi/quickPerps/fast-price-events.json +0 -70
  144. package/build/abi/quickPerps/fast-price-feed.json +0 -748
  145. package/build/abi/quickPerps/reader.json +0 -313
  146. package/build/abi/quickPerps/vault-price-feed.json +0 -477
  147. package/build/abi/quickPerps/vault.json +0 -1953
  148. package/build/dex/test-dex/config.js +0 -15
  149. package/build/dex/test-dex/config.js.map +0 -1
  150. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  151. package/build/dex/test-dex/test-dex-pool.js +0 -63
  152. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  153. package/build/dex/test-dex/test-dex.d.ts +0 -37
  154. package/build/dex/test-dex/test-dex.js +0 -126
  155. package/build/dex/test-dex/test-dex.js.map +0 -1
  156. package/build/dex/test-dex/types.d.ts +0 -6
  157. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  158. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  159. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  160. package/build/workers.d.ts +0 -0
  161. package/build/workers.js +0 -2
  162. package/build/workers.js.map +0 -1
  163. /package/build/dex/{test-dex → pancakeswap-v3}/types.js +0 -0
@@ -0,0 +1,197 @@
1
+ import { IDexHelper } from '../../dex-helper';
2
+ import { Fetcher } from '../../lib/fetcher/fetcher';
3
+ import { validateAndCast } from '../../lib/validators';
4
+ import { Logger, Token } from '../../types';
5
+ import {
6
+ DexalotRateFetcherConfig,
7
+ DexalotPairsResponse,
8
+ PairDataMap,
9
+ DexalotPricesResponse,
10
+ PriceDataMap,
11
+ DexalotBlacklistResponse,
12
+ } from './types';
13
+ import {
14
+ pricesResponseValidator,
15
+ pairsResponseValidator,
16
+ blacklistResponseValidator,
17
+ } from './validators';
18
+ import { Network } from '../../constants';
19
+
20
+ export class RateFetcher {
21
+ private pairsFetcher: Fetcher<DexalotPairsResponse>;
22
+ private pairsCacheKey: string;
23
+ private pairsCacheTTL: number;
24
+
25
+ private rateFetcher: Fetcher<DexalotPricesResponse>;
26
+ private pricesCacheKey: string;
27
+ private pricesCacheTTL: number;
28
+
29
+ private tokensAddrCacheKey: string;
30
+ private tokensCacheKey: string;
31
+ private tokensCacheTTL: number;
32
+
33
+ private blacklistFetcher: Fetcher<DexalotBlacklistResponse>;
34
+ private blacklistCacheKey: string;
35
+ private blacklistCacheTTL: number;
36
+
37
+ constructor(
38
+ private dexHelper: IDexHelper,
39
+ private dexKey: string,
40
+ private network: Network,
41
+ private logger: Logger,
42
+ config: DexalotRateFetcherConfig,
43
+ ) {
44
+ this.pairsCacheKey = config.rateConfig.pairsCacheKey;
45
+ this.pairsCacheTTL = config.rateConfig.pairsCacheTTLSecs;
46
+ this.pricesCacheKey = config.rateConfig.pricesCacheKey;
47
+ this.pricesCacheTTL = config.rateConfig.pricesCacheTTLSecs;
48
+ this.tokensAddrCacheKey = config.rateConfig.tokensAddrCacheKey;
49
+ this.tokensCacheKey = config.rateConfig.tokensCacheKey;
50
+ this.tokensCacheTTL = config.rateConfig.tokensCacheTTLSecs;
51
+ this.blacklistCacheKey = config.rateConfig.blacklistCacheKey;
52
+ this.blacklistCacheTTL = config.rateConfig.blacklistCacheTTLSecs;
53
+
54
+ this.pairsFetcher = new Fetcher<DexalotPairsResponse>(
55
+ dexHelper.httpRequest,
56
+ {
57
+ info: {
58
+ requestOptions: config.rateConfig.pairsReqParams,
59
+ caster: (data: unknown) => {
60
+ return validateAndCast<DexalotPairsResponse>(
61
+ data,
62
+ pairsResponseValidator,
63
+ );
64
+ },
65
+ },
66
+ handler: this.handlePairsResponse.bind(this),
67
+ },
68
+ config.rateConfig.pairsIntervalMs,
69
+ logger,
70
+ );
71
+
72
+ this.rateFetcher = new Fetcher<DexalotPricesResponse>(
73
+ dexHelper.httpRequest,
74
+ {
75
+ info: {
76
+ requestOptions: config.rateConfig.pricesReqParams,
77
+ caster: (data: unknown) => {
78
+ return validateAndCast<DexalotPricesResponse>(
79
+ data,
80
+ pricesResponseValidator,
81
+ );
82
+ },
83
+ },
84
+ handler: this.handleRatesResponse.bind(this),
85
+ },
86
+ config.rateConfig.pricesIntervalMs,
87
+ logger,
88
+ );
89
+
90
+ this.blacklistFetcher = new Fetcher<DexalotBlacklistResponse>(
91
+ dexHelper.httpRequest,
92
+ {
93
+ info: {
94
+ requestOptions: config.rateConfig.blacklistReqParams,
95
+ caster: (data: unknown) => {
96
+ return validateAndCast<DexalotBlacklistResponse>(
97
+ data,
98
+ blacklistResponseValidator,
99
+ );
100
+ },
101
+ },
102
+ handler: this.handleBlacklistResponse.bind(this),
103
+ },
104
+ config.rateConfig.blacklistIntervalMs,
105
+ logger,
106
+ );
107
+ }
108
+
109
+ start() {
110
+ this.pairsFetcher.startPolling();
111
+ this.rateFetcher.startPolling();
112
+ this.blacklistFetcher.startPolling();
113
+ }
114
+
115
+ stop() {
116
+ this.pairsFetcher.stopPolling();
117
+ this.rateFetcher.stopPolling();
118
+ this.blacklistFetcher.stopPolling();
119
+ }
120
+
121
+ private handlePairsResponse(resp: DexalotPairsResponse): void {
122
+ const pairs = resp;
123
+ const dexPairs: PairDataMap = {};
124
+ const tokenMap: { [address: string]: Token } = {};
125
+ const tokenAddrMap: { [symbol: string]: string } = {};
126
+ Object.keys(pairs).forEach(pair => {
127
+ dexPairs[pair.toLowerCase()] = pairs[pair];
128
+ tokenAddrMap[pairs[pair].base.toLowerCase()] =
129
+ pairs[pair].baseAddress.toLowerCase();
130
+ tokenAddrMap[pairs[pair].quote.toLowerCase()] =
131
+ pairs[pair].quoteAddress.toLowerCase();
132
+ tokenMap[pairs[pair].baseAddress.toLowerCase()] = {
133
+ address: pairs[pair].baseAddress.toLowerCase(),
134
+ symbol: pairs[pair].base,
135
+ decimals: pairs[pair].baseDecimals,
136
+ };
137
+ tokenMap[pairs[pair].quoteAddress.toLowerCase()] = {
138
+ address: pairs[pair].quoteAddress.toLowerCase(),
139
+ symbol: pairs[pair].quote,
140
+ decimals: pairs[pair].quoteDecimals,
141
+ };
142
+ });
143
+
144
+ this.dexHelper.cache.setex(
145
+ this.dexKey,
146
+ this.network,
147
+ this.pairsCacheKey,
148
+ this.pairsCacheTTL,
149
+ JSON.stringify(dexPairs),
150
+ );
151
+
152
+ this.dexHelper.cache.setex(
153
+ this.dexKey,
154
+ this.network,
155
+ this.tokensCacheKey,
156
+ this.tokensCacheTTL,
157
+ JSON.stringify(tokenMap),
158
+ );
159
+
160
+ this.dexHelper.cache.setex(
161
+ this.dexKey,
162
+ this.network,
163
+ this.tokensAddrCacheKey,
164
+ this.tokensCacheTTL,
165
+ JSON.stringify(tokenAddrMap),
166
+ );
167
+ }
168
+
169
+ private handleRatesResponse(resp: DexalotPricesResponse): void {
170
+ const { prices } = resp;
171
+ const dexPrices: PriceDataMap = {};
172
+ Object.keys(prices).forEach(pair => {
173
+ dexPrices[pair.toLowerCase()] = prices[pair];
174
+ });
175
+
176
+ this.dexHelper.cache.setex(
177
+ this.dexKey,
178
+ this.network,
179
+ this.pricesCacheKey,
180
+ this.pricesCacheTTL,
181
+ JSON.stringify(dexPrices),
182
+ );
183
+ }
184
+
185
+ private async handleBlacklistResponse(
186
+ resp: DexalotBlacklistResponse,
187
+ ): Promise<void> {
188
+ const { blacklist } = resp;
189
+ this.dexHelper.cache.setex(
190
+ this.dexKey,
191
+ this.network,
192
+ this.blacklistCacheKey,
193
+ this.blacklistCacheTTL,
194
+ JSON.stringify(blacklist.map((item) => item.toLowerCase())),
195
+ );
196
+ }
197
+ }
@@ -0,0 +1,131 @@
1
+ import { RequestHeaders } from '../../dex-helper';
2
+ import { Token } from '../../types';
3
+ import { Method } from '../../dex-helper/irequest-wrapper';
4
+
5
+ type RFQOrder = {
6
+ nonceAndMeta: string;
7
+ expiry: number;
8
+ makerAsset: string;
9
+ takerAsset: string;
10
+ maker: string;
11
+ taker: string;
12
+ makerAmount: string;
13
+ takerAmount: string;
14
+ signature?: string;
15
+ };
16
+
17
+ export type RFQResponse = {
18
+ order: RFQOrder;
19
+ signature: string;
20
+ };
21
+
22
+ export type RFQResponseError = {
23
+ Reason: string;
24
+ ReasonCode: string;
25
+ Success: boolean;
26
+ RetryAfter?: number;
27
+ };
28
+
29
+ export type DexalotData = {
30
+ quoteData?: RFQOrder;
31
+ };
32
+
33
+ export type DexParams = {
34
+ mainnetRFQAddress: string;
35
+ };
36
+
37
+ export enum ClobSide {
38
+ BID = 'BID',
39
+ ASK = 'ASK',
40
+ }
41
+
42
+ export class DexalotRfqError extends Error {}
43
+
44
+ export type PairData = {
45
+ base: string;
46
+ quote: string;
47
+ liquidityUSD: number;
48
+ isSrcBase?: boolean;
49
+ };
50
+
51
+ export type PairDataMap = {
52
+ [pair: string]: PairData;
53
+ };
54
+
55
+ export type PairDataResp = {
56
+ base: string;
57
+ quote: string;
58
+ liquidityUSD: number;
59
+ baseAddress: string;
60
+ quoteAddress: string;
61
+ baseDecimals: number;
62
+ quoteDecimals: number;
63
+ };
64
+
65
+ export type DexalotPairsResponse = {
66
+ [pair: string]: PairDataResp;
67
+ };
68
+
69
+ type PriceData = {
70
+ bids: string[][];
71
+ asks: string[][];
72
+ };
73
+
74
+ export type PriceDataMap = {
75
+ [pair: string]: PriceData;
76
+ };
77
+
78
+ export type DexalotPricesResponse = {
79
+ prices: PriceDataMap;
80
+ };
81
+
82
+ export type TokenAddrDataMap = {
83
+ [symbol: string]: string;
84
+ };
85
+
86
+ export type TokenDataMap = {
87
+ [address: string]: Token;
88
+ };
89
+
90
+ export type DexalotBlacklistResponse = {
91
+ blacklist: string[];
92
+ };
93
+
94
+ export type DexalotRateFetcherConfig = {
95
+ rateConfig: {
96
+ pairsReqParams: {
97
+ url: string;
98
+ headers?: RequestHeaders;
99
+ params?: any;
100
+ };
101
+ pricesReqParams: {
102
+ url: string;
103
+ headers?: RequestHeaders;
104
+ params?: any;
105
+ };
106
+ blacklistReqParams: {
107
+ url: string;
108
+ headers?: RequestHeaders;
109
+ params?: any;
110
+ };
111
+ pairsIntervalMs: number;
112
+ pricesIntervalMs: number;
113
+ blacklistIntervalMs: number;
114
+ pairsCacheKey: string;
115
+ pricesCacheKey: string;
116
+ tokensAddrCacheKey: string;
117
+ tokensCacheKey: string;
118
+ blacklistCacheKey: string;
119
+ blacklistCacheTTLSecs: number;
120
+ pairsCacheTTLSecs: number;
121
+ pricesCacheTTLSecs: number;
122
+ tokensCacheTTLSecs: number;
123
+ };
124
+ };
125
+
126
+ export type DexalotAPIParameters = {
127
+ url: string;
128
+ headers?: RequestHeaders;
129
+ params?: any;
130
+ method?: Method;
131
+ };
@@ -0,0 +1,46 @@
1
+ import joi from 'joi';
2
+
3
+ const pairValidator = joi.object({
4
+ base: joi.string().min(1).required(),
5
+ quote: joi.string().min(1).required(),
6
+ liquidityUSD: joi.number().min(0).required(),
7
+ baseAddress: joi.string().min(1).required(),
8
+ quoteAddress: joi.string().min(1).required(),
9
+ baseDecimals: joi.number().min(0).required(),
10
+ quoteDecimals: joi.number().min(0).required(),
11
+ });
12
+
13
+ export const pairsResponseValidator = joi
14
+ .object()
15
+ .pattern(joi.string(), pairValidator);
16
+
17
+ const orderbookRecordValidator = joi
18
+ .array()
19
+ .items(joi.string().min(1))
20
+ .length(2);
21
+
22
+ const orderbookValidator = joi.object({
23
+ bids: joi.array().items(orderbookRecordValidator).required(),
24
+ asks: joi.array().items(orderbookRecordValidator).required(),
25
+ });
26
+
27
+ export const pricesResponseValidator = joi.object({
28
+ prices: joi.object().pattern(joi.string(), orderbookValidator),
29
+ });
30
+
31
+ const tokenValidator = joi.object({
32
+ symbol: joi.string().min(1).required(),
33
+ name: joi.string().min(1).required(),
34
+ description: joi.string().min(1).required(),
35
+ address: joi.string().min(1).required(),
36
+ decimals: joi.number().min(0).required(),
37
+ type: joi.string().min(1).required(),
38
+ });
39
+
40
+ export const tokensResponseValidator = joi.object({
41
+ tokens: joi.object().pattern(joi.string(), tokenValidator),
42
+ });
43
+
44
+ export const blacklistResponseValidator = joi.object({
45
+ blacklist: joi.array().items(joi.string().min(1)).required(),
46
+ });
package/src/dex/index.ts CHANGED
@@ -76,6 +76,7 @@ import { PancakeswapV3 } from './pancakeswap-v3/pancakeswap-v3';
76
76
  import { Algebra } from './algebra/algebra';
77
77
  import { QuickPerps } from './quick-perps/quick-perps';
78
78
  import { NomiswapV2 } from './uniswap-v2/nomiswap-v2';
79
+ import { Dexalot } from './dexalot/dexalot';
79
80
 
80
81
  const LegacyDexes = [
81
82
  CurveV2,
@@ -102,6 +103,7 @@ const LegacyDexes = [
102
103
  ];
103
104
 
104
105
  const Dexes = [
106
+ Dexalot,
105
107
  CurveV1,
106
108
  CurveFork,
107
109
  Swerve,
package/src/types.ts CHANGED
@@ -276,6 +276,7 @@ export type Config = {
276
276
  hashFlowDisabledMMs: string[];
277
277
  uniswapV3EventLoggingSampleRate?: number;
278
278
  swaapV2AuthToken?: string;
279
+ dexalotAuthToken?: string;
279
280
  forceRpcFallbackDexs: string[];
280
281
  };
281
282
 
@@ -1,70 +0,0 @@
1
- [
2
- {
3
- "anonymous": false,
4
- "inputs": [
5
- {
6
- "indexed": false,
7
- "internalType": "address",
8
- "name": "token",
9
- "type": "address"
10
- },
11
- {
12
- "indexed": false,
13
- "internalType": "uint256",
14
- "name": "price",
15
- "type": "uint256"
16
- },
17
- {
18
- "indexed": false,
19
- "internalType": "address",
20
- "name": "priceFeed",
21
- "type": "address"
22
- }
23
- ],
24
- "name": "PriceUpdate",
25
- "type": "event"
26
- },
27
- {
28
- "inputs": [
29
- { "internalType": "address", "name": "_token", "type": "address" },
30
- { "internalType": "uint256", "name": "_price", "type": "uint256" }
31
- ],
32
- "name": "emitPriceEvent",
33
- "outputs": [],
34
- "stateMutability": "nonpayable",
35
- "type": "function"
36
- },
37
- {
38
- "inputs": [],
39
- "name": "gov",
40
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
41
- "stateMutability": "view",
42
- "type": "function"
43
- },
44
- {
45
- "inputs": [{ "internalType": "address", "name": "", "type": "address" }],
46
- "name": "isPriceFeed",
47
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
48
- "stateMutability": "view",
49
- "type": "function"
50
- },
51
- {
52
- "inputs": [
53
- { "internalType": "address", "name": "_gov", "type": "address" }
54
- ],
55
- "name": "setGov",
56
- "outputs": [],
57
- "stateMutability": "nonpayable",
58
- "type": "function"
59
- },
60
- {
61
- "inputs": [
62
- { "internalType": "address", "name": "_priceFeed", "type": "address" },
63
- { "internalType": "bool", "name": "_isPriceFeed", "type": "bool" }
64
- ],
65
- "name": "setIsPriceFeed",
66
- "outputs": [],
67
- "stateMutability": "nonpayable",
68
- "type": "function"
69
- }
70
- ]