@sonarwatch/portfolio-plugins 0.14.10 → 0.14.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/CHANGELOG.md +1636 -1628
  2. package/README.md +3 -3
  3. package/package.json +1 -1
  4. package/src/plugins/balancer/helpers/pools.js +21 -21
  5. package/src/plugins/cetus/types.d.ts +109 -0
  6. package/src/plugins/jupiter/exchange/constants.js +1 -1
  7. package/src/plugins/jupiter/governance/asrAirdropFetcher.d.ts +3 -3
  8. package/src/plugins/jupiter/governance/asrAirdropFetcher.js +50 -71
  9. package/src/plugins/jupiter/governance/asrAirdropFetcher.js.map +1 -1
  10. package/src/plugins/jupiter/governance/constants.d.ts +12 -1
  11. package/src/plugins/jupiter/governance/constants.js +46 -2
  12. package/src/plugins/jupiter/governance/constants.js.map +1 -1
  13. package/src/plugins/jupiter/governance/index.d.ts +5 -0
  14. package/src/plugins/jupiter/governance/index.js +20 -0
  15. package/src/plugins/jupiter/governance/index.js.map +1 -0
  16. package/src/plugins/jupiter/index.js +5 -3
  17. package/src/plugins/jupiter/index.js.map +1 -1
  18. package/src/plugins/kriya/clmmsFetcher.d.ts +3 -0
  19. package/src/plugins/kriya/clmmsFetcher.js +81 -0
  20. package/src/plugins/kriya/clmmsFetcher.js.map +1 -0
  21. package/src/plugins/kriya/constants.d.ts +9 -4
  22. package/src/plugins/kriya/constants.js +48 -5
  23. package/src/plugins/kriya/constants.js.map +1 -1
  24. package/src/plugins/kriya/farmsFetcher.js.map +1 -1
  25. package/src/plugins/kriya/index.js +4 -0
  26. package/src/plugins/kriya/index.js.map +1 -1
  27. package/src/plugins/kriya/lpFetcher.d.ts +3 -0
  28. package/src/plugins/kriya/lpFetcher.js +80 -0
  29. package/src/plugins/kriya/lpFetcher.js.map +1 -0
  30. package/src/plugins/kriya/types/common.d.ts +46 -0
  31. package/src/plugins/kriya/types/common.js +9 -0
  32. package/src/plugins/kriya/types/common.js.map +1 -0
  33. package/src/plugins/kriya/types/farms.d.ts +55 -0
  34. package/src/plugins/kriya/{types.js → types/farms.js} +2 -1
  35. package/src/plugins/kriya/types/farms.js.map +1 -0
  36. package/src/plugins/kriya/types/pools.d.ts +131 -0
  37. package/src/plugins/kriya/types/pools.js +3 -0
  38. package/src/plugins/kriya/types/pools.js.map +1 -0
  39. package/src/plugins/kriya/{types.d.ts → types/vaults.d.ts} +104 -86
  40. package/src/plugins/kriya/types/vaults.js +3 -0
  41. package/src/plugins/kriya/types/vaults.js.map +1 -0
  42. package/src/plugins/kriya/vaultsFetcher.js +67 -59
  43. package/src/plugins/kriya/vaultsFetcher.js.map +1 -1
  44. package/src/plugins/kriya/vaultsJob.js +52 -16
  45. package/src/plugins/kriya/vaultsJob.js.map +1 -1
  46. package/src/plugins/native-stake/solana/solanaValidatorsJob.js +4 -0
  47. package/src/plugins/native-stake/solana/solanaValidatorsJob.js.map +1 -1
  48. package/src/plugins/native-stake/solana/types.d.ts +8 -0
  49. package/src/plugins/parcl/stakingFetcher.js +10 -24
  50. package/src/plugins/parcl/stakingFetcher.js.map +1 -1
  51. package/src/plugins/sushiswap/helpers.js +24 -24
  52. package/src/plugins/uniswap-v2/helpers.js +22 -22
  53. package/src/plugins/zeta/airdropFetcher.js +14 -14
  54. package/src/utils/elementbuilder/LiquidityBuilder.js +1 -1
  55. package/src/utils/elementbuilder/LiquidityBuilder.js.map +1 -1
  56. package/src/utils/sei/constants.js +8 -8
  57. package/src/utils/sei/getQueryBalanceByOwner.js +4 -4
  58. package/src/plugins/kriya/types.js.map +0 -1
@@ -1,9 +1,5 @@
1
- import { ID } from '../../utils/sui/structs/id';
2
- export type VaultInfo = {
3
- id: string;
4
- underlyingPool: string;
5
- tokenType: string;
6
- };
1
+ import { ID } from '../../../utils/sui/structs/id';
2
+ import { RewardInfo, TickIndex, Type } from './common';
7
3
  export type Vault = {
8
4
  clmm_pool_id: string;
9
5
  fee_a: string;
@@ -54,23 +50,16 @@ export type TotalSupply = {
54
50
  export type TotalSupplyFields = {
55
51
  value: string;
56
52
  };
57
- export type VaultPositionInfo = {
58
- id: string;
59
- lowerTick: number;
60
- upperTick: number;
61
- liquidity: string;
62
- totalSupply: string;
63
- };
64
- export type VaultPosition = {
53
+ export type VaultPositionCetus = {
65
54
  id: ID;
66
55
  name: number[];
67
- value: Value;
56
+ value: ValueCetus;
68
57
  };
69
- export type Value = {
70
- fields: ValueFields;
58
+ export type ValueCetus = {
59
+ fields: PositionFieldsCetus;
71
60
  type: string;
72
61
  };
73
- export type ValueFields = {
62
+ export type PositionFieldsCetus = {
74
63
  coin_type_a: CoinType;
75
64
  coin_type_b: CoinType;
76
65
  description: string;
@@ -79,8 +68,8 @@ export type ValueFields = {
79
68
  liquidity: string;
80
69
  name: string;
81
70
  pool: string;
82
- tick_lower_index: TickErIndex;
83
- tick_upper_index: TickErIndex;
71
+ tick_lower_index: TickIndex;
72
+ tick_upper_index: TickIndex;
84
73
  url: string;
85
74
  };
86
75
  export type CoinType = {
@@ -90,66 +79,65 @@ export type CoinType = {
90
79
  export type CoinTypeAFields = {
91
80
  name: string;
92
81
  };
93
- export type TickErIndex = {
94
- fields: TickLowerIndexFields;
82
+ export type VaultPositionKriya = {
83
+ id: ID;
84
+ name: number[];
85
+ value: ValueKriya;
86
+ };
87
+ export type ValueKriya = {
88
+ fields: PositionFieldsKriya;
95
89
  type: string;
96
90
  };
97
- export type TickLowerIndexFields = {
98
- bits: number;
91
+ export type PositionFieldsKriya = {
92
+ fee_growth_inside_x_last: string;
93
+ fee_growth_inside_y_last: string;
94
+ fee_rate: string;
95
+ id: ID;
96
+ liquidity: string;
97
+ owed_coin_x: string;
98
+ owed_coin_y: string;
99
+ pool_id: string;
100
+ reward_infos: RewardInfo[];
101
+ tick_lower_index: TickIndex;
102
+ tick_upper_index: TickIndex;
103
+ type_x: Type;
104
+ type_y: Type;
99
105
  };
100
- export type FarmInfo = {
101
- tokenXReserve: string;
102
- lspSupply: string;
103
- protocolFeesPercent: string;
104
- createdAt: Date;
105
- farmSource: FarmSource;
106
- volume: number;
107
- packageId: string;
106
+ export type LeverageVaultInfo = {
107
+ depositedA: string;
108
+ apr: string;
109
+ borrowedBUsd: string;
110
+ farmStakeReceiptType: string;
111
+ decimalA: string;
112
+ createdAt: string;
113
+ farmSource: string;
114
+ coinB: string;
115
+ decimalB: string;
116
+ tvl: string;
117
+ borrowedB: string;
118
+ targetLeverage: string;
119
+ vaultName: string;
120
+ depositedAUsd: string;
121
+ lpSupply: string;
122
+ vaultSource: string;
108
123
  farmId: string;
124
+ fees: string;
125
+ coinA: string;
126
+ updatedAt: string;
127
+ id: string;
128
+ };
129
+ export type DynFieldPositionVault = {
130
+ name: Name;
131
+ bcsName: string;
132
+ type: string;
133
+ objectType: string;
109
134
  objectId: string;
110
- poolSource: PoolSource;
111
- lspType: string;
112
- lpFeesPercent: string;
113
- tokenYType: string;
114
- data: string;
115
- updatedAt: Date;
116
- isStable: boolean;
117
- tokenXType: string;
118
- tokenYReserve: string;
119
- tokenX: Token;
120
- tokenY: Token;
121
- tvl: number;
122
- apy: number;
123
- feeApy: number;
124
- };
125
- export declare enum FarmSource {
126
- Buck = "buck",
127
- Empty = "",
128
- Kriya = "kriya"
129
- }
130
- export declare enum PoolSource {
131
- Deepbook = "deepbook",
132
- DeepbookV2 = "deepbook_v2",
133
- Kriya = "kriya"
134
- }
135
- export type Token = {
136
- coinType: string;
137
- ticker: string;
138
- tokenName: string;
139
- updatedAt: Date;
140
- createdAt: Date;
141
- decimals: number;
142
- iconUrl: string;
143
- description: string;
144
- price: string;
135
+ version: number;
136
+ digest: string;
145
137
  };
146
- export type LiquidityPosition = {
147
- farm_id: string;
148
- id: ID;
149
- lock_until: string;
150
- stake_amount: string;
151
- stake_weight: string;
152
- start_unit: string;
138
+ export type Name = {
139
+ type: string;
140
+ value: number[];
153
141
  };
154
142
  export type StakeReceiptWithPoints = {
155
143
  farm_id: string;
@@ -178,26 +166,56 @@ export type StakeReceiptWithPoints = {
178
166
  type: string;
179
167
  };
180
168
  };
181
- export type LeverageVaultInfo = {
182
- depositedA: string;
169
+ export type VaultReceipt = {
170
+ farm_id: string;
171
+ id: ID;
172
+ reward_infos: RewardInfos;
173
+ shares: string;
174
+ user_points_info: UserPointsInfo;
175
+ };
176
+ export type RewardInfos = {
177
+ fields: RewardInfosFields;
178
+ type: string;
179
+ };
180
+ export type RewardInfosFields = {
181
+ id: ID;
182
+ size: string;
183
+ };
184
+ export type UserPointsInfo = {
185
+ fields: UserPointsInfoFields;
186
+ type: string;
187
+ };
188
+ export type UserPointsInfoFields = {
189
+ claimed_points: string;
190
+ index: string;
191
+ updated_at: string;
192
+ };
193
+ export type VaultData = {
194
+ lpPriceHigh: string;
183
195
  apr: string;
184
- borrowedBUsd: string;
185
- farmStakeReceiptType: string;
186
- decimalA: string;
187
- createdAt: string;
188
- farmSource: string;
196
+ createdAt: Date;
189
197
  coinB: string;
190
- decimalB: string;
191
198
  tvl: string;
192
- borrowedB: string;
193
- targetLeverage: string;
194
199
  vaultName: string;
195
- depositedAUsd: string;
200
+ lastRebalance: string;
196
201
  lpSupply: string;
197
202
  vaultSource: string;
198
203
  farmId: string;
199
204
  fees: string;
200
205
  coinA: string;
201
- updatedAt: string;
206
+ lpPriceLow: string;
207
+ updatedAt: Date;
208
+ currentLpPrice: string;
202
209
  id: string;
210
+ rebalanceCap: string;
211
+ pool: Pool;
212
+ };
213
+ export type Pool = {
214
+ tokenYDecimals: number;
215
+ vaultCoinType: string;
216
+ vaultType: string;
217
+ tokenXType: string;
218
+ tokenYType: string;
219
+ poolId: string;
220
+ tokenXDecimals: number;
203
221
  };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaults.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/kriya/types/vaults.ts"],"names":[],"mappings":""}
@@ -17,77 +17,85 @@ const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
17
  const constants_1 = require("./constants");
18
18
  const clients_1 = require("../../utils/clients");
19
19
  const mulitpleGetBalances_1 = require("../../utils/sui/mulitpleGetBalances");
20
- const constants_2 = require("../cetus/constants");
21
20
  const tokenAmountFromLiquidity_1 = require("../../utils/clmm/tokenAmountFromLiquidity");
22
- const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
21
+ const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
22
+ const getOwnedObjects_1 = require("../../utils/sui/getOwnedObjects");
23
+ const MemoizedCache_1 = require("../../utils/misc/MemoizedCache");
24
+ const vaultsPositionInfoMemo = new MemoizedCache_1.MemoizedCache(constants_1.vaultsInfoKey, {
25
+ prefix: constants_1.platformId,
26
+ networkId: portfolio_core_1.NetworkId.sui,
27
+ });
23
28
  const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
29
+ var _a, _b;
24
30
  const client = (0, clients_1.getClientSui)();
25
- const vaultsBalances = yield (0, mulitpleGetBalances_1.getMultipleBalances)(client, owner, constants_1.vaultsInfo.map((vault) => vault.tokenType));
26
- if (!vaultsBalances.some((balance) => balance.totalBalance !== '0'))
27
- return [];
28
- const poolInfos = yield cache.getItems(constants_1.vaultsInfo.map((vault) => vault.underlyingPool), { prefix: constants_2.clmmPoolsPrefix, networkId: portfolio_core_1.NetworkId.sui });
29
- const vaultsPositionInfo = yield cache.getItem(constants_1.vaultsInfoKey, {
30
- prefix: constants_1.platformId,
31
- networkId: portfolio_core_1.NetworkId.sui,
32
- });
31
+ const [vaultsOldBalances, vaultBalances, vaultsPositionInfo] = yield Promise.all([
32
+ (0, mulitpleGetBalances_1.getMultipleBalances)(client, owner, constants_1.vaultsInfo.map((vault) => vault.tokenType)),
33
+ (0, getOwnedObjects_1.getOwnedObjects)(client, owner, {
34
+ filter: { StructType: constants_1.vaultStakeReceipt },
35
+ }),
36
+ vaultsPositionInfoMemo.getItem(cache),
37
+ ]);
33
38
  if (!vaultsPositionInfo)
34
39
  return [];
35
- const tokenPriceById = yield cache.getTokenPricesAsMap(poolInfos
36
- .map((pool) => (pool ? [pool.coinTypeA, pool.coinTypeB] : []))
37
- .flat(), portfolio_core_1.NetworkId.sui);
38
- let totalValue = 0;
39
- const liquidities = [];
40
- for (let i = 0; i < vaultsBalances.length; i++) {
41
- const balance = vaultsBalances[i];
42
- const pool = poolInfos[i];
43
- const vault = vaultsPositionInfo[i];
44
- if (!pool || !vault)
40
+ const vaultsByCoinType = new Map();
41
+ vaultsPositionInfo.forEach((vault) => vaultsByCoinType.set(vault.coinType, vault));
42
+ const vaultsByFarmId = new Map();
43
+ vaultsPositionInfo.forEach((vault) => vaultsByFarmId.set(vault.farmId, vault));
44
+ const registry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.sui, constants_1.platformId);
45
+ const liquidities = registry.addElementLiquidity({
46
+ name: 'Vaults',
47
+ label: 'LiquidityPool',
48
+ });
49
+ for (let i = 0; i < vaultsOldBalances.length; i++) {
50
+ const liquidity = liquidities.addLiquidity();
51
+ const balance = vaultsOldBalances[i];
52
+ if (balance.totalBalance === '0')
53
+ continue;
54
+ const vault = vaultsByCoinType.get(balance.coinType);
55
+ if (!vault)
45
56
  continue;
46
57
  const totalSupply = new bignumber_js_1.default(vault.totalSupply);
47
- const { tokenAmountA, tokenAmountB } = (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(new bignumber_js_1.default(vault.liquidity), pool.current_tick_index, vault.lowerTick, vault.upperTick, false);
58
+ const { tokenAmountA, tokenAmountB } = (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(new bignumber_js_1.default(vault.liquidity), vault.currentTickIndex, vault.lowerTick, vault.upperTick, false);
48
59
  const shares = new bignumber_js_1.default(balance.totalBalance).dividedBy(totalSupply);
49
- const [tokenPriceA, tokenPriceB] = [
50
- tokenPriceById.get((0, portfolio_core_1.formatMoveTokenAddress)(pool.coinTypeA)),
51
- tokenPriceById.get((0, portfolio_core_1.formatMoveTokenAddress)(pool.coinTypeB)),
52
- ];
53
- if (!tokenPriceA || !tokenPriceB)
60
+ const amountA = tokenAmountA.times(shares);
61
+ const amountB = tokenAmountB.times(shares);
62
+ liquidity.addAsset({
63
+ address: vault.mintA,
64
+ amount: amountA,
65
+ });
66
+ liquidity.addAsset({
67
+ address: vault.mintB,
68
+ amount: amountB,
69
+ });
70
+ }
71
+ for (let i = 0; i < vaultBalances.length; i++) {
72
+ const liquidity = liquidities.addLiquidity();
73
+ const stakeReceipt = (_b = (_a = vaultBalances[i].data) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.fields;
74
+ if (!stakeReceipt || stakeReceipt.shares === '0')
54
75
  continue;
55
- const amountA = tokenAmountA
56
- .times(shares)
57
- .dividedBy(Math.pow(10, tokenPriceA.decimals));
58
- const amountB = tokenAmountB
59
- .times(shares)
60
- .dividedBy(Math.pow(10, tokenPriceB.decimals));
61
- if (amountA.isZero() && amountB.isZero())
76
+ const vault = vaultsByFarmId.get(stakeReceipt.farm_id);
77
+ if (!vault)
62
78
  continue;
63
- const assetA = (0, tokenPriceToAssetToken_1.default)(tokenPriceA.address, amountA.toNumber(), portfolio_core_1.NetworkId.sui, tokenPriceA);
64
- const assetB = (0, tokenPriceToAssetToken_1.default)(tokenPriceB.address, amountB.toNumber(), portfolio_core_1.NetworkId.sui, tokenPriceB);
65
- const value = (0, portfolio_core_1.getUsdValueSum)([assetA.value, assetB.value]);
66
- totalValue = (0, portfolio_core_1.getUsdValueSum)([totalValue, value]);
67
- liquidities.push({
68
- assets: [assetA, assetB],
69
- assetsValue: value,
70
- rewardAssets: [],
71
- rewardAssetsValue: null,
72
- value,
73
- yields: [],
79
+ const totalSupply = new bignumber_js_1.default(vault.totalSupply);
80
+ const { tokenAmountA, tokenAmountB } = (0, tokenAmountFromLiquidity_1.getTokenAmountsFromLiquidity)(new bignumber_js_1.default(vault.liquidity), 600, vault.lowerTick, vault.upperTick, false);
81
+ const useApiData = tokenAmountA.isLessThan(0) || tokenAmountB.isLessThan(0);
82
+ const shares = new bignumber_js_1.default(stakeReceipt.shares).dividedBy(totalSupply);
83
+ const amountA = useApiData
84
+ ? new bignumber_js_1.default(vault.amountA).times(shares)
85
+ : tokenAmountA.times(shares);
86
+ const amountB = useApiData
87
+ ? new bignumber_js_1.default(vault.amountB).times(shares)
88
+ : tokenAmountB.times(shares);
89
+ liquidity.addAsset({
90
+ address: vault.mintA,
91
+ amount: amountA,
92
+ });
93
+ liquidity.addAsset({
94
+ address: vault.mintB,
95
+ amount: amountB,
74
96
  });
75
97
  }
76
- if (liquidities.length === 0)
77
- return [];
78
- return [
79
- {
80
- type: 'liquidity',
81
- data: {
82
- liquidities,
83
- },
84
- label: 'LiquidityPool',
85
- networkId: portfolio_core_1.NetworkId.sui,
86
- platformId: constants_1.platformId,
87
- value: totalValue,
88
- name: 'Vaults',
89
- },
90
- ];
98
+ return registry.getElements(cache);
91
99
  });
92
100
  const fetcher = {
93
101
  id: `${constants_1.platformId}-vaults`,
@@ -1 +1 @@
1
- {"version":3,"file":"vaultsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kriya/vaultsFetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vaultsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kriya/vaultsFetcher.ts"],"names":[],"mappings":"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"}
@@ -8,40 +8,76 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const axios_1 = __importDefault(require("axios"));
13
17
  const clients_1 = require("../../utils/clients");
14
- const multiGetObjects_1 = require("../../utils/sui/multiGetObjects");
15
- const multipleGetDynamicFieldsObjects_1 = require("../../utils/sui/multipleGetDynamicFieldsObjects");
16
18
  const constants_1 = require("./constants");
19
+ const common_1 = require("./types/common");
20
+ const getObject_1 = require("../../utils/sui/getObject");
21
+ const getDynamicFieldObjects_1 = require("../../utils/sui/getDynamicFieldObjects");
22
+ const bitsToNumber_1 = require("../../utils/sui/bitsToNumber");
17
23
  const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
18
- var _a, _b, _c, _d;
24
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
19
25
  const client = (0, clients_1.getClientSui)();
20
- const [vaultsObjects, vaultsDynamicFields] = yield Promise.all([
21
- (0, multiGetObjects_1.multiGetObjects)(client, constants_1.vaultsInfo.map((vault) => vault.id)),
22
- (0, multipleGetDynamicFieldsObjects_1.multipleGetDynamicFieldsObjects)(client, constants_1.vaultsInfo.map((vault) => vault.id)),
23
- ]);
24
26
  const vaultsInfos = [];
25
- for (let i = 0; i < vaultsObjects.length; i++) {
26
- const vault = (_b = (_a = vaultsObjects[i].data) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.fields;
27
+ const vaultsApiData = yield axios_1.default.get(constants_1.vaultsUrl);
28
+ for (const vaultInfo of constants_1.vaultsInfo) {
29
+ const [vaultOject, vaultDynamicFields] = yield Promise.all([
30
+ (0, getObject_1.getObject)(client, vaultInfo.id),
31
+ (0, getDynamicFieldObjects_1.getDynamicFieldObjects)(client, vaultInfo.id),
32
+ ]);
33
+ const vault = (_b = (_a = vaultOject.data) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.fields;
27
34
  if (!vault)
28
35
  continue;
29
- const dynamicFields = vaultsDynamicFields[i];
36
+ const vaultData = vaultsApiData.data.find((v) => v.id === vault.id.id);
37
+ if (!vaultData)
38
+ continue;
39
+ const isCetus = vaultInfo.underlyingDex === common_1.Dex.cetus;
40
+ const dynamicFieldType = isCetus
41
+ ? constants_1.dynamicFieldPositionTypeCetus
42
+ : constants_1.dynamicFieldPositionTypeKriya;
30
43
  let vaultPosition;
31
- for (const fields of dynamicFields) {
32
- if (((_c = fields.data) === null || _c === void 0 ? void 0 : _c.type) === constants_1.dynamicFieldPositionType)
33
- vaultPosition = (_d = fields.data.content) === null || _d === void 0 ? void 0 : _d.fields;
44
+ for (const fields of vaultDynamicFields) {
45
+ if (((_c = fields.data) === null || _c === void 0 ? void 0 : _c.type) === dynamicFieldType) {
46
+ vaultPosition = isCetus
47
+ ? (_d = fields.data.content) === null || _d === void 0 ? void 0 : _d.fields
48
+ : (_e = fields.data.content) === null || _e === void 0 ? void 0 : _e.fields;
49
+ }
34
50
  }
35
51
  if (!vaultPosition)
36
52
  continue;
37
- const vaultPositionInfo = {
53
+ const vaultPositionCommon = {
38
54
  id: vault.id.id,
55
+ farmId: vaultData.farmId,
56
+ coinType: vaultInfo.tokenType,
39
57
  liquidity: vaultPosition.value.fields.liquidity,
40
58
  lowerTick: vault.lower_tick,
41
59
  upperTick: vault.upper_tick,
42
60
  totalSupply: vault.treasury_cap.fields.total_supply.fields.value,
61
+ amountA: vaultData.coinA,
62
+ amountB: vaultData.coinB,
43
63
  };
44
- vaultsInfos.push(vaultPositionInfo);
64
+ if (vaultInfo.underlyingDex === common_1.Dex.cetus) {
65
+ const poolInfo = yield (0, getObject_1.getObject)(client, vaultInfo.underlyingPool);
66
+ if ((_g = (_f = poolInfo.data) === null || _f === void 0 ? void 0 : _f.content) === null || _g === void 0 ? void 0 : _g.fields) {
67
+ const { keys } = (0, portfolio_core_1.parseTypeString)(poolInfo.data.type);
68
+ if (keys && keys.at(0) && keys.at(1)) {
69
+ const vaultPositionInfo = Object.assign(Object.assign({}, vaultPositionCommon), { currentTickIndex: (0, bitsToNumber_1.bitsToNumber)(poolInfo.data.content.fields.current_tick_index.fields.bits), mintA: keys[0].type, mintB: keys[1].type });
70
+ vaultsInfos.push(vaultPositionInfo);
71
+ }
72
+ }
73
+ }
74
+ else if (vaultInfo.underlyingDex === common_1.Dex.kriya) {
75
+ const poolInfo = yield (0, getObject_1.getObject)(client, vaultInfo.underlyingPool);
76
+ if ((_j = (_h = poolInfo.data) === null || _h === void 0 ? void 0 : _h.content) === null || _j === void 0 ? void 0 : _j.fields) {
77
+ const vaultPositionInfo = Object.assign(Object.assign({}, vaultPositionCommon), { currentTickIndex: (0, bitsToNumber_1.bitsToNumber)(poolInfo.data.content.fields.tick_index.fields.bits), mintA: poolInfo.data.content.fields.type_x.fields.name, mintB: poolInfo.data.content.fields.type_y.fields.name });
78
+ vaultsInfos.push(vaultPositionInfo);
79
+ }
80
+ }
45
81
  }
46
82
  yield cache.setItem(constants_1.vaultsInfoKey, vaultsInfos, {
47
83
  prefix: constants_1.platformId,
@@ -51,7 +87,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
51
87
  const job = {
52
88
  id: `${constants_1.platformId}-vaults`,
53
89
  executor,
54
- label: 'normal',
90
+ label: 'realtime',
55
91
  };
56
92
  exports.default = job;
57
93
  //# sourceMappingURL=vaultsJob.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kriya/vaultsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAGvD,iDAAmD;AACnD,qEAAkE;AAClE,qGAAkG;AAClG,2CAKqB;AAGrB,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;;IACnD,MAAM,MAAM,GAAG,IAAA,sBAAY,GAAE,CAAC;IAE9B,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,IAAA,iCAAe,EACb,MAAM,EACN,sBAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC;QACD,IAAA,iEAA+B,EAC7B,MAAM,EACN,sBAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAA,MAAA,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,0CAAE,OAAO,0CAAE,MAAM,CAAC;QACrD,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,aAAa,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI,MAAK,oCAAwB;gBAChD,aAAa,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,OAAO,0CAAE,MAAuB,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,MAAM,iBAAiB,GAAsB;YAC3C,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;YACf,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;YAC/C,SAAS,EAAE,KAAK,CAAC,UAAU;YAC3B,SAAS,EAAE,KAAK,CAAC,UAAU;YAC3B,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK;SACjE,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAa,EAAE,WAAW,EAAE;QAC9C,MAAM,EAAE,sBAAU;QAClB,SAAS,EAAE,0BAAS,CAAC,GAAG;KACzB,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,SAAS;IAC1B,QAAQ;IACR,KAAK,EAAE,QAAQ;CAChB,CAAC;AACF,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"vaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/kriya/vaultsJob.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,10 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
30
30
  voter: r.vote_identity,
31
31
  name: r.name,
32
32
  imageUri: r.image,
33
+ baseApy: r.apy_estimate,
34
+ jitoApy: r.jito_apy,
35
+ stakingApy: r.staking_apy,
36
+ totalApy: r.total_apy,
33
37
  }));
34
38
  yield cache.setItem(constants_1.validatorsKey, validators, {
35
39
  prefix: constants_1.platformId,
@@ -1 +1 @@
1
- {"version":3,"file":"solanaValidatorsJob.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/native-stake/solana/solanaValidatorsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAAuD;AACvD,kDAA6C;AAG7C,4CAAyD;AACzD,2CAA0C;AAG1C,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,MAAM,eAAK;SACpB,GAAG,CAAgD,uBAAW,EAAE;QAC/D,OAAO,EAAE,KAAK;KACf,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,aAAa;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,KAAK;KAClB,CAAC,CAAC,CAAC;IAEJ,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAa,EAAE,UAAU,EAAE;QAC7C,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,oBAAoB;IACrC,QAAQ;IACR,KAAK,EAAE,QAAQ;CAChB,CAAC;AACF,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"solanaValidatorsJob.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/native-stake/solana/solanaValidatorsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAAuD;AACvD,kDAA6C;AAG7C,4CAAyD;AACzD,2CAA0C;AAG1C,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,MAAM,eAAK;SACpB,GAAG,CAAgD,uBAAW,EAAE;QAC/D,OAAO,EAAE,KAAK;KACf,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,aAAa;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,KAAK;QACjB,OAAO,EAAE,CAAC,CAAC,YAAY;QACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;QACnB,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,QAAQ,EAAE,CAAC,CAAC,SAAS;KACtB,CAAC,CAAC,CAAC;IAEJ,MAAM,KAAK,CAAC,OAAO,CAAC,yBAAa,EAAE,UAAU,EAAE;QAC7C,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,oBAAoB;IACrC,QAAQ;IACR,KAAK,EAAE,QAAQ;CAChB,CAAC;AACF,kBAAe,GAAG,CAAC"}
@@ -3,9 +3,17 @@ export type ValidatorApiResponse = {
3
3
  vote_identity: string;
4
4
  name: string;
5
5
  image: string;
6
+ apy_estimate: number;
7
+ jito_apy: number;
8
+ staking_apy: number;
9
+ total_apy: number;
6
10
  };
7
11
  export type Validator = {
8
12
  voter: string;
9
13
  name?: string;
10
14
  imageUri?: string;
15
+ baseApy: number;
16
+ jitoApy: number;
17
+ stakingApy: number;
18
+ totalApy: number;
11
19
  };
@@ -8,17 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
13
  const web3_js_1 = require("@solana/web3.js");
17
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
18
14
  const constants_1 = require("./constants");
19
15
  const clients_1 = require("../../utils/clients");
20
16
  const solana_1 = require("../../utils/solana");
21
- const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
17
+ const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
22
18
  const decodePosition = (buffer) => ({
23
19
  amount: Number(buffer.readBigUInt64LE(1)),
24
20
  activationEpoch: Number(buffer.readBigUInt64LE(1 + 8)),
@@ -58,34 +54,24 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
58
54
  {
59
55
  memcmp: {
60
56
  offset: 8,
61
- bytes: new web3_js_1.PublicKey(owner).toBase58(),
57
+ bytes: new web3_js_1.PublicKey(owner).toString(),
62
58
  },
63
59
  },
64
60
  ]);
65
61
  if (accs.length === 0)
66
62
  return [];
67
63
  const positions = accs.map((acc) => acc && decodePositionAccount(acc.account.data));
68
- const tokenPrice = yield cache.getTokenPrice(constants_1.prclMint, portfolio_core_1.NetworkId.solana);
69
- if (!tokenPrice)
70
- return [];
71
- const assets = [];
64
+ const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, constants_1.platformId);
65
+ const element = elementRegistry.addElementMultiple({
66
+ label: 'Staked',
67
+ });
72
68
  positions.forEach((positionAccount) => {
73
- positionAccount.positions.forEach((position) => {
74
- assets.push((0, tokenPriceToAssetToken_1.default)(tokenPrice.address, new bignumber_js_1.default(position.amount)
75
- .dividedBy(Math.pow(10, tokenPrice.decimals))
76
- .toNumber(), portfolio_core_1.NetworkId.solana, tokenPrice));
69
+ element.addAsset({
70
+ address: constants_1.prclMint,
71
+ amount: positionAccount.positions.reduce((sum, position) => sum + Number(position.amount), 0),
77
72
  });
78
73
  });
79
- return [
80
- {
81
- type: portfolio_core_1.PortfolioElementType.multiple,
82
- label: 'Staked',
83
- networkId: portfolio_core_1.NetworkId.solana,
84
- platformId: constants_1.platformId,
85
- data: { assets },
86
- value: (0, portfolio_core_1.getUsdValueSum)(assets.map((asset) => asset.value)),
87
- },
88
- ];
74
+ return elementRegistry.getElements(cache);
89
75
  });
90
76
  const fetcher = {
91
77
  id: `${constants_1.platformId}-staking`,