@sonarwatch/portfolio-plugins 0.15.28 → 0.15.30
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 +2746 -2715
- package/README.md +3 -3
- package/package.json +3 -3
- package/src/Job.d.ts +1 -1
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/plugins/abex/getVaultInfo.d.ts +1 -2
- package/src/plugins/abex/getVaultInfo.js +14 -17
- package/src/plugins/abex/getVaultInfo.js.map +1 -1
- package/src/plugins/abex/helpers.js +1 -1
- package/src/plugins/abex/helpers.js.map +1 -1
- package/src/plugins/allbridge/helpers.js +6 -5
- package/src/plugins/allbridge/helpers.js.map +1 -1
- package/src/plugins/balancer/helpers/pools.js +21 -21
- package/src/plugins/bonfida/snsAirdropFetcher.js +10 -2
- package/src/plugins/bonfida/snsAirdropFetcher.js.map +1 -1
- package/src/plugins/bonkrewards/constants.d.ts +2 -0
- package/src/plugins/bonkrewards/constants.js +3 -1
- package/src/plugins/bonkrewards/constants.js.map +1 -1
- package/src/plugins/{tokens/fetchers/solana-nfts-underlyings.d.ts → bonkrewards/daoFetcher.d.ts} +1 -1
- package/src/plugins/bonkrewards/daoFetcher.js +57 -0
- package/src/plugins/bonkrewards/daoFetcher.js.map +1 -0
- package/src/plugins/bonkrewards/daoJob.d.ts +3 -0
- package/src/plugins/bonkrewards/daoJob.js +33 -0
- package/src/plugins/bonkrewards/daoJob.js.map +1 -0
- package/src/plugins/bonkrewards/index.js +4 -2
- package/src/plugins/bonkrewards/index.js.map +1 -1
- package/src/plugins/bonkrewards/structs.d.ts +27 -1
- package/src/plugins/bonkrewards/structs.js +25 -2
- package/src/plugins/bonkrewards/structs.js.map +1 -1
- package/src/plugins/cetus/index.js +6 -2
- package/src/plugins/cetus/index.js.map +1 -1
- package/src/plugins/cropper/whirlpoolFetcher.d.ts +3 -0
- package/src/plugins/cropper/whirlpoolFetcher.js +26 -0
- package/src/plugins/cropper/whirlpoolFetcher.js.map +1 -0
- package/src/plugins/cudis/airdropFetcher.d.ts +3 -0
- package/src/plugins/cudis/airdropFetcher.js +74 -0
- package/src/plugins/cudis/airdropFetcher.js.map +1 -0
- package/src/plugins/cudis/constants.d.ts +9 -0
- package/src/plugins/cudis/constants.js +18 -0
- package/src/plugins/cudis/constants.js.map +1 -0
- package/src/plugins/cudis/index.d.ts +5 -0
- package/src/plugins/cudis/index.js +15 -0
- package/src/plugins/cudis/index.js.map +1 -0
- package/src/plugins/cudis/stakingFetcher.d.ts +3 -0
- package/src/plugins/cudis/stakingFetcher.js +62 -0
- package/src/plugins/cudis/stakingFetcher.js.map +1 -0
- package/src/plugins/cudis/structs.d.ts +19 -0
- package/src/plugins/cudis/structs.js +20 -0
- package/src/plugins/cudis/structs.js.map +1 -0
- package/src/plugins/cudis/types.d.ts +8 -0
- package/src/plugins/cudis/types.js +3 -0
- package/src/plugins/cudis/types.js.map +1 -0
- package/src/plugins/daos/helpers.d.ts +0 -5
- package/src/plugins/daos/helpers.js +1 -51
- package/src/plugins/daos/helpers.js.map +1 -1
- package/src/plugins/daos/realmsProgramsJob.js.map +1 -1
- package/src/plugins/drift/helpers.js +47 -15
- package/src/plugins/drift/helpers.js.map +1 -1
- package/src/plugins/drift/struct.d.ts +9 -0
- package/src/plugins/drift/struct.js +10 -1
- package/src/plugins/drift/struct.js.map +1 -1
- package/src/plugins/drift-market-maker-vault/constants.d.ts +1 -0
- package/src/plugins/drift-market-maker-vault/constants.js +4 -1
- package/src/plugins/drift-market-maker-vault/constants.js.map +1 -1
- package/src/plugins/drift-market-maker-vault/vaultsJob.js +2 -2
- package/src/plugins/drift-market-maker-vault/vaultsJob.js.map +1 -1
- package/src/plugins/flash/helpers.js +8 -2
- package/src/plugins/flash/helpers.js.map +1 -1
- package/src/plugins/fluxbeam/poolsJob.js +25 -27
- package/src/plugins/fluxbeam/poolsJob.js.map +1 -1
- package/src/plugins/hawksight/positionsFetcher.js +3 -24
- package/src/plugins/hawksight/positionsFetcher.js.map +1 -1
- package/src/plugins/helium/getHeliumPositions.d.ts +3 -0
- package/src/plugins/helium/getHeliumPositions.js +53 -0
- package/src/plugins/helium/getHeliumPositions.js.map +1 -0
- package/src/plugins/helium/positionsFetcher.d.ts +3 -0
- package/src/{utils/misc/Memoized.js → plugins/helium/positionsFetcher.js} +15 -20
- package/src/plugins/helium/positionsFetcher.js.map +1 -0
- package/src/plugins/jupiter/launchpad/constants.js +7 -26
- package/src/plugins/jupiter/launchpad/constants.js.map +1 -1
- package/src/plugins/jupiter/launchpad/structs.d.ts +1 -1
- package/src/plugins/jupiter/launchpad/structs.js +1 -1
- package/src/plugins/jupiter/launchpad/structs.js.map +1 -1
- package/src/plugins/kamino/airdropHelpers.d.ts +2 -0
- package/src/plugins/kamino/airdropHelpers.js +38 -0
- package/src/plugins/kamino/airdropHelpers.js.map +1 -0
- package/src/plugins/kamino/constants.d.ts +2 -0
- package/src/plugins/kamino/constants.js +13 -4
- package/src/plugins/kamino/constants.js.map +1 -1
- package/src/plugins/kamino/index.js +8 -2
- package/src/plugins/kamino/index.js.map +1 -1
- package/src/plugins/kamino/s1AirdropFetcher.js +30 -5
- package/src/plugins/kamino/s1AirdropFetcher.js.map +1 -1
- package/src/plugins/kamino/{s2AirdropFetcher.old.js → s2AirdropFetcher.js} +31 -6
- package/src/plugins/kamino/s2AirdropFetcher.js.map +1 -0
- package/src/plugins/kamino/s3AirdropFetcher.d.ts +4 -0
- package/src/plugins/kamino/s3AirdropFetcher.js +68 -0
- package/src/plugins/kamino/s3AirdropFetcher.js.map +1 -0
- package/src/plugins/lulo/rewardsFetcher.js +5 -1
- package/src/plugins/lulo/rewardsFetcher.js.map +1 -1
- package/src/plugins/magna/constant.d.ts +4 -0
- package/src/plugins/magna/constant.js +6 -0
- package/src/plugins/magna/constant.js.map +1 -0
- package/src/plugins/magna/structs.d.ts +12 -0
- package/src/plugins/magna/structs.js +13 -0
- package/src/plugins/magna/structs.js.map +1 -0
- package/src/plugins/metaplex/index.js +1 -5
- package/src/plugins/metaplex/index.js.map +1 -1
- package/src/plugins/metaplex/resizableNftFetcher.d.ts +3 -0
- package/src/plugins/metaplex/resizableNftFetcher.js +9 -10
- package/src/plugins/metaplex/resizableNftFetcher.js.map +1 -1
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.d.ts +3 -0
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js +11 -11
- package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js.map +1 -1
- package/src/plugins/meteora/cpamm/cpammV2Job.js +58 -47
- package/src/plugins/meteora/cpamm/cpammV2Job.js.map +1 -1
- package/src/plugins/meteora/index.js +0 -2
- package/src/plugins/meteora/index.js.map +1 -1
- package/src/plugins/native-stake/index.js +2 -2
- package/src/plugins/native-stake/index.js.map +1 -1
- package/src/plugins/navi/index.js +4 -2
- package/src/plugins/navi/index.js.map +1 -1
- package/src/plugins/orca/getWhirlpoolPositions.d.ts +4 -3
- package/src/plugins/orca/getWhirlpoolPositions.js +9 -15
- package/src/plugins/orca/getWhirlpoolPositions.js.map +1 -1
- package/src/plugins/orca/helpers.d.ts +4 -0
- package/src/plugins/orca/helpers.js +6 -1
- package/src/plugins/orca/helpers.js.map +1 -1
- package/src/plugins/orca/whirlpoolFetcher.d.ts +3 -0
- package/src/plugins/orca/whirlpoolFetcher.js +26 -0
- package/src/plugins/orca/whirlpoolFetcher.js.map +1 -0
- package/src/plugins/parcl/helpersAirdrop.js +14 -5
- package/src/plugins/parcl/helpersAirdrop.js.map +1 -1
- package/src/plugins/picasso/getPicassoPositions.d.ts +3 -0
- package/src/plugins/picasso/getPicassoPositions.js +45 -0
- package/src/plugins/picasso/getPicassoPositions.js.map +1 -0
- package/src/plugins/picasso/helpers.d.ts +1 -3
- package/src/plugins/picasso/helpers.js +1 -60
- package/src/plugins/picasso/helpers.js.map +1 -1
- package/src/plugins/picasso/positionsFetcher.d.ts +3 -0
- package/src/plugins/picasso/positionsFetcher.js +26 -0
- package/src/plugins/picasso/positionsFetcher.js.map +1 -0
- package/src/plugins/pumpswap/marketsJob.js +8 -3
- package/src/plugins/pumpswap/marketsJob.js.map +1 -1
- package/src/plugins/raydium/clmmFetcher.d.ts +6 -0
- package/src/plugins/raydium/clmmFetcher.js +119 -0
- package/src/plugins/raydium/clmmFetcher.js.map +1 -0
- package/src/plugins/sushiswap/helpers.js +24 -24
- package/src/plugins/texture/helpers.js +4 -9
- package/src/plugins/texture/helpers.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana-native.js +11 -21
- package/src/plugins/tokens/fetchers/solana-native.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana-simple.js +4 -44
- package/src/plugins/tokens/fetchers/solana-simple.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana.d.ts +4 -0
- package/src/plugins/tokens/fetchers/solana.js +85 -104
- package/src/plugins/tokens/fetchers/solana.js.map +1 -1
- package/src/plugins/tokens/getTokenListsJob.js +1 -1
- package/src/plugins/tokens/getTokenListsJob.js.map +1 -1
- package/src/plugins/tokens/index.js +2 -4
- package/src/plugins/tokens/index.js.map +1 -1
- package/src/plugins/tokens/types.d.ts +3 -2
- package/src/plugins/uniswap-v2/helpers.js +22 -22
- package/src/plugins/wasabi/constants.d.ts +5 -0
- package/src/plugins/wasabi/constants.js +7 -0
- package/src/plugins/wasabi/constants.js.map +1 -0
- package/src/plugins/wasabi/index.d.ts +4 -0
- package/src/plugins/wasabi/index.js +13 -0
- package/src/plugins/wasabi/index.js.map +1 -0
- package/src/plugins/wasabi/lpVaultsJob.d.ts +3 -0
- package/src/plugins/wasabi/lpVaultsJob.js +60 -0
- package/src/plugins/wasabi/lpVaultsJob.js.map +1 -0
- package/src/plugins/wasabi/positionsFetcher.d.ts +3 -0
- package/src/plugins/wasabi/positionsFetcher.js +67 -0
- package/src/plugins/wasabi/positionsFetcher.js.map +1 -0
- package/src/plugins/wasabi/structs.d.ts +30 -0
- package/src/plugins/wasabi/structs.js +30 -0
- package/src/plugins/wasabi/structs.js.map +1 -0
- package/src/plugins/zeta/airdropFetcher.js +21 -15
- package/src/plugins/zeta/airdropFetcher.js.map +1 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.d.ts +2 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js +2 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js.map +1 -1
- package/src/utils/elementbuilder/Params.d.ts +2 -1
- package/src/utils/misc/MemoryCache.d.ts +6 -0
- package/src/utils/misc/MemoryCache.js +39 -0
- package/src/utils/misc/MemoryCache.js.map +1 -0
- package/src/utils/misc/getCachedDecimalsForToken.d.ts +1 -2
- package/src/utils/sei/constants.js +8 -8
- package/src/utils/sei/getQueryBalanceByOwner.js +4 -4
- package/src/utils/solana/getTokenAccountsByOwner.d.ts +4 -0
- package/src/utils/solana/getTokenAccountsByOwner.js +36 -0
- package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -0
- package/src/utils/solana/zeroDecimalMints.d.ts +1 -0
- package/src/utils/solana/zeroDecimalMints.js +219 -0
- package/src/utils/solana/zeroDecimalMints.js.map +1 -0
- package/src/plugins/kamino/s2AirdropFetcher.old.js.map +0 -1
- package/src/plugins/raydium/getRaydiumCLMMPositions.d.ts +0 -3
- package/src/plugins/raydium/getRaydiumCLMMPositions.js +0 -113
- package/src/plugins/raydium/getRaydiumCLMMPositions.js.map +0 -1
- package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js +0 -108
- package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js.map +0 -1
- package/src/utils/misc/Memoized.d.ts +0 -8
- package/src/utils/misc/Memoized.js.map +0 -1
- /package/src/plugins/kamino/{s2AirdropFetcher.old.d.ts → s2AirdropFetcher.d.ts} +0 -0
@@ -8,118 +8,99 @@ 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 });
|
12
|
+
exports.getSolanaTokens = void 0;
|
15
13
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
14
|
const helpers_1 = require("../helpers");
|
18
|
-
const
|
19
|
-
const
|
20
|
-
const
|
21
|
-
const
|
22
|
-
const
|
23
|
-
const
|
24
|
-
const
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
});
|
32
|
-
const fungibleAddresses = items.reduce((addresses, curr) => {
|
33
|
-
if ((0, isHeliusFungibleAsset_1.isHeliusFungibleAsset)(curr))
|
34
|
-
addresses.push(curr.id);
|
35
|
-
return addresses;
|
36
|
-
}, []);
|
15
|
+
const getTokenAccountsByOwner_1 = require("../../../utils/solana/getTokenAccountsByOwner");
|
16
|
+
const ElementRegistry_1 = require("../../../utils/elementbuilder/ElementRegistry");
|
17
|
+
const TokenYieldMap_1 = require("../../../TokenYieldMap");
|
18
|
+
const getWhirlpoolPositions_1 = require("../../orca/getWhirlpoolPositions");
|
19
|
+
const constants_1 = require("../../orca/constants");
|
20
|
+
const constants_2 = require("../../cropper/constants");
|
21
|
+
const getHeliumPositions_1 = require("../../helium/getHeliumPositions");
|
22
|
+
const getPicassoPositions_1 = require("../../picasso/getPicassoPositions");
|
23
|
+
const cpammPositionsFetcher_1 = require("../../meteora/cpamm/cpammPositionsFetcher");
|
24
|
+
const clmmFetcher_1 = require("../../raydium/clmmFetcher");
|
25
|
+
const resizableNftFetcher_1 = require("../../metaplex/resizableNftFetcher");
|
26
|
+
const getSolanaTokens = (simple) => (tokenAccounts, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
27
|
+
const fungibleAddresses = tokenAccounts.map((ta) => ta.mint.toString());
|
37
28
|
const tokenPrices = yield cache.getTokenPricesAsMap(fungibleAddresses, portfolio_core_1.NetworkId.solana);
|
38
|
-
const tokenYields =
|
39
|
-
|
40
|
-
|
41
|
-
const
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
const
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if (tokenPrice
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
};
|
29
|
+
const tokenYields = !simple
|
30
|
+
? yield cache.getTokenYieldsAsMap([...tokenPrices.keys()], portfolio_core_1.NetworkId.solana)
|
31
|
+
: new TokenYieldMap_1.TokenYieldMap(portfolio_core_1.NetworkId.solana);
|
32
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, portfolio_core_1.walletTokensPlatformId);
|
33
|
+
const elementTokens = elementRegistry.addElementMultiple({
|
34
|
+
label: 'Wallet',
|
35
|
+
});
|
36
|
+
const elementsLiquidity = new Map();
|
37
|
+
tokenAccounts.forEach((tokenAccount) => {
|
38
|
+
var _a;
|
39
|
+
const address = tokenAccount.mint.toString();
|
40
|
+
const tokenPrice = tokenPrices.get(address);
|
41
|
+
if (!tokenPrice)
|
42
|
+
return;
|
43
|
+
const tokenYield = tokenYields.get(address);
|
44
|
+
const amount = tokenAccount.amount.shiftedBy(-tokenPrice.decimals);
|
45
|
+
if (tokenPrice.platformId === portfolio_core_1.walletTokensPlatformId) {
|
46
|
+
// it's a regular token
|
47
|
+
elementTokens.addAsset({
|
48
|
+
address,
|
49
|
+
amount,
|
50
|
+
alreadyShifted: true,
|
51
|
+
ref: tokenAccount.pubkey,
|
52
|
+
link: tokenPrice.link,
|
53
|
+
sourceRefs: tokenPrice.sourceRefs,
|
54
|
+
tokenYield,
|
55
|
+
});
|
56
|
+
}
|
57
|
+
else if (!simple) {
|
58
|
+
// it's an LP Token
|
65
59
|
const tag = (0, helpers_1.getLpTag)(tokenPrice.platformId, tokenPrice.elementName, tokenPrice.label);
|
66
|
-
|
67
|
-
|
60
|
+
let elementLiquidity = elementsLiquidity.get(tag);
|
61
|
+
if (!elementLiquidity) {
|
62
|
+
elementLiquidity = elementRegistry.addElementLiquidity({
|
63
|
+
name: tokenPrice.elementName,
|
64
|
+
label: (_a = tokenPrice.label) !== null && _a !== void 0 ? _a : 'LiquidityPool',
|
65
|
+
platformId: tokenPrice.platformId,
|
66
|
+
});
|
68
67
|
}
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
68
|
+
const liquidity = elementLiquidity.addLiquidity({
|
69
|
+
name: tokenPrice.liquidityName,
|
70
|
+
});
|
71
|
+
liquidity.addAsset({
|
72
|
+
address,
|
73
|
+
amount,
|
74
|
+
alreadyShifted: true,
|
75
|
+
ref: tokenAccount.pubkey,
|
76
|
+
link: tokenPrice.link,
|
77
|
+
sourceRefs: tokenPrice.sourceRefs,
|
78
|
+
tokenYield,
|
79
|
+
});
|
80
|
+
elementsLiquidity.set(tag, elementLiquidity);
|
80
81
|
}
|
82
|
+
});
|
83
|
+
return elementRegistry.getElements(cache);
|
84
|
+
});
|
85
|
+
exports.getSolanaTokens = getSolanaTokens;
|
86
|
+
const tokensFetchers = [
|
87
|
+
clmmFetcher_1.getRaydiumClmmPositions,
|
88
|
+
cpammPositionsFetcher_1.getMeteoraCpammPositions,
|
89
|
+
(0, getWhirlpoolPositions_1.getOrcaPositions)(constants_1.platformId),
|
90
|
+
(0, getWhirlpoolPositions_1.getOrcaPositions)(constants_2.platformId, constants_2.clmmPid),
|
91
|
+
getHeliumPositions_1.getHeliumPositions,
|
92
|
+
getPicassoPositions_1.getPicassoPositions,
|
93
|
+
(0, exports.getSolanaTokens)(false),
|
94
|
+
resizableNftFetcher_1.getResizableNfts,
|
95
|
+
];
|
96
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
97
|
+
const tokenAccounts = yield (0, getTokenAccountsByOwner_1.getTokenAccountsByOwner)(owner);
|
98
|
+
const results = [];
|
99
|
+
for (const tokensFetcher of tokensFetchers) {
|
100
|
+
results.push(tokensFetcher(tokenAccounts, cache));
|
81
101
|
}
|
82
|
-
const
|
83
|
-
|
84
|
-
elements.push({
|
85
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
86
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
87
|
-
platformId: portfolio_core_1.walletNftsPlatformId,
|
88
|
-
label: 'Wallet',
|
89
|
-
value: null,
|
90
|
-
data: {
|
91
|
-
// Limit NFTs to 1K, to avoid fetcherResult to be too big
|
92
|
-
assets: nftAssets.slice(0, 1000),
|
93
|
-
},
|
94
|
-
});
|
95
|
-
}
|
96
|
-
if (tokenAssets.length !== 0) {
|
97
|
-
elements.push({
|
98
|
-
type: portfolio_core_1.PortfolioElementType.multiple,
|
99
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
100
|
-
platformId: portfolio_core_1.walletTokensPlatformId,
|
101
|
-
label: 'Wallet',
|
102
|
-
value: (0, portfolio_core_1.getUsdValueSum)(tokenAssets.map((a) => a.value)),
|
103
|
-
data: {
|
104
|
-
assets: tokenAssets,
|
105
|
-
},
|
106
|
-
});
|
107
|
-
}
|
108
|
-
for (const [tag, liquidities] of Object.entries(liquiditiesByTag)) {
|
109
|
-
const { platformId, elementName, label } = (0, helpers_1.parseLpTag)(tag);
|
110
|
-
elements.push({
|
111
|
-
type: portfolio_core_1.PortfolioElementType.liquidity,
|
112
|
-
networkId: portfolio_core_1.NetworkId.solana,
|
113
|
-
platformId,
|
114
|
-
name: elementName,
|
115
|
-
label: label !== null && label !== void 0 ? label : 'LiquidityPool',
|
116
|
-
value: (0, portfolio_core_1.getUsdValueSum)(liquidities.map((a) => a.value)),
|
117
|
-
data: {
|
118
|
-
liquidities,
|
119
|
-
},
|
120
|
-
});
|
121
|
-
}
|
122
|
-
return elements;
|
102
|
+
const result = yield Promise.allSettled(results);
|
103
|
+
return result.flatMap((res) => (res.status === 'rejected' ? [] : res.value));
|
123
104
|
});
|
124
105
|
const fetcher = {
|
125
106
|
id: `${portfolio_core_1.walletTokensPlatformId}-solana`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getTokenListsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/getTokenListsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAIoC;AACpC,kDAA6C;AAG7C,2CAA+C;AAC/C,uCAA4C;AAE5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS;AAE9C,SAAS,gBAAgB,CAAC,SAAwB;IAChD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,yBAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,SAAS,GAAuC,MAAM,eAAK;aAC9D,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;aACzB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,OAAO,CAAe,SAAS,EAAE;YACnE,MAAM,EAAE,4BAAgB;SACzB,CAAC,CAAC;QAEH,IACE,eAAe;YACf,CAAC,IAAA,yBAAe,EAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EACjE,CAAC;YACD,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,4CAA4C;QAC5C,kEAAkE;QAClE,qBAAqB;QACrB,gBAAgB;QAChB,eAAe;QACf,OAAO;QACP,2CAA2C;QAC3C,uCAAuC;QACvC,iBAAiB;QACjB,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;YAC7C,MAAM,EAAE,4BAAgB;YACxB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;IACF,MAAM,GAAG,GAAQ;QACf,EAAE,EAAE,eAAe,SAAS,EAAE;QAC9B,QAAQ;QACR,MAAM,EAAE,CAAC,QAAQ,CAAC;
|
1
|
+
{"version":3,"file":"getTokenListsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/getTokenListsJob.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAIoC;AACpC,kDAA6C;AAG7C,2CAA+C;AAC/C,uCAA4C;AAE5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS;AAE9C,SAAS,gBAAgB,CAAC,SAAwB;IAChD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,yBAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,SAAS,GAAuC,MAAM,eAAK;aAC9D,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;aACzB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,OAAO,CAAe,SAAS,EAAE;YACnE,MAAM,EAAE,4BAAgB;SACzB,CAAC,CAAC;QAEH,IACE,eAAe;YACf,CAAC,IAAA,yBAAe,EAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EACjE,CAAC;YACD,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,4CAA4C;QAC5C,kEAAkE;QAClE,qBAAqB;QACrB,gBAAgB;QAChB,eAAe;QACf,OAAO;QACP,2CAA2C;QAC3C,uCAAuC;QACvC,iBAAiB;QACjB,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;YAC7C,MAAM,EAAE,4BAAgB;YACxB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;IACF,MAAM,GAAG,GAAQ;QACf,EAAE,EAAE,eAAe,SAAS,EAAE;QAC9B,QAAQ;QACR,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KACrC,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AACD,kBAAe,gBAAgB,CAAC"}
|
@@ -11,9 +11,8 @@ const sui_1 = __importDefault(require("./fetchers/sui"));
|
|
11
11
|
const sui_nfts_1 = __importDefault(require("./fetchers/sui-nfts"));
|
12
12
|
const sei_1 = __importDefault(require("./fetchers/sei"));
|
13
13
|
const bitcoin_1 = __importDefault(require("./fetchers/bitcoin"));
|
14
|
-
const solana_1 = __importDefault(require("./fetchers/solana"));
|
15
14
|
const solana_native_1 = __importDefault(require("./fetchers/solana-native"));
|
16
|
-
const
|
15
|
+
const solana_1 = __importDefault(require("./fetchers/solana"));
|
17
16
|
const evms_1 = require("./fetchers/evms");
|
18
17
|
const getTokenListsJob_1 = __importDefault(require("./getTokenListsJob"));
|
19
18
|
const solana_simple_1 = __importDefault(require("./fetchers/solana-simple"));
|
@@ -32,9 +31,8 @@ exports.jobs = [
|
|
32
31
|
];
|
33
32
|
exports.fetchers = [
|
34
33
|
aptos_1.default,
|
35
|
-
solana_1.default,
|
36
34
|
solana_native_1.default,
|
37
|
-
|
35
|
+
solana_1.default,
|
38
36
|
sui_1.default,
|
39
37
|
sui_nfts_1.default,
|
40
38
|
sei_1.default,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAwE;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tokens/index.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAwE;AAIxE,kEAA0C;AAC1C,6DAA4C;AAC5C,yDAAwC;AACxC,mEAAiD;AACjD,yDAAwC;AACxC,iEAAgD;AAChD,6EAA2D;AAC3D,+DAA6C;AAC7C,0CAA0D;AAC1D,0EAAkD;AAElD,6EAA2D;AA0BlD,8BA1BF,uBAAmB,CA0BE;AAxBf,QAAA,IAAI,GAAU;IACzB,IAAA,sBAAY,EAAC,0BAAS,CAAC,OAAO,CAAC;IAC/B,IAAA,sBAAY,EAAC,0BAAS,CAAC,KAAK,CAAC;IAC7B,IAAA,sBAAY,EAAC,0BAAS,CAAC,MAAM,CAAC;IAC9B,IAAA,sBAAY,EAAC,0BAAS,CAAC,QAAQ,CAAC;IAChC,IAAA,sBAAY,EAAC,0BAAS,CAAC,SAAS,CAAC;IACjC,IAAA,sBAAY,EAAC,0BAAS,CAAC,OAAO,CAAC;IAC/B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,IAAA,sBAAY,EAAC,0BAAS,CAAC,GAAG,CAAC;IAC3B,GAAG,gCAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,0BAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CAClE,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC,eAAY;IACZ,uBAAmB;IACnB,gBAAY;IACZ,aAAU;IACV,kBAAc;IACd,aAAU;IACV,iBAAc;IACd,GAAG,eAAW;CACf,CAAC"}
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { PortfolioElement } from '@sonarwatch/portfolio-core';
|
2
2
|
import { Cache } from '../../Cache';
|
3
|
+
import { ParsedAccount, TokenAccount } from '../../utils/solana';
|
3
4
|
export type TokenData = {
|
4
5
|
address: string;
|
5
6
|
decimals: number;
|
@@ -35,4 +36,4 @@ export type Token = {
|
|
35
36
|
index?: string;
|
36
37
|
};
|
37
38
|
};
|
38
|
-
export type
|
39
|
+
export type TokenFetcher = (potentialTokens: ParsedAccount<TokenAccount>[], cache: Cache) => Promise<PortfolioElement[]>;
|
@@ -40,28 +40,28 @@ function getPairKey(version) {
|
|
40
40
|
exports.getPairKey = getPairKey;
|
41
41
|
function getPairsV2FromTheGraph(url, length = 300) {
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
43
|
-
const query = (0, graphql_request_1.gql) `
|
44
|
-
{
|
45
|
-
pairs(
|
46
|
-
orderBy: reserveUSD
|
47
|
-
first: ${length}
|
48
|
-
orderDirection: desc
|
49
|
-
where: { trackedReserveETH_not: "0" }
|
50
|
-
) {
|
51
|
-
id
|
52
|
-
reserve0
|
53
|
-
reserve1
|
54
|
-
totalSupply
|
55
|
-
token0 {
|
56
|
-
id
|
57
|
-
decimals
|
58
|
-
}
|
59
|
-
token1 {
|
60
|
-
id
|
61
|
-
decimals
|
62
|
-
}
|
63
|
-
}
|
64
|
-
}
|
43
|
+
const query = (0, graphql_request_1.gql) `
|
44
|
+
{
|
45
|
+
pairs(
|
46
|
+
orderBy: reserveUSD
|
47
|
+
first: ${length}
|
48
|
+
orderDirection: desc
|
49
|
+
where: { trackedReserveETH_not: "0" }
|
50
|
+
) {
|
51
|
+
id
|
52
|
+
reserve0
|
53
|
+
reserve1
|
54
|
+
totalSupply
|
55
|
+
token0 {
|
56
|
+
id
|
57
|
+
decimals
|
58
|
+
}
|
59
|
+
token1 {
|
60
|
+
id
|
61
|
+
decimals
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
65
|
`;
|
66
66
|
const res = yield (0, graphql_request_1.default)(url, query);
|
67
67
|
const pairs = res.pairs;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.pid = exports.platformId = void 0;
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
5
|
+
exports.platformId = 'wasabi';
|
6
|
+
exports.pid = new web3_js_1.PublicKey('spicyTHtbmarmUxwFSHYpA8G4uP2nRNq38RReMpoZ9c');
|
7
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wasabi/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,GAAG,GAAG,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.fetchers = exports.jobs = void 0;
|
7
|
+
const lpVaultsJob_1 = __importDefault(require("./lpVaultsJob"));
|
8
|
+
// import depositsFetcher from './positionsFetcher';
|
9
|
+
exports.jobs = [lpVaultsJob_1.default];
|
10
|
+
exports.fetchers = [
|
11
|
+
// depositsFetcher
|
12
|
+
];
|
13
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wasabi/index.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAwC;AACxC,oDAAoD;AAEvC,QAAA,IAAI,GAAU,CAAC,qBAAW,CAAC,CAAC;AAC5B,QAAA,QAAQ,GAAc;AACjC,mBAAmB;CACpB,CAAC"}
|
@@ -0,0 +1,60 @@
|
|
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 constants_1 = require("./constants");
|
14
|
+
const clients_1 = require("../../utils/clients");
|
15
|
+
const ParsedGpa_1 = require("../../utils/solana/beets/ParsedGpa");
|
16
|
+
const solana_1 = require("../../utils/solana");
|
17
|
+
const structs_1 = require("./structs");
|
18
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
19
|
+
const connection = (0, clients_1.getClientSolana)();
|
20
|
+
const lpVaults = yield ParsedGpa_1.ParsedGpa.build(connection, structs_1.lpVaultStruct, constants_1.pid)
|
21
|
+
.addFilter('discriminator', [189, 45, 167, 23, 91, 118, 105, 190])
|
22
|
+
.run();
|
23
|
+
const [mintAccounts, tokenPricesMap] = yield Promise.all([
|
24
|
+
(0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.mintAccountStruct, lpVaults.map((vault) => vault.sharesMint)),
|
25
|
+
cache.getTokenPricesAsMap(lpVaults.map((vault) => vault.asset.toString()), portfolio_core_1.NetworkId.solana),
|
26
|
+
]);
|
27
|
+
const sources = [];
|
28
|
+
for (let i = 0; i < lpVaults.length; i++) {
|
29
|
+
const mintAccount = mintAccounts[i];
|
30
|
+
if (!mintAccount)
|
31
|
+
continue;
|
32
|
+
const lpVault = lpVaults[i];
|
33
|
+
const assetPrice = tokenPricesMap.get(lpVault.asset.toString());
|
34
|
+
if (!assetPrice)
|
35
|
+
continue;
|
36
|
+
const { totalAssets, sharesMint } = lpVault;
|
37
|
+
const sPrice = totalAssets
|
38
|
+
.dividedBy(mintAccount.supply)
|
39
|
+
.times(assetPrice.price);
|
40
|
+
sources.push({
|
41
|
+
address: sharesMint.toString(),
|
42
|
+
decimals: mintAccount.decimals,
|
43
|
+
price: sPrice.toNumber(),
|
44
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
45
|
+
id: lpVault.pubkey.toString(),
|
46
|
+
platformId: constants_1.platformId,
|
47
|
+
timestamp: Date.now(),
|
48
|
+
weight: 1,
|
49
|
+
link: `https://app.wasabi.xyz/?earn=${lpVault.sharesMint.toString()}&network=solana&chain=solana`,
|
50
|
+
});
|
51
|
+
}
|
52
|
+
yield cache.setTokenPriceSources(sources);
|
53
|
+
});
|
54
|
+
const job = {
|
55
|
+
id: `${constants_1.platformId}-lp-vaults`,
|
56
|
+
executor,
|
57
|
+
labels: ['normal'],
|
58
|
+
};
|
59
|
+
exports.default = job;
|
60
|
+
//# sourceMappingURL=lpVaultsJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lpVaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wasabi/lpVaultsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAyE;AAGzE,2CAA8C;AAC9C,iDAAsD;AACtD,kEAA+D;AAC/D,+CAG4B;AAC5B,uCAA0C;AAE1C,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,qBAAS,CAAC,KAAK,CAAC,UAAU,EAAE,uBAAa,EAAE,eAAG,CAAC;SACnE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACjE,GAAG,EAAE,CAAC;IAET,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,IAAA,sCAA6B,EAC3B,UAAU,EACV,0BAAiB,EACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAC1C;QACD,KAAK,CAAC,mBAAmB,CACvB,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAC/C,0BAAS,CAAC,MAAM,CACjB;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE5B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE5C,MAAM,MAAM,GAAG,WAAW;aACvB,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;aAC7B,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxB,SAAS,EAAE,0BAAS,CAAC,MAAM;YAC3B,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7B,UAAU,EAAV,sBAAU;YACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,gCAAgC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,8BAA8B;SAClG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AACF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,YAAY;IAC7B,QAAQ;IACR,MAAM,EAAE,CAAC,QAAQ,CAAC;CACnB,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -0,0 +1,67 @@
|
|
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 web3_js_1 = require("@solana/web3.js");
|
14
|
+
const constants_1 = require("./constants");
|
15
|
+
const clients_1 = require("../../utils/clients");
|
16
|
+
const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
|
17
|
+
const structs_1 = require("./structs");
|
18
|
+
const ParsedGpa_1 = require("../../utils/solana/beets/ParsedGpa");
|
19
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
20
|
+
const connection = (0, clients_1.getClientSolana)();
|
21
|
+
const accounts = yield ParsedGpa_1.ParsedGpa.build(connection, structs_1.positionStruct, constants_1.pid)
|
22
|
+
.addFilter('discriminator', [170, 188, 143, 228, 122, 64, 247, 208])
|
23
|
+
.addFilter('trader', new web3_js_1.PublicKey(owner))
|
24
|
+
.run();
|
25
|
+
if (!accounts.length)
|
26
|
+
return [];
|
27
|
+
const tokenPricesMap = yield cache.getTokenPricesAsMap(accounts.map((acc) => acc.collateral.toString()), portfolio_core_1.NetworkId.solana);
|
28
|
+
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, constants_1.platformId);
|
29
|
+
accounts.forEach((position) => {
|
30
|
+
const element = elementRegistry.addElementLeverage({
|
31
|
+
label: 'Leverage',
|
32
|
+
ref: position.pubkey,
|
33
|
+
});
|
34
|
+
const collatPrice = tokenPricesMap.get(position.collateral.toString());
|
35
|
+
const principalPrice = tokenPricesMap.get(position.currency.toString());
|
36
|
+
if (!collatPrice || !principalPrice)
|
37
|
+
return;
|
38
|
+
const collateralValue = position.collateralAmount.times(collatPrice.price);
|
39
|
+
const principalValue = position.principal.times(principalPrice.price);
|
40
|
+
const leverage = collateralValue
|
41
|
+
.plus(principalValue)
|
42
|
+
.dividedBy(collateralValue)
|
43
|
+
.toNumber();
|
44
|
+
element.addIsoPosition({
|
45
|
+
collateralValue: collateralValue.toNumber(),
|
46
|
+
address: position.collateral.toString(),
|
47
|
+
entryPrice: 0, // missing
|
48
|
+
leverage,
|
49
|
+
markPrice: principalPrice.price,
|
50
|
+
liquidationPrice: 0, // missing
|
51
|
+
side: portfolio_core_1.LeverageSide.long, // missing
|
52
|
+
size: position.collateralAmount
|
53
|
+
.dividedBy(Math.pow(10, collatPrice.decimals))
|
54
|
+
.toNumber(),
|
55
|
+
sizeValue: collateralValue.toNumber(),
|
56
|
+
pnlValue: 0, // missing
|
57
|
+
});
|
58
|
+
});
|
59
|
+
return elementRegistry.getElements(cache);
|
60
|
+
});
|
61
|
+
const fetcher = {
|
62
|
+
id: `${constants_1.platformId}-deposits`,
|
63
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
64
|
+
executor,
|
65
|
+
};
|
66
|
+
exports.default = fetcher;
|
67
|
+
//# sourceMappingURL=positionsFetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"positionsFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wasabi/positionsFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
|
+
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
+
import { BeetStruct } from '@metaplex-foundation/beet';
|
4
|
+
import { PublicKey } from '@solana/web3.js';
|
5
|
+
import BigNumber from 'bignumber.js';
|
6
|
+
export type LpVault = {
|
7
|
+
discriminator: number[];
|
8
|
+
bump: number;
|
9
|
+
asset: PublicKey;
|
10
|
+
vault: PublicKey;
|
11
|
+
sharesMint: PublicKey;
|
12
|
+
totalAssets: BigNumber;
|
13
|
+
maxBorrow: BigNumber;
|
14
|
+
totalBorrowed: BigNumber;
|
15
|
+
};
|
16
|
+
export declare const lpVaultStruct: BeetStruct<LpVault, Partial<LpVault>>;
|
17
|
+
export type Position = {
|
18
|
+
discriminator: number[];
|
19
|
+
trader: PublicKey;
|
20
|
+
currency: PublicKey;
|
21
|
+
collateral: PublicKey;
|
22
|
+
lastFundingTimestamp: BigNumber;
|
23
|
+
downPayment: BigNumber;
|
24
|
+
principal: BigNumber;
|
25
|
+
collateralAmount: BigNumber;
|
26
|
+
feesToBePaid: BigNumber;
|
27
|
+
collateralVault: PublicKey;
|
28
|
+
lpVault: PublicKey;
|
29
|
+
};
|
30
|
+
export declare const positionStruct: BeetStruct<Position, Partial<Position>>;
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.positionStruct = exports.lpVaultStruct = void 0;
|
4
|
+
const beet_1 = require("@metaplex-foundation/beet");
|
5
|
+
const beet_solana_1 = require("@metaplex-foundation/beet-solana");
|
6
|
+
const solana_1 = require("../../utils/solana");
|
7
|
+
exports.lpVaultStruct = new beet_1.BeetStruct([
|
8
|
+
['discriminator', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 8)],
|
9
|
+
['bump', beet_1.u8],
|
10
|
+
['asset', beet_solana_1.publicKey],
|
11
|
+
['vault', beet_solana_1.publicKey],
|
12
|
+
['sharesMint', beet_solana_1.publicKey],
|
13
|
+
['totalAssets', solana_1.u64],
|
14
|
+
['maxBorrow', solana_1.u64],
|
15
|
+
['totalBorrowed', solana_1.u64],
|
16
|
+
], (args) => args);
|
17
|
+
exports.positionStruct = new beet_1.BeetStruct([
|
18
|
+
['discriminator', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 8)],
|
19
|
+
['trader', beet_solana_1.publicKey],
|
20
|
+
['currency', beet_solana_1.publicKey],
|
21
|
+
['collateral', beet_solana_1.publicKey],
|
22
|
+
['lastFundingTimestamp', solana_1.i64],
|
23
|
+
['downPayment', solana_1.u64],
|
24
|
+
['principal', solana_1.u64],
|
25
|
+
['collateralAmount', solana_1.u64],
|
26
|
+
['feesToBePaid', solana_1.u64],
|
27
|
+
['collateralVault', beet_solana_1.publicKey],
|
28
|
+
['lpVault', beet_solana_1.publicKey],
|
29
|
+
], (args) => args);
|
30
|
+
//# sourceMappingURL=structs.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wasabi/structs.ts"],"names":[],"mappings":";;;AAAA,oDAImC;AACnC,kEAA6D;AAG7D,+CAA8C;AAajC,QAAA,aAAa,GAAG,IAAI,iBAAU,CACzC;IACE,CAAC,eAAe,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,MAAM,EAAE,SAAE,CAAC;IACZ,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,aAAa,EAAE,YAAG,CAAC;IACpB,CAAC,WAAW,EAAE,YAAG,CAAC;IAClB,CAAC,eAAe,EAAE,YAAG,CAAC;CACvB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAe,CAC1B,CAAC;AAgBW,QAAA,cAAc,GAAG,IAAI,iBAAU,CAC1C;IACE,CAAC,eAAe,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,UAAU,EAAE,uBAAS,CAAC;IACvB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,sBAAsB,EAAE,YAAG,CAAC;IAC7B,CAAC,aAAa,EAAE,YAAG,CAAC;IACpB,CAAC,WAAW,EAAE,YAAG,CAAC;IAClB,CAAC,kBAAkB,EAAE,YAAG,CAAC;IACzB,CAAC,cAAc,EAAE,YAAG,CAAC;IACrB,CAAC,iBAAiB,EAAE,uBAAS,CAAC;IAC9B,CAAC,SAAS,EAAE,uBAAS,CAAC;CACvB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAgB,CAC3B,CAAC"}
|