@paraswap/dex-lib 2.42.3 → 2.42.4-balancer-v1.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.
- package/.vscode/launch.json +16 -0
- package/build/dex/balancer-v1/balancer-v1.js +21 -10
- package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
- package/build/dex/balancer-v1/config.d.ts +2 -1
- package/build/dex/balancer-v1/config.js +3 -2
- package/build/dex/balancer-v1/config.js.map +1 -1
- package/build/test.js +26 -0
- package/package.json +1 -1
- package/src/dex/balancer-v1/balancer-v1.ts +32 -13
- package/src/dex/balancer-v1/config.ts +2 -1
- package/tests/constants-e2e.ts +1 -1
- package/build/abi/kyberswap-elastic/IAntiSnipAttackPositionManager.json +0 -1276
- package/build/abi/kyberswap-elastic/IFactory.json +0 -550
- package/build/abi/kyberswap-elastic/IPool.json +0 -1042
- package/build/abi/kyberswap-elastic/IQuoterV2.json +0 -226
- package/build/abi/kyberswap-elastic/IRouter.json +0 -239
- package/build/abi/kyberswap-elastic/TicksFeesReader.json +0 -142
- package/build/abi/wombat/asset.json +0 -769
- package/build/abi/wombat/bmw.json +0 -1247
- package/build/abi/wombat/pool.json +0 -1364
- 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/kyberswap-elastic/config.d.ts +0 -4
- package/build/dex/kyberswap-elastic/config.js +0 -80
- package/build/dex/kyberswap-elastic/config.js.map +0 -1
- package/build/dex/kyberswap-elastic/constants.d.ts +0 -17
- package/build/dex/kyberswap-elastic/constants.js +0 -42
- package/build/dex/kyberswap-elastic/constants.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js +0 -9
- package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/FullMath.d.ts +0 -5
- package/build/dex/kyberswap-elastic/contract-math/FullMath.js +0 -22
- package/build/dex/kyberswap-elastic/contract-math/FullMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.d.ts +0 -3
- package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js +0 -12
- package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js +0 -22
- package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.d.ts +0 -5
- package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js +0 -25
- package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/QuadMath.d.ts +0 -4
- package/build/dex/kyberswap-elastic/contract-math/QuadMath.js +0 -27
- package/build/dex/kyberswap-elastic/contract-math/QuadMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.d.ts +0 -3
- package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js +0 -14
- package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/SafeCast.d.ts +0 -8
- package/build/dex/kyberswap-elastic/contract-math/SafeCast.js +0 -30
- package/build/dex/kyberswap-elastic/contract-math/SafeCast.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/SwapMath.d.ts +0 -13
- package/build/dex/kyberswap-elastic/contract-math/SwapMath.js +0 -188
- package/build/dex/kyberswap-elastic/contract-math/SwapMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.d.ts +0 -6
- package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js +0 -41
- package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/TickMath.d.ts +0 -9
- package/build/dex/kyberswap-elastic/contract-math/TickMath.js +0 -165
- package/build/dex/kyberswap-elastic/contract-math/TickMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js +0 -10
- package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.d.ts +0 -28
- package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js +0 -502
- package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js.map +0 -1
- package/build/dex/kyberswap-elastic/contract-math/utils.d.ts +0 -3
- package/build/dex/kyberswap-elastic/contract-math/utils.js +0 -16
- package/build/dex/kyberswap-elastic/contract-math/utils.js.map +0 -1
- package/build/dex/kyberswap-elastic/errors.d.ts +0 -2
- package/build/dex/kyberswap-elastic/errors.js +0 -6
- package/build/dex/kyberswap-elastic/errors.js.map +0 -1
- package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.d.ts +0 -80
- package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js +0 -458
- package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js.map +0 -1
- package/build/dex/kyberswap-elastic/kyberswap-elastic.d.ts +0 -53
- package/build/dex/kyberswap-elastic/kyberswap-elastic.js +0 -610
- package/build/dex/kyberswap-elastic/kyberswap-elastic.js.map +0 -1
- package/build/dex/kyberswap-elastic/types.d.ts +0 -134
- package/build/dex/kyberswap-elastic/types.js +0 -9
- package/build/dex/kyberswap-elastic/types.js.map +0 -1
- package/build/dex/kyberswap-elastic/utils/decoders.d.ts +0 -9
- package/build/dex/kyberswap-elastic/utils/decoders.js +0 -78
- package/build/dex/kyberswap-elastic/utils/decoders.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
- package/build/dex/wombat/config.d.ts +0 -5
- package/build/dex/wombat/config.js +0 -36
- package/build/dex/wombat/config.js.map +0 -1
- package/build/dex/wombat/types.d.ts +0 -33
- package/build/dex/wombat/types.js +0 -3
- package/build/dex/wombat/types.js.map +0 -1
- package/build/dex/wombat/utils.d.ts +0 -9
- package/build/dex/wombat/utils.js +0 -66
- package/build/dex/wombat/utils.js.map +0 -1
- package/build/dex/wombat/wombat-bmw.d.ts +0 -40
- package/build/dex/wombat/wombat-bmw.js +0 -145
- package/build/dex/wombat/wombat-bmw.js.map +0 -1
- package/build/dex/wombat/wombat-pool.d.ts +0 -22
- package/build/dex/wombat/wombat-pool.js +0 -161
- package/build/dex/wombat/wombat-pool.js.map +0 -1
- package/build/dex/wombat/wombat-quoter.d.ts +0 -16
- package/build/dex/wombat/wombat-quoter.js +0 -176
- package/build/dex/wombat/wombat-quoter.js.map +0 -1
- package/build/dex/wombat/wombat.d.ts +0 -55
- package/build/dex/wombat/wombat.js +0 -292
- package/build/dex/wombat/wombat.js.map +0 -1
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LIQUIDITY_THRESHOLD_IN_USD = exports.Adapters = exports.WombatConfig = void 0;
|
|
4
|
-
const constants_1 = require("../../constants");
|
|
5
|
-
exports.WombatConfig = {
|
|
6
|
-
Wombat: {
|
|
7
|
-
[constants_1.Network.BSC]: {
|
|
8
|
-
bmwAddress: '0x489833311676B566f888119c29bd997Dc6C95830',
|
|
9
|
-
// routerAddress: '0x19609B03C976CCA288fbDae5c21d4290e9a4aDD7',
|
|
10
|
-
},
|
|
11
|
-
[constants_1.Network.ARBITRUM]: {
|
|
12
|
-
bmwAddress: '0x62A83C6791A3d7950D823BB71a38e47252b6b6F4',
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
exports.Adapters = {
|
|
17
|
-
[constants_1.Network.BSC]: {
|
|
18
|
-
[constants_1.SwapSide.SELL]: [
|
|
19
|
-
{
|
|
20
|
-
name: 'BscAdapter01',
|
|
21
|
-
/** @todo check index number */
|
|
22
|
-
// index: 12,
|
|
23
|
-
// uniswapv2 forks
|
|
24
|
-
index: 3,
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
[constants_1.SwapSide.BUY]: [
|
|
28
|
-
{
|
|
29
|
-
name: 'BscBuyAdapter',
|
|
30
|
-
index: 1,
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
exports.LIQUIDITY_THRESHOLD_IN_USD = 100;
|
|
36
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/wombat/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,YAAY,GAA4B;IACnD,MAAM,EAAE;QACN,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;YACb,UAAU,EAAE,4CAA4C;YACxD,+DAA+D;SAChE;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;QACb,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE;YACf;gBACE,IAAI,EAAE,cAAc;gBACpB,+BAA+B;gBAC/B,aAAa;gBACb,kBAAkB;gBAClB,KAAK,EAAE,CAAC;aACT;SACF;QACD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE;YACd;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAC;aACT;SACF;KACF;CACF,CAAC;AAEW,QAAA,0BAA0B,GAAG,GAAG,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Address } from '../../types';
|
|
2
|
-
export declare type BmwState = {
|
|
3
|
-
pools: Address[];
|
|
4
|
-
};
|
|
5
|
-
export declare type PoolState = {
|
|
6
|
-
params: PoolParams;
|
|
7
|
-
underlyingAddresses: Address[];
|
|
8
|
-
asset: {
|
|
9
|
-
[underlyingAddress: string]: AssetState;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export declare type AssetState = {
|
|
13
|
-
address: Address;
|
|
14
|
-
paused: boolean;
|
|
15
|
-
cash: bigint;
|
|
16
|
-
liability: bigint;
|
|
17
|
-
underlyingTokenDecimals: number;
|
|
18
|
-
relativePrice?: bigint;
|
|
19
|
-
};
|
|
20
|
-
export declare type PoolParams = {
|
|
21
|
-
paused: boolean;
|
|
22
|
-
ampFactor: bigint;
|
|
23
|
-
haircutRate: bigint;
|
|
24
|
-
startCovRatio: bigint;
|
|
25
|
-
endCovRatio: bigint;
|
|
26
|
-
};
|
|
27
|
-
export declare type WombatData = {
|
|
28
|
-
exchange: Address;
|
|
29
|
-
};
|
|
30
|
-
export declare type DexParams = {
|
|
31
|
-
bmwAddress: Address;
|
|
32
|
-
};
|
|
33
|
-
export declare type MulticallResultOutputs = boolean | bigint | Address | number | undefined;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/wombat/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { MultiResult } from '../../lib/multi-wrapper';
|
|
2
|
-
import { BytesLike } from 'ethers/lib/utils';
|
|
3
|
-
export declare const WAD: bigint;
|
|
4
|
-
export declare function wmul(x: bigint, y: bigint): bigint;
|
|
5
|
-
export declare function wdiv(x: bigint, y: bigint): bigint;
|
|
6
|
-
export declare function toWad(x: bigint, d: bigint): bigint;
|
|
7
|
-
export declare function fromWad(x: bigint, d: bigint): bigint;
|
|
8
|
-
export declare function sqrt(y: bigint, guess: bigint): bigint;
|
|
9
|
-
export declare const uint120ToBigInt: (result: MultiResult<BytesLike> | BytesLike) => bigint;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.uint120ToBigInt = exports.sqrt = exports.fromWad = exports.toWad = exports.wdiv = exports.wmul = exports.WAD = void 0;
|
|
4
|
-
const bigint_constants_1 = require("../../bigint-constants");
|
|
5
|
-
const decoders_1 = require("../../lib/decoders");
|
|
6
|
-
exports.WAD = bigint_constants_1.BI_POWS[18];
|
|
7
|
-
function wmul(x, y) {
|
|
8
|
-
return (x * y + exports.WAD / 2n) / exports.WAD;
|
|
9
|
-
}
|
|
10
|
-
exports.wmul = wmul;
|
|
11
|
-
function wdiv(x, y) {
|
|
12
|
-
return (x * exports.WAD + y / 2n) / y;
|
|
13
|
-
}
|
|
14
|
-
exports.wdiv = wdiv;
|
|
15
|
-
// Convert x to WAD (18 decimals) from d decimals.
|
|
16
|
-
function toWad(x, d) {
|
|
17
|
-
if (d < 18n) {
|
|
18
|
-
return x * 10n ** (18n - d);
|
|
19
|
-
}
|
|
20
|
-
else if (d > 18n) {
|
|
21
|
-
return x / 10n ** (d - 18n);
|
|
22
|
-
}
|
|
23
|
-
return x;
|
|
24
|
-
}
|
|
25
|
-
exports.toWad = toWad;
|
|
26
|
-
// Convert x from WAD (18 decimals) to d decimals.
|
|
27
|
-
function fromWad(x, d) {
|
|
28
|
-
if (d < 18n) {
|
|
29
|
-
return x / 10n ** (18n - d);
|
|
30
|
-
}
|
|
31
|
-
else if (d > 18n) {
|
|
32
|
-
return x * 10n ** (d - 18n);
|
|
33
|
-
}
|
|
34
|
-
return x;
|
|
35
|
-
}
|
|
36
|
-
exports.fromWad = fromWad;
|
|
37
|
-
// Babylonian Method with initial guess (typecast as int)
|
|
38
|
-
function sqrt(y, guess) {
|
|
39
|
-
let z = 0n;
|
|
40
|
-
if (y > 3) {
|
|
41
|
-
if (guess > 0 && guess <= y) {
|
|
42
|
-
z = guess;
|
|
43
|
-
}
|
|
44
|
-
else if (guess < 0 && -guess <= y) {
|
|
45
|
-
z = -guess;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
z = y;
|
|
49
|
-
}
|
|
50
|
-
let x = (y / z + z) / 2n;
|
|
51
|
-
while (x != z) {
|
|
52
|
-
z = x;
|
|
53
|
-
x = (y / x + x) / 2n;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else if (y != 0n) {
|
|
57
|
-
z = 1n;
|
|
58
|
-
}
|
|
59
|
-
return z;
|
|
60
|
-
}
|
|
61
|
-
exports.sqrt = sqrt;
|
|
62
|
-
const uint120ToBigInt = (result) => {
|
|
63
|
-
return (0, decoders_1.generalDecoder)(result, ['uint120'], 0n, value => value[0].toBigInt());
|
|
64
|
-
};
|
|
65
|
-
exports.uint120ToBigInt = uint120ToBigInt;
|
|
66
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/wombat/utils.ts"],"names":[],"mappings":";;;AAAA,6DAAiD;AAGjD,iDAAoD;AAEvC,QAAA,GAAG,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;AAE/B,SAAgB,IAAI,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,WAAG,GAAG,EAAE,CAAC,GAAG,WAAG,CAAC;AAClC,CAAC;AAFD,oBAEC;AAED,SAAgB,IAAI,CAAC,CAAS,EAAE,CAAS;IACvC,OAAO,CAAC,CAAC,GAAG,WAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,kDAAkD;AAClD,SAAgB,KAAK,CAAC,CAAS,EAAE,CAAS;IACxC,IAAI,CAAC,GAAG,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAPD,sBAOC;AACD,kDAAkD;AAClD,SAAgB,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,IAAI,CAAC,GAAG,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE;QAClB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAPD,0BAOC;AAED,yDAAyD;AACzD,SAAgB,IAAI,CAAC,CAAS,EAAE,KAAa;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YAC3B,CAAC,GAAG,KAAK,CAAC;SACX;aAAM,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnC,CAAC,GAAG,CAAC,KAAK,CAAC;SACZ;aAAM;YACL,CAAC,GAAG,CAAC,CAAC;SACP;QACD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE;YACb,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;SACtB;KACF;SAAM,IAAI,CAAC,IAAI,EAAE,EAAE;QAClB,CAAC,GAAG,EAAE,CAAC;KACR;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AApBD,oBAoBC;AAEM,MAAM,eAAe,GAAG,CAC7B,MAA0C,EAClC,EAAE;IACV,OAAO,IAAA,yBAAc,EAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { LogDescription } from 'ethers/lib/utils';
|
|
3
|
-
import { DeepReadonly } from 'ts-essentials';
|
|
4
|
-
import { Address, Log, Logger } from '../../types';
|
|
5
|
-
import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
|
|
6
|
-
import { IDexHelper } from '../../dex-helper';
|
|
7
|
-
import { BmwState } from './types';
|
|
8
|
-
export declare class WombatBmw extends StatefulEventSubscriber<BmwState> {
|
|
9
|
-
protected network: number;
|
|
10
|
-
protected dexHelper: IDexHelper;
|
|
11
|
-
protected bmwAddress: Address;
|
|
12
|
-
protected onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => void;
|
|
13
|
-
static readonly bmwInterface: Interface;
|
|
14
|
-
static readonly assetInterface: Interface;
|
|
15
|
-
static readonly poolInterface: Interface;
|
|
16
|
-
private readonly logDecoder;
|
|
17
|
-
private bmwContract;
|
|
18
|
-
private handlers;
|
|
19
|
-
constructor(dexKey: string, name: string, network: number, dexHelper: IDexHelper, logger: Logger, bmwAddress: Address, onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => void);
|
|
20
|
-
/**
|
|
21
|
-
* The function is called every time any of the subscribed
|
|
22
|
-
* addresses release log. The function accepts the current
|
|
23
|
-
* state, updates the state according to the log, and returns
|
|
24
|
-
* the updated state.
|
|
25
|
-
* @param state - Current state of event subscriber
|
|
26
|
-
* @param log - Log released by one of the subscribed addresses
|
|
27
|
-
* @returns Updates state of the event subscriber after the log
|
|
28
|
-
*/
|
|
29
|
-
protected processLog(state: DeepReadonly<BmwState>, log: Readonly<Log>): Promise<DeepReadonly<BmwState> | null>;
|
|
30
|
-
/**
|
|
31
|
-
* The function generates state using on-chain calls. This
|
|
32
|
-
* function is called to regenerate state if the event based
|
|
33
|
-
* system fails to fetch events and the local state is no
|
|
34
|
-
* more correct.
|
|
35
|
-
* should be generated
|
|
36
|
-
* @returns state of the event subscriber at blocknumber
|
|
37
|
-
*/
|
|
38
|
-
generateState(blockNumber: number): Promise<DeepReadonly<BmwState>>;
|
|
39
|
-
handleAdd(event: LogDescription, state: DeepReadonly<BmwState>, log: Readonly<Log>): Promise<DeepReadonly<BmwState> | null>;
|
|
40
|
-
}
|
|
@@ -1,145 +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.WombatBmw = void 0;
|
|
7
|
-
const abi_1 = require("@ethersproject/abi");
|
|
8
|
-
const utils_1 = require("../../utils");
|
|
9
|
-
const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
|
|
10
|
-
const bmw_json_1 = __importDefault(require("../../abi/wombat/bmw.json"));
|
|
11
|
-
const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
|
|
12
|
-
const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
|
|
13
|
-
class WombatBmw extends stateful_event_subscriber_1.StatefulEventSubscriber {
|
|
14
|
-
constructor(dexKey, name, network, dexHelper, logger, bmwAddress, onAssetAdded) {
|
|
15
|
-
super(`${dexKey} ${name}`, `${dexKey}-${network} ${name}`, dexHelper, logger);
|
|
16
|
-
this.network = network;
|
|
17
|
-
this.dexHelper = dexHelper;
|
|
18
|
-
this.bmwAddress = bmwAddress;
|
|
19
|
-
this.onAssetAdded = onAssetAdded;
|
|
20
|
-
this.handlers = {};
|
|
21
|
-
this.logDecoder = (log) => WombatBmw.bmwInterface.parseLog(log);
|
|
22
|
-
this.addressesSubscribed = [this.bmwAddress];
|
|
23
|
-
this.bmwContract = new this.dexHelper.web3Provider.eth.Contract(bmw_json_1.default, this.bmwAddress);
|
|
24
|
-
// users-actions handlers
|
|
25
|
-
this.handlers['Add'] = this.handleAdd.bind(this);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* The function is called every time any of the subscribed
|
|
29
|
-
* addresses release log. The function accepts the current
|
|
30
|
-
* state, updates the state according to the log, and returns
|
|
31
|
-
* the updated state.
|
|
32
|
-
* @param state - Current state of event subscriber
|
|
33
|
-
* @param log - Log released by one of the subscribed addresses
|
|
34
|
-
* @returns Updates state of the event subscriber after the log
|
|
35
|
-
*/
|
|
36
|
-
async processLog(state, log) {
|
|
37
|
-
try {
|
|
38
|
-
const event = this.logDecoder(log);
|
|
39
|
-
if (event.name in this.handlers) {
|
|
40
|
-
return await this.handlers[event.name](event, state, log);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
(0, utils_1.catchParseLogError)(e, this.logger);
|
|
45
|
-
}
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* The function generates state using on-chain calls. This
|
|
50
|
-
* function is called to regenerate state if the event based
|
|
51
|
-
* system fails to fetch events and the local state is no
|
|
52
|
-
* more correct.
|
|
53
|
-
* should be generated
|
|
54
|
-
* @returns state of the event subscriber at blocknumber
|
|
55
|
-
*/
|
|
56
|
-
async generateState(blockNumber) {
|
|
57
|
-
const bmwState = { pools: [] };
|
|
58
|
-
let inputs = [];
|
|
59
|
-
const poolLength = await this.bmwContract.methods
|
|
60
|
-
.poolLength()
|
|
61
|
-
.call({}, blockNumber);
|
|
62
|
-
for (let i = 0; i < poolLength; i++) {
|
|
63
|
-
inputs.push({
|
|
64
|
-
target: this.bmwAddress,
|
|
65
|
-
callData: WombatBmw.bmwInterface.encodeFunctionData('poolInfo', [i]),
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
let returnData = (await this.dexHelper.multiContract.methods
|
|
69
|
-
.aggregate(inputs)
|
|
70
|
-
.call({}, blockNumber)).returnData;
|
|
71
|
-
const lpTokens = returnData.map((data) => WombatBmw.bmwInterface
|
|
72
|
-
.decodeFunctionResult('poolInfo', data)[0]
|
|
73
|
-
.toLowerCase());
|
|
74
|
-
inputs = [];
|
|
75
|
-
for (const lpToken of lpTokens) {
|
|
76
|
-
inputs.push({
|
|
77
|
-
target: lpToken,
|
|
78
|
-
callData: WombatBmw.assetInterface.encodeFunctionData('underlyingToken'),
|
|
79
|
-
});
|
|
80
|
-
inputs.push({
|
|
81
|
-
target: lpToken,
|
|
82
|
-
callData: WombatBmw.assetInterface.encodeFunctionData('pool'),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
returnData = (await this.dexHelper.multiContract.methods
|
|
86
|
-
.aggregate(inputs)
|
|
87
|
-
.call({}, blockNumber)).returnData;
|
|
88
|
-
const pool2AssetInfo = new Map();
|
|
89
|
-
let i = 0;
|
|
90
|
-
for (const lpToken of lpTokens) {
|
|
91
|
-
const underlyingToken = WombatBmw.assetInterface
|
|
92
|
-
.decodeFunctionResult('underlyingToken', returnData[i++])[0]
|
|
93
|
-
.toLowerCase();
|
|
94
|
-
const pool = WombatBmw.assetInterface
|
|
95
|
-
.decodeFunctionResult('pool', returnData[i++])[0]
|
|
96
|
-
.toLowerCase();
|
|
97
|
-
if (!pool2AssetInfo.has(pool)) {
|
|
98
|
-
pool2AssetInfo.set(pool, new Map());
|
|
99
|
-
}
|
|
100
|
-
pool2AssetInfo.get(pool).set(lpToken, underlyingToken);
|
|
101
|
-
}
|
|
102
|
-
pool2AssetInfo.forEach((asset2TokenMap, pool) => {
|
|
103
|
-
bmwState.pools.push(pool);
|
|
104
|
-
this.onAssetAdded(pool, asset2TokenMap, blockNumber);
|
|
105
|
-
});
|
|
106
|
-
return bmwState;
|
|
107
|
-
}
|
|
108
|
-
async handleAdd(event, state, log) {
|
|
109
|
-
const lpToken = event.args.lpToken.toString().toLowerCase();
|
|
110
|
-
let multiCallInputs = [];
|
|
111
|
-
multiCallInputs.push({
|
|
112
|
-
target: lpToken,
|
|
113
|
-
callData: WombatBmw.assetInterface.encodeFunctionData('pool'),
|
|
114
|
-
});
|
|
115
|
-
multiCallInputs.push({
|
|
116
|
-
target: lpToken,
|
|
117
|
-
callData: WombatBmw.assetInterface.encodeFunctionData('underlyingToken'),
|
|
118
|
-
});
|
|
119
|
-
const returnData = (await this.dexHelper.multiContract.methods
|
|
120
|
-
.aggregate(multiCallInputs)
|
|
121
|
-
.call({}, log.blockNumber)).returnData;
|
|
122
|
-
const pool = WombatBmw.assetInterface
|
|
123
|
-
.decodeFunctionResult('pool', returnData[0])[0]
|
|
124
|
-
.toLowerCase();
|
|
125
|
-
const underlyingToken = WombatBmw.assetInterface
|
|
126
|
-
.decodeFunctionResult('underlyingToken', returnData[1])[0]
|
|
127
|
-
.toLowerCase();
|
|
128
|
-
this.onAssetAdded(pool, new Map().set(lpToken, underlyingToken), log.blockNumber);
|
|
129
|
-
if (!state.pools.includes(pool)) {
|
|
130
|
-
return {
|
|
131
|
-
pools: [...state.pools, pool],
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
return {
|
|
136
|
-
pools: state.pools,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
exports.WombatBmw = WombatBmw;
|
|
142
|
-
WombatBmw.bmwInterface = new abi_1.Interface(bmw_json_1.default);
|
|
143
|
-
WombatBmw.assetInterface = new abi_1.Interface(asset_json_1.default);
|
|
144
|
-
WombatBmw.poolInterface = new abi_1.Interface(pool_json_1.default);
|
|
145
|
-
//# sourceMappingURL=wombat-bmw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wombat-bmw.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-bmw.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Interface } from '@ethersproject/abi';
|
|
2
|
-
import { Address } from '@paraswap/core';
|
|
3
|
-
import { MultiCallParams, MultiResult } from '../../lib/multi-wrapper';
|
|
4
|
-
import { IDexHelper } from '../../dex-helper';
|
|
5
|
-
import { StatefulRpcPoller } from '../../lib/stateful-rpc-poller/stateful-rpc-poller';
|
|
6
|
-
import { ObjWithUpdateInfo } from '../../lib/stateful-rpc-poller/types';
|
|
7
|
-
import { MulticallResultOutputs, PoolState } from './types';
|
|
8
|
-
export declare class WombatPool extends StatefulRpcPoller<PoolState, MulticallResultOutputs> {
|
|
9
|
-
protected poolAddress: Address;
|
|
10
|
-
protected asset2TokenMap: Map<Address, Address>;
|
|
11
|
-
static readonly poolInterface: Interface;
|
|
12
|
-
static readonly assetInterface: Interface;
|
|
13
|
-
constructor(dexKey: string, poolIdentifier: string, dexHelper: IDexHelper, poolAddress: Address, asset2TokenMap: Map<Address, Address>);
|
|
14
|
-
protected _getFetchStateMultiCalls(): MultiCallParams<MulticallResultOutputs>[];
|
|
15
|
-
protected _parseStateFromMultiResults(multiOutputs: MulticallResultOutputs[]): PoolState;
|
|
16
|
-
fetchLatestStateFromRpc(): Promise<ObjWithUpdateInfo<PoolState> | null>;
|
|
17
|
-
parseStateFromMultiResultsWithBlockInfo(multiOutputs: [
|
|
18
|
-
MultiResult<number>,
|
|
19
|
-
...MultiResult<MulticallResultOutputs>[]
|
|
20
|
-
], lastUpdatedAtMs: number): ObjWithUpdateInfo<PoolState>;
|
|
21
|
-
addAssets(asset2TokenMap: Map<Address, Address>): void;
|
|
22
|
-
}
|
|
@@ -1,161 +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.WombatPool = void 0;
|
|
7
|
-
const abi_1 = require("@ethersproject/abi");
|
|
8
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
const stateful_rpc_poller_1 = require("../../lib/stateful-rpc-poller/stateful-rpc-poller");
|
|
10
|
-
const state_polling_manager_1 = require("../../lib/stateful-rpc-poller/state-polling-manager");
|
|
11
|
-
const utils_1 = require("../../lib/stateful-rpc-poller/utils");
|
|
12
|
-
const decoders_1 = require("../../lib/decoders");
|
|
13
|
-
const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
|
|
14
|
-
const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
|
|
15
|
-
const utils_2 = require("./utils");
|
|
16
|
-
class WombatPool extends stateful_rpc_poller_1.StatefulRpcPoller {
|
|
17
|
-
constructor(dexKey, poolIdentifier, dexHelper, poolAddress, asset2TokenMap) {
|
|
18
|
-
const callbacks = (0, utils_1.pollingManagerCbExtractor)(state_polling_manager_1.StatePollingManager.getInstance(dexHelper));
|
|
19
|
-
super(dexKey, poolIdentifier, dexHelper, 0, 0, false, callbacks);
|
|
20
|
-
this.poolAddress = poolAddress;
|
|
21
|
-
this.asset2TokenMap = asset2TokenMap;
|
|
22
|
-
}
|
|
23
|
-
_getFetchStateMultiCalls() {
|
|
24
|
-
const params = [];
|
|
25
|
-
params.push({
|
|
26
|
-
target: this.poolAddress,
|
|
27
|
-
callData: WombatPool.poolInterface.encodeFunctionData('paused'),
|
|
28
|
-
decodeFunction: decoders_1.booleanDecode,
|
|
29
|
-
});
|
|
30
|
-
params.push({
|
|
31
|
-
target: this.poolAddress,
|
|
32
|
-
callData: WombatPool.poolInterface.encodeFunctionData('ampFactor'),
|
|
33
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
34
|
-
});
|
|
35
|
-
params.push({
|
|
36
|
-
target: this.poolAddress,
|
|
37
|
-
callData: WombatPool.poolInterface.encodeFunctionData('haircutRate'),
|
|
38
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
39
|
-
});
|
|
40
|
-
params.push({
|
|
41
|
-
target: this.poolAddress,
|
|
42
|
-
callData: WombatPool.poolInterface.encodeFunctionData('startCovRatio'),
|
|
43
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
44
|
-
});
|
|
45
|
-
params.push({
|
|
46
|
-
target: this.poolAddress,
|
|
47
|
-
callData: WombatPool.poolInterface.encodeFunctionData('endCovRatio'),
|
|
48
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
49
|
-
});
|
|
50
|
-
params.push({
|
|
51
|
-
target: this.poolAddress,
|
|
52
|
-
callData: WombatPool.poolInterface.encodeFunctionData('getTokens'),
|
|
53
|
-
decodeFunction: decoders_1.addressArrayDecode,
|
|
54
|
-
});
|
|
55
|
-
this.asset2TokenMap.forEach((token, asset) => {
|
|
56
|
-
params.push({
|
|
57
|
-
target: this.poolAddress,
|
|
58
|
-
callData: WombatPool.poolInterface.encodeFunctionData('isPaused', [
|
|
59
|
-
token,
|
|
60
|
-
]),
|
|
61
|
-
decodeFunction: decoders_1.booleanDecode,
|
|
62
|
-
});
|
|
63
|
-
params.push({
|
|
64
|
-
target: asset,
|
|
65
|
-
callData: WombatPool.assetInterface.encodeFunctionData('cash'),
|
|
66
|
-
decodeFunction: utils_2.uint120ToBigInt,
|
|
67
|
-
});
|
|
68
|
-
params.push({
|
|
69
|
-
target: asset,
|
|
70
|
-
callData: WombatPool.assetInterface.encodeFunctionData('liability'),
|
|
71
|
-
decodeFunction: utils_2.uint120ToBigInt,
|
|
72
|
-
});
|
|
73
|
-
params.push({
|
|
74
|
-
target: asset,
|
|
75
|
-
callData: WombatPool.assetInterface.encodeFunctionData('underlyingTokenDecimals'),
|
|
76
|
-
decodeFunction: decoders_1.uint8ToNumber,
|
|
77
|
-
});
|
|
78
|
-
params.push({
|
|
79
|
-
target: asset,
|
|
80
|
-
callData: WombatPool.assetInterface.encodeFunctionData('getRelativePrice'),
|
|
81
|
-
decodeFunction: decoders_1.uint256ToBigInt,
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
return params;
|
|
85
|
-
}
|
|
86
|
-
_parseStateFromMultiResults(multiOutputs) {
|
|
87
|
-
const [paused, ampFactor, haircutRate, startCovRatio, endCovRatio, tokens, ...remained] = multiOutputs;
|
|
88
|
-
const assetTokenArray = Array.from(this.asset2TokenMap.entries());
|
|
89
|
-
const token2AssetStates = new Map();
|
|
90
|
-
lodash_1.default.chunk(remained, 5).forEach((chunk, i) => {
|
|
91
|
-
const [paused, cash, liability, underlyingTokenDecimals, relativePrice] = chunk;
|
|
92
|
-
const [asset, token] = assetTokenArray[i];
|
|
93
|
-
token2AssetStates.set(token, {
|
|
94
|
-
address: asset,
|
|
95
|
-
paused,
|
|
96
|
-
cash,
|
|
97
|
-
liability,
|
|
98
|
-
underlyingTokenDecimals,
|
|
99
|
-
relativePrice,
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
const poolState = {
|
|
103
|
-
params: {
|
|
104
|
-
paused,
|
|
105
|
-
ampFactor,
|
|
106
|
-
haircutRate,
|
|
107
|
-
startCovRatio,
|
|
108
|
-
endCovRatio,
|
|
109
|
-
},
|
|
110
|
-
underlyingAddresses: tokens,
|
|
111
|
-
asset: {},
|
|
112
|
-
};
|
|
113
|
-
const isMainPool = Array.from(token2AssetStates.values()).filter(assetState => assetState.relativePrice === undefined).length > 0;
|
|
114
|
-
for (const token of poolState.underlyingAddresses) {
|
|
115
|
-
if (!token2AssetStates.has(token)) {
|
|
116
|
-
// this happens when asset has been added to pool but is not added to BMW yet
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
poolState.asset[token] = token2AssetStates.get(token);
|
|
120
|
-
if (isMainPool) {
|
|
121
|
-
poolState.asset[token].relativePrice = undefined;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return poolState;
|
|
125
|
-
}
|
|
126
|
-
async fetchLatestStateFromRpc() {
|
|
127
|
-
const multiCalls = this.getFetchStateWithBlockInfoMultiCalls();
|
|
128
|
-
try {
|
|
129
|
-
const lastUpdatedAtMs = Date.now();
|
|
130
|
-
const aggregatedResults = (await this.dexHelper.multiWrapper.tryAggregate(false, multiCalls));
|
|
131
|
-
return this.parseStateFromMultiResultsWithBlockInfo(aggregatedResults, lastUpdatedAtMs);
|
|
132
|
-
}
|
|
133
|
-
catch (e) {
|
|
134
|
-
this._logMessageWithSuppression('ERROR_FETCHING_STATE_FROM_RPC', e);
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
parseStateFromMultiResultsWithBlockInfo(multiOutputs, lastUpdatedAtMs) {
|
|
139
|
-
const [blockNumber, ...outputsForAbstract] = multiOutputs.map((m, i) => {
|
|
140
|
-
return m.returnData;
|
|
141
|
-
});
|
|
142
|
-
return {
|
|
143
|
-
value: this._parseStateFromMultiResults(outputsForAbstract),
|
|
144
|
-
blockNumber,
|
|
145
|
-
lastUpdatedAtMs,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
addAssets(asset2TokenMap) {
|
|
149
|
-
for (const [asset, token] of asset2TokenMap) {
|
|
150
|
-
if (this.asset2TokenMap.has(asset)) {
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
this.asset2TokenMap.set(asset, token);
|
|
154
|
-
this._cachedMultiCallData = undefined;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.WombatPool = WombatPool;
|
|
159
|
-
WombatPool.poolInterface = new abi_1.Interface(pool_json_1.default);
|
|
160
|
-
WombatPool.assetInterface = new abi_1.Interface(asset_json_1.default);
|
|
161
|
-
//# sourceMappingURL=wombat-pool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wombat-pool.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAE/C,oDAAuB;AAIvB,2FAAsF;AACtF,+FAA0F;AAE1F,+DAAgF;AAChF,iDAK4B;AAC5B,2EAAiD;AACjD,6EAAmD;AACnD,mCAA0C;AAG1C,MAAa,UAAW,SAAQ,uCAG/B;IAIC,YACE,MAAc,EACd,cAAsB,EACtB,SAAqB,EACX,WAAoB,EACpB,cAAqC;QAE/C,MAAM,SAAS,GAAG,IAAA,iCAAyB,EACzC,2CAAmB,CAAC,WAAW,CAAC,SAAS,CAAC,CAC3C,CAAC;QAEF,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAPvD,gBAAW,GAAX,WAAW,CAAS;QACpB,mBAAc,GAAd,cAAc,CAAuB;IAOjD,CAAC;IAES,wBAAwB;QAChC,MAAM,MAAM,GAA8C,EAAE,CAAC;QAE7D,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YAC/D,cAAc,EAAE,wBAAa;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC;YAClE,cAAc,EAAE,0BAAe;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACpE,cAAc,EAAE,0BAAe;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC;YACtE,cAAc,EAAE,0BAAe;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACpE,cAAc,EAAE,0BAAe;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC;YAClE,cAAc,EAAE,6BAAkB;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,EAAE;oBAChE,KAAK;iBACN,CAAC;gBACF,cAAc,EAAE,wBAAa;aAC9B,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBAC9D,cAAc,EAAE,uBAAe;aAChC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC;gBACnE,cAAc,EAAE,uBAAe;aAChC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACpD,yBAAyB,CAC1B;gBACD,cAAc,EAAE,wBAAa;aAC9B,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK;gBACb,QAAQ,EACN,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;gBAClE,cAAc,EAAE,0BAAe;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,2BAA2B,CACnC,YAAsC;QAEtC,MAAM,CACJ,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,EACN,GAAG,QAAQ,CACZ,GAAG,YAQH,CAAC;QAEF,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;QACzD,gBAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,uBAAuB,EAAE,aAAa,CAAC,GACrE,KAA8D,CAAC;YAEjE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC3B,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,IAAI;gBACJ,SAAS;gBACT,uBAAuB;gBACvB,aAAa;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAc;YAC3B,MAAM,EAAE;gBACN,MAAM;gBACN,SAAS;gBACT,WAAW;gBACX,aAAa;gBACb,WAAW;aACZ;YACD,mBAAmB,EAAE,MAAM;YAC3B,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,MAAM,UAAU,GACd,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC3C,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,CACrD,CAAC,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,mBAAmB,EAAE;YACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACjC,6EAA6E;gBAC7E,SAAS;aACV;YACD,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YACvD,IAAI,UAAU,EAAE;gBACd,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC;aAClD;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,uBAAuB;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,oCAAoC,EAAE,CAAC;QAC/D,IAAI;YACF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,MAAM,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAGvE,KAAK,EACL,UAAgE,CACjE,CAAoE,CAAC;YAEtE,OAAO,IAAI,CAAC,uCAAuC,CACjD,iBAAiB,EACjB,eAAe,CAChB,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,0BAA0B,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;SACrE;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,uCAAuC,CAC5C,YAGC,EACD,eAAuB;QAEvB,MAAM,CAAC,WAAW,EAAE,GAAG,kBAAkB,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrE,OAAO,CAAC,CAAC,UAAU,CAAC;QACtB,CAAC,CAA0C,CAAC;QAE5C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC;YAC3D,WAAW;YACX,eAAe;SAChB,CAAC;IACJ,CAAC;IAEM,SAAS,CAAC,cAAqC;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE;YAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAClC,SAAS;aACV;YAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;SACvC;IACH,CAAC;;AAhNH,gCAiNC;AA7MiB,wBAAa,GAAG,IAAI,eAAS,CAAC,mBAAO,CAAC,CAAC;AACvC,yBAAc,GAAG,IAAI,eAAS,CAAC,oBAAQ,CAAC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AssetState, PoolParams } from './types';
|
|
2
|
-
export declare class WombatQuoter {
|
|
3
|
-
private readonly ampFactor;
|
|
4
|
-
private readonly haircutRate;
|
|
5
|
-
private readonly startCovRatio;
|
|
6
|
-
private readonly endCovRatio;
|
|
7
|
-
constructor(poolParams: PoolParams);
|
|
8
|
-
getQuote(fromAsset: AssetState, toAsset: AssetState, fromAmount: bigint): bigint;
|
|
9
|
-
private _highCovRatioPoolQuoteFrom;
|
|
10
|
-
private _highCovRatioFee;
|
|
11
|
-
private _quoteFrom;
|
|
12
|
-
private _findUpperBound;
|
|
13
|
-
private _quoteFactor;
|
|
14
|
-
static solveQuad(b: bigint, c: bigint): bigint;
|
|
15
|
-
static swapQuoteFunc(aX: bigint, aY: bigint, lX: bigint, lY: bigint, dX: bigint, a: bigint): bigint;
|
|
16
|
-
}
|