@sonarwatch/portfolio-plugins 0.15.29 → 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.
Files changed (104) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +3 -3
  3. package/src/Job.d.ts +1 -1
  4. package/src/plugins/abex/getVaultInfo.d.ts +1 -2
  5. package/src/plugins/abex/getVaultInfo.js +14 -17
  6. package/src/plugins/abex/getVaultInfo.js.map +1 -1
  7. package/src/plugins/abex/helpers.js +1 -1
  8. package/src/plugins/abex/helpers.js.map +1 -1
  9. package/src/plugins/cetus/index.js +6 -2
  10. package/src/plugins/cetus/index.js.map +1 -1
  11. package/src/plugins/{tokens/fetchers/solana-nfts-underlyings.d.ts → cropper/whirlpoolFetcher.d.ts} +1 -1
  12. package/src/plugins/cropper/whirlpoolFetcher.js +26 -0
  13. package/src/plugins/cropper/whirlpoolFetcher.js.map +1 -0
  14. package/src/plugins/daos/helpers.d.ts +0 -5
  15. package/src/plugins/daos/helpers.js +1 -51
  16. package/src/plugins/daos/helpers.js.map +1 -1
  17. package/src/plugins/drift-market-maker-vault/constants.d.ts +1 -0
  18. package/src/plugins/drift-market-maker-vault/constants.js +4 -1
  19. package/src/plugins/drift-market-maker-vault/constants.js.map +1 -1
  20. package/src/plugins/drift-market-maker-vault/vaultsJob.js +2 -2
  21. package/src/plugins/drift-market-maker-vault/vaultsJob.js.map +1 -1
  22. package/src/plugins/flash/helpers.js +8 -2
  23. package/src/plugins/flash/helpers.js.map +1 -1
  24. package/src/plugins/fluxbeam/poolsJob.js +25 -27
  25. package/src/plugins/fluxbeam/poolsJob.js.map +1 -1
  26. package/src/plugins/hawksight/positionsFetcher.js +3 -24
  27. package/src/plugins/hawksight/positionsFetcher.js.map +1 -1
  28. package/src/plugins/helium/getHeliumPositions.d.ts +3 -0
  29. package/src/plugins/helium/getHeliumPositions.js +53 -0
  30. package/src/plugins/helium/getHeliumPositions.js.map +1 -0
  31. package/src/plugins/helium/positionsFetcher.d.ts +3 -0
  32. package/src/{utils/misc/Memoized.js → plugins/helium/positionsFetcher.js} +15 -20
  33. package/src/plugins/helium/positionsFetcher.js.map +1 -0
  34. package/src/plugins/kamino/airdropHelpers.js +4 -9
  35. package/src/plugins/kamino/airdropHelpers.js.map +1 -1
  36. package/src/plugins/metaplex/index.js +1 -5
  37. package/src/plugins/metaplex/index.js.map +1 -1
  38. package/src/plugins/metaplex/resizableNftFetcher.d.ts +3 -0
  39. package/src/plugins/metaplex/resizableNftFetcher.js +9 -10
  40. package/src/plugins/metaplex/resizableNftFetcher.js.map +1 -1
  41. package/src/plugins/meteora/cpamm/cpammPositionsFetcher.d.ts +3 -0
  42. package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js +11 -11
  43. package/src/plugins/meteora/cpamm/cpammPositionsFetcher.js.map +1 -1
  44. package/src/plugins/meteora/cpamm/cpammV2Job.js +58 -47
  45. package/src/plugins/meteora/cpamm/cpammV2Job.js.map +1 -1
  46. package/src/plugins/meteora/index.js +0 -2
  47. package/src/plugins/meteora/index.js.map +1 -1
  48. package/src/plugins/native-stake/index.js +2 -2
  49. package/src/plugins/native-stake/index.js.map +1 -1
  50. package/src/plugins/navi/index.js +4 -2
  51. package/src/plugins/navi/index.js.map +1 -1
  52. package/src/plugins/orca/getWhirlpoolPositions.d.ts +4 -3
  53. package/src/plugins/orca/getWhirlpoolPositions.js +9 -15
  54. package/src/plugins/orca/getWhirlpoolPositions.js.map +1 -1
  55. package/src/plugins/orca/helpers.d.ts +4 -0
  56. package/src/plugins/orca/helpers.js +6 -1
  57. package/src/plugins/orca/helpers.js.map +1 -1
  58. package/src/plugins/orca/whirlpoolFetcher.d.ts +3 -0
  59. package/src/plugins/orca/whirlpoolFetcher.js +26 -0
  60. package/src/plugins/orca/whirlpoolFetcher.js.map +1 -0
  61. package/src/plugins/picasso/getPicassoPositions.d.ts +3 -0
  62. package/src/plugins/picasso/getPicassoPositions.js +45 -0
  63. package/src/plugins/picasso/getPicassoPositions.js.map +1 -0
  64. package/src/plugins/picasso/helpers.d.ts +1 -3
  65. package/src/plugins/picasso/helpers.js +1 -60
  66. package/src/plugins/picasso/helpers.js.map +1 -1
  67. package/src/plugins/picasso/positionsFetcher.d.ts +3 -0
  68. package/src/plugins/picasso/positionsFetcher.js +26 -0
  69. package/src/plugins/picasso/positionsFetcher.js.map +1 -0
  70. package/src/plugins/pumpswap/marketsJob.js +8 -3
  71. package/src/plugins/pumpswap/marketsJob.js.map +1 -1
  72. package/src/plugins/raydium/clmmFetcher.d.ts +6 -0
  73. package/src/plugins/raydium/clmmFetcher.js +119 -0
  74. package/src/plugins/raydium/clmmFetcher.js.map +1 -0
  75. package/src/plugins/texture/helpers.js +4 -9
  76. package/src/plugins/texture/helpers.js.map +1 -1
  77. package/src/plugins/tokens/fetchers/solana-native.js +11 -21
  78. package/src/plugins/tokens/fetchers/solana-native.js.map +1 -1
  79. package/src/plugins/tokens/fetchers/solana-simple.js +4 -44
  80. package/src/plugins/tokens/fetchers/solana-simple.js.map +1 -1
  81. package/src/plugins/tokens/fetchers/solana.d.ts +4 -0
  82. package/src/plugins/tokens/fetchers/solana.js +85 -104
  83. package/src/plugins/tokens/fetchers/solana.js.map +1 -1
  84. package/src/plugins/tokens/index.js +2 -4
  85. package/src/plugins/tokens/index.js.map +1 -1
  86. package/src/plugins/tokens/types.d.ts +3 -2
  87. package/src/utils/elementbuilder/AssetTokenBuilder.d.ts +2 -1
  88. package/src/utils/elementbuilder/AssetTokenBuilder.js +2 -1
  89. package/src/utils/elementbuilder/AssetTokenBuilder.js.map +1 -1
  90. package/src/utils/elementbuilder/Params.d.ts +2 -1
  91. package/src/utils/misc/MemoryCache.d.ts +6 -0
  92. package/src/utils/misc/MemoryCache.js +39 -0
  93. package/src/utils/misc/MemoryCache.js.map +1 -0
  94. package/src/utils/misc/getCachedDecimalsForToken.d.ts +1 -2
  95. package/src/utils/solana/getTokenAccountsByOwner.d.ts +4 -0
  96. package/src/utils/solana/getTokenAccountsByOwner.js +36 -0
  97. package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -0
  98. package/src/plugins/raydium/getRaydiumCLMMPositions.d.ts +0 -3
  99. package/src/plugins/raydium/getRaydiumCLMMPositions.js +0 -113
  100. package/src/plugins/raydium/getRaydiumCLMMPositions.js.map +0 -1
  101. package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js +0 -108
  102. package/src/plugins/tokens/fetchers/solana-nfts-underlyings.js.map +0 -1
  103. package/src/utils/misc/Memoized.d.ts +0 -8
  104. package/src/utils/misc/Memoized.js.map +0 -1
@@ -14,20 +14,15 @@ const web3_js_1 = require("@solana/web3.js");
14
14
  const clients_1 = require("../../utils/clients");
15
15
  const structs_1 = require("./structs");
16
16
  const constants_1 = require("./constants");
17
- const Memoized_1 = require("../../utils/misc/Memoized");
18
17
  const getParsedAccountInfo_1 = require("../../utils/solana/getParsedAccountInfo");
19
- const textureUsersMemo = {};
20
- const getMemoizedUser = (owner) => __awaiter(void 0, void 0, void 0, function* () {
21
- if (!textureUsersMemo[owner]) {
22
- textureUsersMemo[owner] = new Memoized_1.Memoized(() => __awaiter(void 0, void 0, void 0, function* () { return getUser(owner); }));
23
- }
24
- return textureUsersMemo[owner].getItem();
25
- });
26
- exports.getMemoizedUser = getMemoizedUser;
18
+ const MemoryCache_1 = require("../../utils/misc/MemoryCache");
27
19
  const getUser = (owner) => __awaiter(void 0, void 0, void 0, function* () {
28
20
  const userPk = web3_js_1.PublicKey.findProgramAddressSync([new web3_js_1.PublicKey(owner).toBytes(), Buffer.from('MONEY_LENDER_USER')], new web3_js_1.PublicKey(constants_1.lendyProgramId))[0];
29
21
  const connection = (0, clients_1.getClientSolana)();
30
22
  const account = yield (0, getParsedAccountInfo_1.getParsedAccountInfo)(connection, structs_1.userStruct, userPk);
31
23
  return (account === null || account === void 0 ? void 0 : account.pubkey.toString()) || null;
32
24
  });
25
+ const memoCollection = new MemoryCache_1.MemoryCache(getUser);
26
+ const getMemoizedUser = (owner) => __awaiter(void 0, void 0, void 0, function* () { return memoCollection.getItem(owner); });
27
+ exports.getMemoizedUser = getMemoizedUser;
33
28
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/texture/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAsD;AACtD,uCAAuC;AACvC,2CAA6C;AAC7C,wDAAqD;AACrD,kFAA+E;AAE/E,MAAM,gBAAgB,GAA+C,EAAE,CAAC;AAEjE,MAAM,eAAe,GAAG,CAC7B,KAAa,EACW,EAAE;IAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,mBAAQ,CAAgB,GAAS,EAAE,kDAC/D,OAAA,OAAO,CAAC,KAAK,CAAC,CAAA,GAAA,CACf,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3C,CAAC,CAAA,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEF,MAAM,OAAO,GAAG,CAAO,KAAa,EAA0B,EAAE;IAC9D,MAAM,MAAM,GAAG,mBAAS,CAAC,sBAAsB,CAC7C,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAClE,IAAI,mBAAS,CAAC,0BAAc,CAAC,CAC9B,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2CAAoB,EAAC,UAAU,EAAE,oBAAU,EAAE,MAAM,CAAC,CAAC;IAE3E,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,QAAQ,EAAE,KAAI,IAAI,CAAC;AAC5C,CAAC,CAAA,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/texture/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA4C;AAC5C,iDAAsD;AACtD,uCAAuC;AACvC,2CAA6C;AAC7C,kFAA+E;AAC/E,8DAA2D;AAE3D,MAAM,OAAO,GAAG,CAAO,KAAa,EAA0B,EAAE;IAC9D,MAAM,MAAM,GAAG,mBAAS,CAAC,sBAAsB,CAC7C,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAClE,IAAI,mBAAS,CAAC,0BAAc,CAAC,CAC9B,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,2CAAoB,EAAC,UAAU,EAAE,oBAAU,EAAE,MAAM,CAAC,CAAC;IAE3E,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,QAAQ,EAAE,KAAI,IAAI,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,yBAAW,CAAgB,OAAO,CAAC,CAAC;AAExD,MAAM,eAAe,GAAG,CAAO,KAAa,EAAE,EAAE,kDACrD,OAAA,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,GAAA,CAAC;AADnB,QAAA,eAAe,mBACI"}
@@ -8,35 +8,25 @@ 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 });
15
12
  const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
13
  const web3_js_1 = require("@solana/web3.js");
17
14
  const clients_1 = require("../../../utils/clients");
18
- const tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
19
- const solFactor = Math.pow(10, portfolio_core_1.solanaNetwork.native.decimals);
15
+ const ElementRegistry_1 = require("../../../utils/elementbuilder/ElementRegistry");
20
16
  const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
21
17
  const client = (0, clients_1.getClientSolana)();
22
- const ownerPubKey = new web3_js_1.PublicKey(owner);
23
- const amountLamports = yield client.getBalance(ownerPubKey);
24
- if (amountLamports === 0)
18
+ const amount = yield client.getBalance(new web3_js_1.PublicKey(owner));
19
+ if (amount === 0)
25
20
  return [];
26
- const amount = amountLamports / solFactor;
27
- const solTokenPrice = yield cache.getTokenPrice(portfolio_core_1.solanaNetwork.native.address, portfolio_core_1.NetworkId.solana);
28
- const asset = (0, tokenPriceToAssetToken_1.default)(portfolio_core_1.solanaNetwork.native.address, amount, portfolio_core_1.NetworkId.solana, solTokenPrice);
29
- const element = {
30
- type: portfolio_core_1.PortfolioElementType.multiple,
31
- networkId: portfolio_core_1.NetworkId.solana,
32
- platformId: portfolio_core_1.walletTokensPlatformId,
21
+ const elementRegistry = new ElementRegistry_1.ElementRegistry(portfolio_core_1.NetworkId.solana, portfolio_core_1.walletTokensPlatformId);
22
+ const element = elementRegistry.addElementMultiple({
33
23
  label: 'Wallet',
34
- value: asset.value,
35
- data: {
36
- assets: [asset],
37
- },
38
- };
39
- return [element];
24
+ });
25
+ element.addAsset({
26
+ address: portfolio_core_1.solanaNetwork.native.address,
27
+ amount,
28
+ });
29
+ return elementRegistry.getElements(cache);
40
30
  });
41
31
  const fetcher = {
42
32
  id: `${portfolio_core_1.walletTokensPlatformId}-solana-native`,
@@ -1 +1 @@
1
- {"version":3,"file":"solana-native.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-native.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,+DAMoC;AACpC,6CAA4C;AAG5C,oDAAyD;AACzD,wGAAgF;AAEhF,MAAM,SAAS,GAAG,SAAA,EAAE,EAAI,8BAAa,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAC;AAEtD,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC1C,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,CAC7C,8BAAa,CAAC,MAAM,CAAC,OAAO,EAC5B,0BAAS,CAAC,MAAM,CACjB,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,gCAAsB,EAClC,8BAAa,CAAC,MAAM,CAAC,OAAO,EAC5B,MAAM,EACN,0BAAS,CAAC,MAAM,EAChB,aAAa,CACd,CAAC;IACF,MAAM,OAAO,GAA6B;QACxC,IAAI,EAAE,qCAAoB,CAAC,QAAQ;QACnC,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,UAAU,EAAE,uCAAsB;QAClC,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE;YACJ,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB;KACF,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,uCAAsB,gBAAgB;IAC7C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"solana-native.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-native.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAIoC;AACpC,6CAA4C;AAG5C,oDAAyD;AACzD,mFAAgF;AAEhF,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5B,MAAM,eAAe,GAAG,IAAI,iCAAe,CACzC,0BAAS,CAAC,MAAM,EAChB,uCAAsB,CACvB,CAAC;IAEF,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAkB,CAAC;QACjD,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC;QACf,OAAO,EAAE,8BAAa,CAAC,MAAM,CAAC,OAAO;QACrC,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,uCAAsB,gBAAgB;IAC7C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
@@ -8,53 +8,13 @@ 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 });
15
12
  const portfolio_core_1 = require("@sonarwatch/portfolio-core");
16
- const web3_js_1 = require("@solana/web3.js");
17
- const clients_1 = require("../../../utils/clients");
18
- const solana_1 = require("../../../utils/solana");
19
- const tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
20
- const zeroDecimalMints_1 = require("../../../utils/solana/zeroDecimalMints");
13
+ const getTokenAccountsByOwner_1 = require("../../../utils/solana/getTokenAccountsByOwner");
14
+ const solana_1 = require("./solana");
21
15
  const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
22
- const client = yield (0, clients_1.getClientSolana)();
23
- const promises = [
24
- client.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
25
- programId: solana_1.solanaTokenPidPk,
26
- }),
27
- client.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(owner), {
28
- programId: solana_1.solanaToken2022PidPk,
29
- }),
30
- ];
31
- const res = yield Promise.all(promises);
32
- const accounts = [...res[0].value, ...res[1].value].filter((acc) => acc.account.data.parsed.info.tokenAmount.uiAmount !== 0 &&
33
- (acc.account.data.parsed.info.tokenAmount.decimals !== 0 ||
34
- zeroDecimalMints_1.zeroDecimalMints.has(acc.account.data.parsed.info.mint)));
35
- const tokenPrices = yield cache.getTokenPricesAsMap(accounts.map((a) => a.account.data.parsed.info.mint), portfolio_core_1.NetworkId.solana);
36
- const tokenAssets = [];
37
- accounts.forEach((acc) => {
38
- const { mint, tokenAmount } = acc.account.data.parsed.info;
39
- const { uiAmount: amount } = tokenAmount;
40
- const tokenPrice = tokenPrices.get(mint);
41
- if (tokenPrice && tokenPrice.platformId !== portfolio_core_1.walletTokensPlatformId)
42
- return;
43
- tokenAssets.push(Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(mint, amount, portfolio_core_1.NetworkId.solana, tokenPrice)), { ref: acc.pubkey.toString(), link: tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.link, sourceRefs: tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.sourceRefs }));
44
- });
45
- if (tokenAssets.length === 0)
46
- return [];
47
- const element = {
48
- type: portfolio_core_1.PortfolioElementType.multiple,
49
- networkId: portfolio_core_1.NetworkId.solana,
50
- platformId: portfolio_core_1.walletTokensPlatformId,
51
- label: 'Wallet',
52
- value: (0, portfolio_core_1.getUsdValueSum)(tokenAssets.map((a) => a.value)),
53
- data: {
54
- assets: tokenAssets,
55
- },
56
- };
57
- return [element];
16
+ const tokenAccounts = yield (0, getTokenAccountsByOwner_1.getTokenAccountsByOwner)(owner);
17
+ return (0, solana_1.getSolanaTokens)(true)(tokenAccounts, cache);
58
18
  });
59
19
  const fetcher = {
60
20
  id: `${portfolio_core_1.walletTokensPlatformId}-solana-simple`,
@@ -1 +1 @@
1
- {"version":3,"file":"solana-simple.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-simple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solana-simple.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana-simple.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAA+E;AAI/E,2FAAwF;AACxF,qCAA2C;AAE3C,MAAM,QAAQ,GAAoB,CAAO,KAAa,EAAE,KAAY,EAAE,EAAE;IACtE,MAAM,aAAa,GAAG,MAAM,IAAA,iDAAuB,EAAC,KAAK,CAAC,CAAC;IAE3D,OAAO,IAAA,wBAAe,EAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC,CAAA,CAAC;AAEF,MAAM,OAAO,GAAY;IACvB,EAAE,EAAE,GAAG,uCAAsB,gBAAgB;IAC7C,SAAS,EAAE,0BAAS,CAAC,MAAM;IAC3B,QAAQ;CACT,CAAC;AAEF,kBAAe,OAAO,CAAC"}
@@ -1,3 +1,7 @@
1
+ import { PortfolioElement } from '@sonarwatch/portfolio-core';
1
2
  import { Fetcher } from '../../../Fetcher';
3
+ import { Cache } from '../../../Cache';
4
+ import { ParsedAccount, TokenAccount } from '../../../utils/solana';
5
+ export declare const getSolanaTokens: (simple?: boolean) => (tokenAccounts: ParsedAccount<TokenAccount>[], cache: Cache) => Promise<PortfolioElement[]>;
2
6
  declare const fetcher: Fetcher;
3
7
  export default fetcher;
@@ -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 tokenPriceToAssetToken_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetToken"));
19
- const heliusAssetToAssetCollectible_1 = require("../../../utils/solana/das/heliusAssetToAssetCollectible");
20
- const getAssetsByOwnerDas_1 = require("../../../utils/solana/das/getAssetsByOwnerDas");
21
- const isHeliusFungibleAsset_1 = require("../../../utils/solana/das/isHeliusFungibleAsset");
22
- const getSolanaDasEndpoint_1 = __importDefault(require("../../../utils/clients/getSolanaDasEndpoint"));
23
- const tokenPriceToAssetTokens_1 = __importDefault(require("../../../utils/misc/tokenPriceToAssetTokens"));
24
- const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
25
- var _a;
26
- const dasEndpoint = (0, getSolanaDasEndpoint_1.default)();
27
- const items = yield (0, getAssetsByOwnerDas_1.getAssetsByOwnerDas)(dasEndpoint, owner, {
28
- showNativeBalance: false,
29
- showGrandTotal: false,
30
- showInscription: false,
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 = yield cache.getTokenYieldsAsMap(fungibleAddresses, portfolio_core_1.NetworkId.solana);
39
- const nftAssets = [];
40
- const tokenAssets = [];
41
- const liquiditiesByTag = {};
42
- for (let i = 0; i < items.length; i++) {
43
- const asset = items[i];
44
- const isFungible = (0, isHeliusFungibleAsset_1.isHeliusFungibleAsset)(asset);
45
- const address = asset.id;
46
- const tokenPrice = isFungible ? tokenPrices.get(address) : undefined;
47
- const tokenYield = isFungible ? tokenYields.get(address) : undefined;
48
- const amount = asset.token_info
49
- ? (0, bignumber_js_1.default)(asset.token_info.balance)
50
- .div(Math.pow(10, asset.token_info.decimals))
51
- .toNumber()
52
- : 1;
53
- // If it's an LP Token
54
- if (tokenPrice && tokenPrice.platformId !== portfolio_core_1.walletTokensPlatformId) {
55
- const assets = (0, tokenPriceToAssetTokens_1.default)(address, amount, portfolio_core_1.NetworkId.solana, tokenPrice);
56
- const liquidity = {
57
- assets,
58
- assetsValue: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
59
- rewardAssets: [],
60
- rewardAssetsValue: 0,
61
- value: (0, portfolio_core_1.getUsdValueSum)(assets.map((a) => a.value)),
62
- yields: tokenYield ? [tokenYield.yield] : [],
63
- name: tokenPrice.liquidityName,
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
- if (!liquiditiesByTag[tag]) {
67
- liquiditiesByTag[tag] = [];
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
- liquiditiesByTag[tag].push(liquidity);
70
- }
71
- // If it's a regular token
72
- else if (tokenPrice && tokenPrice.platformId === portfolio_core_1.walletTokensPlatformId) {
73
- tokenAssets.push(Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(address, amount, portfolio_core_1.NetworkId.solana, tokenPrice, undefined, undefined, undefined, tokenYield)), { ref: (_a = asset.token_info) === null || _a === void 0 ? void 0 : _a.associated_token_address, link: tokenPrice.link, sourceRefs: tokenPrice.sourceRefs }));
74
- }
75
- // If it's a NFT
76
- else {
77
- const nftAsset = (0, heliusAssetToAssetCollectible_1.heliusAssetToAssetCollectible)(asset);
78
- if (nftAsset)
79
- nftAssets.push(nftAsset);
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 elements = [];
83
- if (nftAssets.length !== 0) {
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":"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"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/tokens/fetchers/solana.ts"],"names":[],"mappings":"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"}
@@ -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 solana_nfts_underlyings_1 = __importDefault(require("./fetchers/solana-nfts-underlyings"));
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
- solana_nfts_underlyings_1.default,
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;AAKxE,kEAA0C;AAC1C,6DAA4C;AAC5C,yDAAwC;AACxC,mEAAiD;AACjD,yDAAwC;AACxC,iEAAgD;AAChD,+DAA8C;AAC9C,6EAA2D;AAC3D,iGAA8E;AAC9E,0CAA0D;AAC1D,0EAAkD;AAElD,6EAA2D;AA2BlD,8BA3BF,uBAAmB,CA2BE;AAzBf,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,gBAAa;IACb,uBAAmB;IACnB,iCAA4B;IAC5B,aAAU;IACV,kBAAc;IACd,aAAU;IACV,iBAAc;IACd,GAAG,eAAW;CACf,CAAC"}
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 { PortfolioAssetCollectible, PortfolioElement } from '@sonarwatch/portfolio-core';
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 NftFetcher = (cache: Cache, nfts: PortfolioAssetCollectible[]) => Promise<PortfolioElement[]>;
39
+ export type TokenFetcher = (potentialTokens: ParsedAccount<TokenAccount>[], cache: Cache) => Promise<PortfolioElement[]>;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
2
2
  /// <reference types="jito-ts/node_modules/@solana/web3.js" />
3
- import { NetworkIdType, PortfolioAsset, PortfolioAssetAttributes, SourceRef, TokenPriceMap } from '@sonarwatch/portfolio-core';
3
+ import { NetworkIdType, PortfolioAsset, PortfolioAssetAttributes, SourceRef, TokenPriceMap, TokenYield } from '@sonarwatch/portfolio-core';
4
4
  import BigNumber from 'bignumber.js';
5
5
  import { PublicKey } from '@solana/web3.js';
6
6
  import { AssetBuilder } from './AssetBuilder';
@@ -13,6 +13,7 @@ export declare class AssetTokenBuilder extends AssetBuilder {
13
13
  sourceRefs?: SourceRef[];
14
14
  ref?: string | PublicKey;
15
15
  link?: string;
16
+ tokenYield?: TokenYield;
16
17
  constructor(params: PortfolioAssetTokenParams);
17
18
  tokenAddresses(): string[];
18
19
  getUnderlyings(networkId: NetworkIdType, tokenPrices: TokenPriceMap): PortfolioAsset[];
@@ -18,6 +18,7 @@ class AssetTokenBuilder extends AssetBuilder_1.AssetBuilder {
18
18
  this.ref = params.ref;
19
19
  this.sourceRefs = params.sourceRefs;
20
20
  this.link = params.link;
21
+ this.tokenYield = params.tokenYield;
21
22
  }
22
23
  tokenAddresses() {
23
24
  return [this.address];
@@ -43,7 +44,7 @@ class AssetTokenBuilder extends AssetBuilder_1.AssetBuilder {
43
44
  return null;
44
45
  if (!this.alreadyShifted && tokenPrice)
45
46
  amount = amount.dividedBy(Math.pow(10, tokenPrice.decimals));
46
- return Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(this.address, amount.toNumber(), networkId, tokenPrice, undefined, this.attributes, this.link)), { sourceRefs: this.sourceRefs, ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString() });
47
+ return Object.assign(Object.assign({}, (0, tokenPriceToAssetToken_1.default)(this.address, amount.toNumber(), networkId, tokenPrice, undefined, this.attributes, this.link, this.tokenYield)), { sourceRefs: this.sourceRefs, ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString() });
47
48
  }
48
49
  }
49
50
  exports.AssetTokenBuilder = AssetTokenBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetTokenBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetTokenBuilder.ts"],"names":[],"mappings":";;;;;;AAOA,gEAAqC;AAErC,4FAAoE;AACpE,8FAAsE;AACtE,iDAA8C;AAG9C,MAAa,iBAAkB,SAAQ,2BAAY;IASjD,YAAY,MAAiC;QAC3C,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,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;QACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,cAAc,CACZ,SAAwB,EACxB,WAA0B;QAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,OAAO,IAAA,iCAAuB,EAC5B,UAAU,CAAC,OAAO,EAClB,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,WAA0B;;QAE1B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,UAAU;YACpC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,uCACK,IAAA,gCAAsB,EACvB,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,CACV,KACD,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,IACzB;IACJ,CAAC;CACF;AA3ED,8CA2EC"}
1
+ {"version":3,"file":"AssetTokenBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/AssetTokenBuilder.ts"],"names":[],"mappings":";;;;;;AAQA,gEAAqC;AAErC,4FAAoE;AACpE,8FAAsE;AACtE,iDAA8C;AAG9C,MAAa,iBAAkB,SAAQ,2BAAY;IAUjD,YAAY,MAAiC;QAC3C,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,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC;QACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,cAAc,CACZ,SAAwB,EACxB,WAA0B;QAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,OAAO,IAAA,iCAAuB,EAC5B,UAAU,CAAC,OAAO,EAClB,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,WAA0B;;QAE1B,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,UAAU;YACpC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAA,EAAE,EAAI,UAAU,CAAC,QAAQ,CAAA,CAAC,CAAC;QAEvD,uCACK,IAAA,gCAAsB,EACvB,IAAI,CAAC,OAAO,EACZ,MAAM,CAAC,QAAQ,EAAE,EACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,CAChB,KACD,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,IACzB;IACJ,CAAC;CACF;AA9ED,8CA8EC"}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
2
2
  /// <reference types="jito-ts/node_modules/@solana/web3.js" />
3
- import { CrossLevPosition, IsoLevPosition, PortfolioAssetAttributes, PortfolioElementLabel, PortfolioElementTypeType, SourceRef, UsdValue } from '@sonarwatch/portfolio-core';
3
+ import { CrossLevPosition, IsoLevPosition, PortfolioAssetAttributes, PortfolioElementLabel, PortfolioElementTypeType, SourceRef, TokenYield, UsdValue } from '@sonarwatch/portfolio-core';
4
4
  import { PublicKey } from '@solana/web3.js';
5
5
  import BigNumber from 'bignumber.js';
6
6
  export type Params = {
@@ -70,6 +70,7 @@ export type PortfolioAssetTokenParams = {
70
70
  sourceRefs?: SourceRef[];
71
71
  ref?: string | PublicKey;
72
72
  link?: string;
73
+ tokenYield?: TokenYield;
73
74
  };
74
75
  export type TradeParams = {
75
76
  inputAsset: Omit<PortfolioAssetTokenParams, 'amount'> & {
@@ -0,0 +1,6 @@
1
+ export declare class MemoryCache<T> {
2
+ private readonly fetch;
3
+ private cache;
4
+ constructor(fetch: (owner: string) => Promise<T>, ttl?: number, max?: number);
5
+ getItem: (key: string) => Promise<T>;
6
+ }
@@ -0,0 +1,39 @@
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
+ exports.MemoryCache = void 0;
16
+ const ttlcache_1 = __importDefault(require("@isaacs/ttlcache"));
17
+ const defaultTtl = 600;
18
+ const defaultMax = 100;
19
+ // T is the type of item memoized
20
+ class MemoryCache {
21
+ constructor(fetch, ttl = defaultTtl, max = defaultMax) {
22
+ this.getItem = (key) => __awaiter(this, void 0, void 0, function* () {
23
+ let item;
24
+ if (!this.cache.has(key)) {
25
+ item = yield this.fetch(key);
26
+ this.cache.set(key, item);
27
+ return item;
28
+ }
29
+ return this.cache.get(key);
30
+ });
31
+ this.fetch = fetch;
32
+ this.cache = new ttlcache_1.default({
33
+ max,
34
+ ttl,
35
+ });
36
+ }
37
+ }
38
+ exports.MemoryCache = MemoryCache;
39
+ //# sourceMappingURL=MemoryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryCache.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/MemoryCache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAwC;AAExC,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,iCAAiC;AACjC,MAAa,WAAW;IAItB,YACE,KAAoC,EACpC,MAAc,UAAU,EACxB,MAAc,UAAU;QAS1B,YAAO,GAAG,CAAO,GAAW,EAAE,EAAE;YAC9B,IAAI,IAAO,CAAC;YAEZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAClC,CAAC,CAAA,CAAC;QAjBA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAQ,CAAC;YACxB,GAAG;YACH,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;CAaF;AA3BD,kCA2BC"}
@@ -1,6 +1,6 @@
1
1
  import { NetworkIdType } from '@sonarwatch/portfolio-core';
2
2
  import { Cache } from '../../Cache';
3
- type Decimal = number | null;
3
+ export type Decimal = number | null;
4
4
  /**
5
5
  * Return the decimals of a token on any network using RPC calls or TokenList.
6
6
  *
@@ -11,4 +11,3 @@ type Decimal = number | null;
11
11
  * @returns The number of decimals or undefined if unsuccessful request.
12
12
  */
13
13
  export declare function getCachedDecimalsForToken(cache: Cache, address: string, networkId: NetworkIdType): Promise<Decimal>;
14
- export {};
@@ -0,0 +1,4 @@
1
+ import { TokenAccount } from './structs';
2
+ import { ParsedAccount } from './types';
3
+ export declare const getTokenAccountsByOwner: (owner: string) => Promise<ParsedAccount<TokenAccount>[]>;
4
+ export declare const getTokenAccountsByOwnerMemo: (owner: string) => Promise<ParsedAccount<TokenAccount>[]>;