import { useTranslation } from "@plexswap/localization"; import { getApy } from "@plexswap/utils/compoundApyHelpers"; import BigNumber from "bignumber.js"; import { useMemo, useState } from "react"; import { styled } from "styled-components"; import { BIG_ONE_HUNDRED } from "@plexswap/utils/bigNumber"; import { useTooltip } from "../../hooks/useTooltip"; import { Box, Flex, Grid } from "../Box"; import { ExpandableLabel } from "../Button"; import { Link, LinkExternal } from "../Link"; import { HelpIcon } from "../Svg"; import { Text } from "../Text"; import { FarmMultiplierInfo } from "./FarmMultiplierInfo"; export const Footer = styled(Flex)` width: 100%; background: ${({ theme }) => theme.colors.dropdown}; `; export const BulletList = styled.ul` list-style-type: none; margin-top: 16px; padding: 0; li { margin: 0; padding: 0; } li::before { content: "•"; margin-right: 4px; color: ${({ theme }) => theme.colors.textSubtle}; } li::marker { font-size: 12px; } `; interface RoiCalculatorFooterProps { isFarm: boolean; apr?: number; lpRewardsApr?: number; apy?: number; displayApr?: string; autoCompoundFrequency: number; multiplier?: string; linkLabel: string; linkHref?: string; performanceFee: number; rewardWayaPerSecond?: boolean; isLocked?: boolean; stableSwapAddress?: string; stableLpFee?: number; farmWayaPerSecond?: string; totalMultipliers?: string; dualTokenRewardApr?: number; isWayaBooster?: boolean; } const RoiCalculatorFooter: React.FC> = ({ isFarm, apr = 0, apy = 0, displayApr, autoCompoundFrequency, multiplier, linkLabel, linkHref, performanceFee, rewardWayaPerSecond, isLocked = false, stableSwapAddress, stableLpFee, farmWayaPerSecond, totalMultipliers, dualTokenRewardApr, lpRewardsApr, isWayaBooster, }) => { const [isExpanded, setIsExpanded] = useState(false); const { t } = useTranslation(); const isAptos = rewardWayaPerSecond === true; const multiplierTooltipContent = FarmMultiplierInfo({ farmWayaPerSecond: farmWayaPerSecond ?? "-", totalMultipliers: totalMultipliers ?? "-", }); const { targetRef: multiplierRef, tooltip: multiplierTooltip, tooltipVisible: multiplierTooltipVisible, } = useTooltip(multiplierTooltipContent, { placement: "top-end", tooltipOffset: [20, 10] }); const gridRowCount = isFarm ? 4 : 2; const wayaRewardAPRDisplay = useMemo(() => { let total = new BigNumber(apr); // TODO: In APTOS APR is combine APR (Waya APR + Apt APR + lp APR). // Soon EVM (v2 Farm & pools) also will change to combine APR. if (dualTokenRewardApr !== undefined) { total = new BigNumber(apr).minus(Number(dualTokenRewardApr ?? 0)).minus(lpRewardsApr ?? 0); } return total.toNumber(); }, [apr, dualTokenRewardApr, lpRewardsApr]); const lpRewardsAPRDisplay = useMemo(() => { return isFarm ? (lpRewardsApr ? Math.max(lpRewardsApr).toFixed(2) : null) : null; }, [isFarm, lpRewardsApr]); return ( ); }; export default RoiCalculatorFooter;