@defisaver/positions-sdk 2.1.160-shifter-v2-dev → 2.1.161-portfolio-api-dev
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/aaveV2/index.js +0 -2
- package/cjs/curveUsd/index.d.ts +2 -5
- package/cjs/curveUsd/index.js +15 -30
- package/cjs/fluid/index.d.ts +0 -5
- package/cjs/fluid/index.js +1 -36
- package/cjs/helpers/aaveHelpers/index.js +0 -3
- package/cjs/helpers/aaveV4Helpers/index.js +0 -1
- package/cjs/helpers/compoundHelpers/index.js +0 -2
- package/cjs/helpers/curveUsdHelpers/index.d.ts +1 -3
- package/cjs/helpers/curveUsdHelpers/index.js +2 -16
- package/cjs/helpers/fluidHelpers/index.js +0 -1
- package/cjs/helpers/liquityV2Helpers/index.js +0 -1
- package/cjs/helpers/llamaLendHelpers/index.js +0 -2
- package/cjs/helpers/makerHelpers/index.d.ts +1 -1
- package/cjs/helpers/makerHelpers/index.js +2 -2
- package/cjs/helpers/morphoBlueHelpers/index.js +0 -2
- package/cjs/helpers/morphoMidnightHelpers/index.js +0 -2
- package/cjs/helpers/sparkHelpers/index.js +0 -1
- package/cjs/liquity/index.js +2 -16
- package/cjs/maker/index.d.ts +2 -7
- package/cjs/maker/index.js +12 -45
- package/cjs/markets/index.d.ts +0 -1
- package/cjs/markets/index.js +1 -3
- package/cjs/portfolio/index.d.ts +1 -5
- package/cjs/portfolio/index.js +7 -277
- package/cjs/staking/staking.d.ts +0 -20
- package/cjs/staking/staking.js +1 -19
- package/cjs/types/aave.d.ts +15 -4
- package/cjs/types/aaveV4.d.ts +0 -1
- package/cjs/types/compound.d.ts +26 -4
- package/cjs/types/curveUsd.d.ts +9 -7
- package/cjs/types/fluid.d.ts +0 -1
- package/cjs/types/liquity.d.ts +0 -4
- package/cjs/types/liquityV2.d.ts +0 -2
- package/cjs/types/llamaLend.d.ts +12 -1
- package/cjs/types/maker.d.ts +0 -4
- package/cjs/types/morphoBlue.d.ts +2 -2
- package/cjs/types/morphoMidnight.d.ts +0 -1
- package/cjs/types/portfolio.d.ts +10 -26
- package/cjs/types/spark.d.ts +21 -3
- package/esm/aaveV2/index.js +0 -2
- package/esm/curveUsd/index.d.ts +2 -5
- package/esm/curveUsd/index.js +15 -30
- package/esm/fluid/index.d.ts +0 -5
- package/esm/fluid/index.js +0 -33
- package/esm/helpers/aaveHelpers/index.js +0 -3
- package/esm/helpers/aaveV4Helpers/index.js +0 -1
- package/esm/helpers/compoundHelpers/index.js +0 -2
- package/esm/helpers/curveUsdHelpers/index.d.ts +1 -3
- package/esm/helpers/curveUsdHelpers/index.js +2 -16
- package/esm/helpers/fluidHelpers/index.js +0 -1
- package/esm/helpers/liquityV2Helpers/index.js +0 -1
- package/esm/helpers/llamaLendHelpers/index.js +0 -2
- package/esm/helpers/makerHelpers/index.d.ts +1 -1
- package/esm/helpers/makerHelpers/index.js +2 -2
- package/esm/helpers/morphoBlueHelpers/index.js +0 -2
- package/esm/helpers/morphoMidnightHelpers/index.js +0 -2
- package/esm/helpers/sparkHelpers/index.js +0 -1
- package/esm/liquity/index.js +2 -16
- package/esm/maker/index.d.ts +2 -7
- package/esm/maker/index.js +13 -44
- package/esm/markets/index.d.ts +0 -1
- package/esm/markets/index.js +0 -1
- package/esm/portfolio/index.d.ts +1 -5
- package/esm/portfolio/index.js +10 -279
- package/esm/staking/staking.d.ts +0 -20
- package/esm/staking/staking.js +0 -17
- package/esm/types/aave.d.ts +15 -4
- package/esm/types/aaveV4.d.ts +0 -1
- package/esm/types/compound.d.ts +26 -4
- package/esm/types/curveUsd.d.ts +9 -7
- package/esm/types/fluid.d.ts +0 -1
- package/esm/types/liquity.d.ts +0 -4
- package/esm/types/liquityV2.d.ts +0 -2
- package/esm/types/llamaLend.d.ts +12 -1
- package/esm/types/maker.d.ts +0 -4
- package/esm/types/morphoBlue.d.ts +2 -2
- package/esm/types/morphoMidnight.d.ts +0 -1
- package/esm/types/portfolio.d.ts +10 -26
- package/esm/types/spark.d.ts +21 -3
- package/package.json +1 -1
- package/src/aaveV2/index.ts +0 -2
- package/src/curveUsd/index.ts +16 -33
- package/src/fluid/index.ts +0 -40
- package/src/helpers/aaveHelpers/index.ts +0 -3
- package/src/helpers/aaveV4Helpers/index.ts +0 -1
- package/src/helpers/compoundHelpers/index.ts +0 -2
- package/src/helpers/curveUsdHelpers/index.ts +2 -23
- package/src/helpers/fluidHelpers/index.ts +0 -1
- package/src/helpers/liquityV2Helpers/index.ts +0 -1
- package/src/helpers/llamaLendHelpers/index.ts +0 -2
- package/src/helpers/makerHelpers/index.ts +1 -2
- package/src/helpers/morphoBlueHelpers/index.ts +0 -2
- package/src/helpers/morphoMidnightHelpers/index.ts +0 -2
- package/src/helpers/sparkHelpers/index.ts +0 -1
- package/src/liquity/index.ts +2 -17
- package/src/maker/index.ts +29 -77
- package/src/markets/index.ts +1 -2
- package/src/portfolio/index.ts +8 -261
- package/src/staking/staking.ts +0 -28
- package/src/types/aave.ts +18 -4
- package/src/types/aaveV4.ts +0 -1
- package/src/types/compound.ts +38 -4
- package/src/types/curveUsd.ts +17 -8
- package/src/types/fluid.ts +0 -1
- package/src/types/liquity.ts +0 -6
- package/src/types/liquityV2.ts +0 -2
- package/src/types/llamaLend.ts +19 -1
- package/src/types/maker.ts +0 -6
- package/src/types/morphoBlue.ts +3 -2
- package/src/types/morphoMidnight.ts +0 -1
- package/src/types/portfolio.ts +12 -31
- package/src/types/spark.ts +25 -3
- package/cjs/markets/maker/index.d.ts +0 -1
- package/cjs/markets/maker/index.js +0 -13
- package/esm/markets/maker/index.d.ts +0 -1
- package/esm/markets/maker/index.js +0 -10
- package/src/markets/maker/index.ts +0 -10
package/esm/types/compound.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export interface CompoundAssetData extends MMAssetData {
|
|
|
52
52
|
sortIndex?: number;
|
|
53
53
|
}
|
|
54
54
|
export interface CompoundV2AssetData extends CompoundAssetData {
|
|
55
|
+
exchangeRate?: string;
|
|
55
56
|
}
|
|
56
57
|
export interface CompoundV3AssetData extends CompoundAssetData {
|
|
57
58
|
borrowCollateralFactor: string;
|
|
@@ -63,6 +64,17 @@ export interface CompoundV3AssetData extends CompoundAssetData {
|
|
|
63
64
|
supplyCap: string;
|
|
64
65
|
priceInBaseAsset: string;
|
|
65
66
|
canBeWithdrawn: boolean;
|
|
67
|
+
tokenAddr?: EthAddress;
|
|
68
|
+
isBase?: boolean;
|
|
69
|
+
baseBorrowMin?: string;
|
|
70
|
+
baseTrackingBorrowRewardsSpeed?: string;
|
|
71
|
+
baseTrackingSupplyRewardsSpeed?: string;
|
|
72
|
+
borrowIndex?: string;
|
|
73
|
+
supplyIndex?: string;
|
|
74
|
+
trackingBorrowIndex?: string;
|
|
75
|
+
trackingSupplyIndex?: string;
|
|
76
|
+
rewardSupplySpeed?: string;
|
|
77
|
+
rewardBorrowSpeed?: string;
|
|
66
78
|
}
|
|
67
79
|
export interface CompoundAssetsData<T> {
|
|
68
80
|
[token: string]: T;
|
|
@@ -96,7 +108,6 @@ export interface CompoundAggregatedPositionData {
|
|
|
96
108
|
leftToBorrowUsd: string;
|
|
97
109
|
ratio: string;
|
|
98
110
|
collRatio: string;
|
|
99
|
-
safetyRatio: string;
|
|
100
111
|
netApy: string;
|
|
101
112
|
incentiveUsd: string;
|
|
102
113
|
totalInterestUsd: string;
|
|
@@ -116,7 +127,6 @@ export interface CompoundAggregatedPositionData {
|
|
|
116
127
|
export interface CompoundPositionData extends MMPositionData {
|
|
117
128
|
ratio: string;
|
|
118
129
|
minRatio: string;
|
|
119
|
-
safetyRatio?: string;
|
|
120
130
|
suppliedUsd: string;
|
|
121
131
|
borrowedUsd: string;
|
|
122
132
|
borrowLimitUsd: string;
|
|
@@ -125,9 +135,21 @@ export interface CompoundPositionData extends MMPositionData {
|
|
|
125
135
|
isSubscribedToAutomation?: boolean;
|
|
126
136
|
automationResubscribeRequired?: boolean;
|
|
127
137
|
}
|
|
128
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Fields getCompoundV2AggregatedData adds to every Compound V2 position at runtime — a subset of
|
|
140
|
+
* CompoundAggregatedPositionData. Optional, so code that builds a position by hand keeps compiling.
|
|
141
|
+
*/
|
|
142
|
+
export type CompoundV2PositionAggregatedFields = Partial<Pick<CompoundAggregatedPositionData, 'suppliedCollateralUsd' | 'liquidationLimitUsd' | 'leftToBorrowUsd' | 'collRatio' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice'>>;
|
|
143
|
+
/**
|
|
144
|
+
* Fields getCompoundV3AggregatedData adds to every Compound V3 position at runtime, on top of those declared in
|
|
145
|
+
* CompoundPositionData. Optional, so code that builds a position by hand keeps compiling.
|
|
146
|
+
*/
|
|
147
|
+
export type CompoundV3PositionAggregatedFields = Partial<Omit<CompoundAggregatedPositionData, keyof MMPositionData | 'ratio' | 'minRatio' | 'suppliedUsd' | 'borrowedUsd' | 'borrowLimitUsd' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
148
|
+
export interface CompoundV2PositionData extends CompoundPositionData, CompoundV2PositionAggregatedFields {
|
|
129
149
|
usedAssets: CompoundV2UsedAssets;
|
|
150
|
+
borrowStableSupplyUnstable?: boolean;
|
|
130
151
|
}
|
|
131
|
-
export interface CompoundV3PositionData extends CompoundPositionData {
|
|
152
|
+
export interface CompoundV3PositionData extends CompoundPositionData, CompoundV3PositionAggregatedFields {
|
|
132
153
|
usedAssets: CompoundV3UsedAssets;
|
|
154
|
+
isAllowed?: boolean;
|
|
133
155
|
}
|
package/esm/types/curveUsd.d.ts
CHANGED
|
@@ -60,6 +60,7 @@ export interface CrvUSDGlobalMarketData {
|
|
|
60
60
|
leftToBorrow: string;
|
|
61
61
|
bands: BandData[];
|
|
62
62
|
loanDiscount: string;
|
|
63
|
+
A?: bigint;
|
|
63
64
|
}
|
|
64
65
|
export interface CrvUSDAggregatedPositionData {
|
|
65
66
|
ratio: string;
|
|
@@ -73,9 +74,6 @@ export interface CrvUSDAggregatedPositionData {
|
|
|
73
74
|
collFactor: string;
|
|
74
75
|
leveragedType: LeverageType;
|
|
75
76
|
exposure: string;
|
|
76
|
-
netApy: string;
|
|
77
|
-
totalInterestUsd: string;
|
|
78
|
-
incentiveUsd: string;
|
|
79
77
|
leveragedAsset?: string;
|
|
80
78
|
liquidationPrice?: string;
|
|
81
79
|
}
|
|
@@ -94,7 +92,8 @@ export interface CrvUSDUsedAsset {
|
|
|
94
92
|
export interface CrvUSDUsedAssets {
|
|
95
93
|
[key: string]: CrvUSDUsedAsset;
|
|
96
94
|
}
|
|
97
|
-
export
|
|
95
|
+
export type CrvUSDPositionAggregatedFields = Partial<Pick<CrvUSDAggregatedPositionData, 'borrowLimitUsd' | 'minAllowedRatio' | 'collFactor' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice'>>;
|
|
96
|
+
export interface CrvUSDUserData extends CrvUSDPositionAggregatedFields {
|
|
98
97
|
debtAmount: string;
|
|
99
98
|
health: string;
|
|
100
99
|
healthPercent: string;
|
|
@@ -116,7 +115,10 @@ export interface CrvUSDUserData {
|
|
|
116
115
|
collateralPrice: string;
|
|
117
116
|
collRatio: string;
|
|
118
117
|
exposure: string;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
marketCollateralAmount?: bigint;
|
|
119
|
+
curveUsdCollateralAmount?: bigint;
|
|
120
|
+
N?: bigint;
|
|
121
|
+
bandRange?: readonly [bigint, bigint];
|
|
122
|
+
usersBands?: readonly [readonly bigint[], readonly bigint[]];
|
|
123
|
+
isInSoftLiquidation?: boolean;
|
|
122
124
|
}
|
package/esm/types/fluid.d.ts
CHANGED
package/esm/types/liquity.d.ts
CHANGED
|
@@ -24,11 +24,7 @@ export interface LiquityTroveInfo {
|
|
|
24
24
|
totalETH: string;
|
|
25
25
|
totalLUSD: string;
|
|
26
26
|
minCollateralRatio: number;
|
|
27
|
-
safetyRatio: string;
|
|
28
27
|
priceForRecovery: string;
|
|
29
28
|
debtInFront: string;
|
|
30
29
|
exposure: string;
|
|
31
|
-
netApy: string;
|
|
32
|
-
totalInterestUsd: string;
|
|
33
|
-
incentiveUsd: string;
|
|
34
30
|
}
|
package/esm/types/liquityV2.d.ts
CHANGED
|
@@ -94,7 +94,6 @@ export interface LiquityV2AggregatedTroveData {
|
|
|
94
94
|
liquidationPrice: string;
|
|
95
95
|
ratio: string;
|
|
96
96
|
collRatio: string;
|
|
97
|
-
safetyRatio: string;
|
|
98
97
|
exposure: string;
|
|
99
98
|
}
|
|
100
99
|
export interface LiquityV2TroveData {
|
|
@@ -102,7 +101,6 @@ export interface LiquityV2TroveData {
|
|
|
102
101
|
troveId: string;
|
|
103
102
|
ratio: string;
|
|
104
103
|
collRatio: string;
|
|
105
|
-
safetyRatio?: string;
|
|
106
104
|
liqRatio: string;
|
|
107
105
|
borrowLimitRatio: string;
|
|
108
106
|
interestRate: string;
|
package/esm/types/llamaLend.d.ts
CHANGED
|
@@ -138,7 +138,8 @@ export interface LlamaLendUsedAsset {
|
|
|
138
138
|
export interface LlamaLendUsedAssets {
|
|
139
139
|
[key: string]: LlamaLendUsedAsset;
|
|
140
140
|
}
|
|
141
|
-
export
|
|
141
|
+
export type LlamaLendPositionAggregatedFields = Partial<Pick<LlamaLendAggregatedPositionData, 'borrowLimitUsd' | 'minAllowedRatio' | 'collFactor' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice' | 'netApy' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
142
|
+
export interface LlamaLendUserData extends LlamaLendPositionAggregatedFields {
|
|
142
143
|
debtAmount: string;
|
|
143
144
|
health: string;
|
|
144
145
|
healthPercent: string;
|
|
@@ -157,4 +158,14 @@ export interface LlamaLendUserData {
|
|
|
157
158
|
loanExists: boolean;
|
|
158
159
|
borrowRate?: string;
|
|
159
160
|
exposure: string;
|
|
161
|
+
collateralPrice?: bigint;
|
|
162
|
+
marketCollateralAmount?: bigint;
|
|
163
|
+
debtTokenCollateralAmount?: bigint;
|
|
164
|
+
N?: bigint;
|
|
165
|
+
bandRange?: readonly [bigint, bigint];
|
|
166
|
+
usersBands?: readonly [readonly bigint[], readonly bigint[]];
|
|
167
|
+
collRatio?: bigint;
|
|
168
|
+
isInSoftLiquidation?: boolean;
|
|
169
|
+
debtTokenSuppliedShares?: bigint;
|
|
170
|
+
debtTokenSuppliedAssets?: bigint;
|
|
160
171
|
}
|
package/esm/types/maker.d.ts
CHANGED
|
@@ -43,7 +43,6 @@ export interface CdpData {
|
|
|
43
43
|
debtAssetMarketPrice: string;
|
|
44
44
|
liquidationPrice: string;
|
|
45
45
|
ratio: string;
|
|
46
|
-
safetyRatio: string;
|
|
47
46
|
liqRatio: string;
|
|
48
47
|
liqPercent: number;
|
|
49
48
|
assetPrice: string;
|
|
@@ -59,7 +58,4 @@ export interface CdpData {
|
|
|
59
58
|
liquidationFee: string;
|
|
60
59
|
lastUpdated: number;
|
|
61
60
|
exposure: string;
|
|
62
|
-
netApy: string;
|
|
63
|
-
totalInterestUsd: string;
|
|
64
|
-
incentiveUsd: string;
|
|
65
61
|
}
|
|
@@ -185,7 +185,6 @@ export interface MorphoBlueAggregatedPositionData {
|
|
|
185
185
|
totalInterestUsd: string;
|
|
186
186
|
ltv: string;
|
|
187
187
|
ratio: string;
|
|
188
|
-
safetyRatio: string;
|
|
189
188
|
leveragedType: LeverageType;
|
|
190
189
|
leveragedAsset?: string;
|
|
191
190
|
currentVolatilePairRatio?: string;
|
|
@@ -208,7 +207,6 @@ export interface MorphoBluePositionData {
|
|
|
208
207
|
totalInterestUsd: string;
|
|
209
208
|
ltv: string;
|
|
210
209
|
ratio: string;
|
|
211
|
-
safetyRatio?: string;
|
|
212
210
|
leveragedType: LeverageType;
|
|
213
211
|
leveragedAsset?: string;
|
|
214
212
|
currentVolatilePairRatio?: string;
|
|
@@ -216,6 +214,8 @@ export interface MorphoBluePositionData {
|
|
|
216
214
|
supplyShares: string;
|
|
217
215
|
borrowShares: string;
|
|
218
216
|
exposure: string;
|
|
217
|
+
minCollRatio?: string;
|
|
218
|
+
collLiquidationRatio?: string;
|
|
219
219
|
}
|
|
220
220
|
export interface MorphoBlueEarnData {
|
|
221
221
|
apy: string;
|
package/esm/types/portfolio.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AaveV4AccountData,
|
|
1
|
+
import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
|
|
2
|
+
import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
|
|
3
3
|
import { EthAddress } from './common';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
|
|
5
|
+
import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
|
|
6
|
+
import { FluidVaultData } from './fluid';
|
|
7
7
|
import { LiquityTroveInfo } from './liquity';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { SparkMarketsData, SparkPositionData, SparkVersions } from './spark';
|
|
8
|
+
import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
9
|
+
import { CdpData } from './maker';
|
|
10
|
+
import { MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
|
|
11
|
+
import { MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
|
|
12
|
+
import { SparkPositionData, SparkVersions } from './spark';
|
|
14
13
|
export interface PortfolioProtocolData<T> {
|
|
15
14
|
error: string;
|
|
16
15
|
data: T | null;
|
|
@@ -60,18 +59,3 @@ export interface PortfolioPositionsDataForAddress {
|
|
|
60
59
|
export interface PortfolioPositionsData {
|
|
61
60
|
[key: EthAddress]: PortfolioPositionsDataForAddress;
|
|
62
61
|
}
|
|
63
|
-
export interface PortfolioMarketsData {
|
|
64
|
-
morphoMarketsData: Record<string, MorphoBlueMarketInfo>;
|
|
65
|
-
morphoMidnightMarketsData: Record<string, MorphoMidnightMarketInfo>;
|
|
66
|
-
compoundV3MarketsData: Record<string, CompoundV3MarketsData>;
|
|
67
|
-
sparkMarketsData: Record<string, SparkMarketsData>;
|
|
68
|
-
aaveV3MarketsData: Record<string, AaveV3MarketData>;
|
|
69
|
-
aaveV2MarketsData: Record<string, AaveV2MarketData>;
|
|
70
|
-
compoundV2MarketsData: Record<string, CompoundV2MarketsData>;
|
|
71
|
-
crvUsdMarketsData: Record<string, CrvUSDGlobalMarketData>;
|
|
72
|
-
llamaLendMarketsData: Record<string, LlamaLendGlobalMarketData>;
|
|
73
|
-
liquityV2MarketsData: Record<string, LiquityV2MarketData>;
|
|
74
|
-
aaveV4SpokesData: Record<string, AaveV4SpokeData>;
|
|
75
|
-
fluidMarketsData: Record<string, FluidMarketData>;
|
|
76
|
-
makerMarketsData: Record<string, IlkInfo>;
|
|
77
|
-
}
|
package/esm/types/spark.d.ts
CHANGED
|
@@ -46,6 +46,21 @@ export interface SparkAssetData extends MMAssetData {
|
|
|
46
46
|
eModeCategory: number;
|
|
47
47
|
liquidationBonus: string;
|
|
48
48
|
liquidationRatio: string;
|
|
49
|
+
debtCeilingForIsolationMode?: string;
|
|
50
|
+
isSiloed?: boolean;
|
|
51
|
+
isolationModeTotalDebt?: string;
|
|
52
|
+
isolationModeBorrowingEnabled?: boolean;
|
|
53
|
+
assetId?: number;
|
|
54
|
+
borrowRateStable?: string;
|
|
55
|
+
supplyCap?: string;
|
|
56
|
+
isInactive?: boolean;
|
|
57
|
+
isFrozen?: boolean;
|
|
58
|
+
isPaused?: boolean;
|
|
59
|
+
canBeWithdrawn?: boolean;
|
|
60
|
+
canBePayBacked?: boolean;
|
|
61
|
+
disabledStableBorrowing?: boolean;
|
|
62
|
+
isFlashLoanEnabled?: boolean;
|
|
63
|
+
aTokenAddress?: EthAddress;
|
|
49
64
|
}
|
|
50
65
|
export interface SparkAssetsData {
|
|
51
66
|
[token: string]: SparkAssetData;
|
|
@@ -85,7 +100,6 @@ export interface SparkAggregatedPositionData {
|
|
|
85
100
|
leftToBorrowUsd: string;
|
|
86
101
|
ratio: string;
|
|
87
102
|
collRatio: string;
|
|
88
|
-
safetyRatio: string;
|
|
89
103
|
netApy: string;
|
|
90
104
|
incentiveUsd: string;
|
|
91
105
|
totalInterestUsd: string;
|
|
@@ -101,11 +115,15 @@ export interface SparkAggregatedPositionData {
|
|
|
101
115
|
minHealthRatio: string;
|
|
102
116
|
exposure: string;
|
|
103
117
|
}
|
|
104
|
-
|
|
118
|
+
/**
|
|
119
|
+
* Fields sparkGetAggregatedPositionData adds to every Spark position at runtime, on top of those declared below.
|
|
120
|
+
* Optional, so code that builds a position by hand keeps compiling.
|
|
121
|
+
*/
|
|
122
|
+
export type SparkPositionAggregatedFields = Partial<Omit<SparkAggregatedPositionData, keyof MMPositionData | 'ratio' | 'collRatio' | 'suppliedUsd' | 'borrowedUsd' | 'borrowLimitUsd' | 'suppliedCollateralUsd' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
123
|
+
export interface SparkPositionData extends MMPositionData, SparkPositionAggregatedFields {
|
|
105
124
|
ratio: string;
|
|
106
125
|
minRatio: string;
|
|
107
126
|
collRatio: string;
|
|
108
|
-
safetyRatio?: string;
|
|
109
127
|
suppliedUsd: string;
|
|
110
128
|
borrowedUsd: string;
|
|
111
129
|
borrowLimitUsd: string;
|
package/package.json
CHANGED
package/src/aaveV2/index.ts
CHANGED
|
@@ -210,8 +210,6 @@ export const _getAaveV2AccountData = async (provider: Client, network: NetworkNu
|
|
|
210
210
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
211
211
|
? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
212
212
|
: '0';
|
|
213
|
-
// Aave v2 has no LTV-0 fallback (AaveV3View only), so its safety ratio is the plain ratio.
|
|
214
|
-
payload.safetyRatio = payload.ratio;
|
|
215
213
|
|
|
216
214
|
// Calculate borrow limits per asset
|
|
217
215
|
Object.values(payload.usedAssets).forEach((item) => {
|
package/src/curveUsd/index.ts
CHANGED
|
@@ -14,13 +14,6 @@ import { getCrvUsdAggregatedData } from '../helpers/curveUsdHelpers';
|
|
|
14
14
|
import { CrvUsdMarkets } from '../markets';
|
|
15
15
|
import { wethToEth } from '../services/utils';
|
|
16
16
|
import { getViemProvider, setViemBlockNumber } from '../services/viem';
|
|
17
|
-
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
18
|
-
|
|
19
|
-
/** Converts a per-second AMM rate (wei, 18 decimals) into a yearly compounded borrow APY in %. */
|
|
20
|
-
const ammRateToBorrowApy = (rateWei: string) => {
|
|
21
|
-
const exponent = new Dec(assetAmountInEth(rateWei)).mul(365).mul(86400);
|
|
22
|
-
return new Dec(new Dec(2.718281828459).pow(exponent).minus(1)).mul(100).toString();
|
|
23
|
-
};
|
|
24
17
|
|
|
25
18
|
const getAndFormatBands = async (provider: Client, network: NetworkNumber, selectedMarket: CrvUSDMarketData, _minBand: string, _maxBand: string) => {
|
|
26
19
|
const contract = CrvUSDViewContractViem(provider, network);
|
|
@@ -76,8 +69,15 @@ export const _getCurveUsdGlobalData = async (provider: Client, network: NetworkN
|
|
|
76
69
|
const totalDebt = assetAmountInEth(data.totalDebt.toString(), debtAsset);
|
|
77
70
|
const ammPrice = assetAmountInEth(data.ammPrice.toString(), debtAsset);
|
|
78
71
|
|
|
79
|
-
const
|
|
80
|
-
const
|
|
72
|
+
const rate = assetAmountInEth(data.ammRate.toString());
|
|
73
|
+
const futureRate = assetAmountInEth(data.monetaryPolicyRate.toString());
|
|
74
|
+
|
|
75
|
+
const exponentRate = new Dec(rate).mul(365).mul(86400);
|
|
76
|
+
const exponentFutureRate = new Dec(futureRate).mul(365).mul(86400);
|
|
77
|
+
const borrowRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
|
|
78
|
+
.toString();
|
|
79
|
+
const futureBorrowRate = new Dec(new Dec(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
|
|
80
|
+
.toString();
|
|
81
81
|
|
|
82
82
|
const bandsData = await getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
|
|
83
83
|
|
|
@@ -164,22 +164,13 @@ export const getCrvUsdAccountBalances = async (
|
|
|
164
164
|
controllerAddress: EthAddress,
|
|
165
165
|
): Promise<PositionBalances> => _getCrvUsdAccountBalances(getViemProvider(provider, network), network, block, addressMapping, address, controllerAddress);
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
* @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
|
|
169
|
-
*/
|
|
170
|
-
export const _getCurveUsdUserData = async (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string): Promise<CrvUSDUserData> => {
|
|
167
|
+
export const _getCurveUsdUserData = async (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string): Promise<CrvUSDUserData> => {
|
|
171
168
|
const contract = CrvUSDViewContractViem(provider, network);
|
|
169
|
+
|
|
170
|
+
const data = await contract.read.userData([selectedMarket.controllerAddress, address]);
|
|
172
171
|
const collAsset = selectedMarket.collAsset;
|
|
173
172
|
const debtAsset = selectedMarket.baseAsset;
|
|
174
173
|
|
|
175
|
-
const [data, collStakingApy, marketBorrowRate] = await Promise.all([
|
|
176
|
-
contract.read.userData([selectedMarket.controllerAddress, address]),
|
|
177
|
-
STAKING_ASSETS.includes(collAsset) ? getStakingApy(collAsset) : Promise.resolve('0'),
|
|
178
|
-
borrowRate !== undefined
|
|
179
|
-
? Promise.resolve(borrowRate)
|
|
180
|
-
: contract.read.globalData([selectedMarket.controllerAddress]).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
|
|
181
|
-
]);
|
|
182
|
-
|
|
183
174
|
const health = assetAmountInEth(data.health.toString());
|
|
184
175
|
const healthPercent = new Dec(health).mul(100).toString();
|
|
185
176
|
const collPrice = assetAmountInEth(data.collateralPrice.toString(), debtAsset);
|
|
@@ -211,7 +202,7 @@ export const _getCurveUsdUserData = async (provider: Client, network: NetworkNum
|
|
|
211
202
|
isBorrowed: new Dec(debtBorrowed).gt('0'),
|
|
212
203
|
symbol: 'crvUSD',
|
|
213
204
|
price: '1',
|
|
214
|
-
interestRate:
|
|
205
|
+
interestRate: '0',
|
|
215
206
|
},
|
|
216
207
|
} : {};
|
|
217
208
|
|
|
@@ -241,15 +232,8 @@ export const _getCurveUsdUserData = async (provider: Client, network: NetworkNum
|
|
|
241
232
|
numOfBands: data.N.toString(),
|
|
242
233
|
usedAssets,
|
|
243
234
|
status,
|
|
244
|
-
borrowRate: marketBorrowRate,
|
|
245
235
|
...getCrvUsdAggregatedData({
|
|
246
|
-
loanExists: data.loanExists,
|
|
247
|
-
usedAssets,
|
|
248
|
-
network: NetworkNumber.Eth,
|
|
249
|
-
selectedMarket,
|
|
250
|
-
numOfBands: data.N.toString(),
|
|
251
|
-
borrowRate: marketBorrowRate,
|
|
252
|
-
collStakingApy,
|
|
236
|
+
loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N.toString(),
|
|
253
237
|
}),
|
|
254
238
|
userBands,
|
|
255
239
|
};
|
|
@@ -261,11 +245,10 @@ export const getCurveUsdUserData = async (
|
|
|
261
245
|
address: EthAddress,
|
|
262
246
|
selectedMarket: CrvUSDMarketData,
|
|
263
247
|
activeBand: string,
|
|
264
|
-
|
|
265
|
-
): Promise<CrvUSDUserData> => _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand, borrowRate);
|
|
248
|
+
): Promise<CrvUSDUserData> => _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand);
|
|
266
249
|
|
|
267
250
|
export const getCurveUsdFullPositionData = async (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData): Promise<CrvUSDUserData> => {
|
|
268
251
|
const marketData = await getCurveUsdGlobalData(provider, network, selectedMarket);
|
|
269
|
-
const positionData = await getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand
|
|
252
|
+
const positionData = await getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand);
|
|
270
253
|
return positionData;
|
|
271
254
|
};
|
package/src/fluid/index.ts
CHANGED
|
@@ -1830,43 +1830,3 @@ export const _getUserPositionsPortfolio = async (provider: PublicClient, network
|
|
|
1830
1830
|
userData: userData[i],
|
|
1831
1831
|
})).filter(md => md.marketData !== undefined);
|
|
1832
1832
|
};
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
export const _getAllFluidMarketDataPortfolio = async (provider: PublicClient, network: NetworkNumber): Promise<Record<string, FluidMarketData>> => {
|
|
1836
|
-
const versions = getFluidVersionsDataForNetwork(network);
|
|
1837
|
-
if (versions.length === 0) return {};
|
|
1838
|
-
|
|
1839
|
-
const view = FluidViewContractViem(provider, network);
|
|
1840
|
-
const vaultsData = await Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
|
|
1841
|
-
|
|
1842
|
-
const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
|
|
1843
|
-
const vaultTokens = [getAssetInfoByAddress(vaultData.supplyToken0, network).symbol, getAssetInfoByAddress(vaultData.borrowToken0, network).symbol];
|
|
1844
|
-
if (vaultData.supplyToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.supplyToken1)) vaultTokens.push(getAssetInfoByAddress(vaultData.supplyToken1, network).symbol);
|
|
1845
|
-
if (vaultData.borrowToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.borrowToken1)) vaultTokens.push(getAssetInfoByAddress(vaultData.borrowToken1, network).symbol);
|
|
1846
|
-
return vaultTokens;
|
|
1847
|
-
}).flat()));
|
|
1848
|
-
|
|
1849
|
-
// ETH and WBTC needed for other tokens prices
|
|
1850
|
-
if (!tokens.includes('ETH')) tokens.push('ETH');
|
|
1851
|
-
if (!tokens.includes('WBTC')) tokens.push('WBTC');
|
|
1852
|
-
|
|
1853
|
-
const [tokenPrices, merklCampaigns] = await Promise.all([
|
|
1854
|
-
getTokensPricesForPortfolio(tokens, provider, network),
|
|
1855
|
-
getFluidMerklCampaigns(network),
|
|
1856
|
-
]);
|
|
1857
|
-
|
|
1858
|
-
const parsedMarketsData = await Promise.all(vaultsData.map(async (vaultData) => parseMarketData(provider, vaultData, network, tokenPrices)));
|
|
1859
|
-
|
|
1860
|
-
const marketsData: Record<string, FluidMarketData> = {};
|
|
1861
|
-
parsedMarketsData.forEach((marketData, i) => {
|
|
1862
|
-
if (!marketData) return;
|
|
1863
|
-
marketsData[versions[i].value] = attachFluidMerklIncentives(marketData, merklCampaigns);
|
|
1864
|
-
});
|
|
1865
|
-
|
|
1866
|
-
return marketsData;
|
|
1867
|
-
};
|
|
1868
|
-
|
|
1869
|
-
export const getAllFluidMarketDataPortfolio = async (
|
|
1870
|
-
provider: EthereumProvider,
|
|
1871
|
-
network: NetworkNumber,
|
|
1872
|
-
): Promise<Record<string, FluidMarketData>> => _getAllFluidMarketDataPortfolio(getViemProvider(provider, network, { batch: { multicall: true } }), network);
|
|
@@ -169,9 +169,6 @@ export const aaveAnyGetAggregatedPositionData = ({
|
|
|
169
169
|
},
|
|
170
170
|
);
|
|
171
171
|
payload.safetyRatioWithLtvZeroFallback = +payload.suppliedUsd ? new Dec(payload.borrowLimitWithLtvZeroFallbackUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
172
|
-
// Normalised safety ratio (100 = liquidation on every protocol): the automation ratio above, falling back
|
|
173
|
-
// to the regular ratio when the fallback carries its '0' placeholder.
|
|
174
|
-
payload.safetyRatio = +payload.safetyRatioWithLtvZeroFallback ? payload.safetyRatioWithLtvZeroFallback : payload.ratio;
|
|
175
172
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
176
173
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
177
174
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
@@ -270,7 +270,6 @@ export const aaveV4GetAggregatedPositionData = ({
|
|
|
270
270
|
payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
271
271
|
payload.minRatio = '100';
|
|
272
272
|
payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
273
|
-
payload.safetyRatio = payload.ratio;
|
|
274
273
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
275
274
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
276
275
|
const { leveragedType, leveragedAsset } = isLeveragedPosAaveV4(usedAssets);
|
|
@@ -139,7 +139,6 @@ export const getCompoundV2AggregatedData = ({
|
|
|
139
139
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
140
140
|
? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
141
141
|
: '0';
|
|
142
|
-
payload.safetyRatio = payload.ratio;
|
|
143
142
|
|
|
144
143
|
// Calculate borrow limits per asset
|
|
145
144
|
Object.values(usedAssets).forEach((item) => {
|
|
@@ -186,7 +185,6 @@ export const getCompoundV3AggregatedData = ({
|
|
|
186
185
|
payload.incentiveUsd = incentiveUsd;
|
|
187
186
|
payload.totalInterestUsd = totalInterestUsd;
|
|
188
187
|
payload.minRatio = '100';
|
|
189
|
-
payload.safetyRatio = payload.ratio;
|
|
190
188
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
191
189
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
192
190
|
payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
|
|
@@ -5,18 +5,11 @@ import {
|
|
|
5
5
|
calcLeverageLiqPrice, getAssetsTotal, getExposure, isLeveragedPos,
|
|
6
6
|
} from '../../moneymarket';
|
|
7
7
|
import { mapRange } from '../../services/utils';
|
|
8
|
-
import { calculateNetApyFromRates } from '../../staking';
|
|
9
8
|
|
|
10
9
|
export const getCrvUsdAggregatedData = ({
|
|
11
|
-
loanExists, usedAssets, network, selectedMarket, numOfBands,
|
|
10
|
+
loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest
|
|
12
11
|
}:{
|
|
13
|
-
loanExists: boolean,
|
|
14
|
-
usedAssets: CrvUSDUsedAssets,
|
|
15
|
-
network: NetworkNumber,
|
|
16
|
-
selectedMarket: CrvUSDMarketData,
|
|
17
|
-
numOfBands: number | string,
|
|
18
|
-
borrowRate?: string, // market borrow APY in %, see `CrvUSDGlobalMarketData.borrowRate`
|
|
19
|
-
collStakingApy?: string, // native yield APY in % of the collateral asset, if it is a staked asset
|
|
12
|
+
loanExists: boolean, usedAssets: CrvUSDUsedAssets, network: NetworkNumber, selectedMarket: CrvUSDMarketData, numOfBands: number | string
|
|
20
13
|
}): CrvUSDAggregatedPositionData => {
|
|
21
14
|
const payload = {} as CrvUSDAggregatedPositionData;
|
|
22
15
|
payload.supplied = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ supplied }: { supplied: string }) => supplied); // this is wrong if we are in soft-liquidations
|
|
@@ -33,8 +26,6 @@ export const getCrvUsdAggregatedData = ({
|
|
|
33
26
|
|
|
34
27
|
// this is all approximation
|
|
35
28
|
payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
|
|
36
|
-
// Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
|
|
37
|
-
payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
|
|
38
29
|
payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
|
|
39
30
|
// only take in consideration collAsset
|
|
40
31
|
payload.borrowLimitUsd = usedAssets?.[selectedMarket.collAsset]?.isSupplied
|
|
@@ -51,17 +42,5 @@ export const getCrvUsdAggregatedData = ({
|
|
|
51
42
|
|
|
52
43
|
payload.exposure = getExposure(payload.borrowedUsd, payload.suppliedUsd);
|
|
53
44
|
|
|
54
|
-
// crvUSD debt accrues the market borrow rate. Collateral (including crvUSD held during soft liquidation) earns
|
|
55
|
-
// nothing from the protocol itself; only the native yield of staked collateral is counted, as an incentive.
|
|
56
|
-
const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({
|
|
57
|
-
suppliedUsd: payload.suppliedUsd,
|
|
58
|
-
borrowedUsd: payload.borrowedUsd,
|
|
59
|
-
borrowRate,
|
|
60
|
-
incentives: [{ apy: collStakingApy, amountUsd: usedAssets?.[selectedMarket.collAsset]?.suppliedUsd || '0' }],
|
|
61
|
-
});
|
|
62
|
-
payload.netApy = netApy;
|
|
63
|
-
payload.totalInterestUsd = totalInterestUsd;
|
|
64
|
-
payload.incentiveUsd = incentiveUsd;
|
|
65
|
-
|
|
66
45
|
return payload;
|
|
67
46
|
};
|
|
@@ -143,7 +143,6 @@ borrowShares?: string,
|
|
|
143
143
|
payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
144
144
|
payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
145
145
|
payload.minRatio = marketData.minRatio;
|
|
146
|
-
payload.safetyRatio = payload.ratio;
|
|
147
146
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
148
147
|
|
|
149
148
|
payload.leveragedType = leveragedType;
|
|
@@ -69,7 +69,6 @@ export const getLiquityV2AggregatedPositionData = ({
|
|
|
69
69
|
payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
|
|
70
70
|
payload.ratio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
71
71
|
payload.collRatio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
72
|
-
payload.safetyRatio = payload.ratio;
|
|
73
72
|
const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApyLiquityV2(usedAssets, assetsData, interestRate);
|
|
74
73
|
payload.netApy = netApy;
|
|
75
74
|
payload.incentiveUsd = incentiveUsd;
|
|
@@ -38,8 +38,6 @@ export const getLlamaLendAggregatedData = ({
|
|
|
38
38
|
|
|
39
39
|
// this is all approximation
|
|
40
40
|
payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
|
|
41
|
-
// Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
|
|
42
|
-
payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
|
|
43
41
|
payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
|
|
44
42
|
// only take in consideration collAsset
|
|
45
43
|
payload.borrowLimitUsd = usedAssets?.[collAsset]?.isSupplied
|
|
@@ -10,7 +10,6 @@ export const parseCollateralInfo = (
|
|
|
10
10
|
_rate: string,
|
|
11
11
|
_spot: string,
|
|
12
12
|
_line: string,
|
|
13
|
-
_dust: string,
|
|
14
13
|
_duty: string,
|
|
15
14
|
_futureRate: string,
|
|
16
15
|
_chop: string,
|
|
@@ -21,7 +20,7 @@ export const parseCollateralInfo = (
|
|
|
21
20
|
const rate = new Dec(_rate).toString();
|
|
22
21
|
const spot = new Dec(_spot).div(1e27).toString();
|
|
23
22
|
const line = new Dec(_line).div(1e45).toString();
|
|
24
|
-
const dust = new Dec(
|
|
23
|
+
const dust = new Dec(_rate).div(1e45).toString();
|
|
25
24
|
const duty = new Dec(_duty).toString();
|
|
26
25
|
const futureRate = new Dec(_futureRate).toString();
|
|
27
26
|
const chop = new Dec(_chop).div(1e18).toString();
|
|
@@ -54,8 +54,6 @@ export const getMorphoBlueAggregatedPositionData = ({ usedAssets, assetsData, ma
|
|
|
54
54
|
payload.ltv = new Dec(usedAssets[loanToken]?.borrowed || 0).div(oracle).div(usedAssets[collateralToken]?.supplied || 1).toString(); // default to 1 because can't div 0
|
|
55
55
|
payload.ratio = new Dec(usedAssets[collateralToken]?.supplied || 0).mul(oracle).div(usedAssets[loanToken]?.borrowed || 1).mul(100)
|
|
56
56
|
.toString();
|
|
57
|
-
// Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
|
|
58
|
-
payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
59
57
|
|
|
60
58
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
61
59
|
payload.leveragedType = leveragedType;
|
|
@@ -102,8 +102,6 @@ export const getMorphoMidnightAggregatedPositionData = ({
|
|
|
102
102
|
payload.ltv = new Dec(payload.suppliedCollateralUsd).eq(0) ? '0' : new Dec(payload.borrowedUsd).div(payload.suppliedCollateralUsd).toString();
|
|
103
103
|
payload.ratio = new Dec(payload.borrowedUsd).eq(0) ? '0' : new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString();
|
|
104
104
|
payload.healthRatio = new Dec(payload.borrowedUsd).eq(0) ? 'Infinity' : new Dec(payload.liquidationLimitUsd).div(payload.borrowedUsd).toDP(4).toString();
|
|
105
|
-
// Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
|
|
106
|
-
payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
107
105
|
|
|
108
106
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
109
107
|
payload.leveragedType = leveragedType;
|
|
@@ -96,7 +96,6 @@ export const sparkGetAggregatedPositionData = ({
|
|
|
96
96
|
payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
|
|
97
97
|
payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
98
98
|
payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
99
|
-
payload.safetyRatio = payload.ratio;
|
|
100
99
|
const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy({ usedAssets, assetsData });
|
|
101
100
|
payload.netApy = netApy;
|
|
102
101
|
payload.incentiveUsd = incentiveUsd;
|