vega-frontend-monorepo/apps/trading/components/fees-container/use-volume-stats.ts

34 lines
925 B
TypeScript
Raw Normal View History

2023-10-25 21:59:30 +00:00
import type { DiscountProgramsQuery, FeesQuery } from './__generated__/Fees';
export const useVolumeStats = (
previousEpoch: number,
lastEpochStats?: NonNullable<
FeesQuery['volumeDiscountStats']['edges']['0']
>['node'],
2023-10-25 21:59:30 +00:00
program?: DiscountProgramsQuery['currentVolumeDiscountProgram']
) => {
const volumeTiers = program?.benefitTiers || [];
if (!lastEpochStats || lastEpochStats.atEpoch !== previousEpoch || !program) {
2023-10-25 21:59:30 +00:00
return {
volumeDiscount: 0,
volumeTierIndex: -1,
volumeInWindow: 0,
volumeTiers,
};
}
const volumeDiscount = Number(lastEpochStats?.discountFactor || 0);
const volumeInWindow = Number(lastEpochStats?.runningVolume || 0);
const volumeTierIndex = volumeTiers.findIndex(
(tier) => tier.volumeDiscountFactor === lastEpochStats?.discountFactor
);
2023-10-25 21:59:30 +00:00
return {
volumeDiscount,
volumeTierIndex,
volumeInWindow,
volumeTiers,
};
};