@defisaver/positions-sdk 2.1.159-shifter-v2-dev → 2.1.160-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/aaveV2/index.js +0 -2
- package/cjs/constants/index.d.ts +1 -0
- package/cjs/constants/index.js +4 -1
- package/cjs/fluid/index.d.ts +0 -5
- package/cjs/fluid/index.js +1 -36
- package/cjs/helpers/aaveHelpers/index.js +0 -3
- package/cjs/helpers/aaveV4Helpers/index.js +0 -1
- package/cjs/helpers/compoundHelpers/index.js +0 -2
- package/cjs/helpers/curveUsdHelpers/index.js +0 -2
- package/cjs/helpers/fluidHelpers/index.js +0 -1
- package/cjs/helpers/liquityV2Helpers/index.js +0 -1
- package/cjs/helpers/llamaLendHelpers/index.js +0 -2
- package/cjs/helpers/makerHelpers/index.d.ts +1 -1
- package/cjs/helpers/makerHelpers/index.js +2 -2
- package/cjs/helpers/morphoBlueHelpers/index.js +3 -6
- package/cjs/helpers/morphoMidnightHelpers/index.js +0 -2
- package/cjs/helpers/sparkHelpers/index.js +0 -1
- package/cjs/liquity/index.js +1 -8
- package/cjs/maker/index.d.ts +2 -7
- package/cjs/maker/index.js +12 -32
- package/cjs/markets/index.d.ts +0 -1
- package/cjs/markets/index.js +1 -3
- package/cjs/portfolio/index.d.ts +1 -5
- package/cjs/portfolio/index.js +0 -272
- package/cjs/savings/morphoVaults/index.js +2 -2
- package/cjs/types/aave.d.ts +0 -2
- package/cjs/types/aaveV4.d.ts +0 -1
- package/cjs/types/compound.d.ts +0 -2
- package/cjs/types/fluid.d.ts +0 -1
- package/cjs/types/liquity.d.ts +0 -1
- package/cjs/types/liquityV2.d.ts +0 -2
- package/cjs/types/maker.d.ts +0 -1
- package/cjs/types/morphoBlue.d.ts +0 -2
- package/cjs/types/morphoMidnight.d.ts +0 -1
- package/cjs/types/portfolio.d.ts +10 -26
- package/cjs/types/spark.d.ts +0 -2
- package/esm/aaveV2/index.js +0 -2
- package/esm/constants/index.d.ts +1 -0
- package/esm/constants/index.js +3 -0
- package/esm/fluid/index.d.ts +0 -5
- package/esm/fluid/index.js +0 -33
- package/esm/helpers/aaveHelpers/index.js +0 -3
- package/esm/helpers/aaveV4Helpers/index.js +0 -1
- package/esm/helpers/compoundHelpers/index.js +0 -2
- package/esm/helpers/curveUsdHelpers/index.js +0 -2
- package/esm/helpers/fluidHelpers/index.js +0 -1
- package/esm/helpers/liquityV2Helpers/index.js +0 -1
- package/esm/helpers/llamaLendHelpers/index.js +0 -2
- package/esm/helpers/makerHelpers/index.d.ts +1 -1
- package/esm/helpers/makerHelpers/index.js +2 -2
- package/esm/helpers/morphoBlueHelpers/index.js +4 -7
- package/esm/helpers/morphoMidnightHelpers/index.js +0 -2
- package/esm/helpers/sparkHelpers/index.js +0 -1
- package/esm/liquity/index.js +1 -8
- package/esm/maker/index.d.ts +2 -7
- package/esm/maker/index.js +13 -31
- package/esm/markets/index.d.ts +0 -1
- package/esm/markets/index.js +0 -1
- package/esm/portfolio/index.d.ts +1 -5
- package/esm/portfolio/index.js +3 -274
- package/esm/savings/morphoVaults/index.js +2 -2
- package/esm/types/aave.d.ts +0 -2
- package/esm/types/aaveV4.d.ts +0 -1
- package/esm/types/compound.d.ts +0 -2
- package/esm/types/fluid.d.ts +0 -1
- package/esm/types/liquity.d.ts +0 -1
- package/esm/types/liquityV2.d.ts +0 -2
- package/esm/types/maker.d.ts +0 -1
- package/esm/types/morphoBlue.d.ts +0 -2
- package/esm/types/morphoMidnight.d.ts +0 -1
- package/esm/types/portfolio.d.ts +10 -26
- package/esm/types/spark.d.ts +0 -2
- package/package.json +1 -1
- package/src/aaveV2/index.ts +0 -2
- package/src/constants/index.ts +5 -1
- package/src/fluid/index.ts +0 -40
- package/src/helpers/aaveHelpers/index.ts +0 -3
- package/src/helpers/aaveV4Helpers/index.ts +0 -1
- package/src/helpers/compoundHelpers/index.ts +0 -2
- package/src/helpers/curveUsdHelpers/index.ts +0 -2
- package/src/helpers/fluidHelpers/index.ts +0 -1
- package/src/helpers/liquityV2Helpers/index.ts +0 -1
- package/src/helpers/llamaLendHelpers/index.ts +0 -2
- package/src/helpers/makerHelpers/index.ts +1 -2
- package/src/helpers/morphoBlueHelpers/index.ts +6 -7
- package/src/helpers/morphoMidnightHelpers/index.ts +0 -2
- package/src/helpers/sparkHelpers/index.ts +0 -1
- package/src/liquity/index.ts +1 -8
- package/src/maker/index.ts +29 -62
- package/src/markets/index.ts +1 -2
- package/src/portfolio/index.ts +2 -257
- package/src/savings/morphoVaults/index.ts +2 -3
- package/src/types/aave.ts +0 -3
- package/src/types/aaveV4.ts +0 -1
- package/src/types/compound.ts +0 -2
- package/src/types/fluid.ts +0 -1
- package/src/types/liquity.ts +0 -2
- package/src/types/liquityV2.ts +0 -2
- package/src/types/maker.ts +0 -2
- package/src/types/morphoBlue.ts +0 -2
- package/src/types/morphoMidnight.ts +0 -1
- package/src/types/portfolio.ts +12 -31
- package/src/types/spark.ts +0 -2
- package/cjs/markets/maker/index.d.ts +0 -1
- package/cjs/markets/maker/index.js +0 -13
- package/esm/markets/maker/index.d.ts +0 -1
- package/esm/markets/maker/index.js +0 -10
- package/src/markets/maker/index.ts +0 -10
package/cjs/portfolio/index.js
CHANGED
|
@@ -27,7 +27,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.getPortfolioData = getPortfolioData;
|
|
30
|
-
exports.getShifterPortfolioData = getShifterPortfolioData;
|
|
31
30
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
32
31
|
const common_1 = require("../types/common");
|
|
33
32
|
const markets_1 = require("../markets");
|
|
@@ -620,275 +619,4 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
|
|
|
620
619
|
};
|
|
621
620
|
});
|
|
622
621
|
}
|
|
623
|
-
function getShifterPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1) {
|
|
624
|
-
return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false) {
|
|
625
|
-
const isMainnet = network === common_1.NetworkNumber.Eth;
|
|
626
|
-
const isFluidSupported = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Plasma].includes(network);
|
|
627
|
-
const morphoMarkets = Object.values((0, markets_1.MorphoBlueMarkets)(network)).filter((market) => market.chainIds.includes(network));
|
|
628
|
-
const compoundV3Markets = Object.values((0, markets_1.CompoundMarkets)(network)).filter((market) => market.chainIds.includes(network) && market.value !== types_1.CompoundVersions.CompoundV2);
|
|
629
|
-
const sparkMarkets = Object.values((0, markets_1.SparkMarkets)(network)).filter((market) => market.chainIds.includes(network));
|
|
630
|
-
const aaveV3Markets = [types_1.AaveVersions.AaveV3, types_1.AaveVersions.AaveV3Lido, types_1.AaveVersions.AaveV3Etherfi].map((version) => (0, markets_1.AaveMarkets)(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
631
|
-
const aaveV2Markets = [types_1.AaveVersions.AaveV2].map((version) => (0, markets_1.AaveMarkets)(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
632
|
-
const compoundV2Markets = [types_1.CompoundVersions.CompoundV2].map((version) => (0, markets_1.CompoundMarkets)(network)[version]).filter((market) => market.chainIds.includes(network));
|
|
633
|
-
const crvUsdMarkets = Object.values((0, markets_1.CrvUsdMarkets)(network)).filter((market) => market.chainIds.includes(network));
|
|
634
|
-
const llamaLendMarkets = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb].includes(network) ? Object.values((0, markets_1.LlamaLendMarkets)(network)).filter((market) => market.chainIds.includes(network)) : [];
|
|
635
|
-
const liquityV2Markets = [common_1.NetworkNumber.Eth].includes(network) ? Object.values((0, markets_1.LiquityV2Markets)(network)) : [];
|
|
636
|
-
const aaveV4Spokes = Object.values((0, markets_1.AaveV4Spokes)(network)).filter((market) => market.chainIds.includes(network));
|
|
637
|
-
const args = [network, { batch: { multicall: { batchSize: isSim ? 2000 : 2500000 } } }];
|
|
638
|
-
const client = (0, viem_1.getViemProvider)(provider, ...args);
|
|
639
|
-
const defaultClient = (0, viem_1.getViemProvider)(defaultProvider, ...args);
|
|
640
|
-
const markets = {
|
|
641
|
-
morphoMarketsData: {},
|
|
642
|
-
morphoMidnightMarketsData: {}, // Morpho Midnight is not fetched for the shifter; key kept so the payload shape is stable
|
|
643
|
-
compoundV3MarketsData: {},
|
|
644
|
-
sparkMarketsData: {},
|
|
645
|
-
aaveV3MarketsData: {},
|
|
646
|
-
aaveV2MarketsData: {},
|
|
647
|
-
compoundV2MarketsData: {},
|
|
648
|
-
crvUsdMarketsData: {},
|
|
649
|
-
llamaLendMarketsData: {},
|
|
650
|
-
liquityV2MarketsData: {},
|
|
651
|
-
aaveV4SpokesData: {},
|
|
652
|
-
fluidMarketsData: {},
|
|
653
|
-
makerMarketsData: {},
|
|
654
|
-
};
|
|
655
|
-
const makerCdps = {};
|
|
656
|
-
const positions = {};
|
|
657
|
-
for (const address of addresses) {
|
|
658
|
-
positions[address.toLowerCase()] = {
|
|
659
|
-
aaveV3: {},
|
|
660
|
-
aaveV4: {},
|
|
661
|
-
morphoBlue: {},
|
|
662
|
-
morphoMidnight: {}, // not fetched for the shifter (see markets above)
|
|
663
|
-
compoundV3: {},
|
|
664
|
-
spark: {},
|
|
665
|
-
maker: {},
|
|
666
|
-
aaveV2: {},
|
|
667
|
-
compoundV2: {},
|
|
668
|
-
liquity: {},
|
|
669
|
-
crvUsd: {},
|
|
670
|
-
llamaLend: {},
|
|
671
|
-
fluid: {
|
|
672
|
-
error: '',
|
|
673
|
-
data: {},
|
|
674
|
-
},
|
|
675
|
-
};
|
|
676
|
-
}
|
|
677
|
-
yield Promise.allSettled([
|
|
678
|
-
// === MARKET DATA (needs to be fetched first) ===
|
|
679
|
-
...morphoMarkets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
680
|
-
markets.morphoMarketsData[market.value] = yield (0, morphoBlue_1._getMorphoBluePortfolioMarketData)(client, network, market);
|
|
681
|
-
})),
|
|
682
|
-
...compoundV3Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
683
|
-
markets.compoundV3MarketsData[market.value] = yield (0, compoundV3_1._getCompoundV3MarketsData)(client, network, market, defaultClient);
|
|
684
|
-
})),
|
|
685
|
-
...sparkMarkets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
686
|
-
markets.sparkMarketsData[market.value] = yield (0, spark_1._getSparkMarketsData)(client, network, market);
|
|
687
|
-
})),
|
|
688
|
-
...aaveV3Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
689
|
-
markets.aaveV3MarketsData[market.value] = yield (0, aaveV3_1._getAaveV3MarketData)(client, network, market);
|
|
690
|
-
})),
|
|
691
|
-
...aaveV4Spokes.map((spoke) => __awaiter(this, void 0, void 0, function* () {
|
|
692
|
-
markets.aaveV4SpokesData[spoke.value] = yield (0, aaveV4_1._getAaveV4SpokeData)(client, network, spoke);
|
|
693
|
-
})),
|
|
694
|
-
...aaveV2Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
695
|
-
markets.aaveV2MarketsData[market.value] = yield (0, aaveV2_1._getAaveV2MarketsData)(client, network, market);
|
|
696
|
-
})),
|
|
697
|
-
...compoundV2Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
698
|
-
markets.compoundV2MarketsData[market.value] = yield (0, compoundV2_1._getCompoundV2MarketsData)(client, network);
|
|
699
|
-
})),
|
|
700
|
-
...crvUsdMarkets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
701
|
-
markets.crvUsdMarketsData[market.value] = yield (0, curveUsd_1._getCurveUsdGlobalData)(client, network, market);
|
|
702
|
-
})),
|
|
703
|
-
...llamaLendMarkets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
704
|
-
markets.llamaLendMarketsData[market.value] = yield (0, llamaLend_1._getLlamaLendGlobalData)(client, network, market);
|
|
705
|
-
})),
|
|
706
|
-
...liquityV2Markets.map((market) => __awaiter(this, void 0, void 0, function* () {
|
|
707
|
-
markets.liquityV2MarketsData[market.value] = yield (0, liquityV2_1._getLiquityV2MarketData)(client, network, market);
|
|
708
|
-
})),
|
|
709
|
-
(() => __awaiter(this, void 0, void 0, function* () {
|
|
710
|
-
if (!isFluidSupported)
|
|
711
|
-
return;
|
|
712
|
-
try {
|
|
713
|
-
markets.fluidMarketsData = yield (0, fluid_1._getAllFluidMarketDataPortfolio)(client, network);
|
|
714
|
-
}
|
|
715
|
-
catch (error) {
|
|
716
|
-
console.error('Error fetching Fluid markets data:', error);
|
|
717
|
-
}
|
|
718
|
-
}))(),
|
|
719
|
-
(() => __awaiter(this, void 0, void 0, function* () {
|
|
720
|
-
if (!isMainnet)
|
|
721
|
-
return; // Maker CDPs are only available on mainnet
|
|
722
|
-
try {
|
|
723
|
-
markets.makerMarketsData = yield (0, maker_1._getMakerIlksData)(client, network, markets_1.MakerActiveIlks);
|
|
724
|
-
}
|
|
725
|
-
catch (error) {
|
|
726
|
-
console.error('Error fetching Maker ilks data:', error);
|
|
727
|
-
}
|
|
728
|
-
}))(),
|
|
729
|
-
// === INDEPENDENT USER DATA (doesn't depend on market data) ===
|
|
730
|
-
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
731
|
-
if (!isMainnet)
|
|
732
|
-
return; // Maker CDPs are only available on mainnet
|
|
733
|
-
const makerCdp = yield (0, maker_1._getUserCdps)(client, network, address);
|
|
734
|
-
makerCdps[address.toLowerCase()] = makerCdp;
|
|
735
|
-
})),
|
|
736
|
-
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
737
|
-
try {
|
|
738
|
-
if (!isFluidSupported)
|
|
739
|
-
return; // Fluid is not available on Optimism
|
|
740
|
-
const userPositions = (yield (0, fluid_1._getUserPositionsPortfolio)(client, network, address));
|
|
741
|
-
for (const position of userPositions) {
|
|
742
|
-
if (position.userData && new decimal_js_1.default(position.userData.suppliedUsd).gt(0)) {
|
|
743
|
-
positions[address.toLowerCase()].fluid.data[position.userData.nftId] = position.userData;
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
catch (error) {
|
|
748
|
-
console.error(`Error fetching Fluid positions for address ${address}:`, error);
|
|
749
|
-
positions[address.toLowerCase()].fluid = {
|
|
750
|
-
error: `Error fetching Fluid positions for address ${address}`,
|
|
751
|
-
data: {},
|
|
752
|
-
};
|
|
753
|
-
}
|
|
754
|
-
})),
|
|
755
|
-
]);
|
|
756
|
-
yield Promise.all([
|
|
757
|
-
...aaveV3Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
758
|
-
try {
|
|
759
|
-
const accData = yield (0, aaveV3_1._getAaveV3AccountData)(client, network, address, Object.assign({ selectedMarket: market }, markets.aaveV3MarketsData[market.value]));
|
|
760
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
761
|
-
positions[address.toLowerCase()].aaveV3[market.value] = { error: '', data: accData };
|
|
762
|
-
}
|
|
763
|
-
catch (error) {
|
|
764
|
-
console.error(`Error fetching AaveV3 account data for address ${address} on market ${market.value}:`, error);
|
|
765
|
-
positions[address.toLowerCase()].aaveV3[market.value] = { error: `Error fetching AaveV3 account data for address ${address} on market ${market.value}`, data: null };
|
|
766
|
-
}
|
|
767
|
-
}))).flat(),
|
|
768
|
-
...aaveV4Spokes.map((spoke) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
769
|
-
try {
|
|
770
|
-
const accData = yield (0, aaveV4_1._getAaveV4AccountData)(client, network, markets.aaveV4SpokesData[spoke.value], address);
|
|
771
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
772
|
-
positions[address.toLowerCase()].aaveV4[spoke.value] = { error: '', data: accData };
|
|
773
|
-
}
|
|
774
|
-
catch (error) {
|
|
775
|
-
console.error(`Error fetching AaveV4 account data for address ${address} on spoke ${spoke.value}:`, error);
|
|
776
|
-
positions[address.toLowerCase()].aaveV4[spoke.value] = { error: `Error fetching AaveV4 account data for address ${address} on spoke ${spoke.value}`, data: null };
|
|
777
|
-
}
|
|
778
|
-
}))).flat(),
|
|
779
|
-
...morphoMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
780
|
-
try {
|
|
781
|
-
const accData = yield (0, morphoBlue_1._getMorphoBlueAccountData)(client, network, address, market, markets.morphoMarketsData[market.value]);
|
|
782
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
783
|
-
positions[address.toLowerCase()].morphoBlue[market.value] = { error: '', data: accData };
|
|
784
|
-
}
|
|
785
|
-
catch (error) {
|
|
786
|
-
console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, error);
|
|
787
|
-
positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
|
|
788
|
-
}
|
|
789
|
-
}))).flat(),
|
|
790
|
-
...compoundV3Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
791
|
-
try {
|
|
792
|
-
const accData = yield (0, compoundV3_1._getCompoundV3AccountData)(client, network, address, constants_1.ZERO_ADDRESS, { selectedMarket: market, assetsData: markets.compoundV3MarketsData[market.value].assetsData });
|
|
793
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
794
|
-
positions[address.toLowerCase()].compoundV3[market.value] = { error: '', data: accData };
|
|
795
|
-
}
|
|
796
|
-
catch (error) {
|
|
797
|
-
console.error(`Error fetching CompoundV3 account data for address ${address} on market ${market.value}:`, error);
|
|
798
|
-
positions[address.toLowerCase()].compoundV3[market.value] = { error: `Error fetching CompoundV3 account data for address ${address} on market ${market.value}`, data: null };
|
|
799
|
-
}
|
|
800
|
-
}))).flat(),
|
|
801
|
-
...sparkMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
802
|
-
try {
|
|
803
|
-
const accData = yield (0, spark_1._getSparkAccountData)(client, network, address, { selectedMarket: market, assetsData: markets.sparkMarketsData[market.value].assetsData, eModeCategoriesData: markets.sparkMarketsData[market.value].eModeCategoriesData });
|
|
804
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
805
|
-
positions[address.toLowerCase()].spark[market.value] = { error: '', data: accData };
|
|
806
|
-
}
|
|
807
|
-
catch (error) {
|
|
808
|
-
console.error(`Error fetching Spark account data for address ${address} on market ${market.value}:`, error);
|
|
809
|
-
positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
|
|
810
|
-
}
|
|
811
|
-
}))).flat(),
|
|
812
|
-
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
813
|
-
var _a;
|
|
814
|
-
return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
815
|
-
try {
|
|
816
|
-
// reuse ilk data fetched for the markets payload; ilks outside the active set are fetched on demand
|
|
817
|
-
const cdpData = yield (0, maker_1._getMakerCdpData)(client, network, cdpInfo, markets.makerMarketsData[cdpInfo.ilkLabel]);
|
|
818
|
-
if (cdpData) {
|
|
819
|
-
positions[address.toLowerCase()].maker[cdpInfo.id] = { error: '', data: cdpData };
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
catch (error) {
|
|
823
|
-
console.error(`Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}:`, error);
|
|
824
|
-
positions[address.toLowerCase()].maker[cdpInfo.id] = { error: `Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}`, data: null };
|
|
825
|
-
}
|
|
826
|
-
}));
|
|
827
|
-
})).flat(),
|
|
828
|
-
...aaveV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
829
|
-
try {
|
|
830
|
-
const accData = yield (0, aaveV2_1._getAaveV2AccountData)(client, network, address, markets.aaveV2MarketsData[market.value].assetsData, market);
|
|
831
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
832
|
-
positions[address.toLowerCase()].aaveV2[market.value] = { error: '', data: accData };
|
|
833
|
-
}
|
|
834
|
-
catch (error) {
|
|
835
|
-
console.error(`Error fetching AaveV2 account data for address ${address}:`, error);
|
|
836
|
-
positions[address.toLowerCase()].aaveV2[market.value] = { error: `Error fetching AaveV2 account data for address ${address}`, data: null };
|
|
837
|
-
}
|
|
838
|
-
}))).flat(),
|
|
839
|
-
...compoundV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
840
|
-
try {
|
|
841
|
-
const accData = yield (0, compoundV2_1._getCompoundV2AccountData)(client, network, address, markets.compoundV2MarketsData[market.value].assetsData);
|
|
842
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0))
|
|
843
|
-
positions[address.toLowerCase()].compoundV2[market.value] = { error: '', data: accData };
|
|
844
|
-
}
|
|
845
|
-
catch (error) {
|
|
846
|
-
console.error(`Error fetching CompoundV2 account data for address ${address}:`, error);
|
|
847
|
-
positions[address.toLowerCase()].compoundV2[market.value] = { error: `Error fetching CompoundV2 account data for address ${address}`, data: null };
|
|
848
|
-
}
|
|
849
|
-
}))).flat(),
|
|
850
|
-
...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
851
|
-
try {
|
|
852
|
-
if (!isMainnet)
|
|
853
|
-
return; // Liquity trove info is only available on mainnet
|
|
854
|
-
const troveInfo = yield (0, liquity_1._getLiquityTroveInfo)(client, network, address);
|
|
855
|
-
if (new decimal_js_1.default(troveInfo.collateral).gt(0))
|
|
856
|
-
positions[address.toLowerCase()].liquity = { error: '', data: troveInfo };
|
|
857
|
-
}
|
|
858
|
-
catch (error) {
|
|
859
|
-
console.error(`Error fetching Liquity trove info for address ${address}:`, error);
|
|
860
|
-
positions[address.toLowerCase()].liquity = { error: `Error fetching Liquity trove info for address ${address}`, data: null };
|
|
861
|
-
}
|
|
862
|
-
})),
|
|
863
|
-
...crvUsdMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
864
|
-
try {
|
|
865
|
-
const accData = yield (0, curveUsd_1._getCurveUsdUserData)(client, network, address, market, markets.crvUsdMarketsData[market.value].activeBand);
|
|
866
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0) || new decimal_js_1.default(accData.borrowedUsd).gt(0)) {
|
|
867
|
-
positions[address.toLowerCase()].crvUsd[market.value] = { error: '', data: Object.assign(Object.assign({}, accData), { borrowRate: markets.crvUsdMarketsData[market.value].borrowRate }) };
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
catch (error) {
|
|
871
|
-
console.error(`Error fetching Curve USD account data for address ${address} on market ${market.value}:`, error);
|
|
872
|
-
positions[address.toLowerCase()].crvUsd[market.value] = { error: `Error fetching Curve USD account data for address ${address} on market ${market.value}`, data: null };
|
|
873
|
-
}
|
|
874
|
-
}))).flat(),
|
|
875
|
-
...llamaLendMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
876
|
-
try {
|
|
877
|
-
const accData = yield (0, llamaLend_1._getLlamaLendUserData)(client, network, address, market, markets.llamaLendMarketsData[market.value]);
|
|
878
|
-
if (new decimal_js_1.default(accData.suppliedUsd).gt(0) || new decimal_js_1.default(accData.borrowedUsd).gt(0)) {
|
|
879
|
-
positions[address.toLowerCase()].llamaLend[market.value] = { error: '', data: Object.assign(Object.assign({}, accData), { borrowRate: markets.llamaLendMarketsData[market.value].borrowRate }) };
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
catch (error) {
|
|
883
|
-
console.error(`Error fetching LlamaLend account data for address ${address} on market ${market.value}:`, error);
|
|
884
|
-
positions[address.toLowerCase()].llamaLend[market.value] = { error: `Error fetching LlamaLend account data for address ${address} on market ${market.value}`, data: null };
|
|
885
|
-
}
|
|
886
|
-
}))).flat(),
|
|
887
|
-
]);
|
|
888
|
-
return {
|
|
889
|
-
positions,
|
|
890
|
-
markets,
|
|
891
|
-
};
|
|
892
|
-
});
|
|
893
|
-
}
|
|
894
622
|
__exportStar(require("./discovery"), exports);
|
|
@@ -55,7 +55,7 @@ const morphoVaultsOptions = __importStar(require("./options"));
|
|
|
55
55
|
exports.morphoVaultsOptions = morphoVaultsOptions;
|
|
56
56
|
const viem_1 = require("../../services/viem");
|
|
57
57
|
const contracts_1 = require("../../contracts");
|
|
58
|
-
const
|
|
58
|
+
const constants_1 = require("../../constants");
|
|
59
59
|
// Morpho API caps list page size at 100 items
|
|
60
60
|
const MORPHO_API_PAGE_SIZE = 100;
|
|
61
61
|
const vaultsLiquidityQuery = `
|
|
@@ -80,7 +80,7 @@ const fetchMorphoVaultsLiquidity = (network, vaults) => __awaiter(void 0, void 0
|
|
|
80
80
|
chunks.push(vaults.slice(i, i + MORPHO_API_PAGE_SIZE));
|
|
81
81
|
const liquidityByAddress = {};
|
|
82
82
|
yield Promise.all(chunks.map((chunk) => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
-
const data = yield (0, graphql_request_1.request)(
|
|
83
|
+
const data = yield (0, graphql_request_1.request)(constants_1.MORPHO_API_URL, vaultsLiquidityQuery, {
|
|
84
84
|
addresses: chunk.map((vault) => vault.address),
|
|
85
85
|
chainIds: [network],
|
|
86
86
|
// the BigInt scalar serializes as a JSON number when it fits in Number.MAX_SAFE_INTEGER, a string otherwise
|
package/cjs/types/aave.d.ts
CHANGED
|
@@ -126,7 +126,6 @@ export interface AavePositionData extends MMPositionData {
|
|
|
126
126
|
minRatio: string;
|
|
127
127
|
collRatio: string;
|
|
128
128
|
safetyRatioWithLtvZeroFallback?: string;
|
|
129
|
-
safetyRatio?: string;
|
|
130
129
|
suppliedUsd: string;
|
|
131
130
|
borrowedUsd: string;
|
|
132
131
|
borrowLimitUsd: string;
|
|
@@ -160,7 +159,6 @@ export interface AaveV3AggregatedPositionData {
|
|
|
160
159
|
collRatio: string;
|
|
161
160
|
borrowLimitWithLtvZeroFallbackUsd: string;
|
|
162
161
|
safetyRatioWithLtvZeroFallback: string;
|
|
163
|
-
safetyRatio: string;
|
|
164
162
|
netApy: string;
|
|
165
163
|
incentiveUsd: string;
|
|
166
164
|
totalInterestUsd: string;
|
package/cjs/types/aaveV4.d.ts
CHANGED
package/cjs/types/compound.d.ts
CHANGED
|
@@ -96,7 +96,6 @@ export interface CompoundAggregatedPositionData {
|
|
|
96
96
|
leftToBorrowUsd: string;
|
|
97
97
|
ratio: string;
|
|
98
98
|
collRatio: string;
|
|
99
|
-
safetyRatio: string;
|
|
100
99
|
netApy: string;
|
|
101
100
|
incentiveUsd: string;
|
|
102
101
|
totalInterestUsd: string;
|
|
@@ -116,7 +115,6 @@ export interface CompoundAggregatedPositionData {
|
|
|
116
115
|
export interface CompoundPositionData extends MMPositionData {
|
|
117
116
|
ratio: string;
|
|
118
117
|
minRatio: string;
|
|
119
|
-
safetyRatio?: string;
|
|
120
118
|
suppliedUsd: string;
|
|
121
119
|
borrowedUsd: string;
|
|
122
120
|
borrowLimitUsd: string;
|
package/cjs/types/fluid.d.ts
CHANGED
package/cjs/types/liquity.d.ts
CHANGED
package/cjs/types/liquityV2.d.ts
CHANGED
|
@@ -94,7 +94,6 @@ export interface LiquityV2AggregatedTroveData {
|
|
|
94
94
|
liquidationPrice: string;
|
|
95
95
|
ratio: string;
|
|
96
96
|
collRatio: string;
|
|
97
|
-
safetyRatio: string;
|
|
98
97
|
exposure: string;
|
|
99
98
|
}
|
|
100
99
|
export interface LiquityV2TroveData {
|
|
@@ -102,7 +101,6 @@ export interface LiquityV2TroveData {
|
|
|
102
101
|
troveId: string;
|
|
103
102
|
ratio: string;
|
|
104
103
|
collRatio: string;
|
|
105
|
-
safetyRatio?: string;
|
|
106
104
|
liqRatio: string;
|
|
107
105
|
borrowLimitRatio: string;
|
|
108
106
|
interestRate: string;
|
package/cjs/types/maker.d.ts
CHANGED
|
@@ -185,7 +185,6 @@ export interface MorphoBlueAggregatedPositionData {
|
|
|
185
185
|
totalInterestUsd: string;
|
|
186
186
|
ltv: string;
|
|
187
187
|
ratio: string;
|
|
188
|
-
safetyRatio: string;
|
|
189
188
|
leveragedType: LeverageType;
|
|
190
189
|
leveragedAsset?: string;
|
|
191
190
|
currentVolatilePairRatio?: string;
|
|
@@ -208,7 +207,6 @@ export interface MorphoBluePositionData {
|
|
|
208
207
|
totalInterestUsd: string;
|
|
209
208
|
ltv: string;
|
|
210
209
|
ratio: string;
|
|
211
|
-
safetyRatio?: string;
|
|
212
210
|
leveragedType: LeverageType;
|
|
213
211
|
leveragedAsset?: string;
|
|
214
212
|
currentVolatilePairRatio?: string;
|
package/cjs/types/portfolio.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AaveV4AccountData,
|
|
1
|
+
import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
|
|
2
|
+
import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
|
|
3
3
|
import { EthAddress } from './common';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
|
|
5
|
+
import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
|
|
6
|
+
import { FluidVaultData } from './fluid';
|
|
7
7
|
import { LiquityTroveInfo } from './liquity';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { SparkMarketsData, SparkPositionData, SparkVersions } from './spark';
|
|
8
|
+
import { LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
9
|
+
import { CdpData } from './maker';
|
|
10
|
+
import { MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
|
|
11
|
+
import { MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
|
|
12
|
+
import { SparkPositionData, SparkVersions } from './spark';
|
|
14
13
|
export interface PortfolioProtocolData<T> {
|
|
15
14
|
error: string;
|
|
16
15
|
data: T | null;
|
|
@@ -60,18 +59,3 @@ export interface PortfolioPositionsDataForAddress {
|
|
|
60
59
|
export interface PortfolioPositionsData {
|
|
61
60
|
[key: EthAddress]: PortfolioPositionsDataForAddress;
|
|
62
61
|
}
|
|
63
|
-
export interface PortfolioMarketsData {
|
|
64
|
-
morphoMarketsData: Record<string, MorphoBlueMarketInfo>;
|
|
65
|
-
morphoMidnightMarketsData: Record<string, MorphoMidnightMarketInfo>;
|
|
66
|
-
compoundV3MarketsData: Record<string, CompoundV3MarketsData>;
|
|
67
|
-
sparkMarketsData: Record<string, SparkMarketsData>;
|
|
68
|
-
aaveV3MarketsData: Record<string, AaveV3MarketData>;
|
|
69
|
-
aaveV2MarketsData: Record<string, AaveV2MarketData>;
|
|
70
|
-
compoundV2MarketsData: Record<string, CompoundV2MarketsData>;
|
|
71
|
-
crvUsdMarketsData: Record<string, CrvUSDGlobalMarketData>;
|
|
72
|
-
llamaLendMarketsData: Record<string, LlamaLendGlobalMarketData>;
|
|
73
|
-
liquityV2MarketsData: Record<string, LiquityV2MarketData>;
|
|
74
|
-
aaveV4SpokesData: Record<string, AaveV4SpokeData>;
|
|
75
|
-
fluidMarketsData: Record<string, FluidMarketData>;
|
|
76
|
-
makerMarketsData: Record<string, IlkInfo>;
|
|
77
|
-
}
|
package/cjs/types/spark.d.ts
CHANGED
|
@@ -85,7 +85,6 @@ export interface SparkAggregatedPositionData {
|
|
|
85
85
|
leftToBorrowUsd: string;
|
|
86
86
|
ratio: string;
|
|
87
87
|
collRatio: string;
|
|
88
|
-
safetyRatio: string;
|
|
89
88
|
netApy: string;
|
|
90
89
|
incentiveUsd: string;
|
|
91
90
|
totalInterestUsd: string;
|
|
@@ -105,7 +104,6 @@ export interface SparkPositionData extends MMPositionData {
|
|
|
105
104
|
ratio: string;
|
|
106
105
|
minRatio: string;
|
|
107
106
|
collRatio: string;
|
|
108
|
-
safetyRatio?: string;
|
|
109
107
|
suppliedUsd: string;
|
|
110
108
|
borrowedUsd: string;
|
|
111
109
|
borrowLimitUsd: string;
|
package/esm/aaveV2/index.js
CHANGED
|
@@ -167,8 +167,6 @@ export const _getAaveV2AccountData = (provider, network, address, assetsData, ma
|
|
|
167
167
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
168
168
|
? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
169
169
|
: '0';
|
|
170
|
-
// Aave v2 has no LTV-0 fallback (AaveV3View only), so its safety ratio is the plain ratio.
|
|
171
|
-
payload.safetyRatio = payload.ratio;
|
|
172
170
|
// Calculate borrow limits per asset
|
|
173
171
|
Object.values(payload.usedAssets).forEach((item) => {
|
|
174
172
|
if (item.isBorrowed) {
|
package/esm/constants/index.d.ts
CHANGED
|
@@ -10,3 +10,4 @@ export declare const ZERO_BYTES32 = "0x00000000000000000000000000000000000000000
|
|
|
10
10
|
export declare const WAD = 1000000000000000000;
|
|
11
11
|
export declare const USD_QUOTE = "0x0000000000000000000000000000000000000348";
|
|
12
12
|
export declare const borrowOperations: string[];
|
|
13
|
+
export declare const MORPHO_API_URL = "https://fe.defisaver.com/api/morpho/graphql";
|
package/esm/constants/index.js
CHANGED
|
@@ -10,3 +10,6 @@ export const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000
|
|
|
10
10
|
export const WAD = 1e18;
|
|
11
11
|
export const USD_QUOTE = '0x0000000000000000000000000000000000000348';
|
|
12
12
|
export const borrowOperations = ['borrow', 'payback'];
|
|
13
|
+
// Proxies Morpho's GraphQL API through the DFS backend, which attaches the private API key
|
|
14
|
+
// for better rate limits (DEV-13673)
|
|
15
|
+
export const MORPHO_API_URL = 'https://fe.defisaver.com/api/morpho/graphql';
|
package/esm/fluid/index.d.ts
CHANGED
|
@@ -133,7 +133,6 @@ export declare const _getUserPositions: (provider: PublicClient, network: Networ
|
|
|
133
133
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
134
134
|
ratio: string;
|
|
135
135
|
collRatio: string;
|
|
136
|
-
safetyRatio: string;
|
|
137
136
|
minRatio: string;
|
|
138
137
|
totalInterestUsd: string;
|
|
139
138
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -168,7 +167,6 @@ export declare const getUserPositions: (provider: EthereumProvider, network: Net
|
|
|
168
167
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
169
168
|
ratio: string;
|
|
170
169
|
collRatio: string;
|
|
171
|
-
safetyRatio: string;
|
|
172
170
|
minRatio: string;
|
|
173
171
|
totalInterestUsd: string;
|
|
174
172
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -203,7 +201,6 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
|
|
|
203
201
|
merklBorrowIncentives: import("../types").IncentiveData[];
|
|
204
202
|
ratio: string;
|
|
205
203
|
collRatio: string;
|
|
206
|
-
safetyRatio: string;
|
|
207
204
|
minRatio: string;
|
|
208
205
|
totalInterestUsd: string;
|
|
209
206
|
leveragedType?: import("../types").LeverageType;
|
|
@@ -224,5 +221,3 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
|
|
|
224
221
|
nftId: string;
|
|
225
222
|
} | undefined;
|
|
226
223
|
}[]>;
|
|
227
|
-
export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
|
|
228
|
-
export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
|
package/esm/fluid/index.js
CHANGED
|
@@ -1381,36 +1381,3 @@ export const _getUserPositionsPortfolio = (provider, network, user) => __awaiter
|
|
|
1381
1381
|
userData: userData[i],
|
|
1382
1382
|
})).filter(md => md.marketData !== undefined);
|
|
1383
1383
|
});
|
|
1384
|
-
export const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1385
|
-
const versions = getFluidVersionsDataForNetwork(network);
|
|
1386
|
-
if (versions.length === 0)
|
|
1387
|
-
return {};
|
|
1388
|
-
const view = FluidViewContractViem(provider, network);
|
|
1389
|
-
const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
|
|
1390
|
-
const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
|
|
1391
|
-
const vaultTokens = [getAssetInfoByAddress(vaultData.supplyToken0, network).symbol, getAssetInfoByAddress(vaultData.borrowToken0, network).symbol];
|
|
1392
|
-
if (vaultData.supplyToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.supplyToken1))
|
|
1393
|
-
vaultTokens.push(getAssetInfoByAddress(vaultData.supplyToken1, network).symbol);
|
|
1394
|
-
if (vaultData.borrowToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.borrowToken1))
|
|
1395
|
-
vaultTokens.push(getAssetInfoByAddress(vaultData.borrowToken1, network).symbol);
|
|
1396
|
-
return vaultTokens;
|
|
1397
|
-
}).flat()));
|
|
1398
|
-
// ETH and WBTC needed for other tokens prices
|
|
1399
|
-
if (!tokens.includes('ETH'))
|
|
1400
|
-
tokens.push('ETH');
|
|
1401
|
-
if (!tokens.includes('WBTC'))
|
|
1402
|
-
tokens.push('WBTC');
|
|
1403
|
-
const [tokenPrices, merklCampaigns] = yield Promise.all([
|
|
1404
|
-
getTokensPricesForPortfolio(tokens, provider, network),
|
|
1405
|
-
getFluidMerklCampaigns(network),
|
|
1406
|
-
]);
|
|
1407
|
-
const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); })));
|
|
1408
|
-
const marketsData = {};
|
|
1409
|
-
parsedMarketsData.forEach((marketData, i) => {
|
|
1410
|
-
if (!marketData)
|
|
1411
|
-
return;
|
|
1412
|
-
marketsData[versions[i].value] = attachFluidMerklIncentives(marketData, merklCampaigns);
|
|
1413
|
-
});
|
|
1414
|
-
return marketsData;
|
|
1415
|
-
});
|
|
1416
|
-
export const getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () { return _getAllFluidMarketDataPortfolio(getViemProvider(provider, network, { batch: { multicall: true } }), network); });
|
|
@@ -125,9 +125,6 @@ export const aaveAnyGetAggregatedPositionData = (_a) => {
|
|
|
125
125
|
return new Dec(suppliedUsd).mul(effectiveLtv);
|
|
126
126
|
});
|
|
127
127
|
payload.safetyRatioWithLtvZeroFallback = +payload.suppliedUsd ? new Dec(payload.borrowLimitWithLtvZeroFallbackUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
128
|
-
// Normalised safety ratio (100 = liquidation on every protocol): the automation ratio above, falling back
|
|
129
|
-
// to the regular ratio when the fallback carries its '0' placeholder.
|
|
130
|
-
payload.safetyRatio = +payload.safetyRatioWithLtvZeroFallback ? payload.safetyRatioWithLtvZeroFallback : payload.ratio;
|
|
131
128
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
132
129
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
133
130
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
@@ -208,7 +208,6 @@ export const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, networ
|
|
|
208
208
|
payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
209
209
|
payload.minRatio = '100';
|
|
210
210
|
payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
211
|
-
payload.safetyRatio = payload.ratio;
|
|
212
211
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
213
212
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
214
213
|
const { leveragedType, leveragedAsset } = isLeveragedPosAaveV4(usedAssets);
|
|
@@ -93,7 +93,6 @@ export const getCompoundV2AggregatedData = (_a) => {
|
|
|
93
93
|
payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
|
|
94
94
|
? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
|
|
95
95
|
: '0';
|
|
96
|
-
payload.safetyRatio = payload.ratio;
|
|
97
96
|
// Calculate borrow limits per asset
|
|
98
97
|
Object.values(usedAssets).forEach((item) => {
|
|
99
98
|
if (item.isBorrowed) {
|
|
@@ -135,7 +134,6 @@ export const getCompoundV3AggregatedData = (_a) => {
|
|
|
135
134
|
payload.incentiveUsd = incentiveUsd;
|
|
136
135
|
payload.totalInterestUsd = totalInterestUsd;
|
|
137
136
|
payload.minRatio = '100';
|
|
138
|
-
payload.safetyRatio = payload.ratio;
|
|
139
137
|
payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
|
|
140
138
|
payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
|
|
141
139
|
payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
|
|
@@ -28,8 +28,6 @@ export const getCrvUsdAggregatedData = (_a) => {
|
|
|
28
28
|
: '0';
|
|
29
29
|
// this is all approximation
|
|
30
30
|
payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
|
|
31
|
-
// Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
|
|
32
|
-
payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
|
|
33
31
|
payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
|
|
34
32
|
// only take in consideration collAsset
|
|
35
33
|
payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
|
|
@@ -78,7 +78,6 @@ export const getFluidAggregatedData = ({ usedAssets, assetsData, marketData, },
|
|
|
78
78
|
payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
79
79
|
payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
80
80
|
payload.minRatio = marketData.minRatio;
|
|
81
|
-
payload.safetyRatio = payload.ratio;
|
|
82
81
|
const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
|
|
83
82
|
payload.leveragedType = leveragedType;
|
|
84
83
|
payload.liquidationPrice = '';
|
|
@@ -41,7 +41,6 @@ export const getLiquityV2AggregatedPositionData = ({ usedAssets, assetsData, min
|
|
|
41
41
|
payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
|
|
42
42
|
payload.ratio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
43
43
|
payload.collRatio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
|
|
44
|
-
payload.safetyRatio = payload.ratio;
|
|
45
44
|
const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApyLiquityV2(usedAssets, assetsData, interestRate);
|
|
46
45
|
payload.netApy = netApy;
|
|
47
46
|
payload.incentiveUsd = incentiveUsd;
|