@sonarwatch/portfolio-plugins 0.14.45 → 0.14.47
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/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/src/plugins/bluefin/clmmsFetcher.d.ts +3 -0
- package/src/plugins/bluefin/clmmsFetcher.js +85 -0
- package/src/plugins/bluefin/clmmsFetcher.js.map +1 -0
- package/src/plugins/bluefin/clmmsJob.d.ts +3 -0
- package/src/plugins/bluefin/clmmsJob.js +45 -0
- package/src/plugins/bluefin/clmmsJob.js.map +1 -0
- package/src/plugins/bluefin/constants.d.ts +5 -0
- package/src/plugins/bluefin/constants.js +6 -1
- package/src/plugins/bluefin/constants.js.map +1 -1
- package/src/plugins/bluefin/helpers.d.ts +7 -0
- package/src/plugins/bluefin/helpers.js +65 -0
- package/src/plugins/bluefin/helpers.js.map +1 -0
- package/src/plugins/bluefin/index.js +9 -2
- package/src/plugins/bluefin/index.js.map +1 -1
- package/src/plugins/bluefin/types.d.ts +76 -0
- package/src/plugins/cetus/clmmsFetcher.js +12 -20
- package/src/plugins/cetus/clmmsFetcher.js.map +1 -1
- package/src/plugins/cetus/getPools.d.ts +2 -2
- package/src/plugins/cetus/getPools.js +20 -7
- package/src/plugins/cetus/getPools.js.map +1 -1
- package/src/plugins/cetus/index.js +2 -1
- package/src/plugins/cetus/index.js.map +1 -1
- package/src/plugins/cetus/poolsStatsJob.d.ts +3 -0
- package/src/plugins/cetus/poolsStatsJob.js +45 -0
- package/src/plugins/cetus/poolsStatsJob.js.map +1 -0
- package/src/plugins/cetus/types.d.ts +7 -0
- package/src/plugins/cetus/types.js.map +1 -1
- package/src/plugins/coinmarketcap/constants.d.ts +3 -9
- package/src/plugins/coinmarketcap/constants.js +20 -4
- package/src/plugins/coinmarketcap/constants.js.map +1 -1
- package/src/plugins/coinmarketcap/pricingJob.js +7 -5
- package/src/plugins/coinmarketcap/pricingJob.js.map +1 -1
- package/src/plugins/coinmarketcap/types.d.ts +21 -0
- package/src/plugins/coinmarketcap/types.js +3 -0
- package/src/plugins/coinmarketcap/types.js.map +1 -0
- package/src/plugins/flowx/stakingPoolV3Fetcher.js +12 -44
- package/src/plugins/flowx/stakingPoolV3Fetcher.js.map +1 -1
- package/src/plugins/kriya/clmmsFetcher.js +19 -22
- package/src/plugins/kriya/clmmsFetcher.js.map +1 -1
- package/src/plugins/kriya/constants.d.ts +3 -0
- package/src/plugins/kriya/constants.js +4 -1
- package/src/plugins/kriya/constants.js.map +1 -1
- package/src/plugins/kriya/index.js +7 -1
- package/src/plugins/kriya/index.js.map +1 -1
- package/src/plugins/kriya/poolsStatsJob.d.ts +3 -0
- package/src/plugins/kriya/poolsStatsJob.js +46 -0
- package/src/plugins/kriya/poolsStatsJob.js.map +1 -0
- package/src/plugins/kriya/types/pools.d.ts +8 -0
- package/src/plugins/orca/getWhirlpoolPositions.js +49 -107
- package/src/plugins/orca/getWhirlpoolPositions.js.map +1 -1
- package/src/plugins/orca/index.js +2 -1
- package/src/plugins/orca/index.js.map +1 -1
- package/src/plugins/orca/types.d.ts +6 -0
- package/src/plugins/orca/types.js +3 -0
- package/src/plugins/orca/types.js.map +1 -0
- package/src/plugins/orca/whirlpoolsStatsJob.d.ts +3 -0
- package/src/plugins/orca/whirlpoolsStatsJob.js +51 -0
- package/src/plugins/orca/whirlpoolsStatsJob.js.map +1 -0
- package/src/plugins/raydium/getRaydiumCLMMPositions.js +32 -91
- package/src/plugins/raydium/getRaydiumCLMMPositions.js.map +1 -1
- package/src/plugins/turbos/clmmVaultFetcher.js +13 -51
- package/src/plugins/turbos/clmmVaultFetcher.js.map +1 -1
- package/src/plugins/turbos/clmmsPositionsFetcher.js +11 -48
- package/src/plugins/turbos/clmmsPositionsFetcher.js.map +1 -1
- package/src/utils/clmm/estPositionAPRWithDeltaMethod.d.ts +6 -0
- package/src/utils/clmm/estPositionAPRWithDeltaMethod.js +72 -0
- package/src/utils/clmm/estPositionAPRWithDeltaMethod.js.map +1 -0
- package/src/utils/elementbuilder/AssetBuilder.js +3 -3
- package/src/utils/elementbuilder/AssetBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ConcentratedLiquidityParams.d.ts +16 -0
- package/src/utils/elementbuilder/ConcentratedLiquidityParams.js +3 -0
- package/src/utils/elementbuilder/ConcentratedLiquidityParams.js.map +1 -0
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.d.ts +13 -0
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.js +71 -0
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.js.map +1 -0
- package/src/utils/elementbuilder/ElementRegistry.d.ts +5 -1
- package/src/utils/elementbuilder/ElementRegistry.js +10 -4
- package/src/utils/elementbuilder/ElementRegistry.js.map +1 -1
@@ -8,20 +8,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
12
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
13
|
const constants_1 = require("./constants");
|
18
14
|
const getOwnedObjects_1 = require("../../utils/sui/getOwnedObjects");
|
19
15
|
const clients_1 = require("../../utils/clients");
|
20
16
|
const multiGetObjects_1 = require("../../utils/sui/multiGetObjects");
|
21
|
-
const tokenAmountFromLiquidity_1 = require("../../utils/clmm/tokenAmountFromLiquidity");
|
22
|
-
const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
|
23
17
|
const multiDynamicFieldObjects_1 = require("../../utils/sui/multiDynamicFieldObjects");
|
24
18
|
const bitsToNumber_1 = require("../../utils/sui/bitsToNumber");
|
19
|
+
const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
|
25
20
|
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
26
21
|
var _a;
|
27
22
|
const client = (0, clients_1.getClientSui)();
|
@@ -99,18 +94,12 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
99
94
|
if (vaultsInfoObj.length === 0)
|
100
95
|
return [];
|
101
96
|
const vaultInfoById = new Map();
|
102
|
-
const coins = new Set();
|
103
97
|
vaultsInfoObj.forEach((vault) => {
|
104
98
|
var _a;
|
105
99
|
if ((_a = vault.data) === null || _a === void 0 ? void 0 : _a.content) {
|
106
100
|
vaultInfoById.set(vault.data.objectId, vault.data.content.fields);
|
107
|
-
coins.add((0, portfolio_core_1.formatMoveTokenAddress)(vault.data.content.fields.value.fields.value.fields.coin_a_type_name
|
108
|
-
.fields.name));
|
109
|
-
coins.add((0, portfolio_core_1.formatMoveTokenAddress)(vault.data.content.fields.value.fields.value.fields.coin_b_type_name
|
110
|
-
.fields.name));
|
111
101
|
}
|
112
102
|
});
|
113
|
-
const tokenPriceById = yield cache.getTokenPricesAsMap(Array.from(coins), portfolio_core_1.NetworkId.sui);
|
114
103
|
const clmmPositions = vaultsInfoObj
|
115
104
|
.map((vault) => {
|
116
105
|
var _a, _b;
|
@@ -127,8 +116,7 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
127
116
|
return;
|
128
117
|
clmmPositionById.set((_b = vault.data) === null || _b === void 0 ? void 0 : _b.objectId, vault.data.content.fields);
|
129
118
|
});
|
130
|
-
const
|
131
|
-
let totalLiquidityValue = 0;
|
119
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.sui, constants_1.platformId);
|
132
120
|
for (const vaultInfoObject of vaultsInfoObj) {
|
133
121
|
if (!((_a = vaultInfoObject.data) === null || _a === void 0 ? void 0 : _a.content))
|
134
122
|
continue;
|
@@ -137,45 +125,19 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
137
125
|
const clmmPosition = clmmPositionById.get(vaultInfo.base_clmm_position_id);
|
138
126
|
if (!pool || !clmmPosition)
|
139
127
|
continue;
|
140
|
-
const
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
!assetTokenB ||
|
151
|
-
assetTokenA.value === null ||
|
152
|
-
assetTokenB.value === null)
|
153
|
-
continue;
|
154
|
-
const value = assetTokenA.value + assetTokenB.value;
|
155
|
-
assets.push({
|
156
|
-
assets: [assetTokenA, assetTokenB],
|
157
|
-
assetsValue: value,
|
158
|
-
rewardAssets: [],
|
159
|
-
rewardAssetsValue: 0,
|
160
|
-
value,
|
161
|
-
yields: [],
|
128
|
+
const element = elementRegistry.addElementConcentratedLiquidity({
|
129
|
+
label: 'Vault',
|
130
|
+
});
|
131
|
+
element.setLiquidity({
|
132
|
+
addressA: vaultInfo.coin_a_type_name.fields.name,
|
133
|
+
addressB: vaultInfo.coin_b_type_name.fields.name,
|
134
|
+
liquidity: clmmPosition.liquidity,
|
135
|
+
tickCurrentIndex: (0, bitsToNumber_1.bitsToNumber)(vaultInfo.base_last_tick_index.fields.bits),
|
136
|
+
tickLowerIndex: (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_lower_index.fields.bits),
|
137
|
+
tickUpperIndex: (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_upper_index.fields.bits),
|
162
138
|
});
|
163
|
-
totalLiquidityValue += value;
|
164
139
|
}
|
165
|
-
|
166
|
-
return [];
|
167
|
-
return [
|
168
|
-
{
|
169
|
-
type: portfolio_core_1.PortfolioElementType.liquidity,
|
170
|
-
networkId: portfolio_core_1.NetworkId.sui,
|
171
|
-
platformId: constants_1.platformId,
|
172
|
-
label: 'Vault',
|
173
|
-
value: totalLiquidityValue,
|
174
|
-
data: {
|
175
|
-
liquidities: assets,
|
176
|
-
},
|
177
|
-
},
|
178
|
-
];
|
140
|
+
return elementRegistry.getElements(cache);
|
179
141
|
});
|
180
142
|
const fetcher = {
|
181
143
|
id: `${constants_1.platformId}-clmm-vault`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clmmVaultFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/turbos/clmmVaultFetcher.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"clmmVaultFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/turbos/clmmVaultFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -8,20 +8,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
9
|
});
|
10
10
|
};
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
-
};
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
12
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
13
|
const constants_1 = require("./constants");
|
18
14
|
const clients_1 = require("../../utils/clients");
|
19
|
-
const tokenAmountFromLiquidity_1 = require("../../utils/clmm/tokenAmountFromLiquidity");
|
20
|
-
const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
|
21
15
|
const helper_1 = require("./helper");
|
22
16
|
const getOwnedObjects_1 = require("../../utils/sui/getOwnedObjects");
|
23
17
|
const multiGetObjects_1 = require("../../utils/sui/multiGetObjects");
|
24
18
|
const bitsToNumber_1 = require("../../utils/sui/bitsToNumber");
|
19
|
+
const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
|
25
20
|
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
26
21
|
var _a, _b;
|
27
22
|
const client = (0, clients_1.getClientSui)();
|
@@ -70,8 +65,7 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
70
65
|
showDisplay: true,
|
71
66
|
showOwner: true,
|
72
67
|
});
|
73
|
-
const
|
74
|
-
let totalLiquidityValue = 0;
|
68
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.sui, constants_1.platformId);
|
75
69
|
for (let i = 0; i < clmmPositionsRes.length; i++) {
|
76
70
|
const clmmPosition = (_b = (_a = clmmPositionsRes[i].data) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.fields;
|
77
71
|
if (!clmmPosition)
|
@@ -82,49 +76,18 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
|
|
82
76
|
const pool = poolsById.get(nftPosition.pool_id);
|
83
77
|
if (!pool)
|
84
78
|
continue;
|
85
|
-
const { tokenAmountA, tokenAmountB } = (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(new bignumber_js_1.default(clmmPosition.liquidity), (0, bitsToNumber_1.bitsToNumber)(pool.tick_current_index.fields.bits), (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_lower_index.fields.bits), (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_upper_index.fields.bits), false);
|
86
79
|
// TODO : améliorer le problème du 0x000002::sui::SUI + manque de 0x
|
87
|
-
const
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
continue;
|
96
|
-
const assetTokenB = (0, tokenPriceToAssetToken_1.default)(coinB, tokenAmountB.dividedBy(Math.pow(10, tokenPriceB.decimals)).toNumber(), portfolio_core_1.NetworkId.sui, tokenPriceB);
|
97
|
-
if (!assetTokenA ||
|
98
|
-
!assetTokenB ||
|
99
|
-
assetTokenA.value === null ||
|
100
|
-
assetTokenB.value === null)
|
101
|
-
continue;
|
102
|
-
const value = assetTokenA.value + assetTokenB.value;
|
103
|
-
assets.push({
|
104
|
-
assets: [assetTokenA, assetTokenB],
|
105
|
-
assetsValue: value,
|
106
|
-
rewardAssets: [],
|
107
|
-
rewardAssetsValue: 0,
|
108
|
-
value,
|
109
|
-
yields: [],
|
80
|
+
const element = elementRegistry.addElementConcentratedLiquidity();
|
81
|
+
element.setLiquidity({
|
82
|
+
addressA: (0, helper_1.formatForNative)(`0x${nftPosition.coin_type_a.fields.name}`),
|
83
|
+
addressB: (0, helper_1.formatForNative)(`0x${nftPosition.coin_type_b.fields.name}`),
|
84
|
+
liquidity: clmmPosition.liquidity,
|
85
|
+
tickCurrentIndex: (0, bitsToNumber_1.bitsToNumber)(pool.tick_current_index.fields.bits),
|
86
|
+
tickLowerIndex: (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_lower_index.fields.bits),
|
87
|
+
tickUpperIndex: (0, bitsToNumber_1.bitsToNumber)(clmmPosition.tick_upper_index.fields.bits),
|
110
88
|
});
|
111
|
-
totalLiquidityValue += value;
|
112
89
|
}
|
113
|
-
|
114
|
-
return [];
|
115
|
-
return [
|
116
|
-
{
|
117
|
-
type: portfolio_core_1.PortfolioElementType.liquidity,
|
118
|
-
networkId: portfolio_core_1.NetworkId.sui,
|
119
|
-
platformId: constants_1.platformId,
|
120
|
-
label: 'LiquidityPool',
|
121
|
-
tags: ['Concentrated'],
|
122
|
-
value: totalLiquidityValue,
|
123
|
-
data: {
|
124
|
-
liquidities: assets,
|
125
|
-
},
|
126
|
-
},
|
127
|
-
];
|
90
|
+
return elementRegistry.getElements(cache);
|
128
91
|
});
|
129
92
|
const fetcher = {
|
130
93
|
id: `${constants_1.platformId}-clmms-positions`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clmmsPositionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/turbos/clmmsPositionsFetcher.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"clmmsPositionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/turbos/clmmsPositionsFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import BN from 'bn.js';
|
2
|
+
import Decimal from 'decimal.js';
|
3
|
+
export type EstPosAPRResult = {
|
4
|
+
feeAPR: Decimal;
|
5
|
+
};
|
6
|
+
export declare function estPositionAPRWithDeltaMethod(currentTickIndex: number, lowerTickIndex: number, upperTickIndex: number, currentSqrtPriceX64: BN, poolLiquidity: BN, decimalsA: number, decimalsB: number, feeRate: number, amountAStr: string, amountBStr: string, swapVolumeStr: string, coinAPriceStr: string, coinBPriceStr: string): EstPosAPRResult;
|
@@ -0,0 +1,72 @@
|
|
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.estPositionAPRWithDeltaMethod = void 0;
|
7
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
8
|
+
const tokenAmountFromLiquidity_1 = require("./tokenAmountFromLiquidity");
|
9
|
+
const toBN_1 = require("../misc/toBN");
|
10
|
+
const Q_64 = '18446744073709551616';
|
11
|
+
function toX64Decimal(num) {
|
12
|
+
return num.mul(decimal_js_1.default.pow(2, 64));
|
13
|
+
}
|
14
|
+
function fromX64(num) {
|
15
|
+
return new decimal_js_1.default(num.toString()).mul(decimal_js_1.default.pow(2, -64));
|
16
|
+
}
|
17
|
+
function estPositionAPRWithDeltaMethod(currentTickIndex, lowerTickIndex, upperTickIndex, currentSqrtPriceX64, poolLiquidity, decimalsA, decimalsB, feeRate, amountAStr, amountBStr, swapVolumeStr, coinAPriceStr, coinBPriceStr) {
|
18
|
+
const amountA = new decimal_js_1.default(amountAStr);
|
19
|
+
const amountB = new decimal_js_1.default(amountBStr);
|
20
|
+
const swapVolume = new decimal_js_1.default(swapVolumeStr);
|
21
|
+
const coinAPrice = new decimal_js_1.default(coinAPriceStr);
|
22
|
+
const coinBPrice = new decimal_js_1.default(coinBPriceStr);
|
23
|
+
const lowerSqrtPriceX64 = (0, toBN_1.toBN)((0, tokenAmountFromLiquidity_1.tickIndexToSqrtPriceX64)(lowerTickIndex));
|
24
|
+
const upperSqrtPriceX64 = (0, toBN_1.toBN)((0, tokenAmountFromLiquidity_1.tickIndexToSqrtPriceX64)(upperTickIndex));
|
25
|
+
const lowerSqrtPriceD = toX64Decimal(fromX64(lowerSqrtPriceX64)).round();
|
26
|
+
const upperSqrtPriceD = toX64Decimal(fromX64(upperSqrtPriceX64)).round();
|
27
|
+
const currentSqrtPriceD = toX64Decimal(fromX64(currentSqrtPriceX64)).round();
|
28
|
+
let deltaLiquidity;
|
29
|
+
const liquidityAmount0 = amountA
|
30
|
+
.mul(new decimal_js_1.default(Math.pow(10, decimalsA)))
|
31
|
+
.mul(upperSqrtPriceD.mul(lowerSqrtPriceD))
|
32
|
+
.div(Q_64)
|
33
|
+
.div(upperSqrtPriceD.sub(lowerSqrtPriceD))
|
34
|
+
.round();
|
35
|
+
const liquidityAmount1 = amountB
|
36
|
+
.mul(new decimal_js_1.default(Math.pow(10, decimalsB)))
|
37
|
+
.mul(Q_64)
|
38
|
+
.div(upperSqrtPriceD.sub(lowerSqrtPriceD))
|
39
|
+
.round();
|
40
|
+
if (currentTickIndex < lowerTickIndex) {
|
41
|
+
deltaLiquidity = liquidityAmount0;
|
42
|
+
}
|
43
|
+
else if (currentTickIndex > upperTickIndex) {
|
44
|
+
deltaLiquidity = liquidityAmount1;
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
deltaLiquidity = decimal_js_1.default.min(liquidityAmount0, liquidityAmount1);
|
48
|
+
}
|
49
|
+
const deltaY = deltaLiquidity
|
50
|
+
.mul(currentSqrtPriceD.sub(lowerSqrtPriceD))
|
51
|
+
.div(Q_64);
|
52
|
+
const deltaX = deltaLiquidity
|
53
|
+
.mul(upperSqrtPriceD.sub(currentSqrtPriceD))
|
54
|
+
.div(currentSqrtPriceD.mul(upperSqrtPriceD))
|
55
|
+
.mul(Q_64);
|
56
|
+
const posValidTVL = deltaX
|
57
|
+
.div(new decimal_js_1.default(Math.pow(10, decimalsA)))
|
58
|
+
.mul(coinAPrice)
|
59
|
+
.add(deltaY.div(new decimal_js_1.default(Math.pow(10, decimalsB)).mul(coinBPrice)));
|
60
|
+
const feeAPR = deltaLiquidity.eq(new decimal_js_1.default(0))
|
61
|
+
? new decimal_js_1.default(0)
|
62
|
+
: new decimal_js_1.default(feeRate)
|
63
|
+
.mul(swapVolume)
|
64
|
+
.mul(new decimal_js_1.default(deltaLiquidity.toString()).div(new decimal_js_1.default(poolLiquidity.toString()).add(new decimal_js_1.default(deltaLiquidity.toString()))))
|
65
|
+
.div(posValidTVL)
|
66
|
+
.mul(365);
|
67
|
+
return {
|
68
|
+
feeAPR,
|
69
|
+
};
|
70
|
+
}
|
71
|
+
exports.estPositionAPRWithDeltaMethod = estPositionAPRWithDeltaMethod;
|
72
|
+
//# sourceMappingURL=estPositionAPRWithDeltaMethod.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"estPositionAPRWithDeltaMethod.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/clmm/estPositionAPRWithDeltaMethod.ts"],"names":[],"mappings":"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"}
|
@@ -15,12 +15,12 @@ class AssetBuilder {
|
|
15
15
|
this.alreadyShifted = params.alreadyShifted || false;
|
16
16
|
}
|
17
17
|
getUnderlyings(networkId, tokenPrices) {
|
18
|
-
let amount = new bignumber_js_1.default(this.amount);
|
19
|
-
if (amount.isZero())
|
20
|
-
return [];
|
21
18
|
const tokenPrice = tokenPrices.get(this.address);
|
22
19
|
if (!tokenPrice)
|
23
20
|
return [];
|
21
|
+
let amount = new bignumber_js_1.default(this.amount);
|
22
|
+
if (amount.isZero() && tokenPrice.underlyings)
|
23
|
+
return [];
|
24
24
|
if (!this.alreadyShifted)
|
25
25
|
amount = amount.dividedBy(Math.pow(10, tokenPrice.decimals));
|
26
26
|
return (0, tokenPriceToAssetTokens_1.default)(tokenPrice.address, amount.toNumber(), networkId, tokenPrice, undefined, this.attributes);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AssetBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetBuilder.ts"],"names":[],"mappings":";;;;;;AAKA,gEAAqC;AAErC,4FAAoE;AAEpE,8FAAsE;AAEtE,MAAa,YAAY;IAMvB,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;IACvD,CAAC;IAED,cAAc,CACZ,SAAwB,EACxB,WAA0B;QAE1B,
|
1
|
+
{"version":3,"file":"AssetBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetBuilder.ts"],"names":[],"mappings":";;;;;;AAKA,gEAAqC;AAErC,4FAAoE;AAEpE,8FAAsE;AAEtE,MAAa,YAAY;IAMvB,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;IACvD,CAAC;IAED,cAAc,CACZ,SAAwB,EACxB,WAA0B;QAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,OAAO,IAAA,iCAAuB,EAC5B,UAAU,CAAC,OAAO,EAClB,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,WAA0B;QAE1B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,OAAO,IAAA,gCAAsB,EAC3B,UAAU,CAAC,OAAO,EAClB,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;CACF;AA1DD,oCA0DC"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
3
|
+
export type ConcentratedLiquidityParams = {
|
4
|
+
addressA: string | PublicKey;
|
5
|
+
addressB: string | PublicKey;
|
6
|
+
liquidity: number | BigNumber | string;
|
7
|
+
tickCurrentIndex: number | BigNumber | string;
|
8
|
+
tickLowerIndex: number | BigNumber | string;
|
9
|
+
tickUpperIndex: number | BigNumber | string;
|
10
|
+
currentSqrtPrice?: number | BigNumber | string;
|
11
|
+
poolLiquidity?: number | BigNumber | string;
|
12
|
+
feeRate?: number | BigNumber | string;
|
13
|
+
swapVolume24h?: number | BigNumber | string;
|
14
|
+
roundUp?: boolean;
|
15
|
+
name?: string;
|
16
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ConcentratedLiquidityParams.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ConcentratedLiquidityParams.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { NetworkIdType, PortfolioElement } from '@sonarwatch/portfolio-core';
|
2
|
+
import { ConcentratedLiquidityParams } from './ConcentratedLiquidityParams';
|
3
|
+
import { ElementLiquidityBuilder } from './ElementLiquidityBuilder';
|
4
|
+
import { LiquidityParams } from './LiquidityParams';
|
5
|
+
import { LiquidityBuilder } from './LiquidityBuilder';
|
6
|
+
import { TokenPriceMap } from '../../TokenPriceMap';
|
7
|
+
export declare class ElementConcentratedLiquidityBuilder extends ElementLiquidityBuilder {
|
8
|
+
concentratedLiquidityParams?: ConcentratedLiquidityParams;
|
9
|
+
addLiquidity(params?: LiquidityParams): LiquidityBuilder;
|
10
|
+
setLiquidity(params: ConcentratedLiquidityParams): LiquidityBuilder;
|
11
|
+
mints(): string[];
|
12
|
+
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap): PortfolioElement | null;
|
13
|
+
}
|
@@ -0,0 +1,71 @@
|
|
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.ElementConcentratedLiquidityBuilder = void 0;
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
8
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
9
|
+
const ElementLiquidityBuilder_1 = require("./ElementLiquidityBuilder");
|
10
|
+
const LiquidityBuilder_1 = require("./LiquidityBuilder");
|
11
|
+
const tokenAmountFromLiquidity_1 = require("../clmm/tokenAmountFromLiquidity");
|
12
|
+
const estPositionAPRWithDeltaMethod_1 = require("../clmm/estPositionAPRWithDeltaMethod");
|
13
|
+
const toBN_1 = require("../misc/toBN");
|
14
|
+
class ElementConcentratedLiquidityBuilder extends ElementLiquidityBuilder_1.ElementLiquidityBuilder {
|
15
|
+
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/no-shadow,@typescript-eslint/no-unused-vars
|
16
|
+
addLiquidity(params) {
|
17
|
+
throw new Error('Use setLiquidity for ElementConcentratedLiquidityBuilder');
|
18
|
+
}
|
19
|
+
setLiquidity(params) {
|
20
|
+
this.concentratedLiquidityParams = params;
|
21
|
+
const liquidityBuilder = new LiquidityBuilder_1.LiquidityBuilder({ name: params.name });
|
22
|
+
this.liquidities = [liquidityBuilder];
|
23
|
+
return liquidityBuilder;
|
24
|
+
}
|
25
|
+
mints() {
|
26
|
+
var _a, _b;
|
27
|
+
const mints = this.liquidities.map((liquidity) => liquidity.mints()).flat();
|
28
|
+
if ((_a = this.concentratedLiquidityParams) === null || _a === void 0 ? void 0 : _a.addressA)
|
29
|
+
mints.push(this.concentratedLiquidityParams.addressA.toString());
|
30
|
+
if ((_b = this.concentratedLiquidityParams) === null || _b === void 0 ? void 0 : _b.addressB)
|
31
|
+
mints.push(this.concentratedLiquidityParams.addressB.toString());
|
32
|
+
return mints;
|
33
|
+
}
|
34
|
+
get(networkId, platformId, tokenPrices) {
|
35
|
+
if (!this.liquidities[0] || !this.concentratedLiquidityParams)
|
36
|
+
return null;
|
37
|
+
const { tokenAmountA, tokenAmountB } = (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(new bignumber_js_1.default(this.concentratedLiquidityParams.liquidity), Number(this.concentratedLiquidityParams.tickCurrentIndex.toString()), Number(this.concentratedLiquidityParams.tickLowerIndex.toString()), Number(this.concentratedLiquidityParams.tickUpperIndex.toString()), this.concentratedLiquidityParams.roundUp || false);
|
38
|
+
const liquidityBuilder = this.liquidities[0];
|
39
|
+
liquidityBuilder.addAsset({
|
40
|
+
address: this.concentratedLiquidityParams.addressA,
|
41
|
+
amount: tokenAmountA,
|
42
|
+
});
|
43
|
+
liquidityBuilder.addAsset({
|
44
|
+
address: this.concentratedLiquidityParams.addressB,
|
45
|
+
amount: tokenAmountB,
|
46
|
+
});
|
47
|
+
if (this.concentratedLiquidityParams.feeRate &&
|
48
|
+
this.concentratedLiquidityParams.currentSqrtPrice &&
|
49
|
+
this.concentratedLiquidityParams.swapVolume24h &&
|
50
|
+
this.concentratedLiquidityParams.poolLiquidity) {
|
51
|
+
if (tokenAmountA.gt(0) && tokenAmountB.gt(0)) {
|
52
|
+
const tokenPriceA = tokenPrices.get(this.concentratedLiquidityParams.addressA.toString());
|
53
|
+
const tokenPriceB = tokenPrices.get(this.concentratedLiquidityParams.addressB.toString());
|
54
|
+
if (tokenPriceA && tokenPriceB) {
|
55
|
+
const { feeAPR } = (0, estPositionAPRWithDeltaMethod_1.estPositionAPRWithDeltaMethod)(Number(this.concentratedLiquidityParams.tickCurrentIndex.toString()), Number(this.concentratedLiquidityParams.tickLowerIndex.toString()), Number(this.concentratedLiquidityParams.tickUpperIndex.toString()), (0, toBN_1.toBN)(this.concentratedLiquidityParams.currentSqrtPrice), (0, toBN_1.toBN)(this.concentratedLiquidityParams.poolLiquidity), tokenPriceA.decimals, tokenPriceB.decimals, Number(this.concentratedLiquidityParams.feeRate.toString()), `${tokenAmountA.dividedBy(Math.pow(10, tokenPriceA.decimals))}`, `${tokenAmountB.dividedBy(Math.pow(10, tokenPriceB.decimals))}`, `${this.concentratedLiquidityParams.swapVolume24h}`, `${tokenPriceA.price}`, `${tokenPriceB.price}`);
|
56
|
+
if (feeAPR && Number(feeAPR) >= 0) {
|
57
|
+
liquidityBuilder.addYield((0, portfolio_core_1.yieldFromApr)(Number(feeAPR) / 100));
|
58
|
+
}
|
59
|
+
}
|
60
|
+
else {
|
61
|
+
liquidityBuilder.addYield((0, portfolio_core_1.yieldFromApr)(0));
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
if (tokenAmountA.isZero() || tokenAmountB.isZero())
|
66
|
+
this.addTag('Out Of Range');
|
67
|
+
return super.get(networkId, platformId, tokenPrices);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
exports.ElementConcentratedLiquidityBuilder = ElementConcentratedLiquidityBuilder;
|
71
|
+
//# sourceMappingURL=ElementConcentratedLiquidityBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ElementConcentratedLiquidityBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkIdType, PortfolioElement } from '@sonarwatch/portfolio-core';
|
1
|
+
import { NetworkIdType, PortfolioElement, PortfolioElementLabel } from '@sonarwatch/portfolio-core';
|
2
2
|
import { ElementBuilder } from './ElementBuilder';
|
3
3
|
import { ElementParams } from './ElementParams';
|
4
4
|
import { Cache } from '../../Cache';
|
@@ -6,6 +6,7 @@ import { ElementMultipleBuilder } from './ElementMultipleBuilder';
|
|
6
6
|
import { ElementLiquidityBuilder } from './ElementLiquidityBuilder';
|
7
7
|
import { ElementBorrowlendBuilder } from './ElementBorrowlendBuilder';
|
8
8
|
import { ElementLeverageBuilder } from './ElementLeverageBuilder';
|
9
|
+
import { ElementConcentratedLiquidityBuilder } from './ElementConcentratedLiquidityBuilder';
|
9
10
|
export declare class ElementRegistry {
|
10
11
|
readonly networkId: NetworkIdType;
|
11
12
|
readonly platformId: string;
|
@@ -13,6 +14,9 @@ export declare class ElementRegistry {
|
|
13
14
|
constructor(networkId: NetworkIdType, platformId: string);
|
14
15
|
addElementMultiple(params: Omit<ElementParams, 'type'>): ElementMultipleBuilder;
|
15
16
|
addElementLiquidity(params: Omit<ElementParams, 'type'>): ElementLiquidityBuilder;
|
17
|
+
addElementConcentratedLiquidity(elementParams?: Omit<ElementParams, 'type' | 'label'> & {
|
18
|
+
label?: PortfolioElementLabel;
|
19
|
+
}): ElementConcentratedLiquidityBuilder;
|
16
20
|
addElementBorrowlend(params: Omit<ElementParams, 'type'>): ElementBorrowlendBuilder;
|
17
21
|
addElementLeverage(params: Omit<ElementParams, 'type'>): ElementLeverageBuilder;
|
18
22
|
getElements(cache: Cache): Promise<PortfolioElement[]>;
|
@@ -15,6 +15,7 @@ const ElementMultipleBuilder_1 = require("./ElementMultipleBuilder");
|
|
15
15
|
const ElementLiquidityBuilder_1 = require("./ElementLiquidityBuilder");
|
16
16
|
const ElementBorrowlendBuilder_1 = require("./ElementBorrowlendBuilder");
|
17
17
|
const ElementLeverageBuilder_1 = require("./ElementLeverageBuilder");
|
18
|
+
const ElementConcentratedLiquidityBuilder_1 = require("./ElementConcentratedLiquidityBuilder");
|
18
19
|
class ElementRegistry {
|
19
20
|
constructor(networkId, platformId) {
|
20
21
|
this.networkId = networkId;
|
@@ -22,22 +23,27 @@ class ElementRegistry {
|
|
22
23
|
this.elements = [];
|
23
24
|
}
|
24
25
|
addElementMultiple(params) {
|
25
|
-
const elementBuilder = new ElementMultipleBuilder_1.ElementMultipleBuilder(Object.assign({ type: portfolio_core_1.PortfolioElementType.multiple }
|
26
|
+
const elementBuilder = new ElementMultipleBuilder_1.ElementMultipleBuilder(Object.assign(Object.assign({}, params), { type: portfolio_core_1.PortfolioElementType.multiple }));
|
26
27
|
this.elements.push(elementBuilder);
|
27
28
|
return elementBuilder;
|
28
29
|
}
|
29
30
|
addElementLiquidity(params) {
|
30
|
-
const elementBuilder = new ElementLiquidityBuilder_1.ElementLiquidityBuilder(Object.assign({ type: portfolio_core_1.PortfolioElementType.liquidity }
|
31
|
+
const elementBuilder = new ElementLiquidityBuilder_1.ElementLiquidityBuilder(Object.assign(Object.assign({}, params), { type: portfolio_core_1.PortfolioElementType.liquidity }));
|
32
|
+
this.elements.push(elementBuilder);
|
33
|
+
return elementBuilder;
|
34
|
+
}
|
35
|
+
addElementConcentratedLiquidity(elementParams) {
|
36
|
+
const elementBuilder = new ElementConcentratedLiquidityBuilder_1.ElementConcentratedLiquidityBuilder(Object.assign(Object.assign({}, elementParams), { type: portfolio_core_1.PortfolioElementType.liquidity, tags: [...((elementParams === null || elementParams === void 0 ? void 0 : elementParams.tags) || []), 'Concentrated'], label: (elementParams === null || elementParams === void 0 ? void 0 : elementParams.label) || 'LiquidityPool' }));
|
31
37
|
this.elements.push(elementBuilder);
|
32
38
|
return elementBuilder;
|
33
39
|
}
|
34
40
|
addElementBorrowlend(params) {
|
35
|
-
const elementBuilder = new ElementBorrowlendBuilder_1.ElementBorrowlendBuilder(Object.assign({ type: portfolio_core_1.PortfolioElementType.borrowlend }
|
41
|
+
const elementBuilder = new ElementBorrowlendBuilder_1.ElementBorrowlendBuilder(Object.assign(Object.assign({}, params), { type: portfolio_core_1.PortfolioElementType.borrowlend }));
|
36
42
|
this.elements.push(elementBuilder);
|
37
43
|
return elementBuilder;
|
38
44
|
}
|
39
45
|
addElementLeverage(params) {
|
40
|
-
const elementBuilder = new ElementLeverageBuilder_1.ElementLeverageBuilder(Object.assign({ type: portfolio_core_1.PortfolioElementType.leverage }
|
46
|
+
const elementBuilder = new ElementLeverageBuilder_1.ElementLeverageBuilder(Object.assign(Object.assign({}, params), { type: portfolio_core_1.PortfolioElementType.leverage }));
|
41
47
|
this.elements.push(elementBuilder);
|
42
48
|
return elementBuilder;
|
43
49
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementRegistry.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementRegistry.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+
|
1
|
+
{"version":3,"file":"ElementRegistry.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementRegistry.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAKoC;AAIpC,qEAAkE;AAClE,uEAAoE;AACpE,yEAAsE;AACtE,qEAAkE;AAClE,+FAA4F;AAE5F,MAAa,eAAe;IAK1B,YAAY,SAAwB,EAAE,UAAkB;QACtD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,kBAAkB,CAChB,MAAmC;QAEnC,MAAM,cAAc,GAAG,IAAI,+CAAsB,iCAC5C,MAAM,KACT,IAAI,EAAE,qCAAoB,CAAC,QAAQ,IACnC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,mBAAmB,CACjB,MAAmC;QAEnC,MAAM,cAAc,GAAG,IAAI,iDAAuB,iCAC7C,MAAM,KACT,IAAI,EAAE,qCAAoB,CAAC,SAAS,IACpC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,+BAA+B,CAC7B,aAEC;QAED,MAAM,cAAc,GAAG,IAAI,yEAAmC,iCACzD,aAAa,KAChB,IAAI,EAAE,qCAAoB,CAAC,SAAS,EACpC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,KAAI,EAAE,CAAC,EAAE,cAAc,CAAC,EACtD,KAAK,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,KAAI,eAAe,IAC9C,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,oBAAoB,CAClB,MAAmC;QAEnC,MAAM,cAAc,GAAG,IAAI,mDAAwB,iCAC9C,MAAM,KACT,IAAI,EAAE,qCAAoB,CAAC,UAAU,IACrC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,kBAAkB,CAChB,MAAmC;QAEnC,MAAM,cAAc,GAAG,IAAI,+CAAsB,iCAC5C,MAAM,KACT,IAAI,EAAE,qCAAoB,CAAC,QAAQ,IACnC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,OAAO,cAAc,CAAC;IACxB,CAAC;IAEK,WAAW,CAAC,KAAY;;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAE3E,OAAO,IAAI,CAAC,QAAQ;iBACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;iBAC/D,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CACtB,CAAC;QAC5B,CAAC;KAAA;CACF;AAhFD,0CAgFC"}
|