@paraswap/dex-lib 4.8.32 → 4.8.34-pancake-infinity.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/build/abi/pancakeswap-infinity/cl-pool-manager.json +80 -0
  2. package/build/dex/fluid-dex/scripts/measure-calc-time.d.ts +1 -0
  3. package/build/dex/fluid-dex/scripts/measure-calc-time.js +178 -0
  4. package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +1 -0
  5. package/build/dex/index.js +2 -0
  6. package/build/dex/index.js.map +1 -1
  7. package/build/dex/native/constants.d.ts +1 -0
  8. package/build/dex/native/constants.js +2 -1
  9. package/build/dex/native/constants.js.map +1 -1
  10. package/build/dex/native/native.js +1 -0
  11. package/build/dex/native/native.js.map +1 -1
  12. package/build/dex/pancakeswap-infinity/config.d.ts +3 -0
  13. package/build/dex/pancakeswap-infinity/config.js +14 -0
  14. package/build/dex/pancakeswap-infinity/config.js.map +1 -0
  15. package/build/dex/pancakeswap-infinity/encoder.d.ts +4 -0
  16. package/build/dex/pancakeswap-infinity/encoder.js +205 -0
  17. package/build/dex/pancakeswap-infinity/encoder.js.map +1 -0
  18. package/build/dex/pancakeswap-infinity/pancakeswap-infinity.d.ts +21 -0
  19. package/build/dex/pancakeswap-infinity/pancakeswap-infinity.js +102 -0
  20. package/build/dex/pancakeswap-infinity/pancakeswap-infinity.js.map +1 -0
  21. package/build/dex/pancakeswap-infinity/subgraph.d.ts +7 -0
  22. package/build/dex/pancakeswap-infinity/subgraph.js +64 -0
  23. package/build/dex/pancakeswap-infinity/subgraph.js.map +1 -0
  24. package/build/dex/pancakeswap-infinity/types.d.ts +31 -0
  25. package/build/dex/pancakeswap-infinity/types.js +3 -0
  26. package/build/dex/pancakeswap-infinity/types.js.map +1 -0
  27. package/build/dex/pancakeswap-v3/scripts/measure-calc-time.d.ts +1 -0
  28. package/build/dex/pancakeswap-v3/scripts/measure-calc-time.js +203 -0
  29. package/build/dex/pancakeswap-v3/scripts/measure-calc-time.js.map +1 -0
  30. package/build/dex/solidly-v3/contract-math/native-bridge.d.ts +26 -0
  31. package/build/dex/solidly-v3/contract-math/native-bridge.js +96 -0
  32. package/build/dex/solidly-v3/contract-math/native-bridge.js.map +1 -0
  33. package/build/dex/solidly-v3/scripts/measure-calc-time.d.ts +1 -0
  34. package/build/dex/solidly-v3/scripts/measure-calc-time.js +203 -0
  35. package/build/dex/solidly-v3/scripts/measure-calc-time.js.map +1 -0
  36. package/build/dex/uniswap-v3/contract-math/native-bridge.d.ts +52 -1
  37. package/build/dex/uniswap-v3/contract-math/native-bridge.js +27 -3
  38. package/build/dex/uniswap-v3/contract-math/native-bridge.js.map +1 -1
  39. package/build/dex/uniswap-v3/scripts/bench-e2e.d.ts +1 -0
  40. package/build/dex/uniswap-v3/scripts/bench-e2e.js +85 -0
  41. package/build/dex/uniswap-v3/scripts/bench-e2e.js.map +1 -0
  42. package/build/dex/uniswap-v3/scripts/bench-parallel.d.ts +1 -0
  43. package/build/dex/uniswap-v3/scripts/bench-parallel.js +192 -0
  44. package/build/dex/uniswap-v3/scripts/bench-parallel.js.map +1 -0
  45. package/build/dex/uniswap-v4/contract-math/native-bridge.d.ts +40 -0
  46. package/build/dex/uniswap-v4/contract-math/native-bridge.js +74 -0
  47. package/build/dex/uniswap-v4/contract-math/native-bridge.js.map +1 -0
  48. package/build/dex/uniswap-v4/scripts/test-rust-correctness.d.ts +1 -0
  49. package/build/dex/uniswap-v4/scripts/test-rust-correctness.js +167 -0
  50. package/build/dex/uniswap-v4/scripts/test-rust-correctness.js.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,205 @@
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.swapExactInputSingleCalldata = swapExactInputSingleCalldata;
7
+ exports.swapExactOutputSingleCalldata = swapExactOutputSingleCalldata;
8
+ const ethers_1 = require("ethers");
9
+ const abi_1 = require("@ethersproject/abi");
10
+ const constants_1 = require("@paraswap/core/build/constants");
11
+ const utils_1 = require("../../utils");
12
+ const constants_2 = require("../../constants");
13
+ const bigint_constants_1 = require("../../bigint-constants");
14
+ const router_abi_json_1 = __importDefault(require("../../abi/uniswap-v4/router.abi.json"));
15
+ const routerIface = new abi_1.Interface(router_abi_json_1.default);
16
+ // PancakeSwapInfinity PoolKey ABI tuple
17
+ // (address currency0, address currency1, address hooks, address poolManager, uint24 fee, bytes32 parameters)
18
+ const POOL_KEY_TUPLE = '(address,address,address,address,uint24,bytes32)';
19
+ var Commands;
20
+ (function (Commands) {
21
+ Commands[Commands["PERMIT2_TRANSFER_FROM"] = 2] = "PERMIT2_TRANSFER_FROM";
22
+ Commands[Commands["SWEEP"] = 4] = "SWEEP";
23
+ Commands[Commands["WRAP_ETH"] = 11] = "WRAP_ETH";
24
+ Commands[Commands["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
25
+ Commands[Commands["V4_SWAP"] = 16] = "V4_SWAP";
26
+ })(Commands || (Commands = {}));
27
+ var Actions;
28
+ (function (Actions) {
29
+ Actions[Actions["SWAP_EXACT_IN_SINGLE"] = 6] = "SWAP_EXACT_IN_SINGLE";
30
+ Actions[Actions["SWAP_EXACT_IN"] = 7] = "SWAP_EXACT_IN";
31
+ Actions[Actions["SWAP_EXACT_OUT_SINGLE"] = 8] = "SWAP_EXACT_OUT_SINGLE";
32
+ Actions[Actions["SWAP_EXACT_OUT"] = 9] = "SWAP_EXACT_OUT";
33
+ Actions[Actions["SETTLE"] = 11] = "SETTLE";
34
+ Actions[Actions["SETTLE_ALL"] = 12] = "SETTLE_ALL";
35
+ Actions[Actions["TAKE"] = 14] = "TAKE";
36
+ Actions[Actions["TAKE_ALL"] = 15] = "TAKE_ALL";
37
+ })(Actions || (Actions = {}));
38
+ var ActionConstants;
39
+ (function (ActionConstants) {
40
+ ActionConstants[ActionConstants["OPEN_DELTA"] = 0] = "OPEN_DELTA";
41
+ ActionConstants["CONTRACT_BALANCE"] = "57896044618658097711785492504343953926634992332820282019728792003956564819968";
42
+ ActionConstants["MSG_SENDER"] = "0x0000000000000000000000000000000000000001";
43
+ ActionConstants["ADDRESS_THIS"] = "0x0000000000000000000000000000000000000002";
44
+ })(ActionConstants || (ActionConstants = {}));
45
+ function encodeActions(actions) {
46
+ const types = actions.map(() => 'uint8');
47
+ return ethers_1.ethers.utils.solidityPack(types, actions);
48
+ }
49
+ function encodePoolKeyTuple(data) {
50
+ return [
51
+ data.poolKey.currency0,
52
+ data.poolKey.currency1,
53
+ data.poolKey.hooks,
54
+ data.poolKey.poolManager,
55
+ data.poolKey.fee,
56
+ data.poolKey.parameters,
57
+ ];
58
+ }
59
+ function getPoolCurrencies(data) {
60
+ const srcCurrency = data.zeroForOne
61
+ ? data.poolKey.currency0
62
+ : data.poolKey.currency1;
63
+ const destCurrency = data.zeroForOne
64
+ ? data.poolKey.currency1
65
+ : data.poolKey.currency0;
66
+ return { srcCurrency, destCurrency };
67
+ }
68
+ function isNativeCurrency(currency) {
69
+ return currency.toLowerCase() === constants_2.NULL_ADDRESS;
70
+ }
71
+ function isWethCurrency(currency, wethAddr) {
72
+ return currency.toLowerCase() === wethAddr;
73
+ }
74
+ function encodeSettle(srcToken, data, wethAddr) {
75
+ const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
76
+ const isWethSrc = srcToken.toLowerCase() === wethAddr;
77
+ const { srcCurrency } = getPoolCurrencies(data);
78
+ const isWethPool = isWethCurrency(srcCurrency, wethAddr);
79
+ const isEthPool = isNativeCurrency(srcCurrency);
80
+ const settleToken = isEthSrc && isWethPool
81
+ ? wethAddr
82
+ : (isEthSrc && isEthPool) || (isWethSrc && isEthPool)
83
+ ? constants_2.NULL_ADDRESS
84
+ : srcToken;
85
+ return ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256', 'bool'], [settleToken, ActionConstants.OPEN_DELTA, false]);
86
+ }
87
+ function encodeTake(destToken, data, recipient, wethAddr) {
88
+ const isEthDest = (0, utils_1.isETHAddress)(destToken);
89
+ const isWethDest = destToken.toLowerCase() === wethAddr;
90
+ const { destCurrency } = getPoolCurrencies(data);
91
+ const isWethPool = isWethCurrency(destCurrency, wethAddr);
92
+ const isEthPool = isNativeCurrency(destCurrency);
93
+ const takeToken = isEthDest && isWethPool
94
+ ? wethAddr
95
+ : (isWethDest && isEthPool) || (isEthDest && isEthPool)
96
+ ? constants_2.NULL_ADDRESS
97
+ : destToken;
98
+ const takeRecipient = (isEthDest && isWethPool) || (isWethDest && isEthPool)
99
+ ? ActionConstants.ADDRESS_THIS
100
+ : recipient;
101
+ return ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'address', 'uint256'], [takeToken, takeRecipient, ActionConstants.OPEN_DELTA]);
102
+ }
103
+ function encodeInputForExecute(srcToken, destToken, data, side, recipient, encodedActions, encodedActionValues, wethAddr) {
104
+ const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
105
+ const isEthDest = (0, utils_1.isETHAddress)(destToken);
106
+ const isWethSrc = srcToken.toLowerCase() === wethAddr;
107
+ const isWethDest = destToken.toLowerCase() === wethAddr;
108
+ const { srcCurrency, destCurrency } = getPoolCurrencies(data);
109
+ const isWethPoolForSrc = isWethCurrency(srcCurrency, wethAddr);
110
+ const isEthPoolForSrc = isNativeCurrency(srcCurrency);
111
+ const isWethPoolForDest = isWethCurrency(destCurrency, wethAddr);
112
+ const isEthPoolForDest = isNativeCurrency(destCurrency);
113
+ const input = ethers_1.ethers.utils.defaultAbiCoder.encode(['bytes', 'bytes[]'], [encodedActions, encodedActionValues]);
114
+ let types = ['uint8'];
115
+ let commands = [Commands.V4_SWAP];
116
+ let inputs = [input];
117
+ // Wrap ETH on Router for WETH pool
118
+ if (isEthSrc && isWethPoolForSrc) {
119
+ types.unshift('uint8');
120
+ commands.unshift(Commands.WRAP_ETH);
121
+ inputs.unshift(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, ActionConstants.CONTRACT_BALANCE]));
122
+ }
123
+ // Unwrap WETH on Router for native pool
124
+ if (isWethSrc && isEthPoolForSrc) {
125
+ types.unshift('uint8');
126
+ commands.unshift(Commands.UNWRAP_WETH);
127
+ inputs.unshift(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, 0]));
128
+ }
129
+ // Unwrap WETH on Router after swap for ETH dest + WETH pool
130
+ if (isEthDest && isWethPoolForDest) {
131
+ types.push('uint8');
132
+ commands.push(Commands.UNWRAP_WETH);
133
+ inputs.push(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [recipient, 0]));
134
+ }
135
+ // Wrap WETH on Router after swap for WETH dest + native pool
136
+ if (isWethDest && isEthPoolForDest) {
137
+ types.push('uint8');
138
+ commands.push(Commands.WRAP_ETH);
139
+ inputs.push(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [recipient, ActionConstants.CONTRACT_BALANCE]));
140
+ }
141
+ // Sweep src token leftovers after BUY
142
+ if (side === constants_1.SwapSide.BUY) {
143
+ if (isEthSrc && isWethPoolForSrc) {
144
+ types.push('uint8');
145
+ commands.push(Commands.UNWRAP_WETH);
146
+ inputs.push(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, 0]));
147
+ }
148
+ if (isWethSrc && isEthPoolForSrc) {
149
+ types.push('uint8');
150
+ commands.push(Commands.WRAP_ETH);
151
+ inputs.push(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'uint256'], [ActionConstants.ADDRESS_THIS, ActionConstants.CONTRACT_BALANCE]));
152
+ }
153
+ types.push('uint8');
154
+ commands.push(Commands.SWEEP);
155
+ inputs.push(ethers_1.ethers.utils.defaultAbiCoder.encode(['address', 'address', 'uint256'], [(0, utils_1.isETHAddress)(srcToken) ? constants_2.NULL_ADDRESS : srcToken, recipient, 0]));
156
+ }
157
+ const command = ethers_1.ethers.utils.solidityPack(types, commands);
158
+ return routerIface.encodeFunctionData('execute(bytes,bytes[])', [
159
+ command,
160
+ inputs,
161
+ ]);
162
+ }
163
+ function swapExactInputSingleCalldata(srcToken, destToken, data, amountIn, amountOutMinimum, recipient, weth) {
164
+ const actions = encodeActions([
165
+ Actions.SWAP_EXACT_IN_SINGLE,
166
+ Actions.SETTLE,
167
+ Actions.TAKE,
168
+ ]);
169
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
170
+ `tuple(${POOL_KEY_TUPLE} poolKey, bool zeroForOne, uint128 amountIn, uint128 amountOutMinimum, bytes hookData)`,
171
+ ], [
172
+ [
173
+ encodePoolKeyTuple(data),
174
+ data.zeroForOne,
175
+ amountIn,
176
+ amountOutMinimum,
177
+ data.hookData ?? '0x',
178
+ ],
179
+ ]);
180
+ const settle = encodeSettle(srcToken, data, weth);
181
+ const take = encodeTake(destToken, data, recipient, weth);
182
+ return encodeInputForExecute(srcToken, destToken, data, constants_1.SwapSide.SELL, recipient, actions, [swap, settle, take], weth);
183
+ }
184
+ function swapExactOutputSingleCalldata(srcToken, destToken, data, _amountInMaximum, amountOut, recipient, weth) {
185
+ const actions = encodeActions([
186
+ Actions.SWAP_EXACT_OUT_SINGLE,
187
+ Actions.SETTLE,
188
+ Actions.TAKE,
189
+ ]);
190
+ const swap = ethers_1.ethers.utils.defaultAbiCoder.encode([
191
+ `tuple(${POOL_KEY_TUPLE} poolKey, bool zeroForOne, uint128 amountOut, uint128 amountInMaximum, bytes hookData)`,
192
+ ], [
193
+ [
194
+ encodePoolKeyTuple(data),
195
+ data.zeroForOne,
196
+ amountOut,
197
+ bigint_constants_1.BI_MAX_UINT128,
198
+ data.hookData ?? '0x',
199
+ ],
200
+ ]);
201
+ const settle = encodeSettle(srcToken, data, weth);
202
+ const take = encodeTake(destToken, data, recipient, weth);
203
+ return encodeInputForExecute(srcToken, destToken, data, constants_1.SwapSide.BUY, recipient, actions, [swap, settle, take], weth);
204
+ }
205
+ //# sourceMappingURL=encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../src/dex/pancakeswap-infinity/encoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { NumberAsString, SwapSide } from '@paraswap/core';
2
+ import { AdapterExchangeParam, Address, DexExchangeParam, PoolLiquidity, SimpleExchangeParam } from '../../types';
3
+ import { IDexTxBuilder } from '../idex';
4
+ import { IDexHelper } from '../../dex-helper';
5
+ import { PancakeSwapInfinityData } from './types';
6
+ export declare class PancakeSwapInfinity implements IDexTxBuilder<PancakeSwapInfinityData, any> {
7
+ static dexKeys: string[];
8
+ needWrapNative: boolean;
9
+ private readonly dexKey;
10
+ private readonly network;
11
+ private readonly wethAddress;
12
+ private readonly routerAddress;
13
+ private readonly subgraphURL;
14
+ private readonly logger;
15
+ private readonly dexHelper;
16
+ constructor(dexHelper: IDexHelper);
17
+ getAdapterParam(_srcToken: Address, _destToken: Address, _srcAmount: NumberAsString, _destAmount: NumberAsString, _data: PancakeSwapInfinityData, _side: SwapSide): AdapterExchangeParam;
18
+ getSimpleParam(_srcToken: Address, _destToken: Address, _srcAmount: NumberAsString, _destAmount: NumberAsString, _data: PancakeSwapInfinityData, _side: SwapSide): Promise<SimpleExchangeParam>;
19
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: PancakeSwapInfinityData, side: SwapSide): DexExchangeParam;
20
+ getTopPoolsForToken(_tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
21
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PancakeSwapInfinity = void 0;
4
+ const core_1 = require("@paraswap/core");
5
+ const config_1 = require("./config");
6
+ const utils_1 = require("../../utils");
7
+ const encoder_1 = require("./encoder");
8
+ const subgraph_1 = require("./subgraph");
9
+ const constants_1 = require("../../constants");
10
+ class PancakeSwapInfinity {
11
+ static dexKeys = ['pancakeswapinfinity'];
12
+ needWrapNative = false;
13
+ dexKey = 'pancakeswapinfinity';
14
+ network;
15
+ wethAddress;
16
+ routerAddress;
17
+ subgraphURL;
18
+ logger;
19
+ dexHelper;
20
+ constructor(dexHelper) {
21
+ this.network = dexHelper.config.data.network;
22
+ this.wethAddress =
23
+ dexHelper.config.data.wrappedNativeTokenAddress.toLowerCase();
24
+ this.logger = dexHelper.getLogger(this.dexKey);
25
+ this.dexHelper = dexHelper;
26
+ const config = config_1.PancakeSwapInfinityConfig.PancakeSwapInfinity[this.network];
27
+ this.routerAddress = config.router;
28
+ this.subgraphURL = config.subgraphURL;
29
+ }
30
+ getAdapterParam(_srcToken, _destToken, _srcAmount, _destAmount, _data, _side) {
31
+ return {
32
+ targetExchange: this.routerAddress,
33
+ payload: '0x',
34
+ networkFee: '0',
35
+ };
36
+ }
37
+ async getSimpleParam(_srcToken, _destToken, _srcAmount, _destAmount, _data, _side) {
38
+ return {
39
+ callees: [],
40
+ calldata: [],
41
+ values: [],
42
+ networkFee: '0',
43
+ };
44
+ }
45
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
46
+ const exchangeData = side === core_1.SwapSide.SELL
47
+ ? (0, encoder_1.swapExactInputSingleCalldata)(srcToken, destToken, data, BigInt(srcAmount), 0n, recipient, this.wethAddress)
48
+ : (0, encoder_1.swapExactOutputSingleCalldata)(srcToken, destToken, data, BigInt(srcAmount), BigInt(destAmount), recipient, this.wethAddress);
49
+ return {
50
+ needWrapNative: this.needWrapNative,
51
+ sendEthButSupportsInsertFromAmount: true,
52
+ dexFuncHasRecipient: true,
53
+ exchangeData,
54
+ targetExchange: this.routerAddress,
55
+ returnAmountPos: undefined,
56
+ transferSrcTokenBeforeSwap: (0, utils_1.isETHAddress)(srcToken)
57
+ ? undefined
58
+ : this.routerAddress,
59
+ skipApproval: true,
60
+ };
61
+ }
62
+ async getTopPoolsForToken(_tokenAddress, limit) {
63
+ let tokenAddress = _tokenAddress.toLowerCase();
64
+ if ((0, utils_1.isETHAddress)(tokenAddress))
65
+ tokenAddress = constants_1.NULL_ADDRESS;
66
+ const { pools0, pools1 } = await (0, subgraph_1.queryAvailablePoolsForToken)(this.dexHelper, this.logger, this.dexKey, this.subgraphURL, tokenAddress, limit);
67
+ if (!(pools0 || pools1)) {
68
+ this.logger.error(`Error_${this.dexKey}_Subgraph: couldn't fetch the pools from the subgraph`);
69
+ return [];
70
+ }
71
+ if (pools0.length === 0 && pools1.length === 0) {
72
+ return [];
73
+ }
74
+ const pools0Liquidity = pools0.map(pool => ({
75
+ exchange: this.dexKey,
76
+ address: pool.id.toLowerCase(),
77
+ connectorTokens: [
78
+ {
79
+ address: pool.token1.address.toLowerCase(),
80
+ decimals: parseInt(pool.token1.decimals),
81
+ },
82
+ ],
83
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD),
84
+ }));
85
+ const pools1Liquidity = pools1.map(pool => ({
86
+ exchange: this.dexKey,
87
+ address: pool.id.toLowerCase(),
88
+ connectorTokens: [
89
+ {
90
+ address: pool.token0.address.toLowerCase(),
91
+ decimals: parseInt(pool.token0.decimals),
92
+ },
93
+ ],
94
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD),
95
+ }));
96
+ const allPools = pools0Liquidity.concat(pools1Liquidity);
97
+ allPools.sort((a, b) => b.liquidityUSD - a.liquidityUSD);
98
+ return allPools.slice(0, limit);
99
+ }
100
+ }
101
+ exports.PancakeSwapInfinity = PancakeSwapInfinity;
102
+ //# sourceMappingURL=pancakeswap-infinity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pancakeswap-infinity.js","sourceRoot":"","sources":["../../../src/dex/pancakeswap-infinity/pancakeswap-infinity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SubgraphConnectorPool } from './types';
2
+ import { IDexHelper } from '../../dex-helper';
3
+ import { Logger } from 'log4js';
4
+ export declare function queryAvailablePoolsForToken(dexHelper: IDexHelper, logger: Logger, dexKey: string, subgraphUrl: string, tokenAddress: string, limit: number): Promise<{
5
+ pools0: SubgraphConnectorPool[];
6
+ pools1: SubgraphConnectorPool[];
7
+ }>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.queryAvailablePoolsForToken = queryAvailablePoolsForToken;
4
+ const SUBGRAPH_TIMEOUT = 30 * 1000;
5
+ const POOL_MIN_TVL_USD = 10_000;
6
+ async function queryAvailablePoolsForToken(dexHelper, logger, dexKey, subgraphUrl, tokenAddress, limit) {
7
+ const poolsQuery = `query ($token: Bytes!, $count: Int, $minTVL: Int!) {
8
+ pools0: pools(
9
+ where: {
10
+ token0: $token
11
+ liquidity_gt: 0
12
+ totalValueLockedUSD_gte: $minTVL
13
+ }
14
+ orderBy: totalValueLockedUSD
15
+ orderDirection: desc
16
+ first: $count
17
+ ) {
18
+ id
19
+ totalValueLockedUSD
20
+ token0 {
21
+ address: id
22
+ decimals
23
+ }
24
+ token1 {
25
+ address: id
26
+ decimals
27
+ }
28
+ }
29
+ pools1: pools(
30
+ where: {
31
+ token1: $token
32
+ liquidity_gt: 0
33
+ totalValueLockedUSD_gte: $minTVL
34
+ }
35
+ orderBy: totalValueLockedUSD
36
+ orderDirection: desc
37
+ first: $count
38
+ ) {
39
+ id
40
+ totalValueLockedUSD
41
+ token0 {
42
+ address: id
43
+ decimals
44
+ }
45
+ token1 {
46
+ address: id
47
+ decimals
48
+ }
49
+ }
50
+ }`;
51
+ const res = await dexHelper.httpRequest.querySubgraph(subgraphUrl, {
52
+ query: poolsQuery,
53
+ variables: {
54
+ token: tokenAddress,
55
+ count: limit,
56
+ minTVL: POOL_MIN_TVL_USD,
57
+ },
58
+ }, { timeout: SUBGRAPH_TIMEOUT });
59
+ if (res.errors && res.errors.length) {
60
+ throw new Error(res.errors[0].message);
61
+ }
62
+ return res.data;
63
+ }
64
+ //# sourceMappingURL=subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/dex/pancakeswap-infinity/subgraph.ts"],"names":[],"mappings":";;AAOA,kEAgFC;AAnFD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEzB,KAAK,UAAU,2BAA2B,CAC/C,SAAqB,EACrB,MAAc,EACd,MAAc,EACd,WAAmB,EACnB,YAAoB,EACpB,KAAa;IAKb,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2CjB,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAOnD,WAAW,EACX;QACE,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE;YACT,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,gBAAgB;SACzB;KACF,EACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAC9B,CAAC;IAEF,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Address } from '../../types';
2
+ export type DexParams = {
3
+ clPoolManager: Address;
4
+ router: Address;
5
+ subgraphURL: string;
6
+ };
7
+ export type SubgraphConnectorPool = {
8
+ id: string;
9
+ totalValueLockedUSD: string;
10
+ token0: {
11
+ address: string;
12
+ decimals: string;
13
+ };
14
+ token1: {
15
+ address: string;
16
+ decimals: string;
17
+ };
18
+ };
19
+ export type PoolKey = {
20
+ currency0: string;
21
+ currency1: string;
22
+ hooks: string;
23
+ poolManager: string;
24
+ fee: number;
25
+ parameters: string;
26
+ };
27
+ export type PancakeSwapInfinityData = {
28
+ poolKey: PoolKey;
29
+ zeroForOne: boolean;
30
+ hookData?: string;
31
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/pancakeswap-infinity/types.ts"],"names":[],"mappings":""}