@sonarwatch/portfolio-plugins 0.8.55 → 0.8.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +2 -2
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/plugins/maple/abis.d.ts +33 -0
- package/src/plugins/maple/abis.js +49 -0
- package/src/plugins/maple/abis.js.map +1 -0
- package/src/plugins/maple/constants.d.ts +6 -0
- package/src/plugins/maple/constants.js +21 -0
- package/src/plugins/maple/constants.js.map +1 -0
- package/src/plugins/maple/ethereumFetcher.d.ts +3 -0
- package/src/plugins/maple/ethereumFetcher.js +93 -0
- package/src/plugins/maple/ethereumFetcher.js.map +1 -0
- package/src/plugins/maple/ethereumJob.d.ts +3 -0
- package/src/plugins/maple/ethereumJob.js +71 -0
- package/src/plugins/maple/ethereumJob.js.map +1 -0
- package/src/plugins/maple/index.d.ts +6 -0
- package/src/plugins/maple/index.js +14 -0
- package/src/plugins/maple/index.js.map +1 -0
- package/src/plugins/maple/solanaJob.d.ts +3 -0
- package/src/plugins/maple/solanaJob.js +45 -0
- package/src/plugins/maple/solanaJob.js.map +1 -0
- package/src/plugins/maple/types.d.ts +6 -0
- package/src/plugins/maple/types.js +3 -0
- package/src/plugins/maple/types.js.map +1 -0
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
4
4
|
|
5
|
+
## [0.8.56](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.55...plugins-0.8.56) (2023-11-03)
|
6
|
+
|
7
|
+
|
8
|
+
|
5
9
|
## [0.8.55](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.54...plugins-0.8.55) (2023-11-03)
|
6
10
|
|
7
11
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sonarwatch/portfolio-plugins",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.56",
|
4
4
|
"type": "commonjs",
|
5
5
|
"generators": "./generators.json",
|
6
6
|
"dependencies": {
|
@@ -39,7 +39,7 @@
|
|
39
39
|
"web3-v1": "npm:web3@^1.5.0"
|
40
40
|
},
|
41
41
|
"peerDependencies": {
|
42
|
-
"@sonarwatch/portfolio-core": "0.8.
|
42
|
+
"@sonarwatch/portfolio-core": "0.8.56"
|
43
43
|
},
|
44
44
|
"main": "./src/index.js",
|
45
45
|
"types": "./src/index.d.ts"
|
package/src/index.js
CHANGED
@@ -60,6 +60,7 @@ const uniswap_v2_1 = require("./plugins/uniswap-v2");
|
|
60
60
|
const balancer_1 = require("./plugins/balancer");
|
61
61
|
const paraswap_1 = require("./plugins/paraswap");
|
62
62
|
const realms_1 = require("./plugins/realms");
|
63
|
+
const maple_1 = require("./plugins/maple");
|
63
64
|
var constants_1 = require("./plugins/tokens/constants");
|
64
65
|
Object.defineProperty(exports, "walletTokensPlatform", { enumerable: true, get: function () { return constants_1.walletTokensPlatform; } });
|
65
66
|
Object.defineProperty(exports, "walletNftsPlatform", { enumerable: true, get: function () { return constants_1.walletNftsPlatform; } });
|
@@ -110,6 +111,7 @@ exports.platforms = [
|
|
110
111
|
...balancer_1.platforms,
|
111
112
|
...paraswap_1.platforms,
|
112
113
|
...realms_1.platforms,
|
114
|
+
...maple_1.platforms,
|
113
115
|
];
|
114
116
|
// JOBS //
|
115
117
|
exports.jobs = [
|
@@ -147,6 +149,7 @@ exports.jobs = [
|
|
147
149
|
...balancer_1.jobs,
|
148
150
|
...paraswap_1.jobs,
|
149
151
|
...realms_1.jobs,
|
152
|
+
...maple_1.jobs,
|
150
153
|
];
|
151
154
|
// FETCHERS //
|
152
155
|
exports.fetchers = [
|
@@ -182,6 +185,7 @@ exports.fetchers = [
|
|
182
185
|
...balancer_1.fetchers,
|
183
186
|
...paraswap_1.fetchers,
|
184
187
|
...realms_1.fetchers,
|
188
|
+
...maple_1.fetchers,
|
185
189
|
];
|
186
190
|
exports.fetchersByAddressSystem = (0, getFetchersByAddressSystem_1.getFetchersByAddressSystem)(exports.fetchers);
|
187
191
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAGA,wFAAqF;AACrF,sEAA8C;AAC9C,6CAI0B;AAC1B,yDAIgC;AAChC,iDAG4B;AAC5B,iDAI4B;AAC5B,2CAGyB;AACzB,6CAI0B;AAC1B,+CAI2B;AAC3B,yCAIwB;AACxB,+CAG2B;AAC3B,2CAIyB;AACzB,6CAI0B;AAC1B,2CAIyB;AACzB,6CAG0B;AAC1B,6CAI0B;AAC1B,yCAIwB;AACxB,2DAGiC;AACjC,6CAI0B;AAC1B,2CAIyB;AACzB,2CAIyB;AACzB,qDAA6D;AAC7D,qEAIsC;AACtC,uDAG+B;AAC/B,mDAG6B;AAC7B,qDAG8B;AAC9B,uDAG+B;AAC/B,2CAIyB;AACzB,6CAG0B;AAC1B,6CAG0B;AAC1B,yCAIwB;AACxB,uDAG+B;AAC/B,yCAGwB;AACxB,2CAIyB;AACzB,iDAI4B;AAC5B,iDAI4B;AAC5B,6CAI0B;AAC1B,+CAI2B;AAC3B,qDAG8B;AAC9B,iDAI4B;AAC5B,iDAI4B;AAC5B,6CAI0B;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/plugins/src/index.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
export declare const nameAbi: readonly [{
|
2
|
+
readonly inputs: readonly [];
|
3
|
+
readonly name: "name";
|
4
|
+
readonly outputs: readonly [{
|
5
|
+
readonly internalType: "string";
|
6
|
+
readonly name: "name";
|
7
|
+
readonly type: "string";
|
8
|
+
}];
|
9
|
+
readonly stateMutability: "view";
|
10
|
+
readonly type: "function";
|
11
|
+
}];
|
12
|
+
export declare const decimalsAbi: readonly [{
|
13
|
+
readonly inputs: readonly [];
|
14
|
+
readonly name: "decimals";
|
15
|
+
readonly outputs: readonly [{
|
16
|
+
readonly internalType: "uint8";
|
17
|
+
readonly name: "";
|
18
|
+
readonly type: "uint8";
|
19
|
+
}];
|
20
|
+
readonly stateMutability: "view";
|
21
|
+
readonly type: "function";
|
22
|
+
}];
|
23
|
+
export declare const assetAbi: readonly [{
|
24
|
+
readonly inputs: readonly [];
|
25
|
+
readonly name: "asset";
|
26
|
+
readonly outputs: readonly [{
|
27
|
+
readonly internalType: "address";
|
28
|
+
readonly name: "";
|
29
|
+
readonly type: "address";
|
30
|
+
}];
|
31
|
+
readonly stateMutability: "view";
|
32
|
+
readonly type: "function";
|
33
|
+
}];
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.assetAbi = exports.decimalsAbi = exports.nameAbi = void 0;
|
4
|
+
exports.nameAbi = [
|
5
|
+
{
|
6
|
+
inputs: [],
|
7
|
+
name: 'name',
|
8
|
+
outputs: [
|
9
|
+
{
|
10
|
+
internalType: 'string',
|
11
|
+
name: 'name',
|
12
|
+
type: 'string',
|
13
|
+
},
|
14
|
+
],
|
15
|
+
stateMutability: 'view',
|
16
|
+
type: 'function',
|
17
|
+
},
|
18
|
+
];
|
19
|
+
exports.decimalsAbi = [
|
20
|
+
{
|
21
|
+
inputs: [],
|
22
|
+
name: 'decimals',
|
23
|
+
outputs: [
|
24
|
+
{
|
25
|
+
internalType: 'uint8',
|
26
|
+
name: '',
|
27
|
+
type: 'uint8',
|
28
|
+
},
|
29
|
+
],
|
30
|
+
stateMutability: 'view',
|
31
|
+
type: 'function',
|
32
|
+
},
|
33
|
+
];
|
34
|
+
exports.assetAbi = [
|
35
|
+
{
|
36
|
+
inputs: [],
|
37
|
+
name: 'asset',
|
38
|
+
outputs: [
|
39
|
+
{
|
40
|
+
internalType: 'address',
|
41
|
+
name: '',
|
42
|
+
type: 'address',
|
43
|
+
},
|
44
|
+
],
|
45
|
+
stateMutability: 'view',
|
46
|
+
type: 'function',
|
47
|
+
},
|
48
|
+
];
|
49
|
+
//# sourceMappingURL=abis.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"abis.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/abis.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG;IACrB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAEE,QAAA,WAAW,GAAG;IACzB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;aACd;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAEE,QAAA,QAAQ,GAAG;IACtB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,OAAO;QACb,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Platform } from '@sonarwatch/portfolio-core';
|
2
|
+
export declare const platformId = "maple";
|
3
|
+
export declare const maplePlatform: Platform;
|
4
|
+
export declare const solanaLoanToken = "AxuK8gNvN4Q8HtgHxFbePP6b84SpmcNTPdFA1E164Hgs";
|
5
|
+
export declare const poolsKey = "poolsInfo";
|
6
|
+
export declare const evmContracts: string[];
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.evmContracts = exports.poolsKey = exports.solanaLoanToken = exports.maplePlatform = exports.platformId = void 0;
|
4
|
+
exports.platformId = 'maple';
|
5
|
+
exports.maplePlatform = {
|
6
|
+
id: exports.platformId,
|
7
|
+
name: 'Maple',
|
8
|
+
image: 'https://sonar.watch/img/platforms/maple.png',
|
9
|
+
defiLlamaId: 'maple-finance',
|
10
|
+
};
|
11
|
+
exports.solanaLoanToken = 'AxuK8gNvN4Q8HtgHxFbePP6b84SpmcNTPdFA1E164Hgs';
|
12
|
+
exports.poolsKey = 'poolsInfo';
|
13
|
+
exports.evmContracts = [
|
14
|
+
'0xfe119e9c24ab79f1bdd5dd884b86ceea2ee75d92',
|
15
|
+
'0xf05681a33a9adf14076990789a89ab3da3f6b536',
|
16
|
+
'0xc1dd3f011290f212227170f0d02f511ebf57e433',
|
17
|
+
'0xf025edfa685c9ea873ea4b22da85e7e1fba24381',
|
18
|
+
'0xe9d33286f0e37f517b1204aa6da085564414996d',
|
19
|
+
'0x00e0c1ea2085e30e5233e98cfa940ca8cbb1b0b7',
|
20
|
+
];
|
21
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG,OAAO,CAAC;AAErB,QAAA,aAAa,GAAa;IACrC,EAAE,EAAE,kBAAU;IACd,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,6CAA6C;IACpD,WAAW,EAAE,eAAe;CAC7B,CAAC;AAEW,QAAA,eAAe,GAAG,8CAA8C,CAAC;AACjE,QAAA,QAAQ,GAAG,WAAW,CAAC;AAEvB,QAAA,YAAY,GAAG;IAC1B,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;CAC7C,CAAC"}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
17
|
+
const constants_1 = require("./constants");
|
18
|
+
const clients_1 = require("../../utils/clients");
|
19
|
+
const erc20Abi_1 = require("../../utils/evm/erc20Abi");
|
20
|
+
const constants_2 = require("../stargate/constants");
|
21
|
+
const tokenPriceToAssetToken_1 = __importDefault(require("../../utils/misc/tokenPriceToAssetToken"));
|
22
|
+
const executor = (owner, cache) => __awaiter(void 0, void 0, void 0, function* () {
|
23
|
+
const client = (0, clients_1.getEvmClient)(portfolio_core_1.NetworkId.ethereum);
|
24
|
+
const poolsInfo = yield cache.getItem(constants_2.poolsKey, {
|
25
|
+
prefix: constants_1.platformId,
|
26
|
+
networkId: portfolio_core_1.NetworkId.ethereum,
|
27
|
+
});
|
28
|
+
if (!poolsInfo)
|
29
|
+
return [];
|
30
|
+
const tokensPrices = yield cache.getTokenPrices(poolsInfo.map((p) => p.asset), portfolio_core_1.NetworkId.ethereum);
|
31
|
+
const tokenPriceById = new Map();
|
32
|
+
tokensPrices.forEach((tP) => (tP ? tokenPriceById.set(tP.address, tP) : []));
|
33
|
+
const balancOfBase = {
|
34
|
+
abi: erc20Abi_1.balanceOfErc20ABI,
|
35
|
+
functionName: 'balanceOf',
|
36
|
+
args: [owner],
|
37
|
+
};
|
38
|
+
const balanceOfContracts = [];
|
39
|
+
for (const contract of constants_1.evmContracts) {
|
40
|
+
balanceOfContracts.push(Object.assign(Object.assign({}, balancOfBase), { address: contract }));
|
41
|
+
}
|
42
|
+
const balancesRes = yield client.multicall({ contracts: balanceOfContracts });
|
43
|
+
const elements = [];
|
44
|
+
for (let i = 0; i < constants_1.evmContracts.length; i++) {
|
45
|
+
const balanceRes = balancesRes[i];
|
46
|
+
if (balanceRes.status === 'failure')
|
47
|
+
continue;
|
48
|
+
if (balanceRes.result === BigInt(0))
|
49
|
+
continue;
|
50
|
+
const poolInfo = poolsInfo[i];
|
51
|
+
const { name, decimal, asset } = poolInfo;
|
52
|
+
const tokenPrice = tokenPriceById.get(asset);
|
53
|
+
if (!tokenPrice)
|
54
|
+
continue;
|
55
|
+
const borrowedAssets = [];
|
56
|
+
const borrowedYields = [];
|
57
|
+
const suppliedAssets = [];
|
58
|
+
const suppliedYields = [];
|
59
|
+
const rewardAssets = [];
|
60
|
+
const balance = new bignumber_js_1.default(balanceRes.result.toString()).dividedBy(Math.pow(10, decimal));
|
61
|
+
suppliedAssets.push((0, tokenPriceToAssetToken_1.default)(asset, balance.toNumber(), portfolio_core_1.NetworkId.ethereum, tokenPrice));
|
62
|
+
if (suppliedAssets.length === 0)
|
63
|
+
continue;
|
64
|
+
const { borrowedValue, collateralRatio, suppliedValue, value } = (0, portfolio_core_1.getElementLendingValues)(suppliedAssets, borrowedAssets, rewardAssets);
|
65
|
+
elements.push({
|
66
|
+
type: portfolio_core_1.PortfolioElementType.borrowlend,
|
67
|
+
networkId: portfolio_core_1.NetworkId.ethereum,
|
68
|
+
platformId: constants_1.platformId,
|
69
|
+
label: 'Lending',
|
70
|
+
value,
|
71
|
+
name,
|
72
|
+
data: {
|
73
|
+
borrowedAssets,
|
74
|
+
borrowedValue,
|
75
|
+
borrowedYields,
|
76
|
+
suppliedAssets,
|
77
|
+
suppliedValue,
|
78
|
+
suppliedYields,
|
79
|
+
collateralRatio,
|
80
|
+
rewardAssets,
|
81
|
+
value,
|
82
|
+
},
|
83
|
+
});
|
84
|
+
}
|
85
|
+
return elements;
|
86
|
+
});
|
87
|
+
const fetcher = {
|
88
|
+
id: `${constants_1.platformId}-ethereum`,
|
89
|
+
networkId: portfolio_core_1.NetworkId.ethereum,
|
90
|
+
executor,
|
91
|
+
};
|
92
|
+
exports.default = fetcher;
|
93
|
+
//# sourceMappingURL=ethereumFetcher.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ethereumFetcher.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/ethereumFetcher.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const clients_1 = require("../../utils/clients");
|
14
|
+
const abis_1 = require("./abis");
|
15
|
+
const constants_1 = require("./constants");
|
16
|
+
const constants_2 = require("../stargate/constants");
|
17
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
18
|
+
const client = (0, clients_1.getEvmClient)(portfolio_core_1.NetworkId.ethereum);
|
19
|
+
const nameBase = {
|
20
|
+
abi: abis_1.nameAbi,
|
21
|
+
functionName: 'name',
|
22
|
+
};
|
23
|
+
const decimalsBase = {
|
24
|
+
abi: abis_1.decimalsAbi,
|
25
|
+
functionName: 'decimals',
|
26
|
+
};
|
27
|
+
const assetBase = {
|
28
|
+
abi: abis_1.assetAbi,
|
29
|
+
functionName: 'asset',
|
30
|
+
};
|
31
|
+
const namesContracts = [];
|
32
|
+
const decimalsContracts = [];
|
33
|
+
const assetsContracts = [];
|
34
|
+
for (const contract of constants_1.evmContracts) {
|
35
|
+
namesContracts.push(Object.assign(Object.assign({}, nameBase), { address: contract }));
|
36
|
+
decimalsContracts.push(Object.assign(Object.assign({}, decimalsBase), { address: contract }));
|
37
|
+
assetsContracts.push(Object.assign(Object.assign({}, assetBase), { address: contract }));
|
38
|
+
}
|
39
|
+
const [namesRes, decimalsRes, assetsRes] = yield Promise.all([
|
40
|
+
client.multicall({ contracts: namesContracts }),
|
41
|
+
client.multicall({ contracts: decimalsContracts }),
|
42
|
+
client.multicall({ contracts: assetsContracts }),
|
43
|
+
]);
|
44
|
+
const poolsInfo = [];
|
45
|
+
for (let i = 0; i < namesRes.length; i++) {
|
46
|
+
const assetRes = assetsRes[i];
|
47
|
+
const nameRes = namesRes[i];
|
48
|
+
const decimalRes = decimalsRes[i];
|
49
|
+
if (assetRes.status === 'failure' || decimalRes.status === 'failure')
|
50
|
+
continue;
|
51
|
+
const asset = assetRes.result;
|
52
|
+
const decimal = decimalRes.result;
|
53
|
+
const name = nameRes.status === 'failure' ? undefined : nameRes.result;
|
54
|
+
poolsInfo.push({
|
55
|
+
asset,
|
56
|
+
contract: constants_1.evmContracts[i],
|
57
|
+
decimal,
|
58
|
+
name,
|
59
|
+
});
|
60
|
+
}
|
61
|
+
yield cache.setItem(constants_2.poolsKey, poolsInfo, {
|
62
|
+
prefix: constants_1.platformId,
|
63
|
+
networkId: portfolio_core_1.NetworkId.ethereum,
|
64
|
+
});
|
65
|
+
});
|
66
|
+
const job = {
|
67
|
+
id: `${constants_1.platformId}-ethereum`,
|
68
|
+
executor,
|
69
|
+
};
|
70
|
+
exports.default = job;
|
71
|
+
//# sourceMappingURL=ethereumJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ethereumJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/ethereumJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AAGvD,iDAAmD;AACnD,iCAAwD;AACxD,2CAAuD;AAEvD,qDAAiD;AAEjD,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,0BAAS,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,cAAO;QACZ,YAAY,EAAE,MAAM;KACZ,CAAC;IAEX,MAAM,YAAY,GAAG;QACnB,GAAG,EAAE,kBAAW;QAChB,YAAY,EAAE,UAAU;KAChB,CAAC;IAEX,MAAM,SAAS,GAAG;QAChB,GAAG,EAAE,eAAQ;QACb,YAAY,EAAE,OAAO;KACb,CAAC;IAEX,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,QAAQ,IAAI,wBAAY,EAAE;QACnC,cAAc,CAAC,IAAI,CAAC,gCACf,QAAQ,KACX,OAAO,EAAE,QAAyB,GAC1B,CAAC,CAAC;QACZ,iBAAiB,CAAC,IAAI,CAAC,gCAClB,YAAY,KACf,OAAO,EAAE,QAAyB,GAC1B,CAAC,CAAC;QACZ,eAAe,CAAC,IAAI,CAAC,gCAChB,SAAS,KACZ,OAAO,EAAE,QAAyB,GAC1B,CAAC,CAAC;KACb;IAED,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;YAClE,SAAS;QAEX,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvE,SAAS,CAAC,IAAI,CAAC;YACb,KAAK;YACL,QAAQ,EAAE,wBAAY,CAAC,CAAC,CAAC;YACzB,OAAO;YACP,IAAI;SACL,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAQ,EAAE,SAAS,EAAE;QACvC,MAAM,EAAE,sBAAU;QAClB,SAAS,EAAE,0BAAS,CAAC,QAAQ;KAC9B,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,WAAW;IAC5B,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.platforms = exports.fetchers = exports.jobs = void 0;
|
7
|
+
const solanaJob_1 = __importDefault(require("./solanaJob"));
|
8
|
+
const ethereumJob_1 = __importDefault(require("./ethereumJob"));
|
9
|
+
const ethereumFetcher_1 = __importDefault(require("./ethereumFetcher"));
|
10
|
+
const constants_1 = require("./constants");
|
11
|
+
exports.jobs = [solanaJob_1.default, ethereumJob_1.default];
|
12
|
+
exports.fetchers = [ethereumFetcher_1.default];
|
13
|
+
exports.platforms = [constants_1.maplePlatform];
|
14
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/index.ts"],"names":[],"mappings":";;;;;;AAGA,4DAAiC;AACjC,gEAAqC;AACrC,wEAAgD;AAChD,2CAA4C;AAE/B,QAAA,IAAI,GAAU,CAAC,mBAAM,EAAE,qBAAQ,CAAC,CAAC;AACjC,QAAA,QAAQ,GAAc,CAAC,yBAAe,CAAC,CAAC;AACxC,QAAA,SAAS,GAAe,CAAC,yBAAa,CAAC,CAAC"}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
13
|
+
const spl_name_service_1 = require("@bonfida/spl-name-service");
|
14
|
+
const constants_1 = require("./constants");
|
15
|
+
const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
16
|
+
const usdcPrice = yield cache.getTokenPrice(spl_name_service_1.USDC_MINT.toString(), portfolio_core_1.NetworkId.solana);
|
17
|
+
if (!usdcPrice)
|
18
|
+
return;
|
19
|
+
yield cache.setTokenPriceSource({
|
20
|
+
address: constants_1.solanaLoanToken,
|
21
|
+
decimals: 6,
|
22
|
+
id: constants_1.platformId,
|
23
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
24
|
+
elementName: 'Loan',
|
25
|
+
platformId: constants_1.platformId,
|
26
|
+
price: usdcPrice.price,
|
27
|
+
timestamp: Date.now(),
|
28
|
+
weight: 1,
|
29
|
+
underlyings: [
|
30
|
+
{
|
31
|
+
address: usdcPrice.address,
|
32
|
+
amountPerLp: 1,
|
33
|
+
decimals: usdcPrice.decimals,
|
34
|
+
networkId: portfolio_core_1.NetworkId.solana,
|
35
|
+
price: usdcPrice.price,
|
36
|
+
},
|
37
|
+
],
|
38
|
+
});
|
39
|
+
});
|
40
|
+
const job = {
|
41
|
+
id: `${constants_1.platformId}-solana`,
|
42
|
+
executor,
|
43
|
+
};
|
44
|
+
exports.default = job;
|
45
|
+
//# sourceMappingURL=solanaJob.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"solanaJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/solanaJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+DAAuD;AACvD,gEAAsD;AAGtD,2CAA0D;AAE1D,MAAM,QAAQ,GAAgB,CAAO,KAAY,EAAE,EAAE;IACnD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,aAAa,CACzC,4BAAS,CAAC,QAAQ,EAAE,EACpB,0BAAS,CAAC,MAAM,CACjB,CAAC;IAEF,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,KAAK,CAAC,mBAAmB,CAAC;QAC9B,OAAO,EAAE,2BAAe;QACxB,QAAQ,EAAE,CAAC;QACX,EAAE,EAAE,sBAAU;QACd,SAAS,EAAE,0BAAS,CAAC,MAAM;QAC3B,WAAW,EAAE,MAAM;QACnB,UAAU,EAAV,sBAAU;QACV,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,CAAC;QACT,WAAW,EAAE;YACX;gBACE,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,SAAS,EAAE,0BAAS,CAAC,MAAM;gBAC3B,KAAK,EAAE,SAAS,CAAC,KAAK;aACvB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAEF,MAAM,GAAG,GAAQ;IACf,EAAE,EAAE,GAAG,sBAAU,SAAS;IAC1B,QAAQ;CACT,CAAC;AACF,kBAAe,GAAG,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/maple/types.ts"],"names":[],"mappings":""}
|