@sonarwatch/portfolio-plugins 0.8.72 → 0.8.74
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 +9 -1
- package/package.json +2 -2
- package/src/plugins/fluxbeam/poolsJob.js +41 -12
- package/src/plugins/fluxbeam/poolsJob.js.map +1 -1
- package/src/plugins/fluxbeam/structs.d.ts +1 -1
- package/src/plugins/fluxbeam/structs.js +1 -1
- package/src/plugins/fluxbeam/structs.js.map +1 -1
- package/src/plugins/jupiter/poolJob.js +6 -5
- package/src/plugins/jupiter/poolJob.js.map +1 -1
- package/src/plugins/uniswap-v2/helpers.js +22 -22
- package/src/utils/misc/constants.d.ts +2 -0
- package/src/utils/misc/constants.js +6 -1
- package/src/utils/misc/constants.js.map +1 -1
- package/src/utils/misc/getLpUnderlyingTokenSource.d.ts +21 -0
- package/src/utils/misc/getLpUnderlyingTokenSource.js +80 -0
- package/src/utils/misc/getLpUnderlyingTokenSource.js.map +1 -0
- package/src/utils/misc/getSourceWeight.d.ts +3 -2
- package/src/utils/misc/getSourceWeight.js +10 -6
- package/src/utils/misc/getSourceWeight.js.map +1 -1
package/CHANGELOG.md
CHANGED
@@ -2,10 +2,18 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
-
## [0.8.
|
5
|
+
## [0.8.74](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.73...plugins-0.8.74) (2023-11-11)
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
## [0.8.73](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.72...plugins-0.8.73) (2023-11-10)
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
## [0.8.72](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.71...plugins-0.8.72) (2023-11-10)
|
14
|
+
|
15
|
+
|
16
|
+
|
9
17
|
## [0.8.71](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.70...plugins-0.8.71) (2023-11-09)
|
10
18
|
|
11
19
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.74",
|
4
4
|
"type": "commonjs",
|
5
5
|
"generators": "./generators.json",
|
6
6
|
"dependencies": {
|
@@ -39,7 +39,7 @@
|
|
39
39
|
"web3-v1": "npm:web3@^1.5.0"
|
40
40
|
},
|
41
41
|
"peerDependencies": {
|
42
|
-
"@sonarwatch/portfolio-core": "0.8.
|
42
|
+
"@sonarwatch/portfolio-core": "0.8.74"
|
43
43
|
},
|
44
44
|
"main": "./src/index.js",
|
45
45
|
"types": "./src/index.d.ts"
|
@@ -19,13 +19,15 @@ const clients_1 = require("../../utils/clients");
|
|
19
19
|
const solana_1 = require("../../utils/solana");
|
20
20
|
const structs_1 = require("./structs");
|
21
21
|
const getLpTokenSourceRaw_1 = __importDefault(require("../../utils/misc/getLpTokenSourceRaw"));
|
22
|
+
const getLpUnderlyingTokenSource_1 = __importDefault(require("../../utils/misc/getLpUnderlyingTokenSource"));
|
22
23
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
23
24
|
const connection = (0, clients_1.getClientSolana)();
|
24
|
-
|
25
|
-
|
25
|
+
let pools = yield (0, solana_1.getParsedProgramAccounts)(connection, structs_1.poolStruct, new web3_js_1.PublicKey(constants_1.fluxbeamPoolsPid), [{ dataSize: structs_1.poolStruct.byteSize }]);
|
26
|
+
pools = pools.filter((pool) => pool.isInitialized);
|
27
|
+
const reserveAccountsAddresses = pools
|
26
28
|
.map((pool) => [pool.tokenA, pool.tokenB])
|
27
29
|
.flat();
|
28
|
-
const tokenAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.tokenAccountStruct,
|
30
|
+
const tokenAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.tokenAccountStruct, reserveAccountsAddresses);
|
29
31
|
const tokenAccountsMap = new Map();
|
30
32
|
tokenAccounts.forEach((tokenAccount) => {
|
31
33
|
if (!tokenAccount)
|
@@ -33,9 +35,18 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
35
|
tokenAccountsMap.set(tokenAccount.pubkey.toString(), tokenAccount);
|
34
36
|
});
|
35
37
|
const poolMints = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.mintAccountStruct, pools.map((p) => p.poolMint));
|
36
|
-
const tokenMintsAddresses =
|
37
|
-
|
38
|
-
|
38
|
+
const tokenMintsAddresses = [
|
39
|
+
...new Set(pools
|
40
|
+
.map((pool) => [pool.tokenAMint.toString(), pool.tokenBMint.toString()])
|
41
|
+
.flat()),
|
42
|
+
];
|
43
|
+
const tokenMintsAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.mintAccountStruct, tokenMintsAddresses.map((a) => new web3_js_1.PublicKey(a)));
|
44
|
+
const tokenMintsAccountsMap = new Map();
|
45
|
+
tokenMintsAccounts.forEach((tokenMintAccount) => {
|
46
|
+
if (!tokenMintAccount)
|
47
|
+
return;
|
48
|
+
tokenMintsAccountsMap.set(tokenMintAccount.pubkey.toString(), tokenMintAccount);
|
49
|
+
});
|
39
50
|
const tokenPriceResults = yield cache.getTokenPrices(tokenMintsAddresses, portfolio_core_1.NetworkId.solana);
|
40
51
|
const tokenPrices = new Map();
|
41
52
|
tokenPriceResults.forEach((tokenPrice) => {
|
@@ -50,15 +61,33 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
61
|
const poolMint = poolMints[i];
|
51
62
|
if (!poolMint)
|
52
63
|
continue;
|
53
|
-
const tokenPriceA = tokenPrices.get(pool.tokenAMint.toString());
|
54
|
-
const tokenPriceB = tokenPrices.get(pool.tokenBMint.toString());
|
55
|
-
if (!tokenPriceA || !tokenPriceB)
|
56
|
-
continue;
|
57
64
|
const tokenAccountA = tokenAccountsMap.get(pool.tokenA.toString());
|
58
65
|
const tokenAccountB = tokenAccountsMap.get(pool.tokenB.toString());
|
59
66
|
if (!tokenAccountA || !tokenAccountB)
|
60
67
|
continue;
|
61
|
-
const
|
68
|
+
const mintAccountA = tokenMintsAccountsMap.get(pool.tokenAMint.toString());
|
69
|
+
const mintAccountB = tokenMintsAccountsMap.get(pool.tokenBMint.toString());
|
70
|
+
if (!mintAccountA || !mintAccountB)
|
71
|
+
continue;
|
72
|
+
const tokenPriceA = tokenPrices.get(pool.tokenAMint.toString());
|
73
|
+
const tokenPriceB = tokenPrices.get(pool.tokenBMint.toString());
|
74
|
+
const underlyingsSource = (0, getLpUnderlyingTokenSource_1.default)(constants_1.platformId, constants_1.platformId, portfolio_core_1.NetworkId.solana, {
|
75
|
+
address: pool.tokenAMint.toString(),
|
76
|
+
decimals: mintAccountA.decimals,
|
77
|
+
reserveAmountRaw: tokenAccountA.amount,
|
78
|
+
tokenPrice: tokenPriceA,
|
79
|
+
}, {
|
80
|
+
address: pool.tokenBMint.toString(),
|
81
|
+
decimals: mintAccountB.decimals,
|
82
|
+
reserveAmountRaw: tokenAccountB.amount,
|
83
|
+
tokenPrice: tokenPriceB,
|
84
|
+
});
|
85
|
+
if (underlyingsSource) {
|
86
|
+
yield cache.setTokenPriceSource(underlyingsSource);
|
87
|
+
}
|
88
|
+
if (!tokenPriceA || !tokenPriceB)
|
89
|
+
continue;
|
90
|
+
const lpSource = (0, getLpTokenSourceRaw_1.default)(portfolio_core_1.NetworkId.solana, constants_1.platformId, constants_1.platformId, 'Pools', {
|
62
91
|
address: pool.poolMint.toString(),
|
63
92
|
decimals: poolMint.decimals,
|
64
93
|
supplyRaw: poolMint.supply,
|
@@ -76,7 +105,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
105
|
reserveAmountRaw: tokenAccountB.amount,
|
77
106
|
},
|
78
107
|
]);
|
79
|
-
yield cache.setTokenPriceSource(
|
108
|
+
yield cache.setTokenPriceSource(lpSource);
|
80
109
|
}
|
81
110
|
});
|
82
111
|
const job = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/poolsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,+DAAmE;AAGnE,2CAA2D;AAC3D,iDAAsD;AACtD,+
|
1
|
+
{"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/poolsJob.ts"],"names":[],"mappings":"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"}
|
@@ -25,7 +25,7 @@ export type SwapCurve = {
|
|
25
25
|
export declare const swapCurveStruct: BeetStruct<SwapCurve, Partial<SwapCurve>>;
|
26
26
|
export type Pool = {
|
27
27
|
padding: Buffer;
|
28
|
-
isInitialized:
|
28
|
+
isInitialized: boolean;
|
29
29
|
bumpSeed: number;
|
30
30
|
tokenProgramId: PublicKey;
|
31
31
|
tokenA: PublicKey;
|
@@ -26,7 +26,7 @@ exports.swapCurveStruct = new beet_1.BeetStruct([
|
|
26
26
|
], (args) => args);
|
27
27
|
exports.poolStruct = new beet_1.BeetStruct([
|
28
28
|
['padding', (0, solana_1.blob)(1)],
|
29
|
-
['isInitialized', beet_1.
|
29
|
+
['isInitialized', beet_1.bool],
|
30
30
|
['bumpSeed', beet_1.u8],
|
31
31
|
['tokenProgramId', beet_solana_1.publicKey],
|
32
32
|
['tokenA', beet_solana_1.publicKey],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/structs.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/structs.ts"],"names":[],"mappings":";;;AAAA,oDAAiE;AACjE,kEAA6D;AAG7D,+CAA+C;AAalC,QAAA,UAAU,GAAG,IAAI,iBAAU,CACtC;IACE,CAAC,mBAAmB,EAAE,YAAG,CAAC;IAC1B,CAAC,qBAAqB,EAAE,YAAG,CAAC;IAC5B,CAAC,wBAAwB,EAAE,YAAG,CAAC;IAC/B,CAAC,0BAA0B,EAAE,YAAG,CAAC;IACjC,CAAC,2BAA2B,EAAE,YAAG,CAAC;IAClC,CAAC,6BAA6B,EAAE,YAAG,CAAC;IACpC,CAAC,kBAAkB,EAAE,YAAG,CAAC;IACzB,CAAC,oBAAoB,EAAE,YAAG,CAAC;CAC5B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAY,CACvB,CAAC;AAEF,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,+DAAe,CAAA;IACf,2DAAa,CAAA;IACb,6CAAM,CAAA;AACR,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAOY,QAAA,eAAe,GAAG,IAAI,iBAAU,CAC3C;IACE,CAAC,WAAW,EAAE,SAAE,CAAC;IACjB,CAAC,YAAY,EAAE,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC;CACzB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB,CAC5B,CAAC;AAiBW,QAAA,UAAU,GAAG,IAAI,iBAAU,CACtC;IACE,CAAC,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACpB,CAAC,eAAe,EAAE,WAAI,CAAC;IACvB,CAAC,UAAU,EAAE,SAAE,CAAC;IAChB,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,UAAU,EAAE,uBAAS,CAAC;IACvB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,MAAM,EAAE,kBAAU,CAAC;IACpB,CAAC,WAAW,EAAE,uBAAe,CAAC;CAC/B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAY,CACvB,CAAC"}
|
@@ -47,15 +47,16 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
47
|
.flat();
|
48
48
|
const lpTokenSupply = yield client.getTokenSupply(constants_1.jlpToken);
|
49
49
|
const lpAmount = new bignumber_js_1.default(lpTokenSupply.value.amount).dividedBy(Math.pow(10, lpTokenSupply.value.decimals));
|
50
|
+
const price = poolAccount.aumUsd.dividedBy(Math.pow(10, 6)).dividedBy(lpAmount);
|
50
51
|
const underlyingsAmounts = tokensAmounts
|
51
52
|
.map((amount) => amount.dividedBy(lpAmount))
|
52
53
|
.flat();
|
53
|
-
const
|
54
|
+
const basePrice = tokensAmounts
|
54
55
|
.map((amount, i) => amount.multipliedBy(tokensPrices[i].price))
|
55
56
|
.reduce((sum, current) => current.plus(sum), new bignumber_js_1.default(0))
|
56
|
-
.dividedBy(lpAmount)
|
57
|
-
|
58
|
-
const underlyings = (0, portfolio_core_1.getTokenPricesUnderlyingsFromTokensPrices)(tokensPrices, underlyingsAmounts.map((a) => a.toNumber()));
|
57
|
+
.dividedBy(lpAmount);
|
58
|
+
const factor = price.dividedBy(basePrice);
|
59
|
+
const underlyings = (0, portfolio_core_1.getTokenPricesUnderlyingsFromTokensPrices)(tokensPrices, underlyingsAmounts.map((a) => a.multipliedBy(factor).toNumber()));
|
59
60
|
yield cache.setTokenPriceSource({
|
60
61
|
address: constants_1.jlpToken.toString(),
|
61
62
|
decimals: 6,
|
@@ -63,7 +64,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
63
64
|
networkId: portfolio_core_1.NetworkId.solana,
|
64
65
|
elementName: 'JLP Pool',
|
65
66
|
platformId,
|
66
|
-
price,
|
67
|
+
price: price.toNumber(),
|
67
68
|
timestamp: Date.now(),
|
68
69
|
weight: 1,
|
69
70
|
underlyings,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"poolJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/poolJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAIoC;AACpC,gEAAqC;AAIrC,iDAAsD;AACtD,+CAG4B;AAC5B,2CAAgD;AAChD,uCAA+D;AAC/D,2DAA8D;AAE9D,MAAM,UAAU,GAAG,2BAAe,CAAC,EAAE,CAAC;AAEtC,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,WAAW,GAAG,CAClB,MAAM,IAAA,sCAA6B,EAAC,MAAM,EAAE,6BAAmB,EAAE,CAAC,mBAAO,CAAC,CAAC,CAC5E,CAAC,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,iBAAiB,GAAG,MAAM,IAAA,sCAA6B,EAC3D,MAAM,EACN,uBAAa,EACb,WAAW,CAAC,SAAS,CACtB,CAAC;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,uBAAuB,GAAgB,EAAE,CAAC;IAChD,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SAChD;IACH,CAAC,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO;IAE1D,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,0BAAS,CAAC,MAAM,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO;IAEjD,MAAM,cAAc,GAAG,MAAM,IAAA,sCAA6B,EACxD,MAAM,EACN,2BAAkB,EAClB,uBAAuB,CACxB,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc;SACjC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAC9D;SACA,IAAI,EAAE,CAAC;IAEV,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,oBAAQ,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAClE,SAAA,EAAE,EAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAA,CACnC,CAAC;IAEF,MAAM,kBAAkB,GAAG,aAAa;SACrC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SAC3C,IAAI,EAAE,CAAC;IAEV,MAAM,
|
1
|
+
{"version":3,"file":"poolJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/poolJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAIoC;AACpC,gEAAqC;AAIrC,iDAAsD;AACtD,+CAG4B;AAC5B,2CAAgD;AAChD,uCAA+D;AAC/D,2DAA8D;AAE9D,MAAM,UAAU,GAAG,2BAAe,CAAC,EAAE,CAAC;AAEtC,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,WAAW,GAAG,CAClB,MAAM,IAAA,sCAA6B,EAAC,MAAM,EAAE,6BAAmB,EAAE,CAAC,mBAAO,CAAC,CAAC,CAC5E,CAAC,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,iBAAiB,GAAG,MAAM,IAAA,sCAA6B,EAC3D,MAAM,EACN,uBAAa,EACb,WAAW,CAAC,SAAS,CACtB,CAAC;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,uBAAuB,GAAgB,EAAE,CAAC;IAChD,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SAChD;IACH,CAAC,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO;IAE1D,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,0BAAS,CAAC,MAAM,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,IAAI,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO;IAEjD,MAAM,cAAc,GAAG,MAAM,IAAA,sCAA6B,EACxD,MAAM,EACN,2BAAkB,EAClB,uBAAuB,CACxB,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc;SACjC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CACb,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAC9D;SACA,IAAI,EAAE,CAAC;IAEV,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,oBAAQ,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAClE,SAAA,EAAE,EAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAA,CACnC,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,CAAC,CAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExE,MAAM,kBAAkB,GAAG,aAAa;SACrC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SAC3C,IAAI,EAAE,CAAC;IAEV,MAAM,SAAS,GAAG,aAAa;SAC5B,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;SAC7D,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAA,0DAAyC,EAC3D,YAAY,EACZ,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CACjE,CAAC;IACF,MAAM,KAAK,CAAC,mBAAmB,CAAC;QAC9B,OAAO,EAAE,oBAAQ,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,CAAC;QACX,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,WAAW,EAAE,UAAU;QACvB,UAAU;QACV,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;QACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,CAAC;QACT,WAAW;KACZ,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,UAAU,OAAO;IACxB,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -36,28 +36,28 @@ exports.getPairsV2 = void 0;
|
|
36
36
|
const graphql_request_1 = __importStar(require("graphql-request"));
|
37
37
|
function getPairsV2(url) {
|
38
38
|
return __awaiter(this, void 0, void 0, function* () {
|
39
|
-
const query = (0, graphql_request_1.gql) `
|
40
|
-
{
|
41
|
-
pairs(
|
42
|
-
orderBy: reserveUSD
|
43
|
-
first: 500
|
44
|
-
orderDirection: desc
|
45
|
-
where: { trackedReserveETH_not: "0" }
|
46
|
-
) {
|
47
|
-
id
|
48
|
-
reserve0
|
49
|
-
reserve1
|
50
|
-
totalSupply
|
51
|
-
token0 {
|
52
|
-
id
|
53
|
-
decimals
|
54
|
-
}
|
55
|
-
token1 {
|
56
|
-
id
|
57
|
-
decimals
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
39
|
+
const query = (0, graphql_request_1.gql) `
|
40
|
+
{
|
41
|
+
pairs(
|
42
|
+
orderBy: reserveUSD
|
43
|
+
first: 500
|
44
|
+
orderDirection: desc
|
45
|
+
where: { trackedReserveETH_not: "0" }
|
46
|
+
) {
|
47
|
+
id
|
48
|
+
reserve0
|
49
|
+
reserve1
|
50
|
+
totalSupply
|
51
|
+
token0 {
|
52
|
+
id
|
53
|
+
decimals
|
54
|
+
}
|
55
|
+
token1 {
|
56
|
+
id
|
57
|
+
decimals
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
61
|
`;
|
62
62
|
const res = yield (0, graphql_request_1.default)(url, query);
|
63
63
|
const pairs = res.pairs;
|
@@ -1,5 +1,10 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.zeroBigInt = void 0;
|
6
|
+
exports.zeroBigNumber = exports.zeroBigInt = void 0;
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
4
8
|
exports.zeroBigInt = BigInt(0);
|
9
|
+
exports.zeroBigNumber = (0, bignumber_js_1.default)(0);
|
5
10
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/constants.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAExB,QAAA,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,QAAA,aAAa,GAAG,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { NetworkIdType, TokenPrice, TokenPriceSource } from '@sonarwatch/portfolio-core';
|
2
|
+
import BigNumber from 'bignumber.js';
|
3
|
+
export type PoolData = {
|
4
|
+
id: string;
|
5
|
+
supply: BigNumber;
|
6
|
+
lpDecimals: number;
|
7
|
+
reserveTokenX: BigNumber;
|
8
|
+
reserveTokenY: BigNumber;
|
9
|
+
mintTokenX: string;
|
10
|
+
decimalX?: number;
|
11
|
+
mintTokenY: string;
|
12
|
+
decimalY?: number;
|
13
|
+
};
|
14
|
+
type PoolUnderlyingRaw = {
|
15
|
+
address: string;
|
16
|
+
reserveAmountRaw: BigNumber;
|
17
|
+
decimals: number;
|
18
|
+
tokenPrice: TokenPrice | undefined;
|
19
|
+
};
|
20
|
+
export default function getLpUnderlyingTokenSource(sourceId: string, platformId: string, networkId: NetworkIdType, poolUnderlyingsA: PoolUnderlyingRaw, poolUnderlyingsB: PoolUnderlyingRaw, minTvl?: number, acceptedPairs?: string[]): TokenPriceSource | null;
|
21
|
+
export {};
|
@@ -0,0 +1,80 @@
|
|
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
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
7
|
+
const getSourceWeight_1 = __importDefault(require("./getSourceWeight"));
|
8
|
+
const defaultAcceptedPairs = [
|
9
|
+
// Sei Addresses
|
10
|
+
portfolio_core_1.seiNativeAddress,
|
11
|
+
'ibc/ED07A3391A112B175915CD8FAF43A2DA8E4790EDE12566649D0C2F97716B8518',
|
12
|
+
'factory/sei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l/Hq4tuDzhRBnxw3tFA5n6M52NVMVcC19XggbyDiJKCD6H',
|
13
|
+
// Solana Addresses
|
14
|
+
portfolio_core_1.solanaNativeAddress,
|
15
|
+
portfolio_core_1.solanaNativeWrappedAddress,
|
16
|
+
'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
17
|
+
'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
|
18
|
+
// Aptos Addresses
|
19
|
+
portfolio_core_1.aptosNativeAddress,
|
20
|
+
'0x5e156f1207d0ebfa19a9eeff00d62a282278fb8719f4fab3a586a0a2c0fffbea::coin::T',
|
21
|
+
'0x6f986d146e4a90b828d8c12c14b6f4e003fdff11a8eecceceb63744363eaac01::mod_coin::MOD',
|
22
|
+
// Sui addresses
|
23
|
+
portfolio_core_1.suiNativeAddress,
|
24
|
+
'0x2::sui::SUI',
|
25
|
+
'0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN',
|
26
|
+
'0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS', // CETUS
|
27
|
+
];
|
28
|
+
function getLpUnderlyingTokenSource(sourceId, platformId, networkId, poolUnderlyingsA, poolUnderlyingsB, minTvl = 5000, acceptedPairs = defaultAcceptedPairs) {
|
29
|
+
var _a, _b;
|
30
|
+
if (!poolUnderlyingsA.tokenPrice && !poolUnderlyingsB.tokenPrice)
|
31
|
+
return null;
|
32
|
+
if (((_a = poolUnderlyingsA.tokenPrice) === null || _a === void 0 ? void 0 : _a.price) === 0)
|
33
|
+
return null;
|
34
|
+
if (((_b = poolUnderlyingsB.tokenPrice) === null || _b === void 0 ? void 0 : _b.price) === 0)
|
35
|
+
return null;
|
36
|
+
const isAcceptedTokenA = acceptedPairs.includes(poolUnderlyingsA.address);
|
37
|
+
const isAcceptedTokenB = acceptedPairs.includes(poolUnderlyingsB.address);
|
38
|
+
if (isAcceptedTokenA && isAcceptedTokenB)
|
39
|
+
return null;
|
40
|
+
let knownUnderlaying;
|
41
|
+
let unknownUnderlaying;
|
42
|
+
if (poolUnderlyingsA.tokenPrice && isAcceptedTokenA) {
|
43
|
+
knownUnderlaying = poolUnderlyingsA;
|
44
|
+
unknownUnderlaying = poolUnderlyingsB;
|
45
|
+
}
|
46
|
+
else if (poolUnderlyingsB.tokenPrice && isAcceptedTokenB) {
|
47
|
+
knownUnderlaying = poolUnderlyingsB;
|
48
|
+
unknownUnderlaying = poolUnderlyingsA;
|
49
|
+
}
|
50
|
+
if (!knownUnderlaying || !unknownUnderlaying)
|
51
|
+
return null;
|
52
|
+
if (unknownUnderlaying.tokenPrice &&
|
53
|
+
unknownUnderlaying.tokenPrice.sources.some((source) => source.id === portfolio_core_1.coingeckoSourceId)) {
|
54
|
+
return null;
|
55
|
+
}
|
56
|
+
const knownReserveAmount = knownUnderlaying.reserveAmountRaw
|
57
|
+
.div(Math.pow(10, knownUnderlaying.decimals))
|
58
|
+
.toNumber();
|
59
|
+
const knownReserveValue = knownReserveAmount * knownUnderlaying.tokenPrice.price;
|
60
|
+
const poolTvl = knownReserveValue * 2;
|
61
|
+
if (minTvl > poolTvl)
|
62
|
+
return null;
|
63
|
+
const unknownReserveAmount = unknownUnderlaying.reserveAmountRaw
|
64
|
+
.div(Math.pow(10, unknownUnderlaying.decimals))
|
65
|
+
.toNumber();
|
66
|
+
const price = knownReserveValue / unknownReserveAmount;
|
67
|
+
const source = {
|
68
|
+
id: sourceId,
|
69
|
+
networkId,
|
70
|
+
platformId,
|
71
|
+
address: unknownUnderlaying.address,
|
72
|
+
decimals: unknownUnderlaying.decimals,
|
73
|
+
price,
|
74
|
+
weight: (0, getSourceWeight_1.default)(poolTvl),
|
75
|
+
timestamp: Date.now(),
|
76
|
+
};
|
77
|
+
return source;
|
78
|
+
}
|
79
|
+
exports.default = getLpUnderlyingTokenSource;
|
80
|
+
//# sourceMappingURL=getLpUnderlyingTokenSource.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getLpUnderlyingTokenSource.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getLpUnderlyingTokenSource.ts"],"names":[],"mappings":"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"}
|
@@ -2,8 +2,9 @@ import BigNumber from 'bignumber.js';
|
|
2
2
|
/**
|
3
3
|
* Get the weight of a new TokenPriceSource depending on the size of the pool in USD$ value
|
4
4
|
*
|
5
|
-
* @param
|
5
|
+
* @param {BigNumber | number} poolTvl Pool total value locked (in USD$)
|
6
|
+
* @param {number} [trustValue=1000000000] Value (in USD$) from which the weight is 1
|
6
7
|
*
|
7
8
|
* @returns weight between 0 and 1
|
8
9
|
*/
|
9
|
-
export default function getSourceWeight(
|
10
|
+
export default function getSourceWeight(poolTvl: BigNumber | number, trustValue?: number): number;
|
@@ -4,19 +4,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
7
|
-
const
|
7
|
+
const constants_1 = require("./constants");
|
8
8
|
/**
|
9
9
|
* Get the weight of a new TokenPriceSource depending on the size of the pool in USD$ value
|
10
10
|
*
|
11
|
-
* @param
|
11
|
+
* @param {BigNumber | number} poolTvl Pool total value locked (in USD$)
|
12
|
+
* @param {number} [trustValue=1000000000] Value (in USD$) from which the weight is 1
|
12
13
|
*
|
13
14
|
* @returns weight between 0 and 1
|
14
15
|
*/
|
15
|
-
function getSourceWeight(
|
16
|
-
|
16
|
+
function getSourceWeight(poolTvl, trustValue = 1000000000) {
|
17
|
+
const fPoolTvl = new bignumber_js_1.default(poolTvl);
|
18
|
+
if (fPoolTvl.isGreaterThanOrEqualTo(trustValue))
|
17
19
|
return 1;
|
18
|
-
|
19
|
-
|
20
|
+
if (fPoolTvl.isLessThanOrEqualTo(constants_1.zeroBigNumber))
|
21
|
+
return 0;
|
22
|
+
return fPoolTvl
|
23
|
+
.dividedBy(trustValue)
|
20
24
|
.decimalPlaces(3, bignumber_js_1.default.ROUND_CEIL)
|
21
25
|
.toNumber();
|
22
26
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getSourceWeight.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getSourceWeight.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;
|
1
|
+
{"version":3,"file":"getSourceWeight.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getSourceWeight.ts"],"names":[],"mappings":";;;;;AAAA,gEAAqC;AACrC,2CAA4C;AAE5C;;;;;;;GAOG;AACH,SAAwB,eAAe,CACrC,OAA2B,EAC3B,UAAU,GAAG,UAAU;IAEvB,MAAM,QAAQ,GAAG,IAAI,sBAAS,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,sBAAsB,CAAC,UAAU,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,mBAAmB,CAAC,yBAAa,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,QAAQ;SACZ,SAAS,CAAC,UAAU,CAAC;SACrB,aAAa,CAAC,CAAC,EAAE,sBAAS,CAAC,UAAU,CAAC;SACtC,QAAQ,EAAE,CAAC;AAChB,CAAC;AAXD,kCAWC"}
|