@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.
- package/CHANGELOG.md +5 -0
- package/README.md +11 -0
- package/package.json +28 -0
- package/src/generators/plugin/generator.d.ts +4 -0
- package/src/generators/plugin/generator.js +46 -0
- package/src/generators/plugin/generator.js.map +1 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +19 -0
- package/src/index.js.map +1 -0
- package/src/plugins/marginfi/constants.d.ts +7 -0
- package/src/plugins/marginfi/constants.js +13 -0
- package/src/plugins/marginfi/constants.js.map +1 -0
- package/src/plugins/marginfi/fetcherExecutor.d.ts +3 -0
- package/src/plugins/marginfi/fetcherExecutor.js +90 -0
- package/src/plugins/marginfi/fetcherExecutor.js.map +1 -0
- package/src/plugins/marginfi/filters.d.ts +3 -0
- package/src/plugins/marginfi/filters.js +41 -0
- package/src/plugins/marginfi/filters.js.map +1 -0
- package/src/plugins/marginfi/helpers.d.ts +9 -0
- package/src/plugins/marginfi/helpers.js +49 -0
- package/src/plugins/marginfi/helpers.js.map +1 -0
- package/src/plugins/marginfi/index.d.ts +3 -0
- package/src/plugins/marginfi/index.js +21 -0
- package/src/plugins/marginfi/index.js.map +1 -0
- package/src/plugins/marginfi/jobExecutor.d.ts +3 -0
- package/src/plugins/marginfi/jobExecutor.js +24 -0
- package/src/plugins/marginfi/jobExecutor.js.map +1 -0
- package/src/plugins/marginfi/structs/Bank.d.ts +72 -0
- package/src/plugins/marginfi/structs/Bank.js +74 -0
- package/src/plugins/marginfi/structs/Bank.js.map +1 -0
- package/src/plugins/marginfi/structs/MarginfiAccount.d.ts +26 -0
- package/src/plugins/marginfi/structs/MarginfiAccount.js +27 -0
- package/src/plugins/marginfi/structs/MarginfiAccount.js.map +1 -0
- package/src/plugins/marginfi/structs/common.d.ts +6 -0
- package/src/plugins/marginfi/structs/common.js +7 -0
- package/src/plugins/marginfi/structs/common.js.map +1 -0
- package/src/plugins/marginfi/types.d.ts +6 -0
- package/src/plugins/marginfi/types.js +3 -0
- package/src/plugins/marginfi/types.js.map +1 -0
- package/src/plugins/marinade/constants.d.ts +6 -0
- package/src/plugins/marinade/constants.js +12 -0
- package/src/plugins/marinade/constants.js.map +1 -0
- package/src/plugins/marinade/fetcherExecutor.d.ts +3 -0
- package/src/plugins/marinade/fetcherExecutor.js +50 -0
- package/src/plugins/marinade/fetcherExecutor.js.map +1 -0
- package/src/plugins/marinade/filters.d.ts +2 -0
- package/src/plugins/marinade/filters.js +15 -0
- package/src/plugins/marinade/filters.js.map +1 -0
- package/src/plugins/marinade/index.d.ts +3 -0
- package/src/plugins/marinade/index.js +21 -0
- package/src/plugins/marinade/index.js.map +1 -0
- package/src/plugins/marinade/jobExecutor.d.ts +3 -0
- package/src/plugins/marinade/jobExecutor.js +14 -0
- package/src/plugins/marinade/jobExecutor.js.map +1 -0
- package/src/plugins/marinade/structs.d.ts +12 -0
- package/src/plugins/marinade/structs.js +14 -0
- package/src/plugins/marinade/structs.js.map +1 -0
- package/src/plugins/raydium/constants.d.ts +2 -0
- package/src/plugins/raydium/constants.js +6 -0
- package/src/plugins/raydium/constants.js.map +1 -0
- package/src/plugins/raydium/fetcherExecutor.d.ts +3 -0
- package/src/plugins/raydium/fetcherExecutor.js +34 -0
- package/src/plugins/raydium/fetcherExecutor.js.map +1 -0
- package/src/plugins/raydium/index.d.ts +3 -0
- package/src/plugins/raydium/index.js +21 -0
- package/src/plugins/raydium/index.js.map +1 -0
- package/src/plugins/raydium/jobExecutor.d.ts +3 -0
- package/src/plugins/raydium/jobExecutor.js +14 -0
- package/src/plugins/raydium/jobExecutor.js.map +1 -0
- package/src/plugins/wallettokens/constants.d.ts +4 -0
- package/src/plugins/wallettokens/constants.js +9 -0
- package/src/plugins/wallettokens/constants.js.map +1 -0
- package/src/plugins/wallettokens/helpers.d.ts +3 -0
- package/src/plugins/wallettokens/helpers.js +73 -0
- package/src/plugins/wallettokens/helpers.js.map +1 -0
- package/src/plugins/wallettokens/index.d.ts +3 -0
- package/src/plugins/wallettokens/index.js +13 -0
- package/src/plugins/wallettokens/index.js.map +1 -0
- package/src/plugins/wallettokens/jobExecutors/solana.d.ts +3 -0
- package/src/plugins/wallettokens/jobExecutors/solana.js +36 -0
- package/src/plugins/wallettokens/jobExecutors/solana.js.map +1 -0
- package/src/plugins/wallettokens/types.d.ts +9 -0
- package/src/plugins/wallettokens/types.js +3 -0
- package/src/plugins/wallettokens/types.js.map +1 -0
- package/src/utils/clients/constants.d.ts +4 -0
- package/src/utils/clients/constants.js +23 -0
- package/src/utils/clients/constants.js.map +1 -0
- package/src/utils/clients/getClientAptos.d.ts +2 -0
- package/src/utils/clients/getClientAptos.js +15 -0
- package/src/utils/clients/getClientAptos.js.map +1 -0
- package/src/utils/clients/getClientSolana.d.ts +2 -0
- package/src/utils/clients/getClientSolana.js +17 -0
- package/src/utils/clients/getClientSolana.js.map +1 -0
- package/src/utils/clients/getClientSui.d.ts +2 -0
- package/src/utils/clients/getClientSui.js +17 -0
- package/src/utils/clients/getClientSui.js.map +1 -0
- package/src/utils/clients/getEvmClient.d.ts +3 -0
- package/src/utils/clients/getEvmClient.js +21 -0
- package/src/utils/clients/getEvmClient.js.map +1 -0
- package/src/utils/clients/getEvmClients.d.ts +3 -0
- package/src/utils/clients/getEvmClients.js +13 -0
- package/src/utils/clients/getEvmClients.js.map +1 -0
- package/src/utils/clients/index.d.ts +6 -0
- package/src/utils/clients/index.js +19 -0
- package/src/utils/clients/index.js.map +1 -0
- package/src/utils/clients/urlToRpcEndpoint.d.ts +2 -0
- package/src/utils/clients/urlToRpcEndpoint.js +19 -0
- package/src/utils/clients/urlToRpcEndpoint.js.map +1 -0
- package/src/utils/misc/getBasicAuthHeaders.d.ts +3 -0
- package/src/utils/misc/getBasicAuthHeaders.js +13 -0
- package/src/utils/misc/getBasicAuthHeaders.js.map +1 -0
- package/src/utils/misc/shuffleArray.d.ts +1 -0
- package/src/utils/misc/shuffleArray.js +16 -0
- package/src/utils/misc/shuffleArray.js.map +1 -0
- package/src/utils/misc/sleep.d.ts +1 -0
- package/src/utils/misc/sleep.js +12 -0
- package/src/utils/misc/sleep.js.map +1 -0
- package/src/utils/misc/tokenPriceToAssetToken.d.ts +2 -0
- package/src/utils/misc/tokenPriceToAssetToken.js +18 -0
- package/src/utils/misc/tokenPriceToAssetToken.js.map +1 -0
- package/src/utils/solana/beets/buffers.d.ts +13 -0
- package/src/utils/solana/beets/buffers.js +28 -0
- package/src/utils/solana/beets/buffers.js.map +1 -0
- package/src/utils/solana/beets/helpers.d.ts +1 -0
- package/src/utils/solana/beets/helpers.js +5 -0
- package/src/utils/solana/beets/helpers.js.map +1 -0
- package/src/utils/solana/beets/numbers.d.ts +16 -0
- package/src/utils/solana/beets/numbers.js +62 -0
- package/src/utils/solana/beets/numbers.js.map +1 -0
- package/src/utils/solana/constants.d.ts +2 -0
- package/src/utils/solana/constants.js +6 -0
- package/src/utils/solana/constants.js.map +1 -0
- package/src/utils/solana/getParsedProgramAccounts.d.ts +3 -0
- package/src/utils/solana/getParsedProgramAccounts.js +13 -0
- package/src/utils/solana/getParsedProgramAccounts.js.map +1 -0
- package/src/utils/solana/getProgramAccountsSafe.d.ts +2 -0
- package/src/utils/solana/getProgramAccountsSafe.js +21 -0
- package/src/utils/solana/getProgramAccountsSafe.js.map +1 -0
- package/src/utils/solana/getTokenAccountsByOwner.d.ts +2 -0
- package/src/utils/solana/getTokenAccountsByOwner.js +22 -0
- package/src/utils/solana/getTokenAccountsByOwner.js.map +1 -0
- package/src/utils/solana/index.d.ts +8 -0
- package/src/utils/solana/index.js +12 -0
- package/src/utils/solana/index.js.map +1 -0
- package/src/utils/solana/structs.d.ts +32 -0
- package/src/utils/solana/structs.js +35 -0
- package/src/utils/solana/structs.js.map +1 -0
- package/src/utils/solana/types.d.ts +7 -0
- package/src/utils/solana/types.js +3 -0
- 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,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 @@
|
|
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,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,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,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,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 @@
|
|
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,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,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,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,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,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,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 @@
|
|
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
|