@defisaver/positions-sdk 2.1.161-portfolio-api-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.
Files changed (40) hide show
  1. package/cjs/portfolio/index.js +3 -5
  2. package/cjs/savings/index.js +5 -2
  3. package/cjs/savings/morphoVaults/index.d.ts +1 -1
  4. package/cjs/savings/morphoVaults/index.js +56 -18
  5. package/cjs/savings/morphoVaults/options.d.ts +2 -0
  6. package/cjs/savings/morphoVaults/options.js +61 -1
  7. package/cjs/types/aave.d.ts +2 -15
  8. package/cjs/types/compound.d.ts +2 -26
  9. package/cjs/types/curveUsd.d.ts +1 -9
  10. package/cjs/types/llamaLend.d.ts +1 -12
  11. package/cjs/types/morphoBlue.d.ts +0 -2
  12. package/cjs/types/savings/morphoVaults.d.ts +10 -2
  13. package/cjs/types/savings/morphoVaults.js +9 -1
  14. package/cjs/types/spark.d.ts +1 -21
  15. package/esm/portfolio/index.js +3 -5
  16. package/esm/savings/index.js +5 -2
  17. package/esm/savings/morphoVaults/index.d.ts +1 -1
  18. package/esm/savings/morphoVaults/index.js +57 -19
  19. package/esm/savings/morphoVaults/options.d.ts +2 -0
  20. package/esm/savings/morphoVaults/options.js +61 -1
  21. package/esm/types/aave.d.ts +2 -15
  22. package/esm/types/compound.d.ts +2 -26
  23. package/esm/types/curveUsd.d.ts +1 -9
  24. package/esm/types/llamaLend.d.ts +1 -12
  25. package/esm/types/morphoBlue.d.ts +0 -2
  26. package/esm/types/savings/morphoVaults.d.ts +10 -2
  27. package/esm/types/savings/morphoVaults.js +8 -0
  28. package/esm/types/spark.d.ts +1 -21
  29. package/package.json +1 -1
  30. package/src/portfolio/index.ts +2 -4
  31. package/src/savings/index.ts +5 -2
  32. package/src/savings/morphoVaults/index.ts +73 -21
  33. package/src/savings/morphoVaults/options.ts +67 -1
  34. package/src/types/aave.ts +1 -18
  35. package/src/types/compound.ts +2 -38
  36. package/src/types/curveUsd.ts +1 -17
  37. package/src/types/llamaLend.ts +1 -19
  38. package/src/types/morphoBlue.ts +0 -3
  39. package/src/types/savings/morphoVaults.ts +11 -1
  40. package/src/types/spark.ts +1 -25
@@ -521,11 +521,9 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
521
521
  positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
522
522
  }
523
523
  }))).flat(),
524
- // flatMap, not map: each CDP's fetch has to be one of the awaited promises, or getPortfolioData can return
525
- // before a vault's data lands and the vault is missing from the result.
526
- ...addresses.flatMap((address) => {
524
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
527
525
  var _a;
528
- return ((_a = makerCdps[address.toLowerCase()]) !== null && _a !== void 0 ? _a : []).map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
526
+ return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
529
527
  try {
530
528
  const cdpData = yield (0, maker_1._getMakerCdpData)(client, network, cdpInfo);
531
529
  if (cdpData) {
@@ -537,7 +535,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
537
535
  positions[address.toLowerCase()].maker[cdpInfo.id] = { error: `Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}`, data: null };
538
536
  }
539
537
  }));
540
- }),
538
+ })).flat(),
541
539
  ...aaveV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
542
540
  try {
543
541
  const accData = yield (0, aaveV2_1._getAaveV2AccountData)(client, network, address, aaveV2MarketsData[market.value].assetsData, market);
@@ -60,7 +60,8 @@ exports.summerVaults = summerVaults;
60
60
  const yearnV3Vaults = __importStar(require("./yearnV3Vaults"));
61
61
  exports.yearnV3Vaults = yearnV3Vaults;
62
62
  const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
63
- const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS);
63
+ const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS)
64
+ .filter((key) => morphoVaults.morphoVaultsOptions.getMorphoVault(key).network === network);
64
65
  const yearnVaultsList = Object.keys(yearnVaults.yearnVaultsOptions.YEARN_VAULTS);
65
66
  const sparkSavingsVaultsList = Object.keys(sparkSavingsVaults.sparkSavingsVaultsOptions.SPARK_SAVINGS_VAULTS);
66
67
  const yearnV3VaultsList = Object.keys(yearnV3Vaults.yearnV3VaultsOptions.YEARN_V3_VAULTS);
@@ -68,7 +69,7 @@ const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0
68
69
  .filter((key) => summerVaults.summerVaultsOptions.getSummerVault(key).network === network);
69
70
  const savingsData = {};
70
71
  yield Promise.all([
71
- ...(network === common_1.NetworkNumber.Eth ? [
72
+ ...(morphoVaultsList.length ? [
72
73
  (() => __awaiter(void 0, void 0, void 0, function* () {
73
74
  try {
74
75
  const vaults = morphoVaultsList.map((vaultKey) => morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey));
@@ -79,6 +80,8 @@ const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0
79
80
  console.error('[getSavingsData] Error fetching morpho vaults:', err);
80
81
  }
81
82
  }))(),
83
+ ] : []),
84
+ ...(network === common_1.NetworkNumber.Eth ? [
82
85
  ...yearnVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
83
86
  try {
84
87
  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 in a single API request (chunked if over the page cap),
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
  */
@@ -53,42 +53,50 @@ const graphql_request_1 = require("graphql-request");
53
53
  const tokens_1 = require("@defisaver/tokens");
54
54
  const morphoVaultsOptions = __importStar(require("./options"));
55
55
  exports.morphoVaultsOptions = morphoVaultsOptions;
56
+ const types_1 = require("../../types");
56
57
  const viem_1 = require("../../services/viem");
57
58
  const contracts_1 = require("../../contracts");
58
59
  const constants_1 = require("../../constants");
59
60
  // Morpho API caps list page size at 100 items
60
61
  const MORPHO_API_PAGE_SIZE = 100;
61
- const vaultsLiquidityQuery = `
62
+ const buildLiquidityQuery = (listField) => `
62
63
  query VaultsLiquidity($addresses: [String!], $chainIds: [Int!]) {
63
- vaults(first: ${MORPHO_API_PAGE_SIZE}, where: { address_in: $addresses, chainId_in: $chainIds }) {
64
+ ${listField}(first: ${MORPHO_API_PAGE_SIZE}, where: { address_in: $addresses, chainId_in: $chainIds }) {
64
65
  items {
65
66
  address
66
- liquidity {
67
- underlying
68
- }
67
+ liquidity${listField === 'vaults' ? ' {\n underlying\n }' : ''}
69
68
  }
70
69
  }
71
70
  }`;
71
+ const liquidityQueries = {
72
+ [types_1.MorphoVaultVersion.V1]: { field: 'vaults', query: buildLiquidityQuery('vaults') },
73
+ [types_1.MorphoVaultVersion.V2]: { field: 'vaultV2s', query: buildLiquidityQuery('vaultV2s') },
74
+ };
72
75
  /**
73
- * Fetches liquidity for all given vaults in a single API request (chunked if over the page cap),
76
+ * Fetches liquidity for all given vaults, one API request per vault version (chunked if over the page cap),
74
77
  * returned as a map keyed by lowercased vault address. A vault missing from the API response is
75
78
  * absent from the map.
76
79
  */
77
80
  const fetchMorphoVaultsLiquidity = (network, vaults) => __awaiter(void 0, void 0, void 0, function* () {
78
- const chunks = [];
79
- for (let i = 0; i < vaults.length; i += MORPHO_API_PAGE_SIZE)
80
- chunks.push(vaults.slice(i, i + MORPHO_API_PAGE_SIZE));
81
+ const requests = [];
82
+ [types_1.MorphoVaultVersion.V1, types_1.MorphoVaultVersion.V2].forEach((version) => {
83
+ const versionVaults = vaults.filter((vault) => vault.version === version);
84
+ for (let i = 0; i < versionVaults.length; i += MORPHO_API_PAGE_SIZE)
85
+ requests.push({ version, chunk: versionVaults.slice(i, i + MORPHO_API_PAGE_SIZE) });
86
+ });
81
87
  const liquidityByAddress = {};
82
- yield Promise.all(chunks.map((chunk) => __awaiter(void 0, void 0, void 0, function* () {
83
- const data = yield (0, graphql_request_1.request)(constants_1.MORPHO_API_URL, vaultsLiquidityQuery, {
88
+ yield Promise.all(requests.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ version, chunk }) {
89
+ const { field, query } = liquidityQueries[version];
90
+ const data = yield (0, graphql_request_1.request)(constants_1.MORPHO_API_URL, query, {
84
91
  addresses: chunk.map((vault) => vault.address),
85
92
  chainIds: [network],
86
93
  // the BigInt scalar serializes as a JSON number when it fits in Number.MAX_SAFE_INTEGER, a string otherwise
87
94
  });
88
- (data.vaults.items || []).forEach((item) => {
89
- var _a, _b;
90
- if (((_a = item === null || item === void 0 ? void 0 : item.liquidity) === null || _a === void 0 ? void 0 : _a.underlying) !== undefined && ((_b = item.liquidity) === null || _b === void 0 ? void 0 : _b.underlying) !== null) {
91
- liquidityByAddress[item.address.toLowerCase()] = String(item.liquidity.underlying);
95
+ (data[field].items || []).forEach((item) => {
96
+ // V1 exposes liquidity as { underlying }, V2 as a plain BigInt scalar
97
+ 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;
98
+ if (underlying !== undefined && underlying !== null) {
99
+ liquidityByAddress[item.address.toLowerCase()] = String(underlying);
92
100
  }
93
101
  });
94
102
  })));
@@ -102,7 +110,19 @@ const getBatchedViemProvider = (provider, network) => (0, viem_1.getViemProvider
102
110
  },
103
111
  },
104
112
  });
105
- const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
113
+ // Vault V2 is ERC-4626 but has no decimals offset, so shares are converted with convertToAssets
114
+ const getMorphoVaultV2ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
115
+ const vaultContract = (0, contracts_1.getErc4626ContractViem)(provider, morphoVault.address);
116
+ const [totalAssets, suppliedAssets] = yield Promise.all([
117
+ vaultContract.read.totalAssets(),
118
+ Promise.all(accounts.map((account) => __awaiter(void 0, void 0, void 0, function* () {
119
+ const share = yield vaultContract.read.balanceOf([account]);
120
+ return share === BigInt(0) ? BigInt(0) : vaultContract.read.convertToAssets([share]);
121
+ }))),
122
+ ]);
123
+ return { totalAssets, suppliedAssets };
124
+ });
125
+ const getMorphoVaultV1ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
106
126
  const morphoVaultContract = (0, contracts_1.getMorphoVaultContractViem)(provider, morphoVault.address);
107
127
  const shares = {};
108
128
  const [totalAssets, totalSupply, decimals, decimalsOffset] = yield Promise.all([
@@ -119,11 +139,29 @@ const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(v
119
139
  totalAssets, totalSupply, decimals, decimalsOffset, shares,
120
140
  };
121
141
  });
142
+ const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
143
+ return (morphoVault.version === types_1.MorphoVaultVersion.V2
144
+ ? { v2: yield getMorphoVaultV2ChainData(provider, morphoVault, accounts) }
145
+ : { v1: yield getMorphoVaultV1ChainData(provider, morphoVault, accounts) });
146
+ });
122
147
  const formatMorphoVaultData = (morphoVault, chainData, liquidityUnderlying, accounts) => {
123
- const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData;
124
- const poolSize = (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset);
125
148
  const liquidity = (0, tokens_1.assetAmountInEth)(liquidityUnderlying, morphoVault.asset);
126
149
  const supplied = {};
150
+ if (chainData.v2) {
151
+ const { totalAssets, suppliedAssets } = chainData.v2;
152
+ accounts.forEach((account, i) => {
153
+ supplied[account.toLowerCase()] = (0, tokens_1.assetAmountInEth)(suppliedAssets[i].toString(), morphoVault.asset);
154
+ });
155
+ return {
156
+ poolSize: (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset),
157
+ supplied,
158
+ liquidity,
159
+ asset: morphoVault.asset,
160
+ optionType: morphoVault.type,
161
+ };
162
+ }
163
+ const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData.v1;
164
+ const poolSize = (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset);
127
165
  accounts.forEach((account) => {
128
166
  const share = shares[account] || BigInt(0);
129
167
  supplied[account.toLowerCase()] = new decimal_js_1.default(new decimal_js_1.default(share.toString()).mul(new decimal_js_1.default(totalAssets.toString()).add(1)).div(new decimal_js_1.default(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,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMorphoVault = exports.MORPHO_VAULTS = exports.MORPHO_VAULT_SMOKEHOUSE_DAI = exports.MORPHO_VAULT_SMOKEHOUSE_USDC = exports.MORPHO_VAULT_SMOKEHOUSE_USDT = exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = exports.MORPHO_VAULT_STEAKHOUSE_ETH = exports.MORPHO_VAULT_STEAKHOUSE_USDC = exports.MORPHO_VAULT_STEAKHOUSE_USDT = exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = exports.MORPHO_VAULT_FLAGSHIP_USDT = exports.MORPHO_VAULT_BOOSTED_USDC = exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = exports.MORPHO_VAULT_RE7_WETH = exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = exports.MORPHO_VAULT_FLAGSHIP_ETH = void 0;
3
+ exports.getMorphoVault = exports.MORPHO_VAULTS = exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO = exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM = exports.MORPHO_VAULT_SMOKEHOUSE_DAI = exports.MORPHO_VAULT_SMOKEHOUSE_USDC = exports.MORPHO_VAULT_SMOKEHOUSE_USDT = exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = exports.MORPHO_VAULT_STEAKHOUSE_ETH = exports.MORPHO_VAULT_STEAKHOUSE_USDC = exports.MORPHO_VAULT_STEAKHOUSE_USDT = exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = exports.MORPHO_VAULT_FLAGSHIP_USDT = exports.MORPHO_VAULT_BOOSTED_USDC = exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = exports.MORPHO_VAULT_RE7_WETH = exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = exports.MORPHO_VAULT_FLAGSHIP_ETH = void 0;
4
4
  const types_1 = require("../../types");
5
5
  exports.MORPHO_VAULT_FLAGSHIP_ETH = {
6
6
  type: types_1.MorphoVaultType.MorphoVaultFlagshipEth,
7
7
  name: 'Flagship ETH',
8
8
  address: '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D',
9
9
  asset: 'WETH',
10
+ network: types_1.NetworkNumber.Eth,
11
+ version: types_1.MorphoVaultVersion.V1,
10
12
  deploymentBlock: 18927491,
11
13
  isLegacy: true,
12
14
  };
@@ -15,6 +17,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = {
15
17
  name: 'Gauntlet USDC Core',
16
18
  address: '0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458',
17
19
  asset: 'USDC',
20
+ network: types_1.NetworkNumber.Eth,
21
+ version: types_1.MorphoVaultVersion.V1,
18
22
  deploymentBlock: 19777569,
19
23
  isLegacy: true,
20
24
  };
@@ -23,6 +27,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = {
23
27
  name: 'Gauntlet USDC Prime',
24
28
  address: '0xdd0f28e19C1780eb6396170735D45153D261490d',
25
29
  asset: 'USDC',
30
+ network: types_1.NetworkNumber.Eth,
31
+ version: types_1.MorphoVaultVersion.V1,
26
32
  deploymentBlock: 19777569,
27
33
  isLegacy: true,
28
34
  };
@@ -31,6 +37,8 @@ exports.MORPHO_VAULT_RE7_WETH = {
31
37
  name: 'RE7 WETH',
32
38
  address: '0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0',
33
39
  asset: 'WETH',
40
+ network: types_1.NetworkNumber.Eth,
41
+ version: types_1.MorphoVaultVersion.V1,
34
42
  deploymentBlock: 19121118,
35
43
  isLegacy: true,
36
44
  };
@@ -39,6 +47,8 @@ exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = {
39
47
  name: 'Gauntlet WETH Core',
40
48
  address: '0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658',
41
49
  asset: 'WETH',
50
+ network: types_1.NetworkNumber.Eth,
51
+ version: types_1.MorphoVaultVersion.V1,
42
52
  deploymentBlock: 19541126,
43
53
  isLegacy: true,
44
54
  };
@@ -47,6 +57,8 @@ exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = {
47
57
  name: 'Gauntlet WETH Prime',
48
58
  address: '0x2371e134e3455e0593363cBF89d3b6cf53740618',
49
59
  asset: 'WETH',
60
+ network: types_1.NetworkNumber.Eth,
61
+ version: types_1.MorphoVaultVersion.V1,
50
62
  deploymentBlock: 19372149,
51
63
  isLegacy: true,
52
64
  };
@@ -55,6 +67,8 @@ exports.MORPHO_VAULT_BOOSTED_USDC = {
55
67
  name: 'Boosted USDC',
56
68
  address: '0xd63070114470f685b75B74D60EEc7c1113d33a3D',
57
69
  asset: 'USDC',
70
+ network: types_1.NetworkNumber.Eth,
71
+ version: types_1.MorphoVaultVersion.V1,
58
72
  deploymentBlock: 20377233,
59
73
  isLegacy: true,
60
74
  };
@@ -63,6 +77,8 @@ exports.MORPHO_VAULT_FLAGSHIP_USDT = {
63
77
  name: 'Flagship USDT',
64
78
  address: '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1',
65
79
  asset: 'USDT',
80
+ network: types_1.NetworkNumber.Eth,
81
+ version: types_1.MorphoVaultVersion.V1,
66
82
  deploymentBlock: 19127039,
67
83
  isLegacy: true,
68
84
  };
@@ -71,6 +87,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = {
71
87
  name: 'Gauntlet USDA Core',
72
88
  address: '0x125D41A6e5dbf455cD9Df8F80BCC6fd172D52Cc6',
73
89
  asset: 'USDA',
90
+ network: types_1.NetworkNumber.Eth,
91
+ version: types_1.MorphoVaultVersion.V1,
74
92
  deploymentBlock: 19633608,
75
93
  isLegacy: true,
76
94
  };
@@ -79,6 +97,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = {
79
97
  name: 'Gauntlet USDT Prime',
80
98
  address: '0x8CB3649114051cA5119141a34C200D65dc0Faa73',
81
99
  asset: 'USDT',
100
+ network: types_1.NetworkNumber.Eth,
101
+ version: types_1.MorphoVaultVersion.V1,
82
102
  deploymentBlock: 19486541,
83
103
  isLegacy: true,
84
104
  };
@@ -87,6 +107,8 @@ exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = {
87
107
  name: 'Gauntlet Resolv USDC',
88
108
  address: '0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb',
89
109
  asset: 'USDC',
110
+ network: types_1.NetworkNumber.Eth,
111
+ version: types_1.MorphoVaultVersion.V1,
90
112
  deploymentBlock: 21487882,
91
113
  isLegacy: true,
92
114
  };
@@ -96,6 +118,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_USDT = {
96
118
  name: 'Steakhouse USDT',
97
119
  address: '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa',
98
120
  asset: 'USDT',
121
+ network: types_1.NetworkNumber.Eth,
122
+ version: types_1.MorphoVaultVersion.V1,
99
123
  deploymentBlock: 19043398,
100
124
  isLegacy: false,
101
125
  };
@@ -104,6 +128,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_USDC = {
104
128
  name: 'Steakhouse USDC',
105
129
  address: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB',
106
130
  asset: 'USDC',
131
+ network: types_1.NetworkNumber.Eth,
132
+ version: types_1.MorphoVaultVersion.V1,
107
133
  deploymentBlock: 18928285,
108
134
  isLegacy: false,
109
135
  };
@@ -112,6 +138,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_ETH = {
112
138
  name: 'Steakhouse WETH',
113
139
  address: '0xBEEf050ecd6a16c4e7bfFbB52Ebba7846C4b8cD4',
114
140
  asset: 'WETH',
141
+ network: types_1.NetworkNumber.Eth,
142
+ version: types_1.MorphoVaultVersion.V1,
115
143
  deploymentBlock: 19380443,
116
144
  isLegacy: false,
117
145
  };
@@ -120,6 +148,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = {
120
148
  name: 'Steakhouse PYUSD',
121
149
  address: '0xbEEF02e5E13584ab96848af90261f0C8Ee04722a',
122
150
  asset: 'PYUSD',
151
+ network: types_1.NetworkNumber.Eth,
152
+ version: types_1.MorphoVaultVersion.V1,
123
153
  deploymentBlock: 19043398,
124
154
  isLegacy: false,
125
155
  };
@@ -129,6 +159,8 @@ exports.MORPHO_VAULT_SMOKEHOUSE_USDT = {
129
159
  name: 'Smokehouse USDT',
130
160
  address: '0xA0804346780b4c2e3bE118ac957D1DB82F9d7484',
131
161
  asset: 'USDT',
162
+ network: types_1.NetworkNumber.Eth,
163
+ version: types_1.MorphoVaultVersion.V1,
132
164
  deploymentBlock: 21522238,
133
165
  isLegacy: false,
134
166
  };
@@ -137,6 +169,8 @@ exports.MORPHO_VAULT_SMOKEHOUSE_USDC = {
137
169
  name: 'Smokehouse USDC',
138
170
  address: '0xBEeFFF209270748ddd194831b3fa287a5386f5bC',
139
171
  asset: 'USDC',
172
+ network: types_1.NetworkNumber.Eth,
173
+ version: types_1.MorphoVaultVersion.V1,
140
174
  deploymentBlock: 21337719,
141
175
  isLegacy: false,
142
176
  };
@@ -145,9 +179,32 @@ exports.MORPHO_VAULT_SMOKEHOUSE_DAI = {
145
179
  name: 'Smokehouse DAI',
146
180
  address: '0xbeeFfF68CC520D68f82641EFF84330C631E2490E',
147
181
  asset: 'DAI',
182
+ network: types_1.NetworkNumber.Eth,
183
+ version: types_1.MorphoVaultVersion.V1,
148
184
  deploymentBlock: 21343808,
149
185
  isLegacy: false,
150
186
  };
187
+ // Vault V2
188
+ exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM = {
189
+ type: types_1.MorphoVaultType.MorphoVaultGauntletUSDGPremium,
190
+ name: 'Gauntlet USDG Premium',
191
+ address: '0x390c1bb01F3F627144a40617e287d4cE3D5aBCfa',
192
+ asset: 'USDG',
193
+ network: types_1.NetworkNumber.Arb,
194
+ version: types_1.MorphoVaultVersion.V2,
195
+ deploymentBlock: 510799903,
196
+ isLegacy: false,
197
+ };
198
+ exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO = {
199
+ type: types_1.MorphoVaultType.MorphoVaultSteakhouseUSDGPro,
200
+ name: 'Steakhouse USDG Pro',
201
+ address: '0xbeeFf72B77e7584a450E887125F25E8D8819016a',
202
+ asset: 'USDG',
203
+ network: types_1.NetworkNumber.Arb,
204
+ version: types_1.MorphoVaultVersion.V2,
205
+ deploymentBlock: 512247107,
206
+ isLegacy: false,
207
+ };
151
208
  exports.MORPHO_VAULTS = {
152
209
  [types_1.MorphoVaultType.MorphoVaultFlagshipEth]: exports.MORPHO_VAULT_FLAGSHIP_ETH,
153
210
  [types_1.MorphoVaultType.MorphoVaultGauntletUSDCCore]: exports.MORPHO_VAULT_GAUNTLET_USDC_CORE,
@@ -169,6 +226,9 @@ exports.MORPHO_VAULTS = {
169
226
  [types_1.MorphoVaultType.MorphoVaultSmokehouseUSDT]: exports.MORPHO_VAULT_SMOKEHOUSE_USDT,
170
227
  [types_1.MorphoVaultType.MorphoVaultSmokehouseUSDC]: exports.MORPHO_VAULT_SMOKEHOUSE_USDC,
171
228
  [types_1.MorphoVaultType.MorphoVaultSmokehouseDAI]: exports.MORPHO_VAULT_SMOKEHOUSE_DAI,
229
+ // Vault V2
230
+ [types_1.MorphoVaultType.MorphoVaultGauntletUSDGPremium]: exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM,
231
+ [types_1.MorphoVaultType.MorphoVaultSteakhouseUSDGPro]: exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO,
172
232
  };
173
233
  const getMorphoVault = (type) => exports.MORPHO_VAULTS[type];
174
234
  exports.getMorphoVault = getMorphoVault;
@@ -1,4 +1,4 @@
1
- import { EthAddress, IncentiveData, LeverageType, MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber } from './common';
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;
@@ -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, CompoundV3PositionAggregatedFields {
129
+ export interface CompoundV3PositionData extends CompoundPositionData {
153
130
  usedAssets: CompoundV3UsedAssets;
154
- isAllowed?: boolean;
155
131
  }
@@ -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 type CrvUSDPositionAggregatedFields = Partial<Pick<CrvUSDAggregatedPositionData, 'borrowLimitUsd' | 'minAllowedRatio' | 'collFactor' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice'>>;
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
  }
@@ -138,8 +138,7 @@ export interface LlamaLendUsedAsset {
138
138
  export interface LlamaLendUsedAssets {
139
139
  [key: string]: LlamaLendUsedAsset;
140
140
  }
141
- export type LlamaLendPositionAggregatedFields = Partial<Pick<LlamaLendAggregatedPositionData, 'borrowLimitUsd' | 'minAllowedRatio' | 'collFactor' | 'leveragedType' | 'leveragedAsset' | 'liquidationPrice' | 'netApy' | 'incentiveUsd' | 'totalInterestUsd'>>;
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
  }
@@ -214,8 +214,6 @@ export interface MorphoBluePositionData {
214
214
  supplyShares: string;
215
215
  borrowShares: string;
216
216
  exposure: string;
217
- minCollRatio?: string;
218
- collLiquidationRatio?: string;
219
217
  }
220
218
  export interface MorphoBlueEarnData {
221
219
  apy: string;
@@ -1,4 +1,4 @@
1
- import { EthAddress } from '../common';
1
+ import { EthAddress, NetworkNumber } from '../common';
2
2
  export declare enum MorphoVaultType {
3
3
  MorphoVaultFlagshipEth = "morpho_vault_flagship_eth",
4
4
  MorphoVaultGauntletUSDCCore = "morpho_vault_gauntlet_usdc_core",
@@ -17,13 +17,21 @@ export declare enum MorphoVaultType {
17
17
  MorphoVaultSteakhousePYUSD = "morpho_vault_steakhouse_pyusd",
18
18
  MorphoVaultSmokehouseUSDT = "morpho_vault_smokehouse_usdt",
19
19
  MorphoVaultSmokehouseUSDC = "morpho_vault_smokehouse_usdc",
20
- MorphoVaultSmokehouseDAI = "morpho_vault_smokehouse_dai"
20
+ MorphoVaultSmokehouseDAI = "morpho_vault_smokehouse_dai",
21
+ MorphoVaultGauntletUSDGPremium = "morpho_vault_gauntlet_usdg_premium",
22
+ MorphoVaultSteakhouseUSDGPro = "morpho_vault_steakhouse_usdg_pro"
23
+ }
24
+ export declare enum MorphoVaultVersion {
25
+ V1 = 1,
26
+ V2 = 2
21
27
  }
22
28
  export interface MorphoVault {
23
29
  type: MorphoVaultType;
24
30
  name: string;
25
31
  address: EthAddress;
26
32
  asset: string;
33
+ network: NetworkNumber;
34
+ version: MorphoVaultVersion;
27
35
  deploymentBlock: number;
28
36
  isLegacy: boolean;
29
37
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MorphoVaultType = void 0;
3
+ exports.MorphoVaultVersion = exports.MorphoVaultType = void 0;
4
4
  var MorphoVaultType;
5
5
  (function (MorphoVaultType) {
6
6
  MorphoVaultType["MorphoVaultFlagshipEth"] = "morpho_vault_flagship_eth";
@@ -23,4 +23,12 @@ var MorphoVaultType;
23
23
  MorphoVaultType["MorphoVaultSmokehouseUSDT"] = "morpho_vault_smokehouse_usdt";
24
24
  MorphoVaultType["MorphoVaultSmokehouseUSDC"] = "morpho_vault_smokehouse_usdc";
25
25
  MorphoVaultType["MorphoVaultSmokehouseDAI"] = "morpho_vault_smokehouse_dai";
26
+ // Vault V2
27
+ MorphoVaultType["MorphoVaultGauntletUSDGPremium"] = "morpho_vault_gauntlet_usdg_premium";
28
+ MorphoVaultType["MorphoVaultSteakhouseUSDGPro"] = "morpho_vault_steakhouse_usdg_pro";
26
29
  })(MorphoVaultType || (exports.MorphoVaultType = MorphoVaultType = {}));
30
+ var MorphoVaultVersion;
31
+ (function (MorphoVaultVersion) {
32
+ MorphoVaultVersion[MorphoVaultVersion["V1"] = 1] = "V1";
33
+ MorphoVaultVersion[MorphoVaultVersion["V2"] = 2] = "V2";
34
+ })(MorphoVaultVersion || (exports.MorphoVaultVersion = MorphoVaultVersion = {}));
@@ -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;