@sonarwatch/portfolio-plugins 0.14.160 → 0.14.161
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 +4 -0
- package/package.json +1 -1
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/plugins/banx/offersFetcher.js +2 -1
- package/src/plugins/banx/offersFetcher.js.map +1 -1
- package/src/plugins/ensofi/constants.d.ts +2 -1
- package/src/plugins/ensofi/constants.js +3 -2
- package/src/plugins/ensofi/constants.js.map +1 -1
- package/src/plugins/ensofi/index.js +6 -1
- package/src/plugins/ensofi/index.js.map +1 -1
- package/src/plugins/ensofi/liquidityIdl.d.ts +674 -0
- package/src/plugins/ensofi/liquidityIdl.js +3177 -0
- package/src/plugins/ensofi/liquidityIdl.js.map +1 -0
- package/src/plugins/ensofi/solanaLiquidityFetcher.d.ts +3 -0
- package/src/plugins/ensofi/solanaLiquidityFetcher.js +71 -0
- package/src/plugins/ensofi/solanaLiquidityFetcher.js.map +1 -0
- package/src/plugins/ensofi/solanaLoansFetcher.js +3 -3
- package/src/plugins/ensofi/solanaLoansFetcher.js.map +1 -1
- package/src/plugins/ensofi/solanaLoansJob.js +1 -1
- package/src/plugins/ensofi/solanaLoansJob.js.map +1 -1
- package/src/plugins/ensofi/structs.d.ts +66 -0
- package/src/plugins/ensofi/structs.js +64 -1
- package/src/plugins/ensofi/structs.js.map +1 -1
- package/src/plugins/pumpswap/constants.d.ts +5 -0
- package/src/plugins/pumpswap/constants.js +7 -0
- package/src/plugins/pumpswap/constants.js.map +1 -0
- package/src/plugins/pumpswap/index.d.ts +4 -0
- package/src/plugins/pumpswap/index.js +10 -0
- package/src/plugins/pumpswap/index.js.map +1 -0
- package/src/plugins/pumpswap/marketsJob.d.ts +3 -0
- package/src/plugins/pumpswap/marketsJob.js +99 -0
- package/src/plugins/pumpswap/marketsJob.js.map +1 -0
- package/src/plugins/pumpswap/structs.d.ts +18 -0
- package/src/plugins/pumpswap/structs.js +19 -0
- package/src/plugins/pumpswap/structs.js.map +1 -0
- package/src/plugins/stabble/structs.d.ts +12 -4
- package/src/plugins/stabble/structs.js +11 -4
- package/src/plugins/stabble/structs.js.map +1 -1
- package/src/plugins/tensor/powerUserAirdropFetcher.js +9 -15
- package/src/plugins/tensor/powerUserAirdropFetcher.js.map +1 -1
- package/src/utils/misc/getLpTokenSource.d.ts +3 -1
- package/src/utils/misc/getLpTokenSource.js +3 -1
- package/src/utils/misc/getLpTokenSource.js.map +1 -1
- package/src/utils/misc/getLpTokenSourceRaw.d.ts +3 -1
- package/src/utils/misc/getLpTokenSourceRaw.js +2 -0
- package/src/utils/misc/getLpTokenSourceRaw.js.map +1 -1
@@ -0,0 +1,99 @@
|
|
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 structs_1 = require("./structs");
|
16
|
+
const ParsedGpa_1 = require("../../utils/solana/beets/ParsedGpa");
|
17
|
+
const solana_1 = require("../../utils/solana");
|
18
|
+
const getLpTokenSourceRaw_1 = require("../../utils/misc/getLpTokenSourceRaw");
|
19
|
+
const getCachedDecimalsForToken_1 = require("../../utils/misc/getCachedDecimalsForToken");
|
20
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
21
|
+
const connection = (0, clients_1.getClientSolana)();
|
22
|
+
const markets = yield ParsedGpa_1.ParsedGpa.build(connection, structs_1.marketStruct, constants_1.programId)
|
23
|
+
.addFilter('accountDiscriminator', [241, 154, 109, 4, 17, 177, 109, 188])
|
24
|
+
.run();
|
25
|
+
if (!markets)
|
26
|
+
throw new Error('No Markets found');
|
27
|
+
const [tokenPrices, baseTokenAccounts, quoteTokenAccounts] = yield Promise.all([
|
28
|
+
cache.getTokenPricesAsMap(markets
|
29
|
+
.map((market) => [
|
30
|
+
market.base_mint.toString(),
|
31
|
+
market.quote_mint.toString(),
|
32
|
+
])
|
33
|
+
.flat(), portfolio_core_1.NetworkId.solana),
|
34
|
+
(0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.tokenAccountStruct, markets.map((market) => market.pool_base_token_account)),
|
35
|
+
(0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.tokenAccountStruct, markets.map((market) => market.pool_quote_token_account)),
|
36
|
+
]);
|
37
|
+
const [baseDecimals, quoteDecimals] = yield Promise.all([
|
38
|
+
Promise.all(markets.map((market) => {
|
39
|
+
const tokenPrice = tokenPrices.get(market.base_mint.toString());
|
40
|
+
return ((tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.decimals) ||
|
41
|
+
(0, getCachedDecimalsForToken_1.getCachedDecimalsForToken)(cache, market.base_mint.toString(), portfolio_core_1.NetworkId.solana));
|
42
|
+
})),
|
43
|
+
Promise.all(markets.map((market) => {
|
44
|
+
const tokenPrice = tokenPrices.get(market.quote_mint.toString());
|
45
|
+
return ((tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.decimals) ||
|
46
|
+
(0, getCachedDecimalsForToken_1.getCachedDecimalsForToken)(cache, market.quote_mint.toString(), portfolio_core_1.NetworkId.solana));
|
47
|
+
})),
|
48
|
+
]);
|
49
|
+
const sources = [];
|
50
|
+
markets.forEach((market, i) => {
|
51
|
+
const baseTokenAccount = baseTokenAccounts[i];
|
52
|
+
const quoteTokenAccount = quoteTokenAccounts[i];
|
53
|
+
if (!baseTokenAccount || !quoteTokenAccount)
|
54
|
+
return;
|
55
|
+
const baseTokenPrice = tokenPrices.get(market.base_mint.toString());
|
56
|
+
const quoteTokenPrice = tokenPrices.get(market.quote_mint.toString());
|
57
|
+
const lpDecimal = 9;
|
58
|
+
const baseTokenDecimal = baseDecimals[i];
|
59
|
+
const quoteTokenDecimal = quoteDecimals[i];
|
60
|
+
if (!lpDecimal || !baseTokenDecimal || !quoteTokenDecimal)
|
61
|
+
return;
|
62
|
+
const lpSources = (0, getLpTokenSourceRaw_1.getLpTokenSourceRaw)({
|
63
|
+
lpDetails: {
|
64
|
+
address: market.lp_mint.toString(),
|
65
|
+
decimals: lpDecimal,
|
66
|
+
supplyRaw: market.lp_supply,
|
67
|
+
},
|
68
|
+
platformId: constants_1.platformId,
|
69
|
+
sourceId: market.pubkey.toString(),
|
70
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
71
|
+
poolUnderlyingsRaw: [
|
72
|
+
{
|
73
|
+
address: market.base_mint.toString(),
|
74
|
+
decimals: baseTokenDecimal,
|
75
|
+
reserveAmountRaw: baseTokenAccount.amount,
|
76
|
+
tokenPrice: baseTokenPrice,
|
77
|
+
},
|
78
|
+
{
|
79
|
+
address: market.quote_mint.toString(),
|
80
|
+
decimals: quoteTokenDecimal,
|
81
|
+
reserveAmountRaw: quoteTokenAccount.amount,
|
82
|
+
tokenPrice: quoteTokenPrice,
|
83
|
+
},
|
84
|
+
],
|
85
|
+
priceUnderlyings: true,
|
86
|
+
link: `https://swap.pump.fun/deposit?pool=${market.pubkey}`,
|
87
|
+
sourceRefs: [{ address: market.pubkey.toString(), name: 'Pool' }],
|
88
|
+
});
|
89
|
+
sources.push(...lpSources);
|
90
|
+
});
|
91
|
+
yield cache.setTokenPriceSources(sources);
|
92
|
+
});
|
93
|
+
const job = {
|
94
|
+
id: `${constants_1.platformId}-markets`,
|
95
|
+
executor,
|
96
|
+
labels: ['normal'],
|
97
|
+
};
|
98
|
+
exports.default = job;
|
99
|
+
//# sourceMappingURL=marketsJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"marketsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/pumpswap/marketsJob.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
|
+
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
+
import { PublicKey } from '@solana/web3.js';
|
4
|
+
import BigNumber from 'bignumber.js';
|
5
|
+
import { BeetStruct } from '@metaplex-foundation/beet';
|
6
|
+
export type Market = {
|
7
|
+
accountDiscriminator: number[];
|
8
|
+
pool_bump: number;
|
9
|
+
index: number;
|
10
|
+
creator: PublicKey;
|
11
|
+
base_mint: PublicKey;
|
12
|
+
quote_mint: PublicKey;
|
13
|
+
lp_mint: PublicKey;
|
14
|
+
pool_base_token_account: PublicKey;
|
15
|
+
pool_quote_token_account: PublicKey;
|
16
|
+
lp_supply: BigNumber;
|
17
|
+
};
|
18
|
+
export declare const marketStruct: BeetStruct<Market, Partial<Market>>;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.marketStruct = 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.marketStruct = new beet_1.BeetStruct([
|
8
|
+
['accountDiscriminator', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 8)],
|
9
|
+
['pool_bump', beet_1.u8],
|
10
|
+
['index', beet_1.u16],
|
11
|
+
['creator', beet_solana_1.publicKey],
|
12
|
+
['base_mint', beet_solana_1.publicKey],
|
13
|
+
['quote_mint', beet_solana_1.publicKey],
|
14
|
+
['lp_mint', beet_solana_1.publicKey],
|
15
|
+
['pool_base_token_account', beet_solana_1.publicKey],
|
16
|
+
['pool_quote_token_account', beet_solana_1.publicKey],
|
17
|
+
['lp_supply', solana_1.u64],
|
18
|
+
], (args) => args);
|
19
|
+
//# sourceMappingURL=structs.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/pumpswap/structs.ts"],"names":[],"mappings":";;;AAEA,oDAKmC;AACnC,kEAA6D;AAC7D,+CAAyC;AAe5B,QAAA,YAAY,GAAG,IAAI,iBAAU,CACxC;IACE,CAAC,sBAAsB,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,WAAW,EAAE,SAAE,CAAC;IACjB,CAAC,OAAO,EAAE,UAAG,CAAC;IACd,CAAC,SAAS,EAAE,uBAAS,CAAC;IACtB,CAAC,WAAW,EAAE,uBAAS,CAAC;IACxB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,SAAS,EAAE,uBAAS,CAAC;IACtB,CAAC,yBAAyB,EAAE,uBAAS,CAAC;IACtC,CAAC,0BAA0B,EAAE,uBAAS,CAAC;IACvC,CAAC,WAAW,EAAE,YAAG,CAAC;CACnB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAc,CACzB,CAAC"}
|
@@ -3,7 +3,15 @@
|
|
3
3
|
import { PublicKey } from '@solana/web3.js';
|
4
4
|
import BigNumber from 'bignumber.js';
|
5
5
|
import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet';
|
6
|
-
export type
|
6
|
+
export type StablePoolToken = {
|
7
|
+
mint: PublicKey;
|
8
|
+
decimals: number;
|
9
|
+
scalingUp: boolean;
|
10
|
+
scalingFactor: BigNumber;
|
11
|
+
balance: BigNumber;
|
12
|
+
};
|
13
|
+
export declare const stablePoolTokenStruct: BeetStruct<StablePoolToken, Partial<StablePoolToken>>;
|
14
|
+
export type WeightedPoolToken = {
|
7
15
|
mint: PublicKey;
|
8
16
|
decimals: number;
|
9
17
|
scalingUp: boolean;
|
@@ -11,7 +19,7 @@ export type PoolToken = {
|
|
11
19
|
balance: BigNumber;
|
12
20
|
weight: BigNumber;
|
13
21
|
};
|
14
|
-
export declare const
|
22
|
+
export declare const weightedPoolTokenStruct: BeetStruct<WeightedPoolToken, Partial<WeightedPoolToken>>;
|
15
23
|
export type WeightedPool = {
|
16
24
|
accountDiscriminator: number[];
|
17
25
|
owner: PublicKey;
|
@@ -21,7 +29,7 @@ export type WeightedPool = {
|
|
21
29
|
isActive: boolean;
|
22
30
|
invariant: BigNumber;
|
23
31
|
swapFee: BigNumber;
|
24
|
-
tokens:
|
32
|
+
tokens: StablePoolToken[];
|
25
33
|
pendingOwner?: PublicKey;
|
26
34
|
};
|
27
35
|
export declare const weightedPoolStruct: FixableBeetStruct<WeightedPool, Partial<WeightedPool>>;
|
@@ -37,7 +45,7 @@ export type StablePool = {
|
|
37
45
|
rampStartTs: BigNumber;
|
38
46
|
rampStopTs: BigNumber;
|
39
47
|
swapFee: BigNumber;
|
40
|
-
tokens:
|
48
|
+
tokens: StablePoolToken[];
|
41
49
|
pendingOwner?: PublicKey;
|
42
50
|
};
|
43
51
|
export declare const stablePoolStruct: FixableBeetStruct<StablePool, Partial<StablePool>>;
|
@@ -1,10 +1,17 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.stablePoolStruct = exports.weightedPoolStruct = exports.
|
3
|
+
exports.stablePoolStruct = exports.weightedPoolStruct = exports.weightedPoolTokenStruct = exports.stablePoolTokenStruct = void 0;
|
4
4
|
const beet_solana_1 = require("@metaplex-foundation/beet-solana");
|
5
5
|
const beet_1 = require("@metaplex-foundation/beet");
|
6
6
|
const solana_1 = require("../../utils/solana");
|
7
|
-
exports.
|
7
|
+
exports.stablePoolTokenStruct = new beet_1.BeetStruct([
|
8
|
+
['mint', beet_solana_1.publicKey],
|
9
|
+
['decimals', beet_1.u8],
|
10
|
+
['scalingUp', beet_1.bool],
|
11
|
+
['scalingFactor', solana_1.u64],
|
12
|
+
['balance', solana_1.u64],
|
13
|
+
], (args) => args);
|
14
|
+
exports.weightedPoolTokenStruct = new beet_1.BeetStruct([
|
8
15
|
['mint', beet_solana_1.publicKey],
|
9
16
|
['decimals', beet_1.u8],
|
10
17
|
['scalingUp', beet_1.bool],
|
@@ -21,7 +28,7 @@ exports.weightedPoolStruct = new beet_1.FixableBeetStruct([
|
|
21
28
|
['isActive', beet_1.bool],
|
22
29
|
['invariant', solana_1.u64],
|
23
30
|
['swapFee', solana_1.u64],
|
24
|
-
['tokens', (0, beet_1.array)(exports.
|
31
|
+
['tokens', (0, beet_1.array)(exports.weightedPoolTokenStruct)],
|
25
32
|
['pendingOwner', beet_solana_1.publicKey],
|
26
33
|
], (args) => args);
|
27
34
|
exports.stablePoolStruct = new beet_1.FixableBeetStruct([
|
@@ -36,7 +43,7 @@ exports.stablePoolStruct = new beet_1.FixableBeetStruct([
|
|
36
43
|
['rampStartTs', solana_1.i64],
|
37
44
|
['rampStopTs', solana_1.i64],
|
38
45
|
['swapFee', solana_1.u64],
|
39
|
-
['tokens', (0, beet_1.array)(exports.
|
46
|
+
['tokens', (0, beet_1.array)(exports.stablePoolTokenStruct)],
|
40
47
|
['pendingOwner', beet_solana_1.publicKey],
|
41
48
|
], (args) => args);
|
42
49
|
//# sourceMappingURL=structs.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/stabble/structs.ts"],"names":[],"mappings":";;;AAEA,kEAA6D;AAC7D,oDAQmC;AACnC,+CAA8C;
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/stabble/structs.ts"],"names":[],"mappings":";;;AAEA,kEAA6D;AAC7D,oDAQmC;AACnC,+CAA8C;AAUjC,QAAA,qBAAqB,GAAG,IAAI,iBAAU,CACjD;IACE,CAAC,MAAM,EAAE,uBAAS,CAAC;IACnB,CAAC,UAAU,EAAE,SAAE,CAAC;IAChB,CAAC,WAAW,EAAE,WAAI,CAAC;IACnB,CAAC,eAAe,EAAE,YAAG,CAAC;IACtB,CAAC,SAAS,EAAE,YAAG,CAAC;CACjB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAuB,CAClC,CAAC;AAWW,QAAA,uBAAuB,GAAG,IAAI,iBAAU,CACnD;IACE,CAAC,MAAM,EAAE,uBAAS,CAAC;IACnB,CAAC,UAAU,EAAE,SAAE,CAAC;IAChB,CAAC,WAAW,EAAE,WAAI,CAAC;IACnB,CAAC,eAAe,EAAE,YAAG,CAAC;IACtB,CAAC,SAAS,EAAE,YAAG,CAAC;IAChB,CAAC,QAAQ,EAAE,YAAG,CAAC;CAChB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAyB,CACpC,CAAC;AAeW,QAAA,kBAAkB,GAAG,IAAI,wBAAiB,CACrD;IACE,CAAC,sBAAsB,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,MAAM,EAAE,uBAAS,CAAC;IACnB,CAAC,eAAe,EAAE,SAAE,CAAC;IACrB,CAAC,UAAU,EAAE,WAAI,CAAC;IAClB,CAAC,WAAW,EAAE,YAAG,CAAC;IAClB,CAAC,SAAS,EAAE,YAAG,CAAC;IAChB,CAAC,QAAQ,EAAE,IAAA,YAAK,EAAC,+BAAuB,CAAC,CAAC;IAC1C,CAAC,cAAc,EAAE,uBAAS,CAAC;CAC5B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAoB,CAC/B,CAAC;AAkBW,QAAA,gBAAgB,GAAG,IAAI,wBAAiB,CACnD;IACE,CAAC,sBAAsB,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,MAAM,EAAE,uBAAS,CAAC;IACnB,CAAC,eAAe,EAAE,SAAE,CAAC;IACrB,CAAC,UAAU,EAAE,WAAI,CAAC;IAClB,CAAC,kBAAkB,EAAE,UAAG,CAAC;IACzB,CAAC,iBAAiB,EAAE,UAAG,CAAC;IACxB,CAAC,aAAa,EAAE,YAAG,CAAC;IACpB,CAAC,YAAY,EAAE,YAAG,CAAC;IACnB,CAAC,SAAS,EAAE,YAAG,CAAC;IAChB,CAAC,QAAQ,EAAE,IAAA,YAAK,EAAC,6BAAqB,CAAC,CAAC;IACxC,CAAC,cAAc,EAAE,uBAAS,CAAC;CAC5B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB,CAC7B,CAAC"}
|
@@ -19,7 +19,6 @@ const constants_1 = require("./constants");
|
|
19
19
|
const clients_1 = require("../../utils/clients");
|
20
20
|
const solana_1 = require("../../utils/solana");
|
21
21
|
const struct_1 = require("./struct");
|
22
|
-
const ElementRegistry_1 = require("../../utils/elementbuilder/ElementRegistry");
|
23
22
|
const filters_1 = require("./filters");
|
24
23
|
const AirdropFetcher_1 = require("../../AirdropFetcher");
|
25
24
|
const powerUsers_json_1 = __importDefault(require("./powerUsers.json"));
|
@@ -65,24 +64,19 @@ const executor = (owner) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
64
|
},
|
66
65
|
],
|
67
66
|
});
|
68
|
-
const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, constants_1.platformId);
|
69
|
-
const element = elementRegistry.addElementMultiple({
|
70
|
-
label: 'Airdrop',
|
71
|
-
name: 'Power User',
|
72
|
-
});
|
73
|
-
element.addAsset({
|
74
|
-
address: tokenAccounts.value[0].account.data.parsed.info.mint,
|
75
|
-
amount: tokenAccounts.value[0].account.data.parsed.info.tokenAmount.uiAmount,
|
76
|
-
alreadyShifted: true,
|
77
|
-
});
|
78
|
-
const isClaimedFully = alloc ===
|
79
|
-
tokenAccounts.value[0].account.data.parsed.info.tokenAmount.uiAmount;
|
80
67
|
return (0, AirdropFetcher_1.getAirdropRaw)({
|
81
68
|
statics: constants_1.powerUsersStatics,
|
82
69
|
items: [
|
83
70
|
{
|
84
|
-
amount:
|
85
|
-
isClaimed:
|
71
|
+
amount: tokenAccounts.value[0].account.data.parsed.info.tokenAmount.uiAmount,
|
72
|
+
isClaimed: false,
|
73
|
+
label: 'TNSR',
|
74
|
+
address: constants_1.tnsrMint,
|
75
|
+
},
|
76
|
+
{
|
77
|
+
amount: alloc -
|
78
|
+
tokenAccounts.value[0].account.data.parsed.info.tokenAmount.uiAmount,
|
79
|
+
isClaimed: true,
|
86
80
|
label: 'TNSR',
|
87
81
|
address: constants_1.tnsrMint,
|
88
82
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"powerUserAirdropFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tensor/powerUserAirdropFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+DAAuD;AACvD,6CAA4C;AAC5C,2CAKqB;AACrB,iDAAsD;AACtD,+CAA8D;AAC9D,qCAAgD;AAChD,
|
1
|
+
{"version":3,"file":"powerUserAirdropFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/tensor/powerUserAirdropFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+DAAuD;AACvD,6CAA4C;AAC5C,2CAKqB;AACrB,iDAAsD;AACtD,+CAA8D;AAC9D,qCAAgD;AAChD,uCAA0C;AAC1C,yDAK8B;AAC9B,wEAA2C;AAE3C,MAAM,oBAAoB,GAA8B,yBAAU,CAAC;AAEnE,MAAM,QAAQ,GAA2B,CAAO,KAAa,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK;QACR,OAAO,IAAA,8BAAa,EAAC;YACnB,OAAO,EAAE,6BAAiB;YAC1B,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,oBAAQ;iBAClB;aACF;SACF,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAwB,EAC7C,UAAU,EACV,6BAAoB,EACpB,IAAI,mBAAS,CAAC,0BAAc,CAAC,EAC7B,IAAA,uBAAa,EAAC,KAAK,CAAC,EACpB,CAAC,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM;QAClB,OAAO,IAAA,8BAAa,EAAC;YACnB,OAAO,EAAE,6BAAiB;YAC1B,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,oBAAQ;iBAClB;aACF;SACF,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,6BAA6B,CAClE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAClB,EAAE,IAAI,EAAE,IAAI,mBAAS,CAAC,oBAAQ,CAAC,EAAE,CAClC,CAAC;IACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACzB,OAAO,IAAA,8BAAa,EAAC;YACnB,OAAO,EAAE,6BAAiB;YAC1B,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,oBAAQ;iBAClB;aACF;SACF,CAAC,CAAC;IAEL,OAAO,IAAA,8BAAa,EAAC;QACnB,OAAO,EAAE,6BAAiB;QAC1B,KAAK,EAAE;YACL;gBACE,MAAM,EACJ,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACtE,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,oBAAQ;aAClB;YACD;gBACE,MAAM,EACJ,KAAK;oBACL,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ;gBACtE,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,oBAAQ;aAClB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEW,QAAA,uBAAuB,GAAmB;IACrD,EAAE,EAAE,6BAAiB,CAAC,EAAE;IACxB,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAA,wCAAuB,EACrD,+BAAuB,EACvB,sBAAU,EACV,WAAW,EACX,6BAAiB,CAAC,QAAQ,CAC3B,CAAC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkIdType, TokenPriceSource } from '@sonarwatch/portfolio-core';
|
1
|
+
import { NetworkIdType, TokenPriceSource, SourceRef } from '@sonarwatch/portfolio-core';
|
2
2
|
import { PoolUnderlying } from './getLpUnderlyingTokenSource';
|
3
3
|
export type LpDetails = {
|
4
4
|
address: string;
|
@@ -14,5 +14,7 @@ export type GetLpTokenSourceParams = {
|
|
14
14
|
elementName?: string;
|
15
15
|
liquidityName?: string;
|
16
16
|
priceUnderlyings?: boolean;
|
17
|
+
sourceRefs?: SourceRef[];
|
18
|
+
link?: string;
|
17
19
|
};
|
18
20
|
export declare function getLpTokenSource(params: GetLpTokenSourceParams): TokenPriceSource[];
|
@@ -4,7 +4,7 @@ exports.getLpTokenSource = void 0;
|
|
4
4
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
5
5
|
const getLpUnderlyingTokenSource_1 = require("./getLpUnderlyingTokenSource");
|
6
6
|
function getLpTokenSource(params) {
|
7
|
-
const { poolUnderlyings, liquidityName, elementName, lpDetails, platformId, sourceId, networkId, priceUnderlyings, } = params;
|
7
|
+
const { poolUnderlyings, liquidityName, elementName, lpDetails, platformId, sourceId, networkId, priceUnderlyings, sourceRefs, link, } = params;
|
8
8
|
const sources = [];
|
9
9
|
// Verify underlyings weights
|
10
10
|
let totalWeight = poolUnderlyings.reduce((partialSum, p) => partialSum + (p.weight || 0), 0);
|
@@ -48,6 +48,8 @@ function getLpTokenSource(params) {
|
|
48
48
|
decimals: u.decimals,
|
49
49
|
})),
|
50
50
|
timestamp: Date.now(),
|
51
|
+
sourceRefs,
|
52
|
+
link,
|
51
53
|
};
|
52
54
|
sources.push(lpSource);
|
53
55
|
return sources;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getLpTokenSource.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getLpTokenSource.ts"],"names":[],"mappings":";;;AAAA,+
|
1
|
+
{"version":3,"file":"getLpTokenSource.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getLpTokenSource.ts"],"names":[],"mappings":";;;AAAA,+DAKoC;AACpC,6EAGsC;AAqBtC,SAAgB,gBAAgB,CAC9B,MAA8B;IAE9B,MAAM,EACJ,eAAe,EACf,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,IAAI,GACL,GAAG,MAAM,CAAC;IACX,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,6BAA6B;IAC7B,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM,CACtC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAC/C,CAAC,CACF,CAAC;IACF,IAAI,WAAW,KAAK,CAAC;QAAE,WAAW,GAAG,CAAC,CAAC;IACvC,IAAI,WAAW,GAAG,IAAI;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;IAChE,IAAI,WAAW,GAAG,IAAI;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;IAEhE,oBAAoB;IACpB,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAA,uDAA0B,EAAC;YAC1C,SAAS;YACT,QAAQ,EAAE,SAAS,CAAC,OAAO;YAC3B,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/D,WAAW;IACX,MAAM,KAAK,GACT,eAAe,CAAC,MAAM;IACpB,oEAAoE;IACpE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,UAAW,CAAC,KAAK,EACvD,CAAC,CACF,GAAG,SAAS,CAAC,MAAM,CAAC;IACvB,MAAM,QAAQ,GAAqB;QACjC,SAAS;QACT,UAAU;QACV,EAAE,EAAE,QAAQ;QACZ,WAAW;QACX,aAAa;QACb,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,IAAA,mCAAkB,EAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;QACzD,KAAK;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,SAAS;YACT,OAAO,EAAE,IAAA,mCAAkB,EAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;YACjD,oEAAoE;YACpE,KAAK,EAAE,CAAC,CAAC,UAAW,CAAC,KAAK;YAC1B,WAAW,EAAE,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM;YAC/C,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU;QACV,IAAI;KACL,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAtED,4CAsEC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkIdType, TokenPrice, TokenPriceSource } from '@sonarwatch/portfolio-core';
|
1
|
+
import { NetworkIdType, SourceRef, TokenPrice, TokenPriceSource } from '@sonarwatch/portfolio-core';
|
2
2
|
import BigNumber from 'bignumber.js';
|
3
3
|
export type PoolUnderlyingRaw = {
|
4
4
|
address: string;
|
@@ -21,6 +21,8 @@ export type GetLpTokenSourceRawParams = {
|
|
21
21
|
elementName?: string;
|
22
22
|
liquidityName?: string;
|
23
23
|
priceUnderlyings?: boolean;
|
24
|
+
sourceRefs?: SourceRef[];
|
25
|
+
link?: string;
|
24
26
|
};
|
25
27
|
export declare function getLpTokenSourceRaw(params: GetLpTokenSourceRawParams): TokenPriceSource[];
|
26
28
|
export {};
|
@@ -23,6 +23,8 @@ function getLpTokenSourceRaw(params) {
|
|
23
23
|
elementName: params.elementName,
|
24
24
|
liquidityName: params.liquidityName,
|
25
25
|
priceUnderlyings: params.priceUnderlyings,
|
26
|
+
sourceRefs: params.sourceRefs,
|
27
|
+
link: params.link,
|
26
28
|
});
|
27
29
|
}
|
28
30
|
exports.getLpTokenSourceRaw = getLpTokenSourceRaw;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getLpTokenSourceRaw.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getLpTokenSourceRaw.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"getLpTokenSourceRaw.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getLpTokenSourceRaw.ts"],"names":[],"mappings":";;;;;;AAMA,gEAAqC;AACrC,yDAAiE;AA8BjE,SAAgB,mBAAmB,CACjC,MAAiC;IAEjC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACjD,MAAM,UAAU,mCACX,SAAS,KACZ,MAAM,EAAE,IAAI,sBAAS,CAAC,SAAS,CAAC,SAAS,CAAC;aACvC,GAAG,CAAC,SAAA,EAAE,EAAI,SAAS,CAAC,QAAQ,CAAA,CAAC;aAC7B,QAAQ,EAAE,GACd,CAAC;IACF,MAAM,mBAAmB,GAAqB,kBAAkB,CAAC,GAAG,CAClE,CAAC,EAAE,EAAE,EAAE,CAAC,iCACH,EAAE,KACL,aAAa,EAAE,IAAI,sBAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC;aAC9C,GAAG,CAAC,SAAA,EAAE,EAAI,EAAE,CAAC,QAAQ,CAAA,CAAC;aACtB,QAAQ,EAAE,IACb,CACH,CAAC;IAEF,OAAO,IAAA,mCAAgB,EAAC;QACtB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,eAAe,EAAE,mBAAmB;QACpC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AA/BD,kDA+BC"}
|