@1delta/margin-fetcher 0.0.33 → 0.0.35
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/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts +2 -2
- package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallBuild.js +8 -11
- package/dist/lending/user-data/aave-v2-type/userCallParse.js +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallBuild.js +6 -8
- package/dist/lending/user-data/aave-v3-type/userCallParse.js +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.js +3 -3
- package/dist/lending/user-data/compound-v3/userCallBuild.d.ts +1 -1
- package/dist/lending/user-data/compound-v3/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v3/userCallBuild.js +2 -2
- package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v3/userCallParse.js +1 -1
- package/dist/lending/user-data/fetchUserData.d.ts +1 -0
- package/dist/lending/user-data/fetchUserData.d.ts.map +1 -1
- package/dist/lending/user-data/fetchUserData.js +6 -5
- package/dist/lending/user-data/morpho/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/types.d.ts +2 -0
- package/dist/lending/user-data/types.d.ts.map +1 -1
- package/dist/lending/user-data/types.js +6 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -4
- package/package.json +1 -1
- package/src/lending/user-data/aave-v2-type/userCallBuild.ts +25 -31
- package/src/lending/user-data/aave-v2-type/userCallParse.ts +2 -2
- package/src/lending/user-data/aave-v3-type/userCallBuild.ts +17 -15
- package/src/lending/user-data/aave-v3-type/userCallParse.ts +2 -2
- package/src/lending/user-data/aave-v3-type/userCallParseYldr.ts +3 -3
- package/src/lending/user-data/compound-v3/userCallBuild.ts +2 -1
- package/src/lending/user-data/compound-v3/userCallParse.ts +1 -5
- package/src/lending/user-data/fetchUserData.ts +8 -6
- package/src/lending/user-data/morpho/userCallParse.ts +2 -4
- package/src/lending/user-data/types.ts +7 -3
- package/src/utils/index.ts +0 -6
- package/test/userDataAaveMainnet.test.ts +9 -10
- package/test/userDataMorphoEthereum.test.ts +23 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Call } from
|
|
1
|
+
import { Call } from '../../../utils/multicall';
|
|
2
2
|
import { Lender } from '@1delta/lender-registry';
|
|
3
|
-
export declare const buildAaveV2UserCall: (chainId: string, lender: Lender, account: string) => Call[];
|
|
3
|
+
export declare const buildAaveV2UserCall: (chainId: string, lender: Lender, account: string, assets?: string[]) => Call[];
|
|
4
4
|
//# sourceMappingURL=userCallBuild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v2-type/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v2-type/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AA0BhD,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EAAE,KAChB,IAAI,EA+EN,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry';
|
|
2
|
-
import { getAaveAssets, getAaveStyleProtocolTokenMap, getAaveTypePoolDataProviderAddress } from
|
|
3
|
-
import { getAaveTypeIncentivesControllerAddress, getAaveTypeMultiFeeDistribution } from
|
|
2
|
+
import { getAaveAssets, getAaveStyleProtocolTokenMap, getAaveTypePoolDataProviderAddress, } from '../../../assets';
|
|
3
|
+
import { getAaveTypeIncentivesControllerAddress, getAaveTypeMultiFeeDistribution, } from '../../addresses';
|
|
4
4
|
const getBaseAaveV2Calls = (chainId, account, lender, assetsToQuery) => {
|
|
5
5
|
return assetsToQuery.flatMap((tk) => [
|
|
6
6
|
{
|
|
@@ -10,11 +10,11 @@ const getBaseAaveV2Calls = (chainId, account, lender, assetsToQuery) => {
|
|
|
10
10
|
},
|
|
11
11
|
]);
|
|
12
12
|
};
|
|
13
|
-
export const buildAaveV2UserCall = (chainId, lender, account) => {
|
|
13
|
+
export const buildAaveV2UserCall = (chainId, lender, account, assets) => {
|
|
14
14
|
switch (lender) {
|
|
15
15
|
case Lender.AURELIUS: {
|
|
16
16
|
const rewarder = getAaveTypeIncentivesControllerAddress(chainId, lender);
|
|
17
|
-
const assetsToQuery = getAaveAssets(chainId, lender);
|
|
17
|
+
const assetsToQuery = assets ?? getAaveAssets(chainId, lender);
|
|
18
18
|
const aaveTokenMap = getAaveStyleProtocolTokenMap(chainId, lender);
|
|
19
19
|
const aTokens = Object.values(aaveTokenMap).map((a) => a.aToken);
|
|
20
20
|
const vTokens = Object.values(aaveTokenMap).map((a) => a.vToken);
|
|
@@ -24,13 +24,10 @@ export const buildAaveV2UserCall = (chainId, lender, account) => {
|
|
|
24
24
|
address: rewarder,
|
|
25
25
|
name: 'getAllUserRewardsBalance',
|
|
26
26
|
params: [
|
|
27
|
-
[
|
|
28
|
-
|
|
29
|
-
...Object.values(vTokens)
|
|
30
|
-
],
|
|
31
|
-
account
|
|
27
|
+
[...Object.values(aTokens), ...Object.values(vTokens)],
|
|
28
|
+
account,
|
|
32
29
|
],
|
|
33
|
-
}
|
|
30
|
+
},
|
|
34
31
|
];
|
|
35
32
|
}
|
|
36
33
|
case Lender.MERIDIAN:
|
|
@@ -76,7 +73,7 @@ export const buildAaveV2UserCall = (chainId, lender, account) => {
|
|
|
76
73
|
return [
|
|
77
74
|
...getBaseAaveV2Calls(chainId, account, lender, assetsToQuery),
|
|
78
75
|
rewardsBalance,
|
|
79
|
-
unclaimedRewards
|
|
76
|
+
unclaimedRewards,
|
|
80
77
|
];
|
|
81
78
|
}
|
|
82
79
|
default: {
|
|
@@ -223,8 +223,8 @@ function createAaveV2Entry(i, data, chainId, asset, prices, pricesHist, claimabl
|
|
|
223
223
|
const price = prices[key] ?? 1;
|
|
224
224
|
const priceHist = pricesHist?.[key] ?? price;
|
|
225
225
|
const dataForAsset = {
|
|
226
|
-
poolId: asset,
|
|
227
|
-
underlying: asset,
|
|
226
|
+
poolId: asset.address,
|
|
227
|
+
underlying: asset.address,
|
|
228
228
|
deposits: currentATokenBalance,
|
|
229
229
|
depositsRaw: currentATokenBalanceRaw,
|
|
230
230
|
debtStable: currentStableDebt,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry';
|
|
2
|
-
import { Call } from
|
|
3
|
-
export declare const buildAaveV3UserCall: (chainId: string, lender: Lender, account: string) => Call[];
|
|
2
|
+
import { Call } from '../../../utils/multicall';
|
|
3
|
+
export declare const buildAaveV3UserCall: (chainId: string, lender: Lender, account: string, assets?: string[]) => Call[];
|
|
4
4
|
//# sourceMappingURL=userCallBuild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/aave-v3-type/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAuB/C,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EAAE,KAChB,IAAI,EAcN,CAAA"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { getAaveAssets, getAaveTypePoolDataProviderAddress, getAaveTypePoolAddress } from
|
|
2
|
-
import { isYLDR } from
|
|
1
|
+
import { getAaveAssets, getAaveTypePoolDataProviderAddress, getAaveTypePoolAddress, } from '../../../assets';
|
|
2
|
+
import { isYLDR } from '../../../utils';
|
|
3
3
|
const getBaseAaveV3Calls = (chainId, account, lender, assetsToQuery) => {
|
|
4
4
|
return assetsToQuery.flatMap((tk) => [
|
|
5
5
|
{
|
|
6
6
|
address: getAaveTypePoolDataProviderAddress(chainId, lender),
|
|
7
7
|
name: 'getUserReserveData',
|
|
8
8
|
params: [tk, account],
|
|
9
|
-
}
|
|
9
|
+
},
|
|
10
10
|
]);
|
|
11
11
|
};
|
|
12
|
-
export const buildAaveV3UserCall = (chainId, lender, account) => {
|
|
13
|
-
const assetsToQuery = getAaveAssets(chainId, lender);
|
|
14
|
-
const calls = [
|
|
15
|
-
...getBaseAaveV3Calls(chainId, account, lender, assetsToQuery),
|
|
16
|
-
];
|
|
12
|
+
export const buildAaveV3UserCall = (chainId, lender, account, assets) => {
|
|
13
|
+
const assetsToQuery = assets ?? getAaveAssets(chainId, lender);
|
|
14
|
+
const calls = [...getBaseAaveV3Calls(chainId, account, lender, assetsToQuery)];
|
|
17
15
|
if (!isYLDR(lender)) {
|
|
18
16
|
const callDataEmode = {
|
|
19
17
|
address: getAaveTypePoolAddress(chainId, lender),
|
|
@@ -63,8 +63,8 @@ function createAaveV3Entry(i, data, chainId, asset, prices, pricesHist) {
|
|
|
63
63
|
const price = prices[key] ?? 1;
|
|
64
64
|
const priceHist = pricesHist?.[key] ?? price;
|
|
65
65
|
const dataForAsset = {
|
|
66
|
-
poolId: asset,
|
|
67
|
-
underlying: asset,
|
|
66
|
+
poolId: asset.address,
|
|
67
|
+
underlying: asset.address,
|
|
68
68
|
deposits: currentATokenBalance,
|
|
69
69
|
depositsRaw: currentATokenBalanceRaw,
|
|
70
70
|
debtStable: currentStableDebt,
|
|
@@ -16,7 +16,7 @@ export const getYldrUserDataConverter = (lender, chainId, account, prices, price
|
|
|
16
16
|
let totalDeposits24h = 0;
|
|
17
17
|
for (let i = 0; i < assetsToQuery.length; i++) {
|
|
18
18
|
const asset = assetsToQuery[i];
|
|
19
|
-
const { dataForAsset, addedDebt, addedDeposits } = createAaveV3Entry(i, data, chainId, lenderData[asset].asset
|
|
19
|
+
const { dataForAsset, addedDebt, addedDeposits } = createAaveV3Entry(i, data, chainId, lenderData[asset].asset, prices, pricesHist);
|
|
20
20
|
if (!dataForAsset)
|
|
21
21
|
continue;
|
|
22
22
|
totalDebt24h += addedDebt;
|
|
@@ -60,8 +60,8 @@ function createAaveV3Entry(i, data, chainId, asset, prices, pricesHist) {
|
|
|
60
60
|
const price = prices[key] ?? 1;
|
|
61
61
|
const priceHist = pricesHist?.[key] ?? price;
|
|
62
62
|
const dataForAsset = {
|
|
63
|
-
poolId: asset,
|
|
64
|
-
underlying: asset,
|
|
63
|
+
poolId: asset.address,
|
|
64
|
+
underlying: asset.address,
|
|
65
65
|
deposits: currentATokenBalance,
|
|
66
66
|
depositsRaw: currentATokenBalanceRaw,
|
|
67
67
|
debtStable: '0',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry';
|
|
2
2
|
import { Call } from '../../../utils/multicall';
|
|
3
|
-
export declare const buildCompoundV3UserCall: (chainId: string, lender: Lender, account: string) => Call[];
|
|
3
|
+
export declare const buildCompoundV3UserCall: (chainId: string, lender: Lender, account: string, assetsOverride?: string[]) => Call[];
|
|
4
4
|
//# sourceMappingURL=userCallBuild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"userCallBuild.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM,EAAE,KACxB,IAAI,EAkCN,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getLenderAssets } from '../../../utils';
|
|
2
2
|
import { getCompoundV3BaseAsset, getCompoundV3CometAddress, getCompoundV3CometRewardsAddress, } from '../../addresses/compoundV3';
|
|
3
|
-
export const buildCompoundV3UserCall = (chainId, lender, account) => {
|
|
3
|
+
export const buildCompoundV3UserCall = (chainId, lender, account, assetsOverride) => {
|
|
4
4
|
const baseAsset = getCompoundV3BaseAsset(lender, chainId)?.baseAsset;
|
|
5
5
|
const cometContractAddress = getCompoundV3CometAddress(chainId, lender);
|
|
6
|
-
const assets = getLenderAssets(chainId, lender);
|
|
6
|
+
const assets = assetsOverride ?? getLenderAssets(chainId, lender);
|
|
7
7
|
const assetsNoBase = assets.filter((a) => a !== baseAsset);
|
|
8
8
|
const baseCalls = [
|
|
9
9
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/compound-v3/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAMxD,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,YAAY;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACvC,YAAY,GAAG,KACd,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,6BAA6B,GAAG,SAAS,EAAE,MAAM,CAkHrE,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { toGenericPriceKey, toOracleKey
|
|
1
|
+
import { toGenericPriceKey, toOracleKey } from '../../../assets';
|
|
2
2
|
import { getCompoundV3BaseAsset } from '../../addresses/compoundV3';
|
|
3
3
|
import { parseRawAmount } from '../../../utils/parsing';
|
|
4
4
|
import { createBaseTypeUserState } from '../utils';
|
|
@@ -8,6 +8,7 @@ import { GetEvmClientFunction } from '../../types';
|
|
|
8
8
|
* @param allowFailure - multicall can fail in single call, default is true - note that this might mess with the retries as it will never error
|
|
9
9
|
* @param batchSize - multicall batch size, default is 4096
|
|
10
10
|
* @param logs - show multicall error logs, default is false
|
|
11
|
+
* @param lenderData - optional public lender data to dynamically use pols and assets provided externally
|
|
11
12
|
* @returns The raw results from the multicall, "0x" for failures
|
|
12
13
|
*/
|
|
13
14
|
export declare const getLenderUserDataResult: (chainId: string, queriesRaw: LenderUserQuery[], getEvmClient: GetEvmClientFunction, allowFailure?: boolean, batchSize?: number, retries?: number, logs?: boolean) => Promise<any[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserData.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/fetchUserData.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"fetchUserData.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/fetchUserData.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAgGlD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,cAAc,oBAAoB,EAClC,sBAAmB,EACnB,kBAAwC,EACxC,gBAAW,EACX,cAAY,KACX,OAAO,CAAC,GAAG,EAAE,CAgCf,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,EACf,YAAY,eAAe,EAAE,EAC7B,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,EACX,YAAY,GAAG,EACf,aAAa,GAAG,KACf;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;CAoCzB,CAAA"}
|
|
@@ -13,16 +13,16 @@ import { getCompoundV3UserDataConverter } from './compound-v3/userCallParse';
|
|
|
13
13
|
import { getYldrUserDataConverter } from './aave-v3-type/userCallParseYldr';
|
|
14
14
|
import { buildMorphoUserCallWithLens } from './morpho/userCallBuild';
|
|
15
15
|
import { getMorphoUserDataConverterWithlens } from './morpho/userCallParse';
|
|
16
|
-
function buildUserCall(chainId, lender, account, params) {
|
|
16
|
+
function buildUserCall(chainId, lender, account, params, assets) {
|
|
17
17
|
if (isAaveV2Type(lender))
|
|
18
|
-
return buildAaveV2UserCall(chainId, lender, account);
|
|
18
|
+
return buildAaveV2UserCall(chainId, lender, account, assets);
|
|
19
19
|
if (isAaveV3Type(lender))
|
|
20
|
-
return buildAaveV3UserCall(chainId, lender, account);
|
|
20
|
+
return buildAaveV3UserCall(chainId, lender, account, assets);
|
|
21
21
|
if (isInit(lender))
|
|
22
22
|
return buildInitUserCall(chainId, lender, account);
|
|
23
23
|
if (isMorphoType(lender))
|
|
24
24
|
return buildMorphoUserCallWithLens(chainId, account, lender, params);
|
|
25
|
-
return buildCompoundV3UserCall(chainId, lender, account);
|
|
25
|
+
return buildCompoundV3UserCall(chainId, lender, account, assets);
|
|
26
26
|
}
|
|
27
27
|
function getUserDataConverter(lender, chainId, account, prices, pricesHist, lenderPublicState, params) {
|
|
28
28
|
if (isYLDR(lender))
|
|
@@ -45,6 +45,7 @@ function getUserDataConverter(lender, chainId, account, prices, pricesHist, lend
|
|
|
45
45
|
* @param allowFailure - multicall can fail in single call, default is true - note that this might mess with the retries as it will never error
|
|
46
46
|
* @param batchSize - multicall batch size, default is 4096
|
|
47
47
|
* @param logs - show multicall error logs, default is false
|
|
48
|
+
* @param lenderData - optional public lender data to dynamically use pols and assets provided externally
|
|
48
49
|
* @returns The raw results from the multicall, "0x" for failures
|
|
49
50
|
*/
|
|
50
51
|
export const getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient, allowFailure = true, batchSize = MULTICALL_DEFAULT_BATCH_SIZE, retries = 3, logs = false) => {
|
|
@@ -52,7 +53,7 @@ export const getLenderUserDataResult = async (chainId, queriesRaw, getEvmClient,
|
|
|
52
53
|
const queries = organizeUserQueries(queriesRaw);
|
|
53
54
|
for (const query of queries) {
|
|
54
55
|
const abi = getAbi(query.lender);
|
|
55
|
-
const callData = buildUserCall(chainId, query.lender, query.account, query.params);
|
|
56
|
+
const callData = buildUserCall(chainId, query.lender, query.account, query.params, query.assets);
|
|
56
57
|
const mappedCalls = callData.map((call) => ({ call, abi }));
|
|
57
58
|
calls = [...calls, ...mappedCalls];
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAiDpD,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,MAAM,EAAE,EACjB,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,YAAY;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACvC,YAAY,GAAG,KACd,CACD,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAAE,GAAG,SAAS,EAC5E,MAAM,
|
|
1
|
+
{"version":3,"file":"userCallParse.d.ts","sourceRoot":"","sources":["../../../../src/lending/user-data/morpho/userCallParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAiDpD,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,SAAS,MAAM,EACf,SAAS,MAAM,EAAE,EACjB,QAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,YAAY;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACvC,YAAY,GAAG,KACd,CACD,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAAE,GAAG,SAAS,EAC5E,MAAM,CA2FP,CAAA"}
|
|
@@ -8,6 +8,8 @@ export interface LenderUserQuery {
|
|
|
8
8
|
account: string;
|
|
9
9
|
/** custom parameters for fetching e.g. multi-market lenders */
|
|
10
10
|
params?: any[];
|
|
11
|
+
/** custom parameters for spceifying assets */
|
|
12
|
+
assets?: any[];
|
|
11
13
|
}
|
|
12
14
|
/** Filter all morphos into one for querying */
|
|
13
15
|
export declare function organizeUserQueries(queries: LenderUserQuery[]): LenderUserQuery[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lending/user-data/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry';
|
|
2
|
+
import { isMorphoType } from '../../utils';
|
|
2
3
|
/** Filter all morphos into one for querying */
|
|
3
4
|
export function organizeUserQueries(queries) {
|
|
4
|
-
const morphos = queries.filter((q) => q.lender
|
|
5
|
-
|
|
5
|
+
const morphos = queries.filter((q) => isMorphoType(q.lender));
|
|
6
|
+
if (morphos.length === 0)
|
|
7
|
+
return queries;
|
|
8
|
+
const nonMorphos = queries.filter((q) => !isMorphoType(q.lender));
|
|
6
9
|
const morphosCollapsed = {
|
|
7
10
|
lender: Lender.MORPHO_BLUE,
|
|
8
11
|
account: queries[0].account,
|
|
9
12
|
params: morphos.map((p) => p.lender),
|
|
13
|
+
assets: undefined
|
|
10
14
|
};
|
|
11
15
|
return [...nonMorphos, morphosCollapsed];
|
|
12
16
|
}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ export declare function isAaveV2Type(lender: string): boolean;
|
|
|
8
8
|
export declare function isYLDR(lender: string): lender is Lender.YLDR;
|
|
9
9
|
export declare function isAaveV32Type(lender: string): boolean;
|
|
10
10
|
export declare function isAaveType(lender: string): boolean;
|
|
11
|
-
export declare function isSwaylend(lender: string): boolean;
|
|
12
11
|
export declare const getLendersForChain: (c: string) => string[];
|
|
13
12
|
/** Filter lenders by protocol list */
|
|
14
13
|
export declare const filterLendersByProtocol: (allLenders: string[], protocolList?: string[]) => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEP,MAAM,yBAAyB,CAAA;AAehC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAE9C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EAEP,MAAM,yBAAyB,CAAA;AAehC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,WAE9C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,WAE1C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,yBAEpC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,WAE3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,WAExC;AAED,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,aA2B3C,CAAA;AAED,sCAAsC;AACtC,eAAO,MAAM,uBAAuB,GAClC,YAAY,MAAM,EAAE,EACpB,eAAe,MAAM,EAAE,KACtB,MAAM,EAaR,CAAA;AAED,mCAAmC;AACnC,eAAO,MAAM,gBAAgB;;CAS5B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,MAEpD,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,EACpC,wBAAgC,KAC/B,MAAM,EAOR,CAAA;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,WAE3C"}
|
package/dist/utils/index.js
CHANGED
|
@@ -16,7 +16,6 @@ export function isInit(lender) {
|
|
|
16
16
|
export function isMorphoType(lender) {
|
|
17
17
|
return lender?.startsWith('MORPHO_BLUE');
|
|
18
18
|
}
|
|
19
|
-
const SWAYLEND_KEY = 'SWAYLEND';
|
|
20
19
|
export function isAaveV3Type(lender) {
|
|
21
20
|
return AAVE_V3_LENDERS.includes(lender);
|
|
22
21
|
}
|
|
@@ -32,9 +31,6 @@ export function isAaveV32Type(lender) {
|
|
|
32
31
|
export function isAaveType(lender) {
|
|
33
32
|
return [...AAVE_V3_LENDERS, ...AAVE_V2_LENDERS].includes(lender);
|
|
34
33
|
}
|
|
35
|
-
export function isSwaylend(lender) {
|
|
36
|
-
return lender?.startsWith(SWAYLEND_KEY);
|
|
37
|
-
}
|
|
38
34
|
export const getLendersForChain = (c) => {
|
|
39
35
|
let lenders = [];
|
|
40
36
|
// aaves
|
package/package.json
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { Call } from
|
|
1
|
+
import { Call } from '../../../utils/multicall'
|
|
2
2
|
import { Lender } from '@1delta/lender-registry'
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
getAaveAssets,
|
|
5
|
+
getAaveStyleProtocolTokenMap,
|
|
6
|
+
getAaveTypePoolDataProviderAddress,
|
|
7
|
+
} from '../../../assets'
|
|
8
|
+
import {
|
|
9
|
+
getAaveTypeIncentivesControllerAddress,
|
|
10
|
+
getAaveTypeMultiFeeDistribution,
|
|
11
|
+
} from '../../addresses'
|
|
5
12
|
|
|
6
13
|
const getBaseAaveV2Calls = (
|
|
7
14
|
chainId: string,
|
|
@@ -18,11 +25,16 @@ const getBaseAaveV2Calls = (
|
|
|
18
25
|
])
|
|
19
26
|
}
|
|
20
27
|
|
|
21
|
-
export const buildAaveV2UserCall = (
|
|
28
|
+
export const buildAaveV2UserCall = (
|
|
29
|
+
chainId: string,
|
|
30
|
+
lender: Lender,
|
|
31
|
+
account: string,
|
|
32
|
+
assets?: string[],
|
|
33
|
+
): Call[] => {
|
|
22
34
|
switch (lender) {
|
|
23
35
|
case Lender.AURELIUS: {
|
|
24
36
|
const rewarder = getAaveTypeIncentivesControllerAddress(chainId, lender)
|
|
25
|
-
const assetsToQuery = getAaveAssets(chainId, lender)
|
|
37
|
+
const assetsToQuery = assets ?? getAaveAssets(chainId, lender)
|
|
26
38
|
|
|
27
39
|
const aaveTokenMap = getAaveStyleProtocolTokenMap(chainId, lender)
|
|
28
40
|
|
|
@@ -30,23 +42,15 @@ export const buildAaveV2UserCall = (chainId: string, lender: Lender, account: st
|
|
|
30
42
|
const vTokens = Object.values(aaveTokenMap).map((a: any) => a.vToken)
|
|
31
43
|
|
|
32
44
|
return [
|
|
33
|
-
...getBaseAaveV2Calls(
|
|
34
|
-
chainId,
|
|
35
|
-
account,
|
|
36
|
-
lender,
|
|
37
|
-
assetsToQuery,
|
|
38
|
-
),
|
|
45
|
+
...getBaseAaveV2Calls(chainId, account, lender, assetsToQuery),
|
|
39
46
|
{
|
|
40
47
|
address: rewarder,
|
|
41
48
|
name: 'getAllUserRewardsBalance',
|
|
42
49
|
params: [
|
|
43
|
-
[
|
|
44
|
-
|
|
45
|
-
...Object.values(vTokens)
|
|
46
|
-
],
|
|
47
|
-
account
|
|
50
|
+
[...Object.values(aTokens), ...Object.values(vTokens)],
|
|
51
|
+
account,
|
|
48
52
|
],
|
|
49
|
-
}
|
|
53
|
+
},
|
|
50
54
|
]
|
|
51
55
|
}
|
|
52
56
|
case Lender.MERIDIAN:
|
|
@@ -95,24 +99,14 @@ export const buildAaveV2UserCall = (chainId: string, lender: Lender, account: st
|
|
|
95
99
|
}
|
|
96
100
|
|
|
97
101
|
return [
|
|
98
|
-
...getBaseAaveV2Calls(
|
|
99
|
-
chainId,
|
|
100
|
-
account,
|
|
101
|
-
lender,
|
|
102
|
-
assetsToQuery
|
|
103
|
-
),
|
|
102
|
+
...getBaseAaveV2Calls(chainId, account, lender, assetsToQuery),
|
|
104
103
|
rewardsBalance,
|
|
105
|
-
unclaimedRewards
|
|
104
|
+
unclaimedRewards,
|
|
106
105
|
]
|
|
107
106
|
}
|
|
108
107
|
default: {
|
|
109
108
|
const assetsToQuery = getAaveAssets(chainId, lender)
|
|
110
|
-
return getBaseAaveV2Calls(
|
|
111
|
-
chainId,
|
|
112
|
-
account,
|
|
113
|
-
lender,
|
|
114
|
-
assetsToQuery,
|
|
115
|
-
)
|
|
109
|
+
return getBaseAaveV2Calls(chainId, account, lender, assetsToQuery)
|
|
116
110
|
}
|
|
117
111
|
}
|
|
118
|
-
}
|
|
112
|
+
}
|
|
@@ -375,8 +375,8 @@ function createAaveV2Entry(
|
|
|
375
375
|
const priceHist = pricesHist?.[key] ?? price
|
|
376
376
|
|
|
377
377
|
const dataForAsset = {
|
|
378
|
-
poolId: asset,
|
|
379
|
-
underlying: asset,
|
|
378
|
+
poolId: asset.address,
|
|
379
|
+
underlying: asset.address,
|
|
380
380
|
deposits: currentATokenBalance,
|
|
381
381
|
depositsRaw: currentATokenBalanceRaw,
|
|
382
382
|
debtStable: currentStableDebt,
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry'
|
|
2
|
-
import { Call } from
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { Call } from '../../../utils/multicall'
|
|
3
|
+
import {
|
|
4
|
+
getAaveAssets,
|
|
5
|
+
getAaveTypePoolDataProviderAddress,
|
|
6
|
+
getAaveTypePoolAddress,
|
|
7
|
+
} from '../../../assets'
|
|
8
|
+
import { isYLDR } from '../../../utils'
|
|
5
9
|
|
|
6
10
|
const getBaseAaveV3Calls = (
|
|
7
11
|
chainId: string,
|
|
@@ -14,21 +18,19 @@ const getBaseAaveV3Calls = (
|
|
|
14
18
|
address: getAaveTypePoolDataProviderAddress(chainId, lender),
|
|
15
19
|
name: 'getUserReserveData',
|
|
16
20
|
params: [tk, account],
|
|
17
|
-
}
|
|
21
|
+
},
|
|
18
22
|
])
|
|
19
23
|
}
|
|
20
24
|
|
|
21
|
-
export const buildAaveV3UserCall = (
|
|
22
|
-
|
|
25
|
+
export const buildAaveV3UserCall = (
|
|
26
|
+
chainId: string,
|
|
27
|
+
lender: Lender,
|
|
28
|
+
account: string,
|
|
29
|
+
assets?: string[],
|
|
30
|
+
): Call[] => {
|
|
31
|
+
const assetsToQuery = assets ?? getAaveAssets(chainId, lender)
|
|
23
32
|
|
|
24
|
-
const calls = [
|
|
25
|
-
...getBaseAaveV3Calls(
|
|
26
|
-
chainId,
|
|
27
|
-
account,
|
|
28
|
-
lender,
|
|
29
|
-
assetsToQuery,
|
|
30
|
-
),
|
|
31
|
-
]
|
|
33
|
+
const calls = [...getBaseAaveV3Calls(chainId, account, lender, assetsToQuery)]
|
|
32
34
|
if (!isYLDR(lender)) {
|
|
33
35
|
const callDataEmode = {
|
|
34
36
|
address: getAaveTypePoolAddress(chainId, lender),
|
|
@@ -39,4 +41,4 @@ export const buildAaveV3UserCall = (chainId: string, lender: Lender, account: st
|
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
return calls
|
|
42
|
-
}
|
|
44
|
+
}
|
|
@@ -114,8 +114,8 @@ function createAaveV3Entry(
|
|
|
114
114
|
const priceHist = pricesHist?.[key] ?? price
|
|
115
115
|
|
|
116
116
|
const dataForAsset = {
|
|
117
|
-
poolId: asset,
|
|
118
|
-
underlying: asset,
|
|
117
|
+
poolId: asset.address,
|
|
118
|
+
underlying: asset.address,
|
|
119
119
|
deposits: currentATokenBalance,
|
|
120
120
|
depositsRaw: currentATokenBalanceRaw,
|
|
121
121
|
debtStable: currentStableDebt,
|
|
@@ -33,7 +33,7 @@ export const getYldrUserDataConverter = (
|
|
|
33
33
|
i,
|
|
34
34
|
data,
|
|
35
35
|
chainId,
|
|
36
|
-
lenderData[asset].asset
|
|
36
|
+
lenderData[asset].asset,
|
|
37
37
|
prices,
|
|
38
38
|
pricesHist,
|
|
39
39
|
)
|
|
@@ -103,8 +103,8 @@ function createAaveV3Entry(
|
|
|
103
103
|
const priceHist = pricesHist?.[key] ?? price
|
|
104
104
|
|
|
105
105
|
const dataForAsset = {
|
|
106
|
-
poolId: asset,
|
|
107
|
-
underlying: asset,
|
|
106
|
+
poolId: asset.address,
|
|
107
|
+
underlying: asset.address,
|
|
108
108
|
deposits: currentATokenBalance,
|
|
109
109
|
depositsRaw: currentATokenBalanceRaw,
|
|
110
110
|
debtStable: '0',
|
|
@@ -11,10 +11,11 @@ export const buildCompoundV3UserCall = (
|
|
|
11
11
|
chainId: string,
|
|
12
12
|
lender: Lender,
|
|
13
13
|
account: string,
|
|
14
|
+
assetsOverride?: string[],
|
|
14
15
|
): Call[] => {
|
|
15
16
|
const baseAsset = getCompoundV3BaseAsset(lender, chainId)?.baseAsset
|
|
16
17
|
const cometContractAddress = getCompoundV3CometAddress(chainId, lender)!
|
|
17
|
-
const assets = getLenderAssets(chainId, lender)
|
|
18
|
+
const assets = assetsOverride ?? getLenderAssets(chainId, lender)
|
|
18
19
|
const assetsNoBase = assets.filter((a) => a !== baseAsset)
|
|
19
20
|
|
|
20
21
|
const baseCalls = [
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry'
|
|
2
2
|
import { CompoundV3UserReserveResponse } from '../types'
|
|
3
|
-
import {
|
|
4
|
-
toGenericPriceKey,
|
|
5
|
-
toOracleKey,
|
|
6
|
-
} from '../../../assets'
|
|
3
|
+
import { toGenericPriceKey, toOracleKey } from '../../../assets'
|
|
7
4
|
import { getCompoundV3BaseAsset } from '../../addresses/compoundV3'
|
|
8
5
|
import { parseRawAmount } from '../../../utils/parsing'
|
|
9
6
|
import { createBaseTypeUserState } from '../utils'
|
|
@@ -116,7 +113,6 @@ export const getCompoundV3UserDataConverter = (
|
|
|
116
113
|
},
|
|
117
114
|
account,
|
|
118
115
|
}
|
|
119
|
-
|
|
120
116
|
const userData = createBaseTypeUserState(
|
|
121
117
|
payload,
|
|
122
118
|
lenderData,
|
|
@@ -32,13 +32,16 @@ function buildUserCall(
|
|
|
32
32
|
lender: Lender,
|
|
33
33
|
account: string,
|
|
34
34
|
params?: any,
|
|
35
|
+
assets?: any[],
|
|
35
36
|
) {
|
|
36
|
-
if (isAaveV2Type(lender))
|
|
37
|
-
|
|
37
|
+
if (isAaveV2Type(lender))
|
|
38
|
+
return buildAaveV2UserCall(chainId, lender, account, assets)
|
|
39
|
+
if (isAaveV3Type(lender))
|
|
40
|
+
return buildAaveV3UserCall(chainId, lender, account, assets)
|
|
38
41
|
if (isInit(lender)) return buildInitUserCall(chainId, lender, account)
|
|
39
42
|
if (isMorphoType(lender))
|
|
40
43
|
return buildMorphoUserCallWithLens(chainId, account, lender, params)
|
|
41
|
-
return buildCompoundV3UserCall(chainId, lender, account)
|
|
44
|
+
return buildCompoundV3UserCall(chainId, lender, account, assets)
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
function getUserDataConverter(
|
|
@@ -114,6 +117,7 @@ function getUserDataConverter(
|
|
|
114
117
|
* @param allowFailure - multicall can fail in single call, default is true - note that this might mess with the retries as it will never error
|
|
115
118
|
* @param batchSize - multicall batch size, default is 4096
|
|
116
119
|
* @param logs - show multicall error logs, default is false
|
|
120
|
+
* @param lenderData - optional public lender data to dynamically use pols and assets provided externally
|
|
117
121
|
* @returns The raw results from the multicall, "0x" for failures
|
|
118
122
|
*/
|
|
119
123
|
export const getLenderUserDataResult = async (
|
|
@@ -139,11 +143,11 @@ export const getLenderUserDataResult = async (
|
|
|
139
143
|
query.lender,
|
|
140
144
|
query.account,
|
|
141
145
|
query.params,
|
|
146
|
+
query.assets,
|
|
142
147
|
)
|
|
143
148
|
const mappedCalls = callData.map((call) => ({ call, abi }))
|
|
144
149
|
calls = [...calls, ...mappedCalls]
|
|
145
150
|
}
|
|
146
|
-
|
|
147
151
|
return await multicallViemAbiArray(
|
|
148
152
|
chainId,
|
|
149
153
|
calls.map((call) => call.abi),
|
|
@@ -189,11 +193,9 @@ export const convertLenderUserDataResult = (
|
|
|
189
193
|
lenderState[chainId],
|
|
190
194
|
query.params,
|
|
191
195
|
)
|
|
192
|
-
|
|
193
196
|
try {
|
|
194
197
|
const data = rawResults.slice(currentSlice, currentSlice + sliceLength)
|
|
195
198
|
const convertedData = converter(data)
|
|
196
|
-
|
|
197
199
|
if (convertedData) {
|
|
198
200
|
if (isMultiMarket(query.lender)) {
|
|
199
201
|
Object.keys(convertedData).forEach((market) => {
|
|
@@ -85,7 +85,6 @@ export const getMorphoUserDataConverterWithlens = (
|
|
|
85
85
|
for (let i = 0; i < data.length; i++) {
|
|
86
86
|
// get balance data array for chunk
|
|
87
87
|
const balanceDatas = decodePackedDataset(data[i])
|
|
88
|
-
|
|
89
88
|
// itereate of balanceDatas received in chunk
|
|
90
89
|
balanceDatas.forEach((balanceData) => {
|
|
91
90
|
// this will get the market by index
|
|
@@ -94,7 +93,6 @@ export const getMorphoUserDataConverterWithlens = (
|
|
|
94
93
|
marketsHandled.push(markeId)
|
|
95
94
|
|
|
96
95
|
const market = lenderData[markeId]?.params?.market
|
|
97
|
-
|
|
98
96
|
const { dataForMarket, addedDebt, addedDeposits } =
|
|
99
97
|
createMorphoEntryFromMarketWithLens(
|
|
100
98
|
balanceData,
|
|
@@ -183,9 +181,9 @@ function createMorphoEntryFromMarketWithLens(
|
|
|
183
181
|
}
|
|
184
182
|
|
|
185
183
|
const collateralAddress = market.collateralAddress.toLowerCase()
|
|
186
|
-
|
|
184
|
+
|
|
187
185
|
const collateralAssetMeta = lenderData[collateralAddress].asset
|
|
188
|
-
|
|
186
|
+
|
|
189
187
|
// loan asset deposits
|
|
190
188
|
const loanDepositNumber = parseRawAmount(
|
|
191
189
|
deposits.toString(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Lender } from '@1delta/lender-registry'
|
|
2
2
|
import { BaseYields, RewardsMap } from '../aave-v3-type/types'
|
|
3
|
+
import { isMorphoType } from '../../utils'
|
|
3
4
|
|
|
4
5
|
export type SerializedBigNumber = string
|
|
5
6
|
export type SerializedNumber = string
|
|
@@ -11,17 +12,20 @@ export interface LenderUserQuery {
|
|
|
11
12
|
account: string
|
|
12
13
|
/** custom parameters for fetching e.g. multi-market lenders */
|
|
13
14
|
params?: any[]
|
|
15
|
+
/** custom parameters for spceifying assets */
|
|
16
|
+
assets?: any[]
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
|
|
17
19
|
/** Filter all morphos into one for querying */
|
|
18
20
|
export function organizeUserQueries(queries: LenderUserQuery[]) {
|
|
19
|
-
const morphos = queries.filter((q) => q.lender
|
|
20
|
-
|
|
21
|
+
const morphos = queries.filter((q) => isMorphoType(q.lender))
|
|
22
|
+
if (morphos.length === 0) return queries
|
|
23
|
+
const nonMorphos = queries.filter((q) => !isMorphoType(q.lender))
|
|
21
24
|
const morphosCollapsed = {
|
|
22
25
|
lender: Lender.MORPHO_BLUE,
|
|
23
26
|
account: queries[0].account,
|
|
24
27
|
params: morphos.map((p) => p.lender),
|
|
28
|
+
assets: undefined
|
|
25
29
|
}
|
|
26
30
|
return [...nonMorphos, morphosCollapsed]
|
|
27
31
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -34,8 +34,6 @@ export function isMorphoType(lender: string) {
|
|
|
34
34
|
return lender?.startsWith('MORPHO_BLUE')
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
const SWAYLEND_KEY = 'SWAYLEND'
|
|
38
|
-
|
|
39
37
|
export function isAaveV3Type(lender: string) {
|
|
40
38
|
return AAVE_V3_LENDERS.includes(lender as any)
|
|
41
39
|
}
|
|
@@ -56,10 +54,6 @@ export function isAaveType(lender: string) {
|
|
|
56
54
|
return [...AAVE_V3_LENDERS, ...AAVE_V2_LENDERS].includes(lender as any)
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
export function isSwaylend(lender: string) {
|
|
60
|
-
return lender?.startsWith(SWAYLEND_KEY)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
57
|
export const getLendersForChain = (c: string) => {
|
|
64
58
|
let lenders: string[] = []
|
|
65
59
|
// aaves
|
|
@@ -7,8 +7,9 @@ import { getEvmClient } from '@1delta/providers'
|
|
|
7
7
|
import { Chain } from '@1delta/chain-registry'
|
|
8
8
|
import { prettyPrint } from './utils'
|
|
9
9
|
import { TestDataMainnet } from './dataMainnet'
|
|
10
|
+
import { fetchLenderMetaFromDirAndInitialize } from '../src/lending'
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
const queries = {
|
|
12
13
|
'1': [
|
|
13
14
|
{
|
|
14
15
|
account: '0xbadA9c382165b31419F4CC0eDf0Fa84f80A3C8E5',
|
|
@@ -83,17 +84,15 @@ describe(
|
|
|
83
84
|
it.only(
|
|
84
85
|
'should fetch user data for Morpho on Base',
|
|
85
86
|
async () => {
|
|
86
|
-
|
|
87
|
-
const { userData } = await getUserData([Chain.ETHEREUM_MAINNET])
|
|
87
|
+
await fetchLenderMetaFromDirAndInitialize()
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
const { userData } = await getUserData([Chain.ETHEREUM_MAINNET])
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
91
|
+
prettyPrint(userData)
|
|
92
|
+
|
|
93
|
+
// Basic validation
|
|
94
|
+
expect(userData).toBeDefined()
|
|
95
|
+
expect(typeof userData).toBe('object')
|
|
97
96
|
},
|
|
98
97
|
{ timeout: 30000 },
|
|
99
98
|
)
|
|
@@ -3,39 +3,44 @@ import {
|
|
|
3
3
|
getLenderUserDataResult,
|
|
4
4
|
convertLenderUserDataResult,
|
|
5
5
|
} from '../src/lending/user-data/fetchUserData'
|
|
6
|
-
import { getEvmClient } from '@1delta/providers'
|
|
6
|
+
import { getEvmClient, getEvmClientWithCustomRpcs } from '@1delta/providers'
|
|
7
7
|
import { Chain } from '@1delta/chain-registry'
|
|
8
8
|
import { Lender } from '@1delta/lender-registry'
|
|
9
9
|
import { LenderUserQuery } from '../src/lending/user-data/types'
|
|
10
10
|
import { prettyPrint } from './utils'
|
|
11
|
+
import { fetchLenderMetaFromDirAndInitialize } from '../src/lending'
|
|
11
12
|
|
|
12
13
|
// random user with ETH
|
|
13
14
|
const TEST_ADDRESS = '0xbadA9c382165b31419F4CC0eDf0Fa84f80A3C8E5'
|
|
14
|
-
let prices
|
|
15
|
+
let prices, pricesHist
|
|
15
16
|
|
|
16
17
|
async function getUserData(chainId: Chain, publicData: any) {
|
|
17
18
|
// Define user queries
|
|
18
19
|
const queries: LenderUserQuery[] = Object.keys(publicData.data).map((m) => ({
|
|
19
20
|
lender: m,
|
|
20
21
|
account: TEST_ADDRESS.toLowerCase(),
|
|
22
|
+
assets: Object.keys(publicData.data[m].data), // map the assets to query
|
|
21
23
|
// params: lenders,
|
|
22
24
|
}))
|
|
23
25
|
|
|
24
|
-
// console.log("queries", queries)
|
|
26
|
+
// console.log("queries", queries)
|
|
25
27
|
|
|
26
28
|
// Fetch raw user data
|
|
27
29
|
const rawUserData = await getLenderUserDataResult(
|
|
28
30
|
chainId,
|
|
29
31
|
queries,
|
|
30
|
-
|
|
32
|
+
getEvmClientWithCustomRpcs,
|
|
31
33
|
)
|
|
34
|
+
|
|
35
|
+
// console.log('rawUserData', rawUserData)
|
|
36
|
+
|
|
32
37
|
// Convert raw data to structured format
|
|
33
38
|
const userData = convertLenderUserDataResult(
|
|
34
39
|
chainId,
|
|
35
40
|
queries,
|
|
36
41
|
rawUserData,
|
|
37
42
|
prices as any,
|
|
38
|
-
|
|
43
|
+
pricesHist as any,
|
|
39
44
|
{ [chainId]: publicData },
|
|
40
45
|
)
|
|
41
46
|
|
|
@@ -48,28 +53,21 @@ describe(
|
|
|
48
53
|
it(
|
|
49
54
|
'should fetch user data for Morpho on KATANA',
|
|
50
55
|
async () => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
await fetchLenderMetaFromDirAndInitialize()
|
|
57
|
+
const chainId = Chain.ETHEREUM_MAINNET
|
|
58
|
+
const all = await fetch(
|
|
59
|
+
`https://margin-data.1delta.io/lending-multi?chains=${chainId}`,
|
|
60
|
+
).then((a) => a.json())
|
|
61
|
+
prices = all.prices
|
|
62
|
+
pricesHist = all.pricesHist
|
|
63
|
+
const publicData = all.data[chainId]
|
|
64
|
+
const { userData } = await getUserData(chainId, publicData)
|
|
60
65
|
|
|
61
|
-
|
|
62
|
-
userData[
|
|
63
|
-
'MORPHO_BLUE_C4E18EB6D0E9B0FA90A15BC0A98190CBF3D5BA763AF410346F5174B014CEFD8D'
|
|
64
|
-
],
|
|
65
|
-
)
|
|
66
|
+
prettyPrint(userData)
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
} catch (error) {
|
|
71
|
-
console.log('Error fetching Morpho KATANA data:', error)
|
|
72
|
-
}
|
|
68
|
+
// Basic validation
|
|
69
|
+
expect(userData).toBeDefined()
|
|
70
|
+
expect(typeof userData).toBe('object')
|
|
73
71
|
},
|
|
74
72
|
{ timeout: 30000 },
|
|
75
73
|
)
|