@paraswap/dex-lib 2.36.0 → 2.36.1
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/api3-proxy.json +7 -0
- package/build/abi/quickPerps/fast-price-events.json +70 -0
- package/build/abi/quickPerps/fast-price-feed.json +748 -0
- package/build/abi/quickPerps/reader.json +313 -0
- package/build/abi/quickPerps/vault-price-feed.json +477 -0
- package/build/abi/quickPerps/vault.json +1953 -0
- package/build/dex/balancer-v2/config.js +1 -1
- package/build/dex/quick-perps/pool.js +21 -6
- package/build/dex/quick-perps/pool.js.map +1 -1
- package/build/dex/quick-perps/quick-perps.js +34 -28
- package/build/dex/quick-perps/quick-perps.js.map +1 -1
- package/build/dex/solidly/config.js +1 -1
- package/build/dex/solidly/forks-override/aerodrome.js.map +1 -1
- package/build/dex/{ramses-v2 → test-dex}/config.d.ts +1 -1
- package/build/dex/test-dex/config.js +15 -0
- package/build/dex/test-dex/config.js.map +1 -0
- package/build/dex/test-dex/test-dex-pool.d.ts +39 -0
- package/build/dex/test-dex/test-dex-pool.js +63 -0
- package/build/dex/test-dex/test-dex-pool.js.map +1 -0
- package/build/dex/test-dex/test-dex.d.ts +37 -0
- package/build/dex/test-dex/test-dex.js +126 -0
- package/build/dex/test-dex/test-dex.js.map +1 -0
- package/build/dex/test-dex/types.d.ts +6 -0
- package/build/dex/{pancakeswap-v3 → test-dex}/types.js.map +1 -1
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/woo-fi-v2/woo-fi-math.d.ts +16 -0
- package/build/dex/woo-fi-v2/woo-fi-math.js +137 -0
- package/build/dex/woo-fi-v2/woo-fi-math.js.map +1 -0
- package/build/lib/api3-feed.d.ts +4 -0
- package/build/lib/api3-feed.js +18 -0
- package/build/lib/api3-feed.js.map +1 -1
- package/build/workers.d.ts +0 -0
- package/build/workers.js +2 -0
- package/build/workers.js.map +1 -0
- package/package.json +1 -1
- package/src/abi/api3-proxy.json +7 -0
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +6 -8
- package/src/dex/balancer-v2/config.ts +1 -1
- package/src/dex/maverick-v1/maverick-v1-e2e.test.ts +1 -7
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +1 -7
- package/src/dex/quick-perps/pool.ts +42 -7
- package/src/dex/quick-perps/quick-perps-events.test.ts +0 -1
- package/src/dex/quick-perps/quick-perps.ts +45 -35
- package/src/dex/solidly/config.ts +1 -1
- package/src/dex/solidly/forks-override/aerodrome.ts +1 -5
- package/src/dex/uniswap-v3/config.ts +1 -2
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +1 -7
- package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +0 -2
- package/src/lib/api3-feed.ts +35 -0
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/vcs.xml +0 -6
- package/build/abi/algebra/AlgebraPool.abi.json +0 -727
- package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
- package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
- package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
- package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
- package/build/abi/wBETH.json +0 -1527
- package/build/dex/algebra/algebra-pool.d.ts +0 -46
- package/build/dex/algebra/algebra-pool.js +0 -336
- package/build/dex/algebra/algebra-pool.js.map +0 -1
- package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
- package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
- package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
- package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
- package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
- package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
- package/build/dex/pancakeswap-v3/types.d.ts +0 -14
- package/build/dex/ramses-v2/config.js +0 -28
- package/build/dex/ramses-v2/config.js.map +0 -1
- package/build/dex/ramses-v2/constants.d.ts +0 -28
- package/build/dex/ramses-v2/constants.js +0 -35
- package/build/dex/ramses-v2/constants.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
- package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
- package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
- package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
- package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
- package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
- package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
- package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
- package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/utils.js +0 -16
- package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
- package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
- package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
- package/build/dex/ramses-v2/ramses-v2.js +0 -690
- package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
- package/build/dex/ramses-v2/types.d.ts +0 -154
- package/build/dex/ramses-v2/types.js +0 -9
- package/build/dex/ramses-v2/types.js.map +0 -1
- package/build/dex/ramses-v2/utils.d.ts +0 -6
- package/build/dex/ramses-v2/utils.js +0 -71
- package/build/dex/ramses-v2/utils.js.map +0 -1
- package/build/dex/sushiswap-v3/config.d.ts +0 -4
- package/build/dex/sushiswap-v3/config.js +0 -132
- package/build/dex/sushiswap-v3/config.js.map +0 -1
- package/build/dex/sushiswap-v3/constants.d.ts +0 -4
- package/build/dex/sushiswap-v3/constants.js +0 -32
- package/build/dex/sushiswap-v3/constants.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
- package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
- package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
- package/build/dex/sushiswap-v3/token.d.ts +0 -6
- package/build/dex/sushiswap-v3/token.js +0 -23
- package/build/dex/sushiswap-v3/token.js.map +0 -1
- package/build/dex/sushiswap-v3/types.d.ts +0 -15
- package/build/dex/sushiswap-v3/types.js +0 -18
- package/build/dex/sushiswap-v3/types.js.map +0 -1
- /package/build/dex/{pancakeswap-v3 → test-dex}/types.js +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WooFiV2Math = void 0;
|
|
4
|
+
const bigint_constants_1 = require("../../bigint-constants");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
function handleMathError(e, logger) {
|
|
7
|
+
if (e instanceof Error && e.message.startsWith('WooGuardian:')) {
|
|
8
|
+
logger.warn('WooFi Guardian check Error:', e);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
logger.error('Unexpected error in WooFi math:', e);
|
|
12
|
+
}
|
|
13
|
+
function max(a, b) {
|
|
14
|
+
return a > b ? a : b;
|
|
15
|
+
}
|
|
16
|
+
class WooFiV2Math {
|
|
17
|
+
constructor(logger, _quoteToken) {
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this._quoteToken = _quoteToken;
|
|
20
|
+
this.state = constants_1.NULL_STATE;
|
|
21
|
+
}
|
|
22
|
+
query(fromToken, toToken, fromAmounts) {
|
|
23
|
+
try {
|
|
24
|
+
if (fromToken === this._quoteToken) {
|
|
25
|
+
return this._querySellQuote(toToken, fromAmounts);
|
|
26
|
+
}
|
|
27
|
+
else if (toToken === this._quoteToken) {
|
|
28
|
+
return this._querySellBase(fromToken, fromAmounts);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return this._queryBaseToBase(fromToken, toToken, fromAmounts);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
handleMathError(e, this.logger);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
_querySellBase(baseToken, baseAmounts) {
|
|
40
|
+
try {
|
|
41
|
+
const _state = this.state.tokenStates[baseToken];
|
|
42
|
+
let quoteAmounts = this._calcQuoteAmountSellBase(baseToken, baseAmounts, _state);
|
|
43
|
+
quoteAmounts = quoteAmounts.map(amount => {
|
|
44
|
+
return amount <= this.state.tokenInfos[this._quoteToken].reserve
|
|
45
|
+
? amount
|
|
46
|
+
: 0n;
|
|
47
|
+
});
|
|
48
|
+
const feeRate = this.state.tokenInfos[baseToken].feeRate;
|
|
49
|
+
return this._takeFee(quoteAmounts, feeRate);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
handleMathError(e, this.logger);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
_querySellQuote(baseToken, quoteAmounts) {
|
|
57
|
+
try {
|
|
58
|
+
const feeRate = this.state.tokenInfos[baseToken].feeRate;
|
|
59
|
+
quoteAmounts = this._takeFee(quoteAmounts, feeRate);
|
|
60
|
+
const _state = this.state.tokenStates[baseToken];
|
|
61
|
+
let toAmounts = this._calcBaseAmountSellQuote(baseToken, quoteAmounts, _state);
|
|
62
|
+
const baseReserve = this.state.tokenInfos[baseToken].reserve;
|
|
63
|
+
return toAmounts.map(amount => {
|
|
64
|
+
return amount >= baseReserve ? amount : 0n;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
handleMathError(e, this.logger);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
_queryBaseToBase(baseToken1, baseToken2, base1Amounts) {
|
|
73
|
+
try {
|
|
74
|
+
let state1 = this.state.tokenStates[baseToken1];
|
|
75
|
+
let state2 = this.state.tokenStates[baseToken1];
|
|
76
|
+
const feeRate1 = this.state.tokenInfos[baseToken1].feeRate;
|
|
77
|
+
const feeRate2 = this.state.tokenInfos[baseToken2].feeRate;
|
|
78
|
+
const spread = max(state1.spread, state2.spread) / 2n;
|
|
79
|
+
const feeRate = max(feeRate1, feeRate2);
|
|
80
|
+
state1.spread = spread;
|
|
81
|
+
state2.spread = spread;
|
|
82
|
+
let quoteAmounts = this._calcQuoteAmountSellBase(baseToken1, base1Amounts, state1);
|
|
83
|
+
quoteAmounts = this._takeFeeAndCheckReserve(quoteAmounts, feeRate);
|
|
84
|
+
let toAmounts = this._calcBaseAmountSellQuote(baseToken2, quoteAmounts, state2);
|
|
85
|
+
return toAmounts.map(toAmount => {
|
|
86
|
+
return toAmount <= this.state.tokenInfos[baseToken2].reserve
|
|
87
|
+
? toAmount
|
|
88
|
+
: 0n;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
handleMathError(e, this.logger);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
_takeFeeAndCheckReserve(amounts, feeRate) {
|
|
97
|
+
return amounts.map(amount => {
|
|
98
|
+
if (amount === 0n)
|
|
99
|
+
return 0n;
|
|
100
|
+
const lpFee = (amount * feeRate) / bigint_constants_1.BI_POWS[5];
|
|
101
|
+
const reserve = this.state.tokenInfos[this._quoteToken].reserve;
|
|
102
|
+
return lpFee > reserve ? 0n : amount - lpFee;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
_takeFee(amounts, feeRate) {
|
|
106
|
+
return amounts.map(amount => {
|
|
107
|
+
const lpFee = (amount * feeRate) / bigint_constants_1.BI_POWS[5];
|
|
108
|
+
return amount === 0n ? 0n : amount - lpFee;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
_calcQuoteAmountSellBase(baseToken, baseAmounts, state) {
|
|
112
|
+
let { priceDec, quoteDec, baseDec } = this.state.decimals[baseToken];
|
|
113
|
+
return baseAmounts.map(baseAmount => {
|
|
114
|
+
if (baseAmount === 0n)
|
|
115
|
+
return 0n;
|
|
116
|
+
const coef = bigint_constants_1.BI_POWS[18] -
|
|
117
|
+
(state.coeff * baseAmount * state.price) / baseDec / priceDec -
|
|
118
|
+
state.spread;
|
|
119
|
+
return ((((baseAmount * quoteDec * state.price) / priceDec) * coef) /
|
|
120
|
+
bigint_constants_1.BI_POWS[18] /
|
|
121
|
+
baseDec);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
_calcBaseAmountSellQuote(baseToken, quoteAmounts, state) {
|
|
125
|
+
let { priceDec, quoteDec, baseDec } = this.state.decimals[baseToken];
|
|
126
|
+
return quoteAmounts.map(quoteAmount => {
|
|
127
|
+
if (quoteAmount === 0n)
|
|
128
|
+
return 0n;
|
|
129
|
+
const coef = bigint_constants_1.BI_POWS[18] - (quoteAmount * state.coeff) / quoteDec - state.spread;
|
|
130
|
+
return ((((quoteAmount * baseDec * priceDec) / state.price) * coef) /
|
|
131
|
+
bigint_constants_1.BI_POWS[18] /
|
|
132
|
+
quoteDec);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
exports.WooFiV2Math = WooFiV2Math;
|
|
137
|
+
//# sourceMappingURL=woo-fi-math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"woo-fi-math.js","sourceRoot":"","sources":["../../../src/dex/woo-fi-v2/woo-fi-math.ts"],"names":[],"mappings":"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"}
|
package/build/lib/api3-feed.d.ts
CHANGED
|
@@ -16,7 +16,11 @@ export declare class Api3FeedSubscriber<State> extends PartialEventSubscriber<St
|
|
|
16
16
|
static readonly ANSWER_UPDATED_BEACON_SET_DATA: string;
|
|
17
17
|
constructor(proxy: Address, api3Server: Address, dataFeedId: string, lens: Lens<DeepReadonly<State>, DeepReadonly<Api3FeedSubscriberState>>, logger: Logger);
|
|
18
18
|
static getApi3ServerV1MultiCallInput(proxy: Address): MultiCallInput;
|
|
19
|
+
static getDapiNameHashMultiCallInput(proxy: Address): MultiCallInput;
|
|
19
20
|
static getDataFeedId(proxy: Address): MultiCallInput;
|
|
21
|
+
static getFeedIdFromDapiNameHash(api3Server: Address, dapiNameHash: string): MultiCallInput;
|
|
22
|
+
static decodeFeedIdFromDapiNameHash(multicallOutput: MultiCallOutput): any;
|
|
23
|
+
static decodeDapiNameHash(multicallOutput: MultiCallOutput): any;
|
|
20
24
|
static decodeDataFeedId(multicallOutput: MultiCallOutput): any;
|
|
21
25
|
static decodeApi3ServerV1Result(multicallOutput: MultiCallOutput): Address;
|
|
22
26
|
processLog(state: DeepReadonly<Api3FeedSubscriberState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<Api3FeedSubscriberState> | null;
|
package/build/lib/api3-feed.js
CHANGED
|
@@ -20,12 +20,30 @@ class Api3FeedSubscriber extends composed_event_subscriber_1.PartialEventSubscri
|
|
|
20
20
|
callData: Api3FeedSubscriber.proxyInterface.encodeFunctionData('api3ServerV1'),
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
static getDapiNameHashMultiCallInput(proxy) {
|
|
24
|
+
return {
|
|
25
|
+
target: proxy,
|
|
26
|
+
callData: Api3FeedSubscriber.proxyInterface.encodeFunctionData('dapiNameHash'),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
23
29
|
static getDataFeedId(proxy) {
|
|
24
30
|
return {
|
|
25
31
|
target: proxy,
|
|
26
32
|
callData: Api3FeedSubscriber.proxyInterface.encodeFunctionData('dataFeedId'),
|
|
27
33
|
};
|
|
28
34
|
}
|
|
35
|
+
static getFeedIdFromDapiNameHash(api3Server, dapiNameHash) {
|
|
36
|
+
return {
|
|
37
|
+
target: api3Server,
|
|
38
|
+
callData: Api3FeedSubscriber.api3ServerV1Iface.encodeFunctionData('dapiNameHashToDataFeedId', [dapiNameHash]),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static decodeFeedIdFromDapiNameHash(multicallOutput) {
|
|
42
|
+
return Api3FeedSubscriber.api3ServerV1Iface.decodeFunctionResult('dapiNameHashToDataFeedId', multicallOutput)[0];
|
|
43
|
+
}
|
|
44
|
+
static decodeDapiNameHash(multicallOutput) {
|
|
45
|
+
return Api3FeedSubscriber.proxyInterface.decodeFunctionResult('dapiNameHash', multicallOutput)[0];
|
|
46
|
+
}
|
|
29
47
|
static decodeDataFeedId(multicallOutput) {
|
|
30
48
|
return Api3FeedSubscriber.proxyInterface.decodeFunctionResult('dataFeedId', multicallOutput)[0];
|
|
31
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api3-feed.js","sourceRoot":"","sources":["../../src/lib/api3-feed.ts"],"names":[],"mappings":";;;;;;AACA,4EAAsE;AAUtE,4CAA+C;AAC/C,6EAA8C;AAC9C,qFAAyD;AAOzD,MAAa,kBAA0B,SAAQ,kDAG9C;IAYC,YACU,KAAc,EACtB,UAAmB,EACX,UAAkB,EAC1B,IAAsE,EACtE,MAAc;QAEd,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAN1B,UAAK,GAAL,KAAK,CAAS;QAEd,eAAU,GAAV,UAAU,CAAQ;IAK5B,CAAC;IAED,MAAM,CAAC,6BAA6B,CAAC,KAAc;QACjD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EACN,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC;SACvE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAc;QACjC,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ,EACN,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,eAAgC;QACtD,OAAO,kBAAkB,CAAC,cAAc,CAAC,oBAAoB,CAC3D,YAAY,EACZ,eAAe,CAChB,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,eAAgC;QAC9D,OAAO,kBAAkB,CAAC,cAAc,CAAC,oBAAoB,CAC3D,cAAc,EACd,eAAe,CAChB,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,UAAU,CACf,KAA4C,EAC5C,GAAkB,EAClB,WAAkC;QAElC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,0BAA0B,EAAE;YACnE,MAAM,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,CACjE,6BAA6B,EAC7B,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,CACX,CAAC;YAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAEtD,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAChD,CAAC;SACH;aAAM,IACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,8BAA8B,EACnE;YACA,MAAM,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,CACjE,6BAA6B,EAC7B,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,CACX,CAAC;YAEF,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAEzD,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACvC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;aAChD,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEM,+BAA+B;QACpC,OAAO;YACL;gBACE,MAAM,EAAE,IAAI,CAAC,KAAK;gBAClB,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC;aACvE;SACF,CAAC;IACJ,CAAC;IAEM,aAAa,CAClB,gBAAmC,EACnC,WAA+B;QAE/B,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,CAAC,oBAAoB,CACpE,MAAM,EACN,gBAAgB,CAAC,CAAC,CAAC,CACpB,CAAC;QACF,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACvC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;IAEM,aAAa,CAAC,KAA0B;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC;;
|
|
1
|
+
{"version":3,"file":"api3-feed.js","sourceRoot":"","sources":["../../src/lib/api3-feed.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
package/build/workers.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers.js","sourceRoot":"","sources":["../src/workers.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/src/abi/api3-proxy.json
CHANGED
|
@@ -42,5 +42,12 @@
|
|
|
42
42
|
],
|
|
43
43
|
"stateMutability": "view",
|
|
44
44
|
"type": "function"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"inputs": [],
|
|
48
|
+
"name": "dapiNameHash",
|
|
49
|
+
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
|
50
|
+
"stateMutability": "view",
|
|
51
|
+
"type": "function"
|
|
45
52
|
}
|
|
46
53
|
]
|
|
@@ -2,7 +2,11 @@ import dotenv from 'dotenv';
|
|
|
2
2
|
dotenv.config();
|
|
3
3
|
|
|
4
4
|
import { testE2E } from '../../../tests/utils-e2e';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Holders,
|
|
7
|
+
NativeTokenSymbols,
|
|
8
|
+
Tokens,
|
|
9
|
+
} from '../../../tests/constants-e2e';
|
|
6
10
|
import { ContractMethod, Network, SwapSide } from '../../constants';
|
|
7
11
|
import { StaticJsonRpcProvider } from '@ethersproject/providers';
|
|
8
12
|
|
|
@@ -37,13 +41,7 @@ function testForNetwork(
|
|
|
37
41
|
ContractMethod.megaSwap,
|
|
38
42
|
],
|
|
39
43
|
],
|
|
40
|
-
[
|
|
41
|
-
SwapSide.BUY,
|
|
42
|
-
[
|
|
43
|
-
ContractMethod.simpleBuy,
|
|
44
|
-
ContractMethod.buy,
|
|
45
|
-
],
|
|
46
|
-
],
|
|
44
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
47
45
|
]);
|
|
48
46
|
|
|
49
47
|
describe(`${network}`, () => {
|
|
@@ -38,13 +38,7 @@ function testForNetwork(
|
|
|
38
38
|
ContractMethod.megaSwap,
|
|
39
39
|
],
|
|
40
40
|
],
|
|
41
|
-
[
|
|
42
|
-
SwapSide.BUY,
|
|
43
|
-
[
|
|
44
|
-
ContractMethod.simpleBuy,
|
|
45
|
-
ContractMethod.buy,
|
|
46
|
-
],
|
|
47
|
-
],
|
|
41
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
48
42
|
]);
|
|
49
43
|
|
|
50
44
|
describe(`${network}`, () => {
|
|
@@ -38,13 +38,7 @@ function testForNetwork(
|
|
|
38
38
|
ContractMethod.megaSwap,
|
|
39
39
|
],
|
|
40
40
|
],
|
|
41
|
-
[
|
|
42
|
-
SwapSide.BUY,
|
|
43
|
-
[
|
|
44
|
-
ContractMethod.simpleBuy,
|
|
45
|
-
ContractMethod.buy,
|
|
46
|
-
],
|
|
47
|
-
],
|
|
41
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
48
42
|
]);
|
|
49
43
|
|
|
50
44
|
describe(`${network}`, () => {
|
|
@@ -104,6 +104,7 @@ export class QuickPerpsEventPool extends ComposedEventSubscriber<PoolState> {
|
|
|
104
104
|
const evenState = this.getState(blockNumber);
|
|
105
105
|
if (evenState) return evenState;
|
|
106
106
|
const onChainState = await this.generateState(blockNumber);
|
|
107
|
+
this.logger.warn(`State is generated in RPC fallback call`);
|
|
107
108
|
this.setState(onChainState, blockNumber);
|
|
108
109
|
return onChainState;
|
|
109
110
|
}
|
|
@@ -283,7 +284,8 @@ export class QuickPerpsEventPool extends ComposedEventSubscriber<PoolState> {
|
|
|
283
284
|
for (let priceFeed of priceFeeds) {
|
|
284
285
|
const api3ServerAddressCallData =
|
|
285
286
|
Api3FeedSubscriber.getApi3ServerV1MultiCallInput(priceFeed);
|
|
286
|
-
const dataFeedIdCallData =
|
|
287
|
+
const dataFeedIdCallData =
|
|
288
|
+
Api3FeedSubscriber.getDapiNameHashMultiCallInput(priceFeed);
|
|
287
289
|
multiCallData.push(...[api3ServerAddressCallData, dataFeedIdCallData]);
|
|
288
290
|
multicallSlices.push([i, i + 2]);
|
|
289
291
|
i += 2;
|
|
@@ -315,24 +317,31 @@ export class QuickPerpsEventPool extends ComposedEventSubscriber<PoolState> {
|
|
|
315
317
|
await multiContract.methods.aggregate(multiCallData).call({}, blockNumber)
|
|
316
318
|
).returnData;
|
|
317
319
|
|
|
318
|
-
const
|
|
320
|
+
const api3ServerV1Prep: {
|
|
319
321
|
[address: string]: {
|
|
320
322
|
proxy: Address;
|
|
321
323
|
api3ServerV1: Address;
|
|
322
|
-
dataFeedId: string;
|
|
323
324
|
};
|
|
324
325
|
} = {};
|
|
326
|
+
const getFeedIdRequests: MultiCallInput[] = [];
|
|
327
|
+
|
|
325
328
|
for (let token of tokens) {
|
|
326
|
-
const [api3ServerAddressRes,
|
|
329
|
+
const [api3ServerAddressRes, dapiNameHashRes] = configResults.slice(
|
|
327
330
|
...multicallSlices.shift()!,
|
|
328
331
|
);
|
|
329
332
|
const serverV1Address =
|
|
330
333
|
Api3FeedSubscriber.decodeApi3ServerV1Result(api3ServerAddressRes);
|
|
331
|
-
const
|
|
332
|
-
|
|
334
|
+
const dapiNameHash =
|
|
335
|
+
Api3FeedSubscriber.decodeDapiNameHash(dapiNameHashRes);
|
|
336
|
+
getFeedIdRequests.push(
|
|
337
|
+
Api3FeedSubscriber.getFeedIdFromDapiNameHash(
|
|
338
|
+
serverV1Address,
|
|
339
|
+
dapiNameHash,
|
|
340
|
+
),
|
|
341
|
+
);
|
|
342
|
+
api3ServerV1Prep[token] = {
|
|
333
343
|
proxy: priceFeeds.shift(),
|
|
334
344
|
api3ServerV1: serverV1Address,
|
|
335
|
-
dataFeedId,
|
|
336
345
|
};
|
|
337
346
|
}
|
|
338
347
|
|
|
@@ -355,6 +364,32 @@ export class QuickPerpsEventPool extends ComposedEventSubscriber<PoolState> {
|
|
|
355
364
|
const vaultConfigResults = configResults.slice(...multicallSlices.shift()!);
|
|
356
365
|
const vaultConfig = Vault.getConfig(vaultConfigResults, tokens);
|
|
357
366
|
|
|
367
|
+
const feedIdResults = (
|
|
368
|
+
await multiContract.methods
|
|
369
|
+
.aggregate(getFeedIdRequests)
|
|
370
|
+
.call({}, blockNumber)
|
|
371
|
+
).returnData;
|
|
372
|
+
|
|
373
|
+
const api3ServerV1: {
|
|
374
|
+
[address: string]: {
|
|
375
|
+
proxy: Address;
|
|
376
|
+
api3ServerV1: Address;
|
|
377
|
+
dataFeedId: string;
|
|
378
|
+
};
|
|
379
|
+
} = {};
|
|
380
|
+
for (let [i, token] of tokens.entries()) {
|
|
381
|
+
const { proxy, api3ServerV1: api3ServerAddress } =
|
|
382
|
+
api3ServerV1Prep[token];
|
|
383
|
+
const dataFeedId = Api3FeedSubscriber.decodeFeedIdFromDapiNameHash(
|
|
384
|
+
feedIdResults[i],
|
|
385
|
+
);
|
|
386
|
+
api3ServerV1[token] = {
|
|
387
|
+
proxy,
|
|
388
|
+
api3ServerV1: api3ServerAddress,
|
|
389
|
+
dataFeedId,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
|
|
358
393
|
return {
|
|
359
394
|
vaultAddress: dexParams.vault,
|
|
360
395
|
readerAddress: dexParams.reader,
|
|
@@ -117,45 +117,55 @@ export class QuickPerps extends SimpleExchange implements IDex<QuickPerpsData> {
|
|
|
117
117
|
limitPools?: string[],
|
|
118
118
|
): Promise<null | ExchangePrices<QuickPerpsData>> {
|
|
119
119
|
if (side === SwapSide.BUY || !this.pool) return null;
|
|
120
|
-
|
|
121
|
-
.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
try {
|
|
121
|
+
const srcAddress = this.dexHelper.config
|
|
122
|
+
.wrapETH(srcToken)
|
|
123
|
+
.address.toLowerCase();
|
|
124
|
+
const destAddress = this.dexHelper.config
|
|
125
|
+
.wrapETH(destToken)
|
|
126
|
+
.address.toLowerCase();
|
|
127
|
+
if (
|
|
128
|
+
srcAddress === destAddress ||
|
|
129
|
+
!(
|
|
130
|
+
this.supportedTokensMap[srcAddress] &&
|
|
131
|
+
this.supportedTokensMap[destAddress]
|
|
132
|
+
)
|
|
131
133
|
)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (limitPools && pools.some(p => !limitPools.includes(p))) return null;
|
|
134
|
+
return null;
|
|
135
|
+
const srcPoolIdentifier = `${this.dexKey}_${srcAddress}`;
|
|
136
|
+
const destPoolIdentifier = `${this.dexKey}_${destAddress}`;
|
|
137
|
+
const pools = [srcPoolIdentifier, destPoolIdentifier];
|
|
138
|
+
if (limitPools && pools.some(p => !limitPools.includes(p))) return null;
|
|
138
139
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
const unitVolume = getBigIntPow(srcToken.decimals);
|
|
141
|
+
const prices = await this.pool.getAmountOut(
|
|
142
|
+
srcAddress,
|
|
143
|
+
destAddress,
|
|
144
|
+
[unitVolume, ...amounts],
|
|
145
|
+
blockNumber,
|
|
146
|
+
);
|
|
146
147
|
|
|
147
|
-
|
|
148
|
+
if (!prices) return null;
|
|
148
149
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
150
|
+
return [
|
|
151
|
+
{
|
|
152
|
+
prices: prices.slice(1),
|
|
153
|
+
unit: prices[0],
|
|
154
|
+
gasCost: QuickPerpsGasCost,
|
|
155
|
+
exchange: this.dexKey,
|
|
156
|
+
data: {},
|
|
157
|
+
poolAddresses: [this.params.vault],
|
|
158
|
+
},
|
|
159
|
+
];
|
|
160
|
+
} catch (e) {
|
|
161
|
+
this.logger.error(
|
|
162
|
+
`Error_getPrices ${srcToken.symbol || srcToken.address}, ${
|
|
163
|
+
destToken.symbol || destToken.address
|
|
164
|
+
}, ${side}: `,
|
|
165
|
+
e,
|
|
166
|
+
);
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
159
169
|
}
|
|
160
170
|
|
|
161
171
|
// Returns estimated gas cost of calldata for this DEX in multiSwap
|
|
@@ -16,11 +16,7 @@ export class Aerodrome extends VelodromeV2 {
|
|
|
16
16
|
dexKey: string,
|
|
17
17
|
protected dexHelper: IDexHelper,
|
|
18
18
|
) {
|
|
19
|
-
super(
|
|
20
|
-
network,
|
|
21
|
-
dexKey,
|
|
22
|
-
dexHelper,
|
|
23
|
-
);
|
|
19
|
+
super(network, dexKey, dexHelper);
|
|
24
20
|
|
|
25
21
|
this.factory = new dexHelper.web3Provider.eth.Contract(
|
|
26
22
|
AerodromeFactoryABI as any,
|
|
@@ -220,8 +220,7 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
220
220
|
chunksCount: 10,
|
|
221
221
|
initRetryFrequency: 10,
|
|
222
222
|
initHash: `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`,
|
|
223
|
-
subgraphURL:
|
|
224
|
-
'https://api.studio.thegraph.com/query/32073/v3-base/v0.0.1',
|
|
223
|
+
subgraphURL: 'https://api.studio.thegraph.com/query/32073/v3-base/v0.0.1',
|
|
225
224
|
},
|
|
226
225
|
},
|
|
227
226
|
ChronosV3: {
|
|
@@ -429,13 +429,7 @@ describe('UniswapV3 E2E', () => {
|
|
|
429
429
|
ContractMethod.megaSwap,
|
|
430
430
|
],
|
|
431
431
|
],
|
|
432
|
-
[
|
|
433
|
-
SwapSide.BUY,
|
|
434
|
-
[
|
|
435
|
-
ContractMethod.simpleBuy,
|
|
436
|
-
ContractMethod.buy
|
|
437
|
-
],
|
|
438
|
-
],
|
|
432
|
+
[SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
|
|
439
433
|
]);
|
|
440
434
|
|
|
441
435
|
sideToContractMethods.forEach((contractMethods, side) =>
|
package/src/lib/api3-feed.ts
CHANGED
|
@@ -51,6 +51,14 @@ export class Api3FeedSubscriber<State> extends PartialEventSubscriber<
|
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
static getDapiNameHashMultiCallInput(proxy: Address): MultiCallInput {
|
|
55
|
+
return {
|
|
56
|
+
target: proxy,
|
|
57
|
+
callData:
|
|
58
|
+
Api3FeedSubscriber.proxyInterface.encodeFunctionData('dapiNameHash'),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
54
62
|
static getDataFeedId(proxy: Address): MultiCallInput {
|
|
55
63
|
return {
|
|
56
64
|
target: proxy,
|
|
@@ -59,6 +67,33 @@ export class Api3FeedSubscriber<State> extends PartialEventSubscriber<
|
|
|
59
67
|
};
|
|
60
68
|
}
|
|
61
69
|
|
|
70
|
+
static getFeedIdFromDapiNameHash(
|
|
71
|
+
api3Server: Address,
|
|
72
|
+
dapiNameHash: string,
|
|
73
|
+
): MultiCallInput {
|
|
74
|
+
return {
|
|
75
|
+
target: api3Server,
|
|
76
|
+
callData: Api3FeedSubscriber.api3ServerV1Iface.encodeFunctionData(
|
|
77
|
+
'dapiNameHashToDataFeedId',
|
|
78
|
+
[dapiNameHash],
|
|
79
|
+
),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static decodeFeedIdFromDapiNameHash(multicallOutput: MultiCallOutput) {
|
|
84
|
+
return Api3FeedSubscriber.api3ServerV1Iface.decodeFunctionResult(
|
|
85
|
+
'dapiNameHashToDataFeedId',
|
|
86
|
+
multicallOutput,
|
|
87
|
+
)[0];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static decodeDapiNameHash(multicallOutput: MultiCallOutput) {
|
|
91
|
+
return Api3FeedSubscriber.proxyInterface.decodeFunctionResult(
|
|
92
|
+
'dapiNameHash',
|
|
93
|
+
multicallOutput,
|
|
94
|
+
)[0];
|
|
95
|
+
}
|
|
96
|
+
|
|
62
97
|
static decodeDataFeedId(multicallOutput: MultiCallOutput) {
|
|
63
98
|
return Api3FeedSubscriber.proxyInterface.decodeFunctionResult(
|
|
64
99
|
'dataFeedId',
|
package/.idea/aws.xml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="accountSettings">
|
|
4
|
-
<option name="activeProfile" value="profile:default" />
|
|
5
|
-
<option name="activeRegion" value="us-east-1" />
|
|
6
|
-
<option name="recentlyUsedProfiles">
|
|
7
|
-
<list>
|
|
8
|
-
<option value="profile:default" />
|
|
9
|
-
</list>
|
|
10
|
-
</option>
|
|
11
|
-
<option name="recentlyUsedRegions">
|
|
12
|
-
<list>
|
|
13
|
-
<option value="us-east-1" />
|
|
14
|
-
</list>
|
|
15
|
-
</option>
|
|
16
|
-
</component>
|
|
17
|
-
</project>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
-
<code_scheme name="Project" version="173">
|
|
3
|
-
<ScalaCodeStyleSettings>
|
|
4
|
-
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
|
5
|
-
</ScalaCodeStyleSettings>
|
|
6
|
-
<TypeScriptCodeStyleSettings version="0">
|
|
7
|
-
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACKETS" value="true" />
|
|
8
|
-
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
9
|
-
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
10
|
-
</TypeScriptCodeStyleSettings>
|
|
11
|
-
<codeStyleSettings language="TypeScript">
|
|
12
|
-
<indentOptions>
|
|
13
|
-
<option name="INDENT_SIZE" value="2" />
|
|
14
|
-
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
15
|
-
<option name="TAB_SIZE" value="2" />
|
|
16
|
-
</indentOptions>
|
|
17
|
-
</codeStyleSettings>
|
|
18
|
-
</code_scheme>
|
|
19
|
-
</component>
|