@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.
Files changed (118) hide show
  1. package/cjs/aaveV2/index.js +0 -2
  2. package/cjs/curveUsd/index.d.ts +2 -5
  3. package/cjs/curveUsd/index.js +15 -30
  4. package/cjs/fluid/index.d.ts +0 -5
  5. package/cjs/fluid/index.js +1 -36
  6. package/cjs/helpers/aaveHelpers/index.js +0 -3
  7. package/cjs/helpers/aaveV4Helpers/index.js +0 -1
  8. package/cjs/helpers/compoundHelpers/index.js +0 -2
  9. package/cjs/helpers/curveUsdHelpers/index.d.ts +1 -3
  10. package/cjs/helpers/curveUsdHelpers/index.js +2 -16
  11. package/cjs/helpers/fluidHelpers/index.js +0 -1
  12. package/cjs/helpers/liquityV2Helpers/index.js +0 -1
  13. package/cjs/helpers/llamaLendHelpers/index.js +0 -2
  14. package/cjs/helpers/makerHelpers/index.d.ts +1 -1
  15. package/cjs/helpers/makerHelpers/index.js +2 -2
  16. package/cjs/helpers/morphoBlueHelpers/index.js +0 -2
  17. package/cjs/helpers/morphoMidnightHelpers/index.js +0 -2
  18. package/cjs/helpers/sparkHelpers/index.js +0 -1
  19. package/cjs/liquity/index.js +2 -16
  20. package/cjs/maker/index.d.ts +2 -7
  21. package/cjs/maker/index.js +12 -45
  22. package/cjs/markets/index.d.ts +0 -1
  23. package/cjs/markets/index.js +1 -3
  24. package/cjs/portfolio/index.d.ts +1 -5
  25. package/cjs/portfolio/index.js +7 -277
  26. package/cjs/staking/staking.d.ts +0 -20
  27. package/cjs/staking/staking.js +1 -19
  28. package/cjs/types/aave.d.ts +15 -4
  29. package/cjs/types/aaveV4.d.ts +0 -1
  30. package/cjs/types/compound.d.ts +26 -4
  31. package/cjs/types/curveUsd.d.ts +9 -7
  32. package/cjs/types/fluid.d.ts +0 -1
  33. package/cjs/types/liquity.d.ts +0 -4
  34. package/cjs/types/liquityV2.d.ts +0 -2
  35. package/cjs/types/llamaLend.d.ts +12 -1
  36. package/cjs/types/maker.d.ts +0 -4
  37. package/cjs/types/morphoBlue.d.ts +2 -2
  38. package/cjs/types/morphoMidnight.d.ts +0 -1
  39. package/cjs/types/portfolio.d.ts +10 -26
  40. package/cjs/types/spark.d.ts +21 -3
  41. package/esm/aaveV2/index.js +0 -2
  42. package/esm/curveUsd/index.d.ts +2 -5
  43. package/esm/curveUsd/index.js +15 -30
  44. package/esm/fluid/index.d.ts +0 -5
  45. package/esm/fluid/index.js +0 -33
  46. package/esm/helpers/aaveHelpers/index.js +0 -3
  47. package/esm/helpers/aaveV4Helpers/index.js +0 -1
  48. package/esm/helpers/compoundHelpers/index.js +0 -2
  49. package/esm/helpers/curveUsdHelpers/index.d.ts +1 -3
  50. package/esm/helpers/curveUsdHelpers/index.js +2 -16
  51. package/esm/helpers/fluidHelpers/index.js +0 -1
  52. package/esm/helpers/liquityV2Helpers/index.js +0 -1
  53. package/esm/helpers/llamaLendHelpers/index.js +0 -2
  54. package/esm/helpers/makerHelpers/index.d.ts +1 -1
  55. package/esm/helpers/makerHelpers/index.js +2 -2
  56. package/esm/helpers/morphoBlueHelpers/index.js +0 -2
  57. package/esm/helpers/morphoMidnightHelpers/index.js +0 -2
  58. package/esm/helpers/sparkHelpers/index.js +0 -1
  59. package/esm/liquity/index.js +2 -16
  60. package/esm/maker/index.d.ts +2 -7
  61. package/esm/maker/index.js +13 -44
  62. package/esm/markets/index.d.ts +0 -1
  63. package/esm/markets/index.js +0 -1
  64. package/esm/portfolio/index.d.ts +1 -5
  65. package/esm/portfolio/index.js +10 -279
  66. package/esm/staking/staking.d.ts +0 -20
  67. package/esm/staking/staking.js +0 -17
  68. package/esm/types/aave.d.ts +15 -4
  69. package/esm/types/aaveV4.d.ts +0 -1
  70. package/esm/types/compound.d.ts +26 -4
  71. package/esm/types/curveUsd.d.ts +9 -7
  72. package/esm/types/fluid.d.ts +0 -1
  73. package/esm/types/liquity.d.ts +0 -4
  74. package/esm/types/liquityV2.d.ts +0 -2
  75. package/esm/types/llamaLend.d.ts +12 -1
  76. package/esm/types/maker.d.ts +0 -4
  77. package/esm/types/morphoBlue.d.ts +2 -2
  78. package/esm/types/morphoMidnight.d.ts +0 -1
  79. package/esm/types/portfolio.d.ts +10 -26
  80. package/esm/types/spark.d.ts +21 -3
  81. package/package.json +1 -1
  82. package/src/aaveV2/index.ts +0 -2
  83. package/src/curveUsd/index.ts +16 -33
  84. package/src/fluid/index.ts +0 -40
  85. package/src/helpers/aaveHelpers/index.ts +0 -3
  86. package/src/helpers/aaveV4Helpers/index.ts +0 -1
  87. package/src/helpers/compoundHelpers/index.ts +0 -2
  88. package/src/helpers/curveUsdHelpers/index.ts +2 -23
  89. package/src/helpers/fluidHelpers/index.ts +0 -1
  90. package/src/helpers/liquityV2Helpers/index.ts +0 -1
  91. package/src/helpers/llamaLendHelpers/index.ts +0 -2
  92. package/src/helpers/makerHelpers/index.ts +1 -2
  93. package/src/helpers/morphoBlueHelpers/index.ts +0 -2
  94. package/src/helpers/morphoMidnightHelpers/index.ts +0 -2
  95. package/src/helpers/sparkHelpers/index.ts +0 -1
  96. package/src/liquity/index.ts +2 -17
  97. package/src/maker/index.ts +29 -77
  98. package/src/markets/index.ts +1 -2
  99. package/src/portfolio/index.ts +8 -261
  100. package/src/staking/staking.ts +0 -28
  101. package/src/types/aave.ts +18 -4
  102. package/src/types/aaveV4.ts +0 -1
  103. package/src/types/compound.ts +38 -4
  104. package/src/types/curveUsd.ts +17 -8
  105. package/src/types/fluid.ts +0 -1
  106. package/src/types/liquity.ts +0 -6
  107. package/src/types/liquityV2.ts +0 -2
  108. package/src/types/llamaLend.ts +19 -1
  109. package/src/types/maker.ts +0 -6
  110. package/src/types/morphoBlue.ts +3 -2
  111. package/src/types/morphoMidnight.ts +0 -1
  112. package/src/types/portfolio.ts +12 -31
  113. package/src/types/spark.ts +25 -3
  114. package/cjs/markets/maker/index.d.ts +0 -1
  115. package/cjs/markets/maker/index.js +0 -13
  116. package/esm/markets/maker/index.d.ts +0 -1
  117. package/esm/markets/maker/index.js +0 -10
  118. package/src/markets/maker/index.ts +0 -10
@@ -170,7 +170,6 @@ export interface MorphoMidnightAggregatedPositionData {
170
170
  ltv: string;
171
171
  ratio: string;
172
172
  healthRatio: string;
173
- safetyRatio: string;
174
173
  leveragedType: LeverageType;
175
174
  leveragedAsset?: string;
176
175
  currentVolatilePairRatio?: string;
@@ -1,16 +1,15 @@
1
- import { AaveV2MarketData, AaveV2PositionData, AaveV3MarketData, AaveV3PositionData, AaveVersions } from './aave';
2
- import { AaveV4AccountData, AaveV4SpokeData, AaveV4SpokesType } from './aaveV4';
1
+ import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
2
+ import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
3
3
  import { EthAddress } from './common';
4
- import { CompoundV2MarketsData, CompoundV2PositionData, CompoundV3MarketsData, CompoundV3PositionData, CompoundVersions } from './compound';
5
- import { CrvUSDGlobalMarketData, CrvUSDUserData, CrvUSDVersions } from './curveUsd';
6
- import { FluidMarketData, FluidVaultData } from './fluid';
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 { LiquityV2MarketData } from './liquityV2';
9
- import { LlamaLendGlobalMarketData, LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
10
- import { CdpData, IlkInfo } from './maker';
11
- import { MorphoBlueMarketInfo, MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
12
- import { MorphoMidnightMarketInfo, MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
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
- }
@@ -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
- export interface SparkPositionData extends MMPositionData {
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;
@@ -167,8 +167,6 @@ export const _getAaveV2AccountData = (provider, network, address, assetsData, ma
167
167
  payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
168
168
  ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
169
169
  : '0';
170
- // Aave v2 has no LTV-0 fallback (AaveV3View only), so its safety ratio is the plain ratio.
171
- payload.safetyRatio = payload.ratio;
172
170
  // Calculate borrow limits per asset
173
171
  Object.values(payload.usedAssets).forEach((item) => {
174
172
  if (item.isBorrowed) {
@@ -5,9 +5,6 @@ export declare const _getCurveUsdGlobalData: (provider: Client, network: Network
5
5
  export declare const getCurveUsdGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
6
6
  export declare const _getCrvUsdAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
7
7
  export declare const getCrvUsdAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
8
- /**
9
- * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
10
- */
11
- export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
12
- export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string, borrowRate?: string) => Promise<CrvUSDUserData>;
8
+ export declare const _getCurveUsdUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string) => Promise<CrvUSDUserData>;
9
+ export declare const getCurveUsdUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData, activeBand: string) => Promise<CrvUSDUserData>;
13
10
  export declare const getCurveUsdFullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDUserData>;
@@ -16,12 +16,6 @@ import { getCrvUsdAggregatedData } from '../helpers/curveUsdHelpers';
16
16
  import { CrvUsdMarkets } from '../markets';
17
17
  import { wethToEth } from '../services/utils';
18
18
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
19
- import { getStakingApy, STAKING_ASSETS } from '../staking';
20
- /** Converts a per-second AMM rate (wei, 18 decimals) into a yearly compounded borrow APY in %. */
21
- const ammRateToBorrowApy = (rateWei) => {
22
- const exponent = new Dec(assetAmountInEth(rateWei)).mul(365).mul(86400);
23
- return new Dec(new Dec(2.718281828459).pow(exponent).minus(1)).mul(100).toString();
24
- };
25
19
  const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
26
20
  const contract = CrvUSDViewContractViem(provider, network);
27
21
  const minBand = parseInt(_minBand, 10);
@@ -71,8 +65,14 @@ export const _getCurveUsdGlobalData = (provider, network, selectedMarket) => __a
71
65
  // all prices are in 18 decimals
72
66
  const totalDebt = assetAmountInEth(data.totalDebt.toString(), debtAsset);
73
67
  const ammPrice = assetAmountInEth(data.ammPrice.toString(), debtAsset);
74
- const borrowRate = ammRateToBorrowApy(data.ammRate.toString());
75
- const futureBorrowRate = ammRateToBorrowApy(data.monetaryPolicyRate.toString());
68
+ const rate = assetAmountInEth(data.ammRate.toString());
69
+ const futureRate = assetAmountInEth(data.monetaryPolicyRate.toString());
70
+ const exponentRate = new Dec(rate).mul(365).mul(86400);
71
+ const exponentFutureRate = new Dec(futureRate).mul(365).mul(86400);
72
+ const borrowRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
73
+ .toString();
74
+ const futureBorrowRate = new Dec(new Dec(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
75
+ .toString();
76
76
  const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
77
77
  const leftToBorrow = new Dec(debtCeiling.toString()).minus(totalDebt).toString();
78
78
  const loanDiscount = assetAmountInEth(loanDiscountWei.toString(), debtAsset);
@@ -121,20 +121,11 @@ export const _getCrvUsdAccountBalances = (provider, network, block, addressMappi
121
121
  return balances;
122
122
  });
123
123
  export const getCrvUsdAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getCrvUsdAccountBalances(getViemProvider(provider, network), network, block, addressMapping, address, controllerAddress); });
124
- /**
125
- * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
126
- */
127
- export const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () {
124
+ export const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () {
128
125
  const contract = CrvUSDViewContractViem(provider, network);
126
+ const data = yield contract.read.userData([selectedMarket.controllerAddress, address]);
129
127
  const collAsset = selectedMarket.collAsset;
130
128
  const debtAsset = selectedMarket.baseAsset;
131
- const [data, collStakingApy, marketBorrowRate] = yield Promise.all([
132
- contract.read.userData([selectedMarket.controllerAddress, address]),
133
- STAKING_ASSETS.includes(collAsset) ? getStakingApy(collAsset) : Promise.resolve('0'),
134
- borrowRate !== undefined
135
- ? Promise.resolve(borrowRate)
136
- : contract.read.globalData([selectedMarket.controllerAddress]).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
137
- ]);
138
129
  const health = assetAmountInEth(data.health.toString());
139
130
  const healthPercent = new Dec(health).mul(100).toString();
140
131
  const collPrice = assetAmountInEth(data.collateralPrice.toString(), debtAsset);
@@ -165,7 +156,7 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
165
156
  isBorrowed: new Dec(debtBorrowed).gt('0'),
166
157
  symbol: 'crvUSD',
167
158
  price: '1',
168
- interestRate: marketBorrowRate,
159
+ interestRate: '0',
169
160
  },
170
161
  } : {};
171
162
  const priceHigh = assetAmountInEth(data.priceHigh.toString());
@@ -177,19 +168,13 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
177
168
  healthPercent,
178
169
  priceHigh,
179
170
  priceLow, liquidationDiscount: assetAmountInEth(data.liquidationDiscount.toString()), numOfBands: data.N.toString(), usedAssets,
180
- status, borrowRate: marketBorrowRate }), getCrvUsdAggregatedData({
181
- loanExists: data.loanExists,
182
- usedAssets,
183
- network: NetworkNumber.Eth,
184
- selectedMarket,
185
- numOfBands: data.N.toString(),
186
- borrowRate: marketBorrowRate,
187
- collStakingApy,
171
+ status }), getCrvUsdAggregatedData({
172
+ loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N.toString(),
188
173
  })), { userBands });
189
174
  });
190
- export const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand, borrowRate); });
175
+ export const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand); });
191
176
  export const getCurveUsdFullPositionData = (provider, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
192
177
  const marketData = yield getCurveUsdGlobalData(provider, network, selectedMarket);
193
- const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand, marketData.borrowRate);
178
+ const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand);
194
179
  return positionData;
195
180
  });
@@ -133,7 +133,6 @@ export declare const _getUserPositions: (provider: PublicClient, network: Networ
133
133
  merklBorrowIncentives: import("../types").IncentiveData[];
134
134
  ratio: string;
135
135
  collRatio: string;
136
- safetyRatio: string;
137
136
  minRatio: string;
138
137
  totalInterestUsd: string;
139
138
  leveragedType?: import("../types").LeverageType;
@@ -168,7 +167,6 @@ export declare const getUserPositions: (provider: EthereumProvider, network: Net
168
167
  merklBorrowIncentives: import("../types").IncentiveData[];
169
168
  ratio: string;
170
169
  collRatio: string;
171
- safetyRatio: string;
172
170
  minRatio: string;
173
171
  totalInterestUsd: string;
174
172
  leveragedType?: import("../types").LeverageType;
@@ -203,7 +201,6 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
203
201
  merklBorrowIncentives: import("../types").IncentiveData[];
204
202
  ratio: string;
205
203
  collRatio: string;
206
- safetyRatio: string;
207
204
  minRatio: string;
208
205
  totalInterestUsd: string;
209
206
  leveragedType?: import("../types").LeverageType;
@@ -224,5 +221,3 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
224
221
  nftId: string;
225
222
  } | undefined;
226
223
  }[]>;
227
- export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
228
- export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
@@ -1381,36 +1381,3 @@ export const _getUserPositionsPortfolio = (provider, network, user) => __awaiter
1381
1381
  userData: userData[i],
1382
1382
  })).filter(md => md.marketData !== undefined);
1383
1383
  });
1384
- export const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () {
1385
- const versions = getFluidVersionsDataForNetwork(network);
1386
- if (versions.length === 0)
1387
- return {};
1388
- const view = FluidViewContractViem(provider, network);
1389
- const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
1390
- const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
1391
- const vaultTokens = [getAssetInfoByAddress(vaultData.supplyToken0, network).symbol, getAssetInfoByAddress(vaultData.borrowToken0, network).symbol];
1392
- if (vaultData.supplyToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.supplyToken1))
1393
- vaultTokens.push(getAssetInfoByAddress(vaultData.supplyToken1, network).symbol);
1394
- if (vaultData.borrowToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.borrowToken1))
1395
- vaultTokens.push(getAssetInfoByAddress(vaultData.borrowToken1, network).symbol);
1396
- return vaultTokens;
1397
- }).flat()));
1398
- // ETH and WBTC needed for other tokens prices
1399
- if (!tokens.includes('ETH'))
1400
- tokens.push('ETH');
1401
- if (!tokens.includes('WBTC'))
1402
- tokens.push('WBTC');
1403
- const [tokenPrices, merklCampaigns] = yield Promise.all([
1404
- getTokensPricesForPortfolio(tokens, provider, network),
1405
- getFluidMerklCampaigns(network),
1406
- ]);
1407
- const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); })));
1408
- const marketsData = {};
1409
- parsedMarketsData.forEach((marketData, i) => {
1410
- if (!marketData)
1411
- return;
1412
- marketsData[versions[i].value] = attachFluidMerklIncentives(marketData, merklCampaigns);
1413
- });
1414
- return marketsData;
1415
- });
1416
- export const getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () { return _getAllFluidMarketDataPortfolio(getViemProvider(provider, network, { batch: { multicall: true } }), network); });
@@ -125,9 +125,6 @@ export const aaveAnyGetAggregatedPositionData = (_a) => {
125
125
  return new Dec(suppliedUsd).mul(effectiveLtv);
126
126
  });
127
127
  payload.safetyRatioWithLtvZeroFallback = +payload.suppliedUsd ? new Dec(payload.borrowLimitWithLtvZeroFallbackUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
128
- // Normalised safety ratio (100 = liquidation on every protocol): the automation ratio above, falling back
129
- // to the regular ratio when the fallback carries its '0' placeholder.
130
- payload.safetyRatio = +payload.safetyRatioWithLtvZeroFallback ? payload.safetyRatioWithLtvZeroFallback : payload.ratio;
131
128
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
132
129
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
133
130
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
@@ -208,7 +208,6 @@ export const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, networ
208
208
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
209
209
  payload.minRatio = '100';
210
210
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
211
- payload.safetyRatio = payload.ratio;
212
211
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
213
212
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
214
213
  const { leveragedType, leveragedAsset } = isLeveragedPosAaveV4(usedAssets);
@@ -93,7 +93,6 @@ export const getCompoundV2AggregatedData = (_a) => {
93
93
  payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
94
94
  ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
95
95
  : '0';
96
- payload.safetyRatio = payload.ratio;
97
96
  // Calculate borrow limits per asset
98
97
  Object.values(usedAssets).forEach((item) => {
99
98
  if (item.isBorrowed) {
@@ -135,7 +134,6 @@ export const getCompoundV3AggregatedData = (_a) => {
135
134
  payload.incentiveUsd = incentiveUsd;
136
135
  payload.totalInterestUsd = totalInterestUsd;
137
136
  payload.minRatio = '100';
138
- payload.safetyRatio = payload.ratio;
139
137
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
140
138
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
141
139
  payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
@@ -1,11 +1,9 @@
1
1
  import { CrvUSDAggregatedPositionData, CrvUSDMarketData, CrvUSDUsedAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, borrowRate, collStakingApy, ...rest }: {
3
+ export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
4
4
  loanExists: boolean;
5
5
  usedAssets: CrvUSDUsedAssets;
6
6
  network: NetworkNumber;
7
7
  selectedMarket: CrvUSDMarketData;
8
8
  numOfBands: number | string;
9
- borrowRate?: string;
10
- collStakingApy?: string;
11
9
  }) => CrvUSDAggregatedPositionData;
@@ -12,10 +12,9 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import Dec from 'decimal.js';
13
13
  import { calcLeverageLiqPrice, getAssetsTotal, getExposure, isLeveragedPos, } from '../../moneymarket';
14
14
  import { mapRange } from '../../services/utils';
15
- import { calculateNetApyFromRates } from '../../staking';
16
15
  export const getCrvUsdAggregatedData = (_a) => {
17
- var _b, _c;
18
- var { loanExists, usedAssets, network, selectedMarket, numOfBands, borrowRate = '0', collStakingApy = '0' } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "borrowRate", "collStakingApy"]);
16
+ var _b;
17
+ var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
19
18
  const payload = {};
20
19
  payload.supplied = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ supplied }) => supplied); // this is wrong if we are in soft-liquidations
21
20
  payload.borrowed = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowed }) => borrowed);
@@ -29,8 +28,6 @@ export const getCrvUsdAggregatedData = (_a) => {
29
28
  : '0';
30
29
  // this is all approximation
31
30
  payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
32
- // Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
33
- payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
34
31
  payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
35
32
  // only take in consideration collAsset
36
33
  payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
@@ -44,16 +41,5 @@ export const getCrvUsdAggregatedData = (_a) => {
44
41
  payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, usedAssets[selectedMarket.collAsset].price, payload.borrowedUsd, payload.borrowLimitUsd);
45
42
  }
46
43
  payload.exposure = getExposure(payload.borrowedUsd, payload.suppliedUsd);
47
- // crvUSD debt accrues the market borrow rate. Collateral (including crvUSD held during soft liquidation) earns
48
- // nothing from the protocol itself; only the native yield of staked collateral is counted, as an incentive.
49
- const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({
50
- suppliedUsd: payload.suppliedUsd,
51
- borrowedUsd: payload.borrowedUsd,
52
- borrowRate,
53
- incentives: [{ apy: collStakingApy, amountUsd: ((_c = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _c === void 0 ? void 0 : _c.suppliedUsd) || '0' }],
54
- });
55
- payload.netApy = netApy;
56
- payload.totalInterestUsd = totalInterestUsd;
57
- payload.incentiveUsd = incentiveUsd;
58
44
  return payload;
59
45
  };
@@ -78,7 +78,6 @@ export const getFluidAggregatedData = ({ usedAssets, assetsData, marketData, },
78
78
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
79
79
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
80
80
  payload.minRatio = marketData.minRatio;
81
- payload.safetyRatio = payload.ratio;
82
81
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
83
82
  payload.leveragedType = leveragedType;
84
83
  payload.liquidationPrice = '';
@@ -41,7 +41,6 @@ export const getLiquityV2AggregatedPositionData = ({ usedAssets, assetsData, min
41
41
  payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
42
42
  payload.ratio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
43
43
  payload.collRatio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
44
- payload.safetyRatio = payload.ratio;
45
44
  const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApyLiquityV2(usedAssets, assetsData, interestRate);
46
45
  payload.netApy = netApy;
47
46
  payload.incentiveUsd = incentiveUsd;
@@ -36,8 +36,6 @@ export const getLlamaLendAggregatedData = (_a) => {
36
36
  : '0';
37
37
  // this is all approximation
38
38
  payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
39
- // Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
40
- payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
41
39
  payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
42
40
  // only take in consideration collAsset
43
41
  payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
@@ -1,4 +1,4 @@
1
- export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string, _dust: string, _duty: string, _futureRate: string, _chop: string) => {
1
+ export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string, _duty: string, _futureRate: string, _chop: string) => {
2
2
  ilkLabel: string;
3
3
  currentRate: string;
4
4
  futureRate: string;
@@ -1,14 +1,14 @@
1
1
  import Dec from 'decimal.js';
2
2
  import { SECONDS_PER_YEAR } from '../../constants';
3
3
  import { bytesToString } from '../../services/utils';
4
- export const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line, _dust, _duty, _futureRate, _chop) => {
4
+ export const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line, _duty, _futureRate, _chop) => {
5
5
  const par = new Dec(_par).div(1e27).toString();
6
6
  const mat = new Dec(_mat).div(1e27).toString();
7
7
  const art = new Dec(_art).toString();
8
8
  const rate = new Dec(_rate).toString();
9
9
  const spot = new Dec(_spot).div(1e27).toString();
10
10
  const line = new Dec(_line).div(1e45).toString();
11
- const dust = new Dec(_dust).div(1e45).toString(); // Vat.ilks.dust, rad (1e45) -> DAI
11
+ const dust = new Dec(_rate).div(1e45).toString();
12
12
  const duty = new Dec(_duty).toString();
13
13
  const futureRate = new Dec(_futureRate).toString();
14
14
  const chop = new Dec(_chop).div(1e18).toString();
@@ -40,8 +40,6 @@ export const getMorphoBlueAggregatedPositionData = ({ usedAssets, assetsData, ma
40
40
  payload.ltv = new Dec(((_c = usedAssets[loanToken]) === null || _c === void 0 ? void 0 : _c.borrowed) || 0).div(oracle).div(((_d = usedAssets[collateralToken]) === null || _d === void 0 ? void 0 : _d.supplied) || 1).toString(); // default to 1 because can't div 0
41
41
  payload.ratio = new Dec(((_e = usedAssets[collateralToken]) === null || _e === void 0 ? void 0 : _e.supplied) || 0).mul(oracle).div(((_f = usedAssets[loanToken]) === null || _f === void 0 ? void 0 : _f.borrowed) || 1).mul(100)
42
42
  .toString();
43
- // Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
44
- payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
45
43
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
46
44
  payload.leveragedType = leveragedType;
47
45
  payload.liquidationPrice = '';
@@ -58,8 +58,6 @@ export const getMorphoMidnightAggregatedPositionData = ({ usedAssets, assetsData
58
58
  payload.ltv = new Dec(payload.suppliedCollateralUsd).eq(0) ? '0' : new Dec(payload.borrowedUsd).div(payload.suppliedCollateralUsd).toString();
59
59
  payload.ratio = new Dec(payload.borrowedUsd).eq(0) ? '0' : new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString();
60
60
  payload.healthRatio = new Dec(payload.borrowedUsd).eq(0) ? 'Infinity' : new Dec(payload.liquidationLimitUsd).div(payload.borrowedUsd).toDP(4).toString();
61
- // Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
62
- payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
63
61
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
64
62
  payload.leveragedType = leveragedType;
65
63
  payload.liquidationPrice = '';
@@ -70,7 +70,6 @@ export const sparkGetAggregatedPositionData = (_a) => {
70
70
  payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
71
71
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
72
72
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
73
- payload.safetyRatio = payload.ratio;
74
73
  const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy({ usedAssets, assetsData });
75
74
  payload.netApy = netApy;
76
75
  payload.incentiveUsd = incentiveUsd;
@@ -16,7 +16,6 @@ import { ZERO_ADDRESS } from '../constants';
16
16
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
17
17
  import { getEthAmountForDecimals } from '../services/utils';
18
18
  import { getExposure } from '../moneymarket';
19
- import { calculateNetApyFromRates } from '../staking';
20
19
  export const LIQUITY_NORMAL_MODE_RATIO = 110; // MCR
21
20
  export const LIQUITY_RECOVERY_MODE_RATIO = 150; // CCR
22
21
  export const _getLiquityAccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
@@ -69,14 +68,6 @@ export const _getLiquityTroveInfo = (provider, network, address) => __awaiter(vo
69
68
  _getDebtInFront(viewContract, address),
70
69
  ]);
71
70
  const recoveryMode = troveInfo[6];
72
- const minCollateralRatio = recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO;
73
- const collateral = assetAmountInEth(troveInfo[1].toString());
74
- const debtInAsset = assetAmountInEth(troveInfo[2].toString());
75
- const collateralUsd = new Dec(collateral).mul(assetAmountInEth(assetPrice.toString())).toString();
76
- const collRatio = +debtInAsset ? new Dec(collateralUsd).div(debtInAsset).mul(100).toString() : '0';
77
- // LUSD debt is interest free (only a one-off borrowing fee on issuance) and ETH collateral earns no yield,
78
- // so a trove's net APY is always 0. It is exposed for parity with the other protocols.
79
- const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({ suppliedUsd: collateralUsd, borrowedUsd: debtInAsset });
80
71
  const payload = {
81
72
  troveStatus: LIQUITY_TROVE_STATUS_ENUM[+(troveInfo[0].toString())],
82
73
  collateral: assetAmountInEth(troveInfo[1].toString()),
@@ -89,15 +80,10 @@ export const _getLiquityTroveInfo = (provider, network, address) => __awaiter(vo
89
80
  totalETH: totalETH.toString(),
90
81
  totalLUSD: totalLUSD.toString(),
91
82
  debtInFront: debtInFront.toString(),
92
- minCollateralRatio,
93
- // Collateral ratio rebased so 100 sits on the trove's minimum collateral ratio (normalised safety ratio).
94
- safetyRatio: +minCollateralRatio > 0 ? new Dec(collRatio).div(minCollateralRatio).mul(100).toString() : '0',
83
+ minCollateralRatio: recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO,
95
84
  priceForRecovery: new Dec(recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO).mul(totalLUSD).div(totalETH).div(100)
96
85
  .toString(),
97
- exposure: getExposure(debtInAsset, collateralUsd),
98
- netApy,
99
- totalInterestUsd,
100
- incentiveUsd,
86
+ exposure: getExposure(assetAmountInEth(troveInfo[2].toString()), new Dec(assetAmountInEth(troveInfo[1].toString())).mul(assetPrice).toString()),
101
87
  };
102
88
  return payload;
103
89
  });
@@ -1,14 +1,9 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
3
- import { CdpData, CdpInfo, IlkInfo } from '../types';
3
+ import { CdpData, CdpInfo } from '../types';
4
4
  export declare const _getMakerAccountBalances: (provider: PublicClient, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
5
5
  export declare const getMakerAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
6
6
  export declare const _getUserCdps: (provider: Client, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
7
7
  export declare const getUserCdps: (provider: EthereumProvider, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
8
- export declare const _getMakerIlksData: (provider: Client, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
9
- export declare const getMakerIlksData: (provider: EthereumProvider, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
10
- /**
11
- * @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
12
- */
13
- export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo, ilkInfo?: IlkInfo) => Promise<CdpData>;
8
+ export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
14
9
  export declare const getMakerCdpData: (provider: EthereumProvider, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;