@ape.swap/bonds-sdk 5.1.43 → 5.1.45
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/dist/config/constants/tooltips.d.ts +1 -1
- package/dist/config/constants/tooltips.js +1 -1
- package/dist/config/constants/tooltips.js.map +1 -1
- package/dist/views/BuyBond/BuyComponent.js +14 -4
- package/dist/views/BuyBond/BuyComponent.js.map +1 -1
- package/dist/views/BuyBond/components/Estimations.js +3 -1
- package/dist/views/BuyBond/components/Estimations.js.map +1 -1
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +8 -4
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ const TooltipText = {
|
|
|
7
7
|
MaxBuy: (payoutToken) => `This is the maximum amount of ${payoutToken} you can currently purchase through this Bond.`,
|
|
8
8
|
Premium: 'This is the dollar value of the bonus tokens you’ll receive at current market price.',
|
|
9
9
|
Fee: 'This is the platform fee (2%).',
|
|
10
|
-
Boost: `This is the dollar value of the additional tokens you’ll receive thanks to your
|
|
10
|
+
Boost: (promotionReason = 'Ape Tier') => `This is the dollar value of the additional tokens you’ll receive thanks to your ${promotionReason} at current market price.`,
|
|
11
11
|
};
|
|
12
12
|
const UserBillTooltipText = {
|
|
13
13
|
FullyVested: 'This is the time remaining until all tokens from the bond are available to claim.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltips.js","sources":["../../../src/config/constants/tooltips.ts"],"sourcesContent":["//TODO: remove this shit\n\nexport const TooltipText = {\n Discount: 'This is the percentage of additional tokens you’ll get based on the current bond’s bonus.',\n ARR: 'This is the Annualized Rate of Return you would receive considering the current bonus, adjusted for APR.',\n Terms: 'This is the amount of days it will take for all tokens in the Bond to fully vest.',\n TokensRemaining: 'This is the amount of remaining tokens for sale in this Bond.',\n MaxBuy: (payoutToken: string) =>\n `This is the maximum amount of ${payoutToken} you can currently purchase through this Bond.`,\n Premium: 'This is the dollar value of the bonus tokens you’ll receive at current market price.',\n Fee: 'This is the platform fee (2%).',\n Boost: `This is the dollar value of the additional tokens you’ll receive thanks to your
|
|
1
|
+
{"version":3,"file":"tooltips.js","sources":["../../../src/config/constants/tooltips.ts"],"sourcesContent":["//TODO: remove this shit\n\nexport const TooltipText = {\n Discount: 'This is the percentage of additional tokens you’ll get based on the current bond’s bonus.',\n ARR: 'This is the Annualized Rate of Return you would receive considering the current bonus, adjusted for APR.',\n Terms: 'This is the amount of days it will take for all tokens in the Bond to fully vest.',\n TokensRemaining: 'This is the amount of remaining tokens for sale in this Bond.',\n MaxBuy: (payoutToken: string) =>\n `This is the maximum amount of ${payoutToken} you can currently purchase through this Bond.`,\n Premium: 'This is the dollar value of the bonus tokens you’ll receive at current market price.',\n Fee: 'This is the platform fee (2%).',\n Boost: (promotionReason = 'Ape Tier') =>\n `This is the dollar value of the additional tokens you’ll receive thanks to your ${promotionReason} at current market price.`,\n}\n\nexport const UserBillTooltipText = {\n FullyVested: 'This is the time remaining until all tokens from the bond are available to claim.',\n Pending: 'This is the amount of unvested tokens that cannot be claimed yet.',\n Claimable: 'This is the amount of tokens that have vested and are available to claim.',\n YouSpent: 'This is the dollar amount you spent on the bond at the time of purchase.',\n Claimed: 'This is the amount of tokens that you have already claimed.',\n}\n"],"names":[],"mappings":"AAAA;AAEO,MAAM,WAAW,GAAG;AACzB,IAAA,QAAQ,EAAE,2FAA2F;AACrG,IAAA,GAAG,EAAE,0GAA0G;AAC/G,IAAA,KAAK,EAAE,mFAAmF;AAC1F,IAAA,eAAe,EAAE,+DAA+D;IAChF,MAAM,EAAE,CAAC,WAAmB,KAC1B,CAAA,8BAAA,EAAiC,WAAW,CAAA,8CAAA,CAAgD;AAC9F,IAAA,OAAO,EAAE,sFAAsF;AAC/F,IAAA,GAAG,EAAE,gCAAgC;IACrC,KAAK,EAAE,CAAC,eAAe,GAAG,UAAU,KAClC,CAAA,gFAAA,EAAmF,eAAe,CAAA,yBAAA,CAA2B;;AAG1H,MAAM,mBAAmB,GAAG;AACjC,IAAA,WAAW,EAAE,mFAAmF;AAChG,IAAA,OAAO,EAAE,mEAAmE;AAC5E,IAAA,SAAS,EAAE,2EAA2E;AACtF,IACA,OAAO,EAAE,6DAA6D;;;;;"}
|
|
@@ -28,7 +28,7 @@ import Estimations from './components/Estimations.js';
|
|
|
28
28
|
import ProjectDescription from './components/ProjectDescription.js';
|
|
29
29
|
import track from '../../utils/track.js';
|
|
30
30
|
import { remove0xPrefix } from '../../utils/remove0xPrefix.js';
|
|
31
|
-
import useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../state/tiers/useTierPoints.js';
|
|
31
|
+
import useTierPoints, { Promotions, getUserTier, TIERS_WEIGHT } from '../../state/tiers/useTierPoints.js';
|
|
32
32
|
import NewRateModal from './components/NewRateModal/NewRateModal.js';
|
|
33
33
|
import NoBonusModal from './components/NoBonusModal/NoBonusModal.js';
|
|
34
34
|
import useTierProofSignature from '../../state/bonds/useTierProofSignature.js';
|
|
@@ -50,6 +50,14 @@ import Svg from '../../components/uikit-sdk/Svg/index.js';
|
|
|
50
50
|
import TooltipBubble from '../../components/uikit-sdk/TooltipBubble/index.js';
|
|
51
51
|
import GetUpToComponent from './components/GetUpToComponent/GetUpToComponent.js';
|
|
52
52
|
|
|
53
|
+
const PROMOTION_TRACKING_SUFFIXES = {
|
|
54
|
+
[Promotions.WelcomeBonus]: 'welcome-bonus',
|
|
55
|
+
};
|
|
56
|
+
const getPromotionTrackingSuffix = (promotion) => {
|
|
57
|
+
if (!promotion)
|
|
58
|
+
return '';
|
|
59
|
+
return PROMOTION_TRACKING_SUFFIXES[promotion] ?? '';
|
|
60
|
+
};
|
|
53
61
|
const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond, isProjectView, }) => {
|
|
54
62
|
// Hooks
|
|
55
63
|
// const config = useConfig()
|
|
@@ -61,7 +69,7 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
|
|
|
61
69
|
const { data: bonds, refetch: refetchBondState } = useBondsData();
|
|
62
70
|
const sendReferenceId = useSendReferenceId();
|
|
63
71
|
const { data: tierPointsState } = useTierPoints();
|
|
64
|
-
const { promotionalPoints } = tierPointsState || {};
|
|
72
|
+
const { promotionalPoints, promotion } = tierPointsState || {};
|
|
65
73
|
const bondData = bonds?.find((bond) => bond?.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress?.toLowerCase());
|
|
66
74
|
// Tier Gating
|
|
67
75
|
const userTier = getUserTier(promotionalPoints ?? '0');
|
|
@@ -105,6 +113,8 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
|
|
|
105
113
|
const inputCurrencyBalance = enrichedTokenData?.balance;
|
|
106
114
|
const inputTokenPrice = enrichedTokenData?.price;
|
|
107
115
|
const rateChanged = parseFloat(zapTrueBondPrice ?? '0') > parseFloat(trueBondPrice ?? '0') * 1.01 && isZapSupported;
|
|
116
|
+
const promotionTrackingSuffix = getPromotionTrackingSuffix(promotion);
|
|
117
|
+
const getTrackingCategory = useCallback((baseCategory) => (promotionTrackingSuffix ? `${baseCategory}-${promotionTrackingSuffix}` : baseCategory), [promotionTrackingSuffix]);
|
|
108
118
|
// Estimations
|
|
109
119
|
const depositAmount = isZapSupported ? zapDepositAmount : inputValue;
|
|
110
120
|
const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} =
|
|
@@ -229,7 +239,7 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
|
|
|
229
239
|
event: 'bond',
|
|
230
240
|
chain: bondChain,
|
|
231
241
|
data: {
|
|
232
|
-
cat: 'lp-buy',
|
|
242
|
+
cat: getTrackingCategory('lp-buy'),
|
|
233
243
|
type: bondData?.billType ?? '',
|
|
234
244
|
typedValue: inputValue,
|
|
235
245
|
principalToken: bondData?.lpToken.symbol ?? '',
|
|
@@ -298,7 +308,7 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
|
|
|
298
308
|
event: 'bond',
|
|
299
309
|
chain: bondChain,
|
|
300
310
|
data: {
|
|
301
|
-
cat: 'zap-buy',
|
|
311
|
+
cat: getTrackingCategory('zap-buy'),
|
|
302
312
|
type: bondData?.billType ?? '',
|
|
303
313
|
principalToken: bondData?.lpToken.symbol ?? '',
|
|
304
314
|
earnToken: bondData?.earnToken.symbol ?? '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyComponent.js","sources":["../../../src/views/BuyBond/BuyComponent.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { BigNumber } from 'bignumber.js'\nimport { convertToBigish } from '../../utils/convertToBigish'\nimport ABI_DEPOSIT from '../../config/abi/deposit.json'\nimport ABI_DEPOSIT_SIG from '../../config/abi/depositSig.json'\nimport { PurchasedBondData } from './BuyBondModal'\nimport {\n useChainId,\n useSendTransaction,\n useWriteContract,\n // useConfig\n} from 'wagmi'\nimport useModal from '../../hooks/useModal'\n// import ZapModal from '../ZapModal'\nimport { BillVersion, ChainId, LaunchBondTiers, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport { useApproval } from '../../state/allowance/useAllowance'\nimport { SoulZapTokenManager } from '../../config/constants/addresses'\nimport useSoulZapBondQuote from '../../state/zap/useSoulZapBondQuote'\nimport { parseEther } from 'viem'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { useMonitorTx } from '../../hooks/useMonitorTx'\nimport { usePopups } from '../../state/popups/usePopups'\nimport {\n formatUSDNumber,\n getMaxBuy,\n getPayoutAmount,\n getPrincipalAmount,\n getRawBonus,\n} from '../../utils/displayHelpers'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport {\n LifiSupported,\n tierOptimizerUIEnabled,\n zapSupported,\n ZapSupportedChainId,\n} from '../../config/constants/variables'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport { useSendReferenceId } from '../../hooks/useSendReferenceId'\nimport ConnectButton from '../../components/ConnectButton'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../state/tiers/useTierPoints'\nimport NewRateModal from './components/NewRateModal/NewRateModal'\nimport NoBonusModal from './components/NoBonusModal/NoBonusModal'\nimport useTierProofSignature from '../../state/bonds/useTierProofSignature'\nimport PointsLeftForNextTier from './components/PointsLeftForNextTier/PointsLeftForNextTier'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\nimport useSortedZapList from '../../hooks/useSortedZapList'\nimport TransactionModal from '../TransactionModal/TransactionModal'\nimport { reportError } from '../../utils/reportError'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport LifiModal from '../LifiModal/LifiModal'\n// import useTierOptimizationPreview from '../../state/zap/useTierOptimizationPreview'\nimport { SHORT_NETWORK_LABEL } from '../../config/constants/chains'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport TooltipBubble from '../../components/uikit-sdk/TooltipBubble'\nimport GetUpToComponent from './components/GetUpToComponent/GetUpToComponent'\n// import { simulateContract } from 'wagmi/actions'\n\nexport interface BuyComponentProps {\n onDismiss?: () => void // this is only the modal\n bondAddress?: string\n bondChain?: number\n handlePurchasedBond?: (data: PurchasedBondData) => void\n isProjectView?: boolean\n}\n\nconst BuyComponent: React.FC<BuyComponentProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n handlePurchasedBond,\n isProjectView,\n}) => {\n // Hooks\n // const config = useConfig()\n const SDKConfig = useSDKConfig()\n const userChainId = useChainId()\n const { address: account } = useEVMAccount()\n const { writeContractAsync } = useWriteContract()\n const { sendTransactionAsync } = useSendTransaction()\n const { data: bonds, refetch: refetchBondState } = useBondsData()\n const sendReferenceId = useSendReferenceId()\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints } = tierPointsState || {}\n const bondData = bonds?.find(\n (bond) => bond?.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )!\n\n // Tier Gating\n const userTier = getUserTier(promotionalPoints ?? '0')\n const minTier = bondData?.minTier !== undefined ? bondData.minTier : null\n const isUserRestricted = minTier !== null && (userTier === null || userTier < minTier)\n const trueBondPriceData = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const trueBondPrice = trueBondPriceData?.trueBondPrice\n const { data: tierProofSig } = useTierProofSignature(bondAddress, bondChain, isUserRestricted)\n\n // State\n const [buyTxHash, setBuyTxHash] = useState<string | undefined>()\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // On-chain Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZapSupported = zapSupported.includes(bondData?.chainId as ZapSupportedChainId)\n\n const [fetchingZapQuote, zapData, zapDepositAmount, zapError, zapTrueBondPrice] = useSoulZapBondQuote(\n inputValue,\n inputToken,\n bondData,\n account,\n tierProofSig ?? undefined,\n )\n\n // // DEBUG\n // TODO: remove this\n // if (zapData) console.log('[DEBUG] zapData.protocolQuote:', zapData?.protocolQuote)\n //\n // // Tier optimization preview\n // const fromTokenAddress =\n // inputToken === 'NATIVE'\n // ? WNATIVE[bondData?.chainId as ChainId]?.address?.[bondData?.chainId as ChainId]\n // : inputToken?.address?.[bondData?.chainId as ChainId]\n // const fromTokenDecimals = inputToken === 'NATIVE' ? 18 : (inputToken?.decimals?.[bondData?.chainId as ChainId] ?? 18)\n // const fromAmountWei = new BigNumber(inputValue || '0').times(new BigNumber(10).pow(fromTokenDecimals)).toFixed(0)\n // const { data: tierPreview } = useTierOptimizationPreview(\n // bondData?.contractAddress?.[bondData?.chainId as ChainId],\n // bondData?.chainId as ChainId,\n // fromTokenAddress,\n // fromAmountWei !== '0' && fromAmountWei !== 'NaN' ? fromAmountWei : undefined,\n // account,\n // )\n // console.log(tierPreview)\n\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n const rateChanged = parseFloat(zapTrueBondPrice ?? '0') > parseFloat(trueBondPrice ?? '0') * 1.01 && isZapSupported\n\n // Estimations\n const depositAmount = isZapSupported ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = \n $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`\n\n // Validations\n const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, promotionalPoints))\n const exceedsSafeMaxBuy = getMaxBuy(bondData, false)\n .times(isZapSupported ? 0.995 : 0.9995)\n .lte(getPayoutAmount(bondData, depositAmount, promotionalPoints))\n const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue)\n const isPrincipalTokenLP = bondData?.lpToken?.symbol?.includes('-')\n\n // Loading State\n const [loadingTx, setLoadingTx] = useState(false)\n const { addToastError } = usePopups()\n const { isLoading: isConfirming, isSuccess: isConfirmed } = useMonitorTx(buyTxHash, userChainId)\n const load = loadingTx || (isConfirming && !isConfirmed)\n\n // State Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = useCallback(() => {\n const balance = new BigNumber(inputCurrencyBalance ?? '0')\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n if (!isZapSupported) {\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), promotionalPoints)\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18\n if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints)\n setInputValue(principalForMaxBuy.toFixed(principalDecimals))\n } else {\n setInputValue(balance.toFixed(principalDecimals))\n }\n } else {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints)\n const principalForMaxBuyUSD = principalForMaxBuy.times(bondData?.principalTokenPrice ?? 0)\n const maxBuyAmountInSelectedToken = principalForMaxBuyUSD.div(inputTokenPrice ?? 0)\n const decimals =\n enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId] ?? 18)\n\n if (balance.gte(maxBuyAmountInSelectedToken)) {\n setInputValue(maxBuyAmountInSelectedToken.toFixed(decimals))\n } else {\n setInputValue(balance.toFixed(decimals))\n }\n }\n }, [\n bondData,\n isZapSupported,\n promotionalPoints,\n SDKConfig.showLowValueBonds,\n inputTokenPrice,\n enrichedTokenData?.token,\n inputCurrencyBalance,\n ])\n\n // Approve & Purchase Functions\n const [approvalState, approveCallback] = useApproval(\n inputValue,\n inputToken ?? null,\n (isZapSupported\n ? SoulZapTokenManager?.[bondData?.chainId as ZapSupportedChainId]\n : bondData?.contractAddress?.[bondData.chainId]) ?? null,\n account ?? null,\n bondData?.chainId ?? null,\n )\n const handleApprove = async () => {\n return approveCallback().then(() => {\n track({\n event: 'approveBondClick',\n chain: userChainId,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n },\n })\n })\n }\n\n const handleBuyCallback = async () => {\n const billAddress: `0x${string}` = bondData?.contractAddress?.[bondData.chainId] as `0x${string}`\n const decimals = bondData?.lpToken.decimals?.[bondData?.chainId] ?? 18\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n const maxPrice = new BigNumber(trueBondPrice ?? '0').times(102).div(100).toFixed(0) // multiply it by 1.02\n const amount = convertToBigish(inputValue, decimals)\n\n const shouldUseSig = bondData?.billVersion === BillVersion.V4 && SDKConfig.useTiers\n const args = shouldUseSig ? [amount, maxPrice, account, tierProofSig] : [amount, maxPrice, account]\n\n // const simulationResult = await simulateContract(config, {\n // address: billAddress,\n // abi: ABI_DEPOSIT_SIG,\n // functionName: 'deposit',\n // args: args,\n // chainId: bondData?.chainId as any,\n // account,\n // })\n // .then((e) => console.log('success!', e))\n // .catch((e) => {\n // console.error(e)\n // })\n\n const hash = await writeContractAsync({\n address: billAddress,\n abi: shouldUseSig ? ABI_DEPOSIT_SIG : ABI_DEPOSIT,\n functionName: 'deposit',\n args: args,\n chain: bondData?.chainId as any,\n account,\n })\n if (hash) {\n setBuyTxHash(hash)\n await sendReferenceId(billAddress, userChainId, hash)\n\n // lostProfit\n const bonusString = getRawBonus(bondData, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical])\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const lostProfit = parseFloat(bonusString) - parseFloat(noTierAmount)\n\n handlePurchasedBond?.({\n buyTxHash: hash,\n lostProfit: SDKConfig.useTiers && !userTier && lostProfit > 0.01 ? lostProfit.toFixed(2) : undefined,\n })\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n } catch (error: any) {\n console.error('Buy error', error)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'buyBond', bondData, error },\n chainId: bondChain,\n account,\n })\n addToastError(error.shortMessage)\n }\n }\n\n const handleZapCallback = async () => {\n if (zapData && zapData?.txData?.to && zapData?.txData?.data) {\n console.log('Attempting zap tx')\n track({\n event: 'buyBondClick',\n chain: bondData?.chainId,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol ?? '',\n value: zapData.lpQuote.fromAmountUSD,\n },\n })\n try {\n console.log(zapData)\n const validated18DecimalAmount = new BigNumber(inputValue ?? '0').toFixed(18, 5)\n const parsedValue = parseEther(validated18DecimalAmount)\n\n const hash = await sendTransactionAsync({\n to: zapData.txData.to,\n data: zapData.txData.data,\n value: inputToken === 'NATIVE' ? parsedValue : undefined,\n })\n if (hash) {\n setBuyTxHash(hash)\n await sendReferenceId(bondData?.contractAddress?.[bondData.chainId] ?? '', userChainId, hash)\n\n // lostProfit\n const bonusString = getRawBonus(bondData, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical])\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const lostProfit = parseFloat(bonusString) - parseFloat(noTierAmount)\n\n handlePurchasedBond?.({\n buyTxHash: hash,\n lostProfit: SDKConfig.useTiers && !userTier && lostProfit > 0.01 ? lostProfit.toFixed(2) : undefined,\n })\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bill',\n token1: getSymbol(inputToken),\n token2: `${bondData?.lpToken.symbol ?? ''}`,\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'zap-buy',\n type: bondData?.billType ?? '',\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n amount: inputValue,\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n } catch (e: any) {\n console.log(e)\n addToastError(e.shortMessage)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: e,\n extraInfo: { type: 'zapBuyBond', bondData, zapData, e },\n chainId: bondChain,\n account,\n })\n }\n }\n }\n\n const handleBothPurchases = () => {\n setLoadingTx(true)\n if (isZapSupported) {\n handleZapCallback().finally(() => setLoadingTx(false))\n } else {\n handleBuyCallback().finally(() => setLoadingTx(false))\n }\n }\n\n const handleOpenModal = () => {\n const bonus = trueBondPriceData?.bonusWithFee ?? 0\n if (bonus <= 0) {\n openNoBonusModal()\n } else {\n openTxModal()\n }\n }\n\n const openExternal = () => {\n if (bondData?.lpToken?.getLpUrl?.[bondData?.chainId]) {\n window.open(bondData.lpToken.getLpUrl?.[bondData?.chainId], '_blank')\n } else {\n window.open(\n `https://ape.bond/swap?outputcurrency=${bondData?.lpToken.address[bondData?.chainId]}&outputChain=${bondData?.chainId}`,\n '_blank',\n )\n }\n }\n\n // Modals\n const [onOpenLifiModal] = useModal(\n <LifiModal\n bondChain={bondChain}\n principalToken={isPrincipalTokenLP ? 'ETH' : bondData?.lpToken?.address?.[bondData?.chainId]}\n />,\n )\n\n const [openNewRateModal] = useModal(\n <NewRateModal\n bond={bondData}\n zapTrueBondPrice={zapTrueBondPrice}\n depositAmount={depositAmount}\n youSpendString={youSpendString}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />,\n true,\n false,\n 'newRateModal',\n )\n\n const [openTxModal] = useModal(\n <TransactionModal\n txChain={bondChain}\n approvalState={approvalState}\n approveCallback={handleApprove}\n loadingTx={loadingTx}\n txCallback={handleBothPurchases}\n bondData={bondData!}\n inputToken={inputToken}\n inputValue={inputValue}\n depositAmount={depositAmount}\n buyTxHash={buyTxHash}\n rateChanged={rateChanged}\n />,\n false,\n true,\n 'transactionModal',\n )\n\n // const [onOpenZapModal] = useModal(\n // <ZapModal outputToken={bondData?.lpToken as Token} account={account} chainId={bondData?.chainId as ChainId} />,\n // true,\n // true,\n // 'zapModal',\n // )\n\n const [openNoBonusModal] = useModal(\n <NoBonusModal onAcknowledge={openTxModal} showcaseTokenName={bondData?.showcaseTokenName} />,\n true,\n true,\n 'NoBonusModal',\n )\n\n // Effects\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0].token === 'NATIVE' ? 'NATIVE' : sortedZapList[0].token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n // If rateChanged meaning the zap quote has a >1% difference from the true bond price, we let the user know and we update state\n useEffect(() => {\n if (rateChanged) {\n console.log('rate changed, refetch state and let user know')\n openNewRateModal()\n refetchBondState()\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [rateChanged])\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader\n bondData={bondData}\n onDismiss={onDismiss}\n showProjectInfoButton={SDKConfig?.referenceId === 'apebond'}\n />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={inputValue}\n inputTokenPrice={inputTokenPrice}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZapSupported}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={bondData?.chainId}\n enableZap={isZapSupported}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance}\n selectedTokenPrice={inputTokenPrice}\n inputDisabled={isUserRestricted}\n marketingCampaign={bondData?.marketingCampaign}\n />\n {SDKConfig.useTiers &&\n (bondData?.trueBondPrices?.length ?? 0) > 1 &&\n bondData.earnToken.symbol.toLowerCase() !== 'ireet' &&\n tierOptimizerUIEnabled ? (\n <PointsLeftForNextTier\n bond={bondData}\n inputAmount={inputValue}\n setInputValue={setInputValue}\n inputTokenPrice={inputTokenPrice}\n inputTokenDecimals={inputToken === 'NATIVE' ? 18 : (inputToken?.decimals?.[bondData?.chainId] ?? 18)}\n />\n ) : (\n <GetUpToComponent bond={bondData} depositAmount={depositAmount} />\n )}\n {bondData.earnToken.symbol.toLowerCase() === 'ireet' && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n minHeight: '28px',\n alignItems: 'center',\n }}\n >\n <span sx={{ flex: 1, fontSize: '12px', fontWeight: 400 }}>\n Extra rewards to be distributed in pmUSD by RAAC at bond maturity.{' '}\n <span\n sx={{\n display: ['inline-flex', 'inline-flex', 'inline-flex', 'none'],\n alignItems: 'center',\n verticalAlign: 'middle',\n }}\n >\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>{`If the bond gets filled before April 21st, all buyers get a 2% $pmUSD bonus (5% total bonus). Under the same condition, RAAC Bot NFT holders get an extra 2% on top (7% total bonus).`}</Flex>\n }\n width={'200px'}\n placement=\"topRight\"\n transformTip=\"translate(12%, -8%)\"\n >\n <Flex sx={{ opacity: 0.6 }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </span>\n <span\n sx={{\n display: ['none', 'none', 'none', 'inline-flex'],\n alignItems: 'center',\n verticalAlign: 'middle',\n }}\n >\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>{`If the bond gets filled before April 21st, all buyers get a 2% $pmUSD bonus (5% total bonus). Under the same condition, RAAC Bot NFT holders get an extra 2% on top (7% total bonus).`}</Flex>\n }\n width={'280px'}\n placement=\"topRight\"\n transformTip=\"translate(10%, -11%)\"\n >\n <Flex sx={{ opacity: 0.6 }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </span>\n </span>\n </Flex>\n )}\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!account ? (\n <ConnectButton />\n ) : (\n <Flex sx={{ width: '100%', gap: '10px', flexDirection: ['column', 'column', 'column', 'row'] }}>\n <Button\n variant=\"secondary\"\n onClick={() => (LifiSupported.includes(bondChain!) ? onOpenLifiModal() : openExternal())}\n sx={{ width: ['100%', '100%', '100%', '35%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {LifiSupported.includes(bondChain!)\n ? `Bridge to ${SHORT_NETWORK_LABEL[bondData?.chainId as ChainId]}`\n : `Get ${getSymbol(bondData?.lpToken, bondData?.chainId)}`}\n </Button>\n {isUserRestricted ? (\n <Button className=\"action-button\" disabled>\n INSUFFICIENT TIER\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={load || fetchingZapQuote}\n disabled={\n load ||\n bondData?.soldOut ||\n !account ||\n !inputValue ||\n parseFloat(inputValue) === 0 ||\n fetchingZapQuote ||\n zapError ||\n exceedsRealMaxBuy ||\n exceedsBalance ||\n (isZapSupported && !zapData) ||\n SDKConfig.blockSales\n }\n onClick={handleOpenModal}\n sx={{ fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Exceeds balance'\n : zapError\n ? 'something went wrong'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : `buy`}\n </Button>\n )}{' '}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\nexport default BuyComponent\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BuyComponent.js","sources":["../../../src/views/BuyBond/BuyComponent.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { BigNumber } from 'bignumber.js'\nimport { convertToBigish } from '../../utils/convertToBigish'\nimport ABI_DEPOSIT from '../../config/abi/deposit.json'\nimport ABI_DEPOSIT_SIG from '../../config/abi/depositSig.json'\nimport { PurchasedBondData } from './BuyBondModal'\nimport {\n useChainId,\n useSendTransaction,\n useWriteContract,\n // useConfig\n} from 'wagmi'\nimport useModal from '../../hooks/useModal'\n// import ZapModal from '../ZapModal'\nimport { BillVersion, ChainId, LaunchBondTiers, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport { useApproval } from '../../state/allowance/useAllowance'\nimport { SoulZapTokenManager } from '../../config/constants/addresses'\nimport useSoulZapBondQuote from '../../state/zap/useSoulZapBondQuote'\nimport { parseEther } from 'viem'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { useMonitorTx } from '../../hooks/useMonitorTx'\nimport { usePopups } from '../../state/popups/usePopups'\nimport {\n formatUSDNumber,\n getMaxBuy,\n getPayoutAmount,\n getPrincipalAmount,\n getRawBonus,\n} from '../../utils/displayHelpers'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport {\n LifiSupported,\n tierOptimizerUIEnabled,\n zapSupported,\n ZapSupportedChainId,\n} from '../../config/constants/variables'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport { useSendReferenceId } from '../../hooks/useSendReferenceId'\nimport ConnectButton from '../../components/ConnectButton'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport useTierPoints, { getUserTier, Promotions, TIERS_WEIGHT } from '../../state/tiers/useTierPoints'\nimport NewRateModal from './components/NewRateModal/NewRateModal'\nimport NoBonusModal from './components/NoBonusModal/NoBonusModal'\nimport useTierProofSignature from '../../state/bonds/useTierProofSignature'\nimport PointsLeftForNextTier from './components/PointsLeftForNextTier/PointsLeftForNextTier'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\nimport useSortedZapList from '../../hooks/useSortedZapList'\nimport TransactionModal from '../TransactionModal/TransactionModal'\nimport { reportError } from '../../utils/reportError'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\nimport LifiModal from '../LifiModal/LifiModal'\n// import useTierOptimizationPreview from '../../state/zap/useTierOptimizationPreview'\nimport { SHORT_NETWORK_LABEL } from '../../config/constants/chains'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport TooltipBubble from '../../components/uikit-sdk/TooltipBubble'\nimport GetUpToComponent from './components/GetUpToComponent/GetUpToComponent'\n// import { simulateContract } from 'wagmi/actions'\n\nexport interface BuyComponentProps {\n onDismiss?: () => void // this is only the modal\n bondAddress?: string\n bondChain?: number\n handlePurchasedBond?: (data: PurchasedBondData) => void\n isProjectView?: boolean\n}\n\nconst PROMOTION_TRACKING_SUFFIXES: Partial<Record<Promotions, string>> = {\n [Promotions.WelcomeBonus]: 'welcome-bonus',\n}\n\nconst getPromotionTrackingSuffix = (promotion?: Promotions | null): string => {\n if (!promotion) return ''\n return PROMOTION_TRACKING_SUFFIXES[promotion] ?? ''\n}\n\nconst BuyComponent: React.FC<BuyComponentProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n handlePurchasedBond,\n isProjectView,\n}) => {\n // Hooks\n // const config = useConfig()\n const SDKConfig = useSDKConfig()\n const userChainId = useChainId()\n const { address: account } = useEVMAccount()\n const { writeContractAsync } = useWriteContract()\n const { sendTransactionAsync } = useSendTransaction()\n const { data: bonds, refetch: refetchBondState } = useBondsData()\n const sendReferenceId = useSendReferenceId()\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints, promotion } = tierPointsState || {}\n const bondData = bonds?.find(\n (bond) => bond?.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )!\n\n // Tier Gating\n const userTier = getUserTier(promotionalPoints ?? '0')\n const minTier = bondData?.minTier !== undefined ? bondData.minTier : null\n const isUserRestricted = minTier !== null && (userTier === null || userTier < minTier)\n const trueBondPriceData = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const trueBondPrice = trueBondPriceData?.trueBondPrice\n const { data: tierProofSig } = useTierProofSignature(bondAddress, bondChain, isUserRestricted)\n\n // State\n const [buyTxHash, setBuyTxHash] = useState<string | undefined>()\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // On-chain Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZapSupported = zapSupported.includes(bondData?.chainId as ZapSupportedChainId)\n\n const [fetchingZapQuote, zapData, zapDepositAmount, zapError, zapTrueBondPrice] = useSoulZapBondQuote(\n inputValue,\n inputToken,\n bondData,\n account,\n tierProofSig ?? undefined,\n )\n\n // // DEBUG\n // TODO: remove this\n // if (zapData) console.log('[DEBUG] zapData.protocolQuote:', zapData?.protocolQuote)\n //\n // // Tier optimization preview\n // const fromTokenAddress =\n // inputToken === 'NATIVE'\n // ? WNATIVE[bondData?.chainId as ChainId]?.address?.[bondData?.chainId as ChainId]\n // : inputToken?.address?.[bondData?.chainId as ChainId]\n // const fromTokenDecimals = inputToken === 'NATIVE' ? 18 : (inputToken?.decimals?.[bondData?.chainId as ChainId] ?? 18)\n // const fromAmountWei = new BigNumber(inputValue || '0').times(new BigNumber(10).pow(fromTokenDecimals)).toFixed(0)\n // const { data: tierPreview } = useTierOptimizationPreview(\n // bondData?.contractAddress?.[bondData?.chainId as ChainId],\n // bondData?.chainId as ChainId,\n // fromTokenAddress,\n // fromAmountWei !== '0' && fromAmountWei !== 'NaN' ? fromAmountWei : undefined,\n // account,\n // )\n // console.log(tierPreview)\n\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n const rateChanged = parseFloat(zapTrueBondPrice ?? '0') > parseFloat(trueBondPrice ?? '0') * 1.01 && isZapSupported\n const promotionTrackingSuffix = getPromotionTrackingSuffix(promotion)\n const getTrackingCategory = useCallback(\n (baseCategory: string) => (promotionTrackingSuffix ? `${baseCategory}-${promotionTrackingSuffix}` : baseCategory),\n [promotionTrackingSuffix],\n )\n\n // Estimations\n const depositAmount = isZapSupported ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = \n $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`\n\n // Validations\n const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, promotionalPoints))\n const exceedsSafeMaxBuy = getMaxBuy(bondData, false)\n .times(isZapSupported ? 0.995 : 0.9995)\n .lte(getPayoutAmount(bondData, depositAmount, promotionalPoints))\n const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue)\n const isPrincipalTokenLP = bondData?.lpToken?.symbol?.includes('-')\n\n // Loading State\n const [loadingTx, setLoadingTx] = useState(false)\n const { addToastError } = usePopups()\n const { isLoading: isConfirming, isSuccess: isConfirmed } = useMonitorTx(buyTxHash, userChainId)\n const load = loadingTx || (isConfirming && !isConfirmed)\n\n // State Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = useCallback(() => {\n const balance = new BigNumber(inputCurrencyBalance ?? '0')\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n if (!isZapSupported) {\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), promotionalPoints)\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18\n if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints)\n setInputValue(principalForMaxBuy.toFixed(principalDecimals))\n } else {\n setInputValue(balance.toFixed(principalDecimals))\n }\n } else {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints)\n const principalForMaxBuyUSD = principalForMaxBuy.times(bondData?.principalTokenPrice ?? 0)\n const maxBuyAmountInSelectedToken = principalForMaxBuyUSD.div(inputTokenPrice ?? 0)\n const decimals =\n enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId] ?? 18)\n\n if (balance.gte(maxBuyAmountInSelectedToken)) {\n setInputValue(maxBuyAmountInSelectedToken.toFixed(decimals))\n } else {\n setInputValue(balance.toFixed(decimals))\n }\n }\n }, [\n bondData,\n isZapSupported,\n promotionalPoints,\n SDKConfig.showLowValueBonds,\n inputTokenPrice,\n enrichedTokenData?.token,\n inputCurrencyBalance,\n ])\n\n // Approve & Purchase Functions\n const [approvalState, approveCallback] = useApproval(\n inputValue,\n inputToken ?? null,\n (isZapSupported\n ? SoulZapTokenManager?.[bondData?.chainId as ZapSupportedChainId]\n : bondData?.contractAddress?.[bondData.chainId]) ?? null,\n account ?? null,\n bondData?.chainId ?? null,\n )\n const handleApprove = async () => {\n return approveCallback().then(() => {\n track({\n event: 'approveBondClick',\n chain: userChainId,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n },\n })\n })\n }\n\n const handleBuyCallback = async () => {\n const billAddress: `0x${string}` = bondData?.contractAddress?.[bondData.chainId] as `0x${string}`\n const decimals = bondData?.lpToken.decimals?.[bondData?.chainId] ?? 18\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n const maxPrice = new BigNumber(trueBondPrice ?? '0').times(102).div(100).toFixed(0) // multiply it by 1.02\n const amount = convertToBigish(inputValue, decimals)\n\n const shouldUseSig = bondData?.billVersion === BillVersion.V4 && SDKConfig.useTiers\n const args = shouldUseSig ? [amount, maxPrice, account, tierProofSig] : [amount, maxPrice, account]\n\n // const simulationResult = await simulateContract(config, {\n // address: billAddress,\n // abi: ABI_DEPOSIT_SIG,\n // functionName: 'deposit',\n // args: args,\n // chainId: bondData?.chainId as any,\n // account,\n // })\n // .then((e) => console.log('success!', e))\n // .catch((e) => {\n // console.error(e)\n // })\n\n const hash = await writeContractAsync({\n address: billAddress,\n abi: shouldUseSig ? ABI_DEPOSIT_SIG : ABI_DEPOSIT,\n functionName: 'deposit',\n args: args,\n chain: bondData?.chainId as any,\n account,\n })\n if (hash) {\n setBuyTxHash(hash)\n await sendReferenceId(billAddress, userChainId, hash)\n\n // lostProfit\n const bonusString = getRawBonus(bondData, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical])\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const lostProfit = parseFloat(bonusString) - parseFloat(noTierAmount)\n\n handlePurchasedBond?.({\n buyTxHash: hash,\n lostProfit: SDKConfig.useTiers && !userTier && lostProfit > 0.01 ? lostProfit.toFixed(2) : undefined,\n })\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: getTrackingCategory('lp-buy'),\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n } catch (error: any) {\n console.error('Buy error', error)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'buyBond', bondData, error },\n chainId: bondChain,\n account,\n })\n addToastError(error.shortMessage)\n }\n }\n\n const handleZapCallback = async () => {\n if (zapData && zapData?.txData?.to && zapData?.txData?.data) {\n console.log('Attempting zap tx')\n track({\n event: 'buyBondClick',\n chain: bondData?.chainId,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol ?? '',\n value: zapData.lpQuote.fromAmountUSD,\n },\n })\n try {\n console.log(zapData)\n const validated18DecimalAmount = new BigNumber(inputValue ?? '0').toFixed(18, 5)\n const parsedValue = parseEther(validated18DecimalAmount)\n\n const hash = await sendTransactionAsync({\n to: zapData.txData.to,\n data: zapData.txData.data,\n value: inputToken === 'NATIVE' ? parsedValue : undefined,\n })\n if (hash) {\n setBuyTxHash(hash)\n await sendReferenceId(bondData?.contractAddress?.[bondData.chainId] ?? '', userChainId, hash)\n\n // lostProfit\n const bonusString = getRawBonus(bondData, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical])\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const lostProfit = parseFloat(bonusString) - parseFloat(noTierAmount)\n\n handlePurchasedBond?.({\n buyTxHash: hash,\n lostProfit: SDKConfig.useTiers && !userTier && lostProfit > 0.01 ? lostProfit.toFixed(2) : undefined,\n })\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bill',\n token1: getSymbol(inputToken),\n token2: `${bondData?.lpToken.symbol ?? ''}`,\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: getTrackingCategory('zap-buy'),\n type: bondData?.billType ?? '',\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n amount: inputValue,\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n } catch (e: any) {\n console.log(e)\n addToastError(e.shortMessage)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: e,\n extraInfo: { type: 'zapBuyBond', bondData, zapData, e },\n chainId: bondChain,\n account,\n })\n }\n }\n }\n\n const handleBothPurchases = () => {\n setLoadingTx(true)\n if (isZapSupported) {\n handleZapCallback().finally(() => setLoadingTx(false))\n } else {\n handleBuyCallback().finally(() => setLoadingTx(false))\n }\n }\n\n const handleOpenModal = () => {\n const bonus = trueBondPriceData?.bonusWithFee ?? 0\n if (bonus <= 0) {\n openNoBonusModal()\n } else {\n openTxModal()\n }\n }\n\n const openExternal = () => {\n if (bondData?.lpToken?.getLpUrl?.[bondData?.chainId]) {\n window.open(bondData.lpToken.getLpUrl?.[bondData?.chainId], '_blank')\n } else {\n window.open(\n `https://ape.bond/swap?outputcurrency=${bondData?.lpToken.address[bondData?.chainId]}&outputChain=${bondData?.chainId}`,\n '_blank',\n )\n }\n }\n\n // Modals\n const [onOpenLifiModal] = useModal(\n <LifiModal\n bondChain={bondChain}\n principalToken={isPrincipalTokenLP ? 'ETH' : bondData?.lpToken?.address?.[bondData?.chainId]}\n />,\n )\n\n const [openNewRateModal] = useModal(\n <NewRateModal\n bond={bondData}\n zapTrueBondPrice={zapTrueBondPrice}\n depositAmount={depositAmount}\n youSpendString={youSpendString}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />,\n true,\n false,\n 'newRateModal',\n )\n\n const [openTxModal] = useModal(\n <TransactionModal\n txChain={bondChain}\n approvalState={approvalState}\n approveCallback={handleApprove}\n loadingTx={loadingTx}\n txCallback={handleBothPurchases}\n bondData={bondData!}\n inputToken={inputToken}\n inputValue={inputValue}\n depositAmount={depositAmount}\n buyTxHash={buyTxHash}\n rateChanged={rateChanged}\n />,\n false,\n true,\n 'transactionModal',\n )\n\n // const [onOpenZapModal] = useModal(\n // <ZapModal outputToken={bondData?.lpToken as Token} account={account} chainId={bondData?.chainId as ChainId} />,\n // true,\n // true,\n // 'zapModal',\n // )\n\n const [openNoBonusModal] = useModal(\n <NoBonusModal onAcknowledge={openTxModal} showcaseTokenName={bondData?.showcaseTokenName} />,\n true,\n true,\n 'NoBonusModal',\n )\n\n // Effects\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0].token === 'NATIVE' ? 'NATIVE' : sortedZapList[0].token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n // If rateChanged meaning the zap quote has a >1% difference from the true bond price, we let the user know and we update state\n useEffect(() => {\n if (rateChanged) {\n console.log('rate changed, refetch state and let user know')\n openNewRateModal()\n refetchBondState()\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [rateChanged])\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader\n bondData={bondData}\n onDismiss={onDismiss}\n showProjectInfoButton={SDKConfig?.referenceId === 'apebond'}\n />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={inputValue}\n inputTokenPrice={inputTokenPrice}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZapSupported}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={bondData?.chainId}\n enableZap={isZapSupported}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance}\n selectedTokenPrice={inputTokenPrice}\n inputDisabled={isUserRestricted}\n marketingCampaign={bondData?.marketingCampaign}\n />\n {SDKConfig.useTiers &&\n (bondData?.trueBondPrices?.length ?? 0) > 1 &&\n bondData.earnToken.symbol.toLowerCase() !== 'ireet' &&\n tierOptimizerUIEnabled ? (\n <PointsLeftForNextTier\n bond={bondData}\n inputAmount={inputValue}\n setInputValue={setInputValue}\n inputTokenPrice={inputTokenPrice}\n inputTokenDecimals={inputToken === 'NATIVE' ? 18 : (inputToken?.decimals?.[bondData?.chainId] ?? 18)}\n />\n ) : (\n <GetUpToComponent bond={bondData} depositAmount={depositAmount} />\n )}\n {bondData.earnToken.symbol.toLowerCase() === 'ireet' && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n minHeight: '28px',\n alignItems: 'center',\n }}\n >\n <span sx={{ flex: 1, fontSize: '12px', fontWeight: 400 }}>\n Extra rewards to be distributed in pmUSD by RAAC at bond maturity.{' '}\n <span\n sx={{\n display: ['inline-flex', 'inline-flex', 'inline-flex', 'none'],\n alignItems: 'center',\n verticalAlign: 'middle',\n }}\n >\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>{`If the bond gets filled before April 21st, all buyers get a 2% $pmUSD bonus (5% total bonus). Under the same condition, RAAC Bot NFT holders get an extra 2% on top (7% total bonus).`}</Flex>\n }\n width={'200px'}\n placement=\"topRight\"\n transformTip=\"translate(12%, -8%)\"\n >\n <Flex sx={{ opacity: 0.6 }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </span>\n <span\n sx={{\n display: ['none', 'none', 'none', 'inline-flex'],\n alignItems: 'center',\n verticalAlign: 'middle',\n }}\n >\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>{`If the bond gets filled before April 21st, all buyers get a 2% $pmUSD bonus (5% total bonus). Under the same condition, RAAC Bot NFT holders get an extra 2% on top (7% total bonus).`}</Flex>\n }\n width={'280px'}\n placement=\"topRight\"\n transformTip=\"translate(10%, -11%)\"\n >\n <Flex sx={{ opacity: 0.6 }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </span>\n </span>\n </Flex>\n )}\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!account ? (\n <ConnectButton />\n ) : (\n <Flex sx={{ width: '100%', gap: '10px', flexDirection: ['column', 'column', 'column', 'row'] }}>\n <Button\n variant=\"secondary\"\n onClick={() => (LifiSupported.includes(bondChain!) ? onOpenLifiModal() : openExternal())}\n sx={{ width: ['100%', '100%', '100%', '35%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {LifiSupported.includes(bondChain!)\n ? `Bridge to ${SHORT_NETWORK_LABEL[bondData?.chainId as ChainId]}`\n : `Get ${getSymbol(bondData?.lpToken, bondData?.chainId)}`}\n </Button>\n {isUserRestricted ? (\n <Button className=\"action-button\" disabled>\n INSUFFICIENT TIER\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={load || fetchingZapQuote}\n disabled={\n load ||\n bondData?.soldOut ||\n !account ||\n !inputValue ||\n parseFloat(inputValue) === 0 ||\n fetchingZapQuote ||\n zapError ||\n exceedsRealMaxBuy ||\n exceedsBalance ||\n (isZapSupported && !zapData) ||\n SDKConfig.blockSales\n }\n onClick={handleOpenModal}\n sx={{ fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Exceeds balance'\n : zapError\n ? 'something went wrong'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : `buy`}\n </Button>\n )}{' '}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\nexport default BuyComponent\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -18,11 +18,13 @@ import { tierOptimizerUIEnabled } from '../../../config/constants/variables.js';
|
|
|
18
18
|
|
|
19
19
|
const DEFAULT_BOOST_PRESENTATION = {
|
|
20
20
|
label: 'Boost',
|
|
21
|
+
tooltipReason: 'Ape Tier',
|
|
21
22
|
iconType: 'tierMonkey',
|
|
22
23
|
};
|
|
23
24
|
const PROMOTION_BOOST_PRESENTATIONS = {
|
|
24
25
|
[Promotions.WelcomeBonus]: {
|
|
25
26
|
label: 'Welcome Bonus',
|
|
27
|
+
tooltipReason: 'Welcome Bonus',
|
|
26
28
|
iconType: 'svg',
|
|
27
29
|
iconName: 'GiftBoxPlain',
|
|
28
30
|
iconWidth: 15,
|
|
@@ -64,7 +66,7 @@ const Estimations = ({ depositAmount, inputValue, inputTokenPrice, bondData, you
|
|
|
64
66
|
py: '2px',
|
|
65
67
|
position: 'relative',
|
|
66
68
|
justifyContent: 'space-between',
|
|
67
|
-
}, children: [jsxs(Flex, { className: "row-container premium", sx: { zIndex:
|
|
69
|
+
}, children: [jsxs(Flex, { className: "row-container premium", sx: { position: 'relative', zIndex: 2 }, children: [boostPresentation.iconType === 'svg' ? (jsx(Flex, { sx: boostPresentation.iconSx, children: jsx(Svg, { icon: boostPresentation.iconName, width: boostPresentation.iconWidth }) })) : (jsx("img", { src: `https://ape.bond/images/launch/${tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } })), boostPresentation.label, jsx(Flex, { sx: { color: 'success', mx: '3px', fontWeight: 700 }, children: `+${trueBondPrice?.boost ?? 0}%` }), jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: TooltipText.Boost(boostPresentation.tooltipReason) }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, 0%)", children: jsx(Flex, { className: "row-container premium-icon", children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), isZap && fetchingZapQuote ? (jsx(Dots, {})) : isZap && zapError ? ('-') : (jsxs(Flex, { className: `row-container premium-val premium-positive`, children: ["$ ", formatNumberSI(boostAmount)] }))] })), jsxs(Flex, { sx: {
|
|
68
70
|
border: '1px solid #9960C5',
|
|
69
71
|
borderRadius: 'normal',
|
|
70
72
|
mx: '-8px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Estimations.js","sources":["../../../../src/views/BuyBond/components/Estimations.tsx"],"sourcesContent":["import React from 'react'\nimport { getBonusColor, getPayoutAmount, getRawBonus } from '../../../utils/displayHelpers'\nimport { TooltipText } from '../../../config/constants/tooltips'\nimport { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers'\nimport { BondsData } from '../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n NewTiers,\n Promotions,\n TIERS_BG,\n TIERS_COLORS,\n TIERS_NAMES,\n} from '../../../state/tiers/useTierPoints'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport { BillVersion } from '@ape.swap/apeswap-lists'\nimport { getTimePeriods } from '../../../utils/getTimePeriods'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../components/uikit-sdk/Svg'\nimport LoadingDots from '../../../components/uikit-sdk/LoadingDots'\nimport { calculateOptimizationData } from '../utils'\nimport { useAbondPrice } from '../../../state/tokenPrices/useAbondPrice'\nimport TokenImage from '../../../components/uikit-sdk/TokenImage'\nimport { tierOptimizerUIEnabled } from '../../../config/constants/variables'\n\ntype BoostPresentation = {\n label: string\n iconType: 'tierMonkey' | 'svg'\n iconName?: 'GiftBoxPlain'\n iconWidth?: number\n iconSx?: Record<string, string | number>\n}\n\nconst DEFAULT_BOOST_PRESENTATION: BoostPresentation = {\n label: 'Boost',\n iconType: 'tierMonkey',\n}\n\nconst PROMOTION_BOOST_PRESENTATIONS: Partial<Record<Promotions, BoostPresentation>> = {\n [Promotions.WelcomeBonus]: {\n label: 'Welcome Bonus',\n iconType: 'svg',\n iconName: 'GiftBoxPlain',\n iconWidth: 15,\n iconSx: { mr: '3px', lineHeight: '21px', mt: '-4px' },\n },\n}\n\nconst getBoostPresentation = (promotion?: Promotions | null): BoostPresentation => {\n if (!promotion) return DEFAULT_BOOST_PRESENTATION\n return PROMOTION_BOOST_PRESENTATIONS[promotion] ?? DEFAULT_BOOST_PRESENTATION\n}\n\nconst Estimations = ({\n depositAmount,\n inputValue,\n inputTokenPrice,\n bondData,\n youSpendString,\n isZap,\n fetchingZapQuote,\n zapError,\n}: {\n depositAmount: string // actually deposited (after zap fees and estimations)\n inputValue?: string // input amount selected on the UI\n inputTokenPrice?: number\n bondData: BondsData\n youSpendString?: string\n isZap?: boolean\n fetchingZapQuote?: boolean\n zapError?: boolean\n}) => {\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints, promotion } = tierPointsState || {}\n const abondPrice = useAbondPrice()\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const SDKConfig = useSDKConfig()\n const userTier = getUserTier(promotionalPoints)\n const tierName = userTier ? TIERS_NAMES[userTier] : ''\n\n // Estimations\n const bonusString = getRawBonus(bondData, depositAmount, '0')\n // const fee = getFeeAmount(bondData, depositAmount, userPoints ?? '0')\n // const feeUSD = fee * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints)\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const boostAmount =\n parseFloat(getRawBonus(bondData, depositAmount, promotionalPoints ?? '0')) - parseFloat(noTierAmount)\n\n const optimizationData = calculateOptimizationData(\n inputValue ?? '',\n promotionalPoints!,\n bondData,\n inputTokenPrice,\n abondPrice,\n )\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const boostPresentation = getBoostPresentation(promotion)\n\n return (\n <Flex className=\"modaltable-container text-container\">\n <Flex className=\"text-container row\">\n <Flex className=\"row-container spend\">You Spend:</Flex>\n <Flex className=\"row-container spend-val\">{youSpendString}</Flex>\n </Flex>\n <Flex className=\"text-container row\">\n <Flex className=\"row-container premium\">\n {!!userTier && !!promotionalPoints && SDKConfig.useTiers && bondData.billVersion === BillVersion.V4\n ? 'Base Bonus:'\n : 'Bonus:'}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {(bondData?.feeInPayout || 0) > 0\n ? `This is the dollar value of the bonus tokens you’ll receive at current market price, already accounting for the protocol fee (${bondData.feeInPayout}%)`\n : 'This is the dollar value of the bonus tokens you’ll receive at current market price.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val ${getBonusColor(bonusString)}`}>\n $ {formatNumberSI(bonusString)}\n </Flex>\n )}\n </Flex>\n {trueBondPrice?.points !== '0' && userTier && promotionalPoints && SDKConfig.useTiers && (\n <Flex\n sx={{\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '2px',\n position: 'relative',\n justifyContent: 'space-between',\n }}\n >\n <Flex className=\"row-container premium\" sx={{ zIndex: 1 }}>\n {boostPresentation.iconType === 'svg' ? (\n <Flex sx={boostPresentation.iconSx}>\n <Svg icon={boostPresentation.iconName} width={boostPresentation.iconWidth} />\n </Flex>\n ) : (\n <img\n src={`https://ape.bond/images/launch/${tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n )}\n {boostPresentation.label}\n <Flex sx={{ color: 'success', mx: '3px', fontWeight: 700 }}>{`+${trueBondPrice?.boost ?? 0}%`}</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Boost}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val premium-positive`}>$ {formatNumberSI(boostAmount)}</Flex>\n )}\n </Flex>\n )}\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '4px',\n position: 'relative',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n background: '#9960C5',\n opacity: 0.2,\n borderRadius: 'normal',\n }}\n />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\" sx={{ zIndex: 1 }}>\n You Get (over {getTimePeriods(bondData?.vestingTerm, true).days} days):\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\" sx={{ zIndex: 1 }}>\n {formatNumberSI(estimatedOutputAmount, 4)} {bondData?.showcaseTokenName} = ${' '}\n {formatNumberSI(estimatedOutputUSD, 2)}\n </Flex>\n )}\n </Flex>\n </Flex>\n {(bondData.tierBoostRate || highestProfitableTier) && (\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px', mt: '3px' }}>\n <Flex className=\"row-container get\">\n Ape Points Earned:\n <Flex sx={{ ml: '5px' }}>\n <TooltipBubble\n body={\n 'This purchase will earn you Ape Points. Ape Points provide a weekly yield in USDT and count toward your Ape Tier progression. Unlock higher Ape Tiers to get extra discounts on all Bonds.'\n }\n width={['200px', '200px', '200px', '250px']}\n placement=\"bottomLeft\"\n transformTip={[\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-7%, 0%)',\n ]}\n >\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </TooltipBubble>\n </Flex>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n <Flex sx={{ alignItems: 'center', gap: '5px' }}>\n {highestProfitableTier || optimizationData?.tierBoostPoints ? (\n <>\n <TokenImage symbol={'veABOND'} size={15} />\n {formatNumberSI(\n highestProfitableTier && tierOptimizerUIEnabled\n ? highestProfitableTier.necessaryPointsToUpgrade\n : optimizationData?.tierBoostPoints,\n 2,\n true,\n )}\n <Flex>points</Flex>\n </>\n ) : (\n '-'\n )}\n {highestProfitableTier && tierOptimizerUIEnabled && (\n <>\n +\n <Flex\n sx={{\n px: '3px',\n height: '24px',\n background: TIERS_BG[highestProfitableTier.tier as NewTiers],\n border: `2px solid ${TIERS_COLORS[highestProfitableTier.tier as NewTiers]}`,\n borderRadius: '5px',\n fontWeight: 700,\n alignItems: 'center',\n minWidth: highestProfitableTier.tier > 2 && '118px',\n }}\n >\n <img\n src={`https://ape.bond/images/launch/${highestProfitableTier?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n {highestProfitableTier.tierName} Tier\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default Estimations\n"],"names":["_jsxs","_jsx","LoadingDots","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,MAAM,0BAA0B,GAAsB;AACpD,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,YAAY;CACvB;AAED,MAAM,6BAA6B,GAAmD;AACpF,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG;AACzB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AACtD,KAAA;CACF;AAED,MAAM,oBAAoB,GAAG,CAAC,SAA6B,KAAuB;AAChF,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,0BAA0B;AACjD,IAAA,OAAO,6BAA6B,CAAC,SAAS,CAAC,IAAI,0BAA0B;AAC/E,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,EACnB,aAAa,EACb,UAAU,EACV,eAAe,EACf,QAAQ,EACR,cAAc,EACd,KAAK,EACL,gBAAgB,EAChB,QAAQ,GAUT,KAAI;IACH,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE;IACjD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,eAAe,IAAI,EAAE;AAC9D,IAAA,MAAM,UAAU,GAAG,aAAa,EAAE;IAClC,MAAM,aAAa,GAAG,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,cAAc,CAAC;AAC3F,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;AAChC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC;AAC/C,IAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE;;IAGtD,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC;;;IAI7D,MAAM,qBAAqB,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,CAAC;AACzF,IAAA,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,IAAI,GAAG,CAAC;IAEhG,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC;IAC9D,MAAM,WAAW,GACf,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC;AAEvG,IAAA,MAAM,gBAAgB,GAAG,yBAAyB,CAChD,UAAU,IAAI,EAAE,EAChB,iBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAU,CACX;AACD,IAAA,MAAM,qBAAqB,GAAG,gBAAgB,EAAE,qBAAqB;AACrE,IAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAEzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CACnDA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CAClCC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,qBAAqB,2BAAkB,EACvDA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAE,cAAc,EAAA,CAAQ,CAAA,EAAA,CAC5D,EACPD,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CAClCA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,aACpC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,iBAAiB,IAAI,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC;AAC/F,kCAAE;kCACA,QAAQ,EACZC,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EACF,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,IAAI;AAC9B,0CAAE,CAAA,8HAAA,EAAiI,QAAQ,CAAC,WAAW,CAAA,EAAA;0CACrJ,sFAAsF,EAAA,CACrF,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAC1CA,GAAA,CAAC,GAAG,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CACrC,EAAA,CACO,CAAA,EAAA,CACX,EACN,KAAK,IAAI,gBAAgB,IACxBA,IAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,KAAC,IAAI,EAAA,EAAC,SAAS,EAAE,CAAA,0BAAA,EAA6B,aAAa,CAAC,WAAW,CAAC,CAAA,CAAE,EAAA,QAAA,EAAA,CAAA,IAAA,EACrE,cAAc,CAAC,WAAW,CAAC,CAAA,EAAA,CACzB,CACR,CAAA,EAAA,CACI,EACN,aAAa,EAAE,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,iBAAiB,IAAI,SAAS,CAAC,QAAQ,KACnFA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,cAAc,EAAE,eAAe;iBAChC,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACtD,iBAAiB,CAAC,QAAQ,KAAK,KAAK,IACnCC,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,iBAAiB,CAAC,MAAM,EAAA,QAAA,EAChCA,IAAC,GAAG,EAAA,EAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,GAAI,EAAA,CACxE,KAEPA,aACE,GAAG,EAAE,CAAA,+BAAA,EAAkC,QAAQ,EAAE,WAAW,EAAE,CAAA,IAAA,CAAM,EACpE,GAAG,EAAC,SAAS,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,CACvE,CACH,EACA,iBAAiB,CAAC,KAAK,EACxBA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,EAAA,QAAA,EAAG,CAAA,CAAA,EAAI,aAAa,EAAE,KAAK,IAAI,CAAC,CAAA,CAAA,CAAG,EAAA,CAAQ,EACrGA,GAAA,CAAC,aAAa,IACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAEA,IAAC,IAAI,EAAA,EAAA,QAAA,EAAE,WAAW,CAAC,KAAK,EAAA,CAAQ,EACtC,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAC1CA,GAAA,CAAC,GAAG,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CACrC,EAAA,CACO,CAAA,EAAA,CACX,EACN,KAAK,IAAI,gBAAgB,IACxBA,IAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAE,CAAA,0CAAA,CAA4C,EAAA,QAAA,EAAA,CAAA,IAAA,EAAK,cAAc,CAAC,WAAW,CAAC,CAAA,EAAA,CAAQ,CACtG,CAAA,EAAA,CACI,CACR,EACDA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oBAAA,MAAM,EAAE,mBAAmB;AAC3B,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,OAAO,EAAE,GAAG;AACZ,4BAAA,YAAY,EAAE,QAAQ;AACvB,yBAAA,EAAA,CACD,EACFD,IAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1EA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CAAA,gBAAA,EACpC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,eAC1D,EACN,KAAK,IAAI,gBAAgB,IACxBC,IAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACtD,cAAc,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAA,GAAA,EAAG,QAAQ,EAAE,iBAAiB,UAAM,GAAG,EAC/E,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,IACjC,CACR,CAAA,EAAA,CACI,IACF,EACN,CAAC,QAAQ,CAAC,aAAa,IAAI,qBAAqB,MAC/CA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,aACrFA,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CAAA,oBAAA,EAEjCC,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,YACrBA,GAAA,CAAC,aAAa,IACZ,IAAI,EACF,4LAA4L,EAE9L,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC3C,SAAS,EAAC,YAAY,EACtB,YAAY,EAAE;wCACZ,oBAAoB;wCACpB,oBAAoB;wCACpB,oBAAoB;wCACpB,oBAAoB;AACrB,qCAAA,EAAA,QAAA,EAEDA,IAAC,GAAG,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CAC5B,GACX,CAAA,EAAA,CACF,EACN,KAAK,IAAI,gBAAgB,IACxBA,GAAA,CAACC,IAAW,KAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHD,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACrCD,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC3C,qBAAqB,IAAI,gBAAgB,EAAE,eAAe,IACzDA,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CACEF,IAAC,UAAU,EAAA,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAC1C,cAAc,CACb,qBAAqB,IAAI;8CACrB,qBAAqB,CAAC;AACxB,8CAAE,gBAAgB,EAAE,eAAe,EACrC,CAAC,EACD,IAAI,CACL,EACDA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,IAClB,KAEH,GAAG,CACJ,EACA,qBAAqB,IAAI,sBAAsB,KAC9CD,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAEEH,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,gDAAA,EAAE,EAAE,KAAK;AACT,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAgB,CAAC;gDAC5D,MAAM,EAAE,aAAa,YAAY,CAAC,qBAAqB,CAAC,IAAgB,CAAC,CAAA,CAAE;AAC3E,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,UAAU,EAAE,GAAG;AACf,gDAAA,UAAU,EAAE,QAAQ;AACpB,gDAAA,QAAQ,EAAE,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO;6CACpD,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,CAAA,+BAAA,EAAkC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA,IAAA,CAAM,EAC3F,GAAG,EAAC,SAAS,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,CACvE,EACD,qBAAqB,CAAC,QAAQ,EAAA,OAAA,CAAA,EAAA,CAC1B,CAAA,EAAA,CACN,CACJ,CAAA,EAAA,CACI,EAAA,CACF,CACR,CAAA,EAAA,CACI,CACR,CAAA,EAAA,CACI;AAEX;;;;"}
|
|
1
|
+
{"version":3,"file":"Estimations.js","sources":["../../../../src/views/BuyBond/components/Estimations.tsx"],"sourcesContent":["import React from 'react'\nimport { getBonusColor, getPayoutAmount, getRawBonus } from '../../../utils/displayHelpers'\nimport { TooltipText } from '../../../config/constants/tooltips'\nimport { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers'\nimport { BondsData } from '../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n NewTiers,\n Promotions,\n TIERS_BG,\n TIERS_COLORS,\n TIERS_NAMES,\n} from '../../../state/tiers/useTierPoints'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport { BillVersion } from '@ape.swap/apeswap-lists'\nimport { getTimePeriods } from '../../../utils/getTimePeriods'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../components/uikit-sdk/Svg'\nimport LoadingDots from '../../../components/uikit-sdk/LoadingDots'\nimport { calculateOptimizationData } from '../utils'\nimport { useAbondPrice } from '../../../state/tokenPrices/useAbondPrice'\nimport TokenImage from '../../../components/uikit-sdk/TokenImage'\nimport { tierOptimizerUIEnabled } from '../../../config/constants/variables'\n\ntype BoostPresentation = {\n label: string\n tooltipReason?: string\n iconType: 'tierMonkey' | 'svg'\n iconName?: 'GiftBoxPlain'\n iconWidth?: number\n iconSx?: Record<string, string | number>\n}\n\nconst DEFAULT_BOOST_PRESENTATION: BoostPresentation = {\n label: 'Boost',\n tooltipReason: 'Ape Tier',\n iconType: 'tierMonkey',\n}\n\nconst PROMOTION_BOOST_PRESENTATIONS: Partial<Record<Promotions, BoostPresentation>> = {\n [Promotions.WelcomeBonus]: {\n label: 'Welcome Bonus',\n tooltipReason: 'Welcome Bonus',\n iconType: 'svg',\n iconName: 'GiftBoxPlain',\n iconWidth: 15,\n iconSx: { mr: '3px', lineHeight: '21px', mt: '-4px' },\n },\n}\n\nconst getBoostPresentation = (promotion?: Promotions | null): BoostPresentation => {\n if (!promotion) return DEFAULT_BOOST_PRESENTATION\n return PROMOTION_BOOST_PRESENTATIONS[promotion] ?? DEFAULT_BOOST_PRESENTATION\n}\n\nconst Estimations = ({\n depositAmount,\n inputValue,\n inputTokenPrice,\n bondData,\n youSpendString,\n isZap,\n fetchingZapQuote,\n zapError,\n}: {\n depositAmount: string // actually deposited (after zap fees and estimations)\n inputValue?: string // input amount selected on the UI\n inputTokenPrice?: number\n bondData: BondsData\n youSpendString?: string\n isZap?: boolean\n fetchingZapQuote?: boolean\n zapError?: boolean\n}) => {\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints, promotion } = tierPointsState || {}\n const abondPrice = useAbondPrice()\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const SDKConfig = useSDKConfig()\n const userTier = getUserTier(promotionalPoints)\n const tierName = userTier ? TIERS_NAMES[userTier] : ''\n\n // Estimations\n const bonusString = getRawBonus(bondData, depositAmount, '0')\n // const fee = getFeeAmount(bondData, depositAmount, userPoints ?? '0')\n // const feeUSD = fee * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints)\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const boostAmount =\n parseFloat(getRawBonus(bondData, depositAmount, promotionalPoints ?? '0')) - parseFloat(noTierAmount)\n\n const optimizationData = calculateOptimizationData(\n inputValue ?? '',\n promotionalPoints!,\n bondData,\n inputTokenPrice,\n abondPrice,\n )\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const boostPresentation = getBoostPresentation(promotion)\n\n return (\n <Flex className=\"modaltable-container text-container\">\n <Flex className=\"text-container row\">\n <Flex className=\"row-container spend\">You Spend:</Flex>\n <Flex className=\"row-container spend-val\">{youSpendString}</Flex>\n </Flex>\n <Flex className=\"text-container row\">\n <Flex className=\"row-container premium\">\n {!!userTier && !!promotionalPoints && SDKConfig.useTiers && bondData.billVersion === BillVersion.V4\n ? 'Base Bonus:'\n : 'Bonus:'}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {(bondData?.feeInPayout || 0) > 0\n ? `This is the dollar value of the bonus tokens you’ll receive at current market price, already accounting for the protocol fee (${bondData.feeInPayout}%)`\n : 'This is the dollar value of the bonus tokens you’ll receive at current market price.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val ${getBonusColor(bonusString)}`}>\n $ {formatNumberSI(bonusString)}\n </Flex>\n )}\n </Flex>\n {trueBondPrice?.points !== '0' && userTier && promotionalPoints && SDKConfig.useTiers && (\n <Flex\n sx={{\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '2px',\n position: 'relative',\n justifyContent: 'space-between',\n }}\n >\n <Flex className=\"row-container premium\" sx={{ position: 'relative', zIndex: 2 }}>\n {boostPresentation.iconType === 'svg' ? (\n <Flex sx={boostPresentation.iconSx}>\n <Svg icon={boostPresentation.iconName} width={boostPresentation.iconWidth} />\n </Flex>\n ) : (\n <img\n src={`https://ape.bond/images/launch/${tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n )}\n {boostPresentation.label}\n <Flex sx={{ color: 'success', mx: '3px', fontWeight: 700 }}>{`+${trueBondPrice?.boost ?? 0}%`}</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Boost(boostPresentation.tooltipReason)}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val premium-positive`}>$ {formatNumberSI(boostAmount)}</Flex>\n )}\n </Flex>\n )}\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '4px',\n position: 'relative',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n background: '#9960C5',\n opacity: 0.2,\n borderRadius: 'normal',\n }}\n />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\" sx={{ zIndex: 1 }}>\n You Get (over {getTimePeriods(bondData?.vestingTerm, true).days} days):\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\" sx={{ zIndex: 1 }}>\n {formatNumberSI(estimatedOutputAmount, 4)} {bondData?.showcaseTokenName} = ${' '}\n {formatNumberSI(estimatedOutputUSD, 2)}\n </Flex>\n )}\n </Flex>\n </Flex>\n {(bondData.tierBoostRate || highestProfitableTier) && (\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px', mt: '3px' }}>\n <Flex className=\"row-container get\">\n Ape Points Earned:\n <Flex sx={{ ml: '5px' }}>\n <TooltipBubble\n body={\n 'This purchase will earn you Ape Points. Ape Points provide a weekly yield in USDT and count toward your Ape Tier progression. Unlock higher Ape Tiers to get extra discounts on all Bonds.'\n }\n width={['200px', '200px', '200px', '250px']}\n placement=\"bottomLeft\"\n transformTip={[\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-7%, 0%)',\n ]}\n >\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </TooltipBubble>\n </Flex>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n <Flex sx={{ alignItems: 'center', gap: '5px' }}>\n {highestProfitableTier || optimizationData?.tierBoostPoints ? (\n <>\n <TokenImage symbol={'veABOND'} size={15} />\n {formatNumberSI(\n highestProfitableTier && tierOptimizerUIEnabled\n ? highestProfitableTier.necessaryPointsToUpgrade\n : optimizationData?.tierBoostPoints,\n 2,\n true,\n )}\n <Flex>points</Flex>\n </>\n ) : (\n '-'\n )}\n {highestProfitableTier && tierOptimizerUIEnabled && (\n <>\n +\n <Flex\n sx={{\n px: '3px',\n height: '24px',\n background: TIERS_BG[highestProfitableTier.tier as NewTiers],\n border: `2px solid ${TIERS_COLORS[highestProfitableTier.tier as NewTiers]}`,\n borderRadius: '5px',\n fontWeight: 700,\n alignItems: 'center',\n minWidth: highestProfitableTier.tier > 2 && '118px',\n }}\n >\n <img\n src={`https://ape.bond/images/launch/${highestProfitableTier?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n {highestProfitableTier.tierName} Tier\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default Estimations\n"],"names":["_jsxs","_jsx","LoadingDots","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;AAmCA,MAAM,0BAA0B,GAAsB;AACpD,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,QAAQ,EAAE,YAAY;CACvB;AAED,MAAM,6BAA6B,GAAmD;AACpF,IAAA,CAAC,UAAU,CAAC,YAAY,GAAG;AACzB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,aAAa,EAAE,eAAe;AAC9B,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AACtD,KAAA;CACF;AAED,MAAM,oBAAoB,GAAG,CAAC,SAA6B,KAAuB;AAChF,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,0BAA0B;AACjD,IAAA,OAAO,6BAA6B,CAAC,SAAS,CAAC,IAAI,0BAA0B;AAC/E,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,EACnB,aAAa,EACb,UAAU,EACV,eAAe,EACf,QAAQ,EACR,cAAc,EACd,KAAK,EACL,gBAAgB,EAChB,QAAQ,GAUT,KAAI;IACH,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE;IACjD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,eAAe,IAAI,EAAE;AAC9D,IAAA,MAAM,UAAU,GAAG,aAAa,EAAE;IAClC,MAAM,aAAa,GAAG,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,EAAE,cAAc,CAAC;AAC3F,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;AAChC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC;AAC/C,IAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE;;IAGtD,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC;;;IAI7D,MAAM,qBAAqB,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,CAAC;AACzF,IAAA,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,IAAI,GAAG,CAAC;IAEhG,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC;IAC9D,MAAM,WAAW,GACf,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC;AAEvG,IAAA,MAAM,gBAAgB,GAAG,yBAAyB,CAChD,UAAU,IAAI,EAAE,EAChB,iBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAU,CACX;AACD,IAAA,MAAM,qBAAqB,GAAG,gBAAgB,EAAE,qBAAqB;AACrE,IAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAEzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CACnDA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CAClCC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,qBAAqB,2BAAkB,EACvDA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAE,cAAc,EAAA,CAAQ,CAAA,EAAA,CAC5D,EACPD,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CAClCA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,aACpC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,iBAAiB,IAAI,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC;AAC/F,kCAAE;kCACA,QAAQ,EACZC,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EACF,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,IAAI;AAC9B,0CAAE,CAAA,8HAAA,EAAiI,QAAQ,CAAC,WAAW,CAAA,EAAA;0CACrJ,sFAAsF,EAAA,CACrF,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAC1CA,GAAA,CAAC,GAAG,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CACrC,EAAA,CACO,CAAA,EAAA,CACX,EACN,KAAK,IAAI,gBAAgB,IACxBA,IAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,KAAC,IAAI,EAAA,EAAC,SAAS,EAAE,CAAA,0BAAA,EAA6B,aAAa,CAAC,WAAW,CAAC,CAAA,CAAE,EAAA,QAAA,EAAA,CAAA,IAAA,EACrE,cAAc,CAAC,WAAW,CAAC,CAAA,EAAA,CACzB,CACR,CAAA,EAAA,CACI,EACN,aAAa,EAAE,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,iBAAiB,IAAI,SAAS,CAAC,QAAQ,KACnFA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,cAAc,EAAE,eAAe;iBAChC,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CAC5E,iBAAiB,CAAC,QAAQ,KAAK,KAAK,IACnCC,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,iBAAiB,CAAC,MAAM,EAAA,QAAA,EAChCA,GAAA,CAAC,GAAG,EAAA,EAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAA,CAAI,EAAA,CACxE,KAEPA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,CAAA,+BAAA,EAAkC,QAAQ,EAAE,WAAW,EAAE,CAAA,IAAA,CAAM,EACpE,GAAG,EAAC,SAAS,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,CACvE,CACH,EACA,iBAAiB,CAAC,KAAK,EACxBA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,EAAA,QAAA,EAAG,CAAA,CAAA,EAAI,aAAa,EAAE,KAAK,IAAI,CAAC,CAAA,CAAA,CAAG,EAAA,CAAQ,EACrGA,GAAA,CAAC,aAAa,IACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EAAEA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAE,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAA,CAAQ,EACvE,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,YAAY,EACtB,YAAY,EAAC,oBAAoB,EAAA,QAAA,EAEjCA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAC1CA,GAAA,CAAC,GAAG,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CACrC,GACO,CAAA,EAAA,CACX,EACN,KAAK,IAAI,gBAAgB,IACxBA,GAAA,CAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAE,CAAA,0CAAA,CAA4C,EAAA,QAAA,EAAA,CAAA,IAAA,EAAK,cAAc,CAAC,WAAW,CAAC,CAAA,EAAA,CAAQ,CACtG,CAAA,EAAA,CACI,CACR,EACDA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oBAAA,MAAM,EAAE,mBAAmB;AAC3B,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,EAAE,EAAE,MAAM;AACV,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,EAAE,EAAE,KAAK;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,OAAO,EAAE,GAAG;AACZ,4BAAA,YAAY,EAAE,QAAQ;AACvB,yBAAA,EAAA,CACD,EACFD,IAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC1EA,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CAAA,gBAAA,EACpC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,eAC1D,EACN,KAAK,IAAI,gBAAgB,IACxBC,IAACC,IAAW,EAAA,EAAA,CAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHF,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACtD,cAAc,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAA,GAAA,EAAG,QAAQ,EAAE,iBAAiB,UAAM,GAAG,EAC/E,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,IACjC,CACR,CAAA,EAAA,CACI,IACF,EACN,CAAC,QAAQ,CAAC,aAAa,IAAI,qBAAqB,MAC/CA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,aACrFA,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CAAA,oBAAA,EAEjCC,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,YACrBA,GAAA,CAAC,aAAa,IACZ,IAAI,EACF,4LAA4L,EAE9L,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAC3C,SAAS,EAAC,YAAY,EACtB,YAAY,EAAE;wCACZ,oBAAoB;wCACpB,oBAAoB;wCACpB,oBAAoB;wCACpB,oBAAoB;AACrB,qCAAA,EAAA,QAAA,EAEDA,IAAC,GAAG,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAC,MAAM,EAAA,CAAG,EAAA,CAC5B,GACX,CAAA,EAAA,CACF,EACN,KAAK,IAAI,gBAAgB,IACxBA,GAAA,CAACC,IAAW,KAAG,IACb,KAAK,IAAI,QAAQ,IACnB,GAAG,KAEHD,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,QAAA,EACrCD,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CAC3C,qBAAqB,IAAI,gBAAgB,EAAE,eAAe,IACzDA,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CACEF,IAAC,UAAU,EAAA,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAC1C,cAAc,CACb,qBAAqB,IAAI;8CACrB,qBAAqB,CAAC;AACxB,8CAAE,gBAAgB,EAAE,eAAe,EACrC,CAAC,EACD,IAAI,CACL,EACDA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,IAClB,KAEH,GAAG,CACJ,EACA,qBAAqB,IAAI,sBAAsB,KAC9CD,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAEEH,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,gDAAA,EAAE,EAAE,KAAK;AACT,gDAAA,MAAM,EAAE,MAAM;AACd,gDAAA,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAgB,CAAC;gDAC5D,MAAM,EAAE,aAAa,YAAY,CAAC,qBAAqB,CAAC,IAAgB,CAAC,CAAA,CAAE;AAC3E,gDAAA,YAAY,EAAE,KAAK;AACnB,gDAAA,UAAU,EAAE,GAAG;AACf,gDAAA,UAAU,EAAE,QAAQ;AACpB,gDAAA,QAAQ,EAAE,qBAAqB,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO;6CACpD,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,CAAA,+BAAA,EAAkC,qBAAqB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA,IAAA,CAAM,EAC3F,GAAG,EAAC,SAAS,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,EAAA,CACvE,EACD,qBAAqB,CAAC,QAAQ,EAAA,OAAA,CAAA,EAAA,CAC1B,CAAA,EAAA,CACN,CACJ,CAAA,EAAA,CACI,EAAA,CACF,CACR,CAAA,EAAA,CACI,CACR,CAAA,EAAA,CACI;AAEX;;;;"}
|
|
@@ -65,6 +65,12 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
65
65
|
e.stopPropagation();
|
|
66
66
|
setIsOpen((prev) => !prev);
|
|
67
67
|
};
|
|
68
|
+
const handleUpgradeNowClick = (e) => {
|
|
69
|
+
e.stopPropagation();
|
|
70
|
+
if (!nextTierData)
|
|
71
|
+
return;
|
|
72
|
+
handleTierSelection(nextTierData.minBreakevenWithFeeUSD);
|
|
73
|
+
};
|
|
68
74
|
return (userTier !== LaunchBondTiers.Legend &&
|
|
69
75
|
bond.billVersion === BillVersion.V4 && (jsxs(Flex, { sx: {
|
|
70
76
|
width: '100%',
|
|
@@ -109,8 +115,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
109
115
|
':hover': { textDecoration: 'underline' },
|
|
110
116
|
display: ['inline', 'inline', 'inline', 'none'],
|
|
111
117
|
}, onClick: (e) => {
|
|
112
|
-
e
|
|
113
|
-
handleTierSelection(nextTierData.minBreakevenWithFeeUSD);
|
|
118
|
+
handleUpgradeNowClick(e);
|
|
114
119
|
}, children: `Upgrade now >` })] }), jsx("span", { sx: {
|
|
115
120
|
ml: '5px',
|
|
116
121
|
mr: '15px',
|
|
@@ -120,8 +125,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
120
125
|
':hover': { textDecoration: 'underline' },
|
|
121
126
|
display: ['none', 'none', 'none', 'flex'],
|
|
122
127
|
}, onClick: (e) => {
|
|
123
|
-
e
|
|
124
|
-
handleTierSelection(nextTierData.minBreakevenWithFeeUSD);
|
|
128
|
+
handleUpgradeNowClick(e);
|
|
125
129
|
}, children: `Upgrade now >` }), shouldShowNextTierRowCaret && (jsx("span", { sx: { display: 'inline-flex', alignItems: 'center' }, onClick: handleToggleOpen, role: "button", "aria-label": isOpen ? 'Collapse tier list' : 'Expand tier list', children: jsx(Svg, { icon: 'caret', direction: isOpen ? 'up' : 'down', width: 10 }) }))] })), jsx(AnimatePresence, { children: isOpen && optimizationData && (jsx(motion.div, { initial: { height: 0 }, animate: { height: 'fit-content' }, transition: { opacity: { duration: 0.2 } }, exit: { height: 0 }, sx: { overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }, children: optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {
|
|
126
130
|
return (jsxs(Flex, { sx: {
|
|
127
131
|
border: '1px solid #9960C5',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst UPGRADE_NOW_USD_BUFFER = 0.1\n\nconst getUpgradeNowAmountUsd = (amountUsd: number) =>\n new BigNumber(amountUsd)\n .decimalPlaces(2, BigNumber.ROUND_HALF_UP)\n .plus(UPGRADE_NOW_USD_BUFFER)\n .decimalPlaces(2, BigNumber.ROUND_CEIL)\n .toNumber()\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const shouldRenderNextTierRow = Boolean((userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen))\n const shouldShowNextTierRowCaret = !highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n const roundedInputValue = new BigNumber(inputValueInSelectedToken)\n .decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)\n .toFixed(inputTokenDecimals)\n setInputValue(roundedInputValue)\n }\n\n const handleTierSelection = (amount: number) => {\n handleSetNextTierAmount(getUpgradeNowAmountUsd(amount))\n setIsOpen(false)\n }\n\n const handleToggleOpen = (e: React.MouseEvent) => {\n e.stopPropagation()\n setIsOpen((prev) => !prev)\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier && (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )}\n {shouldRenderNextTierRow && (\n <Flex\n onClick={handleToggleOpen}\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: highestProfitableTier ? '3px' : '0px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>{nextTierData?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {`Upgrade now >`}\n </span>\n {shouldShowNextTierRowCaret && (\n <span\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n onClick={handleToggleOpen}\n role=\"button\"\n aria-label={isOpen ? 'Collapse tier list' : 'Expand tier list'}\n >\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </span>\n )}\n </Flex>\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: index === 0 ? '0px' : '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={handleToggleOpen}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n {/*TODO: delete this debugging table once we are sure all is ok*/}\n {/*<Flex sx={{ mt: '15px' }}>Debbuging table</Flex>*/}\n {/*<Flex*/}\n {/* sx={{*/}\n {/* width: '100%',*/}\n {/* mt: '10px',*/}\n {/* fontSize: '12px',*/}\n {/* fontWeight: 400,*/}\n {/* flexDirection: 'column',*/}\n {/* position: 'relative',*/}\n {/* '& > :nth-of-type(even)': {*/}\n {/* background: 'white3',*/}\n {/* },*/}\n {/* '& > :nth-of-type(odd)': {*/}\n {/* background: 'white4',*/}\n {/* },*/}\n {/* }}*/}\n {/*>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>User Points</Flex>*/}\n {/* <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* /!*@ts-ignore*!/*/}\n {/* <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>*/}\n {/* <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>usd Abond necessary for next tier</Flex>*/}\n {/* <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee percentage</Flex>*/}\n {/* <Flex>*/}\n {/* {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})*/}\n {/* </Flex>*/}\n {/* </Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Points To Be Earned through tierBoostRate</Flex>*/}\n {/* <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst UPGRADE_NOW_USD_BUFFER = 0.1\n\nconst getUpgradeNowAmountUsd = (amountUsd: number) =>\n new BigNumber(amountUsd)\n .decimalPlaces(2, BigNumber.ROUND_HALF_UP)\n .plus(UPGRADE_NOW_USD_BUFFER)\n .decimalPlaces(2, BigNumber.ROUND_CEIL)\n .toNumber()\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const shouldRenderNextTierRow = Boolean((userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen))\n const shouldShowNextTierRowCaret = !highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n const roundedInputValue = new BigNumber(inputValueInSelectedToken)\n .decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)\n .toFixed(inputTokenDecimals)\n setInputValue(roundedInputValue)\n }\n\n const handleTierSelection = (amount: number) => {\n handleSetNextTierAmount(getUpgradeNowAmountUsd(amount))\n setIsOpen(false)\n }\n\n const handleToggleOpen = (e: React.MouseEvent) => {\n e.stopPropagation()\n setIsOpen((prev) => !prev)\n }\n\n const handleUpgradeNowClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!nextTierData) return\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier && (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )}\n {shouldRenderNextTierRow && (\n <Flex\n onClick={handleToggleOpen}\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: highestProfitableTier ? '3px' : '0px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>{nextTierData?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n {shouldShowNextTierRowCaret && (\n <span\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n onClick={handleToggleOpen}\n role=\"button\"\n aria-label={isOpen ? 'Collapse tier list' : 'Expand tier list'}\n >\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </span>\n )}\n </Flex>\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: index === 0 ? '0px' : '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={handleToggleOpen}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n {/*TODO: delete this debugging table once we are sure all is ok*/}\n {/*<Flex sx={{ mt: '15px' }}>Debbuging table</Flex>*/}\n {/*<Flex*/}\n {/* sx={{*/}\n {/* width: '100%',*/}\n {/* mt: '10px',*/}\n {/* fontSize: '12px',*/}\n {/* fontWeight: 400,*/}\n {/* flexDirection: 'column',*/}\n {/* position: 'relative',*/}\n {/* '& > :nth-of-type(even)': {*/}\n {/* background: 'white3',*/}\n {/* },*/}\n {/* '& > :nth-of-type(odd)': {*/}\n {/* background: 'white4',*/}\n {/* },*/}\n {/* }}*/}\n {/*>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>User Points</Flex>*/}\n {/* <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* /!*@ts-ignore*!/*/}\n {/* <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>*/}\n {/* <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>usd Abond necessary for next tier</Flex>*/}\n {/* <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee percentage</Flex>*/}\n {/* <Flex>*/}\n {/* {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})*/}\n {/* </Flex>*/}\n {/* </Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Points To Be Earned through tierBoostRate</Flex>*/}\n {/* <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|