@1delta/margin-fetcher 0.0.31 → 0.0.33
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/abis/oracle/UniV3.d.ts +50 -0
- package/dist/abis/oracle/UniV3.d.ts.map +1 -0
- package/dist/abis/oracle/UniV3.js +63 -0
- package/dist/assets/index.d.ts +3 -8
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +12 -30
- package/dist/assets/liquidityThresholds.d.ts.map +1 -1
- package/dist/assets/liquidityThresholds.js +3 -3
- package/dist/flash-liquidity/assets.d.ts.map +1 -1
- package/dist/flash-liquidity/assets.js +22 -13
- package/dist/flash-liquidity/fetchLiquidity.d.ts +2 -2
- package/dist/flash-liquidity/fetchLiquidity.d.ts.map +1 -1
- package/dist/flash-liquidity/fetchLiquidity.js +11 -10
- package/dist/flash-liquidity/utils.d.ts +3 -2
- package/dist/flash-liquidity/utils.d.ts.map +1 -1
- package/dist/flash-liquidity/utils.js +5 -5
- package/dist/lending/aave-v2-type/misc.d.ts +1 -1
- package/dist/lending/aave-v2-type/misc.d.ts.map +1 -1
- package/dist/lending/aave-v2-type/misc.js +7 -3
- package/dist/lending/aave-v2-type/publicCallBuild.d.ts +1 -1
- package/dist/lending/aave-v2-type/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/aave-v2-type/publicCallBuild.js +11 -11
- package/dist/lending/aave-v2-type/publicCallParse.d.ts +1 -1
- package/dist/lending/aave-v2-type/publicCallParse.d.ts.map +1 -1
- package/dist/lending/aave-v2-type/publicCallParse.js +5 -5
- package/dist/lending/aave-v3-type/publicCallBuild.d.ts +1 -1
- package/dist/lending/aave-v3-type/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/aave-v3-type/publicCallBuild.js +1 -1
- package/dist/lending/aave-v3-type/publicCallParse.d.ts +1 -1
- package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -1
- package/dist/lending/aave-v3-type/publicCallParse.js +5 -14
- package/dist/lending/addresses/aave.js +1 -1
- package/dist/lending/addresses/aaveV2.js +1 -1
- package/dist/lending/addresses/aurelius.js +1 -1
- package/dist/lending/addresses/compoundV3.d.ts +1 -1
- package/dist/lending/addresses/compoundV3.d.ts.map +1 -1
- package/dist/lending/addresses/compoundV3.js +5 -4
- package/dist/lending/addresses/contracts.d.ts +1 -1
- package/dist/lending/addresses/contracts.d.ts.map +1 -1
- package/dist/lending/addresses/contracts.js +1 -1
- package/dist/lending/addresses/hana.js +1 -1
- package/dist/lending/addresses/init.js +1 -1
- package/dist/lending/addresses/lendle.js +1 -1
- package/dist/lending/addresses/meridian.js +1 -1
- package/dist/lending/addresses/takotako.js +1 -1
- package/dist/lending/compound-v3/publicCallBuild.d.ts +1 -1
- package/dist/lending/compound-v3/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/compound-v3/publicCallParse.d.ts +1 -1
- package/dist/lending/compound-v3/publicCallParse.d.ts.map +1 -1
- package/dist/lending/compound-v3/publicCallParse.js +3 -9
- package/dist/lending/fetchLender.d.ts +1 -1
- package/dist/lending/fetchLender.d.ts.map +1 -1
- package/dist/lending/fetchLender.js +1 -1
- package/dist/lending/fetchLenderAll.d.ts +1 -1
- package/dist/lending/fetchLenderAll.d.ts.map +1 -1
- package/dist/lending/fetchLenderAll.js +1 -1
- package/dist/lending/fetchLenderExt.d.ts +1 -1
- package/dist/lending/fetchLenderExt.d.ts.map +1 -1
- package/dist/lending/index.d.ts +1 -0
- package/dist/lending/index.d.ts.map +1 -1
- package/dist/lending/index.js +1 -0
- package/dist/lending/init/publicCallBuild.d.ts +1 -1
- package/dist/lending/init/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/init/publicCallParse.d.ts +4 -4
- package/dist/lending/init/publicCallParse.d.ts.map +1 -1
- package/dist/lending/init/publicCallParse.js +7 -7
- package/dist/lending/meta/index.d.ts +19 -0
- package/dist/lending/meta/index.d.ts.map +1 -0
- package/dist/lending/meta/index.js +83 -0
- package/dist/lending/morpho/publicCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallBuild.js +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts +2 -2
- package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v2-type/userCallParse.js +44 -38
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParse.js +5 -5
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts +2 -2
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.d.ts.map +1 -1
- package/dist/lending/user-data/aave-v3-type/userCallParseYldr.js +15 -15
- package/dist/lending/user-data/abis.d.ts +1 -1
- package/dist/lending/user-data/abis.d.ts.map +1 -1
- 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/userCallParse.d.ts +1 -1
- package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/compound-v3/userCallParse.js +4 -4
- package/dist/lending/user-data/init/userCallBuild.d.ts +2 -2
- package/dist/lending/user-data/init/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/init/userCallBuild.js +3 -3
- package/dist/lending/user-data/init/userCallParse.d.ts +1 -1
- package/dist/lending/user-data/init/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/init/userCallParse.js +4 -4
- package/dist/lending/user-data/morpho/userCallBuild.d.ts +1 -1
- package/dist/lending/user-data/morpho/userCallBuild.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/userCallBuild.js +6 -4
- package/dist/lending/user-data/morpho/userCallParse.d.ts +1 -1
- package/dist/lending/user-data/morpho/userCallParse.d.ts.map +1 -1
- package/dist/lending/user-data/morpho/userCallParse.js +5 -5
- package/dist/lending/user-data/types.js +1 -1
- package/dist/lending-pairs/computeLendingPairs.d.ts.map +1 -1
- package/dist/lending-pairs/computeLendingPairs.js +6 -6
- package/dist/prices/defillama/index.d.ts.map +1 -1
- package/dist/prices/defillama/index.js +21 -0
- package/dist/prices/main-prices/addresses/api3.js +1 -1
- package/dist/prices/main-prices/addresses/chainlink.js +1 -1
- package/dist/prices/main-prices/fetchOracleData.d.ts +6 -0
- package/dist/prices/main-prices/fetchOracleData.d.ts.map +1 -1
- package/dist/prices/main-prices/fetchOracleData.js +80 -20
- package/dist/types/index.d.ts +8 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/utils/constants.js +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +29 -26
- package/dist/utils/parsing.d.ts +1 -1
- package/dist/utils/parsing.d.ts.map +1 -1
- package/dist/utils/parsing.js +9 -8
- package/dist/yields/index.d.ts.map +1 -1
- package/dist/yields/index.js +7 -3
- package/package.json +2 -2
- package/src/abis/oracle/UniV3.ts +63 -0
- package/src/assets/index.ts +26 -66
- package/src/assets/liquidityThresholds.ts +55 -43
- package/src/flash-liquidity/assets.ts +68 -44
- package/src/flash-liquidity/fetchLiquidity.ts +13 -14
- package/src/flash-liquidity/utils.ts +22 -16
- package/src/lending/aave-v2-type/misc.ts +7 -3
- package/src/lending/aave-v2-type/publicCallBuild.ts +28 -17
- package/src/lending/aave-v2-type/publicCallParse.ts +5 -5
- package/src/lending/aave-v3-type/publicCallBuild.ts +1 -1
- package/src/lending/aave-v3-type/publicCallParse.ts +4 -14
- package/src/lending/addresses/aave.ts +1 -1
- package/src/lending/addresses/aaveV2.ts +1 -1
- package/src/lending/addresses/aurelius.ts +1 -1
- package/src/lending/addresses/compoundV3.ts +5 -12
- package/src/lending/addresses/contracts.ts +1 -1
- package/src/lending/addresses/hana.ts +1 -1
- package/src/lending/addresses/init.ts +1 -1
- package/src/lending/addresses/lendle.ts +1 -1
- package/src/lending/addresses/meridian.ts +1 -1
- package/src/lending/addresses/takotako.ts +1 -1
- package/src/lending/compound-v3/publicCallBuild.ts +1 -1
- package/src/lending/compound-v3/publicCallParse.ts +3 -10
- package/src/lending/fetchLender.ts +1 -1
- package/src/lending/fetchLenderAll.ts +1 -1
- package/src/lending/fetchLenderExt.ts +1 -1
- package/src/lending/index.ts +1 -0
- package/src/lending/init/publicCallBuild.ts +1 -1
- package/src/lending/init/publicCallParse.ts +64 -48
- package/src/lending/meta/index.ts +124 -0
- package/src/lending/morpho/publicCallBuild.ts +0 -1
- package/src/lending/user-data/aave-v2-type/userCallBuild.ts +1 -1
- package/src/lending/user-data/aave-v2-type/userCallParse.ts +181 -122
- package/src/lending/user-data/aave-v3-type/userCallBuild.ts +1 -1
- package/src/lending/user-data/aave-v3-type/userCallParse.ts +7 -8
- package/src/lending/user-data/aave-v3-type/userCallParseYldr.ts +37 -34
- package/src/lending/user-data/abis.ts +1 -1
- package/src/lending/user-data/compound-v3/userCallBuild.ts +1 -1
- package/src/lending/user-data/compound-v3/userCallParse.ts +4 -6
- package/src/lending/user-data/fetchUserData.ts +1 -1
- package/src/lending/user-data/init/userCallBuild.ts +11 -7
- package/src/lending/user-data/init/userCallParse.ts +5 -5
- package/src/lending/user-data/morpho/userCallBuild.ts +7 -4
- package/src/lending/user-data/morpho/userCallParse.ts +8 -5
- package/src/lending/user-data/types.ts +1 -1
- package/src/lending-pairs/computeLendingPairs.ts +6 -12
- package/src/prices/defillama/index.ts +24 -0
- package/src/prices/main-prices/addresses/api3.ts +1 -1
- package/src/prices/main-prices/addresses/chainlink.ts +1 -1
- package/src/prices/main-prices/fetchOracleData.ts +118 -20
- package/src/types/index.ts +10 -4
- package/src/utils/constants.ts +1 -1
- package/src/utils/index.ts +48 -39
- package/src/utils/parsing.ts +37 -35
- package/src/yields/index.ts +7 -3
- package/test/flashLiquidity.test.ts +6 -6
- package/test/index.test.ts +1 -1
- package/test/lenderData.test.ts +10 -11
- package/test/lenderDataBasic.test.ts +1 -1
- package/test/mainPriceMB.test.ts +1 -1
- package/test/mainPrices.test.ts +16 -15
- package/test/morpho.test.ts +1 -1
- package/test/morphoPrice.test.ts +1 -1
- package/test/userData.test.ts +2 -1
- package/test/userDataAave.test.ts +1 -1
- package/test/userDataAaveMainnet.test.ts +1 -1
- package/test/userDataAll.test.ts +2 -1
- package/test/userDataCompound.test.ts +2 -1
- package/test/userDataMorpho.test.ts +2 -1
- package/test/userDataMorphoEthereum.test.ts +2 -1
- package/test/userDataMorphoKatana.test.ts +2 -1
- package/test/utils.ts +11 -1
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts +0 -11
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.d.ts.map +0 -1
- package/dist/lending/user-data/morpho/userCallParseNoDeploy.js +0 -112
- package/dist/prices/main-prices/addresses/aaveOracles.d.ts +0 -300
- package/dist/prices/main-prices/addresses/aaveOracles.d.ts.map +0 -1
- package/dist/prices/main-prices/addresses/aaveOracles.js +0 -299
- package/dist/prices/main-prices/addresses/morpho.d.ts +0 -11
- package/dist/prices/main-prices/addresses/morpho.d.ts.map +0 -1
- package/dist/prices/main-prices/addresses/morpho.js +0 -2554
- package/src/lending/user-data/morpho/userCallParseNoDeploy.ts +0 -168
- package/src/prices/main-prices/addresses/aaveOracles.ts +0 -299
- package/src/prices/main-prices/addresses/morpho.ts +0 -2563
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Lender } from '@1delta/
|
|
1
|
+
import { Lender } from '@1delta/lender-registry';
|
|
2
2
|
import { MorphoUserReserveResponse } from '../types';
|
|
3
3
|
export declare const getMorphoUserDataConverterWithlens: (lender: Lender, chainId: string, account: string, markets: string[], prices: {
|
|
4
4
|
[asset: string]: number;
|
|
@@ -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,
|
|
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,CA6FP,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toGenericPriceKey, toOracleKey } from '../../../assets';
|
|
2
2
|
import { createBaseTypeUserState } from '../utils';
|
|
3
3
|
import { parseRawAmount } from '../../../utils/parsing';
|
|
4
4
|
import { decodePackedDataset } from './decoder';
|
|
@@ -69,7 +69,7 @@ export const getMorphoUserDataConverterWithlens = (lender, chainId, account, mar
|
|
|
69
69
|
const markeId = markets[mapMarketToChunk(balanceData.index, i)];
|
|
70
70
|
marketsHandled.push(markeId);
|
|
71
71
|
const market = lenderData[markeId]?.params?.market;
|
|
72
|
-
const { dataForMarket, addedDebt, addedDeposits } = createMorphoEntryFromMarketWithLens(balanceData, chainId, market, prices, pricesHist);
|
|
72
|
+
const { dataForMarket, addedDebt, addedDeposits } = createMorphoEntryFromMarketWithLens(balanceData, chainId, market, lenderData[markeId].data, prices, pricesHist);
|
|
73
73
|
const payload = {
|
|
74
74
|
chainId,
|
|
75
75
|
account,
|
|
@@ -110,9 +110,9 @@ export const getMorphoUserDataConverterWithlens = (lender, chainId, account, mar
|
|
|
110
110
|
expectedNumberOfCalls,
|
|
111
111
|
];
|
|
112
112
|
};
|
|
113
|
-
function createMorphoEntryFromMarketWithLens(balanceInfo, chainId, market, prices, pricesHist) {
|
|
113
|
+
function createMorphoEntryFromMarketWithLens(balanceInfo, chainId, market, lenderData, prices, pricesHist) {
|
|
114
114
|
const loanAddress = market.loanAddress.toLowerCase();
|
|
115
|
-
const loanMeta =
|
|
115
|
+
const loanMeta = lenderData[loanAddress].asset;
|
|
116
116
|
const loanKey = toOracleKey(loanMeta?.assetGroup) ?? toGenericPriceKey(loanAddress, chainId);
|
|
117
117
|
// prices
|
|
118
118
|
const priceLoan = prices[loanKey] ?? 1;
|
|
@@ -129,7 +129,7 @@ function createMorphoEntryFromMarketWithLens(balanceInfo, chainId, market, price
|
|
|
129
129
|
addedDebt: 0,
|
|
130
130
|
};
|
|
131
131
|
const collateralAddress = market.collateralAddress.toLowerCase();
|
|
132
|
-
const collateralAssetMeta =
|
|
132
|
+
const collateralAssetMeta = lenderData[collateralAddress].asset;
|
|
133
133
|
// loan asset deposits
|
|
134
134
|
const loanDepositNumber = parseRawAmount(deposits.toString(), market.loanDecimals ?? loanMeta?.decimals ?? 18);
|
|
135
135
|
// collateral amount
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Lender } from '@1delta/
|
|
1
|
+
import { Lender } from '@1delta/lender-registry';
|
|
2
2
|
/** Filter all morphos into one for querying */
|
|
3
3
|
export function organizeUserQueries(queries) {
|
|
4
4
|
const morphos = queries.filter((q) => q.lender?.startsWith('MORPHO_BLUE'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeLendingPairs.d.ts","sourceRoot":"","sources":["../../src/lending-pairs/computeLendingPairs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAe,UAAU,EAAY,MAAM,UAAU,CAAA;AAG5D,UAAU,eAAe;IACvB,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IAEd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAElB,sBAAsB;IACtB,QAAQ,EAAE,eAAe,CAAA;IACzB,SAAS,EAAE,eAAe,CAAA;IAG1B,cAAc,EAAE,MAAM,CAAA;IAEtB,eAAe,EAAE,MAAM,CAAA;IAEvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IAGnB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAG9B,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAmDD,kDAAkD;AAClD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC/B,UAAU,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAClC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"computeLendingPairs.d.ts","sourceRoot":"","sources":["../../src/lending-pairs/computeLendingPairs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAe,UAAU,EAAY,MAAM,UAAU,CAAA;AAG5D,UAAU,eAAe;IACvB,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IAEd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAElB,sBAAsB;IACtB,QAAQ,EAAE,eAAe,CAAA;IACzB,SAAS,EAAE,eAAe,CAAA;IAG1B,cAAc,EAAE,MAAM,CAAA;IAEtB,eAAe,EAAE,MAAM,CAAA;IAEvB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IAGnB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAG9B,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAmDD,kDAAkD;AAClD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC/B,UAAU,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAClC,WAAW,EAAE,CAsIf;AAkFD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE;;;;;EAyB/C;AAMD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,EAAE,GACnB,WAAW,EAAE,CAwFf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toGenericPriceKey, toOracleKey } from '../assets';
|
|
2
2
|
import { getLiquidityThresholds, meetsLiquidityThresholdsLong, meetsLiquidityThresholdsShort, } from '../assets/liquidityThresholds';
|
|
3
3
|
import { isAaveV3Type, isInit } from '../utils';
|
|
4
4
|
const isEMode = (longData, shortData) => Boolean(longData.eMode)
|
|
@@ -92,8 +92,8 @@ export function generateLendingPairs(lenderData, prices, histPrices) {
|
|
|
92
92
|
}
|
|
93
93
|
const depositApr = long.depositRate + long.stakingYield;
|
|
94
94
|
const borrowApr = short.variableBorrowRate + short.stakingYield;
|
|
95
|
-
const [assetGroupLong, keyLong] = getPriceKey(long.
|
|
96
|
-
const [assetGroupShort, keyShort] = getPriceKey(short.
|
|
95
|
+
const [assetGroupLong, keyLong] = getPriceKey(long.asset);
|
|
96
|
+
const [assetGroupShort, keyShort] = getPriceKey(short.asset);
|
|
97
97
|
const priceLong = prices[keyLong] ?? 0;
|
|
98
98
|
const priceShort = prices[keyShort] ?? 0;
|
|
99
99
|
const price24hLong = histPrices[keyLong] ?? priceLong;
|
|
@@ -141,11 +141,11 @@ export function generateLendingPairs(lenderData, prices, histPrices) {
|
|
|
141
141
|
}
|
|
142
142
|
return pairs;
|
|
143
143
|
}
|
|
144
|
-
function getPriceKey(asset
|
|
145
|
-
const assetGroup =
|
|
144
|
+
function getPriceKey(asset) {
|
|
145
|
+
const assetGroup = asset?.assetGroup;
|
|
146
146
|
return [
|
|
147
147
|
assetGroup,
|
|
148
|
-
toOracleKey(assetGroup) ?? toGenericPriceKey(asset, chainId),
|
|
148
|
+
toOracleKey(assetGroup) ?? toGenericPriceKey(asset.address, asset.chainId),
|
|
149
149
|
];
|
|
150
150
|
}
|
|
151
151
|
const MAX_ENTRIES = 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/prices/defillama/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/prices/defillama/index.ts"],"names":[],"mappings":"AAoRA,wBAAsB,kBAAkB,iBA4CvC;AAED,wBAAsB,sBAAsB,iBAgD3C"}
|
|
@@ -119,6 +119,12 @@ const kHYPE = '0xfd739d4e423301ce9385c1fb8850539d657c296d';
|
|
|
119
119
|
const prefixSolana = 'solana:';
|
|
120
120
|
const JITOSOL = 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn';
|
|
121
121
|
const SOL = 'So11111111111111111111111111111111111111112';
|
|
122
|
+
const prefixXdc = 'xdc:';
|
|
123
|
+
const WXDC = '0x951857744785e80e2de051c32ee7b25f9c458c42';
|
|
124
|
+
const prefixBera = 'berachain:';
|
|
125
|
+
const WBERA = '0x6969696969696969696969696969696969696969';
|
|
126
|
+
const prefixCronos = 'cronos:';
|
|
127
|
+
const WCRO = '0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23';
|
|
122
128
|
// const prefixKaia = 'kaia:'
|
|
123
129
|
// const WKAIA = '0x19aac5f612f524b754ca7e7c41cbfa2e981a4432'
|
|
124
130
|
const datasAvalanche = [WAVAX, SAVAX].map((d) => prefixAvalanche + d).join(',');
|
|
@@ -136,6 +142,9 @@ const datasHyperEvm = [WYPE, WSTHYPE, kHYPE]
|
|
|
136
142
|
.map((d) => prefixHyperEVM + d)
|
|
137
143
|
.join(',');
|
|
138
144
|
const datasSolana = [JITOSOL, SOL].map((d) => prefixSolana + d).join(',');
|
|
145
|
+
const datasBera = [WBERA].map((d) => prefixBera + d).join(',');
|
|
146
|
+
const datasXdc = [WXDC].map((d) => prefixXdc + d).join(',');
|
|
147
|
+
const datasCrpnos = [WCRO].map((d) => prefixCronos + d).join(',');
|
|
139
148
|
// const datasKaia = [WKAIA].map((d) => prefixKaia + d).join(',')
|
|
140
149
|
const URL = `https://coins.llama.fi/prices/current/${[
|
|
141
150
|
datasEthereum,
|
|
@@ -151,6 +160,9 @@ const URL = `https://coins.llama.fi/prices/current/${[
|
|
|
151
160
|
datasSonic,
|
|
152
161
|
datasPolygon,
|
|
153
162
|
datasSolana,
|
|
163
|
+
datasBera,
|
|
164
|
+
datasXdc,
|
|
165
|
+
datasCrpnos,
|
|
154
166
|
].join(',')}?searchWidth=4h`;
|
|
155
167
|
const URL_HIST = (ref) => `https://coins.llama.fi/prices/historical/${ref}/${[
|
|
156
168
|
datasEthereum,
|
|
@@ -237,6 +249,9 @@ const SYMBOL_MAP = {
|
|
|
237
249
|
woeth: 'Wrapped OETH::WOETH',
|
|
238
250
|
jitosol: 'Jito Staked SOL::JitoSOL',
|
|
239
251
|
sol: 'SOL',
|
|
252
|
+
wcro: 'WCRO',
|
|
253
|
+
wxdc: 'WXDC',
|
|
254
|
+
wbera: 'WBERA',
|
|
240
255
|
};
|
|
241
256
|
export async function fetchDefillamaData() {
|
|
242
257
|
try {
|
|
@@ -253,6 +268,9 @@ export async function fetchDefillamaData() {
|
|
|
253
268
|
prices['WSOL'] = prices['SOL'];
|
|
254
269
|
prices['AVAX'] = prices['WAVAX'];
|
|
255
270
|
prices['METIS'] = prices['WMETIS'];
|
|
271
|
+
prices['CRO'] = prices['WCRO'];
|
|
272
|
+
prices['XDC'] = prices['WXDC'];
|
|
273
|
+
prices['BERA'] = prices['WBERA'];
|
|
256
274
|
// prices['WKAIA'] = prices['KAIA']
|
|
257
275
|
prices['USDBC'] = prices['USDC'];
|
|
258
276
|
prices['BTCB'] = prices['WBTC'];
|
|
@@ -290,6 +308,9 @@ export async function fetchDefillamaHistData() {
|
|
|
290
308
|
histPrices['AVAX'] = histPrices['WAVAX'];
|
|
291
309
|
histPrices['METIS'] = histPrices['WMETIS'];
|
|
292
310
|
histPrices['HYPE'] = histPrices['WHYPE'];
|
|
311
|
+
histPrices['BERA'] = histPrices['WBERA'];
|
|
312
|
+
histPrices['CRO'] = histPrices['WCRO'];
|
|
313
|
+
histPrices['XDC'] = histPrices['WXDC'];
|
|
293
314
|
// histPrices['WKAIA'] = histPrices['KAIA']
|
|
294
315
|
histPrices['LUSD'] = histPrices['USDT'];
|
|
295
316
|
histPrices['XDAI'] = histPrices['DAI'];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TokenList } from '../../types';
|
|
1
2
|
export declare const formatAavePrice: (price: string, isV2?: boolean) => number;
|
|
2
3
|
export declare const formatMorphoPrice: (price: string, collateralDec: number, debtDec: number) => number;
|
|
3
4
|
interface OracleData {
|
|
@@ -8,6 +9,11 @@ interface OracleData {
|
|
|
8
9
|
*/
|
|
9
10
|
export declare const fetchMainPrices: (chainIds: string[], rpcOverrides?: {
|
|
10
11
|
[chainId: string]: string;
|
|
12
|
+
}, lists?: {
|
|
13
|
+
[chainId: string]: {
|
|
14
|
+
list: TokenList;
|
|
15
|
+
};
|
|
11
16
|
}) => Promise<OracleData>;
|
|
17
|
+
export declare function getV3PriceFromSqrt(sqrtPrice: bigint, t0d: number, t1d: number): number;
|
|
12
18
|
export {};
|
|
13
19
|
//# sourceMappingURL=fetchOracleData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchOracleData.d.ts","sourceRoot":"","sources":["../../../src/prices/main-prices/fetchOracleData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchOracleData.d.ts","sourceRoot":"","sources":["../../../src/prices/main-prices/fetchOracleData.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAIvC,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,cAAY,KAAG,MAY7D,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,SAAS,MAAM,KACd,MAYF,CAAA;AAOD,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB;AAID;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAAE,EAClB,eAAe;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC5C,QAAO;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAA;CAAO,KACrD,OAAO,CAAC,UAAU,CAqMpB,CAAA;AAuDD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,UAiBZ"}
|
|
@@ -4,18 +4,19 @@ import { ChainLinkAggregatorAbi } from '../../abis/oracle/ChainLinkAggregator';
|
|
|
4
4
|
import { Api3OracleAbi } from '../../abis/oracle/Api3Oracle';
|
|
5
5
|
import { RWADynamicOracleAbi } from '../../abis/oracle/RWADynamicOracle';
|
|
6
6
|
import { api3OracleAddresses } from './addresses/api3';
|
|
7
|
-
import { AAVE_V2_LENDERS
|
|
7
|
+
import { AAVE_V2_LENDERS } from '@1delta/lender-registry';
|
|
8
|
+
import { Chain } from '@1delta/chain-registry';
|
|
8
9
|
import { formatEther, formatUnits } from 'viem';
|
|
9
10
|
import { getAaveAssets } from '../../assets';
|
|
10
11
|
import { chainlinkOracles, getChainLinkKeys, ChainlinkAggregatorIndexes, } from './addresses/chainlink';
|
|
11
12
|
import { fetchDefillamaData } from '../defillama';
|
|
12
13
|
import { fetchPendlePrices } from '../pendle';
|
|
13
|
-
import {
|
|
14
|
-
import { AAVES_PER_CHAIN } from '../../utils';
|
|
14
|
+
import { getAavesForChain } from '../../utils';
|
|
15
15
|
import { parseRawAmount } from '../../utils/parsing';
|
|
16
16
|
import { ProxyOracleAbi } from '../../abis/oracle/ProxyOracle';
|
|
17
|
-
import { MrophoOracles } from './addresses/morpho';
|
|
18
17
|
import { multicallRetry } from '@1delta/providers';
|
|
18
|
+
import { UniswapV3Abi } from '../../abis/oracle/UniV3';
|
|
19
|
+
import { aaveOracles, morphoOracles } from '@1delta/data-sdk';
|
|
19
20
|
export const formatAavePrice = (price, isV2 = false) => {
|
|
20
21
|
try {
|
|
21
22
|
return Number(formatEther(BigInt(price ?? '0') *
|
|
@@ -43,9 +44,10 @@ const RWA_DYNAMIC_ORACLE = '0xA96abbe61AfEdEB0D14a20440Ae7100D9aB4882f';
|
|
|
43
44
|
/**
|
|
44
45
|
* Fetches Aave and uniswap V2 oracle data
|
|
45
46
|
*/
|
|
46
|
-
export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
47
|
+
export const fetchMainPrices = async (chainIds, rpcOverrides, lists = {}) => {
|
|
48
|
+
const aaves = getAavesForChain();
|
|
47
49
|
const multicallPromises = chainIds.map(async (chainId) => {
|
|
48
|
-
const aaveForks =
|
|
50
|
+
const aaveForks = aaves?.[chainId];
|
|
49
51
|
const reservesToQuery = aaveForks?.map((a) => ({
|
|
50
52
|
fork: a,
|
|
51
53
|
assets: getAaveAssets(chainId, a),
|
|
@@ -58,23 +60,26 @@ export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
|
58
60
|
queries.push({
|
|
59
61
|
assets: newAssets,
|
|
60
62
|
// @ts-ignore
|
|
61
|
-
oracle:
|
|
63
|
+
oracle: aaveOracles()?.[e.fork]?.[chainId],
|
|
62
64
|
fork: e.fork,
|
|
63
65
|
});
|
|
64
66
|
newAssets.forEach((a) => handled.add(a));
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
|
-
const
|
|
69
|
+
const morphoOraclesObtained = morphoOracles();
|
|
70
|
+
const morphoQueries = (morphoOraclesObtained[chainId] ?? []).filter((a) => !handled.has(a.collateralAsset) || !handled.has(a.loanAsset));
|
|
68
71
|
const morphoCalls = getMorphoCalls(morphoQueries);
|
|
69
72
|
const aaveCalls = getAaveCalls(queries);
|
|
70
73
|
const [chainlinkCalls, chainlinkNames] = getChainLinkCalls(chainId);
|
|
71
74
|
const uniswapCalls = getUniswapV2Calls(chainId);
|
|
75
|
+
const uniswapV3Calls = getUniswapV3Calls(chainId);
|
|
72
76
|
const [api3Calls, api3Names] = getApi3Calls(chainId);
|
|
73
77
|
const [rwaCalls, rwaNames] = getRWADynamicOracleCalls(chainId);
|
|
74
78
|
const allCalls = [
|
|
75
79
|
...chainlinkCalls,
|
|
76
80
|
...aaveCalls,
|
|
77
81
|
...uniswapCalls,
|
|
82
|
+
...uniswapV3Calls,
|
|
78
83
|
...api3Calls,
|
|
79
84
|
...rwaCalls,
|
|
80
85
|
...morphoCalls,
|
|
@@ -82,6 +87,7 @@ export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
|
82
87
|
const abis = [
|
|
83
88
|
...ChainLinkAggregatorAbi,
|
|
84
89
|
...UniswapV2PairAbi,
|
|
90
|
+
...UniswapV3Abi,
|
|
85
91
|
...AaveOracleAbi,
|
|
86
92
|
...Api3OracleAbi,
|
|
87
93
|
...RWADynamicOracleAbi,
|
|
@@ -98,6 +104,7 @@ export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
|
98
104
|
rwa: { calls: rwaCalls, names: rwaNames },
|
|
99
105
|
morpho: { queries: morphoQueries },
|
|
100
106
|
uniswapCalls,
|
|
107
|
+
uniswapV3Calls,
|
|
101
108
|
aaveCalls,
|
|
102
109
|
},
|
|
103
110
|
};
|
|
@@ -109,17 +116,20 @@ export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
|
109
116
|
]);
|
|
110
117
|
let allPrices = {};
|
|
111
118
|
// Parse all except morpho first
|
|
112
|
-
for (const { chainId, result, meta: { queries, chainlink, api3, rwa, uniswapCalls, aaveCalls }, } of chainResults) {
|
|
119
|
+
for (const { chainId, result, meta: { queries, chainlink, api3, rwa, uniswapCalls, uniswapV3Calls, aaveCalls, }, } of chainResults) {
|
|
113
120
|
let offset = 0;
|
|
114
121
|
const chainlinkSlice = result.slice(offset, offset + chainlink.calls.length);
|
|
115
122
|
const chainlinkData = parseChainLinkResults(chainId, chainlinkSlice, chainlink.names);
|
|
116
123
|
offset += chainlink.calls.length;
|
|
117
124
|
const aaveSlice = result.slice(offset, offset + aaveCalls.length);
|
|
118
|
-
const aaveData = parseAaveResults(chainId, aaveSlice, queries);
|
|
125
|
+
const aaveData = parseAaveResults(chainId, aaveSlice, queries, lists[chainId]?.list);
|
|
119
126
|
offset += aaveCalls.length;
|
|
120
127
|
const uniswapSlice = result.slice(offset, offset + uniswapCalls.length);
|
|
121
128
|
const uniswapData = parseUniswapV2results(uniswapSlice, chainId);
|
|
122
129
|
offset += uniswapCalls.length;
|
|
130
|
+
const uniswapV3Slice = result.slice(offset, offset + uniswapV3Calls.length);
|
|
131
|
+
const uniswapV3Data = parseUniswapV3results(uniswapV3Slice, chainId);
|
|
132
|
+
offset += uniswapV3Calls.length;
|
|
123
133
|
const api3Slice = result.slice(offset, offset + api3.calls.length);
|
|
124
134
|
const api3Data = parseApi3Results(chainId, api3Slice, api3.names);
|
|
125
135
|
offset += api3.calls.length;
|
|
@@ -131,20 +141,22 @@ export const fetchMainPrices = async (chainIds, rpcOverrides) => {
|
|
|
131
141
|
...chainlinkData,
|
|
132
142
|
...aaveData,
|
|
133
143
|
...uniswapData,
|
|
144
|
+
...uniswapV3Data,
|
|
134
145
|
...api3Data,
|
|
135
146
|
...rwaData,
|
|
136
147
|
};
|
|
137
148
|
}
|
|
138
149
|
allPrices = { ...allPrices, ...otherResults[0], ...otherResults[1] };
|
|
139
150
|
// Parse morpho data (needs allPrices)
|
|
140
|
-
for (const { chainId, result, meta: { morpho, chainlink, aaveCalls, uniswapCalls, api3, rwa }, } of chainResults) {
|
|
151
|
+
for (const { chainId, result, meta: { morpho, chainlink, aaveCalls, uniswapCalls, uniswapV3Calls, api3, rwa, }, } of chainResults) {
|
|
141
152
|
const morphoOffset = chainlink.calls.length +
|
|
142
153
|
aaveCalls.length +
|
|
143
154
|
uniswapCalls.length +
|
|
155
|
+
uniswapV3Calls.length +
|
|
144
156
|
api3.calls.length +
|
|
145
157
|
rwa.calls.length;
|
|
146
158
|
const morphoResult = result.slice(morphoOffset);
|
|
147
|
-
const morphoData = parseMorphoResults(chainId, morphoResult, morpho.queries, allPrices);
|
|
159
|
+
const morphoData = parseMorphoResults(chainId, morphoResult, morpho.queries, allPrices, lists[chainId]?.list);
|
|
148
160
|
allPrices = {
|
|
149
161
|
...allPrices,
|
|
150
162
|
...morphoData,
|
|
@@ -185,6 +197,55 @@ const getUniswapV2Calls = (chainId) => {
|
|
|
185
197
|
return [];
|
|
186
198
|
}
|
|
187
199
|
};
|
|
200
|
+
/**
|
|
201
|
+
* Gets the calls foir the uniswap pools
|
|
202
|
+
* @param chainId network id
|
|
203
|
+
* @returns array of calls
|
|
204
|
+
*/
|
|
205
|
+
const getUniswapV3Calls = (chainId) => {
|
|
206
|
+
switch (chainId) {
|
|
207
|
+
case Chain.HEMI_NETWORK:
|
|
208
|
+
return [
|
|
209
|
+
{
|
|
210
|
+
// HMEU/USDC pool
|
|
211
|
+
address: '0xe2f1012fa5e8709ed38888c15615207fac278b57',
|
|
212
|
+
name: 'slot0',
|
|
213
|
+
params: [],
|
|
214
|
+
},
|
|
215
|
+
];
|
|
216
|
+
default:
|
|
217
|
+
return [];
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
const BASE_MULTI = 10n ** 18n;
|
|
221
|
+
export function getV3PriceFromSqrt(sqrtPrice, t0d, t1d) {
|
|
222
|
+
const scalarNumerator = 10n ** BigInt(t0d);
|
|
223
|
+
const scalarDenominator = 10n ** BigInt(t1d);
|
|
224
|
+
const sqrtP = BigInt(sqrtPrice);
|
|
225
|
+
const inputNumerator = sqrtP * sqrtP;
|
|
226
|
+
const inputDenominator = 2n ** 192n;
|
|
227
|
+
const adjustedForDecimalsNumerator = scalarDenominator * inputDenominator;
|
|
228
|
+
const adjustedForDecimalsDenominator = scalarNumerator * inputNumerator;
|
|
229
|
+
const price0to1 = Number(formatUnits((adjustedForDecimalsDenominator * BASE_MULTI) /
|
|
230
|
+
adjustedForDecimalsNumerator, 18)); // in token1 / token0
|
|
231
|
+
return price0to1;
|
|
232
|
+
}
|
|
233
|
+
const parseUniswapV3results = (data, chainId) => {
|
|
234
|
+
switch (chainId) {
|
|
235
|
+
case Chain.HEMI_NETWORK: {
|
|
236
|
+
let uniswapData = {};
|
|
237
|
+
if (data.length > 0) {
|
|
238
|
+
const state = data[0];
|
|
239
|
+
const [sqrtPriceX96, , , , , ,] = state;
|
|
240
|
+
const price = getV3PriceFromSqrt(sqrtPriceX96, 18, 6);
|
|
241
|
+
uniswapData['Hemi::HEMI'] = price;
|
|
242
|
+
}
|
|
243
|
+
return uniswapData;
|
|
244
|
+
}
|
|
245
|
+
default:
|
|
246
|
+
return {};
|
|
247
|
+
}
|
|
248
|
+
};
|
|
188
249
|
/**
|
|
189
250
|
* Create calldata for aave oracles
|
|
190
251
|
* @param chainId network
|
|
@@ -281,6 +342,8 @@ function lowDecimalOracle(chainId, fork) {
|
|
|
281
342
|
if (chainId === Chain.AVALANCHE_C_CHAIN || chainId === Chain.MODE) {
|
|
282
343
|
return false;
|
|
283
344
|
}
|
|
345
|
+
if (chainId === Chain.XDC_NETWORK)
|
|
346
|
+
return true;
|
|
284
347
|
// otherwise, it depends on whether it is aave V3
|
|
285
348
|
return AAVE_V2_LENDERS.includes(fork);
|
|
286
349
|
}
|
|
@@ -291,31 +354,28 @@ function lowDecimalOracle(chainId, fork) {
|
|
|
291
354
|
* @param assetName asset names (aligned with the originall addresses called)
|
|
292
355
|
* @returns price mapping asset->number
|
|
293
356
|
*/
|
|
294
|
-
const parseAaveResults = (chainId, data, queries) => {
|
|
357
|
+
const parseAaveResults = (chainId, data, queries, list = {}) => {
|
|
295
358
|
let prices = {};
|
|
296
359
|
data.forEach((d, i) => {
|
|
297
360
|
if (d !== '0x') {
|
|
298
361
|
const details = queries[i];
|
|
299
362
|
details.assets.forEach((a, j) => {
|
|
300
|
-
const oracleId =
|
|
301
|
-
ASSET_META[chainId]?.[a]?.symbol ??
|
|
302
|
-
chainId + '-' + a;
|
|
363
|
+
const oracleId = list[a]?.assetGroup ?? chainId + '-' + a;
|
|
303
364
|
prices[oracleId] = formatAavePrice(d[j].toString(), lowDecimalOracle(chainId, details.fork));
|
|
304
365
|
});
|
|
305
366
|
}
|
|
306
367
|
});
|
|
307
368
|
return prices;
|
|
308
369
|
};
|
|
309
|
-
const parseMorphoResults = (chainId, data, queries, donePrices = {}) => {
|
|
370
|
+
const parseMorphoResults = (chainId, data, queries, donePrices = {}, list = {}) => {
|
|
310
371
|
let prices = {};
|
|
311
372
|
data.forEach((d, i) => {
|
|
312
373
|
const details = queries[i];
|
|
313
374
|
const { loanAsset, collateralAsset, loanAssetDecimals, collateralAssetDecimals, } = details;
|
|
314
|
-
const oracleId =
|
|
375
|
+
const oracleId = list[loanAsset]?.assetGroup ?? chainId + '-' + loanAsset;
|
|
315
376
|
// get price from map or just computed ones
|
|
316
377
|
const debtPrice = donePrices[oracleId] ?? prices[oracleId];
|
|
317
|
-
const oracleIdCollateral =
|
|
318
|
-
chainId + '-' + collateralAsset;
|
|
378
|
+
const oracleIdCollateral = list[collateralAsset]?.assetGroup ?? chainId + '-' + collateralAsset;
|
|
319
379
|
// get price from map or just computed ones
|
|
320
380
|
const collateralPrice = donePrices[oracleIdCollateral] ?? prices[oracleIdCollateral];
|
|
321
381
|
const priceDebtToCollateral = formatMorphoPrice(d.toString(), loanAssetDecimals, collateralAssetDecimals);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './apiReturnType';
|
|
2
2
|
export interface ParsedResponse {
|
|
3
3
|
price: number;
|
|
4
4
|
time: number;
|
|
@@ -38,5 +38,11 @@ export declare interface GeneralCall {
|
|
|
38
38
|
name: string;
|
|
39
39
|
params?: any[];
|
|
40
40
|
}
|
|
41
|
-
export
|
|
41
|
+
export type TokenList = {
|
|
42
|
+
[address: string]: {
|
|
43
|
+
decimals: number;
|
|
44
|
+
assetGroup?: string;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export * from './providers';
|
|
42
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,oBAAY,0BAA0B;IACpC,OAAO,IAAI;IACX,MAAM,IAAA;IACN,SAAS,IAAA;IACT,SAAS,IAAA;IACT,eAAe,IAAA;CAChB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAA;AACpE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,oBAAoB,GAAG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,oBAAY,0BAA0B;IACpC,OAAO,IAAI;IACX,MAAM,IAAA;IACN,SAAS,IAAA;IACT,SAAS,IAAA;IACT,eAAe,IAAA;CAChB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAA;AACpE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;CAC1D,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,SAAS,CAAA;IAC1B,aAAa,EAAE,oBAAoB,CAAA;IACnC,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AACD,MAAM,CAAC,OAAO,WAAW,WAAW;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;CACf;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7D,CAAA;AAED,cAAc,aAAa,CAAA"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './apiReturnType';
|
|
2
2
|
export var ChainlinkAggregatorIndexes;
|
|
3
3
|
(function (ChainlinkAggregatorIndexes) {
|
|
4
4
|
ChainlinkAggregatorIndexes[ChainlinkAggregatorIndexes["roundId"] = 0] = "roundId";
|
|
@@ -7,4 +7,4 @@ export var ChainlinkAggregatorIndexes;
|
|
|
7
7
|
ChainlinkAggregatorIndexes[ChainlinkAggregatorIndexes["updatedAt"] = 3] = "updatedAt";
|
|
8
8
|
ChainlinkAggregatorIndexes[ChainlinkAggregatorIndexes["answeredInRound"] = 4] = "answeredInRound";
|
|
9
9
|
})(ChainlinkAggregatorIndexes || (ChainlinkAggregatorIndexes = {}));
|
|
10
|
-
export * from
|
|
10
|
+
export * from './providers';
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Chain } from '@1delta/
|
|
1
|
+
import { Chain } from '@1delta/chain-registry';
|
|
2
2
|
// Uniswap interface Multicalls
|
|
3
3
|
const CELO_MULTICALL_ADDRESS = '0x633987602DE5C4F337e3DbF265303A1080324204';
|
|
4
4
|
const BNB_MULTICALL_ADDRESS = '0x963Df249eD09c358A4819E39d9Cd5736c3087184';
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Lender } from
|
|
1
|
+
import { Lender } from '@1delta/lender-registry';
|
|
2
2
|
export declare function isCompoundV3(lender: string): boolean;
|
|
3
3
|
export declare function isCompoundV3Type(lender: string): boolean;
|
|
4
4
|
export declare function isInit(lender: string): lender is Lender.INIT;
|
|
@@ -13,7 +13,7 @@ export declare const getLendersForChain: (c: string) => string[];
|
|
|
13
13
|
/** Filter lenders by protocol list */
|
|
14
14
|
export declare const filterLendersByProtocol: (allLenders: string[], protocolList?: string[]) => string[];
|
|
15
15
|
/** All aave protocols per chain */
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const getAavesForChain: () => {
|
|
17
17
|
[c: string]: string[];
|
|
18
18
|
};
|
|
19
19
|
export declare const getComposerAddress: (chainId: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;AAID,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,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
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { uniq } from
|
|
3
|
-
import { COMPOSERS } from
|
|
4
|
-
import { zeroAddress } from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export function
|
|
8
|
-
|
|
1
|
+
import { AAVE_V2_LENDERS, AAVE_V3_LENDERS, Lender, AAVE_V32_LENDERS, } from '@1delta/lender-registry';
|
|
2
|
+
import { uniq } from 'lodash';
|
|
3
|
+
import { COMPOSERS } from './constants';
|
|
4
|
+
import { zeroAddress } from 'viem';
|
|
5
|
+
import { aavePools, aaveReserves, compoundV3Pools, compoundV3Reserves, initConfig, morphoPools, } from '@1delta/data-sdk';
|
|
6
|
+
const COMPOUND_V3_KEY = 'COMPOUND_V3';
|
|
7
|
+
export function isCompoundV3(lender) {
|
|
8
|
+
return lender?.startsWith(COMPOUND_V3_KEY);
|
|
9
|
+
}
|
|
10
|
+
export function isCompoundV3Type(lender) {
|
|
11
|
+
return lender?.startsWith(COMPOUND_V3_KEY);
|
|
12
|
+
}
|
|
13
|
+
export function isInit(lender) {
|
|
14
|
+
return lender === Lender.INIT;
|
|
15
|
+
}
|
|
9
16
|
export function isMorphoType(lender) {
|
|
10
|
-
return lender?.startsWith(
|
|
17
|
+
return lender?.startsWith('MORPHO_BLUE');
|
|
11
18
|
}
|
|
12
|
-
const SWAYLEND_KEY =
|
|
19
|
+
const SWAYLEND_KEY = 'SWAYLEND';
|
|
13
20
|
export function isAaveV3Type(lender) {
|
|
14
21
|
return AAVE_V3_LENDERS.includes(lender);
|
|
15
22
|
}
|
|
@@ -31,25 +38,25 @@ export function isSwaylend(lender) {
|
|
|
31
38
|
export const getLendersForChain = (c) => {
|
|
32
39
|
let lenders = [];
|
|
33
40
|
// aaves
|
|
34
|
-
Object.entries(
|
|
41
|
+
Object.entries(aavePools() ?? {}).forEach(([l, data]) => {
|
|
35
42
|
const chains = Object.keys(data);
|
|
36
43
|
if (chains.includes(c))
|
|
37
44
|
lenders.push(l);
|
|
38
45
|
});
|
|
39
46
|
// compound V3s
|
|
40
|
-
Object.entries(
|
|
47
|
+
Object.entries(compoundV3Pools() ?? {}).forEach(([l, data]) => {
|
|
41
48
|
const chains = Object.keys(data);
|
|
42
49
|
if (chains.includes(c))
|
|
43
50
|
lenders.push(l);
|
|
44
51
|
});
|
|
45
52
|
// init
|
|
46
|
-
Object.entries(
|
|
53
|
+
Object.entries(initConfig() ?? {}).forEach(([l, data]) => {
|
|
47
54
|
const chains = Object.keys(data);
|
|
48
55
|
if (chains.includes(c))
|
|
49
56
|
lenders.push(l);
|
|
50
57
|
});
|
|
51
58
|
// morpho
|
|
52
|
-
Object.entries(
|
|
59
|
+
Object.entries(morphoPools() ?? {}).forEach(([l, data]) => {
|
|
53
60
|
const chains = Object.keys(data);
|
|
54
61
|
if (chains.includes(c))
|
|
55
62
|
lenders.push(l);
|
|
@@ -64,11 +71,13 @@ export const filterLendersByProtocol = (allLenders, protocolList) => {
|
|
|
64
71
|
}
|
|
65
72
|
const hasMorpho = protocolList.includes(Lender.MORPHO_BLUE);
|
|
66
73
|
// Filter lenders based on protocol list
|
|
67
|
-
return allLenders.filter((lender) => protocolList.includes(lender) ||
|
|
74
|
+
return allLenders.filter((lender) => protocolList.includes(lender) ||
|
|
75
|
+
(hasMorpho && lender?.startsWith('MORPHO_BLUE')));
|
|
68
76
|
};
|
|
69
|
-
|
|
77
|
+
/** All aave protocols per chain */
|
|
78
|
+
export const getAavesForChain = () => {
|
|
70
79
|
let lenders = {};
|
|
71
|
-
Object.entries(
|
|
80
|
+
Object.entries(aavePools() ?? {}).forEach(([l, data]) => {
|
|
72
81
|
Object.entries(data).forEach(([chain, data]) => {
|
|
73
82
|
if (!lenders[chain])
|
|
74
83
|
lenders[chain] = [];
|
|
@@ -77,8 +86,6 @@ const getAavesForChain = () => {
|
|
|
77
86
|
});
|
|
78
87
|
return lenders;
|
|
79
88
|
};
|
|
80
|
-
/** All aave protocols per chain */
|
|
81
|
-
export const AAVES_PER_CHAIN = getAavesForChain();
|
|
82
89
|
export const getComposerAddress = (chainId) => {
|
|
83
90
|
return COMPOSERS[chainId] ?? zeroAddress;
|
|
84
91
|
};
|
|
@@ -86,15 +93,11 @@ export const getLenderAssets = (chainId, lendingProtocol = Lender.AAVE_V3) => {
|
|
|
86
93
|
if (!chainId)
|
|
87
94
|
return [];
|
|
88
95
|
if (isAaveType(lendingProtocol))
|
|
89
|
-
return
|
|
96
|
+
return aaveReserves()?.[lendingProtocol]?.[chainId] ?? [];
|
|
90
97
|
if (isCompoundV3(lendingProtocol))
|
|
91
|
-
return
|
|
92
|
-
if (isInit(lendingProtocol))
|
|
93
|
-
return INIT_STYLE_RESERVE_ASSETS[lendingProtocol]?.[chainId] ?? [];
|
|
94
|
-
if (isSwaylend(lendingProtocol))
|
|
95
|
-
return SWAYLEND_RESERVE_ASSETS[lendingProtocol]?.[chainId ?? 0] ?? [];
|
|
98
|
+
return compoundV3Reserves()?.[lendingProtocol]?.[chainId] ?? [];
|
|
96
99
|
return [];
|
|
97
100
|
};
|
|
98
101
|
export function isMultiMarket(lender) {
|
|
99
|
-
return lender?.startsWith(
|
|
102
|
+
return lender?.startsWith('MORPHO_BLUE');
|
|
100
103
|
}
|
package/dist/utils/parsing.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../src/utils/parsing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../src/utils/parsing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIhD,eAAO,MAAM,GAAG,QAAQ,CAAA;AAExB,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,iBAAa,KAAG,MAO/D,CAAA;AAED,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,EAAE,IAAA;CACH;AAYD,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAEnC,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAI1C,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,GAAG,MAAM,KAAG,MAG7D,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,GAAG,MAAM,EACT,SAAS,MAAM,EACf,eAAiC,KAChC,MAgBF,CAAA;AACD,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,WAGrE,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAI,eAAe,MAAM,GAAG,MAAM,WAI9D,CAAA"}
|