Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions apps/evm/src/clients/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,12 @@ export * from './queries/getRiskDashboardMarkets';
export * from './queries/getRiskDashboardMarkets/useGetRiskDashboardMarkets';
export * from './queries/getRiskDashboardEModePools';
export * from './queries/getRiskDashboardEModePools/useGetRiskDashboardEModePools';
export * from './queries/getRiskDashboardLiquidationsSummary';
export * from './queries/getRiskDashboardLiquidationsSummary/useGetRiskDashboardLiquidationsSummary';
export * from './queries/getRiskDashboardLiquidationsDaily';
export * from './queries/getRiskDashboardLiquidationsDaily/useGetRiskDashboardLiquidationsDaily';
export * from './queries/getRiskDashboardLiquidationsDistribution';
export * from './queries/getRiskDashboardLiquidationsDistribution/useGetRiskDashboardLiquidationsDistribution';
export * from './queries/getRiskDashboardMarketSnapshots';
export * from './queries/getRiskDashboardMarketSnapshots/useGetRiskDashboardMarketSnapshots';
export * from './queries/getRiskDashboardWalletAggregates';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import type { ChainId } from 'types';
import { fetchRiskDashboard } from '../fetchRiskDashboard';

export interface ApiRiskDashboardLiquidationsDailyDay {
day: string;
count: string;
debtRepaidUsdCents: string;
collateralSeizedUsdCents: string;
activeLiquidators: string;
}

export interface GetRiskDashboardLiquidationsDailyResponse {
chainId: string;
days: number;
series: ApiRiskDashboardLiquidationsDailyDay[];
}

export const getRiskDashboardLiquidationsDaily = ({
chainId,
days,
}: {
chainId: ChainId;
days: number;
}) =>
fetchRiskDashboard<GetRiskDashboardLiquidationsDailyResponse>({
endpoint: '/risk-dashboard/liquidations-daily',
chainId,
params: { days },
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { type QueryObserverOptions, useQuery } from '@tanstack/react-query';

import FunctionKey from 'constants/functionKey';
import { useChainId } from 'libs/wallet';
import type { ChainId } from 'types';
import {
type GetRiskDashboardLiquidationsDailyResponse,
getRiskDashboardLiquidationsDaily,
} from '.';

export type UseGetRiskDashboardLiquidationsDailyQueryKey = [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_DAILY,
{ chainId: ChainId; days: number },
];

type Options = QueryObserverOptions<
GetRiskDashboardLiquidationsDailyResponse,
Error,
GetRiskDashboardLiquidationsDailyResponse,
GetRiskDashboardLiquidationsDailyResponse,
UseGetRiskDashboardLiquidationsDailyQueryKey
>;

export const useGetRiskDashboardLiquidationsDaily = (
{ days }: { days: number },
options?: Partial<Options>,
) => {
const { chainId } = useChainId();

return useQuery({
queryKey: [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_DAILY,
{ chainId, days },
],
queryFn: () => getRiskDashboardLiquidationsDaily({ chainId, days }),
...options,
});
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { ChainId } from 'types';
import type { Address } from 'viem';
import { fetchRiskDashboard } from '../fetchRiskDashboard';

export type LiquidationsDistributionAxis = 'collateral' | 'debt';

export interface ApiRiskDashboardLiquidationsDistributionRow {
marketAddress: Address;
count: string;
valueUsdCents: string;
}

export interface GetRiskDashboardLiquidationsDistributionResponse {
chainId: string;
days: number;
by: LiquidationsDistributionAxis;
rows: ApiRiskDashboardLiquidationsDistributionRow[];
}

export const getRiskDashboardLiquidationsDistribution = ({
chainId,
days,
by,
}: {
chainId: ChainId;
days: number;
by: LiquidationsDistributionAxis;
}) =>
fetchRiskDashboard<GetRiskDashboardLiquidationsDistributionResponse>({
endpoint: '/risk-dashboard/liquidations-distribution',
chainId,
params: { days, by },
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { type QueryObserverOptions, useQuery } from '@tanstack/react-query';

import FunctionKey from 'constants/functionKey';
import { useChainId } from 'libs/wallet';
import type { ChainId } from 'types';
import {
type GetRiskDashboardLiquidationsDistributionResponse,
type LiquidationsDistributionAxis,
getRiskDashboardLiquidationsDistribution,
} from '.';

export type UseGetRiskDashboardLiquidationsDistributionQueryKey = [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_DISTRIBUTION,
{ chainId: ChainId; days: number; by: LiquidationsDistributionAxis },
];

type Options = QueryObserverOptions<
GetRiskDashboardLiquidationsDistributionResponse,
Error,
GetRiskDashboardLiquidationsDistributionResponse,
GetRiskDashboardLiquidationsDistributionResponse,
UseGetRiskDashboardLiquidationsDistributionQueryKey
>;

export const useGetRiskDashboardLiquidationsDistribution = (
{ days, by }: { days: number; by: LiquidationsDistributionAxis },
options?: Partial<Options>,
) => {
const { chainId } = useChainId();

return useQuery({
queryKey: [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_DISTRIBUTION,
{ chainId, days, by },
],
queryFn: () =>
getRiskDashboardLiquidationsDistribution({ chainId, days, by }),
...options,
});
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import type { ChainId } from 'types';
import { fetchRiskDashboard } from '../fetchRiskDashboard';

export interface GetRiskDashboardLiquidationsSummaryResponse {
chainId: string;
days: number;
count: string;
debtRepaidUsdCents: string;
collateralSeizedUsdCents: string;
bonusUsdCents: string;
activeLiquidators: string;
uniqueBorrowers: string;
}

export const getRiskDashboardLiquidationsSummary = ({
chainId,
days,
}: {
chainId: ChainId;
days: number;
}) =>
fetchRiskDashboard<GetRiskDashboardLiquidationsSummaryResponse>({
endpoint: '/risk-dashboard/liquidations-summary',
chainId,
params: { days },
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { type QueryObserverOptions, useQuery } from '@tanstack/react-query';

import FunctionKey from 'constants/functionKey';
import { useChainId } from 'libs/wallet';
import type { ChainId } from 'types';
import {
type GetRiskDashboardLiquidationsSummaryResponse,
getRiskDashboardLiquidationsSummary,
} from '.';

export type UseGetRiskDashboardLiquidationsSummaryQueryKey = [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_SUMMARY,
{ chainId: ChainId; days: number },
];

type Options = QueryObserverOptions<
GetRiskDashboardLiquidationsSummaryResponse,
Error,
GetRiskDashboardLiquidationsSummaryResponse,
GetRiskDashboardLiquidationsSummaryResponse,
UseGetRiskDashboardLiquidationsSummaryQueryKey
>;

export const useGetRiskDashboardLiquidationsSummary = (
{ days }: { days: number },
options?: Partial<Options>,
) => {
const { chainId } = useChainId();

return useQuery({
queryKey: [
FunctionKey.GET_RISK_DASHBOARD_LIQUIDATIONS_SUMMARY,
{ chainId, days },
],
queryFn: () => getRiskDashboardLiquidationsSummary({ chainId, days }),
...options,
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export interface GetRiskDashboardWalletAggregatesResponse {
valueEligibleForLiquidationUsdCents: string;
totalCollateralAtRiskUsdCents: string;
totalBadDebtUsdCents: string;
walletsWithBadDebt: string;
}

const HEALTH_FACTOR_AT_RISK_DECIMAL = 1.125;
Expand Down
3 changes: 3 additions & 0 deletions apps/evm/src/constants/functionKey.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ enum FunctionKey {
GET_RISK_DASHBOARD_WALLET_AGGREGATES = 'GET_RISK_DASHBOARD_WALLET_AGGREGATES',
GET_RISK_DASHBOARD_TOP_WALLETS = 'GET_RISK_DASHBOARD_TOP_WALLETS',
GET_RISK_DASHBOARD_TRANSACTIONS_VOLUME = 'GET_RISK_DASHBOARD_TRANSACTIONS_VOLUME',
GET_RISK_DASHBOARD_LIQUIDATIONS_SUMMARY = 'GET_RISK_DASHBOARD_LIQUIDATIONS_SUMMARY',
GET_RISK_DASHBOARD_LIQUIDATIONS_DAILY = 'GET_RISK_DASHBOARD_LIQUIDATIONS_DAILY',
GET_RISK_DASHBOARD_LIQUIDATIONS_DISTRIBUTION = 'GET_RISK_DASHBOARD_LIQUIDATIONS_DISTRIBUTION',
GET_IMAGE_ACCENT_COLOR = 'GET_IMAGE_ACCENT_COLOR',
}

Expand Down
37 changes: 37 additions & 0 deletions apps/evm/src/libs/translations/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1761,6 +1761,43 @@
}
},
"illustrationAlt": "Stats illustration",
"liquidations": {
"dailyChart": {
"noData": "No liquidations in the selected period.",
"title": "Liquidations Activity",
"tooltip": {
"activeLiquidators": "Active Liquidators",
"collateralSeized": "Collateral Seized",
"count": "Liquidations",
"debtRepaid": "Debt Repaid"
},
"unavailable": "Daily liquidations unavailable."
},
"distributionChart": {
"byCollateralTitle": "Liquidations by Collateral Asset",
"byDebtTitle": "Liquidations by Debt Asset",
"noData": "No liquidations in the selected period.",
"tooltip": {
"count": "Count",
"value": "Value"
},
"unavailable": "Distribution unavailable."
},
"kpis": {
"activeLiquidators": "Active Liquidators",
"bonus": "Liquidation Bonus",
"collateralSeized": "Collateral Seized",
"count": "Liquidations",
"debtRepaid": "Debt Repaid",
"unavailable": "Liquidations data unavailable.",
"walletsWithBadDebt": "Wallets with Bad Debt"
},
"period": {
"24h": "24h",
"30d": "30d",
"7d": "7d"
}
},
"marketKpis": {
"liquidity": "Liquidity",
"totalBorrows": "Total Borrows",
Expand Down
37 changes: 37 additions & 0 deletions apps/evm/src/libs/translations/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -1761,6 +1761,43 @@
}
},
"illustrationAlt": "統計イラスト",
"liquidations": {
"dailyChart": {
"noData": "TRANSLATION NEEDED",
"title": "TRANSLATION NEEDED",
"tooltip": {
"activeLiquidators": "TRANSLATION NEEDED",
"collateralSeized": "TRANSLATION NEEDED",
"count": "TRANSLATION NEEDED",
"debtRepaid": "TRANSLATION NEEDED"
},
"unavailable": "TRANSLATION NEEDED"
},
"distributionChart": {
"byCollateralTitle": "TRANSLATION NEEDED",
"byDebtTitle": "TRANSLATION NEEDED",
"noData": "TRANSLATION NEEDED",
"tooltip": {
"count": "TRANSLATION NEEDED",
"value": "TRANSLATION NEEDED"
},
"unavailable": "TRANSLATION NEEDED"
},
"kpis": {
"activeLiquidators": "TRANSLATION NEEDED",
"bonus": "TRANSLATION NEEDED",
"collateralSeized": "TRANSLATION NEEDED",
"count": "TRANSLATION NEEDED",
"debtRepaid": "TRANSLATION NEEDED",
"unavailable": "TRANSLATION NEEDED",
"walletsWithBadDebt": "TRANSLATION NEEDED"
},
"period": {
"24h": "TRANSLATION NEEDED",
"30d": "TRANSLATION NEEDED",
"7d": "TRANSLATION NEEDED"
}
},
"marketKpis": {
"liquidity": "TRANSLATION NEEDED",
"totalBorrows": "TRANSLATION NEEDED",
Expand Down
37 changes: 37 additions & 0 deletions apps/evm/src/libs/translations/translations/th.json
Original file line number Diff line number Diff line change
Expand Up @@ -1761,6 +1761,43 @@
}
},
"illustrationAlt": "ภาพประกอบสถิติ",
"liquidations": {
"dailyChart": {
"noData": "TRANSLATION NEEDED",
"title": "TRANSLATION NEEDED",
"tooltip": {
"activeLiquidators": "TRANSLATION NEEDED",
"collateralSeized": "TRANSLATION NEEDED",
"count": "TRANSLATION NEEDED",
"debtRepaid": "TRANSLATION NEEDED"
},
"unavailable": "TRANSLATION NEEDED"
},
"distributionChart": {
"byCollateralTitle": "TRANSLATION NEEDED",
"byDebtTitle": "TRANSLATION NEEDED",
"noData": "TRANSLATION NEEDED",
"tooltip": {
"count": "TRANSLATION NEEDED",
"value": "TRANSLATION NEEDED"
},
"unavailable": "TRANSLATION NEEDED"
},
"kpis": {
"activeLiquidators": "TRANSLATION NEEDED",
"bonus": "TRANSLATION NEEDED",
"collateralSeized": "TRANSLATION NEEDED",
"count": "TRANSLATION NEEDED",
"debtRepaid": "TRANSLATION NEEDED",
"unavailable": "TRANSLATION NEEDED",
"walletsWithBadDebt": "TRANSLATION NEEDED"
},
"period": {
"24h": "TRANSLATION NEEDED",
"30d": "TRANSLATION NEEDED",
"7d": "TRANSLATION NEEDED"
}
},
"marketKpis": {
"liquidity": "TRANSLATION NEEDED",
"totalBorrows": "TRANSLATION NEEDED",
Expand Down
Loading
Loading