@paraswap/dex-lib 2.42.1 → 2.42.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/abi/algebra/AlgebraPool.abi.json +727 -0
- package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +193 -0
- package/build/dex/algebra/algebra-pool.d.ts +46 -0
- package/build/dex/algebra/algebra-pool.js +336 -0
- package/build/dex/algebra/algebra-pool.js.map +1 -0
- package/build/dex/balancer-v1/balancer-v1.js +10 -1
- package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
- package/build/dex/quickswap/camelot-v3.d.ts +6 -0
- package/build/dex/quickswap/camelot-v3.js +19 -0
- package/build/dex/quickswap/camelot-v3.js.map +1 -0
- package/build/dex/quickswap/zyberswap-v3.d.ts +6 -0
- package/build/dex/quickswap/zyberswap-v3.js +19 -0
- package/build/dex/quickswap/zyberswap-v3.js.map +1 -0
- package/package.json +1 -1
- package/src/dex/balancer-v1/balancer-v1.ts +12 -1
- package/tests/constants-e2e.ts +5 -0
- package/build/dex/hello/config.d.ts +0 -4
- package/build/dex/hello/config.js +0 -15
- package/build/dex/hello/config.js.map +0 -1
- package/build/dex/hello/hello-pool.d.ts +0 -39
- package/build/dex/hello/hello-pool.js +0 -64
- package/build/dex/hello/hello-pool.js.map +0 -1
- package/build/dex/hello/hello.d.ts +0 -37
- package/build/dex/hello/hello.js +0 -126
- package/build/dex/hello/hello.js.map +0 -1
- package/build/dex/hello/types.d.ts +0 -6
- package/build/dex/hello/types.js +0 -3
- package/build/dex/hello/types.js.map +0 -1
- package/build/dex/my-test-dex/config.d.ts +0 -4
- package/build/dex/my-test-dex/config.js +0 -15
- package/build/dex/my-test-dex/config.js.map +0 -1
- package/build/dex/my-test-dex/my-test-dex-pool.d.ts +0 -39
- package/build/dex/my-test-dex/my-test-dex-pool.js +0 -64
- package/build/dex/my-test-dex/my-test-dex-pool.js.map +0 -1
- package/build/dex/my-test-dex/my-test-dex.d.ts +0 -37
- package/build/dex/my-test-dex/my-test-dex.js +0 -126
- package/build/dex/my-test-dex/my-test-dex.js.map +0 -1
- package/build/dex/my-test-dex/types.d.ts +0 -6
- package/build/dex/my-test-dex/types.js +0 -3
- package/build/dex/my-test-dex/types.js.map +0 -1
- package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
- package/build/dex/solidly/forks-override/fvm.js +0 -42
- package/build/dex/solidly/forks-override/fvm.js.map +0 -1
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { AsyncOrSync } from 'ts-essentials';
|
|
2
|
-
import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
|
|
3
|
-
import { SwapSide, Network } from '../../constants';
|
|
4
|
-
import { IDex } from '../../dex/idex';
|
|
5
|
-
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
6
|
-
import { MyTestDexData } from './types';
|
|
7
|
-
import { SimpleExchange } from '../simple-exchange';
|
|
8
|
-
import { MyTestDexEventPool } from './my-test-dex-pool';
|
|
9
|
-
export declare class MyTestDex extends SimpleExchange implements IDex<MyTestDexData> {
|
|
10
|
-
readonly network: Network;
|
|
11
|
-
readonly dexKey: string;
|
|
12
|
-
readonly dexHelper: IDexHelper;
|
|
13
|
-
protected adapters: import("../../types").AdapterMappings;
|
|
14
|
-
protected eventPools: MyTestDexEventPool;
|
|
15
|
-
readonly hasConstantPriceLargeAmounts = false;
|
|
16
|
-
readonly needWrapNative = true;
|
|
17
|
-
readonly isFeeOnTransferSupported = false;
|
|
18
|
-
static dexKeysWithNetwork: {
|
|
19
|
-
key: string;
|
|
20
|
-
networks: Network[];
|
|
21
|
-
}[];
|
|
22
|
-
logger: Logger;
|
|
23
|
-
constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings);
|
|
24
|
-
initializePricing(blockNumber: number): Promise<void>;
|
|
25
|
-
getAdapters(side: SwapSide): {
|
|
26
|
-
name: string;
|
|
27
|
-
index: number;
|
|
28
|
-
}[] | null;
|
|
29
|
-
getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
|
|
30
|
-
getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<MyTestDexData>>;
|
|
31
|
-
getCalldataGasCost(poolPrices: PoolPrices<MyTestDexData>): number | number[];
|
|
32
|
-
getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MyTestDexData, side: SwapSide): AdapterExchangeParam;
|
|
33
|
-
getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MyTestDexData, side: SwapSide): Promise<SimpleExchangeParam>;
|
|
34
|
-
updatePoolState(): Promise<void>;
|
|
35
|
-
getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
|
|
36
|
-
releaseResources(): AsyncOrSync<void>;
|
|
37
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
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 (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.MyTestDex = void 0;
|
|
27
|
-
const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
|
|
28
|
-
const utils_1 = require("../../utils");
|
|
29
|
-
const simple_exchange_1 = require("../simple-exchange");
|
|
30
|
-
const config_1 = require("./config");
|
|
31
|
-
const my_test_dex_pool_1 = require("./my-test-dex-pool");
|
|
32
|
-
class MyTestDex extends simple_exchange_1.SimpleExchange {
|
|
33
|
-
constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}) {
|
|
34
|
-
super(dexHelper, dexKey);
|
|
35
|
-
this.network = network;
|
|
36
|
-
this.dexKey = dexKey;
|
|
37
|
-
this.dexHelper = dexHelper;
|
|
38
|
-
this.adapters = adapters;
|
|
39
|
-
this.hasConstantPriceLargeAmounts = false;
|
|
40
|
-
// TODO: set true here if protocols works only with wrapped asset
|
|
41
|
-
this.needWrapNative = true;
|
|
42
|
-
this.isFeeOnTransferSupported = false;
|
|
43
|
-
this.logger = dexHelper.getLogger(dexKey);
|
|
44
|
-
this.eventPools = new my_test_dex_pool_1.MyTestDexEventPool(dexKey, network, dexHelper, this.logger);
|
|
45
|
-
}
|
|
46
|
-
// Initialize pricing is called once in the start of
|
|
47
|
-
// pricing service. It is intended to setup the integration
|
|
48
|
-
// for pricing requests. It is optional for a DEX to
|
|
49
|
-
// implement this function
|
|
50
|
-
async initializePricing(blockNumber) {
|
|
51
|
-
// TODO: complete me!
|
|
52
|
-
}
|
|
53
|
-
// Returns the list of contract adapters (name and index)
|
|
54
|
-
// for a buy/sell. Return null if there are no adapters.
|
|
55
|
-
getAdapters(side) {
|
|
56
|
-
return this.adapters[side] ? this.adapters[side] : null;
|
|
57
|
-
}
|
|
58
|
-
// Returns list of pool identifiers that can be used
|
|
59
|
-
// for a given swap. poolIdentifiers must be unique
|
|
60
|
-
// across DEXes. It is recommended to use
|
|
61
|
-
// ${dexKey}_${poolAddress} as a poolIdentifier
|
|
62
|
-
async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
|
|
63
|
-
// TODO: complete me!
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
|
-
// Returns pool prices for amounts.
|
|
67
|
-
// If limitPools is defined only pools in limitPools
|
|
68
|
-
// should be used. If limitPools is undefined then
|
|
69
|
-
// any pools can be used.
|
|
70
|
-
async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
|
|
71
|
-
// TODO: complete me!
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
// Returns estimated gas cost of calldata for this DEX in multiSwap
|
|
75
|
-
getCalldataGasCost(poolPrices) {
|
|
76
|
-
// TODO: update if there is any payload in getAdapterParam
|
|
77
|
-
return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
|
|
78
|
-
}
|
|
79
|
-
// Encode params required by the exchange adapter
|
|
80
|
-
// Used for multiSwap, buy & megaSwap
|
|
81
|
-
// Hint: abiCoder.encodeParameter() could be useful
|
|
82
|
-
getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
|
|
83
|
-
// TODO: complete me!
|
|
84
|
-
const { exchange } = data;
|
|
85
|
-
// Encode here the payload for adapter
|
|
86
|
-
const payload = '';
|
|
87
|
-
return {
|
|
88
|
-
targetExchange: exchange,
|
|
89
|
-
payload,
|
|
90
|
-
networkFee: '0',
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
// Encode call data used by simpleSwap like routers
|
|
94
|
-
// Used for simpleSwap & simpleBuy
|
|
95
|
-
// Hint: this.buildSimpleParamWithoutWETHConversion
|
|
96
|
-
// could be useful
|
|
97
|
-
async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
|
|
98
|
-
// TODO: complete me!
|
|
99
|
-
const { exchange } = data;
|
|
100
|
-
// Encode here the transaction arguments
|
|
101
|
-
const swapData = '';
|
|
102
|
-
return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, exchange);
|
|
103
|
-
}
|
|
104
|
-
// This is called once before getTopPoolsForToken is
|
|
105
|
-
// called for multiple tokens. This can be helpful to
|
|
106
|
-
// update common state required for calculating
|
|
107
|
-
// getTopPoolsForToken. It is optional for a DEX
|
|
108
|
-
// to implement this
|
|
109
|
-
async updatePoolState() {
|
|
110
|
-
// TODO: complete me!
|
|
111
|
-
}
|
|
112
|
-
// Returns list of top pools based on liquidity. Max
|
|
113
|
-
// limit number pools should be returned.
|
|
114
|
-
async getTopPoolsForToken(tokenAddress, limit) {
|
|
115
|
-
//TODO: complete me!
|
|
116
|
-
return [];
|
|
117
|
-
}
|
|
118
|
-
// This is optional function in case if your implementation has acquired any resources
|
|
119
|
-
// you need to release for graceful shutdown. For example, it may be any interval timer
|
|
120
|
-
releaseResources() {
|
|
121
|
-
// TODO: complete me!
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.MyTestDex = MyTestDex;
|
|
125
|
-
MyTestDex.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.MyTestDexConfig);
|
|
126
|
-
//# sourceMappingURL=my-test-dex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"my-test-dex.js","sourceRoot":"","sources":["../../../src/dex/my-test-dex/my-test-dex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/my-test-dex/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Solidly } from '../solidly';
|
|
2
|
-
import { SolidlyPair } from '../types';
|
|
3
|
-
import { Network } from '../../../constants';
|
|
4
|
-
import { IDexHelper } from '../../../dex-helper';
|
|
5
|
-
export declare class Fvm extends Solidly {
|
|
6
|
-
protected network: Network;
|
|
7
|
-
protected dexHelper: IDexHelper;
|
|
8
|
-
static dexKeysWithNetwork: {
|
|
9
|
-
key: string;
|
|
10
|
-
networks: Network[];
|
|
11
|
-
}[];
|
|
12
|
-
constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
|
|
13
|
-
protected getFeesMultiCallData(pair: SolidlyPair): {
|
|
14
|
-
callEntry: {
|
|
15
|
-
target: string;
|
|
16
|
-
callData: string;
|
|
17
|
-
};
|
|
18
|
-
callDecoder: (values: any[]) => number;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
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.Fvm = void 0;
|
|
7
|
-
const solidly_1 = require("../solidly");
|
|
8
|
-
const abi_1 = require("@ethersproject/abi");
|
|
9
|
-
const utils_1 = require("../../../utils");
|
|
10
|
-
const config_1 = require("../config");
|
|
11
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
12
|
-
const FvmFactoryABI = [
|
|
13
|
-
{
|
|
14
|
-
inputs: [{ internalType: '_pair', name: '_stable', type: 'address' }],
|
|
15
|
-
name: 'getFee',
|
|
16
|
-
outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
|
|
17
|
-
stateMutability: 'view',
|
|
18
|
-
type: 'function',
|
|
19
|
-
},
|
|
20
|
-
];
|
|
21
|
-
const fvmFactoryIface = new abi_1.Interface(FvmFactoryABI);
|
|
22
|
-
class Fvm extends solidly_1.Solidly {
|
|
23
|
-
constructor(network, dexKey, dexHelper) {
|
|
24
|
-
super(network, dexKey, dexHelper, true);
|
|
25
|
-
this.network = network;
|
|
26
|
-
this.dexHelper = dexHelper;
|
|
27
|
-
}
|
|
28
|
-
getFeesMultiCallData(pair) {
|
|
29
|
-
const callEntry = {
|
|
30
|
-
target: this.factoryAddress,
|
|
31
|
-
callData: fvmFactoryIface.encodeFunctionData('getFee', [pair.exchange]),
|
|
32
|
-
};
|
|
33
|
-
const callDecoder = (values) => parseInt(fvmFactoryIface.decodeFunctionResult('getFee', values)[0].toString());
|
|
34
|
-
return {
|
|
35
|
-
callEntry,
|
|
36
|
-
callDecoder,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.Fvm = Fvm;
|
|
41
|
-
Fvm.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.SolidlyConfig, ['Fvm']));
|
|
42
|
-
//# sourceMappingURL=fvm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fvm.js","sourceRoot":"","sources":["../../../../src/dex/solidly/forks-override/fvm.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAqC;AAIrC,4CAA+C;AAC/C,0CAAuD;AACvD,sCAA0C;AAC1C,oDAAuB;AAEvB,MAAM,aAAa,GAAG;IACpB;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,eAAS,CAAC,aAAa,CAAC,CAAC;AAErD,MAAa,GAAI,SAAQ,iBAAO;IAI9B,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,CACL,CAAC;QATQ,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;IAQjC,CAAC;IAES,oBAAoB,CAAC,IAAiB;QAC9C,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxE,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,MAAa,EAAE,EAAE,CACpC,QAAQ,CACN,eAAe,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CACrE,CAAC;QAEJ,OAAO;YACL,SAAS;YACT,WAAW;SACZ,CAAC;IACJ,CAAC;;AA/BH,kBAgCC;AA/Be,sBAAkB,GAC9B,IAAA,6BAAqB,EAAC,gBAAC,CAAC,IAAI,CAAC,sBAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|