{"version":3,"file":"static/chunks/pages/stake-1730513d5f491ae7.js","mappings":"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","sources":["webpack://_N_E/?0d5e","webpack://_N_E/./components/Button/StakeBtn/StakeBtnComponent.tsx","webpack://_N_E/./components/Button/StakeBtn/StakeBtn.tsx","webpack://_N_E/./components/Button/StakeBtn/index.tsx","webpack://_N_E/./utils/routing/stake.ts","webpack://_N_E/./utils/stakeHelper.ts","webpack://_N_E/./hooks/useFetchAptrToken.ts","webpack://_N_E/./hooks/useFetchStakeInfo.ts","webpack://_N_E/./hooks/useFetchStakePositions.ts","webpack://_N_E/./components/Modal/PreviewStakeModal.tsx","webpack://_N_E/./views/StakePositions/index.tsx","webpack://_N_E/./pages/stake.tsx","webpack://_N_E/<anon>"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/stake\",\n function () {\n return require(\"private-next-pages/stake.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/stake\"])\n });\n }\n ","import { IToken } from \"@aperture/types\";\nimport { Button, Spinner } from \"@ui/components\";\nimport bigDecimal from \"js-big-decimal\";\nimport styled from \"styled-components\";\nimport { Address } from \"viem\";\n\nconst StyledButton = styled(Button)<{ isError?: boolean }>`\n font-size: 14px;\n line-height: 16px;\n font-weight: 500;\n padding-block: 12px;\n &:disabled {\n background: ${({ theme }) =>\n `${theme.colors.global.background.BG2} !important`};\n color: ${({ theme, isError }) =>\n `${\n isError ? theme.colors.global.error : theme.colors.global.text.T3\n } !important`};\n }\n`;\n\nexport interface StakeBtnProps {\n stakeToken: IToken;\n stakeAmount: string;\n contractAddress: Address;\n isStaking: boolean;\n isStakeError: boolean;\n isSupportedNetwork: boolean;\n insufficientBalance: boolean;\n onClick: () => void;\n}\n\nexport const StakeBtnComponent: React.FC<StakeBtnProps> = ({\n stakeToken,\n stakeAmount,\n isStaking,\n isStakeError,\n insufficientBalance,\n onClick,\n}) => {\n return (\n <StyledButton\n variant=\"contained\"\n color=\"secondary\"\n width=\"100%\"\n size=\"circle\"\n isError={insufficientBalance && !isStakeError}\n disabled={\n isStaking ||\n isStakeError ||\n insufficientBalance ||\n !stakeAmount ||\n bigDecimal.compareTo(stakeAmount, 0) === 0\n }\n onClick={onClick}\n >\n {insufficientBalance && !isStakeError ? (\n \"Insufficient Aperture Balance\"\n ) : isStaking ? (\n <Spinner />\n ) : (\n `Stake ${stakeToken.ticker}`\n )}\n </StyledButton>\n );\n};\n","import { memo, useState } from \"react\";\nimport { ApproveTokenBtn } from \"../ApprovalBtn\";\nimport { StakeBtnComponent, StakeBtnProps } from \"./StakeBtnComponent\";\n\nconst ApproveAndStakeBtn: React.FC<StakeBtnProps> = (props) => {\n const {\n stakeToken,\n stakeAmount,\n isStakeError,\n isSupportedNetwork,\n insufficientBalance,\n contractAddress,\n } = props;\n const [approved, setApproved] = useState<boolean>(false);\n const isNative = stakeToken.native;\n const isError = isStakeError || insufficientBalance;\n\n return (\n <>\n {stakeToken && stakeAmount && isSupportedNetwork && !isError && (\n <ApproveTokenBtn\n variant=\"contained\"\n color=\"secondary\"\n style={{ fontSize: \"14px\", lineHeight: \"16px\" }}\n token={stakeToken}\n contractAddress={contractAddress}\n amount={stakeAmount ?? \"0\"}\n approveOnChange={(approve: boolean) => {\n setApproved(approve);\n }}\n useNative={isNative}\n hidden={approved}\n />\n )}\n {(isError || !stakeAmount || !isSupportedNetwork || approved) && (\n <StakeBtnComponent {...props} />\n )}\n </>\n );\n};\n\nexport const StakeBtn = memo(ApproveAndStakeBtn);\n","import { StakeBtn } from \"./StakeBtn\";\n\nexport default StakeBtn;\n","import { getPublicClient } from \"@/helper/getPublicClient\";\nimport { ApertureSupportedChainId } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Address, WalletClient } from \"viem\";\nimport { arbitrum } from \"viem/chains\";\nimport { StakePeriodInfo, StakePositionInfo } from \"../stakeHelper\";\nimport STAKE_ABI from \"./abis/Stake.json\";\n\nexport const STAKE_CONTRACT_ADDRESS =\n \"0xF9bbD81Dd8987A91336778A8CE9C2271f2b2D19B\";\nconst publicClient = getPublicClient(\n ApertureSupportedChainId.ARBITRUM_MAINNET_CHAIN_ID\n);\n\nexport async function getStakePeriodInfo(stakePeriod: number) {\n return publicClient.readContract({\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"getStakePeriodInfo\",\n args: [stakePeriod],\n }) as Promise<StakePeriodInfo>;\n}\n\nexport async function totalTokenStaked() {\n return publicClient.readContract({\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"totalTokensStaked\",\n });\n}\n\nexport async function totalTokenSupply() {\n return publicClient.readContract({\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"totalSupply\",\n });\n}\n\nexport async function startStake(\n amount: number,\n stakePeriod: number,\n walletAddress: Address,\n walletClient: WalletClient\n) {\n return walletClient.writeContract({\n chain: arbitrum,\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"startStake\",\n account: walletAddress,\n args: [amount, stakePeriod],\n });\n}\n\nexport async function claimRewards(\n stakingPositionId: bigint,\n walletAddress: Address,\n walletClient: WalletClient\n) {\n return walletClient.writeContract({\n chain: arbitrum,\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"claimRewards\",\n account: walletAddress,\n args: [stakingPositionId],\n });\n}\n\nexport async function redeemAll(\n stakingPositionId: bigint,\n walletAddress: Address,\n walletClient: WalletClient\n) {\n return walletClient.writeContract({\n chain: arbitrum,\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"endStake\",\n account: walletAddress,\n args: [stakingPositionId],\n });\n}\n\nexport async function getUserStakePositions(address: Address) {\n return publicClient.readContract({\n address: STAKE_CONTRACT_ADDRESS,\n abi: STAKE_ABI,\n functionName: \"getUserStakeNftInfos\",\n args: [address],\n }) as Promise<StakePositionInfo[]>;\n}\n","import { APR } from \"@ui/components\";\n\nexport const DURATION_1 = 86400;\nexport const DURATION_7 = 604800;\nexport const DURATION_30 = 2592000;\nexport const DURATION_60 = 5184000;\nexport const DURATION_90 = 7776000;\n\nexport type StakePositionInfo = {\n nftTokenId: bigint;\n stakeNft: {\n principal: bigint;\n startTime: bigint;\n stakePeriod: bigint;\n lastClaimTime: bigint;\n };\n lastStakedTime: bigint;\n timeUntilRedeem: bigint;\n aptrRewards: bigint;\n usdcRewards: bigint;\n};\n\nexport type StakeInfo = {\n stakePeriods: StakePeriod[];\n averageAmount: string;\n totalAmount: string;\n liquidityPercentage: string;\n};\n\nexport type StakePeriodInfo = {\n aptrInterestRate: bigint;\n usdcInterestRate: bigint;\n stakedAmount: bigint;\n stakedAmountCap: bigint;\n gracePeriod: bigint;\n};\n\nexport type StakePeriod = {\n days: number;\n APR: APR[];\n stakeCap: string;\n stakePeriod: number;\n gracePeriod: number;\n};\n","import { getTokenIcon } from \"@/config/token/tokenIconConfig\";\nimport { getTokenPrice } from \"@/helper/fetchHelper/fetchTokenPrices\";\nimport { getPublicClient } from \"@/helper/getPublicClient\";\nimport { IToken } from \"@aperture/types\";\nimport { ApertureSupportedChainId } from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Token } from \"@uniswap/sdk-core\";\nimport useSWR from \"swr\";\nimport { Address } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { convertToIToken } from \"./useFetchTokenMap\";\nimport { getTokenBalance } from \"./useFetchUserTokensBalance\";\n\nexport function useFetchAptrToken() {\n const { address: walletAddress, isConnected } = useAccount();\n const showFetch = isConnected && walletAddress;\n return useSWR(showFetch ? `token-aptr-${walletAddress}` : null, () =>\n fetchAptrToken(walletAddress)\n );\n}\n\nasync function fetchAptrToken(walletAddress: Address) {\n const chainId = ApertureSupportedChainId.ARBITRUM_MAINNET_CHAIN_ID;\n const publicClient = getPublicClient(chainId);\n const token = new Token(\n chainId,\n AptrToken.address,\n AptrToken.decimals,\n AptrToken.ticker,\n \"Aperture\"\n );\n const balanceMap = await getTokenBalance(publicClient, walletAddress, token);\n const priceMap = await getTokenPrice(chainId, token);\n return convertToIToken(token, chainId, [token.address], balanceMap, priceMap);\n}\nconst APTR_Address = \"0x1C986661170c1834db49C3830130D4038eEeb866\";\nexport const AptrToken: IToken = {\n Icon: getTokenIcon(\n APTR_Address,\n \"APTR\",\n ApertureSupportedChainId.ARBITRUM_MAINNET_CHAIN_ID\n ),\n ticker: \"APTR\",\n address: APTR_Address,\n decimals: 6,\n native: false,\n};\n","import {\n getStakePeriodInfo,\n totalTokenStaked,\n totalTokenSupply,\n} from \"@/utils/routing/stake\";\nimport {\n DURATION_1,\n DURATION_30,\n DURATION_60,\n DURATION_90,\n StakeInfo,\n StakePeriod,\n StakePeriodInfo,\n} from \"@/utils/stakeHelper\";\nimport { IToken } from \"@aperture/types\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useRouter } from \"next/router\";\nimport useSWR from \"swr\";\nimport { useAccount } from \"wagmi\";\nimport { useFetchAptrToken } from \"./useFetchAptrToken\";\n\nexport function useFetchStakeInfo() {\n const router = useRouter();\n const { address: walletAddress, isConnected } = useAccount();\n const { data: aptrTokenInfo } = useFetchAptrToken();\n\n const showFetch =\n isConnected &&\n walletAddress &&\n !!aptrTokenInfo &&\n router.pathname.startsWith(\"/stake\");\n\n return useSWR(showFetch ? `user-stake-info` : null, () =>\n fetchStakeInfo(aptrTokenInfo)\n );\n}\n\nconst fetchStakeInfo = async (aptrTokenInfo: IToken): Promise<StakeInfo> => {\n const timestampNow = Math.floor(Date.now() / 1000);\n const stakeInfo30 = await getStakePeriodInfo(DURATION_30);\n const stakeInfo60 = await getStakePeriodInfo(DURATION_60);\n const stakeInfo90 = await getStakePeriodInfo(DURATION_90);\n const totalStaked = bigDecimal.divide(await totalTokenStaked(), 1e6, 6);\n const totalSupply = await totalTokenSupply();\n const circulatingSupply = getCirculatingSupply(timestampNow);\n return {\n stakePeriods: [\n fetchStakePeriod(30, stakeInfo30, aptrTokenInfo.price),\n fetchStakePeriod(60, stakeInfo60, aptrTokenInfo.price),\n fetchStakePeriod(90, stakeInfo90, aptrTokenInfo.price),\n ],\n averageAmount:\n bigDecimal.compareTo(totalSupply, 0) > 0\n ? bigDecimal.divide(totalStaked, totalSupply, 6)\n : \"0\",\n totalAmount: totalStaked,\n liquidityPercentage: bigDecimal.divide(\n bigDecimal.multiply(totalStaked, 100),\n circulatingSupply,\n 2\n ),\n };\n};\n\nconst fetchStakePeriod = (\n days: number,\n stakePeriodInfo: StakePeriodInfo,\n aptrTokenPrice?: string\n): StakePeriod => {\n const totalCap =\n bigDecimal.compareTo(stakePeriodInfo.stakedAmountCap, 1e15) > 0\n ? 1e15\n : stakePeriodInfo.stakedAmountCap;\n const stakeCap = bigDecimal.divide(\n bigDecimal.subtract(totalCap, stakePeriodInfo.stakedAmount),\n 1e6,\n 2\n );\n return {\n days,\n APR: [\n {\n percent: bigDecimal.divide(stakePeriodInfo.aptrInterestRate, 1e6, 0),\n unit: \"APTR\",\n },\n {\n percent:\n bigDecimal.compareTo(aptrTokenPrice, 0) > 0\n ? bigDecimal.divide(\n bigDecimal.divide(stakePeriodInfo.usdcInterestRate, 1e6, 6),\n aptrTokenPrice,\n 0\n )\n : \"-\",\n unit: \"USDC\",\n },\n ],\n stakeCap: bigDecimal.compareTo(stakeCap, 0) > 0 ? stakeCap : \"0\",\n stakePeriod: days * DURATION_1,\n gracePeriod: Number(stakePeriodInfo.gracePeriod),\n };\n};\n\nconst getCirculatingSupply = (timestampSecs: number) => {\n // Date and time (GMT): Friday, May 31, 2024 10:00:00 AM\n const TGESecs = 1717149600;\n if (timestampSecs < TGESecs) return 0;\n\n const oneMonthSecs = 60 * 60 * 24 * 30;\n const threeMonthSecs = oneMonthSecs * 3;\n const sixMonthSecs = 2 * threeMonthSecs;\n const nineMonthSecs = 3 * threeMonthSecs;\n\n const publicSale = 0.013;\n const airdrop = 0.042;\n const investorSeedTotal = 0.12;\n const investorStratTotal = 0.1;\n\n const initialSeedInvestor = investorSeedTotal * 0.05;\n const initialStratInvestor = investorStratTotal * 0.05;\n\n const seedUnlockTimestampSecs = TGESecs + sixMonthSecs;\n const seedMonthlyUnlockPercentage =\n (investorSeedTotal - initialSeedInvestor) / 24;\n const vestedSeedInvestor =\n timestampSecs > seedUnlockTimestampSecs\n ? seedMonthlyUnlockPercentage *\n ((timestampSecs - seedUnlockTimestampSecs) / oneMonthSecs)\n : 0;\n\n const stratUnlockTimestampSecs = TGESecs + threeMonthSecs;\n const stratMonthUnlockPercentage =\n (investorStratTotal - initialStratInvestor) / 18;\n const vestedStratInvestor =\n timestampSecs > stratUnlockTimestampSecs\n ? stratMonthUnlockPercentage *\n ((timestampSecs - stratUnlockTimestampSecs) / oneMonthSecs)\n : 0;\n\n const ecosystemTotal = 0.377;\n const initialEcosystem = ecosystemTotal * 0.05;\n const vestedEcosystem =\n ((ecosystemTotal - initialEcosystem) / 30) *\n ((timestampSecs - TGESecs) / oneMonthSecs);\n\n const communityTotal = 0.12;\n const initialCommunity = communityTotal * 0.05;\n const vestedCommunity =\n ((communityTotal - initialCommunity) / 30) *\n ((timestampSecs - TGESecs) / oneMonthSecs);\n\n const teamTotal = 0.2;\n const teamUnlockTimestampSecs = TGESecs + nineMonthSecs;\n const teamMonthlyUnlockPercentage = teamTotal / 24;\n const vestedTeam =\n timestampSecs > teamUnlockTimestampSecs\n ? teamMonthlyUnlockPercentage *\n ((timestampSecs - teamUnlockTimestampSecs) / oneMonthSecs)\n : 0;\n return (\n (airdrop +\n publicSale +\n initialSeedInvestor +\n vestedSeedInvestor +\n initialStratInvestor +\n vestedStratInvestor +\n initialEcosystem +\n vestedEcosystem +\n initialCommunity +\n vestedCommunity +\n vestedTeam) *\n 1e9\n );\n};\n","import { getUserStakePositions } from \"@/utils/routing/stake\";\nimport { DURATION_30, StakePeriod } from \"@/utils/stakeHelper\";\nimport { ApertureLogos, TokenIcons } from \"@aperture/assetkit\";\nimport { StakeCardInfo } from \"@ui/components\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useRouter } from \"next/router\";\nimport useSWR from \"swr\";\nimport { Address } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { useFetchStakeInfo } from \"./useFetchStakeInfo\";\n\nexport function useFetchStakePositions() {\n const { address: walletAddress, isConnected } = useAccount();\n const { data: stakeInfo, isLoading: stakeInfoLoading } = useFetchStakeInfo();\n const router = useRouter();\n\n const showFetch =\n isConnected &&\n walletAddress &&\n !stakeInfoLoading &&\n !!stakeInfo &&\n router.pathname.startsWith(\"/stake\");\n\n return useSWR(\n showFetch ? `user-stake-positions-${walletAddress}` : null,\n () => fetchStakePositions(walletAddress, stakeInfo?.stakePeriods)\n );\n}\n\nconst fetchStakePositions = async (\n walletAddress: Address,\n stakePeriod: StakePeriod[]\n): Promise<StakeCardInfo[]> => {\n const positionInfo = await getUserStakePositions(walletAddress);\n return positionInfo.map((position) => ({\n positionId: position.nftTokenId,\n token: {\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n amount: bigDecimal.divide(position.stakeNft.principal, 1e6, 6),\n },\n APR: stakePeriod[Number(position.stakeNft.stakePeriod) / DURATION_30 - 1]\n .APR,\n stakeReward: [\n {\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n amount: bigDecimal.divide(position.aptrRewards, 1e6, 6),\n },\n {\n Icon: TokenIcons.UsdcIcon,\n ticker: \"USDC\",\n amount: bigDecimal.divide(position.usdcRewards, 1e6, 6),\n },\n ],\n lastStakedTime: Number(position.lastStakedTime),\n stakePeriod: Number(position.stakeNft.stakePeriod),\n gracePeriod:\n stakePeriod[Number(position.stakeNft.stakePeriod) / DURATION_30 - 1]\n .gracePeriod,\n }));\n};\n","import { BonusNFT } from \"@/config/url\";\nimport { useFetchStakeInfo } from \"@/hooks/useFetchStakeInfo\";\nimport { useFetchStakePositions } from \"@/hooks/useFetchStakePositions\";\nimport { useFetchUserTokensBalance } from \"@/hooks/useFetchUserTokensBalance\";\nimport { startStake } from \"@/utils/routing/stake\";\nimport { DURATION_1 } from \"@/utils/stakeHelper\";\nimport {\n Button,\n PreviewStakeContent,\n PreviewStakeProps,\n Spinner,\n StakeFinishContent,\n} from \"@aperture/uikit\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useAccount, useWalletClient } from \"wagmi\";\nimport { useSnackbarV2 } from \"../SnackbarContext/SnackbarContextV2\";\n\ninterface PreviewStakeModalProps extends PreviewStakeProps {\n stakeStart: () => void;\n stakeFinish: (success: boolean) => void;\n onClose: () => void;\n}\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-top: 16px;\n gap: ${({ theme }) => theme.spacing.md};\n`;\n\nconst StyledButton = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n`;\n\nexport const PreviewStakeModal: React.FC<PreviewStakeModalProps> = ({\n token,\n days,\n APR,\n share,\n stakeStart,\n stakeFinish,\n onClose,\n}) => {\n const { addSnackbar } = useSnackbarV2();\n const { state, setModalState } = useModal();\n const { isOpen } = state.STAKE_FINISH_MODAL;\n const { data: walletClient } = useWalletClient();\n const { address: walletAddress } = useAccount();\n const { mutate: mutateBalance } = useFetchUserTokensBalance();\n const { mutate: mutateStakeInfo } = useFetchStakeInfo();\n const { mutate: mutateStakePositions } = useFetchStakePositions();\n const [isPending, setIsPending] = useState<boolean>(false);\n\n const timerRef = useRef(null);\n const handleOpenStakeFinishModal = () => {\n setIsPending(true);\n stakeStart();\n startStake(\n Number(bigDecimal.multiply(token.amount, 1e6)),\n days * DURATION_1,\n walletAddress,\n walletClient\n )\n .then((response) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(async () => {\n await mutateBalance();\n await mutateStakeInfo();\n await mutateStakePositions();\n setIsPending(false);\n stakeFinish(true);\n setModalState(E_ModalKey.STAKE_FINISH_MODAL, true);\n }, 500);\n })\n .catch((error) => {\n addSnackbar({\n info: error.message.includes(\"reject\")\n ? \"User rejected the transaction.\"\n : \"Failed to stake tokens.\",\n status: \"failed\",\n });\n setIsPending(false);\n stakeFinish(false);\n });\n };\n\n return (\n <>\n <PreviewStakeContent token={token} days={days} APR={APR} share={share} />\n <ButtonWrapper>\n <StyledButton\n width=\"100%\"\n variant=\"contained\"\n color=\"default\"\n size=\"lg\"\n onClick={onClose}\n >\n Cancel\n </StyledButton>\n <StyledButton\n onClick={handleOpenStakeFinishModal}\n disabled={isPending}\n variant=\"contained\"\n color=\"secondary\"\n size=\"lg\"\n width=\"100%\"\n >\n {isPending ? <Spinner /> : \"Yes, Stake\"}\n </StyledButton>\n </ButtonWrapper>\n <Modal\n isModalOpen={isOpen}\n onClose={() => setModalState(E_ModalKey.STAKE_FINISH_MODAL, false)}\n >\n <StakeFinishContent\n {...{\n token,\n bonus: Math.floor(Number(token.amount) / 1e3),\n bonusLink: BonusNFT + walletAddress,\n }}\n />\n </Modal>\n </>\n );\n};\n","import { useConnectStore } from \"@/components/GlobalStore\";\nimport { WrongNetworkModal } from \"@/components/Modal/WrongNetworkModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { useFetchStakeInfo } from \"@/hooks/useFetchStakeInfo\";\nimport { useFetchStakePositions } from \"@/hooks/useFetchStakePositions\";\nimport { STAKE_FEATURE_PAUSED } from \"@/pages/stake\";\nimport { getSwitchNetworkError } from \"@/utils/networkHelper\";\nimport { claimRewards, redeemAll } from \"@/utils/routing/stake\";\nimport { ApertureLogos, TokenIcons } from \"@aperture/assetkit\";\nimport {\n FlexColumn,\n StakeCard,\n StakeCardInfo,\n StakeRedeemContent,\n SupportedChainId,\n T3Regular,\n} from \"@aperture/uikit\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport {\n ApertureSupportedChainId,\n getLogger,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { useAccount, useSwitchChain, useWalletClient } from \"wagmi\";\n\nconst StakeCardWrapper = styled(FlexColumn)`\n width: 532px;\n gap: ${({ theme }) => theme.spacing.md};\n`;\nconst EmptyBoxText = styled(T3Regular)`\n color: ${({ theme }) => theme.colors.global.text.T2};\n`;\n\nexport const StakePositions: React.FC<{\n positions: StakeCardInfo[];\n}> = ({ positions }) => {\n const { network } = useNetwork();\n const { state, setModalState } = useModal();\n const { isOpen: isStakeRedeemModalOpen } = state.STAKE_REDEEM_MODAL;\n const { isOpen: isWrongNetworkModalOpen } = state.WRONG_NETWORK_MODAL;\n const { connectType } = useConnectStore();\n const { addSnackbar } = useSnackbarV2();\n const { data: walletClient } = useWalletClient();\n const { address: walletAddress } = useAccount();\n const { mutate: mutateStakeInfo } = useFetchStakeInfo();\n const { mutate: mutateStakePositions } = useFetchStakePositions();\n const [isClaimingRewards, setIsClaimingRewards] = useState<bigint>(-1n);\n const [isRewardsClaimed, setIsRewardsClaimed] = useState<bigint>(-1n);\n const [isRedeemingAll, setIsRedeemingAll] = useState<bigint>(-1n);\n const [redeemPosition, setRedeemPosition] = useState<StakeCardInfo>();\n const {\n switchChain,\n isError: isSwitchChainError,\n error: switchChainErrorMsg,\n } = useSwitchChain();\n const isSupportedNetwork = network === SupportedChainId.ARBITRUM;\n\n const toggleStakeRedeemModal = (open: boolean) => {\n setModalState(E_ModalKey.STAKE_REDEEM_MODAL, open);\n };\n const toggleNotSupportedModal = (open: boolean) => {\n setModalState(E_ModalKey.STAKE_REDEEM_MODAL, open);\n };\n useEffect(() => {\n if (isSwitchChainError) {\n getLogger().warn(\"StakePosition.SwitchNetworkError\", {\n error: (switchChainErrorMsg as Error).message,\n });\n addSnackbar({\n info: getSwitchNetworkError(connectType),\n status: \"failed\",\n });\n }\n }, [isSwitchChainError]);\n\n const handleClaimRewards = (position: StakeCardInfo) => {\n setIsClaimingRewards(position.positionId);\n claimRewards(position.positionId, walletAddress, walletClient)\n .then(async (response) => {\n setIsRewardsClaimed(position.positionId);\n setIsClaimingRewards(-1n);\n addSnackbar({\n info: \"Reward tokens has been claimed!\",\n status: \"completed\",\n });\n })\n .catch((error) => {\n addSnackbar({\n info: error.message.includes(\"reject\")\n ? \"User rejected the transaction.\"\n : \"Failed to claim reward tokens.\",\n status: \"failed\",\n });\n setIsClaimingRewards(-1n);\n });\n };\n\n const timerRef = useRef(null);\n const handleRedeemAll = (position: StakeCardInfo) => {\n setRedeemPosition(position);\n setIsRedeemingAll(position.positionId);\n redeemAll(position.positionId, walletAddress, walletClient)\n .then((response) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(async () => {\n await mutateStakeInfo();\n await mutateStakePositions();\n setIsRedeemingAll(-1n);\n toggleStakeRedeemModal(true);\n }, 500);\n })\n .catch((error) => {\n addSnackbar({\n info: error.message.includes(\"reject\")\n ? \"User rejected the transaction.\"\n : \"Failed to redeem all tokens.\",\n status: \"failed\",\n });\n setIsRedeemingAll(-1n);\n setRedeemPosition(undefined);\n });\n };\n\n return (\n <>\n <StakeCardWrapper>\n {positions.length > 0 ? (\n positions.map((position) => (\n <StakeCard\n key={Number(position.positionId)}\n isStakePaused={STAKE_FEATURE_PAUSED}\n isClaimingRewards={isClaimingRewards === position.positionId}\n isRewardsClaimed={isRewardsClaimed === position.positionId}\n isRedeemingAll={isRedeemingAll === position.positionId}\n onClaim={() =>\n isSupportedNetwork\n ? handleClaimRewards(position)\n : toggleNotSupportedModal(true)\n }\n onRedeemAll={() =>\n isSupportedNetwork\n ? handleRedeemAll(position)\n : toggleNotSupportedModal(true)\n }\n {...position}\n />\n ))\n ) : (\n <EmptyBoxText>You have 0 APTR staked currently.</EmptyBoxText>\n )}\n </StakeCardWrapper>\n <Modal\n isModalOpen={isWrongNetworkModalOpen}\n onClose={() => toggleNotSupportedModal(false)}\n >\n <WrongNetworkModal\n {...{\n switchToChain: SupportedChainId.ARBITRUM,\n onclose: () => {\n toggleNotSupportedModal(false);\n switchChain?.({\n chainId: ApertureSupportedChainId.ARBITRUM_MAINNET_CHAIN_ID,\n });\n },\n }}\n />\n </Modal>\n <Modal\n isModalOpen={isStakeRedeemModalOpen}\n onClose={() => {\n toggleStakeRedeemModal(false);\n setRedeemPosition(undefined);\n }}\n >\n {redeemPosition && (\n <StakeRedeemContent\n {...{\n tokens: [\n {\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n amount: bigDecimal.add(\n redeemPosition.token.amount,\n redeemPosition.stakeReward[0].amount\n ),\n },\n {\n Icon: TokenIcons.UsdcIcon,\n ticker: \"USDC\",\n amount: redeemPosition.stakeReward[1].amount,\n },\n ],\n }}\n />\n )}\n </Modal>\n </>\n );\n};\n","import StakeBtn from \"@/components/Button/StakeBtn\";\nimport { useConnectStore } from \"@/components/GlobalStore\";\nimport { PreviewStakeModal } from \"@/components/Modal/PreviewStakeModal\";\nimport { WrongNetworkModal } from \"@/components/Modal/WrongNetworkModal\";\nimport { useNetwork } from \"@/components/NetworkContext/NetworkContext\";\nimport { useSnackbarV2 } from \"@/components/SnackbarContext/SnackbarContextV2\";\nimport { AptrToken, useFetchAptrToken } from \"@/hooks/useFetchAptrToken\";\nimport { useFetchStakeInfo } from \"@/hooks/useFetchStakeInfo\";\nimport { useFetchStakePositions } from \"@/hooks/useFetchStakePositions\";\nimport { useUserIPRestriction } from \"@/hooks/useUserIPRestriction\";\nimport { getSwitchNetworkError } from \"@/utils/networkHelper\";\nimport { STAKE_CONTRACT_ADDRESS } from \"@/utils/routing/stake\";\nimport { StakePositions } from \"@/views/StakePositions\";\nimport { Loader } from \"@/views/style\";\nimport { AccessoryIcons, ApertureLogos } from \"@aperture/assetkit\";\nimport { E_ModalKey, Modal, useModal } from \"@aperture/uikitv2\";\nimport {\n ApertureSupportedChainId,\n getLogger,\n} from \"@aperture_finance/uniswap-v3-automation-sdk\";\nimport { Flex, FlexColumn } from \"@ui/common\";\nimport {\n Headline1,\n InfoPopover,\n SelectedStakePeriod,\n StakeInput,\n StakePeriodContent,\n StakeStats,\n} from \"@ui/components\";\nimport { SupportedChainId, formatTokenAmount } from \"@ui/utils\";\nimport bigDecimal from \"js-big-decimal\";\nimport { useEffect, useState } from \"react\";\nimport styled, { useTheme } from \"styled-components\";\nimport { useAccount, useSwitchChain } from \"wagmi\";\n\nconst ErrorWrapper = styled(FlexColumn)`\n width: 100%;\n height: calc(100vh - 102px);\n margin: auto;\n gap: 24px;\n align-items: center;\n justify-content: center;\n font-family: Roboto Flex;\n font-weight: 400;\n font-size: 16px;\n line-height: 20px;\n color: ${({ theme }) => theme.colors.global.text.T1};\n text-align: center;\n\n > svg,\n path {\n width: 70px;\n height: 60px;\n fill: ${({ theme }) => theme.colors.global.text.T1};\n }\n`;\nconst ErrorText = styled.div`\n margin-top: 30px;\n`;\nconst Wrapper = styled(FlexColumn)`\n flex: 1;\n width: 100%;\n height: calc(100vh - 102px);\n max-width: 1080px;\n z-index: 1;\n`;\nconst PageContainer = styled(Flex)`\n margin-top: 20px;\n padding-bottom: 30px;\n justify-content: center;\n gap: 80px;\n width: 100%;\n max-width: calc(100vw * 0.75);\n`;\nconst CardContainer = styled(FlexColumn)`\n gap: ${({ theme }) => theme.spacing.xl};\n`;\nconst PageTitle = styled(Headline1)`\n font-weight: 500;\n font-family: Dunbar Tall;\n color: ${({ theme }) => theme.colors.global.text.T1};\n`;\nconst InputSection = styled(FlexColumn)`\n padding-top: 24px;\n max-width: 310px;\n`;\nconst Text1 = styled.div<{ color?: string }>`\n font-family: \"Roboto Flex\";\n font-size: 14px;\n line-height: 16px;\n color: ${({ theme, color }) => color ?? theme.colors.global.text.T1};\n`;\nconst Text2 = styled.div`\n font-family: \"Roboto Flex\";\n font-size: 14px;\n line-height: 16px;\n font-weight: 500;\n background: ${({ theme }) => theme.colors.global.background.Gradient2};\n background-clip: text;\n -webkit-background-clip: text;\n color: ${({ theme }) => theme.colors.transparent.transparent};\n`;\n\nexport const STAKE_FEATURE_PAUSED = true;\n\nexport default function Stake() {\n const theme = useTheme();\n const { state, setModalState } = useModal();\n const { isOpen: isStakePreviewModalOpen } = state.STAKE_PREVIEW_MODAL;\n const { isOpen: isStakePeriodModalOpen } = state.STAKE_PERIOD_MODAL;\n const { isOpen: isWrongNetworkModalOpen } = state.STAKE_PERIOD_MODAL;\n const { address: walletAddress } = useAccount();\n const [stakeAmount, setStakeAmount] = useState<string>(\"\");\n const [selectedPeriod, setSelectedPeriod] = useState(0);\n const { data: userIpInfo, isLoading: ipInfoLoading } = useUserIPRestriction();\n const { data: aptrTokenInfo, isLoading: aptrInfoLoading } =\n useFetchAptrToken();\n const { data: stakeInfo, isLoading: stakeInfoLoading } = useFetchStakeInfo();\n const { data: stakePositions, isLoading: stakePositionLoading } =\n useFetchStakePositions();\n const [isStaking, setIsStaking] = useState<boolean>(false);\n const { connectType } = useConnectStore();\n\n const { network } = useNetwork();\n const isSupportedNetwork = network === SupportedChainId.ARBITRUM;\n const {\n switchChain,\n isError: isSwitchChainError,\n error: switchChainErrorMsg,\n } = useSwitchChain();\n const { addSnackbar } = useSnackbarV2();\n\n const toggleStakePreviewModal = (open: boolean) => {\n setModalState(E_ModalKey.STAKE_PREVIEW_MODAL, open);\n };\n const toggleStakePeriodModal = (open: boolean) => {\n setModalState(E_ModalKey.STAKE_PERIOD_MODAL, open);\n };\n const toggleNotSupportedModal = (open: boolean) => {\n setModalState(E_ModalKey.WRONG_NETWORK_MODAL, open);\n };\n useEffect(() => {\n if (isSwitchChainError) {\n getLogger().warn(\"Stake.SwitchNetworkError\", {\n error: (switchChainErrorMsg as Error).message,\n });\n addSnackbar({\n info: getSwitchNetworkError(connectType),\n status: \"failed\",\n });\n }\n }, [isSwitchChainError]);\n\n const loading =\n ipInfoLoading ||\n aptrInfoLoading ||\n stakeInfoLoading ||\n stakePositionLoading ||\n !userIpInfo ||\n !aptrTokenInfo ||\n !stakeInfo ||\n !stakePositions;\n const stakeCap = stakeInfo?.stakePeriods?.[selectedPeriod]?.stakeCap ?? \"0\";\n const isStakeError = bigDecimal.compareTo(stakeAmount, stakeCap) > 0;\n const insufficientBalance =\n bigDecimal.compareTo(stakeAmount, aptrTokenInfo?.amount) > 0;\n\n const { days, APR } = stakeInfo?.stakePeriods[selectedPeriod] ?? {};\n\n return (\n !!userIpInfo &&\n !userIpInfo?.isRestricted &&\n (!walletAddress ? (\n <ErrorWrapper>\n <AccessoryIcons.HandEmptyIcon />\n <ErrorText>Connect wallet and select correct network.</ErrorText>\n </ErrorWrapper>\n ) : loading ? (\n <Wrapper alignItems=\"center\" justifyContent=\"center\">\n <Loader fill={theme.colors.global.text.T1} />\n </Wrapper>\n ) : (\n <PageContainer>\n <CardContainer>\n <PageTitle>Stake dashboard</PageTitle>\n <StakePositions positions={stakePositions} />\n </CardContainer>\n <InputSection gap={20}>\n {!STAKE_FEATURE_PAUSED && (\n <>\n <FlexColumn gap=\"md\">\n <StakeInput\n title=\"Stake Amount\"\n token={{\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n amount: aptrTokenInfo?.amount,\n price: aptrTokenInfo?.price,\n }}\n stakeCap={stakeCap}\n value={stakeAmount}\n showMax={true}\n showBalance={true}\n onValueChange={(value: string) => setStakeAmount(value)}\n isError={insufficientBalance}\n errorMsg={\n isStakeError\n ? `Staking amount exceeds remaining staking limit of ${formatTokenAmount(\n stakeCap,\n 2\n )}.`\n : \"\"\n }\n />\n {!isStakeError && (\n <Flex justifyContent=\"space-between\">\n <Text1 color={theme.colors.global.text.T2}>\n Remaining Stake Limit\n </Text1>\n <Text1>{formatTokenAmount(stakeCap, 2)} APTR</Text1>\n </Flex>\n )}\n </FlexColumn>\n {stakeInfo?.stakePeriods && (\n <FlexColumn gap=\"md\">\n <Flex gap=\"sm\">\n <Text1>Stake Period</Text1>\n <InfoPopover\n content=\"USDC APR is calculated based on the current price of APTR token.\"\n iconSize={14}\n />\n </Flex>\n <SelectedStakePeriod\n days={stakeInfo?.stakePeriods[selectedPeriod].days}\n APR={stakeInfo?.stakePeriods[selectedPeriod].APR}\n onClick={() => toggleStakePeriodModal(true)}\n />\n </FlexColumn>\n )}\n <FlexColumn gap=\"md\">\n <Text2>Stake now to earn a bonus Aperture NFT!</Text2>\n <StakeBtn\n stakeToken={AptrToken}\n stakeAmount={stakeAmount}\n contractAddress={STAKE_CONTRACT_ADDRESS}\n isStaking={isStaking}\n isStakeError={isStakeError}\n isSupportedNetwork={isSupportedNetwork}\n insufficientBalance={insufficientBalance}\n onClick={() =>\n isSupportedNetwork\n ? toggleStakePreviewModal(true)\n : toggleNotSupportedModal(true)\n }\n />\n </FlexColumn>\n </>\n )}\n <StakeStats\n token={{\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n price: aptrTokenInfo?.price,\n }}\n averageAmount={stakeInfo.averageAmount}\n totalAmount={stakeInfo.totalAmount}\n percentage={stakeInfo.liquidityPercentage}\n />\n </InputSection>\n <Modal\n isModalOpen={isStakePreviewModalOpen}\n onClose={() => toggleStakePreviewModal(false)}\n >\n <PreviewStakeModal\n {...{\n token: {\n Icon: ApertureLogos.ApertureLogo2,\n ticker: \"APTR\",\n amount: stakeAmount,\n },\n days,\n APR,\n share: bigDecimal.divide(\n bigDecimal.multiply(stakeAmount, 100),\n bigDecimal.add(stakeInfo.totalAmount ?? 0, stakeAmount),\n 3\n ),\n stakeStart: () => setIsStaking(true),\n stakeFinish: (success: boolean) => {\n if (success) setStakeAmount(\"\");\n setIsStaking(false);\n },\n onClose: () => toggleStakePreviewModal(false),\n }}\n />\n </Modal>\n <Modal\n padding={20}\n isModalOpen={isStakePeriodModalOpen}\n onClose={() => toggleStakePeriodModal(false)}\n >\n <StakePeriodContent\n {...{\n options: stakeInfo?.stakePeriods.map((period, idx) => ({\n ...period,\n selected: idx === selectedPeriod,\n onClick: () => {\n setSelectedPeriod(idx);\n toggleStakePeriodModal(false);\n },\n })),\n }}\n />\n </Modal>\n <Modal\n isModalOpen={isWrongNetworkModalOpen}\n onClose={() => toggleNotSupportedModal(false)}\n >\n <WrongNetworkModal\n {...{\n switchToChain: SupportedChainId.ARBITRUM,\n onclose: () => {\n toggleNotSupportedModal(false);\n switchChain?.({\n chainId: ApertureSupportedChainId.ARBITRUM_MAINNET_CHAIN_ID,\n });\n },\n }}\n />\n </Modal>\n </PageContainer>\n ))\n );\n}\n"],"names":["window","__NEXT_P","push","__webpack_require__","StyledButton","styled","Button","theme","param","concat","colors","global","background","BG2","isError","error","text","T3","StakeBtnComponent","stakeToken","stakeAmount","isStaking","isStakeError","insufficientBalance","onClick","jsx_runtime","jsx","variant","color","width","size","disabled","bigDecimal","Spinner","ticker","ApproveAndStakeBtn","isSupportedNetwork","contractAddress","props","approved","setApproved","useState","isNative","native","jsxs","Fragment","ApproveTokenBtn","style","fontSize","lineHeight","token","amount","approveOnChange","approve","useNative","hidden","StakeBtn","memo","STAKE_CONTRACT_ADDRESS","publicClient","getPublicClient","ApertureSupportedChainId","getStakePeriodInfo","stakePeriod","readContract","address","abi","STAKE_ABI","functionName","args","totalTokenStaked","totalTokenSupply","startStake","walletAddress","walletClient","writeContract","chain","arbitrum","account","claimRewards","stakingPositionId","redeemAll","getUserStakePositions","useFetchAptrToken","isConnected","useAccount","useSWR","showFetch","fetchAptrToken","chainId","Token","AptrToken","decimals","balanceMap","getTokenBalance","priceMap","getTokenPrice","convertToIToken","APTR_Address","Icon","getTokenIcon","useFetchStakeInfo","router","useRouter","data","aptrTokenInfo","pathname","startsWith","fetchStakeInfo","timestampNow","Math","floor","Date","now","stakeInfo30","stakeInfo60","stakeInfo90","totalStaked","totalSupply","circulatingSupply","getCirculatingSupply","stakePeriods","fetchStakePeriod","price","averageAmount","totalAmount","liquidityPercentage","days","stakePeriodInfo","aptrTokenPrice","totalCap","stakedAmountCap","stakeCap","stakedAmount","APR","percent","aptrInterestRate","unit","usdcInterestRate","gracePeriod","Number","airdrop","timestampSecs","TGESecs","seedMonthlyUnlockPercentage","seedUnlockTimestampSecs","oneMonthSecs","investorStratTotal","stratMonthUnlockPercentage","stratUnlockTimestampSecs","ecosystemTotal","communityTotal","teamMonthlyUnlockPercentage","teamUnlockTimestampSecs","vestedTeam","useFetchStakePositions","stakeInfo","isLoading","stakeInfoLoading","fetchStakePositions","positionInfo","map","positionId","position","nftTokenId","ApertureLogos","stakeNft","principal","stakeReward","aptrRewards","TokenIcons","usdcRewards","lastStakedTime","ButtonWrapper","spacing","md","PreviewStakeModal","share","stakeStart","stakeFinish","onClose","addSnackbar","useSnackbarV2","state","setModalState","useModal","isOpen","STAKE_FINISH_MODAL","useWalletClient","mutate","mutateBalance","useFetchUserTokensBalance","mutateStakeInfo","mutateStakePositions","isPending","setIsPending","timerRef","useRef","handleOpenStakeFinishModal","then","current","clearTimeout","setTimeout","E_ModalKey","catch","info","message","includes","status","PreviewStakeContent","Modal","isModalOpen","StakeFinishContent","bonus","bonusLink","BonusNFT","StakeCardWrapper","FlexColumn","EmptyBoxText","T3Regular","T2","StakePositions","positions","network","useNetwork","isStakeRedeemModalOpen","STAKE_REDEEM_MODAL","isWrongNetworkModalOpen","WRONG_NETWORK_MODAL","connectType","useConnectStore","isClaimingRewards","setIsClaimingRewards","isRewardsClaimed","setIsRewardsClaimed","isRedeemingAll","setIsRedeemingAll","redeemPosition","setRedeemPosition","switchChain","isSwitchChainError","switchChainErrorMsg","useSwitchChain","SupportedChainId","toggleStakeRedeemModal","open","toggleNotSupportedModal","useEffect","getLogger","warn","getSwitchNetworkError","handleClaimRewards","response","handleRedeemAll","undefined","length","StakeCard","isStakePaused","STAKE_FEATURE_PAUSED","onClaim","onRedeemAll","WrongNetworkModal","switchToChain","onclose","StakeRedeemContent","tokens","ErrorWrapper","T1","ErrorText","Wrapper","PageContainer","Flex","CardContainer","xl","PageTitle","Headline1","InputSection","Text1","Text2","Gradient2","transparent","Stake","useTheme","isStakePreviewModalOpen","STAKE_PREVIEW_MODAL","isStakePeriodModalOpen","STAKE_PERIOD_MODAL","setStakeAmount","selectedPeriod","setSelectedPeriod","userIpInfo","ipInfoLoading","useUserIPRestriction","aptrInfoLoading","stakePositions","stakePositionLoading","setIsStaking","toggleStakePreviewModal","toggleStakePeriodModal","_stakeInfo_stakePeriods_selectedPeriod","isRestricted","loading","alignItems","justifyContent","Loader","fill","gap","StakeInput","title","value","showMax","showBalance","onValueChange","errorMsg","formatTokenAmount","InfoPopover","content","iconSize","SelectedStakePeriod","StakeStats","percentage","success","padding","StakePeriodContent","options","period","idx","selected","AccessoryIcons"],"sourceRoot":""}