@sonarwatch/portfolio-plugins 0.0.1

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 (150) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +11 -0
  3. package/package.json +28 -0
  4. package/src/generators/plugin/generator.d.ts +4 -0
  5. package/src/generators/plugin/generator.js +46 -0
  6. package/src/generators/plugin/generator.js.map +1 -0
  7. package/src/index.d.ts +3 -0
  8. package/src/index.js +19 -0
  9. package/src/index.js.map +1 -0
  10. package/src/plugins/marginfi/constants.d.ts +7 -0
  11. package/src/plugins/marginfi/constants.js +13 -0
  12. package/src/plugins/marginfi/constants.js.map +1 -0
  13. package/src/plugins/marginfi/fetcherExecutor.d.ts +3 -0
  14. package/src/plugins/marginfi/fetcherExecutor.js +90 -0
  15. package/src/plugins/marginfi/fetcherExecutor.js.map +1 -0
  16. package/src/plugins/marginfi/filters.d.ts +3 -0
  17. package/src/plugins/marginfi/filters.js +41 -0
  18. package/src/plugins/marginfi/filters.js.map +1 -0
  19. package/src/plugins/marginfi/helpers.d.ts +9 -0
  20. package/src/plugins/marginfi/helpers.js +49 -0
  21. package/src/plugins/marginfi/helpers.js.map +1 -0
  22. package/src/plugins/marginfi/index.d.ts +3 -0
  23. package/src/plugins/marginfi/index.js +21 -0
  24. package/src/plugins/marginfi/index.js.map +1 -0
  25. package/src/plugins/marginfi/jobExecutor.d.ts +3 -0
  26. package/src/plugins/marginfi/jobExecutor.js +24 -0
  27. package/src/plugins/marginfi/jobExecutor.js.map +1 -0
  28. package/src/plugins/marginfi/structs/Bank.d.ts +72 -0
  29. package/src/plugins/marginfi/structs/Bank.js +74 -0
  30. package/src/plugins/marginfi/structs/Bank.js.map +1 -0
  31. package/src/plugins/marginfi/structs/MarginfiAccount.d.ts +26 -0
  32. package/src/plugins/marginfi/structs/MarginfiAccount.js +27 -0
  33. package/src/plugins/marginfi/structs/MarginfiAccount.js.map +1 -0
  34. package/src/plugins/marginfi/structs/common.d.ts +6 -0
  35. package/src/plugins/marginfi/structs/common.js +7 -0
  36. package/src/plugins/marginfi/structs/common.js.map +1 -0
  37. package/src/plugins/marginfi/types.d.ts +6 -0
  38. package/src/plugins/marginfi/types.js +3 -0
  39. package/src/plugins/marginfi/types.js.map +1 -0
  40. package/src/plugins/marinade/constants.d.ts +6 -0
  41. package/src/plugins/marinade/constants.js +12 -0
  42. package/src/plugins/marinade/constants.js.map +1 -0
  43. package/src/plugins/marinade/fetcherExecutor.d.ts +3 -0
  44. package/src/plugins/marinade/fetcherExecutor.js +50 -0
  45. package/src/plugins/marinade/fetcherExecutor.js.map +1 -0
  46. package/src/plugins/marinade/filters.d.ts +2 -0
  47. package/src/plugins/marinade/filters.js +15 -0
  48. package/src/plugins/marinade/filters.js.map +1 -0
  49. package/src/plugins/marinade/index.d.ts +3 -0
  50. package/src/plugins/marinade/index.js +21 -0
  51. package/src/plugins/marinade/index.js.map +1 -0
  52. package/src/plugins/marinade/jobExecutor.d.ts +3 -0
  53. package/src/plugins/marinade/jobExecutor.js +14 -0
  54. package/src/plugins/marinade/jobExecutor.js.map +1 -0
  55. package/src/plugins/marinade/structs.d.ts +12 -0
  56. package/src/plugins/marinade/structs.js +14 -0
  57. package/src/plugins/marinade/structs.js.map +1 -0
  58. package/src/plugins/raydium/constants.d.ts +2 -0
  59. package/src/plugins/raydium/constants.js +6 -0
  60. package/src/plugins/raydium/constants.js.map +1 -0
  61. package/src/plugins/raydium/fetcherExecutor.d.ts +3 -0
  62. package/src/plugins/raydium/fetcherExecutor.js +34 -0
  63. package/src/plugins/raydium/fetcherExecutor.js.map +1 -0
  64. package/src/plugins/raydium/index.d.ts +3 -0
  65. package/src/plugins/raydium/index.js +21 -0
  66. package/src/plugins/raydium/index.js.map +1 -0
  67. package/src/plugins/raydium/jobExecutor.d.ts +3 -0
  68. package/src/plugins/raydium/jobExecutor.js +14 -0
  69. package/src/plugins/raydium/jobExecutor.js.map +1 -0
  70. package/src/plugins/wallettokens/constants.d.ts +4 -0
  71. package/src/plugins/wallettokens/constants.js +9 -0
  72. package/src/plugins/wallettokens/constants.js.map +1 -0
  73. package/src/plugins/wallettokens/helpers.d.ts +3 -0
  74. package/src/plugins/wallettokens/helpers.js +73 -0
  75. package/src/plugins/wallettokens/helpers.js.map +1 -0
  76. package/src/plugins/wallettokens/index.d.ts +3 -0
  77. package/src/plugins/wallettokens/index.js +13 -0
  78. package/src/plugins/wallettokens/index.js.map +1 -0
  79. package/src/plugins/wallettokens/jobExecutors/solana.d.ts +3 -0
  80. package/src/plugins/wallettokens/jobExecutors/solana.js +36 -0
  81. package/src/plugins/wallettokens/jobExecutors/solana.js.map +1 -0
  82. package/src/plugins/wallettokens/types.d.ts +9 -0
  83. package/src/plugins/wallettokens/types.js +3 -0
  84. package/src/plugins/wallettokens/types.js.map +1 -0
  85. package/src/utils/clients/constants.d.ts +4 -0
  86. package/src/utils/clients/constants.js +23 -0
  87. package/src/utils/clients/constants.js.map +1 -0
  88. package/src/utils/clients/getClientAptos.d.ts +2 -0
  89. package/src/utils/clients/getClientAptos.js +15 -0
  90. package/src/utils/clients/getClientAptos.js.map +1 -0
  91. package/src/utils/clients/getClientSolana.d.ts +2 -0
  92. package/src/utils/clients/getClientSolana.js +17 -0
  93. package/src/utils/clients/getClientSolana.js.map +1 -0
  94. package/src/utils/clients/getClientSui.d.ts +2 -0
  95. package/src/utils/clients/getClientSui.js +17 -0
  96. package/src/utils/clients/getClientSui.js.map +1 -0
  97. package/src/utils/clients/getEvmClient.d.ts +3 -0
  98. package/src/utils/clients/getEvmClient.js +21 -0
  99. package/src/utils/clients/getEvmClient.js.map +1 -0
  100. package/src/utils/clients/getEvmClients.d.ts +3 -0
  101. package/src/utils/clients/getEvmClients.js +13 -0
  102. package/src/utils/clients/getEvmClients.js.map +1 -0
  103. package/src/utils/clients/index.d.ts +6 -0
  104. package/src/utils/clients/index.js +19 -0
  105. package/src/utils/clients/index.js.map +1 -0
  106. package/src/utils/clients/urlToRpcEndpoint.d.ts +2 -0
  107. package/src/utils/clients/urlToRpcEndpoint.js +19 -0
  108. package/src/utils/clients/urlToRpcEndpoint.js.map +1 -0
  109. package/src/utils/misc/getBasicAuthHeaders.d.ts +3 -0
  110. package/src/utils/misc/getBasicAuthHeaders.js +13 -0
  111. package/src/utils/misc/getBasicAuthHeaders.js.map +1 -0
  112. package/src/utils/misc/shuffleArray.d.ts +1 -0
  113. package/src/utils/misc/shuffleArray.js +16 -0
  114. package/src/utils/misc/shuffleArray.js.map +1 -0
  115. package/src/utils/misc/sleep.d.ts +1 -0
  116. package/src/utils/misc/sleep.js +12 -0
  117. package/src/utils/misc/sleep.js.map +1 -0
  118. package/src/utils/misc/tokenPriceToAssetToken.d.ts +2 -0
  119. package/src/utils/misc/tokenPriceToAssetToken.js +18 -0
  120. package/src/utils/misc/tokenPriceToAssetToken.js.map +1 -0
  121. package/src/utils/solana/beets/buffers.d.ts +13 -0
  122. package/src/utils/solana/beets/buffers.js +28 -0
  123. package/src/utils/solana/beets/buffers.js.map +1 -0
  124. package/src/utils/solana/beets/helpers.d.ts +1 -0
  125. package/src/utils/solana/beets/helpers.js +5 -0
  126. package/src/utils/solana/beets/helpers.js.map +1 -0
  127. package/src/utils/solana/beets/numbers.d.ts +16 -0
  128. package/src/utils/solana/beets/numbers.js +62 -0
  129. package/src/utils/solana/beets/numbers.js.map +1 -0
  130. package/src/utils/solana/constants.d.ts +2 -0
  131. package/src/utils/solana/constants.js +6 -0
  132. package/src/utils/solana/constants.js.map +1 -0
  133. package/src/utils/solana/getParsedProgramAccounts.d.ts +3 -0
  134. package/src/utils/solana/getParsedProgramAccounts.js +13 -0
  135. package/src/utils/solana/getParsedProgramAccounts.js.map +1 -0
  136. package/src/utils/solana/getProgramAccountsSafe.d.ts +2 -0
  137. package/src/utils/solana/getProgramAccountsSafe.js +21 -0
  138. package/src/utils/solana/getProgramAccountsSafe.js.map +1 -0
  139. package/src/utils/solana/getTokenAccountsByOwner.d.ts +2 -0
  140. package/src/utils/solana/getTokenAccountsByOwner.js +22 -0
  141. package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -0
  142. package/src/utils/solana/index.d.ts +8 -0
  143. package/src/utils/solana/index.js +12 -0
  144. package/src/utils/solana/index.js.map +1 -0
  145. package/src/utils/solana/structs.d.ts +32 -0
  146. package/src/utils/solana/structs.js +35 -0
  147. package/src/utils/solana/structs.js.map +1 -0
  148. package/src/utils/solana/types.d.ts +7 -0
  149. package/src/utils/solana/types.js +3 -0
  150. package/src/utils/solana/types.js.map +1 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.marginfiAccountStruct = exports.lendingAccountStruct = exports.balanceStruct = 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
+ const common_1 = require("./common");
8
+ exports.balanceStruct = new beet_1.BeetStruct([
9
+ ['active', beet_1.u8],
10
+ ['bankPk', beet_solana_1.publicKey],
11
+ ['ignore', (0, beet_1.uniformFixedSizeArray)(beet_1.u8, 7)],
12
+ ['assetShares', common_1.wrappedI80F48Struct],
13
+ ['liabilityShares', common_1.wrappedI80F48Struct],
14
+ ['padding', (0, beet_1.uniformFixedSizeArray)((0, solana_1.blob)(8), 4)],
15
+ ], (args) => args);
16
+ exports.lendingAccountStruct = new beet_1.FixableBeetStruct([
17
+ ['balances', (0, beet_1.uniformFixedSizeArray)(exports.balanceStruct, 16)],
18
+ ['padding', (0, beet_1.uniformFixedSizeArray)((0, solana_1.blob)(8), 8)],
19
+ ], (args) => args);
20
+ exports.marginfiAccountStruct = new beet_1.FixableBeetStruct([
21
+ ['padding1', (0, solana_1.blob)(8)],
22
+ ['group', beet_solana_1.publicKey],
23
+ ['authority', beet_solana_1.publicKey],
24
+ ['lendingAccount', exports.lendingAccountStruct],
25
+ ['padding', (0, beet_1.uniformFixedSizeArray)((0, solana_1.blob)(8), 64)],
26
+ ], (args) => args);
27
+ //# sourceMappingURL=MarginfiAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarginfiAccount.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/marginfi/structs/MarginfiAccount.ts"],"names":[],"mappings":";;;AAAA,oDAKmC;AACnC,kEAA6D;AAE7D,kDAA6C;AAC7C,qCAA8D;AAWjD,QAAA,aAAa,GAAG,IAAI,iBAAU,CACzC;IACE,CAAC,QAAQ,EAAE,SAAE,CAAC;IACd,CAAC,QAAQ,EAAE,uBAAS,CAAC;IACrB,CAAC,QAAQ,EAAE,IAAA,4BAAqB,EAAC,SAAE,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC,aAAa,EAAE,4BAAmB,CAAC;IACpC,CAAC,iBAAiB,EAAE,4BAAmB,CAAC;IACxC,CAAC,SAAS,EAAE,IAAA,4BAAqB,EAAC,IAAA,aAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAe,CAC1B,CAAC;AAOW,QAAA,oBAAoB,GAAG,IAAI,wBAAiB,CACvD;IACE,CAAC,UAAU,EAAE,IAAA,4BAAqB,EAAC,qBAAa,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC,SAAS,EAAE,IAAA,4BAAqB,EAAC,IAAA,aAAI,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAsB,CACjC,CAAC;AAUW,QAAA,qBAAqB,GAAG,IAAI,wBAAiB,CACxD;IACE,CAAC,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACrB,CAAC,OAAO,EAAE,uBAAS,CAAC;IACpB,CAAC,WAAW,EAAE,uBAAS,CAAC;IACxB,CAAC,gBAAgB,EAAE,4BAAoB,CAAC;IACxC,CAAC,SAAS,EAAE,IAAA,4BAAqB,EAAC,IAAA,aAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAChD,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAuB,CAClC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { BeetStruct } from '@metaplex-foundation/beet';
2
+ import BigNumber from 'bignumber.js';
3
+ export type WrappedI80F48 = {
4
+ value: BigNumber;
5
+ };
6
+ export declare const wrappedI80F48Struct: BeetStruct<WrappedI80F48, Partial<WrappedI80F48>>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrappedI80F48Struct = void 0;
4
+ const beet_1 = require("@metaplex-foundation/beet");
5
+ const solana_1 = require("../../../utils/solana");
6
+ exports.wrappedI80F48Struct = new beet_1.BeetStruct([['value', solana_1.i128]], (args) => args);
7
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/marginfi/structs/common.ts"],"names":[],"mappings":";;;AAAA,oDAAuD;AAEvD,kDAA6C;AAMhC,QAAA,mBAAmB,GAAG,IAAI,iBAAU,CAC/C,CAAC,CAAC,OAAO,EAAE,aAAI,CAAC,CAAC,EACjB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAqB,CAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { Bank } from './structs/Bank';
3
+ export type BankInfo = Bank & {
4
+ dividedAssetShareValue: BigNumber;
5
+ dividedLiabilityShareValue: BigNumber;
6
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marginfi/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import BigNumber from 'bignumber.js';
3
+ export declare const platformId = "marinade";
4
+ export declare const cachePrefix = "marinade";
5
+ export declare const marinadeTicketProgramId: PublicKey;
6
+ export declare const solFactor: BigNumber;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solFactor = exports.marinadeTicketProgramId = exports.cachePrefix = exports.platformId = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
7
+ const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
8
+ exports.platformId = 'marinade';
9
+ exports.cachePrefix = 'marinade';
10
+ exports.marinadeTicketProgramId = new web3_js_1.PublicKey('MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD');
11
+ exports.solFactor = new bignumber_js_1.default(Math.pow(10, portfolio_core_1.solanaNetwork.native.decimals));
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/constants.ts"],"names":[],"mappings":";;;;AAAA,6CAA4C;AAC5C,+DAA2D;AAC3D,wEAAqC;AAExB,QAAA,UAAU,GAAG,UAAU,CAAC;AACxB,QAAA,WAAW,GAAG,UAAU,CAAC;AACzB,QAAA,uBAAuB,GAAG,IAAI,mBAAS,CAClD,6CAA6C,CAC9C,CAAC;AACW,QAAA,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAA,EAAE,EAAI,8BAAa,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FetcherExecutor } from '@sonarwatch/portfolio-core';
2
+ declare const fetcherExecutor: FetcherExecutor;
3
+ export default fetcherExecutor;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
5
+ const solana_1 = require("../../utils/solana");
6
+ const constants_1 = require("./constants");
7
+ const structs_1 = require("./structs");
8
+ const filters_1 = require("./filters");
9
+ const clients_1 = require("../../utils/clients");
10
+ const fetcherExecutor = (owner, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
11
+ const connection = (0, clients_1.getClientSolana)();
12
+ const tickets = yield (0, solana_1.getParsedProgramAccounts)(connection, structs_1.ticketStruct, constants_1.marinadeTicketProgramId, (0, filters_1.ticketFilters)(owner));
13
+ if (tickets.length === 0)
14
+ return [];
15
+ const assets = [];
16
+ const { tokenPriceCache } = context;
17
+ for (let i = 0; i < tickets.length; i += 1) {
18
+ const ticket = tickets[i];
19
+ const amount = ticket.lamportsAmount.div(constants_1.solFactor).toNumber();
20
+ const tokenPrice = yield tokenPriceCache.get(portfolio_core_1.solanaNativeAddress, portfolio_core_1.NetworkId.solana);
21
+ const price = tokenPrice ? tokenPrice.price : null;
22
+ const value = price ? price * amount : null;
23
+ const asset = {
24
+ type: portfolio_core_1.PortfolioAssetType.token,
25
+ networkId: portfolio_core_1.NetworkId.solana,
26
+ value,
27
+ data: {
28
+ address: portfolio_core_1.solanaNativeAddress,
29
+ price,
30
+ amount,
31
+ },
32
+ };
33
+ assets.push(asset);
34
+ }
35
+ if (assets.length === 0)
36
+ return [];
37
+ const element = {
38
+ type: portfolio_core_1.PortfolioElementType.multiple,
39
+ networkId: portfolio_core_1.NetworkId.solana,
40
+ platformId: constants_1.platformId,
41
+ label: 'Rewards',
42
+ value: null,
43
+ data: {
44
+ assets,
45
+ },
46
+ };
47
+ return [element];
48
+ });
49
+ exports.default = fetcherExecutor;
50
+ //# sourceMappingURL=fetcherExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcherExecutor.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/fetcherExecutor.ts"],"names":[],"mappings":";;;AAAA,+DAUoC;AACpC,+CAA8D;AAC9D,2CAA6E;AAC7E,uCAAyC;AACzC,uCAA0C;AAC1C,iDAAsD;AAEtD,MAAM,eAAe,GAAoB,CACvC,KAAa,EACb,OAAgB,EAChB,EAAE;IACF,MAAM,UAAU,GAAG,IAAA,yBAAe,GAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAwB,EAC5C,UAAU,EACV,sBAAY,EACZ,mCAAuB,EACvB,IAAA,uBAAa,EAAC,KAAK,CAAC,CACrB,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,GAAG,CAC1C,oCAAmB,EACnB,0BAAS,CAAC,MAAM,CACjB,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5C,MAAM,KAAK,GAAwB;YACjC,IAAI,EAAE,mCAAkB,CAAC,KAAK;YAC9B,SAAS,EAAE,0BAAS,CAAC,MAAM;YAC3B,KAAK;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,oCAAmB;gBAC5B,KAAK;gBACL,MAAM;aACP;SACF,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,OAAO,GAA6B;QACxC,IAAI,EAAE,qCAAoB,CAAC,QAAQ;QACnC,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,UAAU,EAAV,sBAAU;QACV,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,IAAI,EAAE;YACJ,MAAM;SACP;KACF,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAA,CAAC;AACF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { GetProgramAccountsFilter } from '@solana/web3.js';
2
+ export declare const ticketFilters: (owner: string) => GetProgramAccountsFilter[];
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ticketFilters = void 0;
4
+ const structs_1 = require("./structs");
5
+ const ticketFilters = (owner) => [
6
+ { dataSize: structs_1.ticketStruct.byteSize },
7
+ {
8
+ memcmp: {
9
+ offset: 40,
10
+ bytes: owner,
11
+ },
12
+ },
13
+ ];
14
+ exports.ticketFilters = ticketFilters;
15
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/filters.ts"],"names":[],"mappings":";;;AACA,uCAAyC;AAElC,MAAM,aAAa,GAAG,CAAC,KAAa,EAA8B,EAAE,CAAC;IAC1E,EAAE,QAAQ,EAAE,sBAAY,CAAC,QAAQ,EAAE;IACnC;QACE,MAAM,EAAE;YACN,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,KAAK;SACb;KACF;CACF,CAAC;AARW,QAAA,aAAa,iBAQxB"}
@@ -0,0 +1,3 @@
1
+ import { Fetcher, Job } from '@sonarwatch/portfolio-core';
2
+ export declare const jobs: Job[];
3
+ export declare const fetchers: Fetcher[];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchers = exports.jobs = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
6
+ const jobExecutor_1 = tslib_1.__importDefault(require("./jobExecutor"));
7
+ const fetcherExecutor_1 = tslib_1.__importDefault(require("./fetcherExecutor"));
8
+ exports.jobs = [
9
+ {
10
+ id: 'marinade',
11
+ executor: jobExecutor_1.default,
12
+ },
13
+ ];
14
+ exports.fetchers = [
15
+ {
16
+ id: 'marinade',
17
+ networkId: portfolio_core_1.NetworkId.solana,
18
+ executor: fetcherExecutor_1.default,
19
+ },
20
+ ];
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAqE;AACrE,wEAAwC;AACxC,gFAAgD;AAEnC,QAAA,IAAI,GAAU;IACzB;QACE,EAAE,EAAE,UAAU;QACd,QAAQ,EAAE,qBAAW;KACtB;CACF,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC;QACE,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,QAAQ,EAAE,yBAAe;KAC1B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { JobExecutor } from '@sonarwatch/portfolio-core';
2
+ declare const jobExecutor: JobExecutor;
3
+ export default jobExecutor;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
5
+ const constants_1 = require("./constants");
6
+ const jobExecutor = (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const { cache } = context;
8
+ yield cache.set('abc', 'dfg', {
9
+ prefix: constants_1.cachePrefix,
10
+ networkId: portfolio_core_1.NetworkId.solana,
11
+ });
12
+ });
13
+ exports.default = jobExecutor;
14
+ //# sourceMappingURL=jobExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobExecutor.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/jobExecutor.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAC7E,2CAA0C;AAE1C,MAAM,WAAW,GAAgB,CAAO,OAAgB,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE;QAC5B,MAAM,EAAE,uBAAW;QACnB,SAAS,EAAE,0BAAS,CAAC,MAAM;KAC5B,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="node" />
2
+ import BigNumber from 'bignumber.js';
3
+ import { BeetStruct } from '@metaplex-foundation/beet';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ export type Ticket = {
6
+ padding: Buffer;
7
+ stateAddress: PublicKey;
8
+ beneficiary: PublicKey;
9
+ lamportsAmount: BigNumber;
10
+ createdEpoch: BigNumber;
11
+ };
12
+ export declare const ticketStruct: BeetStruct<Ticket, Partial<Ticket>>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ticketStruct = 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.ticketStruct = new beet_1.BeetStruct([
8
+ ['padding', (0, solana_1.blob)(8)],
9
+ ['stateAddress', beet_solana_1.publicKey],
10
+ ['beneficiary', beet_solana_1.publicKey],
11
+ ['lamportsAmount', solana_1.u64],
12
+ ['createdEpoch', solana_1.u64],
13
+ ], (args) => args);
14
+ //# sourceMappingURL=structs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/marinade/structs.ts"],"names":[],"mappings":";;;AACA,oDAAuD;AACvD,kEAA6D;AAG7D,+CAA+C;AAUlC,QAAA,YAAY,GAAG,IAAI,iBAAU,CACxC;IACE,CAAC,SAAS,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC;IACpB,CAAC,cAAc,EAAE,uBAAS,CAAC;IAC3B,CAAC,aAAa,EAAE,uBAAS,CAAC;IAC1B,CAAC,gBAAgB,EAAE,YAAG,CAAC;IACvB,CAAC,cAAc,EAAE,YAAG,CAAC;CACtB,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAc,CACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const cachePrefix = "raydium";
2
+ export declare const platformId = "raydium";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platformId = exports.cachePrefix = void 0;
4
+ exports.cachePrefix = 'raydium';
5
+ exports.platformId = 'raydium';
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,UAAU,GAAG,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FetcherExecutor } from '@sonarwatch/portfolio-core';
2
+ declare const fetcherExecutor: FetcherExecutor;
3
+ export default fetcherExecutor;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
5
+ const constants_1 = require("./constants");
6
+ const fetcherExecutor = (owner, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const { tokenPriceCache } = context;
8
+ const solTokenPrice = yield tokenPriceCache.get(portfolio_core_1.solanaNativeAddress, portfolio_core_1.NetworkId.solana);
9
+ const amount = 10;
10
+ const price = (solTokenPrice === null || solTokenPrice === void 0 ? void 0 : solTokenPrice.price) || null;
11
+ const value = price ? amount * price : null;
12
+ const element = {
13
+ networkId: portfolio_core_1.NetworkId.solana,
14
+ label: 'Deposit',
15
+ platformId: constants_1.platformId,
16
+ type: portfolio_core_1.PortfolioElementType.single,
17
+ value,
18
+ data: {
19
+ asset: {
20
+ type: portfolio_core_1.PortfolioAssetType.token,
21
+ networkId: portfolio_core_1.NetworkId.solana,
22
+ value,
23
+ data: {
24
+ address: portfolio_core_1.solanaNativeAddress,
25
+ amount,
26
+ price,
27
+ },
28
+ },
29
+ },
30
+ };
31
+ return [element];
32
+ });
33
+ exports.default = fetcherExecutor;
34
+ //# sourceMappingURL=fetcherExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcherExecutor.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/fetcherExecutor.ts"],"names":[],"mappings":";;;AAAA,+DAQoC;AACpC,2CAAyC;AAEzC,MAAM,eAAe,GAAoB,CACvC,KAAa,EACb,OAAgB,EAChB,EAAE;IACF,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,GAAG,CAC7C,oCAAmB,EACnB,0BAAS,CAAC,MAAM,CACjB,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,KAAK,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,KAAI,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,OAAO,GAA2B;QACtC,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,KAAK,EAAE,SAAS;QAChB,UAAU,EAAV,sBAAU;QACV,IAAI,EAAE,qCAAoB,CAAC,MAAM;QACjC,KAAK;QACL,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,IAAI,EAAE,mCAAkB,CAAC,KAAK;gBAC9B,SAAS,EAAE,0BAAS,CAAC,MAAM;gBAC3B,KAAK;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,oCAAmB;oBAC5B,MAAM;oBACN,KAAK;iBACN;aACF;SACF;KACF,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC,CAAA,CAAC;AACF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Fetcher, Job } from '@sonarwatch/portfolio-core';
2
+ export declare const jobs: Job[];
3
+ export declare const fetchers: Fetcher[];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchers = exports.jobs = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
6
+ const jobExecutor_1 = tslib_1.__importDefault(require("./jobExecutor"));
7
+ const fetcherExecutor_1 = tslib_1.__importDefault(require("./fetcherExecutor"));
8
+ exports.jobs = [
9
+ {
10
+ id: 'raydium',
11
+ executor: jobExecutor_1.default,
12
+ },
13
+ ];
14
+ exports.fetchers = [
15
+ {
16
+ id: 'raydium',
17
+ networkId: portfolio_core_1.NetworkId.solana,
18
+ executor: fetcherExecutor_1.default,
19
+ },
20
+ ];
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAqE;AACrE,wEAAwC;AACxC,gFAAgD;AAEnC,QAAA,IAAI,GAAU;IACzB;QACE,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,qBAAW;KACtB;CACF,CAAC;AAEW,QAAA,QAAQ,GAAc;IACjC;QACE,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,QAAQ,EAAE,yBAAe;KAC1B;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { JobExecutor } from '@sonarwatch/portfolio-core';
2
+ declare const jobExecutor: JobExecutor;
3
+ export default jobExecutor;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
5
+ const constants_1 = require("./constants");
6
+ const jobExecutor = (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const { cache } = context;
8
+ yield cache.set('123', '456', {
9
+ prefix: constants_1.cachePrefix,
10
+ networkId: portfolio_core_1.NetworkId.solana,
11
+ });
12
+ });
13
+ exports.default = jobExecutor;
14
+ //# sourceMappingURL=jobExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobExecutor.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/raydium/jobExecutor.ts"],"names":[],"mappings":";;;AAAA,+DAA6E;AAC7E,2CAA0C;AAE1C,MAAM,WAAW,GAAgB,CAAO,OAAgB,EAAE,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE;QAC5B,MAAM,EAAE,uBAAW;QACnB,SAAS,EAAE,0BAAS,CAAC,MAAM;KAC5B,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const nIdsToFetch = 10;
2
+ export declare const coingeckoCoinsListUrl = "https://api.coingecko.com/api/v3/coins/list";
3
+ export declare const coingeckoCoinsMarketsUrl = "https://api.coingecko.com/api/v3/coins/markets";
4
+ export declare const coingeckoCoinsPriceUrl = "https://api.coingecko.com/api/v3/simple/price";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.coingeckoCoinsPriceUrl = exports.coingeckoCoinsMarketsUrl = exports.coingeckoCoinsListUrl = exports.nIdsToFetch = void 0;
4
+ exports.nIdsToFetch = 10;
5
+ // Coingecko URLs
6
+ exports.coingeckoCoinsListUrl = 'https://api.coingecko.com/api/v3/coins/list';
7
+ exports.coingeckoCoinsMarketsUrl = 'https://api.coingecko.com/api/v3/coins/markets';
8
+ exports.coingeckoCoinsPriceUrl = 'https://api.coingecko.com/api/v3/simple/price';
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wallettokens/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,EAAE,CAAC;AAE9B,iBAAiB;AACJ,QAAA,qBAAqB,GAChC,6CAA6C,CAAC;AACnC,QAAA,wBAAwB,GACnC,gDAAgD,CAAC;AACtC,QAAA,sBAAsB,GACjC,+CAA+C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { NetworkIdType, TokenPriceSource } from '@sonarwatch/portfolio-core';
2
+ import { TokenData } from './types';
3
+ export declare function getCoingeckoSources(networkId: NetworkIdType, tokensData: TokenData[]): Promise<TokenPriceSource[]>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCoingeckoSources = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ const constants_1 = require("./constants");
7
+ const shuffleArray_1 = tslib_1.__importDefault(require("../../utils/misc/shuffleArray"));
8
+ const sleep_1 = tslib_1.__importDefault(require("../../utils/misc/sleep"));
9
+ function getCoingeckoSources(networkId, tokensData) {
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ const coingeckoIds = new Set(tokensData.map((t) => t.coingeckoId));
12
+ const pricesByCoingeckoId = yield getPricesFromCoingeckoIds(coingeckoIds);
13
+ const sources = [];
14
+ const tdsByCoingeckoId = {};
15
+ tokensData.forEach((td) => {
16
+ if (!tdsByCoingeckoId[td.coingeckoId]) {
17
+ tdsByCoingeckoId[td.coingeckoId] = [];
18
+ }
19
+ tdsByCoingeckoId[td.coingeckoId].push(td);
20
+ });
21
+ pricesByCoingeckoId.forEach((price, coingeckoId) => {
22
+ const currTokensData = tdsByCoingeckoId[coingeckoId];
23
+ if (!currTokensData)
24
+ return;
25
+ currTokensData.forEach((td) => {
26
+ const source = {
27
+ address: td.address,
28
+ networkId,
29
+ isBase: td.isBase,
30
+ decimals: td.decimals,
31
+ price,
32
+ timestamp: Date.now(),
33
+ id: 'coingecko',
34
+ weight: 0,
35
+ };
36
+ sources.push(source);
37
+ });
38
+ });
39
+ return sources;
40
+ });
41
+ }
42
+ exports.getCoingeckoSources = getCoingeckoSources;
43
+ function getPricesFromCoingeckoIds(coingeckoIds) {
44
+ var _a;
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ const idsToFetch = [...Array.from(coingeckoIds)];
47
+ (0, shuffleArray_1.default)(idsToFetch);
48
+ const priceByCoingeckoId = new Map();
49
+ while (idsToFetch.length !== 0) {
50
+ const currIdsToFetch = idsToFetch.splice(0, constants_1.nIdsToFetch);
51
+ const coingeckoSimpleRes = yield axios_1.default
52
+ .get(constants_1.coingeckoCoinsPriceUrl, {
53
+ params: {
54
+ ids: currIdsToFetch.join(','),
55
+ vs_currencies: 'usd',
56
+ },
57
+ })
58
+ .catch(() => null);
59
+ if (!coingeckoSimpleRes)
60
+ continue;
61
+ for (let i = 0; i < currIdsToFetch.length; i += 1) {
62
+ const id = currIdsToFetch[i];
63
+ const usd = (_a = coingeckoSimpleRes.data[id]) === null || _a === void 0 ? void 0 : _a.usd;
64
+ if (!usd)
65
+ continue;
66
+ priceByCoingeckoId.set(id, usd);
67
+ }
68
+ yield (0, sleep_1.default)(5000);
69
+ }
70
+ return priceByCoingeckoId;
71
+ });
72
+ }
73
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wallettokens/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Fetcher, Job } from '@sonarwatch/portfolio-core';
2
+ export declare const jobs: Job[];
3
+ export declare const fetchers: Fetcher[];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchers = exports.jobs = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const solana_1 = tslib_1.__importDefault(require("./jobExecutors/solana"));
6
+ exports.jobs = [
7
+ {
8
+ id: 'wallettokens-solana',
9
+ executor: solana_1.default,
10
+ },
11
+ ];
12
+ exports.fetchers = [];
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wallettokens/index.ts"],"names":[],"mappings":";;;;AACA,2EAAsD;AAEzC,QAAA,IAAI,GAAU;IACzB;QACE,EAAE,EAAE,qBAAqB;QACzB,QAAQ,EAAE,gBAAiB;KAC5B;CACF,CAAC;AACW,QAAA,QAAQ,GAAc,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { JobExecutor } from '@sonarwatch/portfolio-core';
2
+ declare const jobExecutor: JobExecutor;
3
+ export default jobExecutor;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
5
+ const axios_1 = tslib_1.__importDefault(require("axios"));
6
+ const helpers_1 = require("../helpers");
7
+ const jobExecutor = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
+ const tokenPriceCache = (0, portfolio_core_1.getTokenPriceCache)();
9
+ const tokenListResponse = yield axios_1.default
10
+ .get(portfolio_core_1.solanaNetwork.tokenListUrl)
11
+ .catch(() => null);
12
+ if (!tokenListResponse)
13
+ return;
14
+ const tokensData = tokenListResponse.data.tokens.reduce((cTokensData, ti) => {
15
+ if (!ti.extensions)
16
+ return cTokensData;
17
+ const { coingeckoId } = ti.extensions;
18
+ if (typeof coingeckoId !== 'string')
19
+ return cTokensData;
20
+ const tokenData = {
21
+ address: ti.address,
22
+ coingeckoId,
23
+ decimals: ti.decimals,
24
+ isBase: true,
25
+ };
26
+ cTokensData.push(tokenData);
27
+ return cTokensData;
28
+ }, []);
29
+ const sources = yield (0, helpers_1.getCoingeckoSources)(portfolio_core_1.NetworkId.solana, tokensData);
30
+ for (let i = 0; i < sources.length; i += 1) {
31
+ const source = sources[i];
32
+ yield tokenPriceCache.set(source);
33
+ }
34
+ });
35
+ exports.default = jobExecutor;
36
+ //# sourceMappingURL=solana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/plugins/src/plugins/wallettokens/jobExecutors/solana.ts"],"names":[],"mappings":";;;AAAA,+DAMoC;AACpC,0DAA6C;AAE7C,wCAAiD;AAEjD,MAAM,WAAW,GAAgB,GAAS,EAAE;IAC1C,MAAM,eAAe,GAAG,IAAA,mCAAkB,GAAE,CAAC;IAE7C,MAAM,iBAAiB,GAAuC,MAAM,eAAK;SACtE,GAAG,CAAC,8BAAa,CAAC,YAAY,CAAC;SAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,iBAAiB;QAAE,OAAO;IAE/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CACrD,CAAC,WAAwB,EAAE,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC,EAAE,CAAC,UAAU;YAAE,OAAO,WAAW,CAAC;QACvC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,WAAW,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC;QAExD,MAAM,SAAS,GAAc;YAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,WAAW;YACX,QAAQ,EAAE,EAAE,CAAC,QAAQ;YACrB,MAAM,EAAE,IAAI;SACb,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,0BAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACnC;AACH,CAAC,CAAA,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type TokenData = {
2
+ address: string;
3
+ decimals: number;
4
+ isBase: boolean;
5
+ coingeckoId: string;
6
+ };
7
+ export type CoingeckoSimpleRes = Record<string, {
8
+ usd?: number;
9
+ }>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/wallettokens/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { EvmNetworkIdType, NetworkIdType, RpcEndpoint } from '@sonarwatch/portfolio-core';
2
+ import { Chain } from 'viem/chains';
3
+ export declare const viemChainsByNetworkId: Record<EvmNetworkIdType, Chain>;
4
+ export declare const rpcEnpoints: Record<NetworkIdType, RpcEndpoint>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rpcEnpoints = exports.viemChainsByNetworkId = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const chains_1 = require("viem/chains");
6
+ const urlToRpcEndpoint_1 = tslib_1.__importDefault(require("./urlToRpcEndpoint"));
7
+ exports.viemChainsByNetworkId = {
8
+ ethereum: chains_1.mainnet,
9
+ avalanche: chains_1.avalanche,
10
+ };
11
+ const urlEndpoints = {
12
+ bitcoin: process.env['BITCOIN_RPC'] || 'https://blockstream.info/api/',
13
+ solana: process.env['SOLANA_RPC'] || 'https://api.mainnet-beta.solana.com',
14
+ ethereum: process.env['ETHEREUM_RPC'] || 'https://eth-mainnet.g.alchemy.com/v2',
15
+ avalanche: process.env['AVALANCHE_RPC'] || 'https://api.avax.network/ext/bc/C/rpc',
16
+ aptos: process.env['APTOS_RPC'] || 'https://fullnode.mainnet.aptoslabs.com',
17
+ sui: process.env['SUI_RPC'] || 'https://sui-mainnet-rpc-germany.allthatnode.com',
18
+ };
19
+ exports.rpcEnpoints = Object.fromEntries(Object.entries(urlEndpoints).map(([key, value]) => [
20
+ key,
21
+ (0, urlToRpcEndpoint_1.default)(value),
22
+ ]));
23
+ //# sourceMappingURL=constants.js.map