@sonarwatch/portfolio-plugins 0.5.22 → 0.5.24

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 (80) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/package.json +2 -2
  3. package/src/index.js +8 -0
  4. package/src/index.js.map +1 -1
  5. package/src/platforms.d.ts +8 -0
  6. package/src/platforms.js +41 -1
  7. package/src/platforms.js.map +1 -1
  8. package/src/plugins/auxexchange/aptosLpJob.d.ts +3 -0
  9. package/src/plugins/auxexchange/aptosLpJob.js +75 -0
  10. package/src/plugins/auxexchange/aptosLpJob.js.map +1 -0
  11. package/src/plugins/auxexchange/constants.d.ts +4 -0
  12. package/src/plugins/auxexchange/constants.js +9 -0
  13. package/src/plugins/auxexchange/constants.js.map +1 -0
  14. package/src/plugins/auxexchange/index.d.ts +4 -0
  15. package/src/plugins/auxexchange/index.js +10 -0
  16. package/src/plugins/auxexchange/index.js.map +1 -0
  17. package/src/plugins/drift/struct.d.ts +1 -1
  18. package/src/plugins/liquidswap/aptosLpJob.d.ts +3 -0
  19. package/src/plugins/liquidswap/aptosLpJob.js +89 -0
  20. package/src/plugins/liquidswap/aptosLpJob.js.map +1 -0
  21. package/src/plugins/liquidswap/constants.d.ts +5 -0
  22. package/src/plugins/liquidswap/constants.js +10 -0
  23. package/src/plugins/liquidswap/constants.js.map +1 -0
  24. package/src/plugins/liquidswap/index.d.ts +4 -0
  25. package/src/plugins/liquidswap/index.js +10 -0
  26. package/src/plugins/liquidswap/index.js.map +1 -0
  27. package/src/plugins/liquidswap/types.d.ts +10 -0
  28. package/src/plugins/liquidswap/types.js +3 -0
  29. package/src/plugins/liquidswap/types.js.map +1 -0
  30. package/src/plugins/native-stake/aptosFetcher.js +2 -1
  31. package/src/plugins/native-stake/aptosFetcher.js.map +1 -1
  32. package/src/plugins/native-stake/solanaFetcher.js +2 -1
  33. package/src/plugins/native-stake/solanaFetcher.js.map +1 -1
  34. package/src/plugins/native-stake/structs.d.ts +1 -1
  35. package/src/plugins/native-stake/suiFetcher.js +2 -1
  36. package/src/plugins/native-stake/suiFetcher.js.map +1 -1
  37. package/src/plugins/pancakeswap/aptosLpJob.d.ts +3 -0
  38. package/src/plugins/pancakeswap/aptosLpJob.js +85 -0
  39. package/src/plugins/pancakeswap/aptosLpJob.js.map +1 -0
  40. package/src/plugins/pancakeswap/constants.d.ts +4 -0
  41. package/src/plugins/pancakeswap/constants.js +9 -0
  42. package/src/plugins/pancakeswap/constants.js.map +1 -0
  43. package/src/plugins/pancakeswap/index.d.ts +4 -0
  44. package/src/plugins/pancakeswap/index.js +10 -0
  45. package/src/plugins/pancakeswap/index.js.map +1 -0
  46. package/src/plugins/pancakeswap/types.d.ts +8 -0
  47. package/src/plugins/pancakeswap/types.js +3 -0
  48. package/src/plugins/pancakeswap/types.js.map +1 -0
  49. package/src/plugins/staking-aptos/constants.d.ts +4 -0
  50. package/src/plugins/staking-aptos/constants.js +32 -0
  51. package/src/plugins/staking-aptos/constants.js.map +1 -0
  52. package/src/plugins/staking-aptos/fetcherFetcher.d.ts +3 -0
  53. package/src/plugins/staking-aptos/fetcherFetcher.js +83 -0
  54. package/src/plugins/staking-aptos/fetcherFetcher.js.map +1 -0
  55. package/src/plugins/staking-aptos/index.d.ts +4 -0
  56. package/src/plugins/staking-aptos/index.js +10 -0
  57. package/src/plugins/staking-aptos/index.js.map +1 -0
  58. package/src/plugins/staking-aptos/types.d.ts +20 -0
  59. package/src/plugins/staking-aptos/types.js +3 -0
  60. package/src/plugins/staking-aptos/types.js.map +1 -0
  61. package/src/plugins/thala/constants.d.ts +1 -1
  62. package/src/plugins/thala/constants.js +1 -2
  63. package/src/plugins/thala/constants.js.map +1 -1
  64. package/src/plugins/tokens/fetchers/solana-nfts.d.ts +3 -0
  65. package/src/plugins/tokens/fetchers/solana-nfts.js +77 -0
  66. package/src/plugins/tokens/fetchers/solana-nfts.js.map +1 -0
  67. package/src/plugins/tokens/index.js +2 -0
  68. package/src/plugins/tokens/index.js.map +1 -1
  69. package/src/utils/aptos/constants.d.ts +1 -0
  70. package/src/utils/aptos/constants.js +2 -1
  71. package/src/utils/aptos/constants.js.map +1 -1
  72. package/src/utils/misc/getDecimalsForToken.d.ts +10 -0
  73. package/src/utils/misc/getDecimalsForToken.js +43 -0
  74. package/src/utils/misc/getDecimalsForToken.js.map +1 -0
  75. package/src/utils/misc/getSourceWeight.d.ts +9 -0
  76. package/src/utils/misc/getSourceWeight.js +24 -0
  77. package/src/utils/misc/getSourceWeight.js.map +1 -0
  78. package/src/utils/misc/setLpPriceSource.d.ts +25 -0
  79. package/src/utils/misc/setLpPriceSource.js +126 -0
  80. package/src/utils/misc/setLpPriceSource.js.map +1 -0
@@ -0,0 +1,25 @@
1
+ import { NetworkIdType } from '@sonarwatch/portfolio-core';
2
+ import BigNumber from 'bignumber.js';
3
+ import { Cache } from '../../Cache';
4
+ export type PoolData = {
5
+ id: string;
6
+ supply: BigNumber;
7
+ lpDecimals: number;
8
+ reserveTokenX: BigNumber;
9
+ reserveTokenY: BigNumber;
10
+ mintTokenX: string;
11
+ mintTokenY: string;
12
+ };
13
+ /**
14
+ * Add a price source for a pool in the cache.
15
+ * If one of the token composing the pool doesn't have a price in the cache, add a new token price source for it.
16
+ *
17
+ * @param cache The cache on which the LP price will be stored
18
+ * @param tokenMintX The address/mint of the first token
19
+ * @param tokenMintY The address/mint of the second token
20
+ * @param poolData An object with informmations about the pool
21
+ * @param networkId The network for which the LP price source is stored
22
+ * @param platformId The platform from which the price is calculated
23
+ *
24
+ */
25
+ export default function setLpPriceSource(cache: Cache, poolData: PoolData, networkId: NetworkIdType, platformId: string): Promise<void>;
@@ -0,0 +1,126 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
16
+ const platforms_1 = require("../../platforms");
17
+ const getSourceWeight_1 = __importDefault(require("./getSourceWeight"));
18
+ const getDecimalsForToken_1 = require("./getDecimalsForToken");
19
+ const minimumLiquidity = new bignumber_js_1.default(5000);
20
+ /**
21
+ * Add a price source for a pool in the cache.
22
+ * If one of the token composing the pool doesn't have a price in the cache, add a new token price source for it.
23
+ *
24
+ * @param cache The cache on which the LP price will be stored
25
+ * @param tokenMintX The address/mint of the first token
26
+ * @param tokenMintY The address/mint of the second token
27
+ * @param poolData An object with informmations about the pool
28
+ * @param networkId The network for which the LP price source is stored
29
+ * @param platformId The platform from which the price is calculated
30
+ *
31
+ */
32
+ function setLpPriceSource(cache, poolData, networkId, platformId) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const tokenX = poolData.mintTokenX;
35
+ const tokenY = poolData.mintTokenY;
36
+ const tokenPrices = yield cache.getTokenPrices([tokenX, tokenY], networkId);
37
+ const tokenPriceX = tokenPrices[0];
38
+ const tokenPriceY = tokenPrices[1];
39
+ const decimalsTokenX = tokenPriceX
40
+ ? tokenPriceX.decimals
41
+ : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenX, networkId);
42
+ const decimalsY = tokenPriceY
43
+ ? tokenPriceY.decimals
44
+ : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenY, networkId);
45
+ if (!decimalsTokenX || !decimalsY)
46
+ return;
47
+ const reserveAmountX = poolData.reserveTokenX.div(Math.pow(10, decimalsTokenX));
48
+ const reserveAmountY = poolData.reserveTokenY.div(Math.pow(10, decimalsY));
49
+ let priceTokenX;
50
+ let priceTokenY;
51
+ if (!tokenPriceX && tokenPriceY) {
52
+ priceTokenY = tokenPriceY.price;
53
+ priceTokenX = reserveAmountY
54
+ .multipliedBy(priceTokenY)
55
+ .dividedBy(reserveAmountX)
56
+ .toNumber();
57
+ }
58
+ else if (!tokenPriceY && tokenPriceX) {
59
+ priceTokenX = tokenPriceX.price;
60
+ priceTokenY = reserveAmountX
61
+ .multipliedBy(priceTokenX)
62
+ .dividedBy(reserveAmountY)
63
+ .toNumber();
64
+ }
65
+ else {
66
+ return;
67
+ }
68
+ const totalLiquidity = reserveAmountX
69
+ .multipliedBy(priceTokenX)
70
+ .plus(reserveAmountY.multipliedBy(priceTokenY));
71
+ if (totalLiquidity.isLessThan(minimumLiquidity))
72
+ return;
73
+ if (!tokenPriceX || !tokenPriceY) {
74
+ const weight = (0, getSourceWeight_1.default)(reserveAmountX.multipliedBy(priceTokenX).multipliedBy(2));
75
+ const address = tokenPriceX ? tokenX : tokenY;
76
+ const decimals = tokenPriceX ? decimalsTokenX : decimalsY;
77
+ const price = tokenPriceX ? priceTokenX : priceTokenY;
78
+ yield cache.setTokenPriceSource({
79
+ id: `${platformId}-${poolData.id}`,
80
+ weight,
81
+ address,
82
+ networkId,
83
+ platformId: platforms_1.walletTokensPlatform.id,
84
+ decimals,
85
+ price,
86
+ timestamp: Date.now(),
87
+ });
88
+ }
89
+ const reserveValueX = reserveAmountX.multipliedBy(priceTokenX);
90
+ const reserveValueY = reserveAmountY.multipliedBy(priceTokenY);
91
+ const lpPrice = reserveValueX
92
+ .plus(reserveValueY)
93
+ .dividedBy(poolData.supply)
94
+ .toNumber();
95
+ const amountPerLpX = reserveAmountX.dividedBy(poolData.supply).toNumber();
96
+ const amountPerLpY = reserveAmountY.dividedBy(poolData.supply).toNumber();
97
+ yield cache.setTokenPriceSource({
98
+ id: platformId,
99
+ weight: 1,
100
+ address: poolData.id,
101
+ networkId,
102
+ platformId,
103
+ decimals: poolData.lpDecimals,
104
+ price: lpPrice,
105
+ underlyings: [
106
+ {
107
+ networkId,
108
+ address: tokenX,
109
+ decimals: decimalsTokenX,
110
+ price: priceTokenX,
111
+ amountPerLp: amountPerLpX,
112
+ },
113
+ {
114
+ networkId,
115
+ address: tokenY,
116
+ decimals: decimalsY,
117
+ price: priceTokenY,
118
+ amountPerLp: amountPerLpY,
119
+ },
120
+ ],
121
+ timestamp: Date.now(),
122
+ });
123
+ });
124
+ }
125
+ exports.default = setLpPriceSource;
126
+ //# sourceMappingURL=setLpPriceSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setLpPriceSource.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/setLpPriceSource.ts"],"names":[],"mappings":"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"}