@defisaver/positions-sdk 2.1.161-portfolio-api-1-dev → 2.1.161
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/portfolio/index.d.ts +2 -2
- package/cjs/portfolio/index.js +3 -5
- package/cjs/savings/index.js +5 -2
- package/cjs/savings/morphoVaults/index.d.ts +1 -1
- package/cjs/savings/morphoVaults/index.js +56 -18
- package/cjs/savings/morphoVaults/options.d.ts +2 -0
- package/cjs/savings/morphoVaults/options.js +61 -1
- package/cjs/types/aave.d.ts +2 -15
- package/cjs/types/compound.d.ts +2 -26
- package/cjs/types/curveUsd.d.ts +1 -9
- package/cjs/types/llamaLend.d.ts +1 -12
- package/cjs/types/morphoBlue.d.ts +0 -2
- package/cjs/types/portfolio.d.ts +8 -23
- package/cjs/types/savings/morphoVaults.d.ts +10 -2
- package/cjs/types/savings/morphoVaults.js +9 -1
- package/cjs/types/spark.d.ts +1 -21
- package/esm/portfolio/index.d.ts +2 -2
- package/esm/portfolio/index.js +3 -5
- package/esm/savings/index.js +5 -2
- package/esm/savings/morphoVaults/index.d.ts +1 -1
- package/esm/savings/morphoVaults/index.js +57 -19
- package/esm/savings/morphoVaults/options.d.ts +2 -0
- package/esm/savings/morphoVaults/options.js +61 -1
- package/esm/types/aave.d.ts +2 -15
- package/esm/types/compound.d.ts +2 -26
- package/esm/types/curveUsd.d.ts +1 -9
- package/esm/types/llamaLend.d.ts +1 -12
- package/esm/types/morphoBlue.d.ts +0 -2
- package/esm/types/portfolio.d.ts +8 -23
- package/esm/types/savings/morphoVaults.d.ts +10 -2
- package/esm/types/savings/morphoVaults.js +8 -0
- package/esm/types/spark.d.ts +1 -21
- package/package.json +1 -1
- package/src/portfolio/index.ts +4 -7
- package/src/savings/index.ts +5 -2
- package/src/savings/morphoVaults/index.ts +73 -21
- package/src/savings/morphoVaults/options.ts +67 -1
- package/src/types/aave.ts +1 -18
- package/src/types/compound.ts +2 -38
- package/src/types/curveUsd.ts +1 -17
- package/src/types/llamaLend.ts +1 -19
- package/src/types/morphoBlue.ts +0 -3
- package/src/types/portfolio.ts +9 -28
- package/src/types/savings/morphoVaults.ts +11 -1
- package/src/types/spark.ts +1 -25
package/cjs/types/spark.d.ts
CHANGED
|
@@ -46,21 +46,6 @@ export interface SparkAssetData extends MMAssetData {
|
|
|
46
46
|
eModeCategory: number;
|
|
47
47
|
liquidationBonus: string;
|
|
48
48
|
liquidationRatio: string;
|
|
49
|
-
debtCeilingForIsolationMode?: string;
|
|
50
|
-
isSiloed?: boolean;
|
|
51
|
-
isolationModeTotalDebt?: string;
|
|
52
|
-
isolationModeBorrowingEnabled?: boolean;
|
|
53
|
-
assetId?: number;
|
|
54
|
-
borrowRateStable?: string;
|
|
55
|
-
supplyCap?: string;
|
|
56
|
-
isInactive?: boolean;
|
|
57
|
-
isFrozen?: boolean;
|
|
58
|
-
isPaused?: boolean;
|
|
59
|
-
canBeWithdrawn?: boolean;
|
|
60
|
-
canBePayBacked?: boolean;
|
|
61
|
-
disabledStableBorrowing?: boolean;
|
|
62
|
-
isFlashLoanEnabled?: boolean;
|
|
63
|
-
aTokenAddress?: EthAddress;
|
|
64
49
|
}
|
|
65
50
|
export interface SparkAssetsData {
|
|
66
51
|
[token: string]: SparkAssetData;
|
|
@@ -115,12 +100,7 @@ export interface SparkAggregatedPositionData {
|
|
|
115
100
|
minHealthRatio: string;
|
|
116
101
|
exposure: string;
|
|
117
102
|
}
|
|
118
|
-
|
|
119
|
-
* Fields sparkGetAggregatedPositionData adds to every Spark position at runtime, on top of those declared below.
|
|
120
|
-
* Optional, so code that builds a position by hand keeps compiling.
|
|
121
|
-
*/
|
|
122
|
-
export type SparkPositionAggregatedFields = Partial<Omit<SparkAggregatedPositionData, keyof MMPositionData | 'ratio' | 'collRatio' | 'suppliedUsd' | 'borrowedUsd' | 'borrowLimitUsd' | 'suppliedCollateralUsd' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
123
|
-
export interface SparkPositionData extends MMPositionData, SparkPositionAggregatedFields {
|
|
103
|
+
export interface SparkPositionData extends MMPositionData {
|
|
124
104
|
ratio: string;
|
|
125
105
|
minRatio: string;
|
|
126
106
|
collRatio: string;
|
package/esm/portfolio/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
|
|
2
|
-
import {
|
|
2
|
+
import { PortfolioPositionsData } from '../types';
|
|
3
3
|
export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
|
|
4
4
|
positions: PortfolioPositionsData;
|
|
5
5
|
stakingPositions: any;
|
|
6
6
|
rewardsData: any;
|
|
7
|
-
markets:
|
|
7
|
+
markets: any;
|
|
8
8
|
}>;
|
|
9
9
|
export * from './discovery';
|
package/esm/portfolio/index.js
CHANGED
|
@@ -501,11 +501,9 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
501
501
|
positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
|
|
502
502
|
}
|
|
503
503
|
}))).flat(),
|
|
504
|
-
|
|
505
|
-
// before a vault's data lands and the vault is missing from the result.
|
|
506
|
-
...addresses.flatMap((address) => {
|
|
504
|
+
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
507
505
|
var _a;
|
|
508
|
-
return (
|
|
506
|
+
return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
509
507
|
try {
|
|
510
508
|
const cdpData = yield _getMakerCdpData(client, network, cdpInfo);
|
|
511
509
|
if (cdpData) {
|
|
@@ -517,7 +515,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
517
515
|
positions[address.toLowerCase()].maker[cdpInfo.id] = { error: `Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}`, data: null };
|
|
518
516
|
}
|
|
519
517
|
}));
|
|
520
|
-
}),
|
|
518
|
+
})).flat(),
|
|
521
519
|
...aaveV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
522
520
|
try {
|
|
523
521
|
const accData = yield _getAaveV2AccountData(client, network, address, aaveV2MarketsData[market.value].assetsData, market);
|
package/esm/savings/index.js
CHANGED
|
@@ -18,7 +18,8 @@ import * as summerVaults from './summerVaults';
|
|
|
18
18
|
import * as yearnV3Vaults from './yearnV3Vaults';
|
|
19
19
|
export { morphoVaults, yearnVaults, makerDsr, skyOptions, sparkSavingsVaults, summerVaults, yearnV3Vaults, };
|
|
20
20
|
export const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
-
const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS)
|
|
21
|
+
const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS)
|
|
22
|
+
.filter((key) => morphoVaults.morphoVaultsOptions.getMorphoVault(key).network === network);
|
|
22
23
|
const yearnVaultsList = Object.keys(yearnVaults.yearnVaultsOptions.YEARN_VAULTS);
|
|
23
24
|
const sparkSavingsVaultsList = Object.keys(sparkSavingsVaults.sparkSavingsVaultsOptions.SPARK_SAVINGS_VAULTS);
|
|
24
25
|
const yearnV3VaultsList = Object.keys(yearnV3Vaults.yearnV3VaultsOptions.YEARN_V3_VAULTS);
|
|
@@ -26,7 +27,7 @@ export const getSavingsData = (provider, network, accounts) => __awaiter(void 0,
|
|
|
26
27
|
.filter((key) => summerVaults.summerVaultsOptions.getSummerVault(key).network === network);
|
|
27
28
|
const savingsData = {};
|
|
28
29
|
yield Promise.all([
|
|
29
|
-
...(
|
|
30
|
+
...(morphoVaultsList.length ? [
|
|
30
31
|
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
32
|
try {
|
|
32
33
|
const vaults = morphoVaultsList.map((vaultKey) => morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey));
|
|
@@ -37,6 +38,8 @@ export const getSavingsData = (provider, network, accounts) => __awaiter(void 0,
|
|
|
37
38
|
console.error('[getSavingsData] Error fetching morpho vaults:', err);
|
|
38
39
|
}
|
|
39
40
|
}))(),
|
|
41
|
+
] : []),
|
|
42
|
+
...(network === NetworkNumber.Eth ? [
|
|
40
43
|
...yearnVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
44
|
try {
|
|
42
45
|
const vault = yearnVaults.yearnVaultsOptions.getYearnVault(vaultKey);
|
|
@@ -3,7 +3,7 @@ import * as morphoVaultsOptions from './options';
|
|
|
3
3
|
import { EthAddress, EthereumProvider, NetworkNumber, MorphoVault, MorphoVaultType, SavingsVaultData } from '../../types';
|
|
4
4
|
export { morphoVaultsOptions, };
|
|
5
5
|
/**
|
|
6
|
-
* Fetches liquidity for all given vaults
|
|
6
|
+
* Fetches liquidity for all given vaults, one API request per vault version (chunked if over the page cap),
|
|
7
7
|
* returned as a map keyed by lowercased vault address. A vault missing from the API response is
|
|
8
8
|
* absent from the map.
|
|
9
9
|
*/
|
|
@@ -11,43 +11,51 @@ import Dec from 'decimal.js';
|
|
|
11
11
|
import { request as graphqlRequest } from 'graphql-request';
|
|
12
12
|
import { assetAmountInEth } from '@defisaver/tokens';
|
|
13
13
|
import * as morphoVaultsOptions from './options';
|
|
14
|
+
import { MorphoVaultVersion, } from '../../types';
|
|
14
15
|
import { getViemProvider } from '../../services/viem';
|
|
15
|
-
import { getMorphoVaultContractViem } from '../../contracts';
|
|
16
|
+
import { getErc4626ContractViem, getMorphoVaultContractViem } from '../../contracts';
|
|
16
17
|
import { MORPHO_API_URL } from '../../constants';
|
|
17
18
|
export { morphoVaultsOptions, };
|
|
18
19
|
// Morpho API caps list page size at 100 items
|
|
19
20
|
const MORPHO_API_PAGE_SIZE = 100;
|
|
20
|
-
const
|
|
21
|
+
const buildLiquidityQuery = (listField) => `
|
|
21
22
|
query VaultsLiquidity($addresses: [String!], $chainIds: [Int!]) {
|
|
22
|
-
|
|
23
|
+
${listField}(first: ${MORPHO_API_PAGE_SIZE}, where: { address_in: $addresses, chainId_in: $chainIds }) {
|
|
23
24
|
items {
|
|
24
25
|
address
|
|
25
|
-
liquidity {
|
|
26
|
-
underlying
|
|
27
|
-
}
|
|
26
|
+
liquidity${listField === 'vaults' ? ' {\n underlying\n }' : ''}
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
29
|
}`;
|
|
30
|
+
const liquidityQueries = {
|
|
31
|
+
[MorphoVaultVersion.V1]: { field: 'vaults', query: buildLiquidityQuery('vaults') },
|
|
32
|
+
[MorphoVaultVersion.V2]: { field: 'vaultV2s', query: buildLiquidityQuery('vaultV2s') },
|
|
33
|
+
};
|
|
31
34
|
/**
|
|
32
|
-
* Fetches liquidity for all given vaults
|
|
35
|
+
* Fetches liquidity for all given vaults, one API request per vault version (chunked if over the page cap),
|
|
33
36
|
* returned as a map keyed by lowercased vault address. A vault missing from the API response is
|
|
34
37
|
* absent from the map.
|
|
35
38
|
*/
|
|
36
39
|
export const fetchMorphoVaultsLiquidity = (network, vaults) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const requests = [];
|
|
41
|
+
[MorphoVaultVersion.V1, MorphoVaultVersion.V2].forEach((version) => {
|
|
42
|
+
const versionVaults = vaults.filter((vault) => vault.version === version);
|
|
43
|
+
for (let i = 0; i < versionVaults.length; i += MORPHO_API_PAGE_SIZE)
|
|
44
|
+
requests.push({ version, chunk: versionVaults.slice(i, i + MORPHO_API_PAGE_SIZE) });
|
|
45
|
+
});
|
|
40
46
|
const liquidityByAddress = {};
|
|
41
|
-
yield Promise.all(
|
|
42
|
-
const
|
|
47
|
+
yield Promise.all(requests.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ version, chunk }) {
|
|
48
|
+
const { field, query } = liquidityQueries[version];
|
|
49
|
+
const data = yield graphqlRequest(MORPHO_API_URL, query, {
|
|
43
50
|
addresses: chunk.map((vault) => vault.address),
|
|
44
51
|
chainIds: [network],
|
|
45
52
|
// the BigInt scalar serializes as a JSON number when it fits in Number.MAX_SAFE_INTEGER, a string otherwise
|
|
46
53
|
});
|
|
47
|
-
(data.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
(data[field].items || []).forEach((item) => {
|
|
55
|
+
// V1 exposes liquidity as { underlying }, V2 as a plain BigInt scalar
|
|
56
|
+
const underlying = (item === null || item === void 0 ? void 0 : item.liquidity) !== null && typeof (item === null || item === void 0 ? void 0 : item.liquidity) === 'object' ? item.liquidity.underlying : item === null || item === void 0 ? void 0 : item.liquidity;
|
|
57
|
+
if (underlying !== undefined && underlying !== null) {
|
|
58
|
+
liquidityByAddress[item.address.toLowerCase()] = String(underlying);
|
|
51
59
|
}
|
|
52
60
|
});
|
|
53
61
|
})));
|
|
@@ -60,7 +68,19 @@ const getBatchedViemProvider = (provider, network) => getViemProvider(provider,
|
|
|
60
68
|
},
|
|
61
69
|
},
|
|
62
70
|
});
|
|
63
|
-
|
|
71
|
+
// Vault V2 is ERC-4626 but has no decimals offset, so shares are converted with convertToAssets
|
|
72
|
+
const getMorphoVaultV2ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
+
const vaultContract = getErc4626ContractViem(provider, morphoVault.address);
|
|
74
|
+
const [totalAssets, suppliedAssets] = yield Promise.all([
|
|
75
|
+
vaultContract.read.totalAssets(),
|
|
76
|
+
Promise.all(accounts.map((account) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
const share = yield vaultContract.read.balanceOf([account]);
|
|
78
|
+
return share === BigInt(0) ? BigInt(0) : vaultContract.read.convertToAssets([share]);
|
|
79
|
+
}))),
|
|
80
|
+
]);
|
|
81
|
+
return { totalAssets, suppliedAssets };
|
|
82
|
+
});
|
|
83
|
+
const getMorphoVaultV1ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
84
|
const morphoVaultContract = getMorphoVaultContractViem(provider, morphoVault.address);
|
|
65
85
|
const shares = {};
|
|
66
86
|
const [totalAssets, totalSupply, decimals, decimalsOffset] = yield Promise.all([
|
|
@@ -77,11 +97,29 @@ const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(v
|
|
|
77
97
|
totalAssets, totalSupply, decimals, decimalsOffset, shares,
|
|
78
98
|
};
|
|
79
99
|
});
|
|
100
|
+
const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
+
return (morphoVault.version === MorphoVaultVersion.V2
|
|
102
|
+
? { v2: yield getMorphoVaultV2ChainData(provider, morphoVault, accounts) }
|
|
103
|
+
: { v1: yield getMorphoVaultV1ChainData(provider, morphoVault, accounts) });
|
|
104
|
+
});
|
|
80
105
|
const formatMorphoVaultData = (morphoVault, chainData, liquidityUnderlying, accounts) => {
|
|
81
|
-
const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData;
|
|
82
|
-
const poolSize = assetAmountInEth(totalAssets.toString(), morphoVault.asset);
|
|
83
106
|
const liquidity = assetAmountInEth(liquidityUnderlying, morphoVault.asset);
|
|
84
107
|
const supplied = {};
|
|
108
|
+
if (chainData.v2) {
|
|
109
|
+
const { totalAssets, suppliedAssets } = chainData.v2;
|
|
110
|
+
accounts.forEach((account, i) => {
|
|
111
|
+
supplied[account.toLowerCase()] = assetAmountInEth(suppliedAssets[i].toString(), morphoVault.asset);
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
poolSize: assetAmountInEth(totalAssets.toString(), morphoVault.asset),
|
|
115
|
+
supplied,
|
|
116
|
+
liquidity,
|
|
117
|
+
asset: morphoVault.asset,
|
|
118
|
+
optionType: morphoVault.type,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData.v1;
|
|
122
|
+
const poolSize = assetAmountInEth(totalAssets.toString(), morphoVault.asset);
|
|
85
123
|
accounts.forEach((account) => {
|
|
86
124
|
const share = shares[account] || BigInt(0);
|
|
87
125
|
supplied[account.toLowerCase()] = new Dec(new Dec(share.toString()).mul(new Dec(totalAssets.toString()).add(1)).div(new Dec(totalSupply.toString()).add(Math.pow(10, decimalsOffset))).div(Math.pow(10, 18))
|
|
@@ -17,5 +17,7 @@ export declare const MORPHO_VAULT_STEAKHOUSE_PYUSD: MorphoVault;
|
|
|
17
17
|
export declare const MORPHO_VAULT_SMOKEHOUSE_USDT: MorphoVault;
|
|
18
18
|
export declare const MORPHO_VAULT_SMOKEHOUSE_USDC: MorphoVault;
|
|
19
19
|
export declare const MORPHO_VAULT_SMOKEHOUSE_DAI: MorphoVault;
|
|
20
|
+
export declare const MORPHO_VAULT_GAUNTLET_USDG_PREMIUM: MorphoVault;
|
|
21
|
+
export declare const MORPHO_VAULT_STEAKHOUSE_USDG_PRO: MorphoVault;
|
|
20
22
|
export declare const MORPHO_VAULTS: Record<MorphoVaultType, MorphoVault>;
|
|
21
23
|
export declare const getMorphoVault: (type: MorphoVaultType) => MorphoVault;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { MorphoVaultType } from '../../types';
|
|
1
|
+
import { MorphoVaultType, MorphoVaultVersion, NetworkNumber, } from '../../types';
|
|
2
2
|
export const MORPHO_VAULT_FLAGSHIP_ETH = {
|
|
3
3
|
type: MorphoVaultType.MorphoVaultFlagshipEth,
|
|
4
4
|
name: 'Flagship ETH',
|
|
5
5
|
address: '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D',
|
|
6
6
|
asset: 'WETH',
|
|
7
|
+
network: NetworkNumber.Eth,
|
|
8
|
+
version: MorphoVaultVersion.V1,
|
|
7
9
|
deploymentBlock: 18927491,
|
|
8
10
|
isLegacy: true,
|
|
9
11
|
};
|
|
@@ -12,6 +14,8 @@ export const MORPHO_VAULT_GAUNTLET_USDC_CORE = {
|
|
|
12
14
|
name: 'Gauntlet USDC Core',
|
|
13
15
|
address: '0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458',
|
|
14
16
|
asset: 'USDC',
|
|
17
|
+
network: NetworkNumber.Eth,
|
|
18
|
+
version: MorphoVaultVersion.V1,
|
|
15
19
|
deploymentBlock: 19777569,
|
|
16
20
|
isLegacy: true,
|
|
17
21
|
};
|
|
@@ -20,6 +24,8 @@ export const MORPHO_VAULT_GAUNTLET_USDC_PRIME = {
|
|
|
20
24
|
name: 'Gauntlet USDC Prime',
|
|
21
25
|
address: '0xdd0f28e19C1780eb6396170735D45153D261490d',
|
|
22
26
|
asset: 'USDC',
|
|
27
|
+
network: NetworkNumber.Eth,
|
|
28
|
+
version: MorphoVaultVersion.V1,
|
|
23
29
|
deploymentBlock: 19777569,
|
|
24
30
|
isLegacy: true,
|
|
25
31
|
};
|
|
@@ -28,6 +34,8 @@ export const MORPHO_VAULT_RE7_WETH = {
|
|
|
28
34
|
name: 'RE7 WETH',
|
|
29
35
|
address: '0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0',
|
|
30
36
|
asset: 'WETH',
|
|
37
|
+
network: NetworkNumber.Eth,
|
|
38
|
+
version: MorphoVaultVersion.V1,
|
|
31
39
|
deploymentBlock: 19121118,
|
|
32
40
|
isLegacy: true,
|
|
33
41
|
};
|
|
@@ -36,6 +44,8 @@ export const MORPHO_VAULT_GAUNTLET_WETH_CORE = {
|
|
|
36
44
|
name: 'Gauntlet WETH Core',
|
|
37
45
|
address: '0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658',
|
|
38
46
|
asset: 'WETH',
|
|
47
|
+
network: NetworkNumber.Eth,
|
|
48
|
+
version: MorphoVaultVersion.V1,
|
|
39
49
|
deploymentBlock: 19541126,
|
|
40
50
|
isLegacy: true,
|
|
41
51
|
};
|
|
@@ -44,6 +54,8 @@ export const MORPHO_VAULT_GAUNTLET_WETH_PRIME = {
|
|
|
44
54
|
name: 'Gauntlet WETH Prime',
|
|
45
55
|
address: '0x2371e134e3455e0593363cBF89d3b6cf53740618',
|
|
46
56
|
asset: 'WETH',
|
|
57
|
+
network: NetworkNumber.Eth,
|
|
58
|
+
version: MorphoVaultVersion.V1,
|
|
47
59
|
deploymentBlock: 19372149,
|
|
48
60
|
isLegacy: true,
|
|
49
61
|
};
|
|
@@ -52,6 +64,8 @@ export const MORPHO_VAULT_BOOSTED_USDC = {
|
|
|
52
64
|
name: 'Boosted USDC',
|
|
53
65
|
address: '0xd63070114470f685b75B74D60EEc7c1113d33a3D',
|
|
54
66
|
asset: 'USDC',
|
|
67
|
+
network: NetworkNumber.Eth,
|
|
68
|
+
version: MorphoVaultVersion.V1,
|
|
55
69
|
deploymentBlock: 20377233,
|
|
56
70
|
isLegacy: true,
|
|
57
71
|
};
|
|
@@ -60,6 +74,8 @@ export const MORPHO_VAULT_FLAGSHIP_USDT = {
|
|
|
60
74
|
name: 'Flagship USDT',
|
|
61
75
|
address: '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1',
|
|
62
76
|
asset: 'USDT',
|
|
77
|
+
network: NetworkNumber.Eth,
|
|
78
|
+
version: MorphoVaultVersion.V1,
|
|
63
79
|
deploymentBlock: 19127039,
|
|
64
80
|
isLegacy: true,
|
|
65
81
|
};
|
|
@@ -68,6 +84,8 @@ export const MORPHO_VAULT_GAUNTLET_USDA_CORE = {
|
|
|
68
84
|
name: 'Gauntlet USDA Core',
|
|
69
85
|
address: '0x125D41A6e5dbf455cD9Df8F80BCC6fd172D52Cc6',
|
|
70
86
|
asset: 'USDA',
|
|
87
|
+
network: NetworkNumber.Eth,
|
|
88
|
+
version: MorphoVaultVersion.V1,
|
|
71
89
|
deploymentBlock: 19633608,
|
|
72
90
|
isLegacy: true,
|
|
73
91
|
};
|
|
@@ -76,6 +94,8 @@ export const MORPHO_VAULT_GAUNTLET_USDT_PRIME = {
|
|
|
76
94
|
name: 'Gauntlet USDT Prime',
|
|
77
95
|
address: '0x8CB3649114051cA5119141a34C200D65dc0Faa73',
|
|
78
96
|
asset: 'USDT',
|
|
97
|
+
network: NetworkNumber.Eth,
|
|
98
|
+
version: MorphoVaultVersion.V1,
|
|
79
99
|
deploymentBlock: 19486541,
|
|
80
100
|
isLegacy: true,
|
|
81
101
|
};
|
|
@@ -84,6 +104,8 @@ export const MORPHO_VAULT_GAUNTLET_RESOLV_USDC = {
|
|
|
84
104
|
name: 'Gauntlet Resolv USDC',
|
|
85
105
|
address: '0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb',
|
|
86
106
|
asset: 'USDC',
|
|
107
|
+
network: NetworkNumber.Eth,
|
|
108
|
+
version: MorphoVaultVersion.V1,
|
|
87
109
|
deploymentBlock: 21487882,
|
|
88
110
|
isLegacy: true,
|
|
89
111
|
};
|
|
@@ -93,6 +115,8 @@ export const MORPHO_VAULT_STEAKHOUSE_USDT = {
|
|
|
93
115
|
name: 'Steakhouse USDT',
|
|
94
116
|
address: '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa',
|
|
95
117
|
asset: 'USDT',
|
|
118
|
+
network: NetworkNumber.Eth,
|
|
119
|
+
version: MorphoVaultVersion.V1,
|
|
96
120
|
deploymentBlock: 19043398,
|
|
97
121
|
isLegacy: false,
|
|
98
122
|
};
|
|
@@ -101,6 +125,8 @@ export const MORPHO_VAULT_STEAKHOUSE_USDC = {
|
|
|
101
125
|
name: 'Steakhouse USDC',
|
|
102
126
|
address: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB',
|
|
103
127
|
asset: 'USDC',
|
|
128
|
+
network: NetworkNumber.Eth,
|
|
129
|
+
version: MorphoVaultVersion.V1,
|
|
104
130
|
deploymentBlock: 18928285,
|
|
105
131
|
isLegacy: false,
|
|
106
132
|
};
|
|
@@ -109,6 +135,8 @@ export const MORPHO_VAULT_STEAKHOUSE_ETH = {
|
|
|
109
135
|
name: 'Steakhouse WETH',
|
|
110
136
|
address: '0xBEEf050ecd6a16c4e7bfFbB52Ebba7846C4b8cD4',
|
|
111
137
|
asset: 'WETH',
|
|
138
|
+
network: NetworkNumber.Eth,
|
|
139
|
+
version: MorphoVaultVersion.V1,
|
|
112
140
|
deploymentBlock: 19380443,
|
|
113
141
|
isLegacy: false,
|
|
114
142
|
};
|
|
@@ -117,6 +145,8 @@ export const MORPHO_VAULT_STEAKHOUSE_PYUSD = {
|
|
|
117
145
|
name: 'Steakhouse PYUSD',
|
|
118
146
|
address: '0xbEEF02e5E13584ab96848af90261f0C8Ee04722a',
|
|
119
147
|
asset: 'PYUSD',
|
|
148
|
+
network: NetworkNumber.Eth,
|
|
149
|
+
version: MorphoVaultVersion.V1,
|
|
120
150
|
deploymentBlock: 19043398,
|
|
121
151
|
isLegacy: false,
|
|
122
152
|
};
|
|
@@ -126,6 +156,8 @@ export const MORPHO_VAULT_SMOKEHOUSE_USDT = {
|
|
|
126
156
|
name: 'Smokehouse USDT',
|
|
127
157
|
address: '0xA0804346780b4c2e3bE118ac957D1DB82F9d7484',
|
|
128
158
|
asset: 'USDT',
|
|
159
|
+
network: NetworkNumber.Eth,
|
|
160
|
+
version: MorphoVaultVersion.V1,
|
|
129
161
|
deploymentBlock: 21522238,
|
|
130
162
|
isLegacy: false,
|
|
131
163
|
};
|
|
@@ -134,6 +166,8 @@ export const MORPHO_VAULT_SMOKEHOUSE_USDC = {
|
|
|
134
166
|
name: 'Smokehouse USDC',
|
|
135
167
|
address: '0xBEeFFF209270748ddd194831b3fa287a5386f5bC',
|
|
136
168
|
asset: 'USDC',
|
|
169
|
+
network: NetworkNumber.Eth,
|
|
170
|
+
version: MorphoVaultVersion.V1,
|
|
137
171
|
deploymentBlock: 21337719,
|
|
138
172
|
isLegacy: false,
|
|
139
173
|
};
|
|
@@ -142,9 +176,32 @@ export const MORPHO_VAULT_SMOKEHOUSE_DAI = {
|
|
|
142
176
|
name: 'Smokehouse DAI',
|
|
143
177
|
address: '0xbeeFfF68CC520D68f82641EFF84330C631E2490E',
|
|
144
178
|
asset: 'DAI',
|
|
179
|
+
network: NetworkNumber.Eth,
|
|
180
|
+
version: MorphoVaultVersion.V1,
|
|
145
181
|
deploymentBlock: 21343808,
|
|
146
182
|
isLegacy: false,
|
|
147
183
|
};
|
|
184
|
+
// Vault V2
|
|
185
|
+
export const MORPHO_VAULT_GAUNTLET_USDG_PREMIUM = {
|
|
186
|
+
type: MorphoVaultType.MorphoVaultGauntletUSDGPremium,
|
|
187
|
+
name: 'Gauntlet USDG Premium',
|
|
188
|
+
address: '0x390c1bb01F3F627144a40617e287d4cE3D5aBCfa',
|
|
189
|
+
asset: 'USDG',
|
|
190
|
+
network: NetworkNumber.Arb,
|
|
191
|
+
version: MorphoVaultVersion.V2,
|
|
192
|
+
deploymentBlock: 510799903,
|
|
193
|
+
isLegacy: false,
|
|
194
|
+
};
|
|
195
|
+
export const MORPHO_VAULT_STEAKHOUSE_USDG_PRO = {
|
|
196
|
+
type: MorphoVaultType.MorphoVaultSteakhouseUSDGPro,
|
|
197
|
+
name: 'Steakhouse USDG Pro',
|
|
198
|
+
address: '0xbeeFf72B77e7584a450E887125F25E8D8819016a',
|
|
199
|
+
asset: 'USDG',
|
|
200
|
+
network: NetworkNumber.Arb,
|
|
201
|
+
version: MorphoVaultVersion.V2,
|
|
202
|
+
deploymentBlock: 512247107,
|
|
203
|
+
isLegacy: false,
|
|
204
|
+
};
|
|
148
205
|
export const MORPHO_VAULTS = {
|
|
149
206
|
[MorphoVaultType.MorphoVaultFlagshipEth]: MORPHO_VAULT_FLAGSHIP_ETH,
|
|
150
207
|
[MorphoVaultType.MorphoVaultGauntletUSDCCore]: MORPHO_VAULT_GAUNTLET_USDC_CORE,
|
|
@@ -166,5 +223,8 @@ export const MORPHO_VAULTS = {
|
|
|
166
223
|
[MorphoVaultType.MorphoVaultSmokehouseUSDT]: MORPHO_VAULT_SMOKEHOUSE_USDT,
|
|
167
224
|
[MorphoVaultType.MorphoVaultSmokehouseUSDC]: MORPHO_VAULT_SMOKEHOUSE_USDC,
|
|
168
225
|
[MorphoVaultType.MorphoVaultSmokehouseDAI]: MORPHO_VAULT_SMOKEHOUSE_DAI,
|
|
226
|
+
// Vault V2
|
|
227
|
+
[MorphoVaultType.MorphoVaultGauntletUSDGPremium]: MORPHO_VAULT_GAUNTLET_USDG_PREMIUM,
|
|
228
|
+
[MorphoVaultType.MorphoVaultSteakhouseUSDGPro]: MORPHO_VAULT_STEAKHOUSE_USDG_PRO,
|
|
169
229
|
};
|
|
170
230
|
export const getMorphoVault = (type) => MORPHO_VAULTS[type];
|
package/esm/types/aave.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IncentiveData, LeverageType, MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber } from './common';
|
|
2
2
|
export declare enum AaveVersions {
|
|
3
3
|
AaveV1 = "v1",
|
|
4
4
|
AaveV2 = "v2default",
|
|
@@ -84,8 +84,6 @@ export interface AaveV3AssetData extends AaveAssetData {
|
|
|
84
84
|
liquidationBonus: string;
|
|
85
85
|
supplyIncentives: IncentiveData[];
|
|
86
86
|
borrowIncentives: IncentiveData[];
|
|
87
|
-
aTokenAddress?: EthAddress;
|
|
88
|
-
vTokenAddress?: EthAddress;
|
|
89
87
|
}
|
|
90
88
|
export type EModeCategoriesData = Record<number, EModeCategoryData>;
|
|
91
89
|
export type AaveAssetsData<T> = {
|
|
@@ -123,12 +121,7 @@ export type AaveUsedAssets<T> = {
|
|
|
123
121
|
};
|
|
124
122
|
export type AaveV2UsedAssets = AaveUsedAssets<AaveV2UsedAsset>;
|
|
125
123
|
export type AaveV3UsedAssets = AaveUsedAssets<AaveV3UsedAsset>;
|
|
126
|
-
|
|
127
|
-
* Fields aaveAnyGetAggregatedPositionData adds to every Aave V2/V3 position at runtime, on top of those declared
|
|
128
|
-
* below. Optional, so code that builds a position by hand keeps compiling.
|
|
129
|
-
*/
|
|
130
|
-
export type AavePositionAggregatedFields = Partial<Omit<AaveV3AggregatedPositionData, keyof MMPositionData | 'ratio' | 'collRatio' | 'safetyRatioWithLtvZeroFallback' | 'suppliedUsd' | 'borrowedUsd' | 'borrowLimitUsd' | 'suppliedCollateralUsd' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
131
|
-
export interface AavePositionData extends MMPositionData, AavePositionAggregatedFields {
|
|
124
|
+
export interface AavePositionData extends MMPositionData {
|
|
132
125
|
ratio: string;
|
|
133
126
|
minRatio: string;
|
|
134
127
|
collRatio: string;
|
|
@@ -145,12 +138,6 @@ export interface AavePositionData extends MMPositionData, AavePositionAggregated
|
|
|
145
138
|
}
|
|
146
139
|
export interface AaveV2PositionData extends AavePositionData {
|
|
147
140
|
usedAssets: AaveV2UsedAssets;
|
|
148
|
-
eModeCategory?: number;
|
|
149
|
-
isInIsolationMode?: boolean;
|
|
150
|
-
isInSiloedMode?: boolean;
|
|
151
|
-
eModeCategories?: {
|
|
152
|
-
[key: number]: EModeCategoryDataMapping;
|
|
153
|
-
};
|
|
154
141
|
}
|
|
155
142
|
export interface AaveV3PositionData extends AavePositionData {
|
|
156
143
|
usedAssets: AaveV3UsedAssets;
|
package/esm/types/compound.d.ts
CHANGED
|
@@ -52,7 +52,6 @@ export interface CompoundAssetData extends MMAssetData {
|
|
|
52
52
|
sortIndex?: number;
|
|
53
53
|
}
|
|
54
54
|
export interface CompoundV2AssetData extends CompoundAssetData {
|
|
55
|
-
exchangeRate?: string;
|
|
56
55
|
}
|
|
57
56
|
export interface CompoundV3AssetData extends CompoundAssetData {
|
|
58
57
|
borrowCollateralFactor: string;
|
|
@@ -64,17 +63,6 @@ export interface CompoundV3AssetData extends CompoundAssetData {
|
|
|
64
63
|
supplyCap: string;
|
|
65
64
|
priceInBaseAsset: string;
|
|
66
65
|
canBeWithdrawn: boolean;
|
|
67
|
-
tokenAddr?: EthAddress;
|
|
68
|
-
isBase?: boolean;
|
|
69
|
-
baseBorrowMin?: string;
|
|
70
|
-
baseTrackingBorrowRewardsSpeed?: string;
|
|
71
|
-
baseTrackingSupplyRewardsSpeed?: string;
|
|
72
|
-
borrowIndex?: string;
|
|
73
|
-
supplyIndex?: string;
|
|
74
|
-
trackingBorrowIndex?: string;
|
|
75
|
-
trackingSupplyIndex?: string;
|
|
76
|
-
rewardSupplySpeed?: string;
|
|
77
|
-
rewardBorrowSpeed?: string;
|
|
78
66
|
}
|
|
79
67
|
export interface CompoundAssetsData<T> {
|
|
80
68
|
[token: string]: T;
|
|
@@ -135,21 +123,9 @@ export interface CompoundPositionData extends MMPositionData {
|
|
|
135
123
|
isSubscribedToAutomation?: boolean;
|
|
136
124
|
automationResubscribeRequired?: boolean;
|
|
137
125
|
}
|
|
138
|
-
|
|
139
|
-
* Fields getCompoundV2AggregatedData adds to every Compound V2 position at runtime — a subset of
|
|
140
|
-
* CompoundAggregatedPositionData. Optional, so code that builds a position by hand keeps compiling.
|
|
141
|
-
*/
|
|
142
|
-
export type CompoundV2PositionAggregatedFields = Partial<Pick<CompoundAggregatedPositionData, 'suppliedCollateralUsd' | 'liquidationLimitUsd' | 'leftToBorrowUsd' | 'collRatio' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice'>>;
|
|
143
|
-
/**
|
|
144
|
-
* Fields getCompoundV3AggregatedData adds to every Compound V3 position at runtime, on top of those declared in
|
|
145
|
-
* CompoundPositionData. Optional, so code that builds a position by hand keeps compiling.
|
|
146
|
-
*/
|
|
147
|
-
export type CompoundV3PositionAggregatedFields = Partial<Omit<CompoundAggregatedPositionData, keyof MMPositionData | 'ratio' | 'minRatio' | 'suppliedUsd' | 'borrowedUsd' | 'borrowLimitUsd' | 'incentiveUsd' | 'totalInterestUsd'>>;
|
|
148
|
-
export interface CompoundV2PositionData extends CompoundPositionData, CompoundV2PositionAggregatedFields {
|
|
126
|
+
export interface CompoundV2PositionData extends CompoundPositionData {
|
|
149
127
|
usedAssets: CompoundV2UsedAssets;
|
|
150
|
-
borrowStableSupplyUnstable?: boolean;
|
|
151
128
|
}
|
|
152
|
-
export interface CompoundV3PositionData extends CompoundPositionData
|
|
129
|
+
export interface CompoundV3PositionData extends CompoundPositionData {
|
|
153
130
|
usedAssets: CompoundV3UsedAssets;
|
|
154
|
-
isAllowed?: boolean;
|
|
155
131
|
}
|
package/esm/types/curveUsd.d.ts
CHANGED
|
@@ -60,7 +60,6 @@ export interface CrvUSDGlobalMarketData {
|
|
|
60
60
|
leftToBorrow: string;
|
|
61
61
|
bands: BandData[];
|
|
62
62
|
loanDiscount: string;
|
|
63
|
-
A?: bigint;
|
|
64
63
|
}
|
|
65
64
|
export interface CrvUSDAggregatedPositionData {
|
|
66
65
|
ratio: string;
|
|
@@ -92,8 +91,7 @@ export interface CrvUSDUsedAsset {
|
|
|
92
91
|
export interface CrvUSDUsedAssets {
|
|
93
92
|
[key: string]: CrvUSDUsedAsset;
|
|
94
93
|
}
|
|
95
|
-
export
|
|
96
|
-
export interface CrvUSDUserData extends CrvUSDPositionAggregatedFields {
|
|
94
|
+
export interface CrvUSDUserData {
|
|
97
95
|
debtAmount: string;
|
|
98
96
|
health: string;
|
|
99
97
|
healthPercent: string;
|
|
@@ -115,10 +113,4 @@ export interface CrvUSDUserData extends CrvUSDPositionAggregatedFields {
|
|
|
115
113
|
collateralPrice: string;
|
|
116
114
|
collRatio: string;
|
|
117
115
|
exposure: string;
|
|
118
|
-
marketCollateralAmount?: bigint;
|
|
119
|
-
curveUsdCollateralAmount?: bigint;
|
|
120
|
-
N?: bigint;
|
|
121
|
-
bandRange?: readonly [bigint, bigint];
|
|
122
|
-
usersBands?: readonly [readonly bigint[], readonly bigint[]];
|
|
123
|
-
isInSoftLiquidation?: boolean;
|
|
124
116
|
}
|
package/esm/types/llamaLend.d.ts
CHANGED
|
@@ -138,8 +138,7 @@ export interface LlamaLendUsedAsset {
|
|
|
138
138
|
export interface LlamaLendUsedAssets {
|
|
139
139
|
[key: string]: LlamaLendUsedAsset;
|
|
140
140
|
}
|
|
141
|
-
export
|
|
142
|
-
export interface LlamaLendUserData extends LlamaLendPositionAggregatedFields {
|
|
141
|
+
export interface LlamaLendUserData {
|
|
143
142
|
debtAmount: string;
|
|
144
143
|
health: string;
|
|
145
144
|
healthPercent: string;
|
|
@@ -158,14 +157,4 @@ export interface LlamaLendUserData extends LlamaLendPositionAggregatedFields {
|
|
|
158
157
|
loanExists: boolean;
|
|
159
158
|
borrowRate?: string;
|
|
160
159
|
exposure: string;
|
|
161
|
-
collateralPrice?: bigint;
|
|
162
|
-
marketCollateralAmount?: bigint;
|
|
163
|
-
debtTokenCollateralAmount?: bigint;
|
|
164
|
-
N?: bigint;
|
|
165
|
-
bandRange?: readonly [bigint, bigint];
|
|
166
|
-
usersBands?: readonly [readonly bigint[], readonly bigint[]];
|
|
167
|
-
collRatio?: bigint;
|
|
168
|
-
isInSoftLiquidation?: boolean;
|
|
169
|
-
debtTokenSuppliedShares?: bigint;
|
|
170
|
-
debtTokenSuppliedAssets?: bigint;
|
|
171
160
|
}
|
package/esm/types/portfolio.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AaveV4AccountData,
|
|
1
|
+
import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
|
|
2
|
+
import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
|
|
3
3
|
import { EthAddress } from './common';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
|
|
5
|
+
import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
|
|
6
6
|
import { FluidVaultData } from './fluid';
|
|
7
7
|
import { LiquityTroveInfo } from './liquity';
|
|
8
|
-
import {
|
|
9
|
-
import { LlamaLendGlobalMarketData, LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
8
|
+
import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
10
9
|
import { CdpData } from './maker';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
10
|
+
import { MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
|
|
11
|
+
import { MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
|
|
12
|
+
import { SparkPositionData, SparkVersions } from './spark';
|
|
14
13
|
export interface PortfolioProtocolData<T> {
|
|
15
14
|
error: string;
|
|
16
15
|
data: T | null;
|
|
@@ -60,17 +59,3 @@ export interface PortfolioPositionsDataForAddress {
|
|
|
60
59
|
export interface PortfolioPositionsData {
|
|
61
60
|
[key: EthAddress]: PortfolioPositionsDataForAddress;
|
|
62
61
|
}
|
|
63
|
-
/** The `markets` getPortfolioData returns: every market it read, by protocol, keyed by market or spoke. */
|
|
64
|
-
export interface PortfolioMarketsData {
|
|
65
|
-
morphoMarketsData: Record<string, MorphoBlueMarketInfo>;
|
|
66
|
-
morphoMidnightMarketsData: Record<string, MorphoMidnightMarketInfo>;
|
|
67
|
-
compoundV3MarketsData: Record<string, CompoundV3MarketsData>;
|
|
68
|
-
sparkMarketsData: Record<string, SparkMarketsData>;
|
|
69
|
-
aaveV3MarketsData: Record<string, AaveV3MarketData>;
|
|
70
|
-
aaveV2MarketsData: Record<string, AaveV2MarketData>;
|
|
71
|
-
compoundV2MarketsData: Record<string, CompoundV2MarketsData>;
|
|
72
|
-
crvUsdMarketsData: Record<string, CrvUSDGlobalMarketData>;
|
|
73
|
-
llamaLendMarketsData: Record<string, LlamaLendGlobalMarketData>;
|
|
74
|
-
liquityV2MarketsData: Record<string, LiquityV2MarketData>;
|
|
75
|
-
aaveV4SpokesData: Record<string, AaveV4SpokeData>;
|
|
76
|
-
}
|