@sonarwatch/portfolio-plugins 0.8.49 → 0.8.51

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 (50) hide show
  1. package/CHANGELOG.md +18 -10
  2. package/package.json +2 -2
  3. package/src/index.js +3 -0
  4. package/src/index.js.map +1 -1
  5. package/src/plugins/balancer/getV2Fetcher.js +2 -2
  6. package/src/plugins/balancer/getV2Fetcher.js.map +1 -1
  7. package/src/plugins/balancer/helpers/pools.js +21 -21
  8. package/src/plugins/paraswap/abis.d.ts +42 -0
  9. package/src/plugins/paraswap/abis.js +44 -1
  10. package/src/plugins/paraswap/abis.js.map +1 -1
  11. package/src/plugins/paraswap/index.js +2 -7
  12. package/src/plugins/paraswap/index.js.map +1 -1
  13. package/src/plugins/paraswap/poolsFetcher.js +230 -0
  14. package/src/plugins/paraswap/poolsFetcher.js.map +1 -0
  15. package/src/plugins/paraswap/stakingFetcher.js +46 -37
  16. package/src/plugins/paraswap/stakingFetcher.js.map +1 -1
  17. package/src/plugins/paraswap/types.d.ts +6 -0
  18. package/src/plugins/paraswap/types.js +8 -0
  19. package/src/plugins/paraswap/types.js.map +1 -1
  20. package/src/plugins/solend/reservesJob.js +33 -3
  21. package/src/plugins/solend/reservesJob.js.map +1 -1
  22. package/src/plugins/stargate/gePoolPositionsFetcher.js +1 -2
  23. package/src/plugins/stargate/gePoolPositionsFetcher.js.map +1 -1
  24. package/src/plugins/stargate/getFarmPositionsFetcher.js +2 -3
  25. package/src/plugins/stargate/getFarmPositionsFetcher.js.map +1 -1
  26. package/src/plugins/tokens/fetchers/evms/index.js +1 -0
  27. package/src/plugins/tokens/fetchers/evms/index.js.map +1 -1
  28. package/src/plugins/uniswap/getPositionsV3Fetcher.js +2 -0
  29. package/src/plugins/uniswap/getPositionsV3Fetcher.js.map +1 -1
  30. package/src/plugins/uniswap-v2/constants.d.ts +2 -0
  31. package/src/plugins/uniswap-v2/constants.js +6 -0
  32. package/src/plugins/uniswap-v2/constants.js.map +1 -0
  33. package/src/plugins/uniswap-v2/helpers.d.ts +2 -0
  34. package/src/plugins/uniswap-v2/helpers.js +69 -0
  35. package/src/plugins/uniswap-v2/helpers.js.map +1 -0
  36. package/src/plugins/uniswap-v2/index.d.ts +4 -0
  37. package/src/plugins/uniswap-v2/index.js +10 -0
  38. package/src/plugins/uniswap-v2/index.js.map +1 -0
  39. package/src/plugins/uniswap-v2/types.d.ts +18 -0
  40. package/src/plugins/uniswap-v2/types.js +3 -0
  41. package/src/plugins/uniswap-v2/types.js.map +1 -0
  42. package/src/plugins/uniswap-v2/v2Job.d.ts +3 -0
  43. package/src/plugins/uniswap-v2/v2Job.js +85 -0
  44. package/src/plugins/uniswap-v2/v2Job.js.map +1 -0
  45. package/src/plugins/paraswap/bptFarmingFetcher.js +0 -106
  46. package/src/plugins/paraswap/bptFarmingFetcher.js.map +0 -1
  47. package/src/plugins/paraswap/bptStakingFetcher.d.ts +0 -3
  48. package/src/plugins/paraswap/bptStakingFetcher.js +0 -140
  49. package/src/plugins/paraswap/bptStakingFetcher.js.map +0 -1
  50. /package/src/plugins/paraswap/{bptFarmingFetcher.d.ts → poolsFetcher.d.ts} +0 -0
@@ -0,0 +1,85 @@
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 portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
+ const helpers_1 = require("./helpers");
18
+ const constants_1 = require("../uniswap/constants");
19
+ const constants_2 = require("./constants");
20
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
21
+ const pairs = yield (0, helpers_1.getPairsV2)(constants_2.theGraphUrl);
22
+ const tokenAddresses = [
23
+ ...new Set(pairs.map((p) => [p.token0.id, p.token1.id]).flat()),
24
+ ];
25
+ const tokenPrices = yield cache.getTokenPrices(tokenAddresses, portfolio_core_1.NetworkId.ethereum);
26
+ const tokenPricesByAddress = new Map();
27
+ tokenPrices.forEach((tp) => {
28
+ if (!tp)
29
+ return;
30
+ tokenPricesByAddress.set(tp.address, tp);
31
+ });
32
+ const pairAddresses = [];
33
+ for (let i = 0; i < pairs.length; i++) {
34
+ const pair = pairs[i];
35
+ const underlyingsTokens = [
36
+ [pair.token0.id, pair.reserve0],
37
+ [pair.token1.id, pair.reserve1],
38
+ ];
39
+ const underlyings = [];
40
+ let tvl = new bignumber_js_1.default(0);
41
+ for (let j = 0; j < underlyingsTokens.length; j++) {
42
+ const [address, amount] = underlyingsTokens[j];
43
+ const fAddress = (0, portfolio_core_1.formatTokenAddress)(address, portfolio_core_1.NetworkId.ethereum);
44
+ const tokenPrice = tokenPricesByAddress.get(fAddress);
45
+ if (!tokenPrice)
46
+ break;
47
+ tvl = tvl.plus(new bignumber_js_1.default(amount).times(tokenPrice.price));
48
+ underlyings.push({
49
+ networkId: portfolio_core_1.NetworkId.ethereum,
50
+ address: fAddress,
51
+ decimals: tokenPrice.decimals,
52
+ price: tokenPrice.price,
53
+ amountPerLp: new bignumber_js_1.default(amount).div(pair.totalSupply).toNumber(),
54
+ });
55
+ }
56
+ if (underlyings.length !== underlyingsTokens.length)
57
+ continue;
58
+ const price = tvl.div(pair.totalSupply).toNumber();
59
+ const lpAddress = (0, portfolio_core_1.formatTokenAddress)(pair.id, portfolio_core_1.NetworkId.ethereum);
60
+ const source = {
61
+ id: constants_1.platformId,
62
+ address: lpAddress,
63
+ decimals: 18,
64
+ networkId: portfolio_core_1.NetworkId.ethereum,
65
+ platformId: constants_1.platformId,
66
+ price,
67
+ timestamp: Date.now(),
68
+ weight: 1,
69
+ elementName: 'Uniswap V2',
70
+ underlyings,
71
+ };
72
+ yield cache.setTokenPriceSource(source);
73
+ pairAddresses.push(lpAddress);
74
+ }
75
+ yield cache.setItem(constants_2.pairsV2Key, pairAddresses, {
76
+ prefix: constants_1.platformId,
77
+ networkId: portfolio_core_1.NetworkId.ethereum,
78
+ });
79
+ });
80
+ const job = {
81
+ id: `${constants_1.platformId}-v2`,
82
+ executor,
83
+ };
84
+ exports.default = job;
85
+ //# sourceMappingURL=v2Job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2Job.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/uniswap-v2/v2Job.ts"],"names":[],"mappings":"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"}
@@ -1,106 +0,0 @@
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 portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
- const constants_1 = require("./constants");
18
- const clients_1 = require("../../utils/clients");
19
- const erc20Abi_1 = require("../../utils/evm/erc20Abi");
20
- const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
21
- const abis_1 = require("./abis");
22
- const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
23
- const client = (0, clients_1.getEvmClient)(portfolio_core_1.NetworkId.ethereum);
24
- const balanceOfContract = {
25
- address: constants_1.bptParaFarmer.address,
26
- abi: erc20Abi_1.balanceOfErc20ABI,
27
- functionName: erc20Abi_1.balanceOfErc20ABI[0].name,
28
- args: [owner],
29
- };
30
- const balance = yield client.readContract(balanceOfContract);
31
- if (balance === BigInt(0))
32
- return [];
33
- const totalRewardsContract = {
34
- address: constants_1.bptParaFarmer.address,
35
- abi: abis_1.getTotalRewardsAbi,
36
- functionName: abis_1.getTotalRewardsAbi[0].name,
37
- args: [owner],
38
- };
39
- const pendingReward = yield client.readContract(totalRewardsContract);
40
- const { underlyings } = constants_1.poolAddresses;
41
- const tokensPrices = yield cache.getTokenPrices(underlyings, portfolio_core_1.NetworkId.ethereum);
42
- const tokenPriceById = new Map();
43
- for (const tokenPrice of tokensPrices) {
44
- if (!tokenPrice)
45
- continue;
46
- tokenPriceById.set(tokenPrice.address, tokenPrice);
47
- }
48
- const bptInfo = yield cache.getItem(constants_1.bptInfoKey, {
49
- prefix: constants_1.platformId,
50
- networkId: portfolio_core_1.NetworkId.ethereum,
51
- });
52
- if (!bptInfo)
53
- return [];
54
- const { balances } = bptInfo;
55
- const { totalSupply } = bptInfo;
56
- const liquidities = [];
57
- const assets = [];
58
- const rewardAssets = [];
59
- for (let i = 0; i < underlyings.length; i++) {
60
- const underlying = underlyings[i];
61
- const tokenPrice = tokenPriceById.get(underlying);
62
- if (!tokenPrice)
63
- continue;
64
- const underlyingsAmount = new bignumber_js_1.default(balances[i].toString())
65
- .multipliedBy(new bignumber_js_1.default(balance.toString()))
66
- .dividedBy(totalSupply)
67
- .dividedBy(Math.pow(10, tokenPrice.decimals))
68
- .toNumber();
69
- assets.push((0, tokenPriceToAssetToken_1.default)(underlying, underlyingsAmount, portfolio_core_1.NetworkId.ethereum, tokenPrice));
70
- }
71
- if (assets.length === 0)
72
- return [];
73
- const pspTokenPrice = tokenPriceById.get(constants_1.PSPToken.address);
74
- if (pspTokenPrice && pendingReward > BigInt(0)) {
75
- rewardAssets.push((0, tokenPriceToAssetToken_1.default)(constants_1.PSPToken.address, new bignumber_js_1.default(pendingReward.toString())
76
- .dividedBy(Math.pow(10, pspTokenPrice.decimals))
77
- .toNumber(), portfolio_core_1.NetworkId.ethereum, pspTokenPrice));
78
- }
79
- const assetsValue = (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value));
80
- const rewardsValue = (0, portfolio_core_1.getUsdValueSum)(rewardAssets.map((a) => a.value));
81
- liquidities.push({
82
- assets,
83
- assetsValue: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
84
- rewardAssets,
85
- rewardAssetsValue: (0, portfolio_core_1.getUsdValueSum)(rewardAssets.map((a) => a.value)),
86
- value: (0, portfolio_core_1.getUsdValueSum)([assetsValue, rewardsValue]),
87
- yields: [],
88
- });
89
- return [
90
- {
91
- type: portfolio_core_1.PortfolioElementType.liquidity,
92
- networkId: portfolio_core_1.NetworkId.ethereum,
93
- platformId: constants_1.platformId,
94
- label: 'Staked',
95
- value: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
96
- data: { liquidities },
97
- },
98
- ];
99
- });
100
- const fetcher = {
101
- id: `${constants_1.platformId}-bptFarming-fetcher`,
102
- networkId: portfolio_core_1.NetworkId.ethereum,
103
- executor,
104
- };
105
- exports.default = fetcher;
106
- //# sourceMappingURL=bptFarmingFetcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bptFarmingFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/paraswap/bptFarmingFetcher.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Fetcher } from '../../Fetcher';
2
- declare const fetcher: Fetcher;
3
- export default fetcher;
@@ -1,140 +0,0 @@
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 portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
- const constants_1 = require("./constants");
18
- const clients_1 = require("../../utils/clients");
19
- const erc20Abi_1 = require("../../utils/evm/erc20Abi");
20
- const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
21
- const abis_1 = require("./abis");
22
- const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
23
- const client = (0, clients_1.getEvmClient)(portfolio_core_1.NetworkId.ethereum);
24
- const pendingWithdrawalsContract = {
25
- address: constants_1.bptParaStaker.address,
26
- abi: abis_1.pendingWithdrawalsAbi,
27
- functionName: 'userVsWithdrawals',
28
- args: [owner, BigInt(0)],
29
- // Here we might miss pending withdrawal if user has more than 1
30
- // We will need to find a way to know how many pending withdrawals exist for a user
31
- };
32
- const pendingWithdrawalsRes = yield client.readContract(pendingWithdrawalsContract);
33
- const unlockingBalance = pendingWithdrawalsRes[0];
34
- const balanceOfContract = {
35
- address: constants_1.bptParaStaker.address,
36
- abi: erc20Abi_1.balanceOfErc20ABI,
37
- functionName: erc20Abi_1.balanceOfErc20ABI[0].name,
38
- args: [owner],
39
- };
40
- const lockedBalance = yield client.readContract(balanceOfContract);
41
- if (lockedBalance === BigInt(0) && unlockingBalance === BigInt(0))
42
- return [];
43
- const { underlyings } = constants_1.poolAddresses;
44
- const poolInfo = yield cache.getItem(constants_1.bptInfoKey, {
45
- prefix: constants_1.platformId,
46
- networkId: portfolio_core_1.NetworkId.ethereum,
47
- });
48
- if (!poolInfo)
49
- return [];
50
- const { balances } = poolInfo;
51
- const { totalSupply } = poolInfo;
52
- const tokensPrices = yield cache.getTokenPrices(underlyings, portfolio_core_1.NetworkId.ethereum);
53
- const tokenPriceById = new Map();
54
- for (const tokenPrice of tokensPrices) {
55
- if (!tokenPrice)
56
- continue;
57
- tokenPriceById.set(tokenPrice.address, tokenPrice);
58
- }
59
- const lockedAssets = [];
60
- const unlockingAssets = [];
61
- for (let i = 0; i < underlyings.length; i++) {
62
- const underlying = underlyings[i];
63
- const tokenPrice = tokenPriceById.get(underlying);
64
- if (!tokenPrice)
65
- continue;
66
- const underlyingAmountRaw = new bignumber_js_1.default(balances[i].toString()).dividedBy(totalSupply);
67
- if (lockedBalance !== BigInt(0)) {
68
- const underlyingsAmountLocked = underlyingAmountRaw
69
- .multipliedBy(new bignumber_js_1.default(lockedBalance.toString()))
70
- .dividedBy(Math.pow(10, tokenPrice.decimals))
71
- .toNumber();
72
- lockedAssets.push((0, tokenPriceToAssetToken_1.default)(underlying, underlyingsAmountLocked, portfolio_core_1.NetworkId.ethereum, tokenPrice));
73
- }
74
- if (unlockingBalance !== BigInt(0)) {
75
- const underlyingsAmountUnlocking = underlyingAmountRaw
76
- .multipliedBy(new bignumber_js_1.default(unlockingBalance.toString()))
77
- .dividedBy(Math.pow(10, tokenPrice.decimals))
78
- .toNumber();
79
- unlockingAssets.push((0, tokenPriceToAssetToken_1.default)(underlying, underlyingsAmountUnlocking, portfolio_core_1.NetworkId.ethereum, tokenPrice));
80
- }
81
- }
82
- if (lockedAssets.length === 0 && unlockingAssets.length === 0)
83
- return [];
84
- const elements = [];
85
- if (lockedAssets.length !== 0) {
86
- const assetsValue = (0, portfolio_core_1.getUsdValueSum)(lockedAssets.map((a) => a.value));
87
- elements.push({
88
- type: portfolio_core_1.PortfolioElementType.liquidity,
89
- networkId: portfolio_core_1.NetworkId.ethereum,
90
- platformId: constants_1.platformId,
91
- label: 'Staked',
92
- value: assetsValue,
93
- data: {
94
- liquidities: [
95
- {
96
- assets: lockedAssets,
97
- assetsValue,
98
- rewardAssets: [],
99
- rewardAssetsValue: null,
100
- value: assetsValue,
101
- yields: [],
102
- },
103
- ],
104
- },
105
- });
106
- }
107
- const unlockEpoch = Number(pendingWithdrawalsRes[1]);
108
- const dateToDisplay = new Date(unlockEpoch * 1000).toLocaleDateString();
109
- if (unlockingAssets.length !== 0) {
110
- const assetsValue = (0, portfolio_core_1.getUsdValueSum)(unlockingAssets.map((a) => a.value));
111
- elements.push({
112
- type: portfolio_core_1.PortfolioElementType.liquidity,
113
- networkId: portfolio_core_1.NetworkId.ethereum,
114
- platformId: constants_1.platformId,
115
- label: 'Staked',
116
- name: `Unlocking on ${dateToDisplay}`,
117
- value: assetsValue,
118
- data: {
119
- liquidities: [
120
- {
121
- assets: unlockingAssets,
122
- assetsValue,
123
- rewardAssets: [],
124
- rewardAssetsValue: null,
125
- value: assetsValue,
126
- yields: [],
127
- },
128
- ],
129
- },
130
- });
131
- }
132
- return elements;
133
- });
134
- const fetcher = {
135
- id: `${constants_1.platformId}-bptStaking-fetcher`,
136
- networkId: portfolio_core_1.NetworkId.ethereum,
137
- executor,
138
- };
139
- exports.default = fetcher;
140
- //# sourceMappingURL=bptStakingFetcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bptStakingFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/paraswap/bptStakingFetcher.ts"],"names":[],"mappings":"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"}