@defisaver/positions-sdk 2.1.166 → 2.1.168-stable-pair-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 (99) hide show
  1. package/cjs/aaveV2/index.js +8 -29
  2. package/cjs/aaveV3/index.js +2 -31
  3. package/cjs/aaveV4/index.d.ts +25 -0
  4. package/cjs/aaveV4/index.js +4 -1
  5. package/cjs/compoundV2/index.d.ts +1 -1
  6. package/cjs/compoundV2/index.js +2 -2
  7. package/cjs/curveUsd/index.d.ts +1 -1
  8. package/cjs/curveUsd/index.js +6 -1
  9. package/cjs/fluid/index.js +13 -12
  10. package/cjs/helpers/aaveBalances.d.ts +5 -0
  11. package/cjs/helpers/aaveBalances.js +51 -0
  12. package/cjs/helpers/aaveV4Helpers/index.js +11 -1
  13. package/cjs/helpers/fluidBalances.d.ts +6 -0
  14. package/cjs/helpers/fluidBalances.js +36 -0
  15. package/cjs/liquityV2/index.d.ts +8 -0
  16. package/cjs/liquityV2/index.js +3 -3
  17. package/cjs/llamaLend/index.d.ts +1 -1
  18. package/cjs/llamaLend/index.js +6 -1
  19. package/cjs/markets/morphoBlue/index.d.ts +0 -2
  20. package/cjs/markets/morphoBlue/index.js +3 -20
  21. package/cjs/moneymarket/moneymarketCommonService.js +12 -2
  22. package/cjs/morphoMidnight/index.d.ts +1 -1
  23. package/cjs/morphoMidnight/index.js +6 -1
  24. package/cjs/portfolio/index.d.ts +1 -0
  25. package/cjs/portfolio/index.js +3 -0
  26. package/cjs/portfolio/lendingSummaries.d.ts +7 -0
  27. package/cjs/portfolio/lendingSummaries.js +262 -0
  28. package/cjs/portfolio/lendingSummaryTransport.d.ts +8 -0
  29. package/cjs/portfolio/lendingSummaryTransport.js +109 -0
  30. package/cjs/spark/index.js +2 -31
  31. package/cjs/types/common.d.ts +1 -0
  32. package/cjs/types/common.js +1 -0
  33. package/cjs/types/index.d.ts +1 -0
  34. package/cjs/types/index.js +1 -0
  35. package/cjs/types/lendingSummary.d.ts +34 -0
  36. package/cjs/types/lendingSummary.js +2 -0
  37. package/cjs/types/morphoBlue.d.ts +0 -1
  38. package/cjs/types/morphoBlue.js +0 -1
  39. package/esm/aaveV2/index.js +11 -32
  40. package/esm/aaveV3/index.js +3 -32
  41. package/esm/aaveV4/index.d.ts +25 -0
  42. package/esm/aaveV4/index.js +3 -1
  43. package/esm/compoundV2/index.d.ts +1 -1
  44. package/esm/compoundV2/index.js +2 -2
  45. package/esm/curveUsd/index.d.ts +1 -1
  46. package/esm/curveUsd/index.js +6 -1
  47. package/esm/fluid/index.js +13 -12
  48. package/esm/helpers/aaveBalances.d.ts +5 -0
  49. package/esm/helpers/aaveBalances.js +45 -0
  50. package/esm/helpers/aaveV4Helpers/index.js +11 -1
  51. package/esm/helpers/fluidBalances.d.ts +6 -0
  52. package/esm/helpers/fluidBalances.js +28 -0
  53. package/esm/liquityV2/index.d.ts +8 -0
  54. package/esm/liquityV2/index.js +1 -1
  55. package/esm/llamaLend/index.d.ts +1 -1
  56. package/esm/llamaLend/index.js +6 -1
  57. package/esm/markets/morphoBlue/index.d.ts +0 -2
  58. package/esm/markets/morphoBlue/index.js +0 -16
  59. package/esm/moneymarket/moneymarketCommonService.js +12 -2
  60. package/esm/morphoMidnight/index.d.ts +1 -1
  61. package/esm/morphoMidnight/index.js +6 -1
  62. package/esm/portfolio/index.d.ts +1 -0
  63. package/esm/portfolio/index.js +1 -0
  64. package/esm/portfolio/lendingSummaries.d.ts +7 -0
  65. package/esm/portfolio/lendingSummaries.js +256 -0
  66. package/esm/portfolio/lendingSummaryTransport.d.ts +8 -0
  67. package/esm/portfolio/lendingSummaryTransport.js +104 -0
  68. package/esm/spark/index.js +4 -33
  69. package/esm/types/common.d.ts +1 -0
  70. package/esm/types/common.js +1 -0
  71. package/esm/types/index.d.ts +1 -0
  72. package/esm/types/index.js +1 -0
  73. package/esm/types/lendingSummary.d.ts +34 -0
  74. package/esm/types/lendingSummary.js +1 -0
  75. package/esm/types/morphoBlue.d.ts +0 -1
  76. package/esm/types/morphoBlue.js +0 -1
  77. package/package.json +1 -1
  78. package/src/aaveV2/index.ts +8 -48
  79. package/src/aaveV3/index.ts +2 -48
  80. package/src/aaveV4/index.ts +6 -1
  81. package/src/compoundV2/index.ts +2 -2
  82. package/src/curveUsd/index.ts +6 -1
  83. package/src/fluid/index.ts +13 -12
  84. package/src/helpers/aaveBalances.ts +41 -0
  85. package/src/helpers/aaveV4Helpers/index.ts +12 -1
  86. package/src/helpers/fluidBalances.ts +34 -0
  87. package/src/liquityV2/index.ts +1 -1
  88. package/src/llamaLend/index.ts +6 -1
  89. package/src/markets/morphoBlue/index.ts +0 -16
  90. package/src/moneymarket/moneymarketCommonService.ts +13 -2
  91. package/src/morphoMidnight/index.ts +6 -1
  92. package/src/portfolio/index.ts +2 -0
  93. package/src/portfolio/lendingSummaries.ts +216 -0
  94. package/src/portfolio/lendingSummaryTransport.ts +84 -0
  95. package/src/spark/index.ts +3 -49
  96. package/src/types/common.ts +1 -0
  97. package/src/types/index.ts +2 -1
  98. package/src/types/lendingSummary.ts +41 -0
  99. package/src/types/morphoBlue.ts +0 -1
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.getAaveV2FullPositionData = exports.getAaveV2AccountData = exports._getAaveV2AccountData = exports.getAaveV2AccountBalances = exports._getAaveV2AccountBalances = exports.getAaveV2MarketsData = exports._getAaveV2MarketsData = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const tokens_1 = require("@defisaver/tokens");
18
+ const aaveBalances_1 = require("../helpers/aaveBalances");
18
19
  const common_1 = require("../types/common");
19
20
  const staking_1 = require("../staking");
20
21
  const utils_1 = require("../services/utils");
@@ -93,36 +94,14 @@ exports._getAaveV2MarketsData = _getAaveV2MarketsData;
93
94
  const getAaveV2MarketsData = (provider, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () { return (0, exports._getAaveV2MarketsData)((0, viem_1.getViemProvider)(provider, network), network, selectedMarket); });
94
95
  exports.getAaveV2MarketsData = getAaveV2MarketsData;
95
96
  const _getAaveV2AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
96
- let balances = {
97
- collateral: {},
98
- debt: {},
99
- };
100
- if (!address) {
97
+ var _a;
98
+ const balances = yield (0, aaveBalances_1.getAaveLikeBalances)(provider, network, block, addressMapping, address, aave_1.AAVE_V2, 'AaveLoanInfoV2');
99
+ if (!address)
101
100
  return balances;
102
- }
103
- const market = aave_1.AAVE_V2;
104
- const loanInfoContract = (0, contracts_1.AaveLoanInfoV2ContractViem)(provider, network, block);
105
- const marketAddress = market.providerAddress;
106
- // @ts-ignore
107
- const protocolDataProviderContract = (0, contracts_1.createViemContractFromConfigFunc)(market.protocolData, market.protocolDataAddress)(provider, network);
108
- // @ts-ignore
109
- const reserveTokens = yield protocolDataProviderContract.read.getAllReservesTokens((0, viem_1.setViemBlockNumber)(block));
110
- const symbols = reserveTokens.map(({ symbol }) => symbol);
111
- const _addresses = reserveTokens.map(({ tokenAddress }) => tokenAddress);
112
- const loanInfo = yield loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses], (0, viem_1.setViemBlockNumber)(block));
113
- loanInfo.forEach((_tokenInfo, i) => {
114
- const asset = (0, utils_1.wethToEth)(symbols[i]);
115
- const assetAddr = (0, utils_1.wethToEthByAddress)(_addresses[i], network).toLowerCase();
116
- const tokenInfo = Object.assign({}, _tokenInfo);
117
- // known bug: stETH leaves 1 wei on every transfer
118
- if (asset === 'stETH' && tokenInfo.balance.toString() === '1') {
119
- tokenInfo.balance = '0';
120
- }
121
- balances = {
122
- collateral: Object.assign(Object.assign({}, balances.collateral), { [addressMapping ? assetAddr : asset]: tokenInfo.balance.toString() }),
123
- debt: Object.assign(Object.assign({}, balances.debt), { [addressMapping ? assetAddr : asset]: new decimal_js_1.default(tokenInfo.borrowsStable.toString()).add(tokenInfo.borrowsVariable.toString()).toString() }),
124
- };
125
- });
101
+ // Preserve the legacy getter's stETH transfer-dust convention.
102
+ const key = addressMapping ? (0, tokens_1.getAssetInfo)('stETH', network).address.toLowerCase() : 'stETH';
103
+ if (((_a = balances.collateral) === null || _a === void 0 ? void 0 : _a[key]) === '1')
104
+ balances.collateral[key] = '0';
126
105
  return balances;
127
106
  });
128
107
  exports._getAaveV2AccountBalances = _getAaveV2AccountBalances;
@@ -17,6 +17,7 @@ exports._getAaveV3MarketData = _getAaveV3MarketData;
17
17
  exports.getAaveV3MarketData = getAaveV3MarketData;
18
18
  const tokens_1 = require("@defisaver/tokens");
19
19
  const decimal_js_1 = __importDefault(require("decimal.js"));
20
+ const aaveBalances_1 = require("../helpers/aaveBalances");
20
21
  const contracts_1 = require("../contracts");
21
22
  const aaveHelpers_1 = require("../helpers/aaveHelpers");
22
23
  const aave_1 = require("../markets/aave");
@@ -345,37 +346,7 @@ exports.EMPTY_AAVE_DATA = {
345
346
  exposure: 'N/A',
346
347
  };
347
348
  const _getAaveV3AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
348
- let balances = {
349
- collateral: {},
350
- debt: {},
351
- };
352
- if (!address) {
353
- return balances;
354
- }
355
- const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network, block);
356
- const market = (0, aave_1.AAVE_V3)(network);
357
- const marketAddress = market.providerAddress;
358
- // @ts-ignore
359
- const protocolDataProviderContract = (0, contracts_1.createViemContractFromConfigFunc)(market.protocolData, market.protocolDataAddress)(provider, network);
360
- // @ts-ignore
361
- const reserveTokens = yield protocolDataProviderContract.read.getAllReservesTokens((0, viem_1.setViemBlockNumber)(block));
362
- const symbols = reserveTokens.map(({ symbol }) => symbol);
363
- const _addresses = reserveTokens.map(({ tokenAddress }) => tokenAddress);
364
- // split addresses in half to avoid gas limit by multicall
365
- const middleAddressIndex = Math.floor(_addresses.length / 2);
366
- const [tokenBalances1, tokenBalances2] = yield Promise.all([
367
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(0, middleAddressIndex)], (0, viem_1.setViemBlockNumber)(block)),
368
- loanInfoContract.read.getTokenBalances([marketAddress, address, _addresses.slice(middleAddressIndex, _addresses.length)], (0, viem_1.setViemBlockNumber)(block)),
369
- ]);
370
- const loanInfo = [...tokenBalances1, ...tokenBalances2];
371
- loanInfo.forEach((tokenInfo, i) => {
372
- const asset = (0, utils_1.wethToEth)(symbols[i]);
373
- const assetAddr = (0, utils_1.wethToEthByAddress)(_addresses[i], network).toLowerCase();
374
- balances = {
375
- collateral: Object.assign(Object.assign({}, balances.collateral), { [addressMapping ? assetAddr : asset]: tokenInfo.balance.toString() }),
376
- debt: Object.assign(Object.assign({}, balances.debt), { [addressMapping ? assetAddr : asset]: new decimal_js_1.default(tokenInfo.borrowsStable.toString()).add(tokenInfo.borrowsVariable.toString()).toString() }),
377
- };
378
- });
349
+ const balances = yield (0, aaveBalances_1.getAaveLikeBalances)(provider, network, block, addressMapping, address, (0, aave_1.AAVE_V3)(network), 'AaveV3View');
379
350
  return balances;
380
351
  });
381
352
  exports._getAaveV3AccountBalances = _getAaveV3AccountBalances;
@@ -5,6 +5,31 @@ export { getAaveV4MerkleCampaigns } from './merkl';
5
5
  export declare function _getAaveV4SpokeData(provider: Client, network: NetworkNumber, market: AaveV4SpokeInfo, blockNumber?: 'latest' | number): Promise<AaveV4SpokeData>;
6
6
  export declare function getAaveV4SpokeData(provider: EthereumProvider, network: NetworkNumber, spoke: AaveV4SpokeInfo, blockNumber?: 'latest' | number): Promise<AaveV4SpokeData>;
7
7
  export declare function _getAaveV4AccountData(provider: Client, network: NetworkNumber, spokeData: AaveV4SpokeData, address: EthAddress, blockNumber?: 'latest' | number): Promise<AaveV4AccountData>;
8
+ /** Shared raw read; no spoke metadata or market enrichment. */
9
+ export declare const _getAaveV4LoanBalances: (provider: Client, network: NetworkNumber, block: Blockish, address: EthAddress, spoke: EthAddress) => Promise<{
10
+ user: `0x${string}`;
11
+ riskPremium: bigint;
12
+ avgCollateralFactor: bigint;
13
+ healthFactor: bigint;
14
+ totalCollateralInUsd: bigint;
15
+ totalDebtInUsdRay: bigint;
16
+ activeCollateralCount: bigint;
17
+ borrowCount: bigint;
18
+ reserves: readonly {
19
+ reserveId: bigint;
20
+ assetId: number;
21
+ underlying: `0x${string}`;
22
+ supplied: bigint;
23
+ drawn: bigint;
24
+ premium: bigint;
25
+ totalDebt: bigint;
26
+ collateralFactor: number;
27
+ maxLiquidationBonus: number;
28
+ liquidationFee: number;
29
+ isUsingAsCollateral: boolean;
30
+ isBorrowing: boolean;
31
+ }[];
32
+ }>;
8
33
  /**
9
34
  * Lightweight existence check for Loan Shifter / UI discovery.
10
35
  * Reads only `getLoanData(spoke, user)` and returns whether any reserve has
@@ -45,7 +45,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
45
45
  return (mod && mod.__esModule) ? mod : { "default": mod };
46
46
  };
47
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.getAaveV4AccountBalances = exports._getAaveV4AccountBalances = exports._getAaveV4AccountHasAnyBalance = exports.getAaveV4MerkleCampaigns = exports.lend = void 0;
48
+ exports.getAaveV4AccountBalances = exports._getAaveV4AccountBalances = exports._getAaveV4AccountHasAnyBalance = exports._getAaveV4LoanBalances = exports.getAaveV4MerkleCampaigns = exports.lend = void 0;
49
49
  exports._getAaveV4SpokeData = _getAaveV4SpokeData;
50
50
  exports.getAaveV4SpokeData = getAaveV4SpokeData;
51
51
  exports._getAaveV4AccountData = _getAaveV4AccountData;
@@ -296,6 +296,9 @@ function _getAaveV4AccountData(provider_1, network_1, spokeData_1, address_1) {
296
296
  riskPremiumBps });
297
297
  });
298
298
  }
299
+ /** Shared raw read; no spoke metadata or market enrichment. */
300
+ const _getAaveV4LoanBalances = (provider, network, block, address, spoke) => ((0, contracts_1.AaveV4ViewContractViem)(provider, network, block).read.getLoanData([spoke, address], (0, viem_1.setViemBlockNumber)(block)));
301
+ exports._getAaveV4LoanBalances = _getAaveV4LoanBalances;
299
302
  /**
300
303
  * Lightweight existence check for Loan Shifter / UI discovery.
301
304
  * Reads only `getLoanData(spoke, user)` and returns whether any reserve has
@@ -17,7 +17,7 @@ export declare const EMPTY_COMPOUND_DATA: {
17
17
  borrowStableSupplyUnstable: boolean;
18
18
  exposure: string;
19
19
  };
20
- export declare const _getCompoundV2AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
20
+ export declare const _getCompoundV2AccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, tokens?: EthAddress[]) => Promise<PositionBalances>;
21
21
  export declare const getCompoundV2AccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
22
22
  export declare const _getCompoundV2AccountData: (provider: Client, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData) => Promise<CompoundV2PositionData>;
23
23
  export declare const getCompoundV2AccountData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, assetsData: CompoundV2AssetsData) => Promise<CompoundV2PositionData>;
@@ -109,7 +109,7 @@ const getAllMarketAddresses = (provider, network, block) => __awaiter(void 0, vo
109
109
  const contract = (0, contracts_1.ComptrollerContractViem)(provider, network);
110
110
  return contract.read.getAllMarkets((0, viem_1.setViemBlockNumber)(block));
111
111
  });
112
- const _getCompoundV2AccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
112
+ const _getCompoundV2AccountBalances = (provider, network, block, addressMapping, address, tokens) => __awaiter(void 0, void 0, void 0, function* () {
113
113
  let balances = {
114
114
  collateral: {},
115
115
  debt: {},
@@ -117,7 +117,7 @@ const _getCompoundV2AccountBalances = (provider, network, block, addressMapping,
117
117
  if (!address) {
118
118
  return balances;
119
119
  }
120
- const assets = yield getAllMarketAddresses(provider, network, block);
120
+ const assets = tokens || (yield getAllMarketAddresses(provider, network, block));
121
121
  const assetInfo = assets.map(a => (0, tokens_1.getAssetInfoByAddress)(a, network));
122
122
  const loanInfoContract = (0, contracts_1.CompoundLoanInfoContractViem)(provider, network, block);
123
123
  const loanInfo = yield loanInfoContract.read.getTokenBalances([address, assets], (0, viem_1.setViemBlockNumber)(block));
@@ -3,7 +3,7 @@ import { CrvUSDGlobalMarketData, CrvUSDMarketData, CrvUSDUserData } from '../typ
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
4
  export declare const _getCurveUsdGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
5
5
  export declare const getCurveUsdGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
6
- export declare const _getCrvUsdAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
6
+ export declare const _getCrvUsdAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress, includeDeposited?: boolean) => Promise<PositionBalances>;
7
7
  export declare const getCrvUsdAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
8
8
  /**
9
9
  * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
@@ -107,7 +107,7 @@ const getStatusForUser = (bandRange, activeBand, crvUSDSupplied, collSupplied, h
107
107
  return types_1.CrvUSDStatus.SoftLiquidated; // or is fully soft liquidated
108
108
  return types_1.CrvUSDStatus.Nonexistant;
109
109
  };
110
- const _getCrvUsdAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () {
110
+ const _getCrvUsdAccountBalances = (provider_1, network_1, block_1, addressMapping_1, address_1, controllerAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, block_1, addressMapping_1, address_1, controllerAddress_1, ...args_1], void 0, function* (provider, network, block, addressMapping, address, controllerAddress, includeDeposited = false) {
111
111
  let balances = {
112
112
  collateral: {},
113
113
  debt: {},
@@ -126,6 +126,11 @@ const _getCrvUsdAccountBalances = (provider, network, block, addressMapping, add
126
126
  [addressMapping ? (0, tokens_1.getAssetInfo)((0, utils_1.wethToEth)(selectedMarket.baseAsset), network).address.toLowerCase() : (0, utils_1.wethToEth)(selectedMarket.baseAsset)]: data.debtAmount.toString(),
127
127
  },
128
128
  };
129
+ if (includeDeposited) {
130
+ balances.deposited = {
131
+ [addressMapping ? (0, tokens_1.getAssetInfo)((0, utils_1.wethToEth)(selectedMarket.baseAsset), network).address.toLowerCase() : (0, utils_1.wethToEth)(selectedMarket.baseAsset)]: data.curveUsdCollateralAmount.toString(),
132
+ };
133
+ }
129
134
  return balances;
130
135
  });
131
136
  exports._getCrvUsdAccountBalances = _getCrvUsdAccountBalances;
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.getAllFluidMarketDataPortfolio = exports._getAllFluidMarketDataPortfolio = exports._getUserPositionsPortfolio = exports.getUserPositions = exports._getUserPositions = exports.getAllUserEarnPositionsWithFTokens = exports._getAllUserEarnPositionsWithFTokens = exports.getFluidDepositData = exports._getFluidDepositData = exports.getFluidTokenData = exports._getFluidTokenData = exports.getAllFluidMarketDataChunked = exports._getAllFluidMarketDataChunked = exports.getFluidPositionWithMarket = exports._getFluidPositionWithMarket = exports.getFluidPosition = exports._getFluidPosition = exports.getFluidVaultIdsForUser = exports._getFluidVaultIdsForUser = exports.getFluidMarketData = exports._getFluidMarketData = exports.EMPTY_FLUID_DATA = exports.EMPTY_USED_ASSET = exports.attachFluidMerklIncentives = exports.getFluidMerklCampaigns = exports.buildFluidMerklRewardMap = exports.FluidMerklOpportunityType = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const tokens_1 = require("@defisaver/tokens");
18
+ const fluidBalances_1 = require("../helpers/fluidBalances");
18
19
  const common_1 = require("../types/common");
19
20
  const types_1 = require("../types");
20
21
  const contracts_1 = require("../contracts");
@@ -935,8 +936,8 @@ const parseT1UserData = (userPositionData, vaultData) => {
935
936
  const collAsset = (0, tokens_1.getAssetInfo)(marketData.collAsset0);
936
937
  const debtAsset = (0, tokens_1.getAssetInfo)(marketData.debtAsset0);
937
938
  // for T2 and T4 - this is the number of shares
938
- const supplied = (0, utils_1.getEthAmountForDecimals)(userPositionData.supply.toString(), collAsset.decimals);
939
- const borrowed = (0, utils_1.getEthAmountForDecimals)(userPositionData.borrow.toString(), debtAsset.decimals);
939
+ const supplied = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset.decimals);
940
+ const borrowed = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset.decimals);
940
941
  const collUsedAsset = Object.assign(Object.assign({}, exports.EMPTY_USED_ASSET), { symbol: collAsset.symbol, collateral: true, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[collAsset.symbol].price).toString(), isSupplied: new decimal_js_1.default(supplied).gt(0) });
941
942
  const debtUsedAsset = Object.assign(Object.assign({}, exports.EMPTY_USED_ASSET), { symbol: debtAsset.symbol, collateral: false, borrowed, borrowedUsd: new decimal_js_1.default(borrowed).mul(assetsData[debtAsset.symbol].price).toString(), isBorrowed: new decimal_js_1.default(borrowed).gt(0) });
942
943
  const usedAssets = {
@@ -956,9 +957,9 @@ const parseT2UserData = (userPositionData, vaultData) => {
956
957
  const collAsset1 = (0, tokens_1.getAssetInfo)(marketData.collAsset1);
957
958
  const debtAsset = (0, tokens_1.getAssetInfo)(marketData.debtAsset0);
958
959
  const supplyShares = (0, utils_1.getEthAmountForDecimals)(userPositionData.supply.toString(), 18); // this is supplied in coll shares
959
- const borrowed = (0, utils_1.getEthAmountForDecimals)(userPositionData.borrow.toString(), debtAsset.decimals); // this is actual token borrow
960
- const supplied0 = new decimal_js_1.default(supplyShares).mul(assetsData[collAsset0.symbol].tokenPerSupplyShare).toString();
961
- const supplied1 = new decimal_js_1.default(supplyShares).mul(assetsData[collAsset1.symbol].tokenPerSupplyShare).toString();
960
+ const borrowed = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset.decimals); // this is actual token borrow
961
+ const supplied0 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset0.decimals, assetsData[collAsset0.symbol].tokenPerSupplyShare);
962
+ const supplied1 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset1.decimals, assetsData[collAsset1.symbol].tokenPerSupplyShare);
962
963
  const collUsedAsset0 = {
963
964
  symbol: collAsset0.symbol,
964
965
  collateral: true,
@@ -1001,10 +1002,10 @@ const parseT3UserData = (userPositionData, vaultData) => {
1001
1002
  const collAsset = (0, tokens_1.getAssetInfo)(marketData.collAsset0);
1002
1003
  const debtAsset0 = (0, tokens_1.getAssetInfo)(marketData.debtAsset0);
1003
1004
  const debtAsset1 = (0, tokens_1.getAssetInfo)(marketData.debtAsset1);
1004
- const supplied = (0, utils_1.getEthAmountForDecimals)(userPositionData.supply.toString(), collAsset.decimals); // this is actual token supply
1005
+ const supplied = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset.decimals); // this is actual token supply
1005
1006
  const borrowShares = (0, utils_1.getEthAmountForDecimals)(userPositionData.borrow.toString(), 18); // this is actual token borrow
1006
- const borrowed0 = new decimal_js_1.default(borrowShares).mul(assetsData[debtAsset0.symbol].tokenPerBorrowShare).toString();
1007
- const borrowed1 = new decimal_js_1.default(borrowShares).mul(assetsData[debtAsset1.symbol].tokenPerBorrowShare).toString();
1007
+ const borrowed0 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset0.decimals, assetsData[debtAsset0.symbol].tokenPerBorrowShare);
1008
+ const borrowed1 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset1.decimals, assetsData[debtAsset1.symbol].tokenPerBorrowShare);
1008
1009
  const collUsedAsset = {
1009
1010
  symbol: collAsset.symbol,
1010
1011
  collateral: true,
@@ -1049,10 +1050,10 @@ const parseT4UserData = (userPositionData, vaultData) => {
1049
1050
  const debtAsset1 = (0, tokens_1.getAssetInfo)(marketData.debtAsset1);
1050
1051
  const supplyShares = (0, utils_1.getEthAmountForDecimals)(userPositionData.supply.toString(), 18); // this is actual token supply
1051
1052
  const borrowShares = (0, utils_1.getEthAmountForDecimals)(userPositionData.borrow.toString(), 18); // this is actual token borrow
1052
- const supplied0 = new decimal_js_1.default(supplyShares).mul(assetsData[collAsset0.symbol].tokenPerSupplyShare).toString();
1053
- const supplied1 = new decimal_js_1.default(supplyShares).mul(assetsData[collAsset1.symbol].tokenPerSupplyShare).toString();
1054
- const borrowed0 = new decimal_js_1.default(borrowShares).mul(assetsData[debtAsset0.symbol].tokenPerBorrowShare).toString();
1055
- const borrowed1 = new decimal_js_1.default(borrowShares).mul(assetsData[debtAsset1.symbol].tokenPerBorrowShare).toString();
1053
+ const supplied0 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset0.decimals, assetsData[collAsset0.symbol].tokenPerSupplyShare);
1054
+ const supplied1 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.supply, collAsset1.decimals, assetsData[collAsset1.symbol].tokenPerSupplyShare);
1055
+ const borrowed0 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset0.decimals, assetsData[debtAsset0.symbol].tokenPerBorrowShare);
1056
+ const borrowed1 = (0, fluidBalances_1.fluidTokenAmount)(userPositionData.borrow, debtAsset1.decimals, assetsData[debtAsset1.symbol].tokenPerBorrowShare);
1056
1057
  const collUsedAsset0 = {
1057
1058
  symbol: collAsset0.symbol,
1058
1059
  collateral: true,
@@ -0,0 +1,5 @@
1
+ import { Client } from 'viem';
2
+ import { AaveMarketInfo, SparkMarketData } from '../types';
3
+ import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
4
+ /** Raw token balances shared by Aave/Spark getters and lending previews. */
5
+ export declare function getAaveLikeBalances(client: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, market: Pick<AaveMarketInfo | SparkMarketData, 'providerAddress' | 'protocolData' | 'protocolDataAddress'>, view: 'AaveLoanInfoV2' | 'AaveV3View' | 'SparkView', tokens?: EthAddress[]): Promise<PositionBalances>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getAaveLikeBalances = getAaveLikeBalances;
16
+ const decimal_js_1 = __importDefault(require("decimal.js"));
17
+ const tokens_1 = require("@defisaver/tokens");
18
+ const contracts_1 = require("../contracts");
19
+ const viem_1 = require("../services/viem");
20
+ const utils_1 = require("../services/utils");
21
+ /** Raw token balances shared by Aave/Spark getters and lending previews. */
22
+ function getAaveLikeBalances(client, network, block, addressMapping, address, market, view, tokens) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const balances = { collateral: {}, debt: {} };
25
+ if (!address)
26
+ return balances;
27
+ let reserves;
28
+ if (tokens)
29
+ reserves = tokens.map(tokenAddress => ({ tokenAddress, symbol: (0, tokens_1.getAssetInfoByAddress)(tokenAddress, network).symbol }));
30
+ else {
31
+ if (!market.protocolData)
32
+ throw new Error('Missing protocol data provider');
33
+ reserves = [...yield (0, contracts_1.createViemContractFromConfigFunc)(market.protocolData, market.protocolDataAddress)(client, network)
34
+ .read.getAllReservesTokens((0, viem_1.setViemBlockNumber)(block))];
35
+ }
36
+ const addresses = reserves.map(token => token.tokenAddress);
37
+ const contract = (0, contracts_1.createViemContractFromConfigFunc)(view)(client, network, block);
38
+ const middle = tokens ? Math.ceil(addresses.length / 2) : Math.floor(addresses.length / 2);
39
+ // Preserve legacy V2 single-call and V3/Spark two-call behavior.
40
+ const parts = !tokens && view === 'AaveLoanInfoV2' ? [addresses] : [addresses.slice(0, middle), addresses.slice(middle)];
41
+ const data = (yield Promise.all((tokens ? parts.filter(part => part.length) : parts)
42
+ .map(part => contract.read.getTokenBalances([market.providerAddress, address, part], (0, viem_1.setViemBlockNumber)(block))))).flat();
43
+ data.forEach((token, i) => {
44
+ // The views leave token.token unset; input order identifies the reserve.
45
+ const key = addressMapping ? (0, utils_1.wethToEthByAddress)(reserves[i].tokenAddress, network).toLowerCase() : (0, utils_1.wethToEth)(reserves[i].symbol);
46
+ balances.collateral[key] = token.balance.toString();
47
+ balances.debt[key] = new decimal_js_1.default(token.borrowsStable.toString()).add(token.borrowsVariable.toString()).toString();
48
+ });
49
+ return balances;
50
+ });
51
+ }
@@ -161,12 +161,15 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
161
161
  let supplyUnstable = 0;
162
162
  let longAsset = '';
163
163
  let shortAsset = '';
164
+ let stableCollAsset = '';
164
165
  Object.values(usedAssets).forEach(({ symbol, suppliedUsd, borrowedUsd, collateral, reserveId, }) => {
165
166
  const spokeAsset = `${symbol}-${reserveId}`;
166
167
  const isSupplied = (+suppliedUsd) > dustLimit; // ignore dust like <limit leftover supply
167
168
  const isBorrowed = (+borrowedUsd) > dustLimit; // ignore dust like <limit leftover supply
168
- if (isSupplied && moneymarket_1.STABLE_ASSETS.includes(symbol) && collateral)
169
+ if (isSupplied && moneymarket_1.STABLE_ASSETS.includes(symbol) && collateral) {
169
170
  supplyStable += 1;
171
+ stableCollAsset = spokeAsset;
172
+ }
170
173
  if (isBorrowed && moneymarket_1.STABLE_ASSETS.includes(symbol))
171
174
  borrowStable += 1;
172
175
  if (isBorrowed && !moneymarket_1.STABLE_ASSETS.includes(symbol)) {
@@ -181,6 +184,7 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
181
184
  const isLong = borrowStable > 0 && borrowUnstable === 0 && supplyUnstable === 1 && supplyStable === 0;
182
185
  const isShort = supplyStable > 0 && supplyUnstable === 0 && borrowUnstable === 1 && borrowStable === 0;
183
186
  const isVolatilePair = supplyUnstable === 1 && borrowUnstable === 1 && supplyStable === 0 && borrowStable === 0;
187
+ const isStablePair = supplyStable === 1 && borrowStable === 1 && supplyUnstable === 0 && borrowUnstable === 0;
184
188
  if (isLong) {
185
189
  return {
186
190
  leveragedType: types_1.LeverageType.Long,
@@ -199,6 +203,12 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
199
203
  leveragedAsset: longAsset,
200
204
  };
201
205
  }
206
+ if (isStablePair) {
207
+ return {
208
+ leveragedType: types_1.LeverageType.StablePair,
209
+ leveragedAsset: stableCollAsset,
210
+ };
211
+ }
202
212
  return {
203
213
  leveragedType: types_1.LeverageType.None,
204
214
  leveragedAsset: '',
@@ -0,0 +1,6 @@
1
+ import { FluidUserPositionStructOutputStruct, FluidVaultDataStructOutputStruct } from '../types';
2
+ import { NetworkNumber, PositionBalances } from '../types/common';
3
+ /** Convert raw tokens, or raw 18-decimal shares with a human-readable token/share ratio. */
4
+ export declare const fluidTokenAmount: (amount: bigint, decimals: number, perShare?: string) => string;
5
+ /** The same token/share conversion used by the full Fluid user parsers, without prices or yield. */
6
+ export declare function parseFluidBalances(position: FluidUserPositionStructOutputStruct, vault: FluidVaultDataStructOutputStruct, network: NetworkNumber): PositionBalances;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fluidTokenAmount = void 0;
7
+ exports.parseFluidBalances = parseFluidBalances;
8
+ const decimal_js_1 = __importDefault(require("decimal.js"));
9
+ const tokens_1 = require("@defisaver/tokens");
10
+ /** Convert raw tokens, or raw 18-decimal shares with a human-readable token/share ratio. */
11
+ const fluidTokenAmount = (amount, decimals, perShare) => (new decimal_js_1.default(amount.toString()).div(new decimal_js_1.default(10).pow(perShare === undefined ? decimals : 18)).mul(perShare !== null && perShare !== void 0 ? perShare : 1).toString());
12
+ exports.fluidTokenAmount = fluidTokenAmount;
13
+ /** The same token/share conversion used by the full Fluid user parsers, without prices or yield. */
14
+ function parseFluidBalances(position, vault, network) {
15
+ const type = Number(vault.vaultType);
16
+ if (![10000, 20000, 30000, 40000].includes(type))
17
+ throw new Error('Unsupported Fluid vault');
18
+ const side = (amount, tokens, ratios) => {
19
+ const balances = {};
20
+ tokens.forEach((address, i) => {
21
+ const token = (0, tokens_1.getAssetInfoByAddress)(address, network);
22
+ if (!Number.isFinite(token.decimals) || !token.symbol)
23
+ throw new Error('Fluid token metadata unavailable');
24
+ const perShare = ratios ? (0, exports.fluidTokenAmount)(ratios[i], token.decimals) : undefined;
25
+ const value = (0, exports.fluidTokenAmount)(amount, token.decimals, perShare);
26
+ balances[token.symbol] = new decimal_js_1.default(balances[token.symbol] || 0).add(value).toString();
27
+ });
28
+ return balances;
29
+ };
30
+ const smartSupply = type === 20000 || type === 40000;
31
+ const smartDebt = type === 30000 || type === 40000;
32
+ return {
33
+ collateral: side(position.supply, smartSupply ? [vault.supplyToken0, vault.supplyToken1] : [vault.supplyToken0], smartSupply ? [vault.dexSupplyData.token0PerSupplyShare, vault.dexSupplyData.token1PerSupplyShare] : undefined),
34
+ debt: side(position.borrow, smartDebt ? [vault.borrowToken0, vault.borrowToken1] : [vault.borrowToken0], smartDebt ? [vault.dexBorrowData.token0PerBorrowShare, vault.dexBorrowData.token1PerBorrowShare] : undefined),
35
+ };
36
+ }
@@ -11,6 +11,14 @@ export type SPYieldGainParameters = {
11
11
  };
12
12
  export declare const _getLiquityV2MarketData: (provider: Client, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo) => Promise<LiquityV2MarketData>;
13
13
  export declare const getLiquityV2MarketData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo) => Promise<LiquityV2MarketData>;
14
+ export declare const nftContractCreationBlockMapping: {
15
+ liquityv2eth: number;
16
+ liquityv2wsteth: number;
17
+ liquityv2reth: number;
18
+ liquityv2ethlegacy: number;
19
+ liquityv2wstethlegacy: number;
20
+ liquityv2rethlegacy: number;
21
+ };
14
22
  export declare const _getLiquityV2UserTroveIds: (provider: PublicClient, network: NetworkNumber, selectedMarket: LiquityV2MarketInfo, troveNFTAddress: EthAddress, limitBlocksForEventFetching: boolean, account: EthAddress) => Promise<{
15
23
  troves: {
16
24
  troveId: string;
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getLiquitySAndYBold = exports.getLiquityV2Staking = exports.getLiquityV2ClaimableCollateral = exports.getLiquityV2TroveData = exports._getLiquityV2TroveData = exports.getDebtInFrontForInterestRateLiquityV2 = exports.getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = exports.calculateDebtInFrontLiquityV2 = exports.getLiquityV2UserTroveIds = exports._getLiquityV2UserTroveIds = exports.getLiquityV2MarketData = exports._getLiquityV2MarketData = void 0;
15
+ exports.getLiquitySAndYBold = exports.getLiquityV2Staking = exports.getLiquityV2ClaimableCollateral = exports.getLiquityV2TroveData = exports._getLiquityV2TroveData = exports.getDebtInFrontForInterestRateLiquityV2 = exports.getDebtInFrontForInterestRateIncludingNewDebtLiquityV2 = exports.calculateDebtInFrontLiquityV2 = exports.getLiquityV2UserTroveIds = exports._getLiquityV2UserTroveIds = exports.nftContractCreationBlockMapping = exports.getLiquityV2MarketData = exports._getLiquityV2MarketData = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const tokens_1 = require("@defisaver/tokens");
18
18
  const contracts_1 = require("../contracts");
@@ -120,7 +120,7 @@ const getUserTroves = (provider_1, network_1, isLegacy_1, account_1, marketAddre
120
120
  return { troves: existingTroves.filter((trove) => trove.ownedByUser), nextFreeTroveIndex };
121
121
  return getUserTroves(provider, network, isLegacy, account, marketAddress, newStartIndex, newStartIndex + 100, existingTroves);
122
122
  });
123
- const nftContractCreationBlockMapping = {
123
+ exports.nftContractCreationBlockMapping = {
124
124
  [types_1.LiquityV2Versions.LiquityV2Eth]: 22516079,
125
125
  [types_1.LiquityV2Versions.LiquityV2WstEth]: 22516099,
126
126
  [types_1.LiquityV2Versions.LiquityV2REth]: 22516118,
@@ -131,7 +131,7 @@ const nftContractCreationBlockMapping = {
131
131
  };
132
132
  const getTransferredTroves = (provider, network, troveNFTAddress, limitBlocksForEventFetching, market, account) => __awaiter(void 0, void 0, void 0, function* () {
133
133
  const nftContract = (0, contracts_1.createViemContractFromConfigFunc)('LiquityV2TroveNFT', troveNFTAddress)(provider, network);
134
- const nftContractCreationBlock = nftContractCreationBlockMapping[market];
134
+ const nftContractCreationBlock = exports.nftContractCreationBlockMapping[market];
135
135
  const currentBlock = +(yield provider.getBlockNumber()).toString();
136
136
  const _events = yield nftContract.getEvents.Transfer({}, { fromBlock: limitBlocksForEventFetching ? BigInt(currentBlock - 1000) : BigInt(nftContractCreationBlock) });
137
137
  const events = _events.map((event) => ({
@@ -3,7 +3,7 @@ import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } fro
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
4
  export declare const _getLlamaLendGlobalData: (provider: Client, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
5
5
  export declare const getLlamaLendGlobalData: (provider: EthereumProvider, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
6
- export declare const _getLlamaLendAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
6
+ export declare const _getLlamaLendAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress, includeDeposited?: boolean) => Promise<PositionBalances>;
7
7
  export declare const getLlamaLendAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
8
8
  export declare const _getLlamaLendUserData: (provider: Client, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
9
9
  export declare const getLlamaLendUserData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
@@ -161,7 +161,7 @@ const getStatusForUser = (bandRange, activeBand, debtSupplied, collSupplied, hea
161
161
  return types_1.LlamaLendStatus.SoftLiquidated; // or is fully soft liquidated
162
162
  return types_1.LlamaLendStatus.Nonexistant;
163
163
  };
164
- const _getLlamaLendAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () {
164
+ const _getLlamaLendAccountBalances = (provider_1, network_1, block_1, addressMapping_1, address_1, controllerAddress_1, ...args_1) => __awaiter(void 0, [provider_1, network_1, block_1, addressMapping_1, address_1, controllerAddress_1, ...args_1], void 0, function* (provider, network, block, addressMapping, address, controllerAddress, includeDeposited = false) {
165
165
  let balances = {
166
166
  collateral: {},
167
167
  debt: {},
@@ -180,6 +180,11 @@ const _getLlamaLendAccountBalances = (provider, network, block, addressMapping,
180
180
  [addressMapping ? (0, tokens_1.getAssetInfo)((0, utils_1.wethToEth)(selectedMarket.baseAsset), network).address.toLowerCase() : (0, utils_1.wethToEth)(selectedMarket.baseAsset)]: data.debtAmount.toString(),
181
181
  },
182
182
  };
183
+ if (includeDeposited) {
184
+ balances.deposited = {
185
+ [addressMapping ? (0, tokens_1.getAssetInfo)((0, utils_1.wethToEth)(selectedMarket.baseAsset), network).address.toLowerCase() : (0, utils_1.wethToEth)(selectedMarket.baseAsset)]: data.debtTokenCollateralAmount.toString(),
186
+ };
187
+ }
183
188
  return balances;
184
189
  });
185
190
  exports._getLlamaLendAccountBalances = _getLlamaLendAccountBalances;
@@ -46,7 +46,6 @@ export declare const MORPHO_BLUE_SUSDS_USDT_965: (networkId?: NetworkNumber) =>
46
46
  export declare const MORPHO_BLUE_MORPHO_USDC_625: (networkId?: NetworkNumber) => MorphoBlueMarketData;
47
47
  export declare const MORPHO_BLUE_LBTC_WBTC_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
48
48
  export declare const MORPHO_BLUE_SWBTC_WBTC_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
49
- export declare const MORPHO_BLUE_OSETH_ETH_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
50
49
  export declare const MORPHO_BLUE_WOETH_ETH_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
51
50
  export declare const MORPHO_BLUE_PTWEETH_USDA_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
52
51
  export declare const MORPHO_BLUE_PRIME_PYUSD_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -156,7 +155,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
156
155
  readonly morphobluersetheth_945: MorphoBlueMarketData;
157
156
  readonly morphobluerswetheth_945: MorphoBlueMarketData;
158
157
  readonly morphoblueweetheth_860: MorphoBlueMarketData;
159
- readonly morphoblueosetheth_860: MorphoBlueMarketData;
160
158
  readonly morphobluewoetheth_860: MorphoBlueMarketData;
161
159
  readonly morphoblueptweethusda_860: MorphoBlueMarketData;
162
160
  readonly morphoblueswbtcwbtc_945: MorphoBlueMarketData;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MORPHO_BLUE_PTWEETH_USDA_860 = exports.MORPHO_BLUE_WOETH_ETH_860 = exports.MORPHO_BLUE_OSETH_ETH_860 = exports.MORPHO_BLUE_SWBTC_WBTC_945 = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_MORPHO_USDC_625 = exports.MORPHO_BLUE_SUSDS_USDT_965 = exports.MORPHO_BLUE_LBTC_CBBTC_945 = exports.MORPHO_BLUE_LBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_USDE_DAI_777 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_777 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_RSWETH_ETH_945 = exports.MORPHO_BLUE_RSETH_ETH_945 = exports.MORPHO_BLUE_ETH_USDT_915 = exports.MORPHO_BLUE_USDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_DAI_777 = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC_860 = exports.MORPHO_BLUE_ETH_USDC_915 = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WEETH_ETH_860 = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
- exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_BSDETH_ETH_860_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_WBTC_PYUSD_860 = exports.MORPHO_BLUE_WBTC_RLUSD_860 = exports.MORPHO_BLUE_ETH_USDT_860 = exports.MORPHO_BLUE_WEETH_USDT_770 = exports.MORPHO_BLUE_CBBTC_PYUSD_860 = exports.MORPHO_BLUE_SYRUPUSDT_USDT_915 = exports.MORPHO_BLUE_WEETH_USDT_860_A6A4C1F1 = exports.MORPHO_BLUE_WEETH_USDT_860 = exports.MORPHO_BLUE_CBBTC_ETH_915_12DBF493 = exports.MORPHO_BLUE_WBTC_ETH_915 = exports.MORPHO_BLUE_CBBTC_RLUSD_860 = exports.MORPHO_BLUE_STUSDS_USDC_860 = exports.MORPHO_BLUE_USD3_USDC_915 = exports.MORPHO_BLUE_ETH_USDC_860_94B823E6 = exports.MORPHO_BLUE_WEETH_USDC_860_85252BB8 = exports.MORPHO_BLUE_WEETH_USDC_860 = exports.MORPHO_BLUE_WEETH_USDC_770 = exports.MORPHO_BLUE_SYRUPUSDC_RLUSD_915 = exports.MORPHO_BLUE_WSTETH_USDT_860 = exports.MORPHO_BLUE_WBTC_USDT_860 = exports.MORPHO_BLUE_SUSDE_PYUSD_915 = exports.MORPHO_BLUE_LBTC_PYUSD_860 = exports.MORPHO_BLUE_CBBTC_USDT_860 = exports.MORPHO_BLUE_WEETH_PYUSD_860 = exports.MORPHO_BLUE_WEETH_RLUSD_860 = exports.MORPHO_BLUE_CBBTC_USDC_860_BC99DE6A = exports.MORPHO_BLUE_WBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_PYUSD_915 = exports.MORPHO_BLUE_WSTETH_USDC_860 = exports.MORPHO_BLUE_KBTC_PYUSD_860 = exports.MORPHO_BLUE_KBTC_RLUSD_860 = exports.MORPHO_BLUE_PRIME_PYUSD_860 = void 0;
5
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WBTC_USDT0_860_ARB = exports.MORPHO_BLUE_WSTETH_USDT0_860_ARB = exports.MORPHO_BLUE_ETH_USDT0_860_ARB = exports.MORPHO_BLUE_WEETH_USDT0_860_ARB = exports.MORPHO_BLUE_SUSDS_USDT0_945_ARB = exports.MORPHO_BLUE_WEETH_USDC_860_ARB = exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = exports.MORPHO_BLUE_ETH_USDC_860_ARB = exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = exports.MorphoBlueWBTCUSDC_860_Arb = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = exports.MORPHO_BLUE_CBXRP_USDC_625_BASE = exports.MORPHO_BLUE_CBETH_USDC_770_BASE = exports.MORPHO_BLUE_USDE_USDC_915_BASE = exports.MORPHO_BLUE_AERO_USDC_625_BASE = exports.MORPHO_BLUE_EZETH_ETH_777_BASE = exports.MORPHO_BLUE_EZETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_945_BASE = exports.MORPHO_BLUE_WEETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_915_BASE = exports.MORPHO_BLUE_CBETH_EURC_860_BASE = exports.MORPHO_BLUE_WETH_EURC_860_BASE = void 0;
3
+ exports.MORPHO_BLUE_PRIME_PYUSD_860 = exports.MORPHO_BLUE_PTWEETH_USDA_860 = exports.MORPHO_BLUE_WOETH_ETH_860 = exports.MORPHO_BLUE_SWBTC_WBTC_945 = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_MORPHO_USDC_625 = exports.MORPHO_BLUE_SUSDS_USDT_965 = exports.MORPHO_BLUE_LBTC_CBBTC_945 = exports.MORPHO_BLUE_LBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_USDE_DAI_777 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_777 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_RSWETH_ETH_945 = exports.MORPHO_BLUE_RSETH_ETH_945 = exports.MORPHO_BLUE_ETH_USDT_915 = exports.MORPHO_BLUE_USDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_DAI_777 = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC_860 = exports.MORPHO_BLUE_ETH_USDC_915 = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WEETH_ETH_860 = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
+ exports.MORPHO_BLUE_WETH_EURC_860_BASE = exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_BSDETH_ETH_860_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_WBTC_PYUSD_860 = exports.MORPHO_BLUE_WBTC_RLUSD_860 = exports.MORPHO_BLUE_ETH_USDT_860 = exports.MORPHO_BLUE_WEETH_USDT_770 = exports.MORPHO_BLUE_CBBTC_PYUSD_860 = exports.MORPHO_BLUE_SYRUPUSDT_USDT_915 = exports.MORPHO_BLUE_WEETH_USDT_860_A6A4C1F1 = exports.MORPHO_BLUE_WEETH_USDT_860 = exports.MORPHO_BLUE_CBBTC_ETH_915_12DBF493 = exports.MORPHO_BLUE_WBTC_ETH_915 = exports.MORPHO_BLUE_CBBTC_RLUSD_860 = exports.MORPHO_BLUE_STUSDS_USDC_860 = exports.MORPHO_BLUE_USD3_USDC_915 = exports.MORPHO_BLUE_ETH_USDC_860_94B823E6 = exports.MORPHO_BLUE_WEETH_USDC_860_85252BB8 = exports.MORPHO_BLUE_WEETH_USDC_860 = exports.MORPHO_BLUE_WEETH_USDC_770 = exports.MORPHO_BLUE_SYRUPUSDC_RLUSD_915 = exports.MORPHO_BLUE_WSTETH_USDT_860 = exports.MORPHO_BLUE_WBTC_USDT_860 = exports.MORPHO_BLUE_SUSDE_PYUSD_915 = exports.MORPHO_BLUE_LBTC_PYUSD_860 = exports.MORPHO_BLUE_CBBTC_USDT_860 = exports.MORPHO_BLUE_WEETH_PYUSD_860 = exports.MORPHO_BLUE_WEETH_RLUSD_860 = exports.MORPHO_BLUE_CBBTC_USDC_860_BC99DE6A = exports.MORPHO_BLUE_WBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_PYUSD_915 = exports.MORPHO_BLUE_WSTETH_USDC_860 = exports.MORPHO_BLUE_KBTC_PYUSD_860 = exports.MORPHO_BLUE_KBTC_RLUSD_860 = void 0;
5
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WBTC_USDT0_860_ARB = exports.MORPHO_BLUE_WSTETH_USDT0_860_ARB = exports.MORPHO_BLUE_ETH_USDT0_860_ARB = exports.MORPHO_BLUE_WEETH_USDT0_860_ARB = exports.MORPHO_BLUE_SUSDS_USDT0_945_ARB = exports.MORPHO_BLUE_WEETH_USDC_860_ARB = exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = exports.MORPHO_BLUE_ETH_USDC_860_ARB = exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = exports.MorphoBlueWBTCUSDC_860_Arb = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = exports.MORPHO_BLUE_CBXRP_USDC_625_BASE = exports.MORPHO_BLUE_CBETH_USDC_770_BASE = exports.MORPHO_BLUE_USDE_USDC_915_BASE = exports.MORPHO_BLUE_AERO_USDC_625_BASE = exports.MORPHO_BLUE_EZETH_ETH_777_BASE = exports.MORPHO_BLUE_EZETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_945_BASE = exports.MORPHO_BLUE_WEETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_915_BASE = exports.MORPHO_BLUE_CBETH_EURC_860_BASE = void 0;
6
6
  const utils_1 = require("../../services/utils");
7
7
  const types_1 = require("../../types");
8
8
  // MAINNET
@@ -758,22 +758,6 @@ const MORPHO_BLUE_SWBTC_WBTC_945 = (networkId = types_1.NetworkNumber.Eth) => ({
758
758
  protocolName: 'morpho-blue',
759
759
  });
760
760
  exports.MORPHO_BLUE_SWBTC_WBTC_945 = MORPHO_BLUE_SWBTC_WBTC_945;
761
- const MORPHO_BLUE_OSETH_ETH_860 = (networkId = types_1.NetworkNumber.Eth) => ({
762
- chainIds: [types_1.NetworkNumber.Eth],
763
- label: 'Morpho Blue',
764
- shortLabel: 'osETH/ETH',
765
- value: types_1.MorphoBlueVersions.MorphoBlueOsEthEth_860,
766
- url: 'osethweth-d5211d0e',
767
- loanToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
768
- collateralToken: '0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38',
769
- oracle: '0x224F2F1333b45E34fFCfC3bD01cE43C73A914498',
770
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
771
- irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
772
- lltv: 0.86,
773
- marketId: '0xd5211d0e3f4a30d5c98653d988585792bb7812221f04801be73a44ceecb11e89',
774
- protocolName: 'morpho-blue',
775
- });
776
- exports.MORPHO_BLUE_OSETH_ETH_860 = MORPHO_BLUE_OSETH_ETH_860;
777
761
  const MORPHO_BLUE_WOETH_ETH_860 = (networkId = types_1.NetworkNumber.Eth) => ({
778
762
  chainIds: [types_1.NetworkNumber.Eth],
779
763
  label: 'Morpho Blue',
@@ -1996,7 +1980,6 @@ const MorphoBlueMarkets = (networkId) => ({
1996
1980
  [types_1.MorphoBlueVersions.MorphoBlueRsEthEth_945]: (0, exports.MORPHO_BLUE_RSETH_ETH_945)(networkId),
1997
1981
  [types_1.MorphoBlueVersions.MorphoBlueRswEthEth_945]: (0, exports.MORPHO_BLUE_RSWETH_ETH_945)(networkId),
1998
1982
  [types_1.MorphoBlueVersions.MorphoBlueWeEthEth_860]: (0, exports.MORPHO_BLUE_WEETH_ETH_860)(networkId),
1999
- [types_1.MorphoBlueVersions.MorphoBlueOsEthEth_860]: (0, exports.MORPHO_BLUE_OSETH_ETH_860)(networkId),
2000
1983
  [types_1.MorphoBlueVersions.MorphoBlueWoEthEth_860]: (0, exports.MORPHO_BLUE_WOETH_ETH_860)(networkId),
2001
1984
  [types_1.MorphoBlueVersions.MorphoBluePTweETHUSDA_860]: (0, exports.MORPHO_BLUE_PTWEETH_USDA_860)(networkId),
2002
1985
  [types_1.MorphoBlueVersions.MorphoBlueSwBTCWBTC_945]: (0, exports.MORPHO_BLUE_SWBTC_WBTC_945)(networkId),