@defisaver/positions-sdk 0.0.102 → 0.0.103
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/cjs/helpers/llamaLendHelpers/index.d.ts +3 -2
- package/cjs/helpers/llamaLendHelpers/index.js +6 -1
- package/cjs/llamaLend/index.d.ts +2 -2
- package/cjs/llamaLend/index.js +9 -4
- package/cjs/markets/llamaLend/contractAddresses.js +3 -3
- package/cjs/staking/staking.js +5 -1
- package/cjs/types/llamaLend.d.ts +5 -3
- package/cjs/types/llamaLend.js +1 -1
- package/esm/helpers/llamaLendHelpers/index.d.ts +3 -2
- package/esm/helpers/llamaLendHelpers/index.js +6 -1
- package/esm/llamaLend/index.d.ts +2 -2
- package/esm/llamaLend/index.js +9 -4
- package/esm/markets/llamaLend/contractAddresses.js +3 -3
- package/esm/staking/staking.js +5 -1
- package/esm/types/llamaLend.d.ts +5 -3
- package/esm/types/llamaLend.js +1 -1
- package/package.json +1 -1
- package/src/helpers/llamaLendHelpers/index.ts +11 -3
- package/src/llamaLend/index.ts +11 -4
- package/src/markets/llamaLend/contractAddresses.ts +3 -3
- package/src/staking/staking.ts +3 -1
- package/src/types/llamaLend.ts +4 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { LlamaLendAggregatedPositionData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
|
|
1
|
+
import { LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
|
|
2
2
|
import { NetworkNumber } from '../../types/common';
|
|
3
|
-
export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
|
|
3
|
+
export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest }: {
|
|
4
4
|
loanExists: boolean;
|
|
5
5
|
usedAssets: LlamaLendUsedAssets;
|
|
6
6
|
network: NetworkNumber;
|
|
7
7
|
selectedMarket: LlamaLendMarketData;
|
|
8
8
|
numOfBands: number | string;
|
|
9
|
+
assetsData: LlamaLendAssetsData;
|
|
9
10
|
}) => LlamaLendAggregatedPositionData;
|
|
@@ -18,9 +18,10 @@ exports.getLlamaLendAggregatedData = void 0;
|
|
|
18
18
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
19
19
|
const moneymarket_1 = require("../../moneymarket");
|
|
20
20
|
const utils_1 = require("../../services/utils");
|
|
21
|
+
const staking_1 = require("../../staking");
|
|
21
22
|
const getLlamaLendAggregatedData = (_a) => {
|
|
22
23
|
var _b;
|
|
23
|
-
var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
|
|
24
|
+
var { loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "assetsData"]);
|
|
24
25
|
const collAsset = selectedMarket.collAsset;
|
|
25
26
|
const debtAsset = selectedMarket.baseAsset;
|
|
26
27
|
const payload = {};
|
|
@@ -29,6 +30,10 @@ const getLlamaLendAggregatedData = (_a) => {
|
|
|
29
30
|
payload.suppliedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ collateral }) => collateral, ({ suppliedUsd }) => suppliedUsd);
|
|
30
31
|
payload.borrowedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
|
|
31
32
|
payload.suppliedForYieldUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedForYield }) => suppliedForYield || '0');
|
|
33
|
+
const { netApy, incentiveUsd, totalInterestUsd } = (0, staking_1.calculateNetApy)(usedAssets, assetsData);
|
|
34
|
+
payload.netApy = netApy;
|
|
35
|
+
payload.incentiveUsd = incentiveUsd;
|
|
36
|
+
payload.totalInterestUsd = totalInterestUsd;
|
|
32
37
|
payload.ratio = loanExists
|
|
33
38
|
? new decimal_js_1.default(payload.suppliedUsd)
|
|
34
39
|
.dividedBy(payload.borrowedUsd)
|
package/cjs/llamaLend/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Web3 from 'web3';
|
|
2
2
|
import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } from '../types';
|
|
3
3
|
import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
|
|
4
|
-
export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
|
|
4
|
+
export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendGlobalMarketData>;
|
|
5
5
|
export declare const getLlamaLendAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
|
|
6
6
|
export declare const getLlamaLendUserData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
|
|
7
|
-
export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendUserData>;
|
|
7
|
+
export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendUserData>;
|
package/cjs/llamaLend/index.js
CHANGED
|
@@ -21,6 +21,7 @@ const contracts_1 = require("../contracts");
|
|
|
21
21
|
const llamaLendHelpers_1 = require("../helpers/llamaLendHelpers");
|
|
22
22
|
const utils_1 = require("../services/utils");
|
|
23
23
|
const llamaLend_1 = require("../markets/llamaLend");
|
|
24
|
+
const staking_1 = require("../staking");
|
|
24
25
|
const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
26
|
const contract = (0, contracts_1.LlamaLendViewContract)(web3, network);
|
|
26
27
|
const minBand = parseInt(_minBand, 10);
|
|
@@ -57,7 +58,7 @@ const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) =>
|
|
|
57
58
|
highPrice: (0, tokens_1.assetAmountInEth)(band.highPrice),
|
|
58
59
|
}));
|
|
59
60
|
});
|
|
60
|
-
const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
const getLlamaLendGlobalData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
62
|
const contract = (0, contracts_1.LlamaLendViewContract)(web3, network);
|
|
62
63
|
const collAsset = selectedMarket.collAsset;
|
|
63
64
|
const debtAsset = selectedMarket.baseAsset;
|
|
@@ -104,6 +105,10 @@ const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void
|
|
|
104
105
|
canBeSupplied: true,
|
|
105
106
|
canBeBorrowed: false,
|
|
106
107
|
};
|
|
108
|
+
if (staking_1.STAKING_ASSETS.includes(collAsset)) {
|
|
109
|
+
assetsData[collAsset].incentiveSupplyApy = yield (0, staking_1.getStakingApy)(collAsset, defaultWeb3);
|
|
110
|
+
assetsData[collAsset].incentiveSupplyToken = collAsset;
|
|
111
|
+
}
|
|
107
112
|
return {
|
|
108
113
|
A: data.A,
|
|
109
114
|
loanDiscount: data.loanDiscount,
|
|
@@ -224,12 +229,12 @@ const getLlamaLendUserData = (web3, network, address, selectedMarket, marketData
|
|
|
224
229
|
priceHigh,
|
|
225
230
|
priceLow, liquidationDiscount: (0, tokens_1.assetAmountInEth)(data.liquidationDiscount), numOfBands: data.N, usedAssets,
|
|
226
231
|
status }), (0, llamaLendHelpers_1.getLlamaLendAggregatedData)({
|
|
227
|
-
loanExists: data.loanExists, usedAssets, network: common_1.NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
|
|
232
|
+
loanExists: data.loanExists, usedAssets, network: common_1.NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
|
|
228
233
|
})), { userBands });
|
|
229
234
|
});
|
|
230
235
|
exports.getLlamaLendUserData = getLlamaLendUserData;
|
|
231
|
-
const getLlamaLendFullPositionData = (web3, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
|
|
232
|
-
const marketData = yield (0, exports.getLlamaLendGlobalData)(web3, network, selectedMarket);
|
|
236
|
+
const getLlamaLendFullPositionData = (web3, network, address, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
237
|
+
const marketData = yield (0, exports.getLlamaLendGlobalData)(web3, network, selectedMarket, defaultWeb3);
|
|
233
238
|
const positionData = yield (0, exports.getLlamaLendUserData)(web3, network, address, selectedMarket, marketData);
|
|
234
239
|
return positionData;
|
|
235
240
|
});
|
|
@@ -10,9 +10,9 @@ const ethAddresses = {
|
|
|
10
10
|
vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
|
|
11
11
|
},
|
|
12
12
|
[types_1.LlamaLendVersions.LLWstethCrvusd2]: {
|
|
13
|
-
controllerId:
|
|
14
|
-
controllerAddress: '
|
|
15
|
-
vaultAddress: '
|
|
13
|
+
controllerId: 13,
|
|
14
|
+
controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
|
|
15
|
+
vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
|
|
16
16
|
},
|
|
17
17
|
[types_1.LlamaLendVersions.LLSusdeCrvusd]: {
|
|
18
18
|
controllerId: 7,
|
package/cjs/staking/staking.js
CHANGED
|
@@ -91,7 +91,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
|
|
|
91
91
|
const data = yield res.json();
|
|
92
92
|
return data.apy;
|
|
93
93
|
});
|
|
94
|
-
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
|
|
94
|
+
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
|
|
95
95
|
const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
|
|
96
96
|
try {
|
|
97
97
|
if (asset === 'stETH' || asset === 'wstETH')
|
|
@@ -112,6 +112,10 @@ const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefine
|
|
|
112
112
|
return getApyFromDfsApi('osETH');
|
|
113
113
|
if (asset === 'ETHx')
|
|
114
114
|
return getApyFromDfsApi('ETHx');
|
|
115
|
+
if (asset === 'rsETH')
|
|
116
|
+
return getApyFromDfsApi('rsETH');
|
|
117
|
+
if (asset === 'pufETH')
|
|
118
|
+
return getApyFromDfsApi('pufETH');
|
|
115
119
|
}
|
|
116
120
|
catch (e) {
|
|
117
121
|
console.error(`Failed to fetch APY for ${asset}`);
|
package/cjs/types/llamaLend.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare enum LLVersionsArb {
|
|
|
24
24
|
LLWbtcCrvusd2 = "llamaLendWBTCcrvUSD2",
|
|
25
25
|
LLCrvCrvusd = "llamaLendCRVcrvUSD",
|
|
26
26
|
LLWethCrvusd = "llamaLendWETHcrvUSD",
|
|
27
|
-
|
|
27
|
+
LLWethCrvusd2 = "llamaLendWETHcrvUSD2"
|
|
28
28
|
}
|
|
29
29
|
export declare const LlamaLendVersions: {
|
|
30
30
|
readonly LLArbCrvusd: LLVersionsArb.LLArbCrvusd;
|
|
@@ -34,14 +34,13 @@ export declare const LlamaLendVersions: {
|
|
|
34
34
|
readonly LLWbtcCrvusd2: LLVersionsArb.LLWbtcCrvusd2;
|
|
35
35
|
readonly LLCrvCrvusd: LLVersionsArb.LLCrvCrvusd;
|
|
36
36
|
readonly LLWethCrvusd: LLVersionsArb.LLWethCrvusd;
|
|
37
|
-
readonly
|
|
37
|
+
readonly LLWethCrvusd2: LLVersionsArb.LLWethCrvusd2;
|
|
38
38
|
readonly LLWstethCrvusd: LLVersionsEth.LLWstethCrvusd;
|
|
39
39
|
readonly LLWstethCrvusd2: LLVersionsEth.LLWstethCrvusd2;
|
|
40
40
|
readonly LLSusdeCrvusd: LLVersionsEth.LLSusdeCrvusd;
|
|
41
41
|
readonly LLSusdeCrvusd2: LLVersionsEth.LLSusdeCrvusd2;
|
|
42
42
|
readonly LLPufethCrvusd: LLVersionsEth.LLPufethCrvusd;
|
|
43
43
|
readonly LLUsdeCrvusd: LLVersionsEth.LLUsdeCrvusd;
|
|
44
|
-
readonly LLWethCrvusd2: LLVersionsEth.LLWethCrvusd2;
|
|
45
44
|
readonly LLCrvusdCrv: LLVersionsEth.LLCrvusdCrv;
|
|
46
45
|
readonly LLTbtcCrvusd: LLVersionsEth.LLTbtcCrvusd;
|
|
47
46
|
readonly LLCrvusdTbtc: LLVersionsEth.LLCrvusdTbtc;
|
|
@@ -116,6 +115,9 @@ export interface LlamaLendAggregatedPositionData {
|
|
|
116
115
|
leveragedType: string;
|
|
117
116
|
leveragedAsset?: string;
|
|
118
117
|
liquidationPrice?: string;
|
|
118
|
+
netApy: string;
|
|
119
|
+
incentiveUsd: string;
|
|
120
|
+
totalInterestUsd: string;
|
|
119
121
|
}
|
|
120
122
|
export interface LlamaLendUsedAsset {
|
|
121
123
|
isSupplied: boolean;
|
package/cjs/types/llamaLend.js
CHANGED
|
@@ -32,7 +32,7 @@ var LLVersionsArb;
|
|
|
32
32
|
LLVersionsArb["LLWbtcCrvusd2"] = "llamaLendWBTCcrvUSD2";
|
|
33
33
|
LLVersionsArb["LLCrvCrvusd"] = "llamaLendCRVcrvUSD";
|
|
34
34
|
LLVersionsArb["LLWethCrvusd"] = "llamaLendWETHcrvUSD";
|
|
35
|
-
LLVersionsArb["
|
|
35
|
+
LLVersionsArb["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
|
|
36
36
|
})(LLVersionsArb || (exports.LLVersionsArb = LLVersionsArb = {}));
|
|
37
37
|
exports.LlamaLendVersions = Object.assign(Object.assign({}, LLVersionsEth), LLVersionsArb);
|
|
38
38
|
var LlamaLendStatus;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { LlamaLendAggregatedPositionData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
|
|
1
|
+
import { LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
|
|
2
2
|
import { NetworkNumber } from '../../types/common';
|
|
3
|
-
export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
|
|
3
|
+
export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest }: {
|
|
4
4
|
loanExists: boolean;
|
|
5
5
|
usedAssets: LlamaLendUsedAssets;
|
|
6
6
|
network: NetworkNumber;
|
|
7
7
|
selectedMarket: LlamaLendMarketData;
|
|
8
8
|
numOfBands: number | string;
|
|
9
|
+
assetsData: LlamaLendAssetsData;
|
|
9
10
|
}) => LlamaLendAggregatedPositionData;
|
|
@@ -12,9 +12,10 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import Dec from 'decimal.js';
|
|
13
13
|
import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
|
|
14
14
|
import { mapRange } from '../../services/utils';
|
|
15
|
+
import { calculateNetApy } from '../../staking';
|
|
15
16
|
export const getLlamaLendAggregatedData = (_a) => {
|
|
16
17
|
var _b;
|
|
17
|
-
var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
|
|
18
|
+
var { loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "assetsData"]);
|
|
18
19
|
const collAsset = selectedMarket.collAsset;
|
|
19
20
|
const debtAsset = selectedMarket.baseAsset;
|
|
20
21
|
const payload = {};
|
|
@@ -23,6 +24,10 @@ export const getLlamaLendAggregatedData = (_a) => {
|
|
|
23
24
|
payload.suppliedUsd = getAssetsTotal(usedAssets, ({ collateral }) => collateral, ({ suppliedUsd }) => suppliedUsd);
|
|
24
25
|
payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
|
|
25
26
|
payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedForYield }) => suppliedForYield || '0');
|
|
27
|
+
const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData);
|
|
28
|
+
payload.netApy = netApy;
|
|
29
|
+
payload.incentiveUsd = incentiveUsd;
|
|
30
|
+
payload.totalInterestUsd = totalInterestUsd;
|
|
26
31
|
payload.ratio = loanExists
|
|
27
32
|
? new Dec(payload.suppliedUsd)
|
|
28
33
|
.dividedBy(payload.borrowedUsd)
|
package/esm/llamaLend/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Web3 from 'web3';
|
|
2
2
|
import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } from '../types';
|
|
3
3
|
import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
|
|
4
|
-
export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
|
|
4
|
+
export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendGlobalMarketData>;
|
|
5
5
|
export declare const getLlamaLendAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
|
|
6
6
|
export declare const getLlamaLendUserData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
|
|
7
|
-
export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendUserData>;
|
|
7
|
+
export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendUserData>;
|
package/esm/llamaLend/index.js
CHANGED
|
@@ -15,6 +15,7 @@ import { LlamaLendViewContract } from '../contracts';
|
|
|
15
15
|
import { getLlamaLendAggregatedData } from '../helpers/llamaLendHelpers';
|
|
16
16
|
import { getEthAmountForDecimals, wethToEth } from '../services/utils';
|
|
17
17
|
import { getLlamaLendMarketFromControllerAddress } from '../markets/llamaLend';
|
|
18
|
+
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
18
19
|
const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
20
|
const contract = LlamaLendViewContract(web3, network);
|
|
20
21
|
const minBand = parseInt(_minBand, 10);
|
|
@@ -51,7 +52,7 @@ const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) =>
|
|
|
51
52
|
highPrice: assetAmountInEth(band.highPrice),
|
|
52
53
|
}));
|
|
53
54
|
});
|
|
54
|
-
export const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
export const getLlamaLendGlobalData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
56
|
const contract = LlamaLendViewContract(web3, network);
|
|
56
57
|
const collAsset = selectedMarket.collAsset;
|
|
57
58
|
const debtAsset = selectedMarket.baseAsset;
|
|
@@ -98,6 +99,10 @@ export const getLlamaLendGlobalData = (web3, network, selectedMarket) => __await
|
|
|
98
99
|
canBeSupplied: true,
|
|
99
100
|
canBeBorrowed: false,
|
|
100
101
|
};
|
|
102
|
+
if (STAKING_ASSETS.includes(collAsset)) {
|
|
103
|
+
assetsData[collAsset].incentiveSupplyApy = yield getStakingApy(collAsset, defaultWeb3);
|
|
104
|
+
assetsData[collAsset].incentiveSupplyToken = collAsset;
|
|
105
|
+
}
|
|
101
106
|
return {
|
|
102
107
|
A: data.A,
|
|
103
108
|
loanDiscount: data.loanDiscount,
|
|
@@ -216,11 +221,11 @@ export const getLlamaLendUserData = (web3, network, address, selectedMarket, mar
|
|
|
216
221
|
priceHigh,
|
|
217
222
|
priceLow, liquidationDiscount: assetAmountInEth(data.liquidationDiscount), numOfBands: data.N, usedAssets,
|
|
218
223
|
status }), getLlamaLendAggregatedData({
|
|
219
|
-
loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
|
|
224
|
+
loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
|
|
220
225
|
})), { userBands });
|
|
221
226
|
});
|
|
222
|
-
export const getLlamaLendFullPositionData = (web3, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
-
const marketData = yield getLlamaLendGlobalData(web3, network, selectedMarket);
|
|
227
|
+
export const getLlamaLendFullPositionData = (web3, network, address, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
228
|
+
const marketData = yield getLlamaLendGlobalData(web3, network, selectedMarket, defaultWeb3);
|
|
224
229
|
const positionData = yield getLlamaLendUserData(web3, network, address, selectedMarket, marketData);
|
|
225
230
|
return positionData;
|
|
226
231
|
});
|
|
@@ -7,9 +7,9 @@ const ethAddresses = {
|
|
|
7
7
|
vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
|
|
8
8
|
},
|
|
9
9
|
[LlamaLendVersions.LLWstethCrvusd2]: {
|
|
10
|
-
controllerId:
|
|
11
|
-
controllerAddress: '
|
|
12
|
-
vaultAddress: '
|
|
10
|
+
controllerId: 13,
|
|
11
|
+
controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
|
|
12
|
+
vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
|
|
13
13
|
},
|
|
14
14
|
[LlamaLendVersions.LLSusdeCrvusd]: {
|
|
15
15
|
controllerId: 7,
|
package/esm/staking/staking.js
CHANGED
|
@@ -81,7 +81,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
|
|
|
81
81
|
const data = yield res.json();
|
|
82
82
|
return data.apy;
|
|
83
83
|
});
|
|
84
|
-
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
|
|
84
|
+
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
|
|
85
85
|
export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
|
|
86
86
|
try {
|
|
87
87
|
if (asset === 'stETH' || asset === 'wstETH')
|
|
@@ -102,6 +102,10 @@ export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = u
|
|
|
102
102
|
return getApyFromDfsApi('osETH');
|
|
103
103
|
if (asset === 'ETHx')
|
|
104
104
|
return getApyFromDfsApi('ETHx');
|
|
105
|
+
if (asset === 'rsETH')
|
|
106
|
+
return getApyFromDfsApi('rsETH');
|
|
107
|
+
if (asset === 'pufETH')
|
|
108
|
+
return getApyFromDfsApi('pufETH');
|
|
105
109
|
}
|
|
106
110
|
catch (e) {
|
|
107
111
|
console.error(`Failed to fetch APY for ${asset}`);
|
package/esm/types/llamaLend.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare enum LLVersionsArb {
|
|
|
24
24
|
LLWbtcCrvusd2 = "llamaLendWBTCcrvUSD2",
|
|
25
25
|
LLCrvCrvusd = "llamaLendCRVcrvUSD",
|
|
26
26
|
LLWethCrvusd = "llamaLendWETHcrvUSD",
|
|
27
|
-
|
|
27
|
+
LLWethCrvusd2 = "llamaLendWETHcrvUSD2"
|
|
28
28
|
}
|
|
29
29
|
export declare const LlamaLendVersions: {
|
|
30
30
|
readonly LLArbCrvusd: LLVersionsArb.LLArbCrvusd;
|
|
@@ -34,14 +34,13 @@ export declare const LlamaLendVersions: {
|
|
|
34
34
|
readonly LLWbtcCrvusd2: LLVersionsArb.LLWbtcCrvusd2;
|
|
35
35
|
readonly LLCrvCrvusd: LLVersionsArb.LLCrvCrvusd;
|
|
36
36
|
readonly LLWethCrvusd: LLVersionsArb.LLWethCrvusd;
|
|
37
|
-
readonly
|
|
37
|
+
readonly LLWethCrvusd2: LLVersionsArb.LLWethCrvusd2;
|
|
38
38
|
readonly LLWstethCrvusd: LLVersionsEth.LLWstethCrvusd;
|
|
39
39
|
readonly LLWstethCrvusd2: LLVersionsEth.LLWstethCrvusd2;
|
|
40
40
|
readonly LLSusdeCrvusd: LLVersionsEth.LLSusdeCrvusd;
|
|
41
41
|
readonly LLSusdeCrvusd2: LLVersionsEth.LLSusdeCrvusd2;
|
|
42
42
|
readonly LLPufethCrvusd: LLVersionsEth.LLPufethCrvusd;
|
|
43
43
|
readonly LLUsdeCrvusd: LLVersionsEth.LLUsdeCrvusd;
|
|
44
|
-
readonly LLWethCrvusd2: LLVersionsEth.LLWethCrvusd2;
|
|
45
44
|
readonly LLCrvusdCrv: LLVersionsEth.LLCrvusdCrv;
|
|
46
45
|
readonly LLTbtcCrvusd: LLVersionsEth.LLTbtcCrvusd;
|
|
47
46
|
readonly LLCrvusdTbtc: LLVersionsEth.LLCrvusdTbtc;
|
|
@@ -116,6 +115,9 @@ export interface LlamaLendAggregatedPositionData {
|
|
|
116
115
|
leveragedType: string;
|
|
117
116
|
leveragedAsset?: string;
|
|
118
117
|
liquidationPrice?: string;
|
|
118
|
+
netApy: string;
|
|
119
|
+
incentiveUsd: string;
|
|
120
|
+
totalInterestUsd: string;
|
|
119
121
|
}
|
|
120
122
|
export interface LlamaLendUsedAsset {
|
|
121
123
|
isSupplied: boolean;
|
package/esm/types/llamaLend.js
CHANGED
|
@@ -29,7 +29,7 @@ export var LLVersionsArb;
|
|
|
29
29
|
LLVersionsArb["LLWbtcCrvusd2"] = "llamaLendWBTCcrvUSD2";
|
|
30
30
|
LLVersionsArb["LLCrvCrvusd"] = "llamaLendCRVcrvUSD";
|
|
31
31
|
LLVersionsArb["LLWethCrvusd"] = "llamaLendWETHcrvUSD";
|
|
32
|
-
LLVersionsArb["
|
|
32
|
+
LLVersionsArb["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
|
|
33
33
|
})(LLVersionsArb || (LLVersionsArb = {}));
|
|
34
34
|
export const LlamaLendVersions = Object.assign(Object.assign({}, LLVersionsEth), LLVersionsArb);
|
|
35
35
|
export var LlamaLendStatus;
|
package/package.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import Dec from 'decimal.js';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets,
|
|
4
|
+
} from '../../types';
|
|
3
5
|
import { MMUsedAssets, NetworkNumber } from '../../types/common';
|
|
4
6
|
import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
|
|
5
7
|
import { mapRange } from '../../services/utils';
|
|
8
|
+
import { calculateNetApy } from '../../staking';
|
|
6
9
|
|
|
7
10
|
export const getLlamaLendAggregatedData = ({
|
|
8
|
-
loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest
|
|
11
|
+
loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest
|
|
9
12
|
}:{
|
|
10
|
-
loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string
|
|
13
|
+
loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string, assetsData: LlamaLendAssetsData,
|
|
11
14
|
}): LlamaLendAggregatedPositionData => {
|
|
12
15
|
const collAsset = selectedMarket.collAsset;
|
|
13
16
|
const debtAsset = selectedMarket.baseAsset;
|
|
@@ -19,6 +22,11 @@ export const getLlamaLendAggregatedData = ({
|
|
|
19
22
|
payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
|
|
20
23
|
payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ suppliedForYield }: { suppliedForYield?: string }) => suppliedForYield || '0');
|
|
21
24
|
|
|
25
|
+
const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData as any);
|
|
26
|
+
payload.netApy = netApy;
|
|
27
|
+
payload.incentiveUsd = incentiveUsd;
|
|
28
|
+
payload.totalInterestUsd = totalInterestUsd;
|
|
29
|
+
|
|
22
30
|
payload.ratio = loanExists
|
|
23
31
|
? new Dec(payload.suppliedUsd)
|
|
24
32
|
.dividedBy(payload.borrowedUsd)
|
package/src/llamaLend/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { getLlamaLendAggregatedData } from '../helpers/llamaLendHelpers';
|
|
|
13
13
|
import { getAbiItem, getEthAmountForDecimals, wethToEth } from '../services/utils';
|
|
14
14
|
import { USD_QUOTE } from '../constants';
|
|
15
15
|
import { getLlamaLendMarketFromControllerAddress } from '../markets/llamaLend';
|
|
16
|
+
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
16
17
|
|
|
17
18
|
const getAndFormatBands = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, _minBand: string, _maxBand: string) => {
|
|
18
19
|
const contract = LlamaLendViewContract(web3, network);
|
|
@@ -52,7 +53,7 @@ const getAndFormatBands = async (web3: Web3, network: NetworkNumber, selectedMar
|
|
|
52
53
|
}));
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData): Promise<LlamaLendGlobalMarketData> => {
|
|
56
|
+
export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3): Promise<LlamaLendGlobalMarketData> => {
|
|
56
57
|
const contract = LlamaLendViewContract(web3, network);
|
|
57
58
|
|
|
58
59
|
const collAsset = selectedMarket.collAsset;
|
|
@@ -109,6 +110,12 @@ export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber,
|
|
|
109
110
|
canBeSupplied: true,
|
|
110
111
|
canBeBorrowed: false,
|
|
111
112
|
};
|
|
113
|
+
|
|
114
|
+
if (STAKING_ASSETS.includes(collAsset)) {
|
|
115
|
+
assetsData[collAsset].incentiveSupplyApy = await getStakingApy(collAsset, defaultWeb3);
|
|
116
|
+
assetsData[collAsset].incentiveSupplyToken = collAsset;
|
|
117
|
+
}
|
|
118
|
+
|
|
112
119
|
return {
|
|
113
120
|
A: data.A,
|
|
114
121
|
loanDiscount: data.loanDiscount,
|
|
@@ -255,14 +262,14 @@ export const getLlamaLendUserData = async (web3: Web3, network: NetworkNumber, a
|
|
|
255
262
|
usedAssets,
|
|
256
263
|
status,
|
|
257
264
|
...getLlamaLendAggregatedData({
|
|
258
|
-
loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
|
|
265
|
+
loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
|
|
259
266
|
}),
|
|
260
267
|
userBands,
|
|
261
268
|
};
|
|
262
269
|
};
|
|
263
270
|
|
|
264
|
-
export const getLlamaLendFullPositionData = async (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData): Promise<LlamaLendUserData> => {
|
|
265
|
-
const marketData = await getLlamaLendGlobalData(web3, network, selectedMarket);
|
|
271
|
+
export const getLlamaLendFullPositionData = async (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3): Promise<LlamaLendUserData> => {
|
|
272
|
+
const marketData = await getLlamaLendGlobalData(web3, network, selectedMarket, defaultWeb3);
|
|
266
273
|
const positionData = await getLlamaLendUserData(web3, network, address, selectedMarket, marketData);
|
|
267
274
|
return positionData;
|
|
268
275
|
};
|
|
@@ -16,9 +16,9 @@ const ethAddresses: Record<LLVersionsEth, LLAddresses> = {
|
|
|
16
16
|
vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
|
|
17
17
|
},
|
|
18
18
|
[LlamaLendVersions.LLWstethCrvusd2]: {
|
|
19
|
-
controllerId:
|
|
20
|
-
controllerAddress: '
|
|
21
|
-
vaultAddress: '
|
|
19
|
+
controllerId: 13,
|
|
20
|
+
controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
|
|
21
|
+
vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
|
|
22
22
|
},
|
|
23
23
|
[LlamaLendVersions.LLSusdeCrvusd]: {
|
|
24
24
|
controllerId: 7,
|
package/src/staking/staking.ts
CHANGED
|
@@ -83,7 +83,7 @@ const getApyFromDfsApi = async (asset: string) => {
|
|
|
83
83
|
return data.apy;
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
|
|
86
|
+
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
|
|
87
87
|
|
|
88
88
|
export const getStakingApy = (asset: string, web3: Web3, blockNumber: 'latest' | number = 'latest', fromBlock: number | undefined = undefined) => {
|
|
89
89
|
try {
|
|
@@ -96,6 +96,8 @@ export const getStakingApy = (asset: string, web3: Web3, blockNumber: 'latest' |
|
|
|
96
96
|
if (asset === 'ezETH') return getApyFromDfsApi('ezETH');
|
|
97
97
|
if (asset === 'osETH') return getApyFromDfsApi('osETH');
|
|
98
98
|
if (asset === 'ETHx') return getApyFromDfsApi('ETHx');
|
|
99
|
+
if (asset === 'rsETH') return getApyFromDfsApi('rsETH');
|
|
100
|
+
if (asset === 'pufETH') return getApyFromDfsApi('pufETH');
|
|
99
101
|
} catch (e) {
|
|
100
102
|
console.error(`Failed to fetch APY for ${asset}`);
|
|
101
103
|
return '0';
|
package/src/types/llamaLend.ts
CHANGED
|
@@ -31,7 +31,7 @@ export enum LLVersionsArb {
|
|
|
31
31
|
LLWbtcCrvusd2 = 'llamaLendWBTCcrvUSD2',
|
|
32
32
|
LLCrvCrvusd = 'llamaLendCRVcrvUSD',
|
|
33
33
|
LLWethCrvusd = 'llamaLendWETHcrvUSD',
|
|
34
|
-
|
|
34
|
+
LLWethCrvusd2 = 'llamaLendWETHcrvUSD2',
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export const LlamaLendVersions = {
|
|
@@ -111,6 +111,9 @@ export interface LlamaLendAggregatedPositionData {
|
|
|
111
111
|
leveragedType: string,
|
|
112
112
|
leveragedAsset?: string,
|
|
113
113
|
liquidationPrice?: string,
|
|
114
|
+
netApy: string,
|
|
115
|
+
incentiveUsd: string,
|
|
116
|
+
totalInterestUsd: string,
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
export interface LlamaLendUsedAsset {
|