@sonarwatch/portfolio-plugins 0.14.55 → 0.14.56

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 CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [0.14.56](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.55...plugins-0.14.56) (2024-12-05)
6
+
7
+
8
+
5
9
  ## [0.14.55](https://github.com/sonarwatch/portfolio/compare/plugins-0.14.54...plugins-0.14.55) (2024-12-05)
6
10
 
7
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonarwatch/portfolio-plugins",
3
- "version": "0.14.55",
3
+ "version": "0.14.56",
4
4
  "type": "commonjs",
5
5
  "types": "./src/index.d.ts",
6
6
  "peerDependencies": {
@@ -20,7 +20,7 @@ const clients_1 = require("../../utils/clients");
20
20
  const constants_1 = require("./constants");
21
21
  const solana_1 = require("../../utils/solana");
22
22
  const struct_1 = require("./struct");
23
- const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
23
+ const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
24
24
  // const slotTtl = 30000;
25
25
  // const slot: number | null = null;
26
26
  // const slotUpdate = 0;
@@ -51,25 +51,22 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
51
51
  // slotUpdate = Date.now();
52
52
  // }
53
53
  // if (!slot) return [];
54
- const tokenPrices = yield cache.getTokenPricesAsMap(accounts
55
- .map((a) => {
56
- const v = vaults[a.dlmmVault.toString()];
57
- return [v.baseMint, v.quoteMint];
58
- })
59
- .flat(), portfolio_core_1.NetworkId.solana);
60
- const assets = [];
54
+ const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, constants_1.platformId);
55
+ const element = elementRegistry.addElementMultiple({
56
+ label: 'Vesting',
57
+ name: 'Alpha Vault',
58
+ });
61
59
  accounts.forEach((escrow) => {
62
60
  const vault = vaults[escrow.dlmmVault.toString()];
63
61
  if (!vault || !vault.endVestingTs || !vault.startVestingTs)
64
62
  return;
63
+ // if (time > Number(vault.endVestingTs)) return;
65
64
  // Vesting not started yet
66
65
  if (time < Number(vault.startVestingTs)) {
67
- const tpQuote = tokenPrices.get(vault.quoteMint);
68
- if (!tpQuote)
69
- return;
70
- assets.push((0, tokenPriceToAssetToken_1.default)(vault.quoteMint, new bignumber_js_1.default(escrow.totalDeposit)
71
- .div(Math.pow(10, tpQuote.decimals))
72
- .toNumber(), portfolio_core_1.NetworkId.solana, tpQuote, undefined, {}));
66
+ element.addAsset({
67
+ address: vault.quoteMint,
68
+ amount: escrow.totalDeposit,
69
+ });
73
70
  }
74
71
  else {
75
72
  // Vesting started
@@ -78,20 +75,13 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
78
75
  .div(vault.maxCap)
79
76
  .toNumber();
80
77
  if (escrow.refunded === 0 && filledRatio > 1) {
81
- const tpQuote = tokenPrices.get(vault.quoteMint);
82
- if (!tpQuote)
83
- return;
84
- const amount = new bignumber_js_1.default(escrow.totalDeposit)
85
- .div(Math.pow(10, tpQuote.decimals))
86
- .times(1 - 1 / filledRatio);
78
+ const amount = new bignumber_js_1.default(escrow.totalDeposit).times(1 - 1 / filledRatio);
87
79
  if (amount.isGreaterThan(dustFilter))
88
- assets.push((0, tokenPriceToAssetToken_1.default)(vault.quoteMint, amount.toNumber(), portfolio_core_1.NetworkId.solana, tpQuote, undefined, {
89
- isClaimable: true,
90
- }));
80
+ element.addAsset({
81
+ address: vault.quoteMint,
82
+ amount,
83
+ });
91
84
  }
92
- const tpBase = tokenPrices.get(vault.baseMint);
93
- if (!tpBase)
94
- return;
95
85
  const shares = new bignumber_js_1.default(escrow.totalDeposit).div(vault.totalDeposit);
96
86
  const totalAmount = new bignumber_js_1.default(vault.boughtToken).times(shares);
97
87
  const remainingAmount = totalAmount.minus(escrow.claimedToken);
@@ -107,37 +97,25 @@ const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* (
107
97
  lastClaimedTs = time;
108
98
  claimableAmount = amountPerSec.times(Math.min(time, Number(vault.endVestingTs)) - lastClaimedTs);
109
99
  }
110
- claimableAmount = claimableAmount.div(Math.pow(10, tpBase.decimals));
111
100
  if (claimableAmount.isGreaterThan(dustFilter)) {
112
- assets.push((0, tokenPriceToAssetToken_1.default)(vault.baseMint, claimableAmount.toNumber(), portfolio_core_1.NetworkId.solana, tpBase, undefined, {
113
- isClaimable: true,
114
- }));
101
+ element.addAsset({
102
+ address: vault.baseMint,
103
+ amount: claimableAmount,
104
+ attributes: {
105
+ isClaimable: true,
106
+ },
107
+ });
115
108
  }
116
- const vestingAmount = remainingAmount
117
- .minus(claimableAmount)
118
- .div(Math.pow(10, tpBase.decimals));
109
+ const vestingAmount = remainingAmount.minus(claimableAmount);
119
110
  if (vestingAmount.isGreaterThan(dustFilter)) {
120
- assets.push((0, tokenPriceToAssetToken_1.default)(vault.baseMint, vestingAmount.toNumber(), portfolio_core_1.NetworkId.solana, tpBase, undefined, {
121
- tags: ['Vesting'],
122
- }));
111
+ element.addAsset({
112
+ address: vault.baseMint,
113
+ amount: vestingAmount,
114
+ });
123
115
  }
124
116
  }
125
117
  });
126
- if (assets.length === 0)
127
- return [];
128
- return [
129
- {
130
- networkId: portfolio_core_1.NetworkId.solana,
131
- type: portfolio_core_1.PortfolioElementType.multiple,
132
- label: 'Vesting',
133
- platformId: constants_1.platformId,
134
- name: 'Alpha Vault',
135
- data: {
136
- assets,
137
- },
138
- value: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
139
- },
140
- ];
118
+ return elementRegistry.getElements(cache);
141
119
  });
142
120
  const fetcher = {
143
121
  id: `${constants_1.platformId}-dlmm-vaults`,
@@ -1 +1 @@
1
- {"version":3,"file":"dlmmVaultsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/meteora/dlmmVaultsFetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dlmmVaultsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/meteora/dlmmVaultsFetcher.ts"],"names":[],"mappings":"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"}