@sonarwatch/portfolio-plugins 0.8.29 → 0.8.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +2 -2
- package/src/plugins/aave/constants.d.ts +1 -1
- package/src/plugins/aave/constants.js +10 -3
- package/src/plugins/aave/constants.js.map +1 -1
- package/src/plugins/aave/lendingPoolsJob.js +65 -1
- package/src/plugins/aave/lendingPoolsJob.js.map +1 -1
- package/src/plugins/aave/types.d.ts +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.30](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.29...plugins-0.8.30) (2023-10-18)
|
6
|
+
|
7
|
+
|
8
|
+
|
5
9
|
## [0.8.29](https://github.com/sonarwatch/portfolio/compare/plugins-0.8.28...plugins-0.8.29) (2023-10-17)
|
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.30",
|
4
4
|
"type": "commonjs",
|
5
5
|
"generators": "./generators.json",
|
6
6
|
"dependencies": {
|
@@ -37,7 +37,7 @@
|
|
37
37
|
"web3-v1": "npm:web3@^1.5.0"
|
38
38
|
},
|
39
39
|
"peerDependencies": {
|
40
|
-
"@sonarwatch/portfolio-core": "0.8.
|
40
|
+
"@sonarwatch/portfolio-core": "0.8.30"
|
41
41
|
},
|
42
42
|
"main": "./src/index.js",
|
43
43
|
"types": "./src/index.d.ts"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { NetworkIdType, Platform } from '@sonarwatch/portfolio-core';
|
2
2
|
import { LendingConfig } from './types';
|
3
|
+
export declare const platformId = "aave";
|
3
4
|
export declare const aavePlatform: Platform;
|
4
5
|
export declare const lendingConfigs: Map<NetworkIdType, LendingConfig[]>;
|
5
|
-
export declare const platformId = "aave";
|
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.lendingConfigs = exports.aavePlatform = exports.platformId = void 0;
|
4
4
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
5
|
+
exports.platformId = 'aave';
|
5
6
|
exports.aavePlatform = {
|
6
|
-
id:
|
7
|
+
id: exports.platformId,
|
7
8
|
name: 'AAVE',
|
8
9
|
image: 'https://sonar.watch/img/platforms/aave.png',
|
9
10
|
defiLlamaId: 'parent#aave',
|
@@ -19,6 +20,7 @@ exports.lendingConfigs = new Map([
|
|
19
20
|
lendingPoolAddressProvider: '0xb6A86025F0FE1862B372cb0ca18CE3EDe02A318f',
|
20
21
|
uiIncentiveDataProviderAddress: '0x11979886A6dBAE27D7a72c49fCF3F23240D647bF',
|
21
22
|
uiPoolDataProviderAddress: '0x00e50FAB64eBB37b87df06Aa46b8B35d5f1A4e1A',
|
23
|
+
version: 2,
|
22
24
|
},
|
23
25
|
{
|
24
26
|
chainId: portfolio_core_1.networks.avalanche.chainId,
|
@@ -27,6 +29,7 @@ exports.lendingConfigs = new Map([
|
|
27
29
|
lendingPoolAddressProvider: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
28
30
|
uiIncentiveDataProviderAddress: '0x265d414f80b0fca9505710e6F16dB4b67555D365',
|
29
31
|
uiPoolDataProviderAddress: '0xF71DBe0FAEF1473ffC607d4c555dfF0aEaDb878d',
|
32
|
+
version: 3,
|
30
33
|
},
|
31
34
|
],
|
32
35
|
],
|
@@ -40,6 +43,7 @@ exports.lendingConfigs = new Map([
|
|
40
43
|
lendingPoolAddressProvider: '0xd05e3E715d945B59290df0ae8eF85c1BdB684744',
|
41
44
|
uiIncentiveDataProviderAddress: '0x645654D59A5226CBab969b1f5431aA47CBf64ab8',
|
42
45
|
uiPoolDataProviderAddress: '0x204f2Eb81D996729829debC819f7992DCEEfE7b1',
|
46
|
+
version: 2,
|
43
47
|
},
|
44
48
|
{
|
45
49
|
chainId: portfolio_core_1.networks.polygon.chainId,
|
@@ -48,6 +52,7 @@ exports.lendingConfigs = new Map([
|
|
48
52
|
lendingPoolAddressProvider: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
49
53
|
uiIncentiveDataProviderAddress: '0x874313A46e4957D29FAAC43BF5Eb2B144894f557',
|
50
54
|
uiPoolDataProviderAddress: '0xC69728f11E9E6127733751c8410432913123acf1',
|
55
|
+
version: 3,
|
51
56
|
},
|
52
57
|
],
|
53
58
|
],
|
@@ -61,6 +66,7 @@ exports.lendingConfigs = new Map([
|
|
61
66
|
lendingPoolAddressProvider: '0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5',
|
62
67
|
uiIncentiveDataProviderAddress: '0xD01ab9a6577E1D84F142e44D49380e23A340387d',
|
63
68
|
uiPoolDataProviderAddress: '0x00e50FAB64eBB37b87df06Aa46b8B35d5f1A4e1A',
|
69
|
+
version: 2,
|
64
70
|
},
|
65
71
|
{
|
66
72
|
chainId: portfolio_core_1.networks.ethereum.chainId,
|
@@ -69,6 +75,7 @@ exports.lendingConfigs = new Map([
|
|
69
75
|
lendingPoolAddressProvider: '0xAcc030EF66f9dFEAE9CbB0cd1B25654b82cFA8d5',
|
70
76
|
uiIncentiveDataProviderAddress: '0xD01ab9a6577E1D84F142e44D49380e23A340387d',
|
71
77
|
uiPoolDataProviderAddress: '0x00e50FAB64eBB37b87df06Aa46b8B35d5f1A4e1A',
|
78
|
+
version: 2,
|
72
79
|
},
|
73
80
|
{
|
74
81
|
chainId: portfolio_core_1.networks.ethereum.chainId,
|
@@ -77,9 +84,9 @@ exports.lendingConfigs = new Map([
|
|
77
84
|
lendingPoolAddressProvider: '0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e',
|
78
85
|
uiIncentiveDataProviderAddress: '0x162A7AC02f547ad796CA549f757e2b8d1D9b10a6',
|
79
86
|
uiPoolDataProviderAddress: '0x91c0eA31b49B69Ea18607702c5d9aC360bf3dE7d',
|
87
|
+
version: 3,
|
80
88
|
},
|
81
89
|
],
|
82
90
|
],
|
83
91
|
]);
|
84
|
-
exports.platformId = 'aave';
|
85
92
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/aave/constants.ts"],"names":[],"mappings":";;;AAAA,+DAKoC;AAGvB,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/aave/constants.ts"],"names":[],"mappings":";;;AAAA,+DAKoC;AAGvB,QAAA,UAAU,GAAG,MAAM,CAAC;AACpB,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,kBAAU;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,4CAA4C;IACnD,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEW,QAAA,cAAc,GAAwC,IAAI,GAAG,CAAC;IACzE;QACE,0BAAS,CAAC,SAAS;QACnB;YACE;gBACE,OAAO,EAAE,yBAAQ,CAAC,SAAS,CAAC,OAAO;gBACnC,SAAS,EAAE,0BAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS;gBACtB,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;YACD;gBACE,OAAO,EAAE,yBAAQ,CAAC,SAAS,CAAC,OAAO;gBACnC,SAAS,EAAE,0BAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS;gBACtB,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;SACF;KACF;IACD;QACE,0BAAS,CAAC,OAAO;QACjB;YACE;gBACE,OAAO,EAAE,yBAAQ,CAAC,OAAO,CAAC,OAAO;gBACjC,SAAS,EAAE,0BAAS,CAAC,OAAO;gBAC5B,WAAW,EAAE,SAAS;gBACtB,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;YACD;gBACE,OAAO,EAAE,yBAAQ,CAAC,OAAO,CAAC,OAAO;gBACjC,SAAS,EAAE,0BAAS,CAAC,OAAO;gBAC5B,WAAW,EAAE,SAAS;gBACtB,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;SACF;KACF;IACD;QACE,0BAAS,CAAC,QAAQ;QAClB;YACE;gBACE,OAAO,EAAE,yBAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,SAAS,EAAE,0BAAS,CAAC,QAAQ;gBAC7B,WAAW,EAAE,cAAc;gBAC3B,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;YACD;gBACE,OAAO,EAAE,yBAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,SAAS,EAAE,0BAAS,CAAC,QAAQ;gBAC7B,WAAW,EAAE,aAAa;gBAC1B,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;YACD;gBACE,OAAO,EAAE,yBAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,SAAS,EAAE,0BAAS,CAAC,QAAQ;gBAC7B,WAAW,EAAE,aAAa;gBAC1B,0BAA0B,EACxB,4CAA4C;gBAC9C,8BAA8B,EAC5B,4CAA4C;gBAC9C,yBAAyB,EAAE,4CAA4C;gBACvE,OAAO,EAAE,CAAC;aACX;SACF;KACF;CACF,CAAC,CAAC"}
|
@@ -13,6 +13,7 @@ const providers_1 = require("@ethersproject/providers");
|
|
13
13
|
require("reflect-metadata");
|
14
14
|
const contract_helpers_1 = require("@aave/contract-helpers");
|
15
15
|
const math_utils_1 = require("@aave/math-utils");
|
16
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
16
17
|
const constants_1 = require("./constants");
|
17
18
|
const constants_2 = require("../../utils/clients/constants");
|
18
19
|
const helpers_1 = require("./helpers");
|
@@ -23,7 +24,7 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
24
|
const lendingConfig = lendingConfigsArray[i];
|
24
25
|
if (!lendingConfig)
|
25
26
|
continue;
|
26
|
-
const { uiPoolDataProviderAddress, uiIncentiveDataProviderAddress, lendingPoolAddressProvider, chainId, networkId, } = lendingConfig;
|
27
|
+
const { uiPoolDataProviderAddress, uiIncentiveDataProviderAddress, lendingPoolAddressProvider, chainId, networkId, elementName, } = lendingConfig;
|
27
28
|
const rpcEndpoint = (0, constants_2.getRpcEndpoint)(networkId);
|
28
29
|
const user = (_a = rpcEndpoint.basicAuth) === null || _a === void 0 ? void 0 : _a.username;
|
29
30
|
const password = (_b = rpcEndpoint.basicAuth) === null || _b === void 0 ? void 0 : _b.password;
|
@@ -66,6 +67,35 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
67
|
marketReferencePriceInUsd,
|
67
68
|
reserveIncentives,
|
68
69
|
});
|
70
|
+
// Borrow Lend Rates
|
71
|
+
for (const formattedReserve of formattedReserves) {
|
72
|
+
if (!formattedReserve.isActive)
|
73
|
+
continue;
|
74
|
+
const tokenAddress = formattedReserve.underlyingAsset;
|
75
|
+
const lendingApr = Number(formattedReserve.supplyAPR);
|
76
|
+
const borrowingApr = Number(formattedReserve.variableBorrowAPR);
|
77
|
+
const depositedAmount = Number(formattedReserve.totalLiquidity);
|
78
|
+
const borrowedAmount = Number(formattedReserve.totalDebt);
|
79
|
+
const rate = {
|
80
|
+
tokenAddress,
|
81
|
+
borrowYield: {
|
82
|
+
apy: (0, portfolio_core_1.aprToApy)(borrowingApr),
|
83
|
+
apr: borrowingApr,
|
84
|
+
},
|
85
|
+
borrowedAmount,
|
86
|
+
depositYield: {
|
87
|
+
apy: (0, portfolio_core_1.aprToApy)(lendingApr),
|
88
|
+
apr: lendingApr,
|
89
|
+
},
|
90
|
+
depositedAmount,
|
91
|
+
platformId: constants_1.platformId,
|
92
|
+
poolName: elementName,
|
93
|
+
};
|
94
|
+
yield cache.setItem(`${elementName}-${tokenAddress}`, rate, {
|
95
|
+
prefix: portfolio_core_1.borrowLendRatesPrefix,
|
96
|
+
networkId,
|
97
|
+
});
|
98
|
+
}
|
69
99
|
const lendingData = {
|
70
100
|
lendingPoolAddressProvider,
|
71
101
|
chainId,
|
@@ -80,6 +110,40 @@ const executor = (cache) => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
110
|
prefix: helpers_1.lendingPoolsPrefix,
|
81
111
|
networkId,
|
82
112
|
});
|
113
|
+
// aTokens (v3 only)
|
114
|
+
if (lendingConfig.version !== 3)
|
115
|
+
continue;
|
116
|
+
const underlyingAssetPrices = yield cache.getTokenPrices(lendingData.formattedReserves.map((r) => r.underlyingAsset), networkId);
|
117
|
+
for (let j = 0; j < lendingData.formattedReserves.length; j++) {
|
118
|
+
const formattedReserve = lendingData.formattedReserves[j];
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
120
|
+
const aTokenAddress = formattedReserve.aTokenAddress;
|
121
|
+
if (!aTokenAddress)
|
122
|
+
continue;
|
123
|
+
const underlyingAssetPrice = underlyingAssetPrices[j];
|
124
|
+
if (!underlyingAssetPrice)
|
125
|
+
continue;
|
126
|
+
yield cache.setTokenPriceSource({
|
127
|
+
id: constants_1.platformId,
|
128
|
+
weight: 1,
|
129
|
+
address: aTokenAddress,
|
130
|
+
networkId,
|
131
|
+
platformId: constants_1.platformId,
|
132
|
+
decimals: formattedReserve.decimals,
|
133
|
+
price: underlyingAssetPrice.price,
|
134
|
+
underlyings: [
|
135
|
+
{
|
136
|
+
address: formattedReserve.underlyingAsset,
|
137
|
+
amountPerLp: 1,
|
138
|
+
decimals: formattedReserve.decimals,
|
139
|
+
networkId,
|
140
|
+
price: underlyingAssetPrice.price,
|
141
|
+
},
|
142
|
+
],
|
143
|
+
elementName,
|
144
|
+
timestamp: Date.now(),
|
145
|
+
});
|
146
|
+
}
|
83
147
|
}
|
84
148
|
});
|
85
149
|
const job = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lendingPoolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/aave/lendingPoolsJob.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wDAAiE;AACjE,4BAA0B;AAC1B,6DAGgC;AAChC,iDAA+D;
|
1
|
+
{"version":3,"file":"lendingPoolsJob.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/plugins/aave/lendingPoolsJob.ts"],"names":[],"mappings":"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"}
|