@sonarwatch/portfolio-plugins 0.8.86 → 0.8.87

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +17 -13
  2. package/package.json +2 -2
  3. package/src/index.js +1 -0
  4. package/src/index.js.map +1 -1
  5. package/src/plugins/balancer/helpers/pools.js +21 -21
  6. package/src/plugins/kamino/constants.d.ts +6 -0
  7. package/src/plugins/kamino/constants.js +49 -1
  8. package/src/plugins/kamino/constants.js.map +1 -1
  9. package/src/plugins/kamino/depositsFetcher.d.ts +3 -0
  10. package/src/plugins/kamino/depositsFetcher.js +279 -0
  11. package/src/plugins/kamino/depositsFetcher.js.map +1 -0
  12. package/src/plugins/kamino/filters.d.ts +2 -0
  13. package/src/plugins/kamino/filters.js +17 -0
  14. package/src/plugins/kamino/filters.js.map +1 -0
  15. package/src/plugins/kamino/helpers/apr.d.ts +8 -0
  16. package/src/plugins/kamino/helpers/apr.js +96 -0
  17. package/src/plugins/kamino/helpers/apr.js.map +1 -0
  18. package/src/plugins/kamino/helpers/pdas.d.ts +4 -0
  19. package/src/plugins/kamino/helpers/pdas.js +39 -0
  20. package/src/plugins/kamino/helpers/pdas.js.map +1 -0
  21. package/src/plugins/kamino/{helpers.d.ts → helpers/vaults.d.ts} +4 -4
  22. package/src/plugins/kamino/{helpers.js → helpers/vaults.js} +2 -28
  23. package/src/plugins/kamino/helpers/vaults.js.map +1 -0
  24. package/src/plugins/kamino/index.js +4 -2
  25. package/src/plugins/kamino/index.js.map +1 -1
  26. package/src/plugins/kamino/poolsJob.js +6 -6
  27. package/src/plugins/kamino/poolsJob.js.map +1 -1
  28. package/src/plugins/kamino/reservesJob.d.ts +3 -0
  29. package/src/plugins/kamino/reservesJob.js +44 -0
  30. package/src/plugins/kamino/reservesJob.js.map +1 -0
  31. package/src/plugins/kamino/structs/klend.d.ts +219 -0
  32. package/src/plugins/kamino/structs/klend.js +197 -0
  33. package/src/plugins/kamino/structs/klend.js.map +1 -0
  34. package/src/plugins/kamino/{structs.js → structs/vaults.js} +2 -2
  35. package/src/plugins/kamino/structs/vaults.js.map +1 -0
  36. package/src/plugins/kamino/types.d.ts +77 -0
  37. package/src/plugins/kamino/types.js +3 -0
  38. package/src/plugins/kamino/types.js.map +1 -0
  39. package/src/plugins/orders/clobs-solana/MarketJobExecutorGenerator.js +1 -1
  40. package/src/plugins/orders/clobs-solana/MarketJobExecutorGenerator.js.map +1 -1
  41. package/src/plugins/sushiswap/helpers.js +24 -24
  42. package/src/plugins/uniswap-v2/helpers.js +22 -22
  43. package/src/utils/solana/filters.d.ts +2 -1
  44. package/src/utils/solana/filters.js +8 -2
  45. package/src/utils/solana/filters.js.map +1 -1
  46. package/src/plugins/kamino/helpers.js.map +0 -1
  47. package/src/plugins/kamino/structs.js.map +0 -1
  48. /package/src/plugins/kamino/{structs.d.ts → structs/vaults.d.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ export declare function getLendingPda(owner: string): PublicKey;
3
+ export declare function getMultiplyPdas(owner: string): PublicKey[];
4
+ export declare function getLeveragePdas(owner: string): PublicKey[];
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLeveragePdas = exports.getMultiplyPdas = exports.getLendingPda = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const constants_1 = require("../constants");
6
+ function getLendingPda(owner) {
7
+ return web3_js_1.PublicKey.findProgramAddressSync([
8
+ Buffer.from([0]),
9
+ Buffer.from([0]),
10
+ new web3_js_1.PublicKey(owner).toBuffer(),
11
+ new web3_js_1.PublicKey(constants_1.lendingMarket).toBuffer(),
12
+ web3_js_1.PublicKey.default.toBuffer(),
13
+ web3_js_1.PublicKey.default.toBuffer(),
14
+ ], constants_1.klendProgramId)[0];
15
+ }
16
+ exports.getLendingPda = getLendingPda;
17
+ function getMultiplyPdas(owner) {
18
+ return constants_1.multiplyPairs.map((tokens) => web3_js_1.PublicKey.findProgramAddressSync([
19
+ Buffer.from([1]),
20
+ Buffer.from([0]),
21
+ new web3_js_1.PublicKey(owner).toBuffer(),
22
+ new web3_js_1.PublicKey(constants_1.lendingMarket).toBuffer(),
23
+ new web3_js_1.PublicKey(tokens[0]).toBuffer(),
24
+ new web3_js_1.PublicKey(tokens[1]).toBuffer(),
25
+ ], constants_1.klendProgramId)[0]);
26
+ }
27
+ exports.getMultiplyPdas = getMultiplyPdas;
28
+ function getLeveragePdas(owner) {
29
+ return constants_1.leveragePairs.map((tokens) => web3_js_1.PublicKey.findProgramAddressSync([
30
+ Buffer.from([3]),
31
+ Buffer.from([0]),
32
+ new web3_js_1.PublicKey(owner).toBuffer(),
33
+ new web3_js_1.PublicKey(constants_1.lendingMarket).toBuffer(),
34
+ new web3_js_1.PublicKey(tokens[0]).toBuffer(),
35
+ new web3_js_1.PublicKey(tokens[1]).toBuffer(),
36
+ ], constants_1.klendProgramId)[0]);
37
+ }
38
+ exports.getLeveragePdas = getLeveragePdas;
39
+ //# sourceMappingURL=pdas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdas.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/kamino/helpers/pdas.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,4CAKsB;AAEtB,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,mBAAS,CAAC,sBAAsB,CACrC;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC/B,IAAI,mBAAS,CAAC,yBAAa,CAAC,CAAC,QAAQ,EAAE;QACvC,mBAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC5B,mBAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;KAC7B,EACD,0BAAc,CACf,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAZD,sCAYC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,yBAAa,CAAC,GAAG,CACtB,CAAC,MAAM,EAAE,EAAE,CACT,mBAAS,CAAC,sBAAsB,CAC9B;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC/B,IAAI,mBAAS,CAAC,yBAAa,CAAC,CAAC,QAAQ,EAAE;QACvC,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACnC,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACpC,EACD,0BAAc,CACf,CAAC,CAAC,CAAC,CACP,CAAC;AACJ,CAAC;AAfD,0CAeC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,yBAAa,CAAC,GAAG,CACtB,CAAC,MAAM,EAAE,EAAE,CACT,mBAAS,CAAC,sBAAsB,CAC9B;QACE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC/B,IAAI,mBAAS,CAAC,yBAAa,CAAC,CAAC,QAAQ,EAAE;QACvC,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QACnC,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KACpC,EACD,0BAAc,CACf,CAAC,CAAC,CAAC,CACP,CAAC;AACJ,CAAC;AAfD,0CAeC"}
@@ -1,8 +1,8 @@
1
1
  import BigNumber from 'bignumber.js';
2
- import { Position, Whirlpool } from '../orca/structs/whirlpool';
3
- import { PersonalPositionState, PoolState } from '../raydium/structs/clmms';
4
- import { WhirlpoolStrategy } from './structs';
5
- import { ParsedAccount } from '../../utils/solana';
2
+ import { Position, Whirlpool } from '../../orca/structs/whirlpool';
3
+ import { PersonalPositionState, PoolState } from '../../raydium/structs/clmms';
4
+ import { WhirlpoolStrategy } from '../structs/vaults';
5
+ import { ParsedAccount } from '../../../utils/solana';
6
6
  export declare function dexToNumber(dex: string): number;
7
7
  export declare function getTokenAmountsFromInfos(strategy: ParsedAccount<WhirlpoolStrategy>, pool: PoolState | Whirlpool, position: PersonalPositionState | Position): {
8
8
  tokenAmountA: BigNumber;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isActive = exports.getTokenAmountsFromInfos = exports.dexToNumber = void 0;
4
- const tokenAmountFromLiquidity_1 = require("../../utils/clmm/tokenAmountFromLiquidity");
4
+ const tokenAmountFromLiquidity_1 = require("../../../utils/clmm/tokenAmountFromLiquidity");
5
5
  const dexes = ['ORCA', 'RAYDIUM', 'CREMA'];
6
6
  function dexToNumber(dex) {
7
7
  for (let i = 0; i < dexes.length; i += 1) {
@@ -17,37 +17,11 @@ function getTokenAmountsFromInfos(strategy, pool, position) {
17
17
  const orcaPool = pool;
18
18
  const orcaPosition = position;
19
19
  return (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(orcaPosition.liquidity, orcaPool.tickCurrentIndex, orcaPosition.tickLowerIndex, orcaPosition.tickUpperIndex, false);
20
- // const whirlpoolSqrtPrice = orcaPool.sqrtPrice;
21
- // const vaultPositionLiquidity = orcaPosition.liquidity;
22
- // const vaultPositionTickLowerIndex = orcaPosition.tickLowerIndex;
23
- // const vaultPositionTickUpperIndex = orcaPosition.tickUpperIndex;
24
- // const priceLower = orcaTickToPriceX64(vaultPositionTickLowerIndex);
25
- // const priceUpper = orcaTickToPriceX64(vaultPositionTickUpperIndex);
26
- // return getOrcaTokenAmountsFromLiquidity(
27
- // vaultPositionLiquidity.toNumber(),
28
- // whirlpoolSqrtPrice,
29
- // priceLower,
30
- // priceUpper,
31
- // false
32
- // );
33
20
  }
34
21
  if (strategy.strategyDex.toNumber() === dexToNumber('RAYDIUM')) {
35
22
  const raydiumPool = pool;
36
23
  const raydiumPosition = position;
37
24
  return (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(raydiumPosition.liquidity, raydiumPool.tickCurrent, raydiumPosition.tickLowerIndex, raydiumPosition.tickUpperIndex, false);
38
- // const lowerSqrtPriceX64 = new BigNumber(
39
- // raydiumTickToPriceX64(raydiumPosition.tickLowerIndex).toString()
40
- // );
41
- // const upperSqrtPriceX64 = new BigNumber(
42
- // raydiumTickToPriceX64(raydiumPosition.tickUpperIndex).toString()
43
- // );
44
- // return getRaydiumTokenAmountsFromLiquidity(
45
- // new BigNumber(raydiumPool.sqrtPriceX64),
46
- // lowerSqrtPriceX64,
47
- // upperSqrtPriceX64,
48
- // raydiumPosition.liquidity,
49
- // false
50
- // );
51
25
  }
52
26
  throw new Error(`Invalid dex ${strategy.strategyDex.toString()}`);
53
27
  }
@@ -70,4 +44,4 @@ function isActive(strategy) {
70
44
  return true;
71
45
  }
72
46
  exports.isActive = isActive;
73
- //# sourceMappingURL=helpers.js.map
47
+ //# sourceMappingURL=vaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaults.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/kamino/helpers/vaults.ts"],"names":[],"mappings":";;;AAKA,2FAA4F;AAE5F,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAE3C,SAAgB,WAAW,CAAC,GAAW;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACpB,OAAO,CAAC,CAAC;SACV;KACF;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;AACxC,CAAC;AAPD,kCAOC;AAED,SAAgB,wBAAwB,CACtC,QAA0C,EAC1C,IAA2B,EAC3B,QAA0C;IAE1C,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,EAAE;QAC3D,MAAM,QAAQ,GAAG,IAAiB,CAAC;QACnC,MAAM,YAAY,GAAG,QAAoB,CAAC;QAE1C,OAAO,IAAA,uDAA4B,EACjC,YAAY,CAAC,SAAS,EACtB,QAAQ,CAAC,gBAAgB,EACzB,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,cAAc,EAC3B,KAAK,CACN,CAAC;KACH;IACD,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE;QAC9D,MAAM,WAAW,GAAG,IAAiB,CAAC;QACtC,MAAM,eAAe,GAAG,QAAiC,CAAC;QAE1D,OAAO,IAAA,uDAA4B,EACjC,eAAe,CAAC,SAAS,EACzB,WAAW,CAAC,WAAW,EACvB,eAAe,CAAC,cAAc,EAC9B,eAAe,CAAC,cAAc,EAC9B,KAAK,CACN,CAAC;KACH;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AA9BD,4DA8BC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,CAAC,CAAC,EAAE,SAAS,CAAC;IACd,CAAC,CAAC,EAAE,QAAQ,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,YAAY,CAAC;IACjB,CAAC,CAAC,EAAE,SAAS,CAAC;CACf,CAAC,CAAC;AAEH,SAAgB,QAAQ,CAAC,QAA2B;IAClD,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC;AAND,4BAMC"}
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.fetchers = exports.jobs = exports.platforms = void 0;
7
7
  const constants_1 = require("./constants");
8
8
  const poolsJob_1 = __importDefault(require("./poolsJob"));
9
+ const reservesJob_1 = __importDefault(require("./reservesJob"));
10
+ const depositsFetcher_1 = __importDefault(require("./depositsFetcher"));
9
11
  exports.platforms = [constants_1.kaminoPlatform];
10
- exports.jobs = [poolsJob_1.default];
11
- exports.fetchers = [];
12
+ exports.jobs = [poolsJob_1.default, reservesJob_1.default];
13
+ exports.fetchers = [depositsFetcher_1.default];
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/index.ts"],"names":[],"mappings":";;;;;;AAGA,2CAA6C;AAC7C,0DAAkC;AAErB,QAAA,SAAS,GAAe,CAAC,0BAAc,CAAC,CAAC;AACzC,QAAA,IAAI,GAAU,CAAC,kBAAQ,CAAC,CAAC;AACzB,QAAA,QAAQ,GAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/index.ts"],"names":[],"mappings":";;;;;;AAGA,2CAA6C;AAC7C,0DAAkC;AAClC,gEAAwC;AACxC,wEAAgD;AAEnC,QAAA,SAAS,GAAe,CAAC,0BAAc,CAAC,CAAC;AACzC,QAAA,IAAI,GAAU,CAAC,kBAAQ,EAAE,qBAAW,CAAC,CAAC;AACtC,QAAA,QAAQ,GAAc,CAAC,yBAAe,CAAC,CAAC"}
@@ -14,14 +14,14 @@ const clients_1 = require("../../utils/clients");
14
14
  const constants_1 = require("./constants");
15
15
  const solana_1 = require("../../utils/solana");
16
16
  const getMultipleAccountsInfoSafe_1 = require("../../utils/solana/getMultipleAccountsInfoSafe");
17
- const helpers_1 = require("./helpers");
17
+ const vaults_1 = require("./helpers/vaults");
18
18
  const whirlpool_1 = require("../orca/structs/whirlpool");
19
19
  const clmms_1 = require("../raydium/structs/clmms");
20
- const structs_1 = require("./structs");
20
+ const vaults_2 = require("./structs/vaults");
21
21
  const filters_1 = require("../../utils/solana/filters");
22
22
  const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
23
23
  const client = (0, clients_1.getClientSolana)();
24
- const strategies = yield (0, solana_1.getParsedProgramAccounts)(client, structs_1.whirlpoolStrategyStruct, constants_1.programId, (0, filters_1.dataSizeFilter)(structs_1.whirlpoolStrategyStruct));
24
+ const strategies = yield (0, solana_1.getParsedProgramAccounts)(client, vaults_2.whirlpoolStrategyStruct, constants_1.programId, (0, filters_1.dataStructSizeFilter)(vaults_2.whirlpoolStrategyStruct));
25
25
  const tokensMint = strategies
26
26
  .map((str) => [str.tokenAMint.toString(), str.tokenBMint.toString()])
27
27
  .flat();
@@ -36,7 +36,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
36
36
  const positionAndWhirlpoolAccountsInfo = yield (0, getMultipleAccountsInfoSafe_1.getMultipleAccountsInfoSafe)(client, strategiesPositionsAndWhirlpool);
37
37
  for (let i = 0; i < strategies.length; i += 1) {
38
38
  const strategy = strategies[i];
39
- if (!(0, helpers_1.isActive)(strategy))
39
+ if (!(0, vaults_1.isActive)(strategy))
40
40
  continue;
41
41
  // Here is a Kamino error.
42
42
  // They've tested a pool with 11111111111111111111111111111111 for whirlpool
@@ -49,7 +49,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
49
49
  const address = strategy.sharesMint;
50
50
  const decimals = strategy.sharesMintDecimals.toNumber();
51
51
  const supply = strategy.sharesIssued.dividedBy(Math.pow(10, decimals));
52
- const isOrca = strategy.strategyDex.toNumber() === (0, helpers_1.dexToNumber)('ORCA');
52
+ const isOrca = strategy.strategyDex.toNumber() === (0, vaults_1.dexToNumber)('ORCA');
53
53
  const rawPool = positionAndWhirlpoolAccountsInfo[positionSizeIndex + i];
54
54
  if (!rawPool)
55
55
  continue;
@@ -64,7 +64,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
64
64
  const position = isOrca
65
65
  ? whirlpool_1.positionStruct.deserialize(positionData)[0]
66
66
  : clmms_1.personalPositionStateStruct.deserialize(positionData)[0];
67
- const { tokenAmountA, tokenAmountB } = (0, helpers_1.getTokenAmountsFromInfos)(strategy, pool, position);
67
+ const { tokenAmountA, tokenAmountB } = (0, vaults_1.getTokenAmountsFromInfos)(strategy, pool, position);
68
68
  const tokenAAmount = tokenAmountA
69
69
  .plus(strategy.tokenAAmounts)
70
70
  .div(Math.pow(10, strategy.tokenAMintDecimals.toNumber()));
@@ -1 +1 @@
1
- {"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/poolsJob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/poolsJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '../../Job';
2
+ declare const job: Job;
3
+ export default job;
@@ -0,0 +1,44 @@
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 solana_1 = require("../../utils/solana");
15
+ const filters_1 = require("../../utils/solana/filters");
16
+ const constants_1 = require("./constants");
17
+ const klend_1 = require("./structs/klend");
18
+ const apr_1 = require("./helpers/apr");
19
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
20
+ const client = (0, clients_1.getClientSolana)();
21
+ const reservesAccounts = (yield Promise.all([
22
+ (0, solana_1.getParsedProgramAccounts)(client, klend_1.reserveStruct, constants_1.klendProgramId, (0, filters_1.dataSizeFilter)(8624)),
23
+ (0, solana_1.getParsedProgramAccounts)(client, klend_1.reserveStruct, constants_1.klendProgramId, (0, filters_1.dataSizeFilter)(8464)),
24
+ ])).flat();
25
+ if (reservesAccounts.length !== 0) {
26
+ const reserveById = {};
27
+ for (const reserve of reservesAccounts) {
28
+ const borrowApr = (0, apr_1.calculateBorrowAPR)(reserve);
29
+ const supplyApr = (0, apr_1.calculateSupplyAPR)(reserve);
30
+ reserveById[reserve.pubkey.toString()] = Object.assign(Object.assign({}, reserve), { borrowApr,
31
+ supplyApr });
32
+ }
33
+ yield cache.setItem(constants_1.reservesKey, reserveById, {
34
+ prefix: constants_1.platformId,
35
+ networkId: portfolio_core_1.NetworkId.solana,
36
+ });
37
+ }
38
+ });
39
+ const job = {
40
+ id: `${constants_1.platformId}-reserves`,
41
+ executor,
42
+ };
43
+ exports.default = job;
44
+ //# sourceMappingURL=reservesJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservesJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kamino/reservesJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAGvD,iDAAsD;AACtD,+CAA8D;AAC9D,wDAA4D;AAC5D,2CAAsE;AACtE,2CAAgD;AAChD,uCAAuE;AAGvE,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,gBAAgB,GAAG,CACvB,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,IAAA,iCAAwB,EACtB,MAAM,EACN,qBAAa,EACb,0BAAc,EACd,IAAA,wBAAc,EAAC,IAAI,CAAC,CACrB;QACD,IAAA,iCAAwB,EACtB,MAAM,EACN,qBAAa,EACb,0BAAc,EACd,IAAA,wBAAc,EAAC,IAAI,CAAC,CACrB;KACF,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,MAAM,WAAW,GAAoC,EAAE,CAAC;QACxD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE;YACtC,MAAM,SAAS,GAAG,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,mCACjC,OAAO,KACV,SAAS;gBACT,SAAS,GACV,CAAC;SACH;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,uBAAW,EAAE,WAAW,EAAE;YAC5C,MAAM,EAAE,sBAAU;YAClB,SAAS,EAAE,0BAAS,CAAC,MAAM;SAC5B,CAAC,CAAC;KACJ;AACH,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,WAAW;IAC5B,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,219 @@
1
+ /// <reference types="node" />
2
+ import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ import BigNumber from 'bignumber.js';
5
+ export type BigFractionBytes = {
6
+ value0: BigNumber;
7
+ value1: BigNumber;
8
+ value2: BigNumber;
9
+ value3: BigNumber;
10
+ value: BigNumber[];
11
+ padding: BigNumber;
12
+ padding1: BigNumber;
13
+ };
14
+ export declare const bigFractionBytesStruct: BeetStruct<BigFractionBytes, Partial<BigFractionBytes>>;
15
+ export type ObligationLiquidity = {
16
+ borrowReserve: PublicKey;
17
+ cumulativeBorrowRateBsf: BigFractionBytes;
18
+ padding: BigNumber;
19
+ borrowedAmountSf: BigNumber;
20
+ marketValueSf: BigNumber;
21
+ borrowFactorAdjustedMarketValueSf: BigNumber;
22
+ padding2: BigNumber[];
23
+ };
24
+ export declare const obligationLiquidityStruct: BeetStruct<ObligationLiquidity, Partial<ObligationLiquidity>>;
25
+ export type ObligationCollateral = {
26
+ depositReserve: PublicKey;
27
+ depositedAmount: BigNumber;
28
+ marketValueSf: BigNumber;
29
+ padding: BigNumber[];
30
+ };
31
+ export declare const obligationCollateralStruct: BeetStruct<ObligationCollateral, Partial<ObligationCollateral>>;
32
+ export type LastUpdate = {
33
+ slot: BigNumber;
34
+ stale: number;
35
+ placeholder: number[];
36
+ };
37
+ export declare const lastUpdateStruct: BeetStruct<LastUpdate, Partial<LastUpdate>>;
38
+ export type Obligation = {
39
+ buffer: Buffer;
40
+ tag: BigNumber;
41
+ lastUpdate: LastUpdate;
42
+ lendingMarket: PublicKey;
43
+ owner: PublicKey;
44
+ deposits: ObligationCollateral[];
45
+ lowestReserveDepositLtv: BigNumber;
46
+ depositedValueSf: BigNumber;
47
+ borrows: ObligationLiquidity[];
48
+ borrowFactorAdjustedDebtValueSf: BigNumber;
49
+ borrowedAssetsMarketValueSf: BigNumber;
50
+ allowedBorrowValueSf: BigNumber;
51
+ unhealthyBorrowValueSf: BigNumber;
52
+ depositsAssetTiers: number[];
53
+ borrowsAssetTiers: number[];
54
+ elevationGroup: number;
55
+ reserved: number;
56
+ referrer: PublicKey;
57
+ padding3: BigNumber[];
58
+ };
59
+ export declare const obligationStruct: BeetStruct<Obligation, Partial<Obligation>>;
60
+ export type ElevationGroup = {
61
+ maxLiquidationBonusBps: number;
62
+ id: number;
63
+ ltvPct: number;
64
+ liquidationThresholdPct: number;
65
+ allowNewLoans: number;
66
+ reserved: number[];
67
+ padding: Buffer;
68
+ };
69
+ export declare const elevationGroupStruct: BeetStruct<ElevationGroup, Partial<ElevationGroup>>;
70
+ export type LendingMarket = {
71
+ buffer: Buffer;
72
+ version: BigNumber;
73
+ bumpSeed: BigNumber;
74
+ lendingMarketOwner: PublicKey;
75
+ lendingMarketOwnerCached: PublicKey;
76
+ quoteCurrency: number[];
77
+ referralFeeBps: number;
78
+ emergencyMode: number;
79
+ reserved: number[];
80
+ priceRefreshTriggerToMaxAgePct: number;
81
+ liquidationMaxDebtCloseFactorPct: number;
82
+ insolvencyRiskUnhealthyLtvPct: number;
83
+ minFullLiquidationAmountThreshold: BigNumber;
84
+ maxLiquidatableDebtMarketValueAtOnce: BigNumber;
85
+ globalUnhealthyBorrowValue: BigNumber;
86
+ globalAllowedBorrowValue: BigNumber;
87
+ riskCouncil: PublicKey;
88
+ multiplierPointsTagBoost: number[];
89
+ elevationGroups: ElevationGroup[];
90
+ elevationGroupPadding: BigNumber[];
91
+ padding1: BigNumber[];
92
+ };
93
+ export declare const lendingMarketStruct: BeetStruct<LendingMarket, Partial<LendingMarket>>;
94
+ export type WithdrawalCaps = {
95
+ configCapacity: BigNumber;
96
+ currentTotal: BigNumber;
97
+ lastIntervalStartTimestamp: BigNumber;
98
+ configIntervalLengthSeconds: BigNumber;
99
+ };
100
+ export declare const withdrawalCapsStruct: BeetStruct<WithdrawalCaps, Partial<WithdrawalCaps>>;
101
+ export type PythConfiguration = {
102
+ price: PublicKey;
103
+ };
104
+ export declare const pythConfigurationStruct: BeetStruct<PythConfiguration, Partial<PythConfiguration>>;
105
+ export type SwitchboardConfiguration = {
106
+ priceAggregator: PublicKey;
107
+ twapAggregator: PublicKey;
108
+ };
109
+ export declare const switchboardConfigurationStruct: BeetStruct<SwitchboardConfiguration, Partial<SwitchboardConfiguration>>;
110
+ export type ScopeConfiguration = {
111
+ priceFeed: PublicKey;
112
+ priceChain: number[];
113
+ twapChain: number[];
114
+ };
115
+ export declare const scopeConfigurationStruct: BeetStruct<ScopeConfiguration, Partial<ScopeConfiguration>>;
116
+ export type PriceHeuristic = {
117
+ lower: BigNumber;
118
+ upper: BigNumber;
119
+ exp: BigNumber;
120
+ };
121
+ export declare const priceHeuristicStruct: BeetStruct<PriceHeuristic, Partial<PriceHeuristic>>;
122
+ export type TokenInfo = {
123
+ name: number[];
124
+ heuristic: PriceHeuristic;
125
+ maxTwapDivergenceBps: BigNumber;
126
+ maxAgePriceSeconds: BigNumber;
127
+ maxAgeTwapSeconds: BigNumber;
128
+ scopeConfiguration: ScopeConfiguration;
129
+ switchboardConfiguration: SwitchboardConfiguration;
130
+ pythConfiguration: PythConfiguration;
131
+ padding: Buffer;
132
+ };
133
+ export declare const tokenInfoStruct: BeetStruct<TokenInfo, Partial<TokenInfo>>;
134
+ export type CurvePoint = {
135
+ utilizationRateBps: number;
136
+ borrowRateBps: number;
137
+ };
138
+ export declare const CurvePointStruct: BeetStruct<CurvePoint, Partial<CurvePoint>>;
139
+ export type BorrowRateCurve = {
140
+ points: CurvePoint[];
141
+ };
142
+ export declare const borrowRateCurveStruct: FixableBeetStruct<BorrowRateCurve, Partial<BorrowRateCurve>>;
143
+ export type ReserveFees = {
144
+ borrowFeeSf: BigNumber;
145
+ flashLoanFeeSf: BigNumber;
146
+ padding: number[];
147
+ };
148
+ export declare const reserveFeesStruct: BeetStruct<ReserveFees, Partial<ReserveFees>>;
149
+ export type ReserveConfig = {
150
+ status: number;
151
+ assetTier: number;
152
+ reserved0: number[];
153
+ multiplierSideBoost: number[];
154
+ multiplierTagBoost: number[];
155
+ protocolTakeRatePct: number;
156
+ protocolLiquidationFeePct: number;
157
+ loanToValuePct: number;
158
+ liquidationThresholdPct: number;
159
+ minLiquidationBonusBps: number;
160
+ maxLiquidationBonusBps: number;
161
+ badDebtLiquidationBonusBps: number;
162
+ deleveragingMarginCallPeriodSecs: BigNumber;
163
+ deleveragingThresholdSlotsPerBps: BigNumber;
164
+ fees: ReserveFees;
165
+ borrowRateCurve: BorrowRateCurve;
166
+ borrowFactorPct: BigNumber;
167
+ depositLimit: BigNumber;
168
+ borrowLimit: BigNumber;
169
+ tokenInfo: TokenInfo;
170
+ depositWithdrawalCap: WithdrawalCaps;
171
+ debtWithdrawalCap: WithdrawalCaps;
172
+ elevationGroups: number[];
173
+ reserved1: number[];
174
+ };
175
+ export declare const reserveConfigStruct: FixableBeetStruct<ReserveConfig, Partial<ReserveConfig>>;
176
+ export type ReserveCollateral = {
177
+ mintPubkey: PublicKey;
178
+ mintTotalSupply: BigNumber;
179
+ supplyVault: PublicKey;
180
+ padding1: BigNumber[];
181
+ padding2: BigNumber[];
182
+ };
183
+ export declare const reserveCollateralStruct: BeetStruct<ReserveCollateral, Partial<ReserveCollateral>>;
184
+ export type ReserveLiquidity = {
185
+ mintPubkey: PublicKey;
186
+ supplyVault: PublicKey;
187
+ feeVault: PublicKey;
188
+ availableAmount: BigNumber;
189
+ borrowedAmountSf: BigNumber;
190
+ marketPriceSf: BigNumber;
191
+ marketPriceLastUpdatedTs: BigNumber;
192
+ mintDecimals: BigNumber;
193
+ depositLimitCrossedSlot: BigNumber;
194
+ borrowLimitCrossedSlot: BigNumber;
195
+ cumulativeBorrowRateBsf: BigFractionBytes;
196
+ accumulatedProtocolFeesSf: BigNumber;
197
+ accumulatedReferrerFeesSf: BigNumber;
198
+ pendingReferrerFeesSf: BigNumber;
199
+ absoluteReferralRateSf: BigNumber;
200
+ padding2: BigNumber[];
201
+ padding3: BigNumber[];
202
+ };
203
+ export declare const reserveLiquidityStruct: BeetStruct<ReserveLiquidity, Partial<ReserveLiquidity>>;
204
+ export type Reserve = {
205
+ buffer: Buffer;
206
+ version: BigNumber;
207
+ lastUpdate: LastUpdate;
208
+ lendingMarket: PublicKey;
209
+ farmCollateral: PublicKey;
210
+ farmDebt: PublicKey;
211
+ liquidity: ReserveLiquidity;
212
+ reserveLiquidityPadding: BigNumber[];
213
+ collateral: ReserveCollateral;
214
+ reserveCollateralPadding: BigNumber[];
215
+ config: ReserveConfig;
216
+ configPadding: BigNumber[];
217
+ padding: BigNumber[];
218
+ };
219
+ export declare const reserveStruct: FixableBeetStruct<Reserve, Partial<Reserve>>;