@sonarwatch/portfolio-plugins 0.8.67 → 0.8.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +439 -431
  2. package/package.json +2 -2
  3. package/src/index.js +7 -0
  4. package/src/index.js.map +1 -1
  5. package/src/plugins/fluxbeam/constants.d.ts +5 -0
  6. package/src/plugins/fluxbeam/constants.js +13 -0
  7. package/src/plugins/fluxbeam/constants.js.map +1 -0
  8. package/src/plugins/fluxbeam/index.d.ts +6 -0
  9. package/src/plugins/fluxbeam/index.js +12 -0
  10. package/src/plugins/fluxbeam/index.js.map +1 -0
  11. package/src/plugins/fluxbeam/poolsJob.d.ts +3 -0
  12. package/src/plugins/fluxbeam/poolsJob.js +116 -0
  13. package/src/plugins/fluxbeam/poolsJob.js.map +1 -0
  14. package/src/plugins/fluxbeam/structs.d.ts +40 -0
  15. package/src/plugins/fluxbeam/structs.js +41 -0
  16. package/src/plugins/fluxbeam/structs.js.map +1 -0
  17. package/src/plugins/jupiter/constants.d.ts +3 -0
  18. package/src/plugins/jupiter/constants.js +7 -0
  19. package/src/plugins/jupiter/constants.js.map +1 -0
  20. package/src/plugins/jupiter/index.d.ts +4 -0
  21. package/src/plugins/jupiter/index.js +10 -0
  22. package/src/plugins/jupiter/index.js.map +1 -0
  23. package/src/plugins/jupiter/poolJob.d.ts +3 -0
  24. package/src/plugins/jupiter/poolJob.js +77 -0
  25. package/src/plugins/jupiter/poolJob.js.map +1 -0
  26. package/src/plugins/jupiter/structs.d.ts +105 -0
  27. package/src/plugins/jupiter/structs.js +99 -0
  28. package/src/plugins/jupiter/structs.js.map +1 -0
  29. package/src/plugins/kamino/poolsJob.js +0 -14
  30. package/src/plugins/kamino/poolsJob.js.map +1 -1
  31. package/src/utils/solana/getParsedAccountInfo.d.ts +3 -0
  32. package/src/utils/solana/getParsedAccountInfo.js +22 -0
  33. package/src/utils/solana/getParsedAccountInfo.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonarwatch/portfolio-plugins",
3
- "version": "0.8.67",
3
+ "version": "0.8.69",
4
4
  "type": "commonjs",
5
5
  "generators": "./generators.json",
6
6
  "dependencies": {
@@ -39,7 +39,7 @@
39
39
  "web3-v1": "npm:web3@^1.5.0"
40
40
  },
41
41
  "peerDependencies": {
42
- "@sonarwatch/portfolio-core": "0.8.67"
42
+ "@sonarwatch/portfolio-core": "0.8.69"
43
43
  },
44
44
  "main": "./src/index.js",
45
45
  "types": "./src/index.d.ts"
package/src/index.js CHANGED
@@ -63,6 +63,8 @@ const hawksight_1 = require("./plugins/hawksight");
63
63
  const realms_1 = require("./plugins/realms");
64
64
  const maple_1 = require("./plugins/maple");
65
65
  const flexlend_1 = require("./plugins/flexlend");
66
+ const fluxbeam_1 = require("./plugins/fluxbeam");
67
+ const jupiter_1 = require("./plugins/jupiter");
66
68
  var constants_1 = require("./plugins/tokens/constants");
67
69
  Object.defineProperty(exports, "walletTokensPlatform", { enumerable: true, get: function () { return constants_1.walletTokensPlatform; } });
68
70
  Object.defineProperty(exports, "walletNftsPlatform", { enumerable: true, get: function () { return constants_1.walletNftsPlatform; } });
@@ -116,6 +118,7 @@ exports.platforms = [
116
118
  ...realms_1.platforms,
117
119
  ...maple_1.platforms,
118
120
  ...flexlend_1.platforms,
121
+ ...fluxbeam_1.platforms,
119
122
  ];
120
123
  // JOBS //
121
124
  exports.jobs = [
@@ -155,6 +158,8 @@ exports.jobs = [
155
158
  ...realms_1.jobs,
156
159
  ...maple_1.jobs,
157
160
  ...flexlend_1.jobs,
161
+ ...fluxbeam_1.jobs,
162
+ ...jupiter_1.jobs,
158
163
  ];
159
164
  // FETCHERS //
160
165
  exports.fetchers = [
@@ -193,6 +198,8 @@ exports.fetchers = [
193
198
  ...realms_1.fetchers,
194
199
  ...maple_1.fetchers,
195
200
  ...flexlend_1.fetchers,
201
+ ...fluxbeam_1.fetchers,
202
+ ...jupiter_1.fetchers,
196
203
  ];
197
204
  exports.fetchersByAddressSystem = (0, getFetchersByAddressSystem_1.getFetchersByAddressSystem)(exports.fetchers);
198
205
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Platform } from '@sonarwatch/portfolio-core';
2
+ export declare const platformId = "fluxbeam";
3
+ export declare const platform: Platform;
4
+ export declare const poolsCachePrefix: string;
5
+ export declare const fluxbeamPoolsPid = "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X";
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fluxbeamPoolsPid = exports.poolsCachePrefix = exports.platform = exports.platformId = void 0;
4
+ exports.platformId = 'fluxbeam';
5
+ exports.platform = {
6
+ id: exports.platformId,
7
+ name: 'Flux Beam',
8
+ image: 'https://sonar.watch/img/platforms/fluxbeam.png',
9
+ defiLlamaId: 'fluxbeam', // from https://defillama.com/docs/api
10
+ };
11
+ exports.poolsCachePrefix = `${exports.platformId}-pools`;
12
+ exports.fluxbeamPoolsPid = 'FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X';
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG,UAAU,CAAC;AACxB,QAAA,QAAQ,GAAa;IAChC,EAAE,EAAE,kBAAU;IACd,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,gDAAgD;IACvD,WAAW,EAAE,UAAU,EAAE,sCAAsC;CAChE,CAAC;AACW,QAAA,gBAAgB,GAAG,GAAG,kBAAU,QAAQ,CAAC;AACzC,QAAA,gBAAgB,GAAG,8CAA8C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Platform } from '@sonarwatch/portfolio-core';
2
+ import { Fetcher } from '../../Fetcher';
3
+ import { Job } from '../../Job';
4
+ export declare const platforms: Platform[];
5
+ export declare const jobs: Job[];
6
+ export declare const fetchers: Fetcher[];
@@ -0,0 +1,12 @@
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 = exports.platforms = void 0;
7
+ const constants_1 = require("./constants");
8
+ const poolsJob_1 = __importDefault(require("./poolsJob"));
9
+ exports.platforms = [constants_1.platform];
10
+ exports.jobs = [poolsJob_1.default];
11
+ exports.fetchers = [];
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/index.ts"],"names":[],"mappings":";;;;;;AAGA,2CAAuC;AACvC,0DAAkC;AAErB,QAAA,SAAS,GAAe,CAAC,oBAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,GAAU,CAAC,kBAAQ,CAAC,CAAC;AACzB,QAAA,QAAQ,GAAc,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '../../Job';
2
+ declare const job: Job;
3
+ export default job;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
18
+ const constants_1 = require("./constants");
19
+ const clients_1 = require("../../utils/clients");
20
+ const solana_1 = require("../../utils/solana");
21
+ const structs_1 = require("./structs");
22
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const connection = (0, clients_1.getClientSolana)();
24
+ const pools = yield (0, solana_1.getParsedProgramAccounts)(connection, structs_1.poolStruct, new web3_js_1.PublicKey(constants_1.fluxbeamPoolsPid), [{ dataSize: structs_1.poolStruct.byteSize }]);
25
+ const tokenAccountsAddresses = pools
26
+ .map((pool) => [pool.tokenA, pool.tokenB])
27
+ .flat();
28
+ const tokenAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.tokenAccountStruct, tokenAccountsAddresses);
29
+ const tokenAccountsMap = new Map();
30
+ tokenAccounts.forEach((tokenAccount) => {
31
+ if (!tokenAccount)
32
+ return;
33
+ tokenAccountsMap.set(tokenAccount.pubkey.toString(), tokenAccount);
34
+ });
35
+ const poolMints = yield (0, solana_1.getParsedMultipleAccountsInfo)(connection, solana_1.mintAccountStruct, pools.map((p) => p.poolMint));
36
+ const tokenMintsAddresses = pools
37
+ .map((pool) => [pool.tokenAMint.toString(), pool.tokenBMint.toString()])
38
+ .flat();
39
+ // const tokenMints = await getParsedMultipleAccountsInfo(
40
+ // connection,
41
+ // mintAccountStruct,
42
+ // tokenMintsAddresses
43
+ // );
44
+ // const tokenMintsMap: Map<string, ParsedAccount<MintAccount>> = new Map();
45
+ // tokenMints.forEach((tokenMint) => {
46
+ // if (!tokenMint) return;
47
+ // tokenMintsMap.set(tokenMint.pubkey.toString(), tokenMint);
48
+ // });
49
+ const tokenPriceResults = yield cache.getTokenPrices(tokenMintsAddresses, portfolio_core_1.NetworkId.solana);
50
+ const tokenPrices = new Map();
51
+ tokenPriceResults.forEach((tokenPrice) => {
52
+ if (!tokenPrice)
53
+ return;
54
+ tokenPrices.set(tokenPrice.address, tokenPrice);
55
+ });
56
+ for (let i = 0; i < pools.length; i++) {
57
+ const pool = pools[i];
58
+ if (!pool.isInitialized)
59
+ continue;
60
+ const poolMint = poolMints[i];
61
+ if (!poolMint)
62
+ continue;
63
+ const tokenPriceA = tokenPrices.get(pool.tokenAMint.toString());
64
+ const tokenPriceB = tokenPrices.get(pool.tokenBMint.toString());
65
+ if (!tokenPriceA || !tokenPriceB)
66
+ continue;
67
+ const tokenAccountA = tokenAccountsMap.get(pool.tokenA.toString());
68
+ const tokenAccountB = tokenAccountsMap.get(pool.tokenB.toString());
69
+ if (!tokenAccountA || !tokenAccountB)
70
+ continue;
71
+ const amountA = new bignumber_js_1.default(tokenAccountA.amount.toString())
72
+ .div(Math.pow(10, tokenPriceA.decimals))
73
+ .toNumber();
74
+ const amountB = new bignumber_js_1.default(tokenAccountB.amount.toString())
75
+ .div(Math.pow(10, tokenPriceB.decimals))
76
+ .toNumber();
77
+ const lpSupply = new bignumber_js_1.default(poolMint.supply)
78
+ .div(Math.pow(10, poolMint.decimals))
79
+ .toNumber();
80
+ const price = (amountA * tokenPriceA.price + amountB * tokenPriceB.price) / lpSupply;
81
+ const source = {
82
+ networkId: portfolio_core_1.NetworkId.solana,
83
+ elementName: 'Pools',
84
+ platformId: constants_1.platformId,
85
+ id: constants_1.platformId,
86
+ weight: 1,
87
+ address: pool.poolMint.toString(),
88
+ price,
89
+ decimals: poolMint.decimals,
90
+ underlyings: [
91
+ {
92
+ networkId: portfolio_core_1.NetworkId.solana,
93
+ address: tokenPriceA.address.toString(),
94
+ decimals: tokenPriceA.decimals,
95
+ price: tokenPriceA.price,
96
+ amountPerLp: amountA / lpSupply,
97
+ },
98
+ {
99
+ networkId: portfolio_core_1.NetworkId.solana,
100
+ address: tokenPriceB.address.toString(),
101
+ decimals: tokenPriceB.decimals,
102
+ price: tokenPriceB.price,
103
+ amountPerLp: amountB / lpSupply,
104
+ },
105
+ ],
106
+ timestamp: Date.now(),
107
+ };
108
+ yield cache.setTokenPriceSource(source);
109
+ }
110
+ });
111
+ const job = {
112
+ id: `${constants_1.platformId}-pools`,
113
+ executor,
114
+ };
115
+ exports.default = job;
116
+ //# sourceMappingURL=poolsJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/poolsJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /// <reference types="node" />
2
+ import { BeetStruct } from '@metaplex-foundation/beet';
3
+ import BigNumber from 'bignumber.js';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ export type Fees = {
6
+ tradeFeeNumerator: BigNumber;
7
+ tradeFeeDenominator: BigNumber;
8
+ ownerTradeFeeNumerator: BigNumber;
9
+ ownerTradeFeeDenominator: BigNumber;
10
+ ownerWithdrawFeeNumerator: BigNumber;
11
+ ownerWithdrawFeeDenominator: BigNumber;
12
+ hostFeeNumerator: BigNumber;
13
+ hostFeeDenominator: BigNumber;
14
+ };
15
+ export declare const feesStruct: BeetStruct<Fees, Partial<Fees>>;
16
+ export declare enum CurveType {
17
+ ConstantProduct = 0,
18
+ ConstantPrice = 1,
19
+ Offset = 2
20
+ }
21
+ export type SwapCurve = {
22
+ curveType: CurveType;
23
+ calculator: Buffer;
24
+ };
25
+ export declare const swapCurveStruct: BeetStruct<SwapCurve, Partial<SwapCurve>>;
26
+ export type Pool = {
27
+ padding: Buffer;
28
+ isInitialized: number;
29
+ bumpSeed: number;
30
+ tokenProgramId: PublicKey;
31
+ tokenA: PublicKey;
32
+ tokenB: PublicKey;
33
+ poolMint: PublicKey;
34
+ tokenAMint: PublicKey;
35
+ tokenBMint: PublicKey;
36
+ poolFeeAccount: PublicKey;
37
+ fees: Fees;
38
+ swapCurve: SwapCurve;
39
+ };
40
+ export declare const poolStruct: BeetStruct<Pool, Partial<Pool>>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.poolStruct = exports.swapCurveStruct = exports.CurveType = exports.feesStruct = 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.feesStruct = new beet_1.BeetStruct([
8
+ ['tradeFeeNumerator', solana_1.u64],
9
+ ['tradeFeeDenominator', solana_1.u64],
10
+ ['ownerTradeFeeNumerator', solana_1.u64],
11
+ ['ownerTradeFeeDenominator', solana_1.u64],
12
+ ['ownerWithdrawFeeNumerator', solana_1.u64],
13
+ ['ownerWithdrawFeeDenominator', solana_1.u64],
14
+ ['hostFeeNumerator', solana_1.u64],
15
+ ['hostFeeDenominator', solana_1.u64],
16
+ ], (args) => args);
17
+ var CurveType;
18
+ (function (CurveType) {
19
+ CurveType[CurveType["ConstantProduct"] = 0] = "ConstantProduct";
20
+ CurveType[CurveType["ConstantPrice"] = 1] = "ConstantPrice";
21
+ CurveType[CurveType["Offset"] = 2] = "Offset";
22
+ })(CurveType || (exports.CurveType = CurveType = {}));
23
+ exports.swapCurveStruct = new beet_1.BeetStruct([
24
+ ['curveType', beet_1.u8],
25
+ ['calculator', (0, solana_1.blob)(32)],
26
+ ], (args) => args);
27
+ exports.poolStruct = new beet_1.BeetStruct([
28
+ ['padding', (0, solana_1.blob)(1)],
29
+ ['isInitialized', beet_1.u8],
30
+ ['bumpSeed', beet_1.u8],
31
+ ['tokenProgramId', beet_solana_1.publicKey],
32
+ ['tokenA', beet_solana_1.publicKey],
33
+ ['tokenB', beet_solana_1.publicKey],
34
+ ['poolMint', beet_solana_1.publicKey],
35
+ ['tokenAMint', beet_solana_1.publicKey],
36
+ ['tokenBMint', beet_solana_1.publicKey],
37
+ ['poolFeeAccount', beet_solana_1.publicKey],
38
+ ['fees', exports.feesStruct],
39
+ ['swapCurve', exports.swapCurveStruct],
40
+ ], (args) => args);
41
+ //# sourceMappingURL=structs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/fluxbeam/structs.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAC3D,kEAA6D;AAG7D,+CAA+C;AAalC,QAAA,UAAU,GAAG,IAAI,iBAAU,CACtC;IACE,CAAC,mBAAmB,EAAE,YAAG,CAAC;IAC1B,CAAC,qBAAqB,EAAE,YAAG,CAAC;IAC5B,CAAC,wBAAwB,EAAE,YAAG,CAAC;IAC/B,CAAC,0BAA0B,EAAE,YAAG,CAAC;IACjC,CAAC,2BAA2B,EAAE,YAAG,CAAC;IAClC,CAAC,6BAA6B,EAAE,YAAG,CAAC;IACpC,CAAC,kBAAkB,EAAE,YAAG,CAAC;IACzB,CAAC,oBAAoB,EAAE,YAAG,CAAC;CAC5B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAY,CACvB,CAAC;AAEF,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,+DAAe,CAAA;IACf,2DAAa,CAAA;IACb,6CAAM,CAAA;AACR,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAOY,QAAA,eAAe,GAAG,IAAI,iBAAU,CAC3C;IACE,CAAC,WAAW,EAAE,SAAE,CAAC;IACjB,CAAC,YAAY,EAAE,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC;CACzB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB,CAC5B,CAAC;AAiBW,QAAA,UAAU,GAAG,IAAI,iBAAU,CACtC;IACE,CAAC,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACpB,CAAC,eAAe,EAAE,SAAE,CAAC;IACrB,CAAC,UAAU,EAAE,SAAE,CAAC;IAChB,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,UAAU,EAAE,uBAAS,CAAC;IACvB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,YAAY,EAAE,uBAAS,CAAC;IACzB,CAAC,gBAAgB,EAAE,uBAAS,CAAC;IAC7B,CAAC,MAAM,EAAE,kBAAU,CAAC;IACpB,CAAC,WAAW,EAAE,uBAAe,CAAC;CAC/B,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAY,CACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ export declare const jlpPool: PublicKey;
3
+ export declare const jlpToken: PublicKey;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jlpToken = exports.jlpPool = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ exports.jlpPool = new web3_js_1.PublicKey('5BUwFW4nRbftYTDMbgxykoFWqWHPzahFSNAaaaJtVKsq');
6
+ exports.jlpToken = new web3_js_1.PublicKey('27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4');
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/constants.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE/B,QAAA,OAAO,GAAG,IAAI,mBAAS,CAClC,8CAA8C,CAC/C,CAAC;AACW,QAAA,QAAQ,GAAG,IAAI,mBAAS,CACnC,8CAA8C,CAC/C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Fetcher } from '../../Fetcher';
2
+ import { Job } from '../../Job';
3
+ export declare const jobs: Job[];
4
+ export declare const fetchers: Fetcher[];
@@ -0,0 +1,10 @@
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 poolJob_1 = __importDefault(require("./poolJob"));
8
+ exports.jobs = [poolJob_1.default];
9
+ exports.fetchers = [];
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/index.ts"],"names":[],"mappings":";;;;;;AAEA,wDAAgC;AAEnB,QAAA,IAAI,GAAU,CAAC,iBAAO,CAAC,CAAC;AACxB,QAAA,QAAQ,GAAc,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '../../Job';
2
+ declare const job: Job;
3
+ export default job;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
17
+ const clients_1 = require("../../utils/clients");
18
+ const solana_1 = require("../../utils/solana");
19
+ const constants_1 = require("./constants");
20
+ const structs_1 = require("./structs");
21
+ const constants_2 = require("../orders/jupiter/constants");
22
+ const platformId = constants_2.jupiterPlatform.id;
23
+ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
24
+ const client = (0, clients_1.getClientSolana)();
25
+ const poolAccount = (yield (0, solana_1.getParsedMultipleAccountsInfo)(client, structs_1.perpetualPoolStruct, [constants_1.jlpPool]))[0];
26
+ if (!poolAccount)
27
+ return;
28
+ const custodiesAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, structs_1.custodyStruct, poolAccount.custodies);
29
+ const mints = [];
30
+ const tokensAccountsAddresses = [];
31
+ custodiesAccounts.forEach((acc) => {
32
+ if (acc) {
33
+ mints.push(acc.mint.toString());
34
+ tokensAccountsAddresses.push(acc.tokenAccount);
35
+ }
36
+ });
37
+ if (poolAccount.custodies.length !== mints.length)
38
+ return;
39
+ const tokensPricesRaw = yield cache.getTokenPrices(mints, portfolio_core_1.NetworkId.solana);
40
+ const tokensPrices = [];
41
+ tokensPricesRaw.forEach((tP) => (tP ? tokensPrices.push(tP) : []));
42
+ if (tokensPrices.length !== mints.length)
43
+ return;
44
+ const tokensAccounts = yield (0, solana_1.getParsedMultipleAccountsInfo)(client, solana_1.tokenAccountStruct, tokensAccountsAddresses);
45
+ const tokensAmounts = tokensAccounts
46
+ .map((tA, i) => tA ? tA.amount.dividedBy(Math.pow(10, tokensPrices[i].decimals)) : [])
47
+ .flat();
48
+ const lpTokenSupply = yield client.getTokenSupply(constants_1.jlpToken);
49
+ const lpAmount = new bignumber_js_1.default(lpTokenSupply.value.amount).dividedBy(Math.pow(10, lpTokenSupply.value.decimals));
50
+ const underlyingsAmounts = tokensAmounts
51
+ .map((amount) => amount.dividedBy(lpAmount))
52
+ .flat();
53
+ const price = tokensAmounts
54
+ .map((amount, i) => amount.multipliedBy(tokensPrices[i].price))
55
+ .reduce((sum, current) => current.plus(sum), new bignumber_js_1.default(0))
56
+ .dividedBy(lpAmount)
57
+ .toNumber();
58
+ const underlyings = (0, portfolio_core_1.getTokenPricesUnderlyingsFromTokensPrices)(tokensPrices, underlyingsAmounts.map((a) => a.toNumber()));
59
+ yield cache.setTokenPriceSource({
60
+ address: constants_1.jlpToken.toString(),
61
+ decimals: 6,
62
+ id: platformId,
63
+ networkId: portfolio_core_1.NetworkId.solana,
64
+ elementName: 'JLP Pool',
65
+ platformId,
66
+ price,
67
+ timestamp: Date.now(),
68
+ weight: 1,
69
+ underlyings,
70
+ });
71
+ });
72
+ const job = {
73
+ id: `${platformId}-pool`,
74
+ executor,
75
+ };
76
+ exports.default = job;
77
+ //# sourceMappingURL=poolJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/jupiter/poolJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /// <reference types="node" />
2
+ import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ import BigNumber from 'bignumber.js';
5
+ export type Limit = {
6
+ maxAumUsd: BigNumber;
7
+ maxIndividualLpToken: BigNumber;
8
+ maxPositionUsd: BigNumber;
9
+ };
10
+ export declare const limitStruct: BeetStruct<Limit, Partial<Limit>>;
11
+ export type PoolApr = {
12
+ lastUpdated: BigNumber;
13
+ feeAprBps: BigNumber;
14
+ realizedFeeUsd: BigNumber;
15
+ };
16
+ export declare const poolAprStruct: BeetStruct<PoolApr, Partial<PoolApr>>;
17
+ export type Fees = {
18
+ increasePositionBps: BigNumber;
19
+ decreasePositionBps: BigNumber;
20
+ addRemoveLiquidityBps: BigNumber;
21
+ swapBps: BigNumber;
22
+ taxBps: BigNumber;
23
+ stableSwapBps: BigNumber;
24
+ stableSwapTaxBps: BigNumber;
25
+ liquidationRewardBps: BigNumber;
26
+ protocolShareBps: BigNumber;
27
+ };
28
+ export declare const feesStruct: BeetStruct<Fees, Partial<Fees>>;
29
+ export type PerpetualPool = {
30
+ buffer: Buffer;
31
+ name: number;
32
+ custodies: PublicKey[];
33
+ aumUsd: BigNumber;
34
+ limit: Limit;
35
+ fees: Fees;
36
+ poolApr: PoolApr;
37
+ maxRequestExecutionSec: BigNumber;
38
+ bump: number;
39
+ lpTokenBump: number;
40
+ inceptionTime: BigNumber;
41
+ };
42
+ export declare const perpetualPoolStruct: FixableBeetStruct<PerpetualPool, Partial<PerpetualPool>>;
43
+ export declare enum OracleType {
44
+ None = 0,
45
+ Test = 1,
46
+ Pyth = 2
47
+ }
48
+ export type OracleParams = {
49
+ oracleAccount: PublicKey;
50
+ oracleType: OracleType;
51
+ maxPriceError: BigNumber;
52
+ maxPriceAgeSec: BigNumber;
53
+ };
54
+ export declare const oracleParamsStruct: BeetStruct<OracleParams, Partial<OracleParams>>;
55
+ export type PricingParams = {
56
+ tradeSpreadLong: BigNumber;
57
+ tradeSpreadShort: BigNumber;
58
+ swapSpread: BigNumber;
59
+ maxLeverage: BigNumber;
60
+ maxGlobalLongSizes: BigNumber;
61
+ maxGlobalShortSizes: BigNumber;
62
+ };
63
+ export declare const pricingParamsStruct: BeetStruct<PricingParams, Partial<PricingParams>>;
64
+ export type Permissions = {
65
+ allowSwap: boolean;
66
+ allowAddLiquidity: boolean;
67
+ allowRemoveLiquidity: boolean;
68
+ allowIncreasePosition: boolean;
69
+ allowDecreasePosition: boolean;
70
+ allowCollateralWithdrawal: boolean;
71
+ allowLiquidatePosition: boolean;
72
+ };
73
+ export declare const permissionsStruct: BeetStruct<Permissions, Partial<Permissions>>;
74
+ export type Assets = {
75
+ feesReserves: BigNumber;
76
+ owned: BigNumber;
77
+ locked: BigNumber;
78
+ guaranteedUsd: BigNumber;
79
+ globalShortSizes: BigNumber;
80
+ globalShortAveragePrices: BigNumber;
81
+ };
82
+ export declare const assetsStruct: BeetStruct<Assets, Partial<Assets>>;
83
+ export type FundingRateState = {
84
+ cumulativeInterestRate: BigNumber;
85
+ lastUpdate: BigNumber;
86
+ hourlyFundingBps: BigNumber;
87
+ };
88
+ export declare const fundingRateStateStruct: BeetStruct<FundingRateState, Partial<FundingRateState>>;
89
+ export type Custody = {
90
+ buffer: Buffer;
91
+ pool: PublicKey;
92
+ mint: PublicKey;
93
+ tokenAccount: PublicKey;
94
+ decimals: number;
95
+ isStable: boolean;
96
+ oracle: OracleParams;
97
+ pricing: PricingParams;
98
+ permissions: Permissions;
99
+ targetRatioBps: BigNumber;
100
+ assets: Assets;
101
+ fundingRateState: FundingRateState;
102
+ bump: number;
103
+ tokenAccountBump: number;
104
+ };
105
+ export declare const custodyStruct: BeetStruct<Custody, Partial<Custody>>;