@defisaver/positions-sdk 2.1.137 → 2.1.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/aaveV4/index.js +26 -10
- package/cjs/config/contracts.d.ts +0 -938
- package/cjs/config/contracts.js +1 -8
- package/cjs/contracts.d.ts +0 -23433
- package/cjs/contracts.js +2 -3
- package/cjs/helpers/index.d.ts +0 -1
- package/cjs/helpers/index.js +1 -2
- package/cjs/index.d.ts +1 -2
- package/cjs/index.js +1 -3
- package/cjs/markets/index.d.ts +0 -1
- package/cjs/markets/index.js +1 -3
- package/cjs/portfolio/discovery.d.ts +1 -1
- package/cjs/portfolio/discovery.js +1 -1
- package/cjs/portfolio/index.js +0 -32
- package/cjs/services/utils.d.ts +1 -0
- package/cjs/services/utils.js +3 -1
- package/cjs/staking/staking.js +1 -2
- package/cjs/types/aaveV4.d.ts +5 -0
- package/cjs/types/index.d.ts +0 -1
- package/cjs/types/index.js +0 -1
- package/cjs/types/portfolio.d.ts +0 -4
- package/esm/aaveV4/index.js +27 -11
- package/esm/config/contracts.d.ts +0 -938
- package/esm/config/contracts.js +0 -6
- package/esm/contracts.d.ts +0 -23433
- package/esm/contracts.js +0 -1
- package/esm/helpers/index.d.ts +0 -1
- package/esm/helpers/index.js +0 -1
- package/esm/index.d.ts +1 -2
- package/esm/index.js +1 -2
- package/esm/markets/index.d.ts +0 -1
- package/esm/markets/index.js +0 -1
- package/esm/portfolio/discovery.d.ts +1 -1
- package/esm/portfolio/discovery.js +1 -1
- package/esm/portfolio/index.js +1 -33
- package/esm/services/utils.d.ts +1 -0
- package/esm/services/utils.js +1 -0
- package/esm/staking/staking.js +1 -2
- package/esm/types/aaveV4.d.ts +5 -0
- package/esm/types/index.d.ts +0 -1
- package/esm/types/index.js +0 -1
- package/esm/types/portfolio.d.ts +0 -4
- package/package.json +1 -1
- package/src/aaveV4/index.ts +29 -11
- package/src/config/contracts.ts +0 -6
- package/src/contracts.ts +0 -1
- package/src/helpers/index.ts +0 -1
- package/src/index.ts +0 -2
- package/src/markets/index.ts +0 -1
- package/src/portfolio/discovery.ts +1 -1
- package/src/portfolio/index.ts +0 -33
- package/src/services/utils.ts +2 -0
- package/src/staking/staking.ts +1 -2
- package/src/types/aaveV4.ts +5 -0
- package/src/types/index.ts +0 -1
- package/src/types/portfolio.ts +0 -4
- package/cjs/eulerV2/index.d.ts +0 -47
- package/cjs/eulerV2/index.js +0 -225
- package/cjs/helpers/eulerHelpers/index.d.ts +0 -22
- package/cjs/helpers/eulerHelpers/index.js +0 -231
- package/cjs/markets/euler/index.d.ts +0 -8
- package/cjs/markets/euler/index.js +0 -30
- package/cjs/types/euler.d.ts +0 -153
- package/cjs/types/euler.js +0 -14
- package/esm/eulerV2/index.d.ts +0 -47
- package/esm/eulerV2/index.js +0 -215
- package/esm/helpers/eulerHelpers/index.d.ts +0 -22
- package/esm/helpers/eulerHelpers/index.js +0 -218
- package/esm/markets/euler/index.d.ts +0 -8
- package/esm/markets/euler/index.js +0 -24
- package/esm/types/euler.d.ts +0 -153
- package/esm/types/euler.js +0 -11
- package/src/eulerV2/index.ts +0 -331
- package/src/helpers/eulerHelpers/index.ts +0 -232
- package/src/markets/euler/index.ts +0 -27
- package/src/types/euler.ts +0 -178
package/esm/contracts.js
CHANGED
|
@@ -106,7 +106,6 @@ export const WstETHPriceFeedContractViem = createViemContractFromConfigFunc('Wst
|
|
|
106
106
|
export const CompV3ViewContractViem = createViemContractFromConfigFunc('CompV3View');
|
|
107
107
|
export const SparkViewContractViem = createViemContractFromConfigFunc('SparkView');
|
|
108
108
|
export const SparkIncentiveDataProviderContractViem = createViemContractFromConfigFunc('SparkIncentiveDataProvider');
|
|
109
|
-
export const EulerV2ViewContractViem = createViemContractFromConfigFunc('EulerV2View');
|
|
110
109
|
export const CrvUSDViewContractViem = createViemContractFromConfigFunc('crvUSDView');
|
|
111
110
|
export const CrvUSDFactoryContractViem = createViemContractFromConfigFunc('crvUSDFactory');
|
|
112
111
|
export const LlamaLendViewContractViem = createViemContractFromConfigFunc('LlamaLendView');
|
package/esm/helpers/index.d.ts
CHANGED
|
@@ -6,6 +6,5 @@ export * as makerHelpers from './makerHelpers';
|
|
|
6
6
|
export * as morphoBlueHelpers from './morphoBlueHelpers';
|
|
7
7
|
export * as llamaLendHelpers from './llamaLendHelpers';
|
|
8
8
|
export * as liquityV2Helpers from './liquityV2Helpers';
|
|
9
|
-
export * as eulerV2Helpers from './eulerHelpers';
|
|
10
9
|
export * as fluidHelpers from './fluidHelpers';
|
|
11
10
|
export * as aaveV4Helpers from './aaveV4Helpers';
|
package/esm/helpers/index.js
CHANGED
|
@@ -6,6 +6,5 @@ export * as makerHelpers from './makerHelpers';
|
|
|
6
6
|
export * as morphoBlueHelpers from './morphoBlueHelpers';
|
|
7
7
|
export * as llamaLendHelpers from './llamaLendHelpers';
|
|
8
8
|
export * as liquityV2Helpers from './liquityV2Helpers';
|
|
9
|
-
export * as eulerV2Helpers from './eulerHelpers';
|
|
10
9
|
export * as fluidHelpers from './fluidHelpers';
|
|
11
10
|
export * as aaveV4Helpers from './aaveV4Helpers';
|
package/esm/index.d.ts
CHANGED
|
@@ -17,9 +17,8 @@ import * as helpers from './helpers';
|
|
|
17
17
|
import * as exchange from './exchange';
|
|
18
18
|
import * as morphoBlue from './morphoBlue';
|
|
19
19
|
import * as llamaLend from './llamaLend';
|
|
20
|
-
import * as eulerV2 from './eulerV2';
|
|
21
20
|
import * as portfolio from './portfolio';
|
|
22
21
|
import * as claiming from './claiming';
|
|
23
22
|
import * as savings from './savings';
|
|
24
23
|
export * from './types';
|
|
25
|
-
export { aaveV2, aaveV3, aaveV4, compoundV2, compoundV3, spark, curveUsd, liquity, liquityV2, maker, exchange, staking, moneymarket, markets, helpers, morphoBlue, llamaLend,
|
|
24
|
+
export { aaveV2, aaveV3, aaveV4, compoundV2, compoundV3, spark, curveUsd, liquity, liquityV2, maker, exchange, staking, moneymarket, markets, helpers, morphoBlue, llamaLend, fluid, portfolio, claiming, savings, };
|
package/esm/index.js
CHANGED
|
@@ -17,9 +17,8 @@ import * as helpers from './helpers';
|
|
|
17
17
|
import * as exchange from './exchange';
|
|
18
18
|
import * as morphoBlue from './morphoBlue';
|
|
19
19
|
import * as llamaLend from './llamaLend';
|
|
20
|
-
import * as eulerV2 from './eulerV2';
|
|
21
20
|
import * as portfolio from './portfolio';
|
|
22
21
|
import * as claiming from './claiming';
|
|
23
22
|
import * as savings from './savings';
|
|
24
23
|
export * from './types';
|
|
25
|
-
export { aaveV2, aaveV3, aaveV4, compoundV2, compoundV3, spark, curveUsd, liquity, liquityV2, maker, exchange, staking, moneymarket, markets, helpers, morphoBlue, llamaLend,
|
|
24
|
+
export { aaveV2, aaveV3, aaveV4, compoundV2, compoundV3, spark, curveUsd, liquity, liquityV2, maker, exchange, staking, moneymarket, markets, helpers, morphoBlue, llamaLend, fluid, portfolio, claiming, savings, };
|
package/esm/markets/index.d.ts
CHANGED
|
@@ -5,6 +5,5 @@ export { CrvUsdMarkets } from './curveUsd';
|
|
|
5
5
|
export { MorphoBlueMarkets, findMorphoBlueMarket } from './morphoBlue';
|
|
6
6
|
export { LlamaLendMarkets } from './llamaLend';
|
|
7
7
|
export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
|
|
8
|
-
export { EulerV2Markets } from './euler';
|
|
9
8
|
export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById, getFTokenAddress, getFluidMarketInfoByAddress, } from './fluid';
|
|
10
9
|
export { AaveV4Spokes, findAaveV4SpokeByAddress } from './aaveV4';
|
package/esm/markets/index.js
CHANGED
|
@@ -5,6 +5,5 @@ export { CrvUsdMarkets } from './curveUsd';
|
|
|
5
5
|
export { MorphoBlueMarkets, findMorphoBlueMarket } from './morphoBlue';
|
|
6
6
|
export { LlamaLendMarkets } from './llamaLend';
|
|
7
7
|
export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
|
|
8
|
-
export { EulerV2Markets } from './euler';
|
|
9
8
|
export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById, getFTokenAddress, getFluidMarketInfoByAddress, } from './fluid';
|
|
10
9
|
export { AaveV4Spokes, findAaveV4SpokeByAddress } from './aaveV4';
|
|
@@ -7,7 +7,7 @@ import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
|
|
|
7
7
|
* Uses one shared, multicall-batched viem client (same pattern as getPortfolioData) so all
|
|
8
8
|
* per-market reads collapse into a handful of RPC round trips.
|
|
9
9
|
*
|
|
10
|
-
* Not covered: Maker, Liquity, Liquity V2, Fluid
|
|
10
|
+
* Not covered: Maker, Liquity, Liquity V2, Fluid — these already expose cheap,
|
|
11
11
|
* user-scoped discovery entry points elsewhere in the SDK (e.g. _getUserCdps, _getUserPositionsPortfolio).
|
|
12
12
|
*/
|
|
13
13
|
export declare function getUserPositionsExistence(provider: EthereumProvider, network: NetworkNumber, address: EthAddress, isSim?: boolean): Promise<Record<string, boolean>>;
|
|
@@ -28,7 +28,7 @@ const hasAnyBalance = (balances) => ([balances.collateral, balances.debt].some((
|
|
|
28
28
|
* Uses one shared, multicall-batched viem client (same pattern as getPortfolioData) so all
|
|
29
29
|
* per-market reads collapse into a handful of RPC round trips.
|
|
30
30
|
*
|
|
31
|
-
* Not covered: Maker, Liquity, Liquity V2, Fluid
|
|
31
|
+
* Not covered: Maker, Liquity, Liquity V2, Fluid — these already expose cheap,
|
|
32
32
|
* user-scoped discovery entry points elsewhere in the SDK (e.g. _getUserCdps, _getUserPositionsPortfolio).
|
|
33
33
|
*/
|
|
34
34
|
export function getUserPositionsExistence(provider_1, network_1, address_1) {
|
package/esm/portfolio/index.js
CHANGED
|
@@ -9,12 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import Dec from 'decimal.js';
|
|
11
11
|
import { NetworkNumber } from '../types/common';
|
|
12
|
-
import { AaveMarkets, AaveV4Spokes, CompoundMarkets, CrvUsdMarkets,
|
|
12
|
+
import { AaveMarkets, AaveV4Spokes, CompoundMarkets, CrvUsdMarkets, LiquityV2Markets, LlamaLendMarkets, MorphoBlueMarkets, SparkMarkets, } from '../markets';
|
|
13
13
|
import { _getMorphoBlueAccountData, _getMorphoBluePortfolioMarketData, getMorphoEarn } from '../morphoBlue';
|
|
14
14
|
import { AaveVersions, CompoundVersions, } from '../types';
|
|
15
15
|
import { _getCompoundV3AccountData, _getCompoundV3MarketsData } from '../compoundV3';
|
|
16
16
|
import { _getSparkAccountData, _getSparkMarketsData } from '../spark';
|
|
17
|
-
import { _getEulerV2AccountData, _getEulerV2MarketsData } from '../eulerV2';
|
|
18
17
|
import { _getCurveUsdGlobalData, _getCurveUsdUserData } from '../curveUsd';
|
|
19
18
|
import { _getLlamaLendGlobalData, _getLlamaLendUserData } from '../llamaLend';
|
|
20
19
|
import { _getAaveV3AccountData, _getAaveV3MarketData, getStakeAaveData } from '../aaveV3';
|
|
@@ -26,7 +25,6 @@ import { getViemProvider } from '../services/viem';
|
|
|
26
25
|
import { _getLiquityTroveInfo, getLiquityStakingData } from '../liquity';
|
|
27
26
|
import { _getLiquityV2MarketData, getLiquitySAndYBold, getLiquityV2Staking } from '../liquityV2';
|
|
28
27
|
import { _getAllUserEarnPositionsWithFTokens, _getUserPositionsPortfolio } from '../fluid';
|
|
29
|
-
import { getEulerV2SubAccounts } from '../helpers/eulerHelpers';
|
|
30
28
|
import { getUmbrellaData } from '../umbrella';
|
|
31
29
|
import { getMeritUnclaimedRewards, getUnclaimedRewardsForAllMarkets } from '../claiming/aaveV3';
|
|
32
30
|
import { getCompoundV3Rewards } from '../claiming/compV3';
|
|
@@ -42,7 +40,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
42
40
|
const morphoMarkets = Object.values(MorphoBlueMarkets(network)).filter((market) => market.chainIds.includes(network));
|
|
43
41
|
const compoundV3Markets = Object.values(CompoundMarkets(network)).filter((market) => market.chainIds.includes(network) && market.value !== CompoundVersions.CompoundV2);
|
|
44
42
|
const sparkMarkets = Object.values(SparkMarkets(network)).filter((market) => market.chainIds.includes(network));
|
|
45
|
-
const eulerV2Markets = Object.values(EulerV2Markets(network)).filter((market) => market.chainIds.includes(network));
|
|
46
43
|
const aaveV3Markets = [AaveVersions.AaveV3, AaveVersions.AaveV3Lido, AaveVersions.AaveV3Etherfi].map((version) => AaveMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
47
44
|
const aaveV2Markets = [AaveVersions.AaveV2].map((version) => AaveMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
48
45
|
const compoundV2Markets = [CompoundVersions.CompoundV2].map((version) => CompoundMarkets(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
@@ -57,7 +54,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
57
54
|
const morphoMarketsData = {};
|
|
58
55
|
const compoundV3MarketsData = {};
|
|
59
56
|
const sparkMarketsData = {};
|
|
60
|
-
const eulerV2MarketsData = {};
|
|
61
57
|
const aaveV3MarketsData = {};
|
|
62
58
|
const makerCdps = {};
|
|
63
59
|
const aaveV2MarketsData = {};
|
|
@@ -70,7 +66,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
70
66
|
morphoMarketsData,
|
|
71
67
|
compoundV3MarketsData,
|
|
72
68
|
sparkMarketsData,
|
|
73
|
-
eulerV2MarketsData,
|
|
74
69
|
aaveV3MarketsData,
|
|
75
70
|
aaveV2MarketsData,
|
|
76
71
|
compoundV2MarketsData,
|
|
@@ -90,7 +85,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
90
85
|
morphoBlue: {},
|
|
91
86
|
compoundV3: {},
|
|
92
87
|
spark: {},
|
|
93
|
-
eulerV2: {},
|
|
94
88
|
maker: {},
|
|
95
89
|
aaveV2: {},
|
|
96
90
|
compoundV2: {},
|
|
@@ -143,10 +137,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
143
137
|
const marketData = yield _getSparkMarketsData(client, network, market);
|
|
144
138
|
sparkMarketsData[market.value] = marketData;
|
|
145
139
|
})),
|
|
146
|
-
...eulerV2Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
147
|
-
const marketData = yield _getEulerV2MarketsData(client, network, market);
|
|
148
|
-
eulerV2MarketsData[market.value] = marketData;
|
|
149
|
-
})),
|
|
150
140
|
...aaveV3Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
151
141
|
const marketData = yield _getAaveV3MarketData(client, network, market);
|
|
152
142
|
aaveV3MarketsData[market.value] = marketData;
|
|
@@ -495,28 +485,6 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
495
485
|
positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
|
|
496
486
|
}
|
|
497
487
|
}))).flat(),
|
|
498
|
-
...eulerV2Markets.map((market) => addresses.map((address) => {
|
|
499
|
-
const eulerV2SubAccounts = getEulerV2SubAccounts(address);
|
|
500
|
-
const eulerV2Addresses = [address, ...eulerV2SubAccounts];
|
|
501
|
-
return Promise.all(eulerV2Addresses.map((eulerAddress) => __awaiter(this, void 0, void 0, function* () {
|
|
502
|
-
try {
|
|
503
|
-
const accData = yield _getEulerV2AccountData(client, network, eulerAddress, eulerAddress, Object.assign({ selectedMarket: market }, eulerV2MarketsData[market.value]));
|
|
504
|
-
if (new Dec(accData.suppliedUsd).gt(0) || new Dec(accData.borrowedUsd).gt(0)) {
|
|
505
|
-
if (!positions[address.toLowerCase()].eulerV2[market.value]) {
|
|
506
|
-
positions[address.toLowerCase()].eulerV2[market.value] = {};
|
|
507
|
-
}
|
|
508
|
-
positions[address.toLowerCase()].eulerV2[market.value][eulerAddress.toLowerCase()] = { error: '', data: accData };
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
catch (error) {
|
|
512
|
-
console.error(`Error fetching EulerV2 account data for address ${eulerAddress} on market ${market.value}:`, error);
|
|
513
|
-
if (!positions[address.toLowerCase()].eulerV2[market.value]) {
|
|
514
|
-
positions[address.toLowerCase()].eulerV2[market.value] = {};
|
|
515
|
-
}
|
|
516
|
-
positions[address.toLowerCase()].eulerV2[market.value][eulerAddress.toLowerCase()] = { error: `Error fetching EulerV2 account data for address ${eulerAddress} on market ${market.value}`, data: null };
|
|
517
|
-
}
|
|
518
|
-
})));
|
|
519
|
-
}).flat()).flat(),
|
|
520
488
|
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
521
489
|
var _a;
|
|
522
490
|
return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
|
package/esm/services/utils.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const getAbiItem: (abi: any, methodName: string) => any;
|
|
|
8
8
|
export declare const ADDRESS_REGEX: RegExp;
|
|
9
9
|
export declare const isAddress: (address: string) => boolean;
|
|
10
10
|
export declare const compareAddresses: (addr1?: string, addr2?: string) => boolean;
|
|
11
|
+
export declare const shortenAddress: (address?: string, start?: number, end?: number) => string;
|
|
11
12
|
export declare const getWeiAmountForDecimals: (amount: string | number, decimals: number) => string;
|
|
12
13
|
export declare const getEthAmountForDecimals: (amount: string | number, decimals: string | number) => string;
|
|
13
14
|
export declare const handleWbtcLegacy: (asset: string) => string;
|
package/esm/services/utils.js
CHANGED
|
@@ -10,6 +10,7 @@ export const getAbiItem = (abi, methodName) => abi.find((i) => i.name === method
|
|
|
10
10
|
export const ADDRESS_REGEX = /0x[0-9a-fA-F]{40}/;
|
|
11
11
|
export const isAddress = (address) => typeof address === 'string' && (new RegExp(ADDRESS_REGEX).test(address));
|
|
12
12
|
export const compareAddresses = (addr1 = '', addr2 = '') => addr1.toLowerCase() === addr2.toLowerCase();
|
|
13
|
+
export const shortenAddress = (address = '', start = 8, end = 4) => `${address.substring(0, start)}...${address.slice(-end)}`;
|
|
13
14
|
export const getWeiAmountForDecimals = (amount, decimals) => new Dec(amount).mul(Math.pow(10, decimals)).floor().toString();
|
|
14
15
|
export const getEthAmountForDecimals = (amount, decimals) => new Dec(amount).div(Math.pow(10, +decimals)).toString();
|
|
15
16
|
export const handleWbtcLegacy = (asset) => (asset === 'WBTC Legacy' ? 'WBTC' : asset);
|
package/esm/staking/staking.js
CHANGED
|
@@ -184,9 +184,8 @@ export const calculateInterestEarned = (principal, interest, type, apy = false)
|
|
|
184
184
|
};
|
|
185
185
|
export const calculateNetApy = ({ usedAssets, assetsData, optionalData, }) => {
|
|
186
186
|
const sumValues = Object.values(usedAssets).reduce((_acc, usedAsset) => {
|
|
187
|
-
var _a;
|
|
188
187
|
const acc = Object.assign({}, _acc);
|
|
189
|
-
const assetData = assetsData[usedAsset.symbol]
|
|
188
|
+
const assetData = assetsData[usedAsset.symbol];
|
|
190
189
|
if (usedAsset.isSupplied) {
|
|
191
190
|
const amount = usedAsset.suppliedUsd;
|
|
192
191
|
acc.suppliedUsd = new Dec(acc.suppliedUsd).add(amount).toString();
|
package/esm/types/aaveV4.d.ts
CHANGED
|
@@ -44,6 +44,11 @@ export interface AaveV4SpokeInfo {
|
|
|
44
44
|
value: AaveV4SpokesType;
|
|
45
45
|
url: string;
|
|
46
46
|
address: EthAddress;
|
|
47
|
+
/**
|
|
48
|
+
* Known hub addresses, used only to prefetch hub data in parallel with the spoke data.
|
|
49
|
+
* The on-chain reserves are the source of truth — hubs found there but missing here are
|
|
50
|
+
* fetched dynamically, so this list going stale can't break spoke loading.
|
|
51
|
+
*/
|
|
47
52
|
hubs: EthAddress[];
|
|
48
53
|
}
|
|
49
54
|
export interface AaveV4SpokeData {
|
package/esm/types/index.d.ts
CHANGED
package/esm/types/index.js
CHANGED
package/esm/types/portfolio.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
|
|
|
3
3
|
import { EthAddress } from './common';
|
|
4
4
|
import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
|
|
5
5
|
import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
|
|
6
|
-
import { EulerV2PositionData, EulerV2Versions } from './euler';
|
|
7
6
|
import { FluidVaultData } from './fluid';
|
|
8
7
|
import { LiquityTroveInfo } from './liquity';
|
|
9
8
|
import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
@@ -27,9 +26,6 @@ export interface PortfolioPositionsDataForAddress {
|
|
|
27
26
|
spark: {
|
|
28
27
|
[key in SparkVersions]?: PortfolioProtocolData<SparkPositionData>;
|
|
29
28
|
};
|
|
30
|
-
eulerV2: {
|
|
31
|
-
[key in EulerV2Versions]?: Record<EthAddress, PortfolioProtocolData<EulerV2PositionData>>;
|
|
32
|
-
};
|
|
33
29
|
maker: {
|
|
34
30
|
[key: string]: PortfolioProtocolData<CdpData>;
|
|
35
31
|
};
|
package/package.json
CHANGED
package/src/aaveV4/index.ts
CHANGED
|
@@ -21,7 +21,9 @@ import {
|
|
|
21
21
|
} from '../types';
|
|
22
22
|
import { AaveV4ViewContractViem } from '../contracts';
|
|
23
23
|
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
24
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
isMaxUint, shortenAddress, wethToEth, wethToEthByAddress,
|
|
26
|
+
} from '../services/utils';
|
|
25
27
|
import { aaveV4GetAggregatedPositionData, calcUserRiskPremiumBps } from '../helpers/aaveV4Helpers';
|
|
26
28
|
import { findAaveV4SpokeByAddress, getAaveV4HubByAddress } from '../markets/aaveV4';
|
|
27
29
|
import { aprToApy } from '../moneymarket';
|
|
@@ -56,10 +58,10 @@ const formatReserveAsset = async (reserveAsset: AaveV4ReserveAssetOnChain, hubAs
|
|
|
56
58
|
// tokens package. Flag it so consumers can render it read-only instead of feeding NaN into amounts.
|
|
57
59
|
const isUnsupported = assetInfo.symbol === '?';
|
|
58
60
|
const symbol = wethToEth(assetInfo.symbol);
|
|
61
|
+
// The hub registry only provides display metadata — a hub missing from it (newly deployed by
|
|
62
|
+
// Aave, SDK not yet updated) must not prevent the reserve from loading, so fall back to a
|
|
63
|
+
// generated label instead of failing.
|
|
59
64
|
const hubInfo = getAaveV4HubByAddress(network, reserveAsset.hub);
|
|
60
|
-
if (!hubInfo) {
|
|
61
|
-
throw new Error(`Hub not found with address: ${reserveAsset.hub}`);
|
|
62
|
-
}
|
|
63
65
|
|
|
64
66
|
const isStakingAsset = STAKING_ASSETS.includes(symbol);
|
|
65
67
|
const supplyIncentives: IncentiveData[] = [];
|
|
@@ -124,8 +126,8 @@ const formatReserveAsset = async (reserveAsset: AaveV4ReserveAssetOnChain, hubAs
|
|
|
124
126
|
decimals: reserveAsset.decimals,
|
|
125
127
|
isUnsupported,
|
|
126
128
|
underlying: reserveAsset.underlying,
|
|
127
|
-
hub: hubInfo.
|
|
128
|
-
hubName: hubInfo?.label
|
|
129
|
+
hub: hubInfo?.address ?? reserveAsset.hub,
|
|
130
|
+
hubName: hubInfo?.label ?? `Hub ${shortenAddress(reserveAsset.hub)}`,
|
|
129
131
|
assetId: reserveAsset.assetId,
|
|
130
132
|
reserveId,
|
|
131
133
|
paused: reserveAsset.paused,
|
|
@@ -163,16 +165,32 @@ const formatReserveAsset = async (reserveAsset: AaveV4ReserveAssetOnChain, hubAs
|
|
|
163
165
|
export async function _getAaveV4SpokeData(provider: Client, network: NetworkNumber, market: AaveV4SpokeInfo, blockNumber: 'latest' | number = 'latest'): Promise<AaveV4SpokeData> {
|
|
164
166
|
const viewContract = AaveV4ViewContractViem(provider, network, blockNumber);
|
|
165
167
|
|
|
166
|
-
const hubsData: Record<
|
|
168
|
+
const hubsData: Record<string, AaveV4HubOnChainData> = {};
|
|
169
|
+
const loadHubData = async (hubAddress: EthAddress) => {
|
|
170
|
+
hubsData[hubAddress.toLowerCase()] = await fetchHubData(viewContract, hubAddress);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// market.hubs is only a prefetch hint (lets known hubs load in parallel with the spoke data), so
|
|
174
|
+
// failures are tolerated here — any hub the reserves actually reference is (re)fetched below.
|
|
167
175
|
const [spokeData, merklCampaigns] = await Promise.all([
|
|
168
176
|
viewContract.read.getSpokeDataFull([market.address]),
|
|
169
177
|
getAaveV4MerkleCampaigns(network),
|
|
170
|
-
...market.hubs.map(
|
|
171
|
-
hubsData[hubAddress] = await fetchHubData(viewContract, hubAddress);
|
|
172
|
-
}),
|
|
178
|
+
...market.hubs.map((hubAddress) => loadHubData(hubAddress).catch(() => {})),
|
|
173
179
|
]);
|
|
174
180
|
|
|
175
|
-
|
|
181
|
+
// The on-chain reserves are the source of truth for which hubs the spoke uses — fetch any hub
|
|
182
|
+
// the prefetch didn't cover, so an asset listed from a hub unknown to the SDK can't break the spoke.
|
|
183
|
+
const missingHubs = [...new Set(spokeData[1].map((reserveAsset: AaveV4ReserveAssetOnChain) => reserveAsset.hub.toLowerCase() as EthAddress))]
|
|
184
|
+
.filter((hubAddress) => !hubsData[hubAddress]);
|
|
185
|
+
await Promise.all(missingHubs.map(loadHubData));
|
|
186
|
+
|
|
187
|
+
const reserveAssetsArray = (await Promise.all(spokeData[1].map(async (reserveAssetOnChain: AaveV4ReserveAssetOnChain, index: number) => {
|
|
188
|
+
const hubAsset = hubsData[reserveAssetOnChain.hub.toLowerCase()]?.assets[reserveAssetOnChain.assetId];
|
|
189
|
+
// A reserve whose hub-side asset data can't be resolved is skipped instead of failing the
|
|
190
|
+
// whole spoke (position math degrades for that one asset only).
|
|
191
|
+
if (!hubAsset) return null;
|
|
192
|
+
return formatReserveAsset(reserveAssetOnChain, hubAsset, index, +spokeData[0].oracleDecimals.toString(), network);
|
|
193
|
+
}))).filter((asset): asset is AaveV4ReserveAssetData => asset !== null);
|
|
176
194
|
|
|
177
195
|
const enrichedAssets = reserveAssetsArray.map((asset) => attachAaveV4MerklIncentives(asset, market.address, merklCampaigns));
|
|
178
196
|
|
package/src/config/contracts.ts
CHANGED
|
@@ -1169,12 +1169,6 @@ export const LiquityV2TroveNFT = {
|
|
|
1169
1169
|
"abi": [{"inputs":[{"internalType":"contract IAddressesRegistry","name":"_addressesRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_troveId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataNFT","outputs":[{"internalType":"contract IMetadataNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_troveId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"troveManager","outputs":[{"internalType":"contract ITroveManager","name":"","type":"address"}],"stateMutability":"view","type":"function"}],
|
|
1170
1170
|
"networks": {}
|
|
1171
1171
|
} as const;
|
|
1172
|
-
export const EulerV2View = {
|
|
1173
|
-
"abi": [{"inputs":[],"name":"USD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feedRegistry","outputs":[{"internalType":"contract IFeedRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_page","type":"uint256"},{"internalType":"uint256","name":"_perPage","type":"uint256"}],"name":"fetchUsedAccounts","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveTokenPriceInETH","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveTokenPriceInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveV3TokenPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getAaveV3TokenPriceInUSD","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getAddrForChainlinkOracle","outputs":[{"internalType":"address","name":"tokenAddrForChainlinkUsage","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"bool","name":"isBorrowOperation","type":"bool"},{"internalType":"uint256","name":"liquidityAdded","type":"uint256"},{"internalType":"uint256","name":"liquidityRemoved","type":"uint256"}],"internalType":"struct EulerV2View.LiquidityChangeParams[]","name":"params","type":"tuple[]"}],"name":"getApyAfterValuesEstimation","outputs":[{"internalType":"uint256[]","name":"estimatedBorrowRates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getChainlinkPriceInETH","outputs":[{"internalType":"int256","name":"chainlinkPriceInETH","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"bool","name":"_useFallback","type":"bool"}],"name":"getChainlinkPriceInUSD","outputs":[{"internalType":"int256","name":"chainlinkPriceInUSD","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"}],"name":"getPriceInUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"uint80","name":"_roundId","type":"uint80"},{"internalType":"contract IAggregatorV3","name":"aggregator","type":"address"}],"name":"getRoundInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"updateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_inputTokenAddr","type":"address"},{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"updateTimestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getSparkTokenPriceInETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"getSparkTokenPriceInUSD","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"inLockDownMode","type":"bool"},{"internalType":"bool","name":"inPermitDisabledMode","type":"bool"},{"internalType":"address","name":"borrowVault","type":"address"},{"internalType":"uint256","name":"borrowAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"borrowAmountInAsset","type":"uint256"},{"components":[{"internalType":"address","name":"collateralVault","type":"address"},{"internalType":"bool","name":"usedInBorrow","type":"bool"},{"internalType":"uint256","name":"collateralAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInAsset","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInUSD","type":"uint256"}],"internalType":"struct EulerV2View.UserCollateralInfo[]","name":"collaterals","type":"tuple[]"}],"internalType":"struct EulerV2View.UserData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"getUsersData","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"inLockDownMode","type":"bool"},{"internalType":"bool","name":"inPermitDisabledMode","type":"bool"},{"internalType":"address","name":"borrowVault","type":"address"},{"internalType":"uint256","name":"borrowAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"borrowAmountInAsset","type":"uint256"},{"components":[{"internalType":"address","name":"collateralVault","type":"address"},{"internalType":"bool","name":"usedInBorrow","type":"bool"},{"internalType":"uint256","name":"collateralAmountInUnit","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInAsset","type":"uint256"},{"internalType":"uint256","name":"collateralAmountInUSD","type":"uint256"}],"internalType":"struct EulerV2View.UserCollateralInfo[]","name":"collaterals","type":"tuple[]"}],"internalType":"struct EulerV2View.UserData[]","name":"data","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"getVaultCollaterals","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collateralsInfo","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"getVaultInfoFull","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"totalSupplyShares","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collaterals","type":"tuple[]"},{"internalType":"uint16","name":"maxLiquidationDiscount","type":"uint16"},{"internalType":"uint256","name":"liquidationCoolOffTime","type":"uint256"},{"internalType":"bool","name":"badDebtSocializationEnabled","type":"bool"},{"internalType":"address","name":"unitOfAccount","type":"address"},{"internalType":"uint256","name":"unitOfAccountInUsd","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"},{"internalType":"address","name":"irm","type":"address"},{"internalType":"address","name":"balanceTrackerAddress","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"uint256","name":"interestFee","type":"uint256"}],"internalType":"struct EulerV2View.VaultInfoFull","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_vaults","type":"address[]"}],"name":"getVaultsInfosFull","outputs":[{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"totalSupplyShares","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"totalAssets","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"components":[{"internalType":"address","name":"vaultAddr","type":"address"},{"internalType":"address","name":"assetAddr","type":"address"},{"internalType":"string","name":"vaultSymbol","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"bool","name":"isEscrowed","type":"bool"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"totalBorrows","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"},{"internalType":"uint16","name":"initialLiquidationLTV","type":"uint16"},{"internalType":"uint48","name":"targetTimestamp","type":"uint48"},{"internalType":"uint32","name":"rampDuration","type":"uint32"},{"internalType":"uint256","name":"interestFee","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"}],"internalType":"struct EulerV2View.CollateralInfo[]","name":"collaterals","type":"tuple[]"},{"internalType":"uint16","name":"maxLiquidationDiscount","type":"uint16"},{"internalType":"uint256","name":"liquidationCoolOffTime","type":"uint256"},{"internalType":"bool","name":"badDebtSocializationEnabled","type":"bool"},{"internalType":"address","name":"unitOfAccount","type":"address"},{"internalType":"uint256","name":"unitOfAccountInUsd","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"assetPriceInUnit","type":"uint256"},{"internalType":"uint256","name":"sharePriceInUnit","type":"uint256"},{"internalType":"uint256","name":"interestRate","type":"uint256"},{"internalType":"address","name":"irm","type":"address"},{"internalType":"address","name":"balanceTrackerAddress","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"governorAdmin","type":"address"},{"internalType":"uint256","name":"interestFee","type":"uint256"}],"internalType":"struct EulerV2View.VaultInfoFull[]","name":"data","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_btcPrice","type":"int256"}],"name":"getWBtcPrice","outputs":[{"internalType":"int256","name":"wBtcPrice","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_stEthPrice","type":"int256"}],"name":"getWStEthPrice","outputs":[{"internalType":"int256","name":"wStEthPrice","type":"int256"}],"stateMutability":"view","type":"function"}],
|
|
1174
|
-
"networks": {
|
|
1175
|
-
"1": { "address": "0x8932E46Ecf96b5Fe033F5e27Ab6dC755Cb668967" }
|
|
1176
|
-
}
|
|
1177
|
-
} as const;
|
|
1178
1172
|
export const LiquityV2StabilityPool = {
|
|
1179
1173
|
"abi": [{"inputs":[{"internalType":"contract IAddressesRegistry","name":"_addressesRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newActivePoolAddress","type":"address"}],"name":"ActivePoolAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_B","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"_epoch","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"_scale","type":"uint128"}],"name":"B_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newBoldTokenAddress","type":"address"}],"name":"BoldTokenAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newDefaultPoolAddress","type":"address"}],"name":"DefaultPoolAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_depositor","type":"address"},{"indexed":false,"internalType":"enum IStabilityPoolEvents.Operation","name":"_operation","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"_depositLossSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"int256","name":"_depositChange","type":"int256"},{"indexed":false,"internalType":"uint256","name":"_yieldGainSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_yieldGainClaimed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ethGainSinceLastOperation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_ethGainClaimed","type":"uint256"}],"name":"DepositOperation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"_newDeposit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_stashedColl","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotP","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotScale","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_snapshotEpoch","type":"uint256"}],"name":"DepositUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"_currentEpoch","type":"uint128"}],"name":"EpochUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"EtherSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_P","type":"uint256"}],"name":"P_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newPriceFeedAddress","type":"address"}],"name":"PriceFeedAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_S","type":"uint256"},{"indexed":false,"internalType":"uint128","name":"_epoch","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"_scale","type":"uint128"}],"name":"S_Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"_currentScale","type":"uint128"}],"name":"ScaleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBalance","type":"uint256"}],"name":"StabilityPoolBoldBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newBalance","type":"uint256"}],"name":"StabilityPoolCollBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newTroveManagerAddress","type":"address"}],"name":"TroveManagerAddressChanged","type":"event"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"P","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SCALE_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activePool","outputs":[{"internalType":"contract IActivePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boldToken","outputs":[{"internalType":"contract IBoldToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllCollGains","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentScale","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositSnapshots","outputs":[{"internalType":"uint256","name":"S","type":"uint256"},{"internalType":"uint256","name":"P","type":"uint256"},{"internalType":"uint256","name":"B","type":"uint256"},{"internalType":"uint128","name":"scale","type":"uint128"},{"internalType":"uint128","name":"epoch","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"initialValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"}],"name":"epochToScaleToB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"","type":"uint128"},{"internalType":"uint128","name":"","type":"uint128"}],"name":"epochToScaleToS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCollBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getCompoundedBoldDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorCollGain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorYieldGain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_depositor","type":"address"}],"name":"getDepositorYieldGainWithPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntireSystemColl","outputs":[{"internalType":"uint256","name":"entireSystemColl","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntireSystemDebt","outputs":[{"internalType":"uint256","name":"entireSystemDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBoldDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYieldGainsOwed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYieldGainsPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBoldLossError_Offset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBoldLossError_TotalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastCollError_Offset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastYieldError","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_debtToOffset","type":"uint256"},{"internalType":"uint256","name":"_collToAdd","type":"uint256"}],"name":"offset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_topUp","type":"uint256"},{"internalType":"bool","name":"_doClaim","type":"bool"}],"name":"provideToSP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stashedColl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_boldYield","type":"uint256"}],"name":"triggerBoldRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"troveManager","outputs":[{"internalType":"contract ITroveManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_doClaim","type":"bool"}],"name":"withdrawFromSP","outputs":[],"stateMutability":"nonpayable","type":"function"}],
|
|
1180
1174
|
"networks": {}
|
package/src/contracts.ts
CHANGED
|
@@ -134,7 +134,6 @@ export const WstETHPriceFeedContractViem = createViemContractFromConfigFunc('Wst
|
|
|
134
134
|
export const CompV3ViewContractViem = createViemContractFromConfigFunc('CompV3View');
|
|
135
135
|
export const SparkViewContractViem = createViemContractFromConfigFunc('SparkView');
|
|
136
136
|
export const SparkIncentiveDataProviderContractViem = createViemContractFromConfigFunc('SparkIncentiveDataProvider');
|
|
137
|
-
export const EulerV2ViewContractViem = createViemContractFromConfigFunc('EulerV2View');
|
|
138
137
|
export const CrvUSDViewContractViem = createViemContractFromConfigFunc('crvUSDView');
|
|
139
138
|
export const CrvUSDFactoryContractViem = createViemContractFromConfigFunc('crvUSDFactory');
|
|
140
139
|
export const LlamaLendViewContractViem = createViemContractFromConfigFunc('LlamaLendView');
|
package/src/helpers/index.ts
CHANGED
|
@@ -6,6 +6,5 @@ export * as makerHelpers from './makerHelpers';
|
|
|
6
6
|
export * as morphoBlueHelpers from './morphoBlueHelpers';
|
|
7
7
|
export * as llamaLendHelpers from './llamaLendHelpers';
|
|
8
8
|
export * as liquityV2Helpers from './liquityV2Helpers';
|
|
9
|
-
export * as eulerV2Helpers from './eulerHelpers';
|
|
10
9
|
export * as fluidHelpers from './fluidHelpers';
|
|
11
10
|
export * as aaveV4Helpers from './aaveV4Helpers';
|
package/src/index.ts
CHANGED
|
@@ -18,7 +18,6 @@ import * as helpers from './helpers';
|
|
|
18
18
|
import * as exchange from './exchange';
|
|
19
19
|
import * as morphoBlue from './morphoBlue';
|
|
20
20
|
import * as llamaLend from './llamaLend';
|
|
21
|
-
import * as eulerV2 from './eulerV2';
|
|
22
21
|
import * as portfolio from './portfolio';
|
|
23
22
|
import * as claiming from './claiming';
|
|
24
23
|
import * as savings from './savings';
|
|
@@ -43,7 +42,6 @@ export {
|
|
|
43
42
|
helpers,
|
|
44
43
|
morphoBlue,
|
|
45
44
|
llamaLend,
|
|
46
|
-
eulerV2,
|
|
47
45
|
fluid,
|
|
48
46
|
portfolio,
|
|
49
47
|
claiming,
|
package/src/markets/index.ts
CHANGED
|
@@ -19,7 +19,6 @@ export { CrvUsdMarkets } from './curveUsd';
|
|
|
19
19
|
export { MorphoBlueMarkets, findMorphoBlueMarket } from './morphoBlue';
|
|
20
20
|
export { LlamaLendMarkets } from './llamaLend';
|
|
21
21
|
export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
|
|
22
|
-
export { EulerV2Markets } from './euler';
|
|
23
22
|
export {
|
|
24
23
|
FluidMarkets,
|
|
25
24
|
getFluidVersionsDataForNetwork,
|
|
@@ -35,7 +35,7 @@ const hasAnyBalance = (balances: PositionBalances): boolean => (
|
|
|
35
35
|
* Uses one shared, multicall-batched viem client (same pattern as getPortfolioData) so all
|
|
36
36
|
* per-market reads collapse into a handful of RPC round trips.
|
|
37
37
|
*
|
|
38
|
-
* Not covered: Maker, Liquity, Liquity V2, Fluid
|
|
38
|
+
* Not covered: Maker, Liquity, Liquity V2, Fluid — these already expose cheap,
|
|
39
39
|
* user-scoped discovery entry points elsewhere in the SDK (e.g. _getUserCdps, _getUserPositionsPortfolio).
|
|
40
40
|
*/
|
|
41
41
|
export async function getUserPositionsExistence(
|