@1delta/margin-fetcher 0.0.190 → 0.0.191
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/index.js +70 -6
- package/dist/index.js.map +1 -1
- package/dist/lending/public-data/lista/getMarketsFromChain.d.ts.map +1 -1
- package/dist/lending/public-data/morpho/utils/evmParser.d.ts +2 -0
- package/dist/lending/public-data/morpho/utils/evmParser.d.ts.map +1 -1
- package/dist/lending/public-data/morpho/utils/mathLib.d.ts +10 -0
- package/dist/lending/public-data/morpho/utils/mathLib.d.ts.map +1 -1
- package/dist/types/lender/morpho-types.d.ts +4 -0
- package/dist/types/lender/morpho-types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -10870,10 +10870,10 @@ var MORPHO_LENS = {
|
|
|
10870
10870
|
[Chain.KATANA]: "0xCe434378adacC51d54312c872113D687Ac19B516",
|
|
10871
10871
|
[Chain.HYPEREVM]: "0x6Bc6aCB905c1216B0119C87Bf9E178ce298310FA",
|
|
10872
10872
|
[Chain.SONEIUM]: "0x4b5458BB47dCBC1a41B31b41e1a8773dE312BE9d",
|
|
10873
|
-
[Chain.ETHEREUM_MAINNET]: "
|
|
10873
|
+
[Chain.ETHEREUM_MAINNET]: "0xFc107f469A92c0de7B3105B802584CD6c7D710C2",
|
|
10874
10874
|
[Chain.PLASMA_MAINNET]: "0xcB6Eb8df68153cebF60E1872273Ef52075a5C297",
|
|
10875
10875
|
[Chain.BERACHAIN]: "0x7a59ddbB76521E8982Fa3A08598C9a83b14A6C07",
|
|
10876
|
-
[Chain.BNB_SMART_CHAIN_MAINNET]: "
|
|
10876
|
+
[Chain.BNB_SMART_CHAIN_MAINNET]: "0x79f4061BF049c5c6CAC6bfe2415c2460815F4ac7",
|
|
10877
10877
|
// lista lens
|
|
10878
10878
|
[Chain.UNICHAIN]: "0xA453ba397c61B0c292EA3959A858821145B2707F",
|
|
10879
10879
|
[Chain.SEI_NETWORK]: "0xcB6Eb8df68153cebF60E1872273Ef52075a5C297",
|
|
@@ -12341,7 +12341,7 @@ var MORPHO_RECORD_SIZE = 4 * FIELD_SIZES.addr + // loanToken, collateralToken, o
|
|
|
12341
12341
|
5 * FIELD_SIZES.u128 + // totals (4) + lastUpdate
|
|
12342
12342
|
1 * FIELD_SIZES.u128;
|
|
12343
12343
|
var LISTA_RECORD_SIZE = 7 * FIELD_SIZES.addr + // loanToken, collateralToken, oracle, irm, loanProvider, collateralProvider, broker
|
|
12344
|
-
|
|
12344
|
+
10 * FIELD_SIZES.u128 + // lltv, minLoan, totals (4), lastUpdate, fee, rateCap, rateFloor
|
|
12345
12345
|
3 * FIELD_SIZES.u256 + // priceLoanToken, priceCollateralToken, rateAtTarget
|
|
12346
12346
|
1;
|
|
12347
12347
|
function decodeMarkets(input) {
|
|
@@ -12410,11 +12410,13 @@ function decodeMorphoMarkets(bytes) {
|
|
|
12410
12410
|
return markets;
|
|
12411
12411
|
}
|
|
12412
12412
|
function decodeListaMarkets(bytes) {
|
|
12413
|
+
console.log("bytes", bytes);
|
|
12413
12414
|
if (bytes.length % LISTA_RECORD_SIZE !== 0) {
|
|
12414
12415
|
throw new Error(
|
|
12415
12416
|
`Invalid data length ${bytes.length}; not a multiple of ${LISTA_RECORD_SIZE} bytes per record`
|
|
12416
12417
|
);
|
|
12417
12418
|
}
|
|
12419
|
+
console.log("bytes", bytes);
|
|
12418
12420
|
const markets = [];
|
|
12419
12421
|
for (let i = 0; i < bytes.length; i += LISTA_RECORD_SIZE) {
|
|
12420
12422
|
let o = i;
|
|
@@ -12448,6 +12450,10 @@ function decodeListaMarkets(bytes) {
|
|
|
12448
12450
|
o += FIELD_SIZES.u128;
|
|
12449
12451
|
const fee = readUintBE(bytes, o, FIELD_SIZES.u128);
|
|
12450
12452
|
o += FIELD_SIZES.u128;
|
|
12453
|
+
const rateCap = readUintBE(bytes, o, FIELD_SIZES.u128);
|
|
12454
|
+
o += FIELD_SIZES.u128;
|
|
12455
|
+
const rateFloor = readUintBE(bytes, o, FIELD_SIZES.u128);
|
|
12456
|
+
o += FIELD_SIZES.u128;
|
|
12451
12457
|
const hasWhitelist = bytes[o] === 1;
|
|
12452
12458
|
o += 1;
|
|
12453
12459
|
const loanProvider = readAddress(bytes, o, FIELD_SIZES.addr);
|
|
@@ -12467,6 +12473,8 @@ function decodeListaMarkets(bytes) {
|
|
|
12467
12473
|
loanTokenPrice,
|
|
12468
12474
|
collateralTokenPrice,
|
|
12469
12475
|
minLoan,
|
|
12476
|
+
rateCap,
|
|
12477
|
+
rateFloor,
|
|
12470
12478
|
hasWhitelist,
|
|
12471
12479
|
loanProvider,
|
|
12472
12480
|
collateralProvider,
|
|
@@ -12664,6 +12672,56 @@ var MathLib;
|
|
|
12664
12672
|
return borrowRate ? rateToApy(borrowRate) : 0n;
|
|
12665
12673
|
}
|
|
12666
12674
|
MathLib2.getBorrowApy = getBorrowApy;
|
|
12675
|
+
function getListaBorrowApy(rateAtTarget, utilization, _timestamp = Math.floor(Date.now() / 1e3), _lastUpdate, rateCap, rateFloor) {
|
|
12676
|
+
if (rateAtTarget == null || rateAtTarget === 0n) return 0n;
|
|
12677
|
+
const elapsed = BigInt(_timestamp) - BigInt(_lastUpdate);
|
|
12678
|
+
if (elapsed < 0n) return 0n;
|
|
12679
|
+
const { endBorrowRate } = _getListaBorrowRate(
|
|
12680
|
+
utilization,
|
|
12681
|
+
rateAtTarget,
|
|
12682
|
+
elapsed,
|
|
12683
|
+
rateCap,
|
|
12684
|
+
rateFloor
|
|
12685
|
+
);
|
|
12686
|
+
return rateToApy(endBorrowRate);
|
|
12687
|
+
}
|
|
12688
|
+
MathLib2.getListaBorrowApy = getListaBorrowApy;
|
|
12689
|
+
function _getListaBorrowRate(startUtilization, startRateAtTarget, elapsed, rateCap, rateFloor) {
|
|
12690
|
+
const errNormFactor = startUtilization > TARGET_UTILIZATION ? MathLib2.WAD - TARGET_UTILIZATION : TARGET_UTILIZATION;
|
|
12691
|
+
const err = MathLib2.wDivDown(
|
|
12692
|
+
startUtilization - TARGET_UTILIZATION,
|
|
12693
|
+
errNormFactor
|
|
12694
|
+
);
|
|
12695
|
+
let endRateAtTarget;
|
|
12696
|
+
if (startRateAtTarget === 0n) {
|
|
12697
|
+
endRateAtTarget = INITIAL_RATE_AT_TARGET;
|
|
12698
|
+
} else {
|
|
12699
|
+
const speed = MathLib2.wMulDown(ADJUSTMENT_SPEED, err);
|
|
12700
|
+
const linearAdaptation = speed * elapsed;
|
|
12701
|
+
if (linearAdaptation === 0n) {
|
|
12702
|
+
endRateAtTarget = startRateAtTarget;
|
|
12703
|
+
} else {
|
|
12704
|
+
const _newRateAtTarget = (la) => MathLib2.min(
|
|
12705
|
+
MathLib2.max(
|
|
12706
|
+
MathLib2.wMulDown(startRateAtTarget, wExp(la)),
|
|
12707
|
+
MIN_RATE_AT_TARGET
|
|
12708
|
+
),
|
|
12709
|
+
MAX_RATE_AT_TARGET
|
|
12710
|
+
);
|
|
12711
|
+
endRateAtTarget = _newRateAtTarget(linearAdaptation);
|
|
12712
|
+
}
|
|
12713
|
+
}
|
|
12714
|
+
const cap = rateCap && rateCap > 0n ? rateCap : DEFAULT_RATE_CAP;
|
|
12715
|
+
if (endRateAtTarget > cap / 4n) endRateAtTarget = cap / 4n;
|
|
12716
|
+
const coeff = err < 0n ? MathLib2.WAD - MathLib2.wDivDown(MathLib2.WAD, CURVE_STEEPNESS) : CURVE_STEEPNESS - MathLib2.WAD;
|
|
12717
|
+
const _curve = (rat) => MathLib2.wMulDown(MathLib2.wMulDown(coeff, err) + MathLib2.WAD, rat);
|
|
12718
|
+
let endBorrowRate = _curve(endRateAtTarget);
|
|
12719
|
+
if (endBorrowRate > cap) endBorrowRate = cap;
|
|
12720
|
+
if (rateFloor && rateFloor > 0n && endBorrowRate < rateFloor)
|
|
12721
|
+
endBorrowRate = rateFloor;
|
|
12722
|
+
return { endBorrowRate, endRateAtTarget };
|
|
12723
|
+
}
|
|
12724
|
+
const DEFAULT_RATE_CAP = 634195839675291n;
|
|
12667
12725
|
const CURVE_STEEPNESS = 4000000000000000000n;
|
|
12668
12726
|
const TARGET_UTILIZATION = 900000000000000000n;
|
|
12669
12727
|
const INITIAL_RATE_AT_TARGET = 40000000000000000n / SECONDS_PER_YEAR3;
|
|
@@ -12753,6 +12811,8 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
|
|
|
12753
12811
|
loanToken,
|
|
12754
12812
|
collateralToken,
|
|
12755
12813
|
minLoan,
|
|
12814
|
+
rateCap,
|
|
12815
|
+
rateFloor,
|
|
12756
12816
|
broker,
|
|
12757
12817
|
loanProvider,
|
|
12758
12818
|
collateralProvider,
|
|
@@ -12793,11 +12853,13 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
|
|
|
12793
12853
|
let borrowApy = 0n;
|
|
12794
12854
|
let supplyApy = 0n;
|
|
12795
12855
|
try {
|
|
12796
|
-
borrowApy = MathLib.
|
|
12856
|
+
borrowApy = MathLib.getListaBorrowApy(
|
|
12797
12857
|
state.rateAtTarget,
|
|
12798
12858
|
utilization,
|
|
12799
12859
|
void 0,
|
|
12800
|
-
Number(state.lastUpdate)
|
|
12860
|
+
Number(state.lastUpdate),
|
|
12861
|
+
rateCap,
|
|
12862
|
+
rateFloor
|
|
12801
12863
|
);
|
|
12802
12864
|
supplyApy = MathLib.getSupplyApy(borrowApy, utilization, state.fee);
|
|
12803
12865
|
} catch {
|
|
@@ -12898,7 +12960,9 @@ function getListaMarketDataConverter(lender, chainId, prices, additionalYields =
|
|
|
12898
12960
|
collateralProvider,
|
|
12899
12961
|
hasWhitelist,
|
|
12900
12962
|
fee: state.fee.toString(),
|
|
12901
|
-
rateAtTarget: state.rateAtTarget.toString()
|
|
12963
|
+
rateAtTarget: state.rateAtTarget.toString(),
|
|
12964
|
+
rateCap: rateCap?.toString() ?? "0",
|
|
12965
|
+
rateFloor: rateFloor?.toString() ?? "0"
|
|
12902
12966
|
}
|
|
12903
12967
|
};
|
|
12904
12968
|
data[m].chainId = chainId;
|