@paraswap/dex-lib 4.3.11 → 4.3.12

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 (98) hide show
  1. package/build/abi/PendleOracle.json +413 -0
  2. package/build/abi/algebra-integral/AlgebraFactory.abi.json +947 -0
  3. package/build/abi/algebra-integral/Quoter.abi.json +231 -0
  4. package/build/abi/algebra-integral/SwapRouter.abi.json +810 -0
  5. package/build/abi/ekubo/twamm-data-fetcher.json +216 -0
  6. package/build/abi/ekubo/twamm.json +720 -0
  7. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  8. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  9. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  10. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  11. package/build/abi/usdc-transmuter/usdc-transmuter.abi.json +156 -0
  12. package/build/dex/aave-v3-pt-roll-over/aave-v3-pt-roll-over.d.ts +58 -0
  13. package/build/dex/aave-v3-pt-roll-over/aave-v3-pt-roll-over.js +363 -0
  14. package/build/dex/aave-v3-pt-roll-over/aave-v3-pt-roll-over.js.map +1 -0
  15. package/build/dex/aave-v3-pt-roll-over/config.d.ts +3 -0
  16. package/build/dex/aave-v3-pt-roll-over/config.js +42 -0
  17. package/build/dex/aave-v3-pt-roll-over/config.js.map +1 -0
  18. package/build/dex/aave-v3-pt-roll-over/constants.d.ts +3 -0
  19. package/build/dex/aave-v3-pt-roll-over/constants.js +7 -0
  20. package/build/dex/aave-v3-pt-roll-over/constants.js.map +1 -0
  21. package/build/dex/aave-v3-pt-roll-over/types.d.ts +30 -0
  22. package/build/dex/aave-v3-pt-roll-over/types.js +3 -0
  23. package/build/dex/aave-v3-pt-roll-over/types.js.map +1 -0
  24. package/build/dex/aave-v3-pt-roll-over/utils.d.ts +4 -0
  25. package/build/dex/aave-v3-pt-roll-over/utils.js +12 -0
  26. package/build/dex/aave-v3-pt-roll-over/utils.js.map +1 -0
  27. package/build/dex/algebra-integral/algebra-integral-factory.d.ts +29 -0
  28. package/build/dex/algebra-integral/algebra-integral-factory.js +159 -0
  29. package/build/dex/algebra-integral/algebra-integral-factory.js.map +1 -0
  30. package/build/dex/algebra-integral/algebra-integral.d.ts +43 -0
  31. package/build/dex/algebra-integral/algebra-integral.js +425 -0
  32. package/build/dex/algebra-integral/algebra-integral.js.map +1 -0
  33. package/build/dex/algebra-integral/config.d.ts +3 -0
  34. package/build/dex/algebra-integral/config.js +17 -0
  35. package/build/dex/algebra-integral/config.js.map +1 -0
  36. package/build/dex/algebra-integral/types.d.ts +35 -0
  37. package/build/dex/algebra-integral/types.js +10 -0
  38. package/build/dex/algebra-integral/types.js.map +1 -0
  39. package/build/dex/balancer-v1/balancer-v1.js +18 -1
  40. package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
  41. package/build/dex/balancer-v3/reClammPool.d.ts +23 -0
  42. package/build/dex/balancer-v3/reClammPool.js +82 -0
  43. package/build/dex/balancer-v3/reClammPool.js.map +1 -0
  44. package/build/dex/ekubo/pools/base.d.ts +36 -0
  45. package/build/dex/ekubo/pools/base.js +289 -0
  46. package/build/dex/ekubo/pools/base.js.map +1 -0
  47. package/build/dex/ekubo/pools/full-range.d.ts +23 -0
  48. package/build/dex/ekubo/pools/full-range.js +99 -0
  49. package/build/dex/ekubo/pools/full-range.js.map +1 -0
  50. package/build/dex/ekubo/pools/iface.d.ts +46 -0
  51. package/build/dex/ekubo/pools/iface.js +75 -0
  52. package/build/dex/ekubo/pools/iface.js.map +1 -0
  53. package/build/dex/ekubo/pools/math/twamm/exp2.d.ts +1 -0
  54. package/build/dex/ekubo/pools/math/twamm/exp2.js +86 -0
  55. package/build/dex/ekubo/pools/math/twamm/exp2.js.map +1 -0
  56. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.d.ts +1 -0
  57. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js +56 -0
  58. package/build/dex/ekubo/pools/math/twamm/sqrt-ratio.js.map +1 -0
  59. package/build/dex/ekubo/pools/oracle.d.ts +8 -0
  60. package/build/dex/ekubo/pools/oracle.js +19 -0
  61. package/build/dex/ekubo/pools/oracle.js.map +1 -0
  62. package/build/dex/ekubo/pools/twamm.d.ts +38 -0
  63. package/build/dex/ekubo/pools/twamm.js +253 -0
  64. package/build/dex/ekubo/pools/twamm.js.map +1 -0
  65. package/build/dex/ekubo/pools/utils.d.ts +28 -0
  66. package/build/dex/ekubo/pools/utils.js +80 -0
  67. package/build/dex/ekubo/pools/utils.js.map +1 -0
  68. package/build/dex/miro-migrator/constants.d.ts +1 -1
  69. package/build/dex/miro-migrator/constants.js +1 -1
  70. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +5 -5
  71. package/build/dex/miro-migrator/miro-migrator-pool.js +13 -22
  72. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  73. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  74. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  75. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  76. package/build/dex/miro-migrator/miro-migrator.js +4 -2
  77. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  78. package/build/dex/sky-converter/config.js +0 -1
  79. package/build/dex/sky-converter/config.js.map +1 -1
  80. package/build/dex/sky-converter/sky-converter.js +22 -11
  81. package/build/dex/sky-converter/sky-converter.js.map +1 -1
  82. package/build/dex/sky-converter/types.d.ts +1 -1
  83. package/build/dex/usdc-transmuter/config.d.ts +3 -0
  84. package/build/dex/usdc-transmuter/config.js +20 -0
  85. package/build/dex/usdc-transmuter/config.js.map +1 -0
  86. package/build/dex/usdc-transmuter/constants.d.ts +1 -0
  87. package/build/dex/usdc-transmuter/constants.js +5 -0
  88. package/build/dex/usdc-transmuter/constants.js.map +1 -0
  89. package/build/dex/usdc-transmuter/types.d.ts +20 -0
  90. package/build/dex/usdc-transmuter/types.js +9 -0
  91. package/build/dex/usdc-transmuter/types.js.map +1 -0
  92. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  93. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  94. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  95. package/build/dex/usdc-transmuter/usdc-transmuter.d.ts +37 -0
  96. package/build/dex/usdc-transmuter/usdc-transmuter.js +148 -0
  97. package/build/dex/usdc-transmuter/usdc-transmuter.js.map +1 -0
  98. package/package.json +1 -1
@@ -0,0 +1,159 @@
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.AlgebraIntegralFactory = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const AlgebraFactory_abi_json_1 = __importDefault(require("../../abi/algebra-integral/AlgebraFactory.abi.json"));
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const constants_1 = require("../../constants");
11
+ /*
12
+ * "Stateless" event subscriber in order to capture "PoolCreated" event on new pools created.
13
+ * State is present, but it's a placeholder to actually make the events reach handlers (if there's no previous state - `processBlockLogs` is not called)
14
+ */
15
+ class AlgebraIntegralFactory extends stateful_event_subscriber_1.StatefulEventSubscriber {
16
+ parentName;
17
+ network;
18
+ dexHelper;
19
+ factoryAddress;
20
+ subgraphURL;
21
+ factoryIface;
22
+ handlers = {};
23
+ logDecoder;
24
+ pools = [];
25
+ constructor(parentName, network, dexHelper, logger, factoryAddress, subgraphURL, factoryIface = new abi_1.Interface(AlgebraFactory_abi_json_1.default)) {
26
+ super(parentName, `${parentName} Factory`, dexHelper, logger, false);
27
+ this.parentName = parentName;
28
+ this.network = network;
29
+ this.dexHelper = dexHelper;
30
+ this.factoryAddress = factoryAddress;
31
+ this.subgraphURL = subgraphURL;
32
+ this.factoryIface = factoryIface;
33
+ this.addressesSubscribed = [factoryAddress];
34
+ this.logDecoder = (log) => this.factoryIface.parseLog(log);
35
+ this.handlers['Pool'] = this.handleNewPool.bind(this);
36
+ this.handlers['CustomPool'] = this.handleNewCustomPool.bind(this);
37
+ }
38
+ async initialize(blockNumber) {
39
+ this.pools = await this.queryAllAvailablePools(blockNumber);
40
+ }
41
+ generateState() {
42
+ return {};
43
+ }
44
+ async processLog(_, log) {
45
+ const event = this.logDecoder(log);
46
+ if (event.name in this.handlers) {
47
+ await this.handlers[event.name](event);
48
+ }
49
+ return {};
50
+ }
51
+ async getAvailablePoolsForPair(srcToken, destToken, blockNumber) {
52
+ const _srcToken = this.dexHelper.config.wrapETH(srcToken);
53
+ const _destToken = this.dexHelper.config.wrapETH(destToken);
54
+ const [_srcAddress, _destAddress] = [
55
+ _srcToken.toLowerCase(),
56
+ _destToken.toLowerCase(),
57
+ ];
58
+ return this.pools
59
+ .filter(pool => (pool.token0 === _srcAddress && pool.token1 === _destAddress) ||
60
+ (pool.token0 === _destAddress && pool.token1 === _srcAddress))
61
+ .sort((a, b) => {
62
+ // sort by tvl
63
+ const tvlDiff = b.tvlUSD - a.tvlUSD;
64
+ if (tvlDiff !== 0) {
65
+ return tvlDiff;
66
+ }
67
+ return 1;
68
+ });
69
+ }
70
+ async queryAllAvailablePools(blockNumber) {
71
+ const defaultPerPageLimit = 1000;
72
+ let pools = [];
73
+ let skip = 0;
74
+ let currentPools = await this.queryOnePageForAllAvailablePoolsFromSubgraph(blockNumber, skip, defaultPerPageLimit);
75
+ pools = pools.concat(currentPools);
76
+ while (currentPools.length === defaultPerPageLimit) {
77
+ skip += defaultPerPageLimit;
78
+ currentPools = await this.queryOnePageForAllAvailablePoolsFromSubgraph(blockNumber, skip, defaultPerPageLimit);
79
+ pools = pools.concat(currentPools);
80
+ }
81
+ return pools;
82
+ }
83
+ async queryOnePageForAllAvailablePoolsFromSubgraph(blockNumber, skip, limit, latestBlock = false) {
84
+ const poolsQuery = `query ($skip: Int!, $first: Int!) {
85
+ pools(
86
+ ${latestBlock ? '' : `block: { number: ${blockNumber} }`}
87
+ orderBy: totalValueLockedUSD
88
+ orderDirection: desc
89
+ skip: $skip
90
+ first: $first
91
+ ) {
92
+ id
93
+ deployer
94
+ totalValueLockedUSD
95
+ token0 {
96
+ id
97
+ }
98
+ token1 {
99
+ id
100
+ }
101
+ }
102
+ }`;
103
+ const res = await this.dexHelper.httpRequest.querySubgraph(this.subgraphURL, {
104
+ query: poolsQuery,
105
+ variables: {
106
+ skip,
107
+ first: limit,
108
+ },
109
+ }, { timeout: constants_1.SUBGRAPH_TIMEOUT });
110
+ if (res.errors && res.errors.length) {
111
+ if (res.errors[0].message.includes('missing block')) {
112
+ this.logger.info(`${this.parentName}: subgraph fallback to the latest block...`);
113
+ return this.queryOnePageForAllAvailablePoolsFromSubgraph(blockNumber, skip, limit, true);
114
+ }
115
+ else {
116
+ throw new Error(res.errors[0].message);
117
+ }
118
+ }
119
+ return res.data.pools.map(pool => ({
120
+ poolAddress: pool.id.toLowerCase(),
121
+ token0: pool.token0.id.toLowerCase(),
122
+ token1: pool.token1.id.toLowerCase(),
123
+ deployer: pool.deployer.toLowerCase(),
124
+ tvlUSD: parseFloat(pool.totalValueLockedUSD) || 0,
125
+ }));
126
+ }
127
+ async handleNewPool(event) {
128
+ const token0 = event.args.token0.toLowerCase();
129
+ const token1 = event.args.token1.toLowerCase();
130
+ const deployer = constants_1.NULL_ADDRESS; // Regular pools have zero address as deployer
131
+ const poolAddress = event.args.pool?.toLowerCase() || '';
132
+ if (poolAddress) {
133
+ this.pools.push({
134
+ poolAddress,
135
+ token0,
136
+ token1,
137
+ deployer,
138
+ tvlUSD: 0,
139
+ });
140
+ }
141
+ }
142
+ async handleNewCustomPool(event) {
143
+ const token0 = event.args.token0.toLowerCase();
144
+ const token1 = event.args.token1.toLowerCase();
145
+ const deployer = event.args.deployer.toLowerCase();
146
+ const poolAddress = event.args.pool?.toLowerCase() || '';
147
+ if (poolAddress) {
148
+ this.pools.push({
149
+ poolAddress,
150
+ token0,
151
+ token1,
152
+ deployer,
153
+ tvlUSD: 0,
154
+ });
155
+ }
156
+ }
157
+ }
158
+ exports.AlgebraIntegralFactory = AlgebraIntegralFactory;
159
+ //# sourceMappingURL=algebra-integral-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algebra-integral-factory.js","sourceRoot":"","sources":["../../../src/dex/algebra-integral/algebra-integral-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, PoolLiquidity, TransferFeeParams, Logger, DexExchangeParam, NumberAsString } from '../../types';
2
+ import { SwapSide, Network } from '../../constants';
3
+ import { Interface } from 'ethers/lib/utils';
4
+ import { IDex } from '../../dex/idex';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { AlgebraIntegralData, Pool } from './types';
7
+ import { SimpleExchange } from '../simple-exchange';
8
+ export declare class AlgebraIntegral extends SimpleExchange implements IDex<AlgebraIntegralData> {
9
+ readonly network: Network;
10
+ readonly dexKey: string;
11
+ readonly dexHelper: IDexHelper;
12
+ readonly routerIface: Interface;
13
+ readonly quoterIface: Interface;
14
+ readonly config: import("./types").DexParams;
15
+ readonly hasConstantPriceLargeAmounts = false;
16
+ readonly needWrapNative = true;
17
+ readonly isFeeOnTransferSupported = true;
18
+ private readonly factory;
19
+ static dexKeysWithNetwork: {
20
+ key: string;
21
+ networks: Network[];
22
+ }[];
23
+ logger: Logger;
24
+ private uniswapMulti;
25
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, routerIface?: Interface, quoterIface?: Interface, config?: import("./types").DexParams);
26
+ initializePricing(blockNumber: number): Promise<void>;
27
+ getAdapters(side: SwapSide): {
28
+ name: string;
29
+ index: number;
30
+ }[] | null;
31
+ getPoolIdentifier(srcAddress: Address, destAddress: Address, deployerAddress: Address): string;
32
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
33
+ getPricingFromRpc(from: Token, to: Token, amounts: bigint[], side: SwapSide, pools: Pool[], transferFees?: TransferFeeParams): Promise<ExchangePrices<AlgebraIntegralData> | null>;
34
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[], transferFees?: TransferFeeParams): Promise<null | ExchangePrices<AlgebraIntegralData>>;
35
+ getCalldataGasCost(poolPrices: PoolPrices<AlgebraIntegralData>): number | number[];
36
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: AlgebraIntegralData, side: SwapSide): DexExchangeParam;
37
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AlgebraIntegralData, side: SwapSide): AdapterExchangeParam;
38
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
39
+ private _querySubgraph;
40
+ private _encodePath;
41
+ private _sortTokens;
42
+ private _getLoweredAddresses;
43
+ }
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AlgebraIntegral = void 0;
40
+ const abi_1 = require("@ethersproject/abi");
41
+ const solidity_1 = require("@ethersproject/solidity");
42
+ const lodash_1 = __importDefault(require("lodash"));
43
+ const constants_1 = require("../../constants");
44
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
45
+ const utils_1 = require("ethers/lib/utils");
46
+ const balancer_fetcher_1 = require("../../lib/tokens/balancer-fetcher");
47
+ const SwapRouter_abi_json_1 = __importDefault(require("../../abi/algebra-integral/SwapRouter.abi.json"));
48
+ const Quoter_abi_json_1 = __importDefault(require("../../abi/algebra-integral/Quoter.abi.json"));
49
+ const UniswapMulti_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapMulti.abi.json"));
50
+ const utils_2 = require("../../utils");
51
+ const types_1 = require("./types");
52
+ const simple_exchange_1 = require("../simple-exchange");
53
+ const token_transfer_fee_1 = require("../../lib/token-transfer-fee");
54
+ const config_1 = require("./config");
55
+ const types_2 = require("../../lib/tokens/types");
56
+ const utils_3 = require("../../executor/utils");
57
+ const algebra_integral_factory_1 = require("./algebra-integral-factory");
58
+ const ALGEBRA_QUOTE_GASLIMIT = 2_000_000;
59
+ const ALGEBRA_EFFICIENCY_FACTOR = 3;
60
+ class AlgebraIntegral extends simple_exchange_1.SimpleExchange {
61
+ network;
62
+ dexKey;
63
+ dexHelper;
64
+ routerIface;
65
+ quoterIface;
66
+ config;
67
+ hasConstantPriceLargeAmounts = false;
68
+ needWrapNative = true;
69
+ isFeeOnTransferSupported = true;
70
+ factory;
71
+ static dexKeysWithNetwork = (0, utils_2.getDexKeysWithNetwork)(config_1.AlgebraIntegralConfig);
72
+ logger;
73
+ uniswapMulti;
74
+ constructor(network, dexKey, dexHelper, routerIface = new utils_1.Interface(SwapRouter_abi_json_1.default), quoterIface = new utils_1.Interface(Quoter_abi_json_1.default), config = config_1.AlgebraIntegralConfig[dexKey][network]) {
75
+ super(dexHelper, dexKey);
76
+ this.network = network;
77
+ this.dexKey = dexKey;
78
+ this.dexHelper = dexHelper;
79
+ this.routerIface = routerIface;
80
+ this.quoterIface = quoterIface;
81
+ this.config = config;
82
+ this.logger = dexHelper.getLogger(dexKey);
83
+ this.uniswapMulti = new this.dexHelper.web3Provider.eth.Contract(UniswapMulti_abi_json_1.default, this.config.uniswapMulticall);
84
+ this.factory = new algebra_integral_factory_1.AlgebraIntegralFactory(dexKey, this.network, dexHelper, this.logger, this.config.factory, this.config.subgraphURL);
85
+ }
86
+ async initializePricing(blockNumber) {
87
+ await this.factory.initialize(blockNumber);
88
+ }
89
+ getAdapters(side) {
90
+ return null;
91
+ }
92
+ getPoolIdentifier(srcAddress, destAddress, deployerAddress) {
93
+ const tokenAddresses = this._sortTokens(srcAddress, destAddress).join('_');
94
+ return `${this.dexKey}_${tokenAddresses}_${deployerAddress}`;
95
+ }
96
+ // Returns list of pool identifiers that can be used
97
+ // for a given swap. poolIdentifiers must be unique
98
+ // across DEXes. It is recommended to use
99
+ // ${dexKey}_${poolAddress} as a poolIdentifier
100
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
101
+ const _srcToken = this.dexHelper.config.wrapETH(srcToken);
102
+ const _destToken = this.dexHelper.config.wrapETH(destToken);
103
+ const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
104
+ if (_srcAddress === _destAddress)
105
+ return [];
106
+ const pools = await this.factory.getAvailablePoolsForPair(_srcAddress, _destAddress, blockNumber);
107
+ if (pools.length === 0)
108
+ return [];
109
+ return pools.map(pool => this.getPoolIdentifier(_srcAddress, _destAddress, pool.deployer));
110
+ }
111
+ async getPricingFromRpc(from, to, amounts, side, pools, transferFees = {
112
+ srcFee: 0,
113
+ destFee: 0,
114
+ srcDexFee: 0,
115
+ destDexFee: 0,
116
+ }) {
117
+ if (pools.length === 0) {
118
+ return null;
119
+ }
120
+ this.logger.warn(`fallback to rpc for ${pools.length} pool(s)`);
121
+ const requests = pools.map(pool => ({
122
+ owner: pool.poolAddress,
123
+ asset: side === constants_1.SwapSide.SELL ? from.address : to.address,
124
+ assetType: types_2.AssetType.ERC20,
125
+ ids: [
126
+ {
127
+ id: types_2.DEFAULT_ID_ERC20,
128
+ spenders: [],
129
+ },
130
+ ],
131
+ }));
132
+ const balances = await (0, balancer_fetcher_1.getBalances)(this.dexHelper.multiWrapper, requests);
133
+ const _isSrcTokenTransferFeeToBeExchanged = (0, utils_2.isSrcTokenTransferFeeToBeExchanged)(transferFees);
134
+ const _isDestTokenTransferFeeToBeExchanged = (0, utils_2.isDestTokenTransferFeeToBeExchanged)(transferFees);
135
+ const unitVolume = (0, utils_2.getBigIntPow)((side === constants_1.SwapSide.SELL ? from : to).decimals);
136
+ const chunks = amounts.length - 1;
137
+ const _width = Math.floor(chunks / this.config.chunksCount);
138
+ const chunkedAmounts = [unitVolume].concat(Array.from(Array(this.config.chunksCount).keys()).map(i => amounts[(i + 1) * _width]));
139
+ const availableAmountsPerPool = pools.map((pool, index) => {
140
+ const balance = balances[index].amounts[types_2.DEFAULT_ID_ERC20_AS_STRING];
141
+ return chunkedAmounts.map(amount => (balance >= amount ? amount : 0n));
142
+ });
143
+ const amountsWithFeePerPool = availableAmountsPerPool.map(poolAmounts => _isSrcTokenTransferFeeToBeExchanged
144
+ ? (0, token_transfer_fee_1.applyTransferFee)(poolAmounts, side, transferFees.srcDexFee, constants_1.SRC_TOKEN_DEX_TRANSFERS)
145
+ : poolAmounts);
146
+ const calldata = pools.flatMap((pool, poolIndex) => {
147
+ const amountsForPool = amountsWithFeePerPool[poolIndex];
148
+ return amountsForPool
149
+ .filter(amount => amount !== 0n)
150
+ .map(amount => ({
151
+ target: this.config.quoter,
152
+ gasLimit: ALGEBRA_QUOTE_GASLIMIT,
153
+ callData: side === constants_1.SwapSide.SELL
154
+ ? this.quoterIface.encodeFunctionData('quoteExactInputSingle', [
155
+ from.address,
156
+ to.address,
157
+ pool.deployer,
158
+ amount.toString(),
159
+ 0,
160
+ ])
161
+ : this.quoterIface.encodeFunctionData('quoteExactOutputSingle', [
162
+ from.address,
163
+ to.address,
164
+ pool.deployer,
165
+ amount.toString(),
166
+ 0,
167
+ ]),
168
+ }));
169
+ });
170
+ const data = await this.uniswapMulti.methods.multicall(calldata).call();
171
+ let totalGasCost = 0;
172
+ let totalSuccessFullSwaps = 0;
173
+ const decode = (j) => {
174
+ const { success, gasUsed, returnData } = data.returnData[j];
175
+ if (!success) {
176
+ return 0n;
177
+ }
178
+ const decoded = abi_1.defaultAbiCoder.decode(['uint256'], returnData);
179
+ totalGasCost += +gasUsed;
180
+ totalSuccessFullSwaps++;
181
+ return BigInt(decoded[0].toString());
182
+ };
183
+ const averageGasCost = !totalSuccessFullSwaps
184
+ ? ALGEBRA_QUOTE_GASLIMIT
185
+ : Math.round(totalGasCost / totalSuccessFullSwaps);
186
+ let i = 0;
187
+ const result = pools.map((pool, poolIndex) => {
188
+ const amountsForPool = amountsWithFeePerPool[poolIndex];
189
+ const _rates = amountsForPool.map(a => (a === 0n ? 0n : decode(i++)));
190
+ const _ratesWithFee = _isDestTokenTransferFeeToBeExchanged
191
+ ? (0, token_transfer_fee_1.applyTransferFee)(_rates, side, transferFees.destDexFee, constants_1.DEST_TOKEN_DEX_TRANSFERS)
192
+ : _rates;
193
+ const unit = _ratesWithFee[0];
194
+ const prices = (0, utils_2.interpolate)(chunkedAmounts.slice(1), _ratesWithFee.slice(1), amounts, side);
195
+ return {
196
+ prices,
197
+ unit,
198
+ data: {
199
+ feeOnTransfer: _isSrcTokenTransferFeeToBeExchanged,
200
+ path: [
201
+ {
202
+ tokenIn: from.address,
203
+ tokenOut: to.address,
204
+ deployer: pool.deployer,
205
+ },
206
+ ],
207
+ },
208
+ poolIdentifier: this.getPoolIdentifier(pool.token0, pool.token1, pool.deployer),
209
+ exchange: this.dexKey,
210
+ gasCost: prices.map(p => (p === 0n ? 0 : averageGasCost)),
211
+ poolAddresses: [pool.poolAddress],
212
+ };
213
+ });
214
+ return result;
215
+ }
216
+ // Returns pool prices for amounts.
217
+ // If limitPools is defined only pools in limitPools
218
+ // should be used. If limitPools is undefined then
219
+ // any pools can be used.
220
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools, transferFees = {
221
+ srcFee: 0,
222
+ destFee: 0,
223
+ srcDexFee: 0,
224
+ destDexFee: 0,
225
+ }) {
226
+ try {
227
+ const _isSrcTokenTransferFeeToBeExchanged = (0, utils_2.isSrcTokenTransferFeeToBeExchanged)(transferFees);
228
+ if (_isSrcTokenTransferFeeToBeExchanged && side == constants_1.SwapSide.BUY) {
229
+ return null;
230
+ }
231
+ const _srcToken = this.dexHelper.config.wrapETH(srcToken);
232
+ const _destToken = this.dexHelper.config.wrapETH(destToken);
233
+ const [_srcAddress, _destAddress] = this._getLoweredAddresses(_srcToken, _destToken);
234
+ if (_srcAddress === _destAddress)
235
+ return null;
236
+ let pools = await this.factory.getAvailablePoolsForPair(_srcAddress, _destAddress, blockNumber);
237
+ if (limitPools && limitPools.length > 0) {
238
+ const limitPoolsSet = new Set(limitPools);
239
+ pools = pools.filter(pool => {
240
+ const poolIdentifier = this.getPoolIdentifier(_srcAddress, _destAddress, pool.deployer);
241
+ return limitPoolsSet.has(poolIdentifier);
242
+ });
243
+ }
244
+ const rpcPrice = await this.getPricingFromRpc(_srcToken, _destToken, amounts, side, pools, transferFees);
245
+ return rpcPrice;
246
+ }
247
+ catch (e) {
248
+ this.logger.error(`Error_getPricesVolume ${srcToken.symbol || srcToken.address}, ${destToken.symbol || destToken.address}, ${side}:`, e);
249
+ return null;
250
+ }
251
+ }
252
+ // Returns estimated gas cost of calldata for this DEX in multiSwap
253
+ getCalldataGasCost(poolPrices) {
254
+ // TODO: update if there is any payload in getAdapterParam
255
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
256
+ }
257
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
258
+ let swapFunction;
259
+ let swapFunctionParams;
260
+ if (data.feeOnTransfer) {
261
+ (0, utils_2._require)(data.path.length === 1, `LOGIC ERROR: multihop is not supported for feeOnTransfer token, passed: ${data.path
262
+ .map(p => `${p?.tokenIn}->${p?.tokenOut}`)
263
+ .join(' ')}`);
264
+ swapFunction = types_1.AlgebraIntegralFunctions.exactInputWithFeeToken;
265
+ swapFunctionParams = {
266
+ limitSqrtPrice: '0',
267
+ recipient: recipient,
268
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
269
+ amountIn: srcAmount,
270
+ amountOutMinimum: destAmount,
271
+ tokenIn: data.path[0].tokenIn,
272
+ tokenOut: data.path[0].tokenOut,
273
+ deployer: data.path[0].deployer,
274
+ };
275
+ }
276
+ else {
277
+ swapFunction =
278
+ side === constants_1.SwapSide.SELL
279
+ ? types_1.AlgebraIntegralFunctions.exactInput
280
+ : types_1.AlgebraIntegralFunctions.exactOutput;
281
+ const path = this._encodePath(data.path, side);
282
+ swapFunctionParams =
283
+ side === constants_1.SwapSide.SELL
284
+ ? {
285
+ recipient: recipient,
286
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
287
+ amountIn: srcAmount,
288
+ amountOutMinimum: destAmount,
289
+ path,
290
+ }
291
+ : {
292
+ recipient: recipient,
293
+ deadline: (0, simple_exchange_1.getLocalDeadlineAsFriendlyPlaceholder)(),
294
+ amountOut: destAmount,
295
+ amountInMaximum: srcAmount,
296
+ path,
297
+ };
298
+ }
299
+ const exchangeData = this.routerIface.encodeFunctionData(swapFunction, [
300
+ swapFunctionParams,
301
+ ]);
302
+ return {
303
+ needWrapNative: this.needWrapNative,
304
+ dexFuncHasRecipient: true,
305
+ exchangeData,
306
+ targetExchange: this.config.router,
307
+ returnAmountPos: side === constants_1.SwapSide.SELL
308
+ ? (0, utils_3.extractReturnAmountPosition)(this.routerIface, swapFunction, 'amountOut')
309
+ : undefined,
310
+ };
311
+ }
312
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
313
+ // Encode here the payload for adapter
314
+ const payload = '';
315
+ return {
316
+ targetExchange: this.config.router,
317
+ payload,
318
+ networkFee: '0',
319
+ };
320
+ }
321
+ // Returns list of top pools based on liquidity. Max
322
+ // limit number pools should be returned.
323
+ async getTopPoolsForToken(tokenAddress, limit) {
324
+ const _tokenAddress = tokenAddress.toLowerCase();
325
+ const res = await this._querySubgraph(`query ($token: Bytes!, $count: Int) {
326
+ pools0: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token0: $token}) {
327
+ id
328
+ deployer
329
+ token0 {
330
+ id
331
+ decimals
332
+ }
333
+ token1 {
334
+ id
335
+ decimals
336
+ }
337
+ totalValueLockedUSD
338
+ }
339
+ pools1: pools(first: $count, orderBy: totalValueLockedUSD, orderDirection: desc, where: {token1: $token}) {
340
+ id
341
+ deployer
342
+ token0 {
343
+ id
344
+ decimals
345
+ }
346
+ token1 {
347
+ id
348
+ decimals
349
+ }
350
+ totalValueLockedUSD
351
+ }
352
+ }`, {
353
+ token: _tokenAddress,
354
+ count: limit,
355
+ });
356
+ if (!(res && res.pools0 && res.pools1)) {
357
+ this.logger.error(`Error_${this.dexKey}_Subgraph: couldn't fetch the pools from the subgraph`);
358
+ return [];
359
+ }
360
+ const pools0 = lodash_1.default.map(res.pools0, pool => ({
361
+ exchange: this.dexKey,
362
+ address: pool.id.toLowerCase(),
363
+ connectorTokens: [
364
+ {
365
+ address: pool.token1.id.toLowerCase(),
366
+ decimals: parseInt(pool.token1.decimals),
367
+ },
368
+ ],
369
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD) * ALGEBRA_EFFICIENCY_FACTOR,
370
+ }));
371
+ const pools1 = lodash_1.default.map(res.pools1, pool => ({
372
+ exchange: this.dexKey,
373
+ address: pool.id.toLowerCase(),
374
+ connectorTokens: [
375
+ {
376
+ address: pool.token0.id.toLowerCase(),
377
+ decimals: parseInt(pool.token0.decimals),
378
+ },
379
+ ],
380
+ liquidityUSD: parseFloat(pool.totalValueLockedUSD) * ALGEBRA_EFFICIENCY_FACTOR,
381
+ }));
382
+ const pools = lodash_1.default.slice(lodash_1.default.sortBy(lodash_1.default.concat(pools0, pools1), [pool => -1 * pool.liquidityUSD]), 0, limit);
383
+ return pools;
384
+ }
385
+ async _querySubgraph(query, variables, timeout = 30000) {
386
+ try {
387
+ const res = await this.dexHelper.httpRequest.querySubgraph(this.config.subgraphURL, { query, variables }, { timeout });
388
+ return res.data;
389
+ }
390
+ catch (e) {
391
+ this.logger.error(`${this.dexKey}: can not query subgraph: `, e);
392
+ return {};
393
+ }
394
+ }
395
+ _encodePath(path, side) {
396
+ if (path.length === 0) {
397
+ return '0x';
398
+ }
399
+ const { _path, types } = path.reduce(({ _path, types }, curr, index) => {
400
+ if (index === 0) {
401
+ return {
402
+ types: ['address', 'address', 'address'],
403
+ _path: [curr.tokenIn, curr.deployer, curr.tokenOut],
404
+ };
405
+ }
406
+ else {
407
+ return {
408
+ types: [...types, 'address', 'address'],
409
+ _path: [..._path, curr.deployer, curr.tokenOut],
410
+ };
411
+ }
412
+ }, { _path: [], types: [] });
413
+ return side === constants_1.SwapSide.BUY
414
+ ? (0, solidity_1.pack)(types.reverse(), _path.reverse())
415
+ : (0, solidity_1.pack)(types, _path);
416
+ }
417
+ _sortTokens(srcAddress, destAddress) {
418
+ return [srcAddress, destAddress].sort((a, b) => (a < b ? -1 : 1));
419
+ }
420
+ _getLoweredAddresses(srcToken, destToken) {
421
+ return [srcToken.address.toLowerCase(), destToken.address.toLowerCase()];
422
+ }
423
+ }
424
+ exports.AlgebraIntegral = AlgebraIntegral;
425
+ //# sourceMappingURL=algebra-integral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algebra-integral.js","sourceRoot":"","sources":["../../../src/dex/algebra-integral/algebra-integral.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const AlgebraIntegralConfig: DexConfigMap<DexParams>;