@sonarwatch/portfolio-plugins 0.15.47 → 0.15.50
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 +2962 -2930
- package/README.md +3 -3
- package/package.json +1 -1
- package/src/Job.d.ts +1 -1
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/plugins/balancer/helpers/pools.js +21 -21
- package/src/plugins/drift/airdropFetcher.js +1 -1
- package/src/plugins/drift/airdropFetcher.js.map +1 -1
- package/src/plugins/drift/airdrops3Fetcher.d.ts +2 -0
- package/src/plugins/drift/airdrops3Fetcher.js +76 -0
- package/src/plugins/drift/airdrops3Fetcher.js.map +1 -0
- package/src/plugins/drift/constants.d.ts +4 -1
- package/src/plugins/drift/constants.js +14 -2
- package/src/plugins/drift/constants.js.map +1 -1
- package/src/plugins/drift/helpersAirdrop.d.ts +2 -0
- package/src/plugins/drift/helpersAirdrop.js +5 -5
- package/src/plugins/drift/helpersAirdrop.js.map +1 -1
- package/src/plugins/drift/types.d.ts +16 -0
- package/src/plugins/fragmetric/pricingJob.js +2 -0
- package/src/plugins/fragmetric/pricingJob.js.map +1 -1
- package/src/plugins/jupiter/getJupiterPrices.d.ts +2 -0
- package/src/plugins/jupiter/getJupiterPrices.js +26 -1
- package/src/plugins/jupiter/getJupiterPrices.js.map +1 -1
- package/src/plugins/jupiter/governance/constants.d.ts +2 -0
- package/src/plugins/jupiter/governance/constants.js +17 -1
- package/src/plugins/jupiter/governance/constants.js.map +1 -1
- package/src/plugins/jupiter/governance/index.d.ts +2 -0
- package/src/plugins/jupiter/governance/index.js +7 -1
- package/src/plugins/jupiter/governance/index.js.map +1 -1
- package/src/plugins/jupiter/index.js +2 -1
- package/src/plugins/jupiter/index.js.map +1 -1
- package/src/plugins/jupiter/pricingJob.js +2 -30
- package/src/plugins/jupiter/pricingJob.js.map +1 -1
- package/src/plugins/meteora/constants.d.ts +1 -0
- package/src/plugins/meteora/constants.js +2 -1
- package/src/plugins/meteora/constants.js.map +1 -1
- package/src/plugins/meteora/dbc/dbcJob.d.ts +3 -0
- package/src/plugins/meteora/dbc/dbcJob.js +35 -0
- package/src/plugins/meteora/dbc/dbcJob.js.map +1 -0
- package/src/plugins/meteora/dbc/structs.d.ts +23 -0
- package/src/plugins/meteora/dbc/structs.js +23 -0
- package/src/plugins/meteora/dbc/structs.js.map +1 -0
- package/src/plugins/meteora/index.js +2 -0
- package/src/plugins/meteora/index.js.map +1 -1
- package/src/plugins/sushiswap/helpers.js +24 -24
- package/src/plugins/tokens/fetchers/solana-simple.js +1 -1
- package/src/plugins/tokens/fetchers/solana-simple.js.map +1 -1
- package/src/plugins/tokens/fetchers/solana.js +56 -34
- package/src/plugins/tokens/fetchers/solana.js.map +1 -1
- package/src/plugins/triad/marketsFetcher.js +2 -0
- package/src/plugins/triad/marketsFetcher.js.map +1 -1
- package/src/plugins/uniswap-v2/helpers.js +22 -22
- package/src/plugins/voltr/constants.d.ts +0 -1
- package/src/plugins/voltr/constants.js +2 -3
- package/src/plugins/voltr/constants.js.map +1 -1
- package/src/plugins/voltr/index.js +5 -1
- package/src/plugins/voltr/index.js.map +1 -1
- package/src/plugins/voltr/structs.d.ts +81 -0
- package/src/plugins/voltr/structs.js +74 -0
- package/src/plugins/voltr/structs.js.map +1 -0
- package/src/plugins/voltr/vaultsJob.d.ts +3 -0
- package/src/plugins/voltr/vaultsJob.js +73 -0
- package/src/plugins/voltr/vaultsJob.js.map +1 -0
- package/src/plugins/zeta/airdropFetcher.js +14 -14
- package/src/utils/elementbuilder/AssetPricedTokenBuilder.d.ts +19 -0
- package/src/utils/elementbuilder/AssetPricedTokenBuilder.js +37 -0
- package/src/utils/elementbuilder/AssetPricedTokenBuilder.js.map +1 -0
- package/src/utils/elementbuilder/ElementMultipleBuilder.d.ts +2 -1
- package/src/utils/elementbuilder/ElementMultipleBuilder.js +4 -0
- package/src/utils/elementbuilder/ElementMultipleBuilder.js.map +1 -1
- package/src/utils/elementbuilder/Params.d.ts +7 -0
- package/src/utils/sei/constants.js +8 -8
- package/src/utils/sei/getQueryBalanceByOwner.js +4 -4
- package/src/utils/solana/getTokenAccountsByOwner.d.ts +1 -1
- package/src/utils/solana/getTokenAccountsByOwner.js +3 -1
- package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -1
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.vaultStruct = exports.lockedProfitStateStruct = exports.highWaterMarkStruct = exports.feeStateStruct = exports.feeUpdateStruct = exports.feeConfigurationStruct = exports.vaultConfigurationStruct = exports.vaultLpStruct = exports.vaultAssetStruct = 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.vaultAssetStruct = new beet_1.BeetStruct([
|
8
|
+
['mint', beet_solana_1.publicKey],
|
9
|
+
['idleAta', beet_solana_1.publicKey],
|
10
|
+
['totalValue', solana_1.u64],
|
11
|
+
['idleAtaAuthBump', beet_1.u8],
|
12
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 95)],
|
13
|
+
], (args) => args);
|
14
|
+
exports.vaultLpStruct = new beet_1.BeetStruct([
|
15
|
+
['mint', beet_solana_1.publicKey],
|
16
|
+
['mintBump', beet_1.u8],
|
17
|
+
['mintAuthBump', beet_1.u8],
|
18
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 62)],
|
19
|
+
], (args) => args);
|
20
|
+
exports.vaultConfigurationStruct = new beet_1.BeetStruct([
|
21
|
+
['maxCap', solana_1.u64],
|
22
|
+
['startAtTs', solana_1.u64],
|
23
|
+
['lockedProfitDegradationDuration', solana_1.u64],
|
24
|
+
['withdrawalWaitingPeriod', solana_1.u64],
|
25
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 48)],
|
26
|
+
], (args) => args);
|
27
|
+
exports.feeConfigurationStruct = new beet_1.BeetStruct([
|
28
|
+
['managerPerformanceFee', beet_1.u16],
|
29
|
+
['adminPerformanceFee', beet_1.u16],
|
30
|
+
['managerManagementFee', beet_1.u16],
|
31
|
+
['adminManagementFee', beet_1.u16],
|
32
|
+
['redemptionFee', beet_1.u16],
|
33
|
+
['issuanceFee', beet_1.u16],
|
34
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 36)],
|
35
|
+
], (args) => args);
|
36
|
+
exports.feeUpdateStruct = new beet_1.BeetStruct([
|
37
|
+
['lastPerformanceFeeUpdateTs', solana_1.u64],
|
38
|
+
['lastManagementFeeUpdateTs', solana_1.u64],
|
39
|
+
], (args) => args);
|
40
|
+
exports.feeStateStruct = new beet_1.BeetStruct([
|
41
|
+
['accumulatedLpManagerFees', solana_1.u64],
|
42
|
+
['accumulatedLpAdminFees', solana_1.u64],
|
43
|
+
['accumulatedLpProtocolFees', solana_1.u64],
|
44
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 24)],
|
45
|
+
], (args) => args);
|
46
|
+
exports.highWaterMarkStruct = new beet_1.BeetStruct([
|
47
|
+
['highestAssetPerLpDecimalBits', solana_1.u128],
|
48
|
+
['lastUpdatedTs', solana_1.u64],
|
49
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 8)],
|
50
|
+
], (args) => args);
|
51
|
+
exports.lockedProfitStateStruct = new beet_1.BeetStruct([
|
52
|
+
['lastUpdatedLockedProfit', solana_1.u64],
|
53
|
+
['lastReport', solana_1.u64],
|
54
|
+
], (args) => args);
|
55
|
+
exports.vaultStruct = new beet_1.BeetStruct([
|
56
|
+
['discriminator', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 8)],
|
57
|
+
['name', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 32)],
|
58
|
+
['description', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 64)],
|
59
|
+
['asset', exports.vaultAssetStruct],
|
60
|
+
['lp', exports.vaultLpStruct],
|
61
|
+
['manager', beet_solana_1.publicKey],
|
62
|
+
['admin', beet_solana_1.publicKey],
|
63
|
+
['vaultConfiguration', exports.vaultConfigurationStruct],
|
64
|
+
['feeConfiguration', exports.feeConfigurationStruct],
|
65
|
+
['feeUpdate', exports.feeUpdateStruct],
|
66
|
+
['feeState', exports.feeStateStruct],
|
67
|
+
['highWaterMark', exports.highWaterMarkStruct],
|
68
|
+
['lastUpdatedTs', solana_1.u64],
|
69
|
+
['version', beet_1.u8],
|
70
|
+
['padding0', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 7)],
|
71
|
+
['lockedProfitState', exports.lockedProfitStateStruct],
|
72
|
+
['reserved', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 240)],
|
73
|
+
], (args) => args);
|
74
|
+
//# sourceMappingURL=structs.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/voltr/structs.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,73 @@
|
|
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 vaults = yield ParsedGpa_1.ParsedGpa.build(connection, structs_1.vaultStruct, constants_1.vaultPid)
|
21
|
+
.addFilter('discriminator', [211, 8, 232, 43, 2, 152, 117, 119])
|
22
|
+
.run();
|
23
|
+
const [lpMintAccounts, tokenPricesMap] = yield Promise.all([
|
24
|
+
(0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.mintAccountStruct, vaults.map((vault) => vault.lp.mint)),
|
25
|
+
cache.getTokenPricesAsMap(vaults.map((vault) => vault.asset.mint.toString()), portfolio_core_1.NetworkId.solana),
|
26
|
+
]);
|
27
|
+
const sources = [];
|
28
|
+
for (let i = 0; i < vaults.length; i++) {
|
29
|
+
const lpMintAccount = lpMintAccounts[i];
|
30
|
+
if (!lpMintAccount)
|
31
|
+
continue;
|
32
|
+
const vault = vaults[i];
|
33
|
+
if (vault.asset.totalValue.isZero() || lpMintAccount.supply.isZero())
|
34
|
+
continue;
|
35
|
+
const underlyingAssetPrice = tokenPricesMap.get(vault.asset.mint.toString());
|
36
|
+
if (!underlyingAssetPrice)
|
37
|
+
continue;
|
38
|
+
const { lp, asset } = vault;
|
39
|
+
const { totalValue } = asset;
|
40
|
+
const { mint } = lp;
|
41
|
+
const sPrice = totalValue
|
42
|
+
.shiftedBy(-underlyingAssetPrice.decimals)
|
43
|
+
.dividedBy(lpMintAccount.supply.shiftedBy(-lpMintAccount.decimals))
|
44
|
+
.times(underlyingAssetPrice.price);
|
45
|
+
sources.push({
|
46
|
+
address: mint.toString(),
|
47
|
+
decimals: lpMintAccount.decimals,
|
48
|
+
price: sPrice.toNumber(),
|
49
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
50
|
+
id: vault.pubkey.toString(),
|
51
|
+
platformId: constants_1.platformId,
|
52
|
+
timestamp: Date.now(),
|
53
|
+
weight: 1,
|
54
|
+
link: `https://voltr.xyz/vault/${vault.pubkey.toString()}`,
|
55
|
+
elementName: (0, solana_1.u8ArrayToString)(vault.name),
|
56
|
+
sourceRefs: [
|
57
|
+
{
|
58
|
+
address: vault.pubkey.toString(),
|
59
|
+
name: 'Vault',
|
60
|
+
},
|
61
|
+
],
|
62
|
+
label: 'Vault',
|
63
|
+
});
|
64
|
+
}
|
65
|
+
yield cache.setTokenPriceSources(sources);
|
66
|
+
});
|
67
|
+
const job = {
|
68
|
+
id: `${constants_1.platformId}-vaults`,
|
69
|
+
executor,
|
70
|
+
labels: ['normal'],
|
71
|
+
};
|
72
|
+
exports.default = job;
|
73
|
+
//# sourceMappingURL=vaultsJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"vaultsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/voltr/vaultsJob.ts"],"names":[],"mappings":"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"}
|
@@ -41,20 +41,20 @@ const getMultipleAccountsInfoSafe_1 = require("../../utils/solana/getMultipleAcc
|
|
41
41
|
const helpers_1 = require("./helpers");
|
42
42
|
const AirdropFetcher_1 = require("../../AirdropFetcher");
|
43
43
|
const getClaimTransactions_1 = require("../../utils/solana/jupiter/getClaimTransactions");
|
44
|
-
const query = (0, graphql_request_1.gql) `
|
45
|
-
query GetAirdropFinalFrontend($authority: String!) {
|
46
|
-
getAirdropFinalFrontend(authority: $authority) {
|
47
|
-
authority
|
48
|
-
community_allocation
|
49
|
-
eligibility
|
50
|
-
main_allocation
|
51
|
-
og_allocation
|
52
|
-
s1_allocation
|
53
|
-
s2_allocation
|
54
|
-
total_allocation
|
55
|
-
__typename
|
56
|
-
}
|
57
|
-
}
|
44
|
+
const query = (0, graphql_request_1.gql) `
|
45
|
+
query GetAirdropFinalFrontend($authority: String!) {
|
46
|
+
getAirdropFinalFrontend(authority: $authority) {
|
47
|
+
authority
|
48
|
+
community_allocation
|
49
|
+
eligibility
|
50
|
+
main_allocation
|
51
|
+
og_allocation
|
52
|
+
s1_allocation
|
53
|
+
s2_allocation
|
54
|
+
total_allocation
|
55
|
+
__typename
|
56
|
+
}
|
57
|
+
}
|
58
58
|
`;
|
59
59
|
const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
|
60
60
|
const res = yield (0, graphql_request_1.default)(constants_1.graphqlApi, query, {
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
|
+
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
+
import { NetworkIdType, PortfolioAsset, PortfolioAssetAttributes, TokenPriceMap } from '@sonarwatch/portfolio-core';
|
4
|
+
import BigNumber from 'bignumber.js';
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
6
|
+
import { AssetBuilder } from './AssetBuilder';
|
7
|
+
import { PortfolioAssetPricedTokenParams } from './Params';
|
8
|
+
import { TokenYieldMap } from '../../TokenYieldMap';
|
9
|
+
export declare class AssetPricedTokenBuilder extends AssetBuilder {
|
10
|
+
address: string;
|
11
|
+
amount: number | BigNumber | string;
|
12
|
+
attributes: PortfolioAssetAttributes;
|
13
|
+
alreadyShifted: boolean;
|
14
|
+
ref?: string | PublicKey;
|
15
|
+
price: number | BigNumber;
|
16
|
+
constructor(params: PortfolioAssetPricedTokenParams);
|
17
|
+
tokenAddresses(): string[];
|
18
|
+
get(networkId: NetworkIdType, tokenPrices: TokenPriceMap, tokenYields: TokenYieldMap): PortfolioAsset | null;
|
19
|
+
}
|
@@ -0,0 +1,37 @@
|
|
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.AssetPricedTokenBuilder = void 0;
|
7
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
8
|
+
const tokenPriceToAssetToken_1 = __importDefault(require("../misc/tokenPriceToAssetToken"));
|
9
|
+
const AssetBuilder_1 = require("./AssetBuilder");
|
10
|
+
class AssetPricedTokenBuilder extends AssetBuilder_1.AssetBuilder {
|
11
|
+
constructor(params) {
|
12
|
+
super();
|
13
|
+
this.address = params.address.toString();
|
14
|
+
this.amount = params.amount;
|
15
|
+
this.attributes = params.attributes || {};
|
16
|
+
this.alreadyShifted = true;
|
17
|
+
this.ref = params.ref;
|
18
|
+
this.price = params.price;
|
19
|
+
}
|
20
|
+
// eslint-disable-next-line class-methods-use-this
|
21
|
+
tokenAddresses() {
|
22
|
+
return [];
|
23
|
+
}
|
24
|
+
get(networkId,
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
26
|
+
tokenPrices,
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
28
|
+
tokenYields) {
|
29
|
+
var _a;
|
30
|
+
const amount = new bignumber_js_1.default(this.amount);
|
31
|
+
if (amount.isZero())
|
32
|
+
return null;
|
33
|
+
return Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(this.address, amount.toNumber(), networkId, null, new bignumber_js_1.default(this.price).toNumber(), this.attributes)), { ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString() });
|
34
|
+
}
|
35
|
+
}
|
36
|
+
exports.AssetPricedTokenBuilder = AssetPricedTokenBuilder;
|
37
|
+
//# sourceMappingURL=AssetPricedTokenBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AssetPricedTokenBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetPricedTokenBuilder.ts"],"names":[],"mappings":";;;;;;AAMA,gEAAqC;AAErC,4FAAoE;AACpE,iDAA8C;AAI9C,MAAa,uBAAwB,SAAQ,2BAAY;IAQvD,YAAY,MAAuC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,kDAAkD;IAClD,cAAc;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,GAAG,CACD,SAAwB;IACxB,6DAA6D;IAC7D,WAA0B;IAC1B,6DAA6D;IAC7D,WAA0B;;QAE1B,MAAM,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAEjC,uCACK,IAAA,gCAAsB,EACvB,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,IAAI,EACJ,IAAI,sBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EACpC,IAAI,CAAC,UAAU,CAChB,KACD,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,IACzB;IACJ,CAAC;CACF;AA7CD,0DA6CC"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { NetworkIdType, PortfolioElementMultiple, TokenPriceMap } from '@sonarwatch/portfolio-core';
|
2
2
|
import { ElementBuilder } from './ElementBuilder';
|
3
|
-
import { Params, PortfolioAssetGenericParams, PortfolioAssetTokenParams } from './Params';
|
3
|
+
import { Params, PortfolioAssetGenericParams, PortfolioAssetPricedTokenParams, PortfolioAssetTokenParams } from './Params';
|
4
4
|
import { AssetBuilder } from './AssetBuilder';
|
5
5
|
import { TokenYieldMap } from '../../TokenYieldMap';
|
6
6
|
export declare class ElementMultipleBuilder extends ElementBuilder {
|
7
7
|
assets: AssetBuilder[];
|
8
8
|
constructor(params: Params);
|
9
9
|
addAsset(params: PortfolioAssetTokenParams): void;
|
10
|
+
addPricedAsset(params: PortfolioAssetPricedTokenParams): void;
|
10
11
|
addGenericAsset(params: PortfolioAssetGenericParams): void;
|
11
12
|
tokenAddresses(): string[];
|
12
13
|
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap, tokenYields: TokenYieldMap): PortfolioElementMultiple | null;
|
@@ -5,6 +5,7 @@ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
|
5
5
|
const ElementBuilder_1 = require("./ElementBuilder");
|
6
6
|
const AssetTokenBuilder_1 = require("./AssetTokenBuilder");
|
7
7
|
const AssetGenericBuilder_1 = require("./AssetGenericBuilder");
|
8
|
+
const AssetPricedTokenBuilder_1 = require("./AssetPricedTokenBuilder");
|
8
9
|
class ElementMultipleBuilder extends ElementBuilder_1.ElementBuilder {
|
9
10
|
constructor(params) {
|
10
11
|
super(params);
|
@@ -13,6 +14,9 @@ class ElementMultipleBuilder extends ElementBuilder_1.ElementBuilder {
|
|
13
14
|
addAsset(params) {
|
14
15
|
this.assets.push(new AssetTokenBuilder_1.AssetTokenBuilder(params));
|
15
16
|
}
|
17
|
+
addPricedAsset(params) {
|
18
|
+
this.assets.push(new AssetPricedTokenBuilder_1.AssetPricedTokenBuilder(params));
|
19
|
+
}
|
16
20
|
addGenericAsset(params) {
|
17
21
|
this.assets.push(new AssetGenericBuilder_1.AssetGenericBuilder(params));
|
18
22
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementMultipleBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementMultipleBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAOoC;AACpC,qDAAkD;AAClD,2DAAwD;
|
1
|
+
{"version":3,"file":"ElementMultipleBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementMultipleBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAOoC;AACpC,qDAAkD;AAClD,2DAAwD;AAQxD,+DAA4D;AAE5D,uEAAoE;AAEpE,MAAa,sBAAuB,SAAQ,+BAAc;IAGxD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,MAAiC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,MAAuC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iDAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,eAAe,CAAC,MAAmC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yCAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,UAAkB,EAClB,WAA0B,EAC1B,WAA0B;;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAqB,CAAC;QAEjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,OAAO;YACL,IAAI,EAAE,qCAAoB,CAAC,QAAQ;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;YACzC,IAAI,EAAE;gBACJ,MAAM;gBACN,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,KAAK,EAAE,IAAA,+BAAc,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AApDD,wDAoDC"}
|
@@ -72,6 +72,13 @@ export type PortfolioAssetTokenParams = {
|
|
72
72
|
link?: string;
|
73
73
|
tokenYield?: TokenYield;
|
74
74
|
};
|
75
|
+
export type PortfolioAssetPricedTokenParams = {
|
76
|
+
address: string | PublicKey;
|
77
|
+
amount: number | BigNumber | string;
|
78
|
+
attributes?: PortfolioAssetAttributes;
|
79
|
+
price: number | BigNumber;
|
80
|
+
ref?: string | PublicKey;
|
81
|
+
};
|
75
82
|
export type TradeParams = {
|
76
83
|
inputAsset: Omit<PortfolioAssetTokenParams, 'amount'> & {
|
77
84
|
amount?: number | BigNumber | string;
|
@@ -1,16 +1,16 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.poolQueryMsg = exports.minterQueryMsg = exports.tokenInfoQueryMsg = exports.infoQueryMsg = void 0;
|
4
|
-
exports.infoQueryMsg = JSON.parse(`{
|
5
|
-
"info": {}
|
4
|
+
exports.infoQueryMsg = JSON.parse(`{
|
5
|
+
"info": {}
|
6
6
|
}`);
|
7
|
-
exports.tokenInfoQueryMsg = JSON.parse(`{
|
8
|
-
"token_info": {}
|
7
|
+
exports.tokenInfoQueryMsg = JSON.parse(`{
|
8
|
+
"token_info": {}
|
9
9
|
}`);
|
10
|
-
exports.minterQueryMsg = JSON.parse(`{
|
11
|
-
"minter": {}
|
10
|
+
exports.minterQueryMsg = JSON.parse(`{
|
11
|
+
"minter": {}
|
12
12
|
}`);
|
13
|
-
exports.poolQueryMsg = JSON.parse(`{
|
14
|
-
"pool": {}
|
13
|
+
exports.poolQueryMsg = JSON.parse(`{
|
14
|
+
"pool": {}
|
15
15
|
}`);
|
16
16
|
//# sourceMappingURL=constants.js.map
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
function getQueryBalanceByOwner(owner) {
|
4
|
-
return JSON.parse(`{
|
5
|
-
"balance": {
|
6
|
-
"address": "${owner}"
|
7
|
-
}
|
4
|
+
return JSON.parse(`{
|
5
|
+
"balance": {
|
6
|
+
"address": "${owner}"
|
7
|
+
}
|
8
8
|
}`);
|
9
9
|
}
|
10
10
|
exports.default = getQueryBalanceByOwner;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { TokenAccount, TokenAccountWithMetadata } from './structs';
|
2
2
|
import { ParsedAccount } from './types';
|
3
3
|
import { SolanaClient } from '../clients/types';
|
4
|
-
export declare const getTokenAccountsByOwner: (client: SolanaClient, owner: string) => Promise<ParsedAccount<TokenAccountWithMetadata>[]>;
|
4
|
+
export declare const getTokenAccountsByOwner: (client: SolanaClient, owner: string, withMetadata?: boolean) => Promise<ParsedAccount<TokenAccountWithMetadata>[]>;
|
5
5
|
export declare const getTokenAccountsByOwnerMemo: (owner: string) => Promise<ParsedAccount<TokenAccount>[]>;
|
@@ -19,7 +19,7 @@ const clients_1 = require("../clients");
|
|
19
19
|
const helpers_1 = require("../../plugins/metaplex/helpers");
|
20
20
|
const getParsedMultipleAccountsInfo_1 = require("./getParsedMultipleAccountsInfo");
|
21
21
|
const structs_2 = require("../../plugins/metaplex/structs");
|
22
|
-
const getTokenAccountsByOwner = (client, owner) => __awaiter(void 0, void 0, void 0, function* () {
|
22
|
+
const getTokenAccountsByOwner = (client, owner, withMetadata = true) => __awaiter(void 0, void 0, void 0, function* () {
|
23
23
|
const tokenAccounts = yield Promise.all([
|
24
24
|
client
|
25
25
|
.getTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
|
@@ -35,6 +35,8 @@ const getTokenAccountsByOwner = (client, owner) => __awaiter(void 0, void 0, voi
|
|
35
35
|
const tokenAccountsInfo = [...tokenAccounts[0], ...tokenAccounts[1]]
|
36
36
|
.map((x) => (Object.assign(Object.assign({}, structs_1.tokenAccountStruct.deserialize(x.account.data)[0]), { pubkey: x.pubkey, lamports: x.account.lamports, tokenProgram: x.account.owner, isToken2022: x.isToken2022 })))
|
37
37
|
.filter((a) => !a.amount.isZero());
|
38
|
+
if (!withMetadata)
|
39
|
+
return tokenAccountsInfo;
|
38
40
|
const [metadataAccounts, token2022Accounts] = yield Promise.all([
|
39
41
|
(0, getParsedMultipleAccountsInfo_1.getParsedMultipleAccountsInfo)(client, structs_2.metadataAccountStruct, tokenAccountsInfo
|
40
42
|
.filter((t) => !t.isToken2022)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getTokenAccountsByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/solana/getTokenAccountsByOwner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAqD;AACrD,2CAAqE;AACrE,uCAImB;AAEnB,qDAAkD;AAElD,wCAA6C;AAC7C,4DAAmE;AACnE,mFAAgF;AAChF,4DAAuE;AAEhE,MAAM,uBAAuB,GAAG,CACrC,MAAoB,EACpB,KAAa,
|
1
|
+
{"version":3,"file":"getTokenAccountsByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/solana/getTokenAccountsByOwner.ts"],"names":[],"mappings":"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"}
|