@sonarwatch/portfolio-plugins 0.14.193 → 0.14.194
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 -0
- package/package.json +1 -1
- package/src/plugins/aurory/constants.js +1 -1
- package/src/plugins/debridge/dlmmVaultsJob.js +2 -2
- package/src/plugins/debridge/dlmmVaultsJob.js.map +1 -1
- package/src/plugins/fragmetric/constants.js +6 -0
- package/src/plugins/fragmetric/constants.js.map +1 -1
- package/src/plugins/hawksight/positionsFetcher.js +1 -1
- package/src/plugins/hawksight/positionsFetcher.js.map +1 -1
- package/src/plugins/jupiter/helpers.js +1 -1
- package/src/plugins/jupiter/helpers.js.map +1 -1
- package/src/plugins/kamino/helpers/vaults.d.ts +1 -1
- package/src/plugins/kamino/helpers/vaults.js +4 -4
- package/src/plugins/kamino/helpers/vaults.js.map +1 -1
- package/src/plugins/kamino/poolsJob.js +2 -2
- package/src/plugins/kamino/poolsJob.js.map +1 -1
- package/src/plugins/meteora/constants.d.ts +1 -0
- package/src/plugins/meteora/constants.js +2 -1
- package/src/plugins/meteora/constants.js.map +1 -1
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.d.ts +3 -0
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js +86 -0
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js.map +1 -0
- package/src/plugins/meteora/cpamm/cpammV2Job.d.ts +3 -0
- package/src/plugins/meteora/cpamm/cpammV2Job.js +83 -0
- package/src/plugins/meteora/cpamm/cpammV2Job.js.map +1 -0
- package/src/plugins/meteora/cpamm/helpers.d.ts +17 -0
- package/src/plugins/meteora/cpamm/helpers.js +83 -0
- package/src/plugins/meteora/cpamm/helpers.js.map +1 -0
- package/src/plugins/meteora/cpamm/structs.d.ts +131 -0
- package/src/plugins/meteora/cpamm/structs.js +128 -0
- package/src/plugins/meteora/cpamm/structs.js.map +1 -0
- package/src/plugins/meteora/{dlmmHelper.d.ts → dlmm/dlmmHelper.d.ts} +2 -2
- package/src/plugins/meteora/{dlmmHelper.js → dlmm/dlmmHelper.js} +3 -3
- package/src/plugins/meteora/dlmm/dlmmHelper.js.map +1 -0
- package/src/plugins/meteora/{dlmmPositionsFetcher.d.ts → dlmm/dlmmPositionsFetcher.d.ts} +1 -1
- package/src/plugins/meteora/{dlmmPositionsFetcher.js → dlmm/dlmmPositionsFetcher.js} +12 -12
- package/src/plugins/meteora/dlmm/dlmmPositionsFetcher.js.map +1 -0
- package/src/plugins/meteora/{dlmmVaultsFetcher.d.ts → dlmm/dlmmVaultsFetcher.d.ts} +1 -1
- package/src/plugins/meteora/{dlmmVaultsFetcher.js → dlmm/dlmmVaultsFetcher.js} +5 -5
- package/src/plugins/meteora/dlmm/dlmmVaultsFetcher.js.map +1 -0
- package/src/plugins/meteora/{dlmmVaultsJob.d.ts → dlmm/dlmmVaultsJob.d.ts} +1 -1
- package/src/plugins/meteora/{dlmmVaultsJob.js → dlmm/dlmmVaultsJob.js} +6 -6
- package/src/plugins/meteora/dlmm/dlmmVaultsJob.js.map +1 -0
- package/src/plugins/meteora/dlmm/structs.d.ts +159 -0
- package/src/plugins/meteora/dlmm/structs.js +163 -0
- package/src/plugins/meteora/dlmm/structs.js.map +1 -0
- package/src/plugins/meteora/index.js +13 -9
- package/src/plugins/meteora/index.js.map +1 -1
- package/src/plugins/meteora/{multiTokenPoolsJob.d.ts → multiTokenPools/multiTokenPoolsJob.d.ts} +1 -1
- package/src/plugins/meteora/{multiTokenPoolsJob.js → multiTokenPools/multiTokenPoolsJob.js} +4 -4
- package/src/plugins/meteora/multiTokenPools/multiTokenPoolsJob.js.map +1 -0
- package/src/plugins/meteora/{farmsFetcher.d.ts → pools/farmsFetcher.d.ts} +1 -1
- package/src/plugins/meteora/{farmsFetcher.js → pools/farmsFetcher.js} +6 -6
- package/src/plugins/meteora/pools/farmsFetcher.js.map +1 -0
- package/src/plugins/meteora/{farmsJob.d.ts → pools/farmsJob.d.ts} +1 -1
- package/src/plugins/meteora/{farmsJob.js → pools/farmsJob.js} +6 -6
- package/src/plugins/meteora/pools/farmsJob.js.map +1 -0
- package/src/plugins/meteora/{poolsJob.d.ts → pools/poolsJob.d.ts} +1 -1
- package/src/plugins/meteora/{poolsJob.js → pools/poolsJob.js} +6 -6
- package/src/plugins/meteora/pools/poolsJob.js.map +1 -0
- package/src/plugins/meteora/{stakeForFeeFetcher.d.ts → stake2earn/stakeForFeeFetcher.d.ts} +1 -1
- package/src/plugins/meteora/{stakeForFeeFetcher.js → stake2earn/stakeForFeeFetcher.js} +9 -9
- package/src/plugins/meteora/stake2earn/stakeForFeeFetcher.js.map +1 -0
- package/src/plugins/meteora/{stakeForFeeVaultsJob.d.ts → stake2earn/stakeForFeeVaultsJob.d.ts} +1 -1
- package/src/plugins/meteora/{stakeForFeeVaultsJob.js → stake2earn/stakeForFeeVaultsJob.js} +6 -6
- package/src/plugins/meteora/stake2earn/stakeForFeeVaultsJob.js.map +1 -0
- package/src/plugins/meteora/stake2earn/structs.d.ts +44 -0
- package/src/plugins/meteora/stake2earn/structs.js +42 -0
- package/src/plugins/meteora/stake2earn/structs.js.map +1 -0
- package/src/plugins/meteora/struct.d.ts +0 -191
- package/src/plugins/meteora/struct.js +1 -192
- package/src/plugins/meteora/struct.js.map +1 -1
- package/src/plugins/meteora/types.d.ts +1 -1
- package/src/utils/elementbuilder/ElementLeverageBuilder.js +4 -0
- package/src/utils/elementbuilder/ElementLeverageBuilder.js.map +1 -1
- package/src/plugins/meteora/dlmmHelper.js.map +0 -1
- package/src/plugins/meteora/dlmmPositionsFetcher.js.map +0 -1
- package/src/plugins/meteora/dlmmVaultsFetcher.js.map +0 -1
- package/src/plugins/meteora/dlmmVaultsJob.js.map +0 -1
- package/src/plugins/meteora/farmsFetcher.js.map +0 -1
- package/src/plugins/meteora/farmsJob.js.map +0 -1
- package/src/plugins/meteora/multiTokenPoolsJob.js.map +0 -1
- package/src/plugins/meteora/poolsJob.js.map +0 -1
- package/src/plugins/meteora/stakeForFeeFetcher.js.map +0 -1
- package/src/plugins/meteora/stakeForFeeVaultsJob.js.map +0 -1
- /package/src/plugins/meteora/{multiTokenPools.json → multiTokenPools/multiTokenPools.json} +0 -0
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.14.194](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.193...plugins-0.14.194) (2025-05-02)
|
6
|
+
|
7
|
+
|
8
|
+
### Features
|
9
|
+
|
10
|
+
* **services:** add staking and contract definitions for multiple platforms ([143337b](https://github.com/sonarwatch/portfolio/commit/143337befedf80658f8dc64368d8fdfa1c116145))
|
11
|
+
|
12
|
+
|
13
|
+
|
5
14
|
## [0.14.193](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.192...plugins-0.14.193) (2025-04-30)
|
6
15
|
|
7
16
|
|
package/package.json
CHANGED
@@ -4,7 +4,7 @@ exports.vaultPubkey = exports.decimals = exports.xAuryMint = exports.programId =
|
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
exports.platformId = 'aurory';
|
6
6
|
exports.auryMint = 'AURYydfxJib1ZkTir1Jn1J9ECYUtjb6rKQVmtYaixWPP';
|
7
|
-
exports.programId = new web3_js_1.PublicKey('
|
7
|
+
exports.programId = new web3_js_1.PublicKey('STkwf3sbMapjy7KV3hgrJtcVvY4SvRxWQ8pj4Enw1i5');
|
8
8
|
exports.xAuryMint = 'xAURp5XmAG7772mfkSy6vRAjGK9JofYjc3dmQDWdVDP';
|
9
9
|
exports.decimals = 9;
|
10
10
|
exports.vaultPubkey = 'FysGks3izhgVhrUkub9QQWCTEVAdhkZKYSNK2F25maGD';
|
@@ -14,11 +14,11 @@ const clients_1 = require("../../utils/clients");
|
|
14
14
|
const solana_1 = require("../../utils/solana");
|
15
15
|
const filters_1 = require("../../utils/solana/filters");
|
16
16
|
const constants_1 = require("./constants");
|
17
|
-
const
|
17
|
+
const structs_1 = require("../meteora/dlmm/structs");
|
18
18
|
const constants_2 = require("../meteora/constants");
|
19
19
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
20
20
|
const client = (0, clients_1.getClientSolana)();
|
21
|
-
const accounts = yield (0, solana_1.getParsedProgramAccounts)(client,
|
21
|
+
const accounts = yield (0, solana_1.getParsedProgramAccounts)(client, structs_1.dlmmVaultStruct, constants_1.dlmmVaultProgramId, (0, filters_1.dataSizeFilter)(structs_1.dlmmVaultStruct.byteSize));
|
22
22
|
const vaults = {};
|
23
23
|
accounts.forEach((acc) => {
|
24
24
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dlmmVaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/debridge/dlmmVaultsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAGvD,iDAAsD;AACtD,+CAA8D;AAC9D,wDAA4D;AAC5D,2CAA6D;AAE7D,
|
1
|
+
{"version":3,"file":"dlmmVaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/debridge/dlmmVaultsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAGvD,iDAAsD;AACtD,+CAA8D;AAC9D,wDAA4D;AAC5D,2CAA6D;AAE7D,qDAA0D;AAC1D,oDAAqD;AAErD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,MAAM,EACN,yBAAe,EACf,8BAAkB,EAClB,IAAA,wBAAc,EAAC,yBAAe,CAAC,QAAQ,CAAC,CACzC,CAAC;IACF,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,8DAA8D;QAC9D,MAAM,MAAM,mCACP,GAAG,KACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,GAC9B,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAa,EAAE,MAAM,EAAE;QACzC,MAAM,EAAE,sBAAU;QAClB,SAAS,EAAE,0BAAS,CAAC,MAAM;KAC5B,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,cAAc;IAC/B,QAAQ;IACR,MAAM,EAAE,CAAC,QAAQ,CAAC;CACnB,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -18,5 +18,11 @@ exports.vaults = [
|
|
18
18
|
tokenMint: 'jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL',
|
19
19
|
reserveAccount: '3Fz1WVV7N3h5VScoveHyote6Y129F3Gmc3PcfnBuSbV3',
|
20
20
|
},
|
21
|
+
{
|
22
|
+
vaultProgramAddress: 'BmJvUzoiiNBRx3v2Gqsix9WvVtw8FaztrfBHQyqpMbTd',
|
23
|
+
receiptToken: 'FRAGB4KZGLMy3wH1nBajP3Q17MHnecEvTPT6wb4pX5MB',
|
24
|
+
tokenMint: 'zBTCug3er3tLyffELcvDNrKkCymbPWysGcWihESYfLg',
|
25
|
+
reserveAccount: 'B5eYu4dKBS8bTvLdeZungomcaQx52rDprdKEcyHzgbBD',
|
26
|
+
},
|
21
27
|
];
|
22
28
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fragmetric/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,6CAA6C,CAC9C,CAAC;AAEF,wEAAwE;AAC3D,QAAA,MAAM,GAAG;IACpB;QACE,mBAAmB,EAAE,8CAA8C;QACnE,YAAY,EAAE,8CAA8C;QAC5D,0BAA0B,EAAE,8CAA8C;QAC1E,cAAc,EAAE,8CAA8C;KAC/D;IACD;QACE,mBAAmB,EAAE,8CAA8C;QACnE,YAAY,EAAE,8CAA8C;QAC5D,SAAS,EAAE,6CAA6C;QACxD,cAAc,EAAE,8CAA8C;KAC/D;CACF,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fragmetric/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,6CAA6C,CAC9C,CAAC;AAEF,wEAAwE;AAC3D,QAAA,MAAM,GAAG;IACpB;QACE,mBAAmB,EAAE,8CAA8C;QACnE,YAAY,EAAE,8CAA8C;QAC5D,0BAA0B,EAAE,8CAA8C;QAC1E,cAAc,EAAE,8CAA8C;KAC/D;IACD;QACE,mBAAmB,EAAE,8CAA8C;QACnE,YAAY,EAAE,8CAA8C;QAC5D,SAAS,EAAE,6CAA6C;QACxD,cAAc,EAAE,8CAA8C;KAC/D;IACD;QACE,mBAAmB,EAAE,8CAA8C;QACnE,YAAY,EAAE,8CAA8C;QAC5D,SAAS,EAAE,6CAA6C;QACxD,cAAc,EAAE,8CAA8C;KAC/D;CACF,CAAC"}
|
@@ -17,7 +17,7 @@ const web3_js_1 = require("@solana/web3.js");
|
|
17
17
|
const constants_1 = require("./constants");
|
18
18
|
const helper_1 = require("./helper");
|
19
19
|
const obligationsFetcher_1 = __importDefault(require("../save/obligationsFetcher"));
|
20
|
-
const dlmmPositionsFetcher_1 = __importDefault(require("../meteora/dlmmPositionsFetcher"));
|
20
|
+
const dlmmPositionsFetcher_1 = __importDefault(require("../meteora/dlmm/dlmmPositionsFetcher"));
|
21
21
|
const solana_1 = __importDefault(require("../tokens/fetchers/solana"));
|
22
22
|
const getWhirlpoolPositions_1 = require("../orca/getWhirlpoolPositions");
|
23
23
|
const getSolanaDasEndpoint_1 = __importDefault(require("../../utils/clients/getSolanaDasEndpoint"));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"positionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/hawksight/positionsFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAQoC;AACpC,6CAA4C;AAG5C,2CAAyC;AACzC,qCAAgD;AAChD,oFAA4D;AAC5D,
|
1
|
+
{"version":3,"file":"positionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/hawksight/positionsFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -25,7 +25,7 @@ function getVotePda(owner) {
|
|
25
25
|
}
|
26
26
|
exports.getVotePda = getVotePda;
|
27
27
|
const maxIdsPerRequest = 100;
|
28
|
-
const jupPriceApiUrl = 'https
|
28
|
+
const jupPriceApiUrl = 'https:/lite-api.jup.ag/price/v2';
|
29
29
|
function getJupiterPrices(mints, vsMint) {
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
31
31
|
let res;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,kDAA6C;AAE7C,2CAAwE;AAExE,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,mBAAS,CAAC,sBAAsB,CACrC;QACE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrB,wBAAY,CAAC,OAAO,EAAE;QACtB,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;KAC/B,EACD,yBAAa,CACd,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AATD,gCASC;AAED,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,kDAA6C;AAE7C,2CAAwE;AAExE,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,mBAAS,CAAC,sBAAsB,CACrC;QACE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrB,wBAAY,CAAC,OAAO,EAAE;QACtB,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;KAC/B,EACD,yBAAa,CACd,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AATD,gCASC;AAED,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEzD,SAAsB,gBAAgB,CAAC,KAAkB,EAAE,MAAiB;;QAC1E,IAAI,GAAG,CAAC;QACR,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,gBAAgB,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,cAAc,IAAI,wBAAY,aAAZ,wBAAY,cAAZ,wBAAY,GAAI,EAAE,EAAE,CAAC;QAE3D,GAAG,CAAC;YACF,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACnC,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAwC,QAAQ,EAAE;gBACrE,MAAM,EAAE;oBACN,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAChD,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;iBAC3B;aACF,CAAC,CAAC;YACH,KAAK,GAAG,GAAG,CAAC;YACZ,GAAG,IAAI,gBAAgB,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;QAE1B,MAAM,MAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;QAC9C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,IAAI,KAAK;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AA5BD,4CA4BC"}
|
@@ -4,7 +4,7 @@ import { Position, Whirlpool } from '../../orca/structs/whirlpool';
|
|
4
4
|
import { PersonalPositionState, PoolState } from '../../raydium/structs/clmms';
|
5
5
|
import { WhirlpoolStrategy } from '../structs/vaults';
|
6
6
|
import { ParsedAccount } from '../../../utils/solana';
|
7
|
-
import { BinArray, DLMMPosition, LbPair } from '../../meteora/
|
7
|
+
import { BinArray, DLMMPosition, LbPair } from '../../meteora/dlmm/structs';
|
8
8
|
export declare enum DEXS {
|
9
9
|
ORCA = 0,
|
10
10
|
RAYDIUM = 1,
|
@@ -8,8 +8,8 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
8
|
const whirlpool_1 = require("../../orca/structs/whirlpool");
|
9
9
|
const clmms_1 = require("../../raydium/structs/clmms");
|
10
10
|
const tokenAmountFromLiquidity_1 = require("../../../utils/clmm/tokenAmountFromLiquidity");
|
11
|
-
const
|
12
|
-
const dlmmHelper_1 = require("../../meteora/dlmmHelper");
|
11
|
+
const structs_1 = require("../../meteora/dlmm/structs");
|
12
|
+
const dlmmHelper_1 = require("../../meteora/dlmm/dlmmHelper");
|
13
13
|
var DEXS;
|
14
14
|
(function (DEXS) {
|
15
15
|
DEXS[DEXS["ORCA"] = 0] = "ORCA";
|
@@ -61,7 +61,7 @@ function getPoolStructFromDex(dexNumber) {
|
|
61
61
|
if (dexNumber.toNumber() === DEXS.RAYDIUM)
|
62
62
|
return clmms_1.poolStateStruct;
|
63
63
|
if (dexNumber.toNumber() === DEXS.METEORA)
|
64
|
-
return
|
64
|
+
return structs_1.lbPairStruct;
|
65
65
|
return undefined;
|
66
66
|
}
|
67
67
|
exports.getPoolStructFromDex = getPoolStructFromDex;
|
@@ -71,7 +71,7 @@ function getPositionStructFromDex(dexNumber) {
|
|
71
71
|
if (dexNumber.toNumber() === DEXS.RAYDIUM)
|
72
72
|
return clmms_1.personalPositionStateStruct;
|
73
73
|
if (dexNumber.toNumber() === DEXS.METEORA)
|
74
|
-
return
|
74
|
+
return structs_1.dlmmPositionV2Struct;
|
75
75
|
return undefined;
|
76
76
|
}
|
77
77
|
exports.getPositionStructFromDex = getPositionStructFromDex;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"vaults.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/kamino/helpers/vaults.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAErC,4DAKsC;AACtC,uDAKqC;AAGrC,2FAA4F;AAC5F,
|
1
|
+
{"version":3,"file":"vaults.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/kamino/helpers/vaults.ts"],"names":[],"mappings":"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"}
|
@@ -17,7 +17,7 @@ const getMultipleAccountsInfoSafe_1 = require("../../utils/solana/getMultipleAcc
|
|
17
17
|
const vaults_1 = require("./helpers/vaults");
|
18
18
|
const vaults_2 = require("./structs/vaults");
|
19
19
|
const filters_1 = require("../../utils/solana/filters");
|
20
|
-
const
|
20
|
+
const structs_1 = require("../meteora/dlmm/structs");
|
21
21
|
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
22
22
|
var _a, _b;
|
23
23
|
const client = (0, clients_1.getClientSolana)();
|
@@ -66,7 +66,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
66
|
continue;
|
67
67
|
const isMeteroa = strategyDex.toNumber() === vaults_1.DEXS.METEORA;
|
68
68
|
const binArrays = isMeteroa
|
69
|
-
? (yield (0, solana_1.getParsedMultipleAccountsInfo)(client,
|
69
|
+
? (yield (0, solana_1.getParsedMultipleAccountsInfo)(client, structs_1.binArrayStruct, [
|
70
70
|
strategy.tickArrayLower,
|
71
71
|
strategy.tickArrayUpper,
|
72
72
|
]))
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/poolsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAIoC;AAGpC,iDAAsD;AACtD,2CAAoD;AACpD,+CAG4B;AAC5B,gGAA6F;AAC7F,6CAM0B;AAE1B,6CAA2D;AAC3D,wDAAkE;AAClE,
|
1
|
+
{"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/poolsJob.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.stakeForFeeProgramId = exports.dlmmVaultProgramId = exports.dlmmProgramId = exports.farmProgramId = exports.poolsProgramId = exports.vaultsProgramId = exports.feeVaultsKey = exports.dlmmVaultsKey = exports.farmsKey = exports.prefixVaults = exports.platformId = void 0;
|
3
|
+
exports.cpammProgramId = exports.stakeForFeeProgramId = exports.dlmmVaultProgramId = exports.dlmmProgramId = exports.farmProgramId = exports.poolsProgramId = exports.vaultsProgramId = exports.feeVaultsKey = exports.dlmmVaultsKey = exports.farmsKey = exports.prefixVaults = exports.platformId = void 0;
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
exports.platformId = 'meteora';
|
6
6
|
exports.prefixVaults = `${exports.platformId}-vaults`;
|
@@ -13,4 +13,5 @@ exports.farmProgramId = new web3_js_1.PublicKey('FarmuwXPWXvefWUeqFAa5w6rifLkq5X
|
|
13
13
|
exports.dlmmProgramId = new web3_js_1.PublicKey('LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo');
|
14
14
|
exports.dlmmVaultProgramId = new web3_js_1.PublicKey('vaU6kP7iNEGkbmPkLmZfGwiGxd4Mob24QQCie5R9kd2');
|
15
15
|
exports.stakeForFeeProgramId = new web3_js_1.PublicKey('FEESngU3neckdwib9X3KWqdL7Mjmqk9XNp3uh5JbP4KP');
|
16
|
+
exports.cpammProgramId = new web3_js_1.PublicKey('cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG');
|
16
17
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/meteora/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,SAAS,CAAC;AAEvB,QAAA,YAAY,GAAG,GAAG,kBAAU,SAAS,CAAC;AACtC,QAAA,QAAQ,GAAG,OAAO,CAAC;AACnB,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,YAAY,GAAG,YAAY,CAAC;AAE5B,QAAA,eAAe,GAAG,IAAI,mBAAS,CAC1C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,6CAA6C,CAC9C,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAI,mBAAS,CAC7C,6CAA6C,CAC9C,CAAC;AAEW,QAAA,oBAAoB,GAAG,IAAI,mBAAS,CAC/C,8CAA8C,CAC/C,CAAC"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/meteora/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,SAAS,CAAC;AAEvB,QAAA,YAAY,GAAG,GAAG,kBAAU,SAAS,CAAC;AACtC,QAAA,QAAQ,GAAG,OAAO,CAAC;AACnB,QAAA,aAAa,GAAG,eAAe,CAAC;AAChC,QAAA,YAAY,GAAG,YAAY,CAAC;AAE5B,QAAA,eAAe,GAAG,IAAI,mBAAS,CAC1C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,8CAA8C,CAC/C,CAAC;AAEW,QAAA,aAAa,GAAG,IAAI,mBAAS,CACxC,6CAA6C,CAC9C,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAI,mBAAS,CAC7C,6CAA6C,CAC9C,CAAC;AAEW,QAAA,oBAAoB,GAAG,IAAI,mBAAS,CAC/C,8CAA8C,CAC/C,CAAC;AAEW,QAAA,cAAc,GAAG,IAAI,mBAAS,CACzC,6CAA6C,CAC9C,CAAC"}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const web3_js_1 = require("@solana/web3.js");
|
14
|
+
const constants_1 = require("../constants");
|
15
|
+
const clients_1 = require("../../../utils/clients");
|
16
|
+
const solana_1 = require("../../../utils/solana");
|
17
|
+
const helpers_1 = require("./helpers");
|
18
|
+
const structs_1 = require("./structs");
|
19
|
+
const dlmmHelper_1 = require("../dlmm/dlmmHelper");
|
20
|
+
const ElementRegistry_1 = require("../../../utils/elementbuilder/ElementRegistry");
|
21
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
22
|
+
const client = (0, clients_1.getClientSolana)();
|
23
|
+
const tokenAccounts = yield client.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
24
|
+
programId: solana_1.solanaToken2022PidPk,
|
25
|
+
});
|
26
|
+
const nftAccounts = tokenAccounts.value.map((account) => {
|
27
|
+
const parsedAccount = solana_1.tokenAccountStruct.deserialize(account.account.data)[0];
|
28
|
+
if (parsedAccount.amount.toNumber() === 1)
|
29
|
+
return Object.assign(Object.assign({}, parsedAccount), { pubkey: account.pubkey });
|
30
|
+
return undefined;
|
31
|
+
});
|
32
|
+
const pdas = nftAccounts
|
33
|
+
.map((account) => (account ? (0, helpers_1.derivePositionAddress)(account.mint) : []))
|
34
|
+
.flat();
|
35
|
+
const positions = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, structs_1.positionStruct, pdas);
|
36
|
+
const pools = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, structs_1.poolStruct, positions.map((position) => (position ? position.pool : [])).flat());
|
37
|
+
const registry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, constants_1.platformId);
|
38
|
+
const liqElement = registry.addElementLiquidity({ label: 'LiquidityPool' });
|
39
|
+
for (const position of positions) {
|
40
|
+
if (!position)
|
41
|
+
continue;
|
42
|
+
const pool = pools.find((p) => p === null || p === void 0 ? void 0 : p.pubkey.equals(position.pool));
|
43
|
+
if (!pool)
|
44
|
+
continue;
|
45
|
+
const liq = liqElement.addLiquidity({
|
46
|
+
ref: position.pubkey.toString(),
|
47
|
+
sourceRefs: [{ address: pool.pubkey.toString(), name: 'Pool' }],
|
48
|
+
link: `https://www.meteora.ag/dammv2/${pool.pubkey.toString()}`,
|
49
|
+
});
|
50
|
+
const tokenAmountA = (0, helpers_1.getAmountAFromLiquidityDelta)(position.unlockedLiquidity
|
51
|
+
.plus(position.vestedLiquidity)
|
52
|
+
.plus(position.permanentLockedLiquidity), pool.sqrtPrice, pool.sqrtMaxPrice, dlmmHelper_1.Rounding.Down);
|
53
|
+
liq.addAsset({
|
54
|
+
address: pool.tokenAMint,
|
55
|
+
amount: tokenAmountA,
|
56
|
+
});
|
57
|
+
const tokenAmountB = (0, helpers_1.getAmountBFromLiquidityDelta)(position.unlockedLiquidity, pool.sqrtPrice, pool.sqrtMinPrice, dlmmHelper_1.Rounding.Down);
|
58
|
+
liq.addAsset({
|
59
|
+
address: pool.tokenBMint,
|
60
|
+
amount: tokenAmountB,
|
61
|
+
});
|
62
|
+
const { rewards, feeTokenA, feeTokenB } = (0, helpers_1.getUnClaimReward)(pool, position);
|
63
|
+
for (let i = 0; i < rewards.length; i++) {
|
64
|
+
liq.addRewardAsset({
|
65
|
+
address: pool.rewardInfos[i].mint,
|
66
|
+
amount: rewards[i],
|
67
|
+
});
|
68
|
+
}
|
69
|
+
liq.addRewardAsset({
|
70
|
+
address: pool.tokenAMint.toString(),
|
71
|
+
amount: feeTokenA,
|
72
|
+
});
|
73
|
+
liq.addRewardAsset({
|
74
|
+
address: pool.tokenBMint.toString(),
|
75
|
+
amount: feeTokenB,
|
76
|
+
});
|
77
|
+
}
|
78
|
+
return registry.getElements(cache);
|
79
|
+
});
|
80
|
+
const fetcher = {
|
81
|
+
id: `${constants_1.platformId}-cpamm-positions`,
|
82
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
83
|
+
executor,
|
84
|
+
};
|
85
|
+
exports.default = fetcher;
|
86
|
+
//# sourceMappingURL=cpammPositionsFetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cpammPositionsFetcher.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/meteora/cpamm/cpammPositionsFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const clients_1 = require("../../../utils/clients");
|
14
|
+
const ParsedGpa_1 = require("../../../utils/solana/beets/ParsedGpa");
|
15
|
+
const constants_1 = require("../constants");
|
16
|
+
const dlmmHelper_1 = require("../dlmm/dlmmHelper");
|
17
|
+
const helpers_1 = require("./helpers");
|
18
|
+
const structs_1 = require("./structs");
|
19
|
+
const getLpUnderlyingTokenSource_1 = require("../../../utils/misc/getLpUnderlyingTokenSource");
|
20
|
+
const getDecimalsForToken_1 = require("../../../utils/misc/getDecimalsForToken");
|
21
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
22
|
+
const client = (0, clients_1.getClientSolana)();
|
23
|
+
const poolsAccounts = yield ParsedGpa_1.ParsedGpa.build(client, structs_1.poolStruct, constants_1.cpammProgramId)
|
24
|
+
.addFilter('discriminator', [241, 154, 109, 4, 17, 177, 109, 188])
|
25
|
+
.addDataSizeFilter(1112)
|
26
|
+
.run();
|
27
|
+
const vaultAccounts = [];
|
28
|
+
const mints = new Set();
|
29
|
+
const tokensA = [];
|
30
|
+
const tokensB = [];
|
31
|
+
poolsAccounts.forEach((poolAccount) => {
|
32
|
+
vaultAccounts.push(poolAccount.tokenAVault, poolAccount.tokenBVault);
|
33
|
+
mints.add(poolAccount.tokenAMint.toString());
|
34
|
+
mints.add(poolAccount.tokenBMint.toString());
|
35
|
+
tokensA.push(poolAccount.tokenAMint.toString());
|
36
|
+
tokensB.push(poolAccount.tokenBMint.toString());
|
37
|
+
});
|
38
|
+
const decimalsA = yield Promise.all([
|
39
|
+
...tokensA.map((m) => (0, getDecimalsForToken_1.getDecimalsForToken)(m, portfolio_core_1.NetworkId.solana)),
|
40
|
+
]);
|
41
|
+
const decimalsB = yield Promise.all([
|
42
|
+
...tokensB.map((m) => (0, getDecimalsForToken_1.getDecimalsForToken)(m, portfolio_core_1.NetworkId.solana)),
|
43
|
+
]);
|
44
|
+
const tokenPrices = yield cache.getTokenPricesAsMap(mints, portfolio_core_1.NetworkId.solana);
|
45
|
+
const sources = [];
|
46
|
+
poolsAccounts.forEach((poolAccount, index) => {
|
47
|
+
const tokenPriceA = tokenPrices.get(poolAccount.tokenAMint.toString());
|
48
|
+
const tokenPriceB = tokenPrices.get(poolAccount.tokenBMint.toString());
|
49
|
+
const decimalA = decimalsA[index];
|
50
|
+
const decimalB = decimalsB[index];
|
51
|
+
const amountA = (0, helpers_1.getAmountAFromLiquidityDelta)(poolAccount.liquidity, poolAccount.sqrtPrice, poolAccount.sqrtMaxPrice, dlmmHelper_1.Rounding.Down);
|
52
|
+
const amountB = (0, helpers_1.getAmountBFromLiquidityDelta)(poolAccount.liquidity, poolAccount.sqrtPrice, poolAccount.sqrtMinPrice, dlmmHelper_1.Rounding.Down);
|
53
|
+
const underlyingSources = (0, getLpUnderlyingTokenSource_1.getLpUnderlyingTokenSource)({
|
54
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
55
|
+
sourceId: poolAccount.pubkey.toString(),
|
56
|
+
poolUnderlyings: [
|
57
|
+
{
|
58
|
+
address: poolAccount.tokenAMint.toString(),
|
59
|
+
decimals: Number(decimalA),
|
60
|
+
reserveAmount: amountA.dividedBy(Math.pow(10, Number(decimalA))).toNumber(),
|
61
|
+
weight: 0.5,
|
62
|
+
tokenPrice: tokenPriceA,
|
63
|
+
},
|
64
|
+
{
|
65
|
+
address: poolAccount.tokenBMint.toString(),
|
66
|
+
decimals: Number(decimalB),
|
67
|
+
reserveAmount: amountB.dividedBy(Math.pow(10, Number(decimalB))).toNumber(),
|
68
|
+
weight: 0.5,
|
69
|
+
tokenPrice: tokenPriceB,
|
70
|
+
},
|
71
|
+
],
|
72
|
+
});
|
73
|
+
sources.push(...underlyingSources);
|
74
|
+
});
|
75
|
+
yield cache.setTokenPriceSources(sources);
|
76
|
+
});
|
77
|
+
const job = {
|
78
|
+
id: `${constants_1.platformId}-cpamm-pools`,
|
79
|
+
executor,
|
80
|
+
labels: ['normal'],
|
81
|
+
};
|
82
|
+
exports.default = job;
|
83
|
+
//# sourceMappingURL=cpammV2Job.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cpammV2Job.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/meteora/cpamm/cpammV2Job.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
|
+
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
+
import BigNumber from 'bignumber.js';
|
4
|
+
import { PublicKey } from '@solana/web3.js';
|
5
|
+
import { Pool, Position } from './structs';
|
6
|
+
import { Rounding } from '../dlmm/dlmmHelper';
|
7
|
+
export declare const getUnClaimReward: (poolState: Pool, positionState: Position) => {
|
8
|
+
feeTokenA: BigNumber;
|
9
|
+
feeTokenB: BigNumber;
|
10
|
+
rewards: BigNumber[];
|
11
|
+
};
|
12
|
+
export declare function getAmountAFromLiquidityDelta(liquidity: BigNumber, currentSqrtPrice: BigNumber, // current sqrt price
|
13
|
+
maxSqrtPrice: BigNumber, rounding: Rounding): BigNumber;
|
14
|
+
export declare function getAmountBFromLiquidityDelta(liquidity: BigNumber, currentSqrtPrice: BigNumber, // current sqrt price,
|
15
|
+
minSqrtPrice: BigNumber, rounding: Rounding): BigNumber;
|
16
|
+
export declare function derivePositionAddress(positionNft: PublicKey): PublicKey;
|
17
|
+
export declare const getPriceFromSqrtPrice: (sqrtPrice: BigNumber, tokenADecimal: number, tokenBDecimal: number) => string;
|
@@ -0,0 +1,83 @@
|
|
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.getPriceFromSqrtPrice = exports.derivePositionAddress = exports.getAmountBFromLiquidityDelta = exports.getAmountAFromLiquidityDelta = exports.getUnClaimReward = void 0;
|
7
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
9
|
+
const web3_js_1 = require("@solana/web3.js");
|
10
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
11
|
+
const dlmmHelper_1 = require("../dlmm/dlmmHelper");
|
12
|
+
const constants_1 = require("../constants");
|
13
|
+
const getUnClaimReward = (poolState, positionState) => {
|
14
|
+
const totalPositionLiquidity = (0, bignumber_js_1.default)(positionState.unlockedLiquidity.toString())
|
15
|
+
.plus((0, bignumber_js_1.default)(positionState.vestedLiquidity.toString()))
|
16
|
+
.plus((0, bignumber_js_1.default)(positionState.permanentLockedLiquidity.toString()));
|
17
|
+
const feeAPerTokenStored = new bn_js_1.default(Buffer.from(poolState.feeAPerLiquidity).reverse()).sub(new bn_js_1.default(Buffer.from(positionState.feeAPerTokenCheckpoint).reverse()));
|
18
|
+
const feeBPerTokenStored = new bn_js_1.default(Buffer.from(poolState.feeBPerLiquidity).reverse()).sub(new bn_js_1.default(Buffer.from(positionState.feeBPerTokenCheckpoint).reverse()));
|
19
|
+
const denominator = new bignumber_js_1.default(2).pow(128);
|
20
|
+
const feeA = totalPositionLiquidity
|
21
|
+
.times(feeAPerTokenStored.toString())
|
22
|
+
.dividedBy(denominator);
|
23
|
+
const feeB = totalPositionLiquidity
|
24
|
+
.times(feeBPerTokenStored.toString())
|
25
|
+
.dividedBy(denominator);
|
26
|
+
return {
|
27
|
+
feeTokenA: (0, bignumber_js_1.default)(positionState.feeAPending.toString()).plus(feeA),
|
28
|
+
feeTokenB: (0, bignumber_js_1.default)(positionState.feeBPending.toString()).plus(feeB),
|
29
|
+
rewards: positionState.rewardInfos.length > 0
|
30
|
+
? positionState.rewardInfos.map((item) => item.rewardPendings)
|
31
|
+
: [],
|
32
|
+
};
|
33
|
+
};
|
34
|
+
exports.getUnClaimReward = getUnClaimReward;
|
35
|
+
// L = Δa * √P_upper * √P_lower / (√P_upper - √P_lower)
|
36
|
+
// Δa = L * (√P_upper - √P_lower) / √P_upper * √P_lower
|
37
|
+
function getAmountAFromLiquidityDelta(liquidity, currentSqrtPrice, // current sqrt price
|
38
|
+
maxSqrtPrice, rounding) {
|
39
|
+
// Q128.128
|
40
|
+
const product = liquidity.times(maxSqrtPrice.minus(currentSqrtPrice));
|
41
|
+
// Q128.128
|
42
|
+
const denominator = currentSqrtPrice.times(maxSqrtPrice);
|
43
|
+
// Q64.64
|
44
|
+
if (rounding === dlmmHelper_1.Rounding.Up) {
|
45
|
+
return new bignumber_js_1.default(product
|
46
|
+
.plus(denominator.minus(new bignumber_js_1.default(1)))
|
47
|
+
.div(denominator)
|
48
|
+
.toString());
|
49
|
+
}
|
50
|
+
return new bignumber_js_1.default(product.dividedBy(denominator).toString());
|
51
|
+
}
|
52
|
+
exports.getAmountAFromLiquidityDelta = getAmountAFromLiquidityDelta;
|
53
|
+
// L = Δb / (√P_upper - √P_lower)
|
54
|
+
// Δb = L * (√P_upper - √P_lower)
|
55
|
+
function getAmountBFromLiquidityDelta(liquidity, currentSqrtPrice, // current sqrt price,
|
56
|
+
minSqrtPrice, rounding) {
|
57
|
+
// const one = new BigNumber(1).shiftedBy(-128);
|
58
|
+
const one = new bignumber_js_1.default(2).pow(128);
|
59
|
+
const deltaPrice = currentSqrtPrice.minus(minSqrtPrice);
|
60
|
+
const result = liquidity.times(deltaPrice); // Q128
|
61
|
+
if (rounding === dlmmHelper_1.Rounding.Up) {
|
62
|
+
return new bignumber_js_1.default(result.plus(one.minus(1)).div(one));
|
63
|
+
}
|
64
|
+
// return result.shiftedBy(128);
|
65
|
+
return result.dividedBy(one);
|
66
|
+
}
|
67
|
+
exports.getAmountBFromLiquidityDelta = getAmountBFromLiquidityDelta;
|
68
|
+
function derivePositionAddress(positionNft) {
|
69
|
+
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('position'), positionNft.toBuffer()], constants_1.cpammProgramId)[0];
|
70
|
+
}
|
71
|
+
exports.derivePositionAddress = derivePositionAddress;
|
72
|
+
// (sqrtPrice)^2 * 10 ** (base_decimal - quote_decimal) / 2^128
|
73
|
+
const getPriceFromSqrtPrice = (sqrtPrice, tokenADecimal, tokenBDecimal) => {
|
74
|
+
const decimalSqrtPrice = new decimal_js_1.default(sqrtPrice.toString());
|
75
|
+
const price = decimalSqrtPrice
|
76
|
+
.mul(decimalSqrtPrice)
|
77
|
+
.mul(new decimal_js_1.default(Math.pow(10, (tokenADecimal - tokenBDecimal))))
|
78
|
+
.div(decimal_js_1.default.pow(2, 128))
|
79
|
+
.toString();
|
80
|
+
return price;
|
81
|
+
};
|
82
|
+
exports.getPriceFromSqrtPrice = getPriceFromSqrtPrice;
|
83
|
+
//# sourceMappingURL=helpers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/meteora/cpamm/helpers.ts"],"names":[],"mappings":"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"}
|