@xspswap/smart-order-router 1.1.4 → 1.1.6

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 (205) hide show
  1. package/build/main/providers/caching/route/model/cached-routes.d.ts +2 -3
  2. package/build/main/providers/caching/route/model/cached-routes.js +4 -4
  3. package/build/main/providers/caching/route/route-caching-provider.d.ts +1 -2
  4. package/build/main/providers/caching/route/route-caching-provider.js +11 -6
  5. package/build/main/providers/caching-gas-provider.d.ts +1 -1
  6. package/build/main/providers/caching-gas-provider.js +1 -1
  7. package/build/main/providers/caching-token-list-provider.d.ts +1 -2
  8. package/build/main/providers/caching-token-list-provider.js +1 -2
  9. package/build/main/providers/caching-token-provider.d.ts +1 -2
  10. package/build/main/providers/caching-token-provider.js +7 -6
  11. package/build/main/providers/eth-estimate-gas-provider.d.ts +1 -1
  12. package/build/main/providers/eth-estimate-gas-provider.js +1 -1
  13. package/build/main/providers/multicall-uniswap-provider.d.ts +1 -1
  14. package/build/main/providers/multicall-uniswap-provider.js +3 -3
  15. package/build/main/providers/on-chain-gas-price-provider.d.ts +1 -1
  16. package/build/main/providers/on-chain-quote-provider.d.ts +1 -1
  17. package/build/main/providers/on-chain-quote-provider.js +24 -13
  18. package/build/main/providers/simulation-provider.d.ts +2 -2
  19. package/build/main/providers/simulation-provider.js +6 -6
  20. package/build/main/providers/swap-router-provider.d.ts +1 -2
  21. package/build/main/providers/swap-router-provider.js +3 -2
  22. package/build/main/providers/tenderly-simulation-provider.d.ts +1 -1
  23. package/build/main/providers/tenderly-simulation-provider.js +8 -7
  24. package/build/main/providers/token-provider.d.ts +9 -14
  25. package/build/main/providers/token-provider.js +32 -46
  26. package/build/main/providers/token-validator-provider.d.ts +1 -2
  27. package/build/main/providers/token-validator-provider.js +3 -2
  28. package/build/main/providers/uri-subgraph-provider.d.ts +1 -1
  29. package/build/main/providers/uri-subgraph-provider.js +1 -1
  30. package/build/main/providers/v2/caching-pool-provider.d.ts +5 -3
  31. package/build/main/providers/v2/caching-pool-provider.js +5 -3
  32. package/build/main/providers/v2/caching-subgraph-provider.d.ts +1 -1
  33. package/build/main/providers/v2/pool-provider.d.ts +13 -4
  34. package/build/main/providers/v2/pool-provider.js +12 -10
  35. package/build/main/providers/v2/quote-provider.js +2 -2
  36. package/build/main/providers/v2/static-subgraph-provider.d.ts +1 -2
  37. package/build/main/providers/v2/static-subgraph-provider.js +9 -21
  38. package/build/main/providers/v2/subgraph-provider.d.ts +1 -2
  39. package/build/main/providers/v2/subgraph-provider.js +1 -1
  40. package/build/main/providers/v2-fathom/constants.d.ts +2 -0
  41. package/build/main/providers/v2-fathom/constants.js +6 -0
  42. package/build/main/providers/v2-fathom/static-subgraph-provider.d.ts +22 -0
  43. package/build/main/providers/v2-fathom/static-subgraph-provider.js +169 -0
  44. package/build/main/providers/v2-fathom/subgraph-provider.d.ts +34 -0
  45. package/build/main/providers/v2-fathom/subgraph-provider.js +130 -0
  46. package/build/main/providers/v2-fathom/utils.d.ts +2 -0
  47. package/build/main/providers/v2-fathom/utils.js +14 -0
  48. package/build/main/providers/v3/caching-pool-provider.d.ts +5 -3
  49. package/build/main/providers/v3/caching-pool-provider.js +5 -3
  50. package/build/main/providers/v3/caching-subgraph-provider.d.ts +1 -1
  51. package/build/main/providers/v3/pool-provider.d.ts +5 -3
  52. package/build/main/providers/v3/pool-provider.js +14 -8
  53. package/build/main/providers/v3/static-subgraph-provider-v3-uni.d.ts +29 -0
  54. package/build/main/providers/v3/static-subgraph-provider-v3-uni.js +209 -0
  55. package/build/main/providers/v3/static-subgraph-provider.d.ts +1 -2
  56. package/build/main/providers/v3/static-subgraph-provider.js +43 -91
  57. package/build/main/providers/v3/subgraph-provider.d.ts +1 -2
  58. package/build/main/providers/v3/subgraph-provider.js +2 -2
  59. package/build/main/routers/alpha-router/alpha-router.d.ts +25 -6
  60. package/build/main/routers/alpha-router/alpha-router.js +100 -38
  61. package/build/main/routers/alpha-router/config.d.ts +1 -1
  62. package/build/main/routers/alpha-router/entities/route-with-valid-quote.d.ts +9 -7
  63. package/build/main/routers/alpha-router/entities/route-with-valid-quote.js +8 -8
  64. package/build/main/routers/alpha-router/functions/best-swap-route.d.ts +1 -2
  65. package/build/main/routers/alpha-router/functions/best-swap-route.js +1 -1
  66. package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +4 -3
  67. package/build/main/routers/alpha-router/functions/compute-all-routes.js +6 -6
  68. package/build/main/routers/alpha-router/functions/get-candidate-pools.d.ts +7 -5
  69. package/build/main/routers/alpha-router/functions/get-candidate-pools.js +19 -17
  70. package/build/main/routers/alpha-router/gas-models/gas-model.d.ts +1 -2
  71. package/build/main/routers/alpha-router/gas-models/gas-model.js +4 -4
  72. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +4 -4
  73. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +13 -12
  74. package/build/main/routers/alpha-router/gas-models/v3/gas-costs.d.ts +1 -1
  75. package/build/main/routers/alpha-router/gas-models/v3/gas-costs.js +11 -11
  76. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +4 -5
  77. package/build/main/routers/alpha-router/quoters/base-quoter.d.ts +5 -3
  78. package/build/main/routers/alpha-router/quoters/base-quoter.js +3 -2
  79. package/build/main/routers/alpha-router/quoters/mixed-quoter.d.ts +4 -3
  80. package/build/main/routers/alpha-router/quoters/mixed-quoter.js +80 -14
  81. package/build/main/routers/alpha-router/quoters/v2-quoter.d.ts +4 -3
  82. package/build/main/routers/alpha-router/quoters/v2-quoter.js +9 -4
  83. package/build/main/routers/alpha-router/quoters/v3-quoter.d.ts +5 -4
  84. package/build/main/routers/alpha-router/quoters/v3-quoter.js +9 -10
  85. package/build/main/routers/legacy-router/bases.d.ts +1 -2
  86. package/build/main/routers/legacy-router/bases.js +7 -6
  87. package/build/main/routers/legacy-router/legacy-router.d.ts +1 -2
  88. package/build/main/routers/legacy-router/legacy-router.js +5 -5
  89. package/build/main/routers/router.d.ts +7 -4
  90. package/build/main/routers/router.js +8 -8
  91. package/build/main/tsconfig.tsbuildinfo +1 -1
  92. package/build/main/util/addresses.d.ts +0 -21
  93. package/build/main/util/addresses.js +6 -59
  94. package/build/main/util/chains.d.ts +2 -11
  95. package/build/main/util/chains.js +18 -37
  96. package/build/main/util/gas-factory-helpers.d.ts +2 -3
  97. package/build/main/util/gas-factory-helpers.js +10 -6
  98. package/build/main/util/methodParameters.d.ts +2 -2
  99. package/build/main/util/methodParameters.js +5 -5
  100. package/build/main/util/protocols.d.ts +2 -0
  101. package/build/main/util/protocols.js +14 -2
  102. package/build/main/util/routes.js +19 -10
  103. package/build/module/providers/caching/route/model/cached-routes.d.ts +2 -3
  104. package/build/module/providers/caching/route/model/cached-routes.js +4 -4
  105. package/build/module/providers/caching/route/route-caching-provider.d.ts +1 -2
  106. package/build/module/providers/caching/route/route-caching-provider.js +12 -7
  107. package/build/module/providers/caching-gas-provider.d.ts +1 -1
  108. package/build/module/providers/caching-gas-provider.js +1 -1
  109. package/build/module/providers/caching-token-list-provider.d.ts +1 -2
  110. package/build/module/providers/caching-token-list-provider.js +1 -2
  111. package/build/module/providers/caching-token-provider.d.ts +1 -2
  112. package/build/module/providers/caching-token-provider.js +8 -7
  113. package/build/module/providers/eth-estimate-gas-provider.d.ts +1 -1
  114. package/build/module/providers/eth-estimate-gas-provider.js +1 -1
  115. package/build/module/providers/multicall-uniswap-provider.d.ts +1 -1
  116. package/build/module/providers/multicall-uniswap-provider.js +3 -3
  117. package/build/module/providers/on-chain-gas-price-provider.d.ts +1 -1
  118. package/build/module/providers/on-chain-quote-provider.d.ts +1 -1
  119. package/build/module/providers/on-chain-quote-provider.js +27 -16
  120. package/build/module/providers/simulation-provider.d.ts +2 -2
  121. package/build/module/providers/simulation-provider.js +6 -6
  122. package/build/module/providers/swap-router-provider.d.ts +1 -2
  123. package/build/module/providers/swap-router-provider.js +3 -2
  124. package/build/module/providers/tenderly-simulation-provider.d.ts +1 -1
  125. package/build/module/providers/tenderly-simulation-provider.js +8 -7
  126. package/build/module/providers/token-provider.d.ts +9 -14
  127. package/build/module/providers/token-provider.js +20 -33
  128. package/build/module/providers/token-validator-provider.d.ts +1 -2
  129. package/build/module/providers/token-validator-provider.js +4 -3
  130. package/build/module/providers/uri-subgraph-provider.d.ts +1 -1
  131. package/build/module/providers/uri-subgraph-provider.js +1 -1
  132. package/build/module/providers/v2/caching-pool-provider.d.ts +5 -3
  133. package/build/module/providers/v2/caching-pool-provider.js +5 -3
  134. package/build/module/providers/v2/caching-subgraph-provider.d.ts +1 -1
  135. package/build/module/providers/v2/pool-provider.d.ts +13 -4
  136. package/build/module/providers/v2/pool-provider.js +12 -10
  137. package/build/module/providers/v2/quote-provider.js +2 -2
  138. package/build/module/providers/v2/static-subgraph-provider.d.ts +1 -2
  139. package/build/module/providers/v2/static-subgraph-provider.js +8 -20
  140. package/build/module/providers/v2/subgraph-provider.d.ts +1 -2
  141. package/build/module/providers/v2/subgraph-provider.js +1 -1
  142. package/build/module/providers/v2-fathom/constants.d.ts +2 -0
  143. package/build/module/providers/v2-fathom/constants.js +3 -0
  144. package/build/module/providers/v2-fathom/static-subgraph-provider.d.ts +22 -0
  145. package/build/module/providers/v2-fathom/static-subgraph-provider.js +162 -0
  146. package/build/module/providers/v2-fathom/subgraph-provider.d.ts +34 -0
  147. package/build/module/providers/v2-fathom/subgraph-provider.js +131 -0
  148. package/build/module/providers/v2-fathom/utils.d.ts +2 -0
  149. package/build/module/providers/v2-fathom/utils.js +10 -0
  150. package/build/module/providers/v3/caching-pool-provider.d.ts +5 -3
  151. package/build/module/providers/v3/caching-pool-provider.js +5 -3
  152. package/build/module/providers/v3/caching-subgraph-provider.d.ts +1 -1
  153. package/build/module/providers/v3/pool-provider.d.ts +5 -3
  154. package/build/module/providers/v3/pool-provider.js +14 -8
  155. package/build/module/providers/v3/static-subgraph-provider-v3-uni.d.ts +29 -0
  156. package/build/module/providers/v3/static-subgraph-provider-v3-uni.js +202 -0
  157. package/build/module/providers/v3/static-subgraph-provider.d.ts +1 -2
  158. package/build/module/providers/v3/static-subgraph-provider.js +42 -90
  159. package/build/module/providers/v3/subgraph-provider.d.ts +1 -2
  160. package/build/module/providers/v3/subgraph-provider.js +2 -2
  161. package/build/module/routers/alpha-router/alpha-router.d.ts +25 -6
  162. package/build/module/routers/alpha-router/alpha-router.js +102 -40
  163. package/build/module/routers/alpha-router/config.d.ts +1 -1
  164. package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +9 -7
  165. package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +8 -8
  166. package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +1 -2
  167. package/build/module/routers/alpha-router/functions/best-swap-route.js +1 -1
  168. package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +4 -3
  169. package/build/module/routers/alpha-router/functions/compute-all-routes.js +6 -6
  170. package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +7 -5
  171. package/build/module/routers/alpha-router/functions/get-candidate-pools.js +21 -19
  172. package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +1 -2
  173. package/build/module/routers/alpha-router/gas-models/gas-model.js +3 -3
  174. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +4 -4
  175. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +14 -13
  176. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.d.ts +1 -1
  177. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.js +8 -8
  178. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +5 -6
  179. package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +5 -3
  180. package/build/module/routers/alpha-router/quoters/base-quoter.js +3 -2
  181. package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +4 -3
  182. package/build/module/routers/alpha-router/quoters/mixed-quoter.js +81 -15
  183. package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +4 -3
  184. package/build/module/routers/alpha-router/quoters/v2-quoter.js +9 -4
  185. package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +5 -4
  186. package/build/module/routers/alpha-router/quoters/v3-quoter.js +9 -10
  187. package/build/module/routers/legacy-router/bases.d.ts +1 -2
  188. package/build/module/routers/legacy-router/bases.js +8 -7
  189. package/build/module/routers/legacy-router/legacy-router.d.ts +1 -2
  190. package/build/module/routers/legacy-router/legacy-router.js +6 -6
  191. package/build/module/routers/router.d.ts +7 -4
  192. package/build/module/routers/router.js +8 -8
  193. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  194. package/build/module/util/addresses.d.ts +0 -21
  195. package/build/module/util/addresses.js +3 -66
  196. package/build/module/util/chains.d.ts +2 -11
  197. package/build/module/util/chains.js +13 -32
  198. package/build/module/util/gas-factory-helpers.d.ts +2 -3
  199. package/build/module/util/gas-factory-helpers.js +12 -8
  200. package/build/module/util/methodParameters.d.ts +2 -2
  201. package/build/module/util/methodParameters.js +7 -7
  202. package/build/module/util/protocols.d.ts +2 -0
  203. package/build/module/util/protocols.js +11 -1
  204. package/build/module/util/routes.js +20 -11
  205. package/package.json +1 -1
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.V2SubgraphProvider = void 0;
7
+ const async_retry_1 = __importDefault(require("async-retry"));
8
+ const await_timeout_1 = __importDefault(require("await-timeout"));
9
+ const graphql_request_1 = require("graphql-request");
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ const log_1 = require("../../util/log");
12
+ const threshold = 0.025;
13
+ const PAGE_SIZE = 1000; // 1k is max possible query size from subgraph.
14
+ class V2SubgraphProvider {
15
+ constructor(chainId, subgraphUrl, retries = 2, timeout = 360000, rollback = true, pageSize = PAGE_SIZE) {
16
+ this.chainId = chainId;
17
+ this.subgraphUrl = subgraphUrl;
18
+ this.retries = retries;
19
+ this.timeout = timeout;
20
+ this.rollback = rollback;
21
+ this.pageSize = pageSize;
22
+ if (!subgraphUrl) {
23
+ throw new Error(`No subgraph url for chain id: ${this.chainId}`);
24
+ }
25
+ this.client = new graphql_request_1.GraphQLClient(this.subgraphUrl);
26
+ }
27
+ async getPools(_tokenIn, _tokenOut, providerConfig) {
28
+ let blockNumber = (providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber)
29
+ ? await providerConfig.blockNumber
30
+ : undefined;
31
+ // Due to limitations with the Subgraph API this is the only way to parameterize the query.
32
+ const query2 = (0, graphql_request_1.gql) `
33
+ query getPools($pageSize: Int!, $id: String) {
34
+ pairs(
35
+ first: $pageSize
36
+ ${blockNumber ? `block: { number: ${blockNumber} }` : ``}
37
+ where: { id_gt: $id }
38
+ ) {
39
+ id
40
+ token0 { id, symbol }
41
+ token1 { id, symbol }
42
+ totalSupply
43
+ trackedReserveETH
44
+ reserveUSD
45
+ }
46
+ }
47
+ `;
48
+ let pools = [];
49
+ log_1.log.info(`Getting V2 pools from the subgraph with page size ${this.pageSize}${(providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber)
50
+ ? ` as of block ${providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber}`
51
+ : ''}.`);
52
+ await (0, async_retry_1.default)(async () => {
53
+ const timeout = new await_timeout_1.default();
54
+ const getPools = async () => {
55
+ let lastId = '';
56
+ let pairs = [];
57
+ let pairsPage = [];
58
+ do {
59
+ await (0, async_retry_1.default)(async () => {
60
+ const poolsResult = await this.client.request(query2, {
61
+ pageSize: this.pageSize,
62
+ id: lastId,
63
+ });
64
+ pairsPage = poolsResult.pairs;
65
+ pairs = pairs.concat(pairsPage);
66
+ lastId = pairs[pairs.length - 1].id;
67
+ }, {
68
+ retries: this.retries,
69
+ onRetry: (err, retry) => {
70
+ pools = [];
71
+ log_1.log.info({ err }, `Failed request for page of pools from subgraph. Retry attempt: ${retry}`);
72
+ },
73
+ });
74
+ } while (pairsPage.length > 0);
75
+ return pairs;
76
+ };
77
+ /* eslint-disable no-useless-catch */
78
+ try {
79
+ const getPoolsPromise = getPools();
80
+ const timerPromise = timeout.set(this.timeout).then(() => {
81
+ throw new Error(`Timed out getting pools from subgraph: ${this.timeout}`);
82
+ });
83
+ pools = await Promise.race([getPoolsPromise, timerPromise]);
84
+ return;
85
+ }
86
+ catch (err) {
87
+ throw err;
88
+ }
89
+ finally {
90
+ timeout.clear();
91
+ }
92
+ /* eslint-enable no-useless-catch */
93
+ }, {
94
+ retries: this.retries,
95
+ onRetry: (err, retry) => {
96
+ if (this.rollback &&
97
+ blockNumber &&
98
+ lodash_1.default.includes(err.message, 'indexed up to')) {
99
+ blockNumber = blockNumber - 10;
100
+ log_1.log.info(`Detected subgraph indexing error. Rolled back block number to: ${blockNumber}`);
101
+ }
102
+ pools = [];
103
+ log_1.log.info({ err }, `Failed to get pools from subgraph. Retry attempt: ${retry}`);
104
+ },
105
+ });
106
+ // Filter pools that have tracked reserve ETH less than threshold.
107
+ // trackedReserveETH filters pools that do not involve a pool from this allowlist:
108
+ // https://github.com/Uniswap/v2-subgraph/blob/7c82235cad7aee4cfce8ea82f0030af3d224833e/src/mappings/pricing.ts#L43
109
+ // Which helps filter pools with manipulated prices/liquidity.
110
+ // TODO: Remove. Temporary fix to ensure tokens without trackedReserveETH are in the list.
111
+ const FEI = '0x956f47f50a910163d8bf957cf5846d573e7f87ca';
112
+ const poolsSanitized = pools
113
+ .filter((pool) => {
114
+ return (pool.token0.id == FEI ||
115
+ pool.token1.id == FEI ||
116
+ parseFloat(pool.trackedReserveETH) > threshold);
117
+ })
118
+ .map((pool) => {
119
+ return Object.assign(Object.assign({}, pool), { id: pool.id.toLowerCase(), token0: {
120
+ id: pool.token0.id.toLowerCase(),
121
+ }, token1: {
122
+ id: pool.token1.id.toLowerCase(),
123
+ }, supply: parseFloat(pool.totalSupply), reserve: parseFloat(pool.trackedReserveETH), reserveUSD: parseFloat(pool.reserveUSD) });
124
+ });
125
+ log_1.log.info(`Got ${pools.length} V2 pools from the subgraph. ${poolsSanitized.length} after filtering`);
126
+ return poolsSanitized;
127
+ }
128
+ }
129
+ exports.V2SubgraphProvider = V2SubgraphProvider;
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZ3JhcGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3YyLWZhdGhvbS9zdWJncmFwaC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSw4REFBZ0M7QUFDaEMsa0VBQW9DO0FBQ3BDLHFEQUFxRDtBQUNyRCxvREFBdUI7QUFFdkIsd0NBQXFDO0FBK0JyQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFFeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsK0NBQStDO0FBZ0J2RSxNQUFhLGtCQUFrQjtJQUc3QixZQUNVLE9BQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLFVBQVUsQ0FBQyxFQUNYLFVBQVUsTUFBTSxFQUNoQixXQUFXLElBQUksRUFDZixXQUFXLFNBQVM7UUFMcEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFJO1FBQ1gsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFPO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUU1QixJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLCtCQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUNuQixRQUFnQixFQUNoQixTQUFpQixFQUNqQixjQUErQjtRQUUvQixJQUFJLFdBQVcsR0FBRyxDQUFBLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxXQUFXO1lBQzNDLENBQUMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxXQUFXO1lBQ2xDLENBQUMs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
@@ -0,0 +1,2 @@
1
+ import { Token } from '@x-swap-protocol/sdk-core';
2
+ export declare const getFathomPoolAddress: (tokenA: Token, tokenB: Token) => string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFathomPoolAddress = void 0;
4
+ const address_1 = require("@ethersproject/address");
5
+ const solidity_1 = require("@ethersproject/solidity");
6
+ const constants_1 = require("./constants");
7
+ const getFathomPoolAddress = (tokenA, tokenB) => {
8
+ const [token0, token1] = tokenA.sortsBefore(tokenB)
9
+ ? [tokenA, tokenB]
10
+ : [tokenB, tokenA];
11
+ return (0, address_1.getCreate2Address)(constants_1.FATHOM_FACTORY_ADDRESS, (0, solidity_1.keccak256)(['bytes'], [(0, solidity_1.pack)(['address', 'address'], [token0.address, token1.address])]), constants_1.FATHOM_INIT_CODE_HASH);
12
+ };
13
+ exports.getFathomPoolAddress = getFathomPoolAddress;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3YyLWZhdGhvbS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBMkQ7QUFDM0Qsc0RBQTBEO0FBRzFELDJDQUE0RTtBQUVyRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsTUFBYSxFQUFFLE1BQWEsRUFBRSxFQUFFO0lBQ25FLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFckIsT0FBTyxJQUFBLDJCQUFpQixFQUN0QixrQ0FBc0IsRUFDdEIsSUFBQSxvQkFBUyxFQUNQLENBQUMsT0FBTyxDQUFDLEVBQ1QsQ0FBQyxJQUFBLGVBQUksRUFBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDakUsRUFDRCxpQ0FBcUIsQ0FDdEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWJXLFFBQUEsb0JBQW9CLHdCQWEvQiJ9
@@ -1,6 +1,6 @@
1
- import { Token } from '@x-swap-protocol/sdk-core';
1
+ import { Protocol } from '@x-swap-protocol/router-sdk';
2
+ import { ChainId, Token } from '@x-swap-protocol/sdk-core';
2
3
  import { FeeAmount, Pool } from '@x-swap-protocol/v3-sdk';
3
- import { ChainId } from '../../util/chains';
4
4
  import { ICache } from './../cache';
5
5
  import { ProviderConfig } from './../provider';
6
6
  import { IV3PoolProvider, V3PoolAccessor } from './pool-provider';
@@ -13,17 +13,19 @@ import { IV3PoolProvider, V3PoolAccessor } from './pool-provider';
13
13
  * @class CachingV3PoolProvider
14
14
  */
15
15
  export declare class CachingV3PoolProvider implements IV3PoolProvider {
16
+ protected protocol: Protocol;
16
17
  protected chainId: ChainId;
17
18
  protected poolProvider: IV3PoolProvider;
18
19
  private cache;
19
20
  private POOL_KEY;
20
21
  /**
21
22
  * Creates an instance of CachingV3PoolProvider.
23
+ * @param protocol Protocol V3 or UNI_V3
22
24
  * @param chainId The chain id to use.
23
25
  * @param poolProvider The provider to use to get the pools when not in the cache.
24
26
  * @param cache Cache instance to hold cached pools.
25
27
  */
26
- constructor(chainId: ChainId, poolProvider: IV3PoolProvider, cache: ICache<Pool>);
28
+ constructor(protocol: Protocol, chainId: ChainId, poolProvider: IV3PoolProvider, cache: ICache<Pool>);
27
29
  getPools(tokenPairs: [Token, Token, FeeAmount][], providerConfig?: ProviderConfig): Promise<V3PoolAccessor>;
28
30
  getPoolAddress(tokenA: Token, tokenB: Token, feeAmount: FeeAmount): {
29
31
  poolAddress: string;
@@ -17,15 +17,17 @@ const log_1 = require("../../util/log");
17
17
  class CachingV3PoolProvider {
18
18
  /**
19
19
  * Creates an instance of CachingV3PoolProvider.
20
+ * @param protocol Protocol V3 or UNI_V3
20
21
  * @param chainId The chain id to use.
21
22
  * @param poolProvider The provider to use to get the pools when not in the cache.
22
23
  * @param cache Cache instance to hold cached pools.
23
24
  */
24
- constructor(chainId, poolProvider, cache) {
25
+ constructor(protocol, chainId, poolProvider, cache) {
26
+ this.protocol = protocol;
25
27
  this.chainId = chainId;
26
28
  this.poolProvider = poolProvider;
27
29
  this.cache = cache;
28
- this.POOL_KEY = (chainId, address) => `pool-${chainId}-${address}`;
30
+ this.POOL_KEY = (chainId, address) => `pool-${this.protocol}-${chainId}-${address}`;
29
31
  }
30
32
  async getPools(tokenPairs, providerConfig) {
31
33
  const poolAddressSet = new Set();
@@ -74,4 +76,4 @@ class CachingV3PoolProvider {
74
76
  }
75
77
  }
76
78
  exports.CachingV3PoolProvider = CachingV3PoolProvider;
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1wb29sLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy92My9jYWNoaW5nLXBvb2wtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsb0RBQXVCO0FBR3ZCLHdDQUFxQztBQU1yQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxxQkFBcUI7SUFJaEM7Ozs7O09BS0c7SUFDSCxZQUNZLE9BQWdCLEVBQ2hCLFlBQTZCLEVBQy9CLEtBQW1CO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFackIsYUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsRUFBRSxDQUN2RCxRQUFRLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVk1QixDQUFDO0lBRUcsS0FBSyxDQUFDLFFBQVEsQ0FDbkIsVUFBdUMsRUFDdkMsY0FBK0I7UUFFL0IsTUFBTSxjQUFjLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDdEQsTUFBTSxvQkFBb0IsR0FBcUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sbUJBQW1CLEdBQWEsRUFBRSxDQUFDO1FBQ3pDLE1BQU0saUJBQWlCLEdBQW9DLEVBQUUsQ0FBQztRQUU5RCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtZQUNwRCxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN6RCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsQ0FDVixDQUFDO1lBRUYsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxTQUFTO2FBQ1Y7WUFFRCxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcs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
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1wb29sLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy92My9jYWNoaW5nLXBvb2wtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0Esb0RBQXVCO0FBRXZCLHdDQUFxQztBQU1yQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxxQkFBcUI7SUFJaEM7Ozs7OztPQU1HO0lBQ0gsWUFDWSxRQUFrQixFQUNsQixPQUFnQixFQUNoQixZQUE2QixFQUMvQixLQUFtQjtRQUhqQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFkckIsYUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsRUFBRSxDQUN2RCxRQUFRLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBYzdDLENBQUM7SUFFRyxLQUFLLENBQUMsUUFBUSxDQUNuQixVQUF1QyxFQUN2QyxjQUErQjtRQUUvQixNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0RCxNQUFNLG9CQUFvQixHQUFxQyxFQUFFLENBQUM7UUFDbEUsTUFBTSxtQkFBbUIsR0FBYSxFQUFFLENBQUM7UUFDekMsTUFBTSxpQkFBaUIsR0FBb0MsRUFBRSxDQUFDO1FBRTlELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksVUFBVSxFQUFFO1lBQ3BELE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3pELE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxDQUNWLENBQUM7WUFFRixJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FB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
@@ -1,4 +1,4 @@
1
- import { ChainId } from '../../util/chains';
1
+ import { ChainId } from '@x-swap-protocol/sdk-core';
2
2
  import { ICache } from './../cache';
3
3
  import { IV3SubgraphProvider, V3SubgraphPool } from './subgraph-provider';
4
4
  /**
@@ -1,7 +1,7 @@
1
- import { Token } from '@x-swap-protocol/sdk-core';
1
+ import { FactoryConfig, Token } from '@x-swap-protocol/sdk-core';
2
+ import { ChainId } from '@x-swap-protocol/sdk-core';
2
3
  import { FeeAmount, Pool } from '@x-swap-protocol/v3-sdk';
3
4
  import { Options as RetryOptions } from 'async-retry';
4
- import { ChainId } from '../../util';
5
5
  import { IMulticallProvider } from '../multicall-provider';
6
6
  import { ProviderConfig } from '../provider';
7
7
  /**
@@ -42,15 +42,17 @@ export type V3PoolRetryOptions = RetryOptions;
42
42
  export declare class V3PoolProvider implements IV3PoolProvider {
43
43
  protected chainId: ChainId;
44
44
  protected multicall2Provider: IMulticallProvider;
45
+ protected factory?: FactoryConfig | undefined;
45
46
  protected retryOptions: V3PoolRetryOptions;
46
47
  private POOL_ADDRESS_CACHE;
47
48
  /**
48
49
  * Creates an instance of V3PoolProvider.
49
50
  * @param chainId The chain id to use.
50
51
  * @param multicall2Provider The multicall provider to use to get the pools.
52
+ * @param {FactoryConfig} [factory] specific factory.
51
53
  * @param retryOptions The retry options for each call to the multicall.
52
54
  */
53
- constructor(chainId: ChainId, multicall2Provider: IMulticallProvider, retryOptions?: V3PoolRetryOptions);
55
+ constructor(chainId: ChainId, multicall2Provider: IMulticallProvider, factory?: FactoryConfig | undefined, retryOptions?: V3PoolRetryOptions);
54
56
  getPools(tokenPairs: [Token, Token, FeeAmount][], providerConfig?: ProviderConfig): Promise<V3PoolAccessor>;
55
57
  getPoolAddress(tokenA: Token, tokenB: Token, feeAmount: FeeAmount): {
56
58
  poolAddress: string;
@@ -4,28 +4,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.V3PoolProvider = void 0;
7
+ const sdk_core_1 = require("@x-swap-protocol/sdk-core");
7
8
  const v3_sdk_1 = require("@x-swap-protocol/v3-sdk");
9
+ const v3_sdk_2 = require("@x-swap-protocol/v3-sdk");
8
10
  const async_retry_1 = __importDefault(require("async-retry"));
9
11
  const lodash_1 = __importDefault(require("lodash"));
10
12
  const IUniswapV3PoolState__factory_1 = require("../../types/v3/factories/IUniswapV3PoolState__factory");
11
- const addresses_1 = require("../../util/addresses");
12
13
  const log_1 = require("../../util/log");
13
14
  const routes_1 = require("../../util/routes");
14
- const addresses_2 = require("../../util/addresses");
15
15
  class V3PoolProvider {
16
16
  /**
17
17
  * Creates an instance of V3PoolProvider.
18
18
  * @param chainId The chain id to use.
19
19
  * @param multicall2Provider The multicall provider to use to get the pools.
20
+ * @param {FactoryConfig} [factory] specific factory.
20
21
  * @param retryOptions The retry options for each call to the multicall.
21
22
  */
22
- constructor(chainId, multicall2Provider, retryOptions = {
23
+ constructor(chainId, multicall2Provider, factory, retryOptions = {
23
24
  retries: 2,
24
25
  minTimeout: 50,
25
26
  maxTimeout: 500,
26
27
  }) {
27
28
  this.chainId = chainId;
28
29
  this.multicall2Provider = multicall2Provider;
30
+ this.factory = factory;
29
31
  this.retryOptions = retryOptions;
30
32
  // Computing pool addresses is slow as it requires hashing, encoding etc.
31
33
  // Addresses never change so can always be cached.
@@ -69,7 +71,7 @@ class V3PoolProvider {
69
71
  const [token0, token1, fee] = sortedTokenPairs[i];
70
72
  const slot0 = slot0Result.result;
71
73
  const liquidity = liquidityResult.result[0];
72
- const pool = new v3_sdk_1.Pool(token0, token1, fee, slot0.sqrtPriceX96.toString(), liquidity.toString(), slot0.tick);
74
+ const pool = new v3_sdk_1.Pool(token0, token1, fee, slot0.sqrtPriceX96.toString(), liquidity.toString(), slot0.tick, undefined, this.factory);
73
75
  const poolAddress = sortedPoolAddresses[i];
74
76
  poolAddressToPool[poolAddress] = pool;
75
77
  }
@@ -93,17 +95,21 @@ class V3PoolProvider {
93
95
  const [token0, token1] = tokenA.sortsBefore(tokenB)
94
96
  ? [tokenA, tokenB]
95
97
  : [tokenB, tokenA];
96
- const cacheKey = `${this.chainId}/${token0.address}/${token1.address}/${feeAmount}`;
98
+ const cacheKey = `${this.chainId}/${this.factory ? 'UniV3' : 'XSwap'}/${token0.address}/${token1.address}/${feeAmount}`;
97
99
  const cachedAddress = this.POOL_ADDRESS_CACHE[cacheKey];
98
100
  if (cachedAddress) {
99
101
  return { poolAddress: cachedAddress, token0, token1 };
100
102
  }
101
103
  const poolAddress = (0, v3_sdk_1.computePoolAddress)({
102
- factoryAddress: addresses_1.V3_CORE_FACTORY_ADDRESSES[this.chainId],
104
+ factoryAddress: this.factory
105
+ ? this.factory.address
106
+ : sdk_core_1.V3_CORE_FACTORY_ADDRESSES[this.chainId],
103
107
  tokenA: token0,
104
108
  tokenB: token1,
105
109
  fee: feeAmount,
106
- initCodeHashManualOverride: addresses_2.POOL_INIT_CODE_HASH
110
+ initCodeHashManualOverride: this.factory
111
+ ? this.factory.initCode
112
+ : v3_sdk_2.POOL_INIT_CODE_HASH,
107
113
  });
108
114
  this.POOL_ADDRESS_CACHE[cacheKey] = poolAddress;
109
115
  return { poolAddress, token0, token1 };
@@ -122,4 +128,4 @@ class V3PoolProvider {
122
128
  }
123
129
  }
124
130
  exports.V3PoolProvider = V3PoolProvider;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjMvcG9vbC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxvREFBOEU7QUFDOUUsOERBQTZEO0FBQzdELG9EQUF1QjtBQUV2Qix3R0FBcUc7QUFFckcsb0RBQWlFO0FBQ2pFLHdDQUFxQztBQUNyQyw4Q0FBaUQ7QUFHakQsb0RBQTJEO0FBNEQzRCxNQUFhLGNBQWM7SUFLekI7Ozs7O09BS0c7SUFDSCxZQUNZLE9BQWdCLEVBQ2hCLGtCQUFzQyxFQUN0QyxlQUFtQztRQUMzQyxPQUFPLEVBQUUsQ0FBQztRQUNWLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLEdBQUc7S0FDaEI7UUFOUyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBSXJCO1FBakJILHlFQUF5RTtRQUN6RSxrREFBa0Q7UUFDMUMsdUJBQWtCLEdBQThCLEVBQUUsQ0FBQztJQWdCdkQsQ0FBQztJQUVFLEtBQUssQ0FBQyxRQUFRLENBQ25CLFVBQXVDLEVBQ3ZDLGNBQStCO1FBRS9CLE1BQU0sY0FBYyxHQUFnQixJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3RELE1BQU0sZ0JBQWdCLEdBQXFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLG1CQUFtQixHQUFhLEVBQUUsQ0FBQztRQUV6QyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7WUFFOUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDekQsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLENBQ1YsQ0FBQztZQUVG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
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjMvcG9vbC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSx3REFBK0U7QUFDL0Usb0RBQThFO0FBQzlFLG9EQUE4RDtBQUM5RCw4REFBNkQ7QUFDN0Qsb0RBQXVCO0FBRXZCLHdHQUFxRztBQUNyRyx3Q0FBcUM7QUFDckMsOENBQWlEO0FBOERqRCxNQUFhLGNBQWM7SUFLekI7Ozs7OztPQU1HO0lBQ0gsWUFDWSxPQUFnQixFQUNoQixrQkFBc0MsRUFDdEMsT0FBdUIsRUFDdkIsZUFBbUM7UUFDM0MsT0FBTyxFQUFFLENBQUM7UUFDVixVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxHQUFHO0tBQ2hCO1FBUFMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUlyQjtRQW5CSCx5RUFBeUU7UUFDekUsa0RBQWtEO1FBQzFDLHVCQUFrQixHQUE4QixFQUFFLENBQUM7SUFrQnhELENBQUM7SUFFRyxLQUFLLENBQUMsUUFBUSxDQUNuQixVQUF1QyxFQUN2QyxjQUErQjtRQUUvQixNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0RCxNQUFNLGdCQUFnQixHQUFxQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxtQkFBbUIsR0FBYSxFQUFFLENBQUM7UUFFekMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7WUFDbEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBRTlDLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3pE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
@@ -0,0 +1,29 @@
1
+ import { ChainId, Token } from '@x-swap-protocol/sdk-core';
2
+ import { FeeAmount } from '@x-swap-protocol/v3-sdk';
3
+ import { IV3PoolProvider } from './pool-provider';
4
+ import { IV3SubgraphProvider, V3SubgraphPool } from './subgraph-provider';
5
+ export declare const ADDITIONAL_BASES: {
6
+ [chainId in ChainId]: {
7
+ [tokenAddress: string]: [Token, FeeAmount][];
8
+ };
9
+ };
10
+ export declare const Uni_V3_XDC_ADDITIONAL_BASES: {
11
+ [tokenAddress: string]: [Token, FeeAmount][];
12
+ };
13
+ /**
14
+ * Provider that uses a hardcoded list of V3 pools to generate a list of subgraph pools.
15
+ *
16
+ * Since the pools are hardcoded and the data does not come from the Subgraph, the TVL values
17
+ * are dummys and should not be depended on.
18
+ *
19
+ * Useful for instances where other data sources are unavailable. E.g. Subgraph not available.
20
+ *
21
+ * @export
22
+ * @class StaticV3SubgraphProvider
23
+ */
24
+ export declare class StaticV3UniSubgraphProvider implements IV3SubgraphProvider {
25
+ private chainId;
26
+ private poolProvider;
27
+ constructor(chainId: ChainId, poolProvider: IV3PoolProvider);
28
+ getPools(tokenIn?: Token, tokenOut?: Token): Promise<V3SubgraphPool[]>;
29
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StaticV3UniSubgraphProvider = exports.Uni_V3_XDC_ADDITIONAL_BASES = exports.ADDITIONAL_BASES = void 0;
7
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
8
+ const sdk_core_1 = require("@x-swap-protocol/sdk-core");
9
+ const v3_sdk_1 = require("@x-swap-protocol/v3-sdk");
10
+ const jsbi_1 = __importDefault(require("jsbi"));
11
+ const lodash_1 = __importDefault(require("lodash"));
12
+ const amounts_1 = require("../../util/amounts");
13
+ const log_1 = require("../../util/log");
14
+ const token_provider_1 = require("../token-provider");
15
+ const BASES_TO_CHECK_TRADES_AGAINST = {
16
+ [sdk_core_1.ChainId.XDC]: [sdk_core_1.WETH9[sdk_core_1.ChainId.XDC], token_provider_1.USDC_XDC],
17
+ [sdk_core_1.ChainId.APOTHEM]: [sdk_core_1.WETH9[sdk_core_1.ChainId.APOTHEM]],
18
+ };
19
+ exports.ADDITIONAL_BASES = {
20
+ [sdk_core_1.ChainId.XDC]: {
21
+ [sdk_core_1.WETH9[sdk_core_1.ChainId.XDC].address]: [
22
+ [token_provider_1.USDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
23
+ [token_provider_1.GAMA_XDC, v3_sdk_1.FeeAmount.LOWEST],
24
+ [token_provider_1.stgUSDT_XDC, v3_sdk_1.FeeAmount.MEDIUM],
25
+ [token_provider_1.SRX_XDC, v3_sdk_1.FeeAmount.MEDIUM],
26
+ [token_provider_1.CGO_XDC, v3_sdk_1.FeeAmount.MEDIUM],
27
+ [token_provider_1.BBB_XDC, v3_sdk_1.FeeAmount.MEDIUM],
28
+ [token_provider_1.SRX_XDC, v3_sdk_1.FeeAmount.HIGH],
29
+ ],
30
+ [token_provider_1.USDC_XDC.address]: [
31
+ [token_provider_1.CGO_XDC, v3_sdk_1.FeeAmount.MEDIUM],
32
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
33
+ [token_provider_1.SRX_XDC, v3_sdk_1.FeeAmount.MEDIUM],
34
+ [token_provider_1.stgUSDT_XDC, v3_sdk_1.FeeAmount.LOW],
35
+ ],
36
+ [token_provider_1.GAMA_XDC.address]: [
37
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.LOWEST],
38
+ [token_provider_1.USDC_XDC, v3_sdk_1.FeeAmount.LOWEST],
39
+ ],
40
+ [token_provider_1.stgUSDT_XDC.address]: [
41
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
42
+ [token_provider_1.USDC_XDC, v3_sdk_1.FeeAmount.LOW],
43
+ ],
44
+ [token_provider_1.CGO_XDC.address]: [
45
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
46
+ [token_provider_1.USDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
47
+ ],
48
+ [token_provider_1.BBB_XDC.address]: [[token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.MEDIUM]],
49
+ [token_provider_1.SRX_XDC.address]: [
50
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
51
+ [token_provider_1.USDC_XDC, v3_sdk_1.FeeAmount.MEDIUM],
52
+ [token_provider_1.WXDC_XDC, v3_sdk_1.FeeAmount.HIGH],
53
+ ],
54
+ },
55
+ [sdk_core_1.ChainId.APOTHEM]: {},
56
+ };
57
+ exports.Uni_V3_XDC_ADDITIONAL_BASES = exports.ADDITIONAL_BASES[sdk_core_1.ChainId.XDC];
58
+ let paths = [];
59
+ const recFinder = (path, used, lastToken, dest, hops) => {
60
+ const hop = path.length;
61
+ // if (hop > 0) {
62
+ // lastToken = path[hop - 1]![1];
63
+ // }
64
+ if (hop < hops) {
65
+ if (!lastToken) {
66
+ return;
67
+ }
68
+ const additional = exports.Uni_V3_XDC_ADDITIONAL_BASES[lastToken.address];
69
+ if (additional) {
70
+ for (const ad of additional) {
71
+ const adToken = ad;
72
+ const newPair = [lastToken, ...adToken];
73
+ const newPath = [...path, newPair];
74
+ if (adToken[0].address === dest.address) {
75
+ paths.push(newPath);
76
+ continue;
77
+ }
78
+ if (!used[adToken[0].address]) {
79
+ recFinder(newPath, Object.assign(Object.assign({}, used), { [adToken[0].address]: true }), adToken[0], dest, hops);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ };
85
+ /**
86
+ * Provider that uses a hardcoded list of V3 pools to generate a list of subgraph pools.
87
+ *
88
+ * Since the pools are hardcoded and the data does not come from the Subgraph, the TVL values
89
+ * are dummys and should not be depended on.
90
+ *
91
+ * Useful for instances where other data sources are unavailable. E.g. Subgraph not available.
92
+ *
93
+ * @export
94
+ * @class StaticV3SubgraphProvider
95
+ */
96
+ class StaticV3UniSubgraphProvider {
97
+ constructor(chainId, poolProvider) {
98
+ this.chainId = chainId;
99
+ this.poolProvider = poolProvider;
100
+ }
101
+ async getPools(tokenIn, tokenOut) {
102
+ paths = [];
103
+ log_1.log.info('In static subgraph provider for V3');
104
+ const bases = BASES_TO_CHECK_TRADES_AGAINST[this.chainId];
105
+ const basePairs = lodash_1.default.flatMap(bases, (base) => bases.map((otherBase) => [base, otherBase]));
106
+ let pairs = [];
107
+ if (tokenIn && tokenOut) {
108
+ const additionalIn = exports.ADDITIONAL_BASES[this.chainId][tokenIn.address];
109
+ const additionalOut = exports.ADDITIONAL_BASES[this.chainId][tokenOut.address];
110
+ if (!additionalIn || !additionalOut) {
111
+ basePairs.push([tokenIn, tokenOut]);
112
+ if (additionalIn) {
113
+ basePairs.push(...additionalIn.map((v) => [tokenIn, v[0]]));
114
+ }
115
+ else {
116
+ basePairs.push(...bases.map((base) => [tokenIn, base]));
117
+ }
118
+ if (additionalOut) {
119
+ basePairs.push(...additionalOut.map((v) => [tokenOut, v[0]]));
120
+ }
121
+ else {
122
+ basePairs.push(...bases.map((base) => [tokenOut, base]));
123
+ }
124
+ pairs = (0, lodash_1.default)(basePairs)
125
+ .filter((tokens) => Boolean(tokens[0] && tokens[1]))
126
+ .filter(([tokenA, tokenB]) => tokenA.address !== tokenB.address && !tokenA.equals(tokenB))
127
+ .flatMap(([tokenA, tokenB]) => {
128
+ const additionalA = exports.ADDITIONAL_BASES[this.chainId][tokenA.address];
129
+ // const additionalB = ADDITIONAL_BASES[this.chainId][tokenB.address];
130
+ if (additionalA) {
131
+ const additionalPool = additionalA.filter((v) => v[0].address.toLowerCase() === tokenB.address.toLowerCase());
132
+ const res = additionalPool.map((v) => {
133
+ return [tokenA, v[0], v[1]];
134
+ });
135
+ return res;
136
+ }
137
+ return [
138
+ [tokenA, tokenB, v3_sdk_1.FeeAmount.LOWEST],
139
+ [tokenA, tokenB, v3_sdk_1.FeeAmount.LOW],
140
+ [tokenA, tokenB, v3_sdk_1.FeeAmount.MEDIUM],
141
+ [tokenA, tokenB, v3_sdk_1.FeeAmount.HIGH],
142
+ ];
143
+ })
144
+ .value();
145
+ }
146
+ else {
147
+ recFinder([], { [tokenIn.address]: true }, tokenIn, tokenOut, 5);
148
+ // console.log(
149
+ // paths.map((path) =>
150
+ // path
151
+ // .map(
152
+ // (p) => `(${p[0].symbol} - ${p[1].symbol} : ${p[2] / 10000}% )`
153
+ // )
154
+ // .join(' --> ')
155
+ // )
156
+ // );
157
+ const uniquePairs = {};
158
+ paths.forEach((path) => {
159
+ path.forEach((pool) => {
160
+ const id = `${pool[0].address}-${pool[1].address}-${pool[2]}`;
161
+ uniquePairs[id] = pool;
162
+ });
163
+ });
164
+ const direct = tokenIn && tokenOut
165
+ ? [
166
+ [tokenIn, tokenOut, v3_sdk_1.FeeAmount.LOWEST],
167
+ [tokenIn, tokenOut, v3_sdk_1.FeeAmount.LOW],
168
+ [tokenIn, tokenOut, v3_sdk_1.FeeAmount.MEDIUM],
169
+ [tokenIn, tokenOut, v3_sdk_1.FeeAmount.HIGH],
170
+ ]
171
+ : [];
172
+ pairs = [...Object.values(uniquePairs), ...direct];
173
+ }
174
+ }
175
+ log_1.log.info(`V3-UNI Static subgraph provider about to get ${pairs.length} pools on-chain`);
176
+ const poolAccessor = await this.poolProvider.getPools(pairs);
177
+ const pools = poolAccessor.getAllPools();
178
+ const poolAddressSet = new Set();
179
+ const subgraphPools = (0, lodash_1.default)(pools)
180
+ .map((pool) => {
181
+ const { token0, token1, fee, liquidity } = pool;
182
+ const poolAddress = v3_sdk_1.Pool.getAddress(pool.token0, pool.token1, pool.fee, v3_sdk_1.UniV3Factory);
183
+ if (poolAddressSet.has(poolAddress)) {
184
+ return undefined;
185
+ }
186
+ poolAddressSet.add(poolAddress);
187
+ const liquidityNumber = jsbi_1.default.toNumber(liquidity);
188
+ return {
189
+ id: poolAddress,
190
+ feeTier: (0, amounts_1.unparseFeeAmount)(fee),
191
+ liquidity: liquidity.toString(),
192
+ token0: {
193
+ id: token0.address,
194
+ },
195
+ token1: {
196
+ id: token1.address,
197
+ },
198
+ // As a very rough proxy we just use liquidity for TVL.
199
+ tvlETH: liquidityNumber,
200
+ tvlUSD: liquidityNumber,
201
+ };
202
+ })
203
+ .compact()
204
+ .value();
205
+ return subgraphPools;
206
+ }
207
+ }
208
+ exports.StaticV3UniSubgraphProvider = StaticV3UniSubgraphProvider;
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXN1YmdyYXBoLXByb3ZpZGVyLXYzLXVuaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjMvc3RhdGljLXN1YmdyYXBoLXByb3ZpZGVyLXYzLXVuaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBNkQ7QUFDN0Qsd0RBQWtFO0FBQ2xFLG9EQUF3RTtBQUN4RSxnREFBd0I7QUFDeEIsb0RBQXVCO0FBRXZCLGdEQUFzRDtBQUN0RCx3Q0FBcUM7QUFDckMsc0RBUTJCO0FBUzNCLE1BQU0sNkJBQTZCLEdBQW1CO0lBQ3BELENBQUMsa0JBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGdCQUFLLENBQUMsa0JBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSx5QkFBUSxDQUFDO0lBQzdDLENBQUMsa0JBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGdCQUFLLENBQUMsa0JBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUM1QyxDQUFDO0FBRVcsUUFBQSxnQkFBZ0IsR0FFekI7SUFDRixDQUFDLGtCQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDYixDQUFDLGdCQUFLLENBQUMsa0JBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM1QixDQUFDLHlCQUFRLEVBQUUsa0JBQVMsQ0FBQyxNQUFNLENBQUM7WUFDNUIsQ0FBQyx5QkFBUSxFQUFFLGtCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzVCLENBQUMsNEJBQVcsRUFBRSxrQkFBUyxDQUFDLE1BQU0sQ0FBQztZQUMvQixDQUFDLHdCQUFPLEVBQUUsa0JBQVMsQ0FBQyxNQUFNLENBQUM7WUFDM0IsQ0FBQyx3QkFBTyxFQUFFLGtCQUFTLENBQUMsTUFBTSxDQUFDO1lBQzNCLENBQUMsd0JBQU8sRUFBRSxrQkFBUyxDQUFDLE1BQU0sQ0FBQztZQUMzQixDQUFDLHdCQUFPLEVBQUUsa0JBQVMsQ0FBQyxJ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
@@ -1,6 +1,5 @@
1
- import { Token } from '@x-swap-protocol/sdk-core';
1
+ import { ChainId, Token } from '@x-swap-protocol/sdk-core';
2
2
  import { FeeAmount } from '@x-swap-protocol/v3-sdk';
3
- import { ChainId } from '../../util/chains';
4
3
  import { IV3PoolProvider } from './pool-provider';
5
4
  import { IV3SubgraphProvider, V3SubgraphPool } from './subgraph-provider';
6
5
  export declare const ADDITIONAL_BASES: {