@ape.swap/bonds-sdk 5.1.34 → 5.1.37
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/components/TokenSelectorPanel/index.js.map +1 -1
- package/dist/components/uikit-sdk/Svg/Icons/GiftBox.d.ts +4 -0
- package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js +10 -0
- package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js.map +1 -0
- package/dist/components/uikit-sdk/Svg/index.js +3 -0
- package/dist/components/uikit-sdk/Svg/index.js.map +1 -1
- package/dist/components/uikit-sdk/Svg/types.d.ts +1 -0
- package/dist/components/uikit-sdk/Svg/types.js +1 -0
- package/dist/components/uikit-sdk/Svg/types.js.map +1 -1
- package/dist/components/uikit-sdk/TooltipBubble/types.d.ts +2 -2
- package/dist/components/uikit-sdk/TooltipBubble/types.js.map +1 -1
- package/dist/config/constants/queryKeys.d.ts +1 -0
- package/dist/config/constants/queryKeys.js.map +1 -1
- package/dist/state/tiers/useTierPoints.d.ts +15 -2
- package/dist/state/tiers/useTierPoints.js +31 -4
- package/dist/state/tiers/useTierPoints.js.map +1 -1
- package/dist/state/zap/useSoulZapBondQuote.js +6 -3
- package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
- package/dist/utils/formatNumber.d.ts +6 -0
- package/dist/utils/formatNumber.js +39 -3
- package/dist/utils/formatNumber.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +1 -2
- package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js +3 -2
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
- package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +22 -36
- package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
- package/dist/views/BuyBond/BuyComponent.js +10 -9
- package/dist/views/BuyBond/BuyComponent.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalHeader.js +21 -3
- package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
- package/dist/views/BuyBond/components/Estimations.d.ts +1 -1
- package/dist/views/BuyBond/components/Estimations.js +15 -9
- package/dist/views/BuyBond/components/Estimations.js.map +1 -1
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +27 -7
- package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +4 -3
- package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +6 -5
- package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
- package/dist/views/ProjectView/ProjectView.js +7 -9
- package/dist/views/ProjectView/ProjectView.js.map +1 -1
- package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js +111 -0
- package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js.map +1 -0
- package/dist/views/ProjectView/components/PriceChart/components/LineChart.js +100 -0
- package/dist/views/ProjectView/components/PriceChart/components/LineChart.js.map +1 -0
- package/dist/views/ProjectView/components/PriceChart/components/utils.js +20 -0
- package/dist/views/ProjectView/components/PriceChart/components/utils.js.map +1 -0
- package/dist/views/ProjectView/components/PriceChart/index.js +38 -0
- package/dist/views/ProjectView/components/PriceChart/index.js.map +1 -0
- package/dist/views/ProjectView/components/PriceChart/styles.js +44 -0
- package/dist/views/ProjectView/components/PriceChart/styles.js.map +1 -0
- package/dist/views/ProjectView/components/RecommendationCards/index.js +7 -2
- package/dist/views/ProjectView/components/RecommendationCards/index.js.map +1 -1
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +4 -3
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
- package/dist/views/TransactionModal/TransactionModal.js +5 -4
- package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
- package/package.json +2 -3
- package/dist/components/TabNavigation/index.js +0 -33
- package/dist/components/TabNavigation/index.js.map +0 -1
- package/dist/views/RakuraiComponent/RakuraiComponent.d.ts +0 -3
- package/dist/views/RakuraiComponent/RakuraiComponent.js +0 -229
- package/dist/views/RakuraiComponent/RakuraiComponent.js.map +0 -1
- package/dist/views/RakuraiComponent/useRakuraiStats.d.ts +0 -7
- package/dist/views/RakuraiComponent/useRakuraiStats.js +0 -42
- package/dist/views/RakuraiComponent/useRakuraiStats.js.map +0 -1
- package/dist/views/RakuraiComponent/useSolanaStakeBalances.d.ts +0 -8
- package/dist/views/RakuraiComponent/useSolanaStakeBalances.js +0 -47
- package/dist/views/RakuraiComponent/useSolanaStakeBalances.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionModal.js","sources":["../../../src/views/TransactionModal/TransactionModal.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Modal from '../../components/uikit-sdk/Modal'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport StepBubble from '../../components/StepBubble'\nimport LoadingSpinner from '../../components/LoadingSpinner'\nimport { useSwitchChain } from 'wagmi'\nimport { NETWORK_LABEL } from '../../config/constants/chains'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\nimport { ApprovalState } from '../../state/allowance/useAllowance'\nimport {\n discountEarnTokenPriceForUser,\n earnTokenPrice,\n getPayoutAmount,\n getVestingTermsString,\n} from '../../utils/displayHelpers'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../state/tiers/useTierPoints'\nimport { BondsData } from '../../types/bonds'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport { useMonitorTx } from '../../hooks/useMonitorTx'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport isArray from 'lodash-es/isArray.js'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { getTimePeriods } from '../../utils/getTimePeriods'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nconst stepDelay = 1000\n\nconst TransactionModal = ({\n onDismiss,\n txChain,\n approvalState,\n approveCallback,\n loadingTx,\n txCallback,\n bondData,\n inputToken,\n inputValue,\n depositAmount,\n buyTxHash,\n rateChanged,\n}: {\n onDismiss?: () => void\n txChain?: number\n approvalState?: ApprovalState\n approveCallback?: () => Promise<void>\n loadingTx?: boolean\n txCallback?: () => void\n bondData: BondsData\n inputToken: Token | 'NATIVE' | undefined\n inputValue: string\n depositAmount: string\n buyTxHash?: string\n rateChanged: boolean\n}) => {\n // Hooks\n const { chain } = useEVMAccount()\n const { data: userPoints } = useTierPoints()\n const inputTokenPrice = useCurrencyPrice(inputToken ?? null, txChain as ChainId)\n const { switchChainAsync } = useSwitchChain()\n const SDKConfig = useSDKConfig()\n\n // Flow\n const initialChain = useMemo(\n () => chain?.id,\n /* eslint-disable react-hooks/exhaustive-deps */\n [],\n )\n const showSwitchChainFlow = txChain !== initialChain\n // const showSwitchChainFlow = true\n const [hasToSwitchChain, setHasToSwitchChain] = useState<boolean>(showSwitchChainFlow)\n const [hasToApprove, setHasToApprove] = useState<boolean>(true)\n\n // Loading state\n const [loadingSwitchChain, setLoadingSwitchChain] = useState<boolean>(false)\n const [approveLoading, setApproveLoading] = useState<boolean>(false)\n\n // Values for regular bonds\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, userPoints ?? '0')\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n const preTGEEstimatedOutput = parseFloat(inputValue) / (bondData?.initPrice ?? 0)\n const preTGEEstimatedOutputUSD = preTGEEstimatedOutput * (bondData?.tgePrice ?? 0)\n\n const handleSwitchChain = () => {\n setLoadingSwitchChain(true)\n switchChainAsync({ chainId: txChain! })\n .then(() => {\n setHasToSwitchChain(false)\n setApproveLoading(true)\n })\n .catch((e) => console.error(e))\n .finally(() => {\n setLoadingSwitchChain(false)\n })\n }\n\n const handleApprove = () => {\n setApproveLoading(true)\n approveCallback?.().catch(() => {\n setApproveLoading(false)\n })\n }\n\n // Switch Chain Step #1\n const hasTriggeredSwitch = useRef(false)\n useEffect(() => {\n if (hasToSwitchChain && !hasTriggeredSwitch.current) {\n setLoadingSwitchChain(true)\n const delay = setTimeout(() => {\n hasTriggeredSwitch.current = true\n handleSwitchChain()\n }, stepDelay)\n return () => clearTimeout(delay)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain])\n\n // Trigger approve Step #2\n const hasTriggeredApproval = useRef(false)\n useEffect(() => {\n if (!hasToSwitchChain || !showSwitchChainFlow) {\n if (approvalState === ApprovalState.APPROVED) {\n setApproveLoading(true)\n const delay = setTimeout(() => {\n setApproveLoading(false)\n setHasToApprove(false)\n }, stepDelay)\n return () => clearTimeout(delay)\n } else if (!hasTriggeredApproval.current && approvalState !== ApprovalState.PENDING) {\n setApproveLoading(true)\n hasTriggeredApproval.current = true\n handleApprove()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain, approvalState])\n\n // Execute main tx Step #3\n const hasTriggeredTx = useRef(false)\n useEffect(() => {\n if (!hasToSwitchChain && !hasToApprove && !hasTriggeredTx.current) {\n hasTriggeredTx.current = true\n if (rateChanged) {\n onDismiss?.()\n } else {\n setApproveLoading(false)\n txCallback?.()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain, hasToApprove, txCallback])\n\n // Close modal if a hash is found. Final Step\n const { data: txReceipt, isSuccess, isLoading: verifyingTx } = useMonitorTx(buyTxHash, txChain)\n useEffect(() => {\n if (buyTxHash && txReceipt) {\n if (isSuccess) {\n onDismiss?.()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [buyTxHash, txReceipt, isSuccess])\n\n const currentStep: number = showSwitchChainFlow ? (hasToSwitchChain ? 1 : hasToApprove ? 2 : 3) : hasToApprove ? 1 : 2\n const splited = typeof inputToken !== 'string' ? inputToken?.symbol?.split('-') : undefined\n const trueBondPrice = findHighestTrueBondPrice(\n // @ts-ignore\n TIERS_WEIGHT[getUserTier(userPoints)] ?? '0',\n bondData?.trueBondPrices,\n )\n\n return (\n <Modal>\n <ModalHeader onDismiss={onDismiss} hideDivider />\n <Flex sx={{ flexDirection: 'column', width: '100%' }}>\n <Flex sx={{ width: '100%', alignItems: 'center', p: '10px' }}>\n {showSwitchChainFlow && (\n <StepBubble number={1} title={'Switch Chain'} currentStep={currentStep} loading={loadingSwitchChain} />\n )}\n <StepBubble\n number={showSwitchChainFlow ? 2 : 1}\n title={'Approve'}\n currentStep={currentStep}\n loading={approveLoading || approvalState === ApprovalState.PENDING}\n />\n <StepBubble\n number={showSwitchChainFlow ? 3 : 2}\n title={'Buy'}\n currentStep={currentStep}\n loading={loadingTx || verifyingTx}\n hideBar\n />\n </Flex>\n <Flex sx={{ width: '100%', mt: '40px', justifyContent: 'center' }}>\n <LoadingSpinner\n isLoading={\n loadingSwitchChain ||\n approveLoading ||\n loadingTx ||\n verifyingTx ||\n approvalState === ApprovalState.PENDING\n }\n size={100}\n />\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'center', mt: '10px' }}>\n {hasToSwitchChain\n ? loadingSwitchChain\n ? 'Switching Chain...'\n : 'Switch Chain'\n : hasToApprove\n ? approveLoading || approvalState === ApprovalState.PENDING\n ? 'Approving...'\n : 'Approve Contract'\n : loadingTx || verifyingTx\n ? 'Buying...'\n : 'Buy'}\n </Flex>\n {bondData.billType === 'fcfs' ? (\n <Flex sx={{ width: '100%', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n p: '5px',\n borderRadius: 'normal',\n color: 'textDisabledButton',\n justifyContent: 'center',\n }}\n >\n {bondData.earnToken.symbol} ({getTimePeriods(bondData?.vestingTerm).months} Mo)\n </Flex>\n <Flex sx={{ width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }}>\n <TokenImage symbol={bondData.earnToken.symbol} size={40} chain={txChain} />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', alignItems: 'center' }}>\n <Flex sx={{ flexDirection: 'column', fontSize: '12px', ml: '10px' }}>\n <Flex sx={{ color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }}>\n ${bondData.tgePrice}\n </Flex>\n <Flex sx={{ color: 'green', fontWeight: 600 }}>${bondData.initPrice}</Flex>\n </Flex>\n <Flex\n sx={{\n p: '5px',\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n background: 'rgba(56, 166, 17, 0.13)',\n color: 'success',\n lineHeight: '18px',\n }}\n >\n {trueBondPrice?.bonusWithFee?.toFixed(2)} % Bonus\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', mt: '10px' }}>\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n {isArray(splited) ? (\n <TokenImage symbol={splited[0]} symbol2={splited[1]} size={20} chain={txChain} />\n ) : (\n <TokenImage symbol={getSymbol(inputToken, txChain)} size={20} chain={txChain} />\n )}\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(inputValue, 4) ?? '0'}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (\n {inputTokenPrice?.price && inputValue\n ? `$${formatNumberSI(inputTokenPrice?.price * parseFloat(inputValue))}`\n : '0.00'}\n )\n </Flex>\n </Flex>\n <Svg icon={'arrow'} direction={'right'} width={'10px'} />\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n <TokenImage symbol={getSymbol(bondData.earnToken, txChain)} chain={txChain} size={20} />\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(preTGEEstimatedOutput, 4)}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (${formatNumberSI(preTGEEstimatedOutputUSD)})\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <Flex sx={{ width: '100%', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n p: '5px',\n borderRadius: 'normal',\n color: 'textDisabledButton',\n justifyContent: 'center',\n }}\n >\n {bondData.earnToken.symbol} ({getVestingTermsString(bondData)})\n </Flex>\n <Flex sx={{ width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }}>\n <TokenImage symbol={bondData.earnToken.symbol} size={40} chain={txChain} />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', alignItems: 'center' }}>\n <Flex sx={{ flexDirection: 'column', fontSize: '12px', ml: '10px' }}>\n <Flex sx={{ color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }}>\n ${earnTokenPrice(bondData)}\n </Flex>\n <Flex sx={{ color: 'green', fontWeight: 600 }}>\n $\n {discountEarnTokenPriceForUser(bondData, SDKConfig.useTiers, getUserTier(userPoints!) ?? undefined)}\n </Flex>\n </Flex>\n <Flex\n sx={{\n p: '5px',\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n background: 'rgba(56, 166, 17, 0.13)',\n color: 'success',\n lineHeight: '18px',\n }}\n >\n {bondData.earnToken.symbol.toLowerCase() === 'ireet'\n ? '3.00'\n : trueBondPrice?.bonusWithFee?.toFixed(2)}{' '}\n % Bonus\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', mt: '10px' }}>\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n {isArray(splited) ? (\n <TokenImage symbol={splited[0]} symbol2={splited[1]} size={20} chain={txChain} />\n ) : (\n <TokenImage symbol={getSymbol(inputToken, txChain)} size={20} chain={txChain} />\n )}\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(inputValue, 4) ?? '0'}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (\n {inputTokenPrice?.price && inputValue\n ? `$${formatNumberSI(inputTokenPrice?.price * parseFloat(inputValue))}`\n : '0.00'}\n )\n </Flex>\n </Flex>\n <Svg icon={'arrow'} direction={'right'} width={'10px'} />\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n <TokenImage symbol={getSymbol(bondData.earnToken, txChain)} chain={txChain} size={20} />\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(estimatedOutputAmount, 4)}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (${formatNumberSI(estimatedOutputUSD)})\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n )}\n\n {/*\n\n Action Buttons\n\n */}\n <Flex sx={{ mt: '20px' }}>\n {hasToSwitchChain ? (\n <Button load={loadingSwitchChain} disabled={loadingSwitchChain} onClick={handleSwitchChain} fullWidth>\n switch to {NETWORK_LABEL[txChain!]}\n </Button>\n ) : !hasToApprove ? (\n <Button load={loadingTx || verifyingTx} disabled={loadingTx || verifyingTx} onClick={txCallback} fullWidth>\n buy\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={approvalState === ApprovalState.PENDING || approveLoading}\n disabled={approvalState === ApprovalState.PENDING || approveLoading}\n onClick={handleApprove}\n fullWidth\n >\n Approve\n </Button>\n )}\n </Flex>\n </Flex>\n </Modal>\n )\n}\n\nexport default TransactionModal\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TransactionModal.js","sources":["../../../src/views/TransactionModal/TransactionModal.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Modal from '../../components/uikit-sdk/Modal'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport StepBubble from '../../components/StepBubble'\nimport LoadingSpinner from '../../components/LoadingSpinner'\nimport { useSwitchChain } from 'wagmi'\nimport { NETWORK_LABEL } from '../../config/constants/chains'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\nimport { ApprovalState } from '../../state/allowance/useAllowance'\nimport {\n discountEarnTokenPriceForUser,\n earnTokenPrice,\n getPayoutAmount,\n getVestingTermsString,\n} from '../../utils/displayHelpers'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../state/tiers/useTierPoints'\nimport { BondsData } from '../../types/bonds'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\nimport { useMonitorTx } from '../../hooks/useMonitorTx'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport isArray from 'lodash-es/isArray.js'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { getTimePeriods } from '../../utils/getTimePeriods'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nconst stepDelay = 1000\n\nconst TransactionModal = ({\n onDismiss,\n txChain,\n approvalState,\n approveCallback,\n loadingTx,\n txCallback,\n bondData,\n inputToken,\n inputValue,\n depositAmount,\n buyTxHash,\n rateChanged,\n}: {\n onDismiss?: () => void\n txChain?: number\n approvalState?: ApprovalState\n approveCallback?: () => Promise<void>\n loadingTx?: boolean\n txCallback?: () => void\n bondData: BondsData\n inputToken: Token | 'NATIVE' | undefined\n inputValue: string\n depositAmount: string\n buyTxHash?: string\n rateChanged: boolean\n}) => {\n // Hooks\n const { chain } = useEVMAccount()\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints } = tierPointsState || {}\n const inputTokenPrice = useCurrencyPrice(inputToken ?? null, txChain as ChainId)\n const { switchChainAsync } = useSwitchChain()\n const SDKConfig = useSDKConfig()\n\n // Flow\n const initialChain = useMemo(\n () => chain?.id,\n /* eslint-disable react-hooks/exhaustive-deps */\n [],\n )\n const showSwitchChainFlow = txChain !== initialChain\n // const showSwitchChainFlow = true\n const [hasToSwitchChain, setHasToSwitchChain] = useState<boolean>(showSwitchChainFlow)\n const [hasToApprove, setHasToApprove] = useState<boolean>(true)\n\n // Loading state\n const [loadingSwitchChain, setLoadingSwitchChain] = useState<boolean>(false)\n const [approveLoading, setApproveLoading] = useState<boolean>(false)\n\n // Values for regular bonds\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints ?? '0')\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n const preTGEEstimatedOutput = parseFloat(inputValue) / (bondData?.initPrice ?? 0)\n const preTGEEstimatedOutputUSD = preTGEEstimatedOutput * (bondData?.tgePrice ?? 0)\n\n const handleSwitchChain = () => {\n setLoadingSwitchChain(true)\n switchChainAsync({ chainId: txChain! })\n .then(() => {\n setHasToSwitchChain(false)\n setApproveLoading(true)\n })\n .catch((e) => console.error(e))\n .finally(() => {\n setLoadingSwitchChain(false)\n })\n }\n\n const handleApprove = () => {\n setApproveLoading(true)\n approveCallback?.().catch(() => {\n setApproveLoading(false)\n })\n }\n\n // Switch Chain Step #1\n const hasTriggeredSwitch = useRef(false)\n useEffect(() => {\n if (hasToSwitchChain && !hasTriggeredSwitch.current) {\n setLoadingSwitchChain(true)\n const delay = setTimeout(() => {\n hasTriggeredSwitch.current = true\n handleSwitchChain()\n }, stepDelay)\n return () => clearTimeout(delay)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain])\n\n // Trigger approve Step #2\n const hasTriggeredApproval = useRef(false)\n useEffect(() => {\n if (!hasToSwitchChain || !showSwitchChainFlow) {\n if (approvalState === ApprovalState.APPROVED) {\n setApproveLoading(true)\n const delay = setTimeout(() => {\n setApproveLoading(false)\n setHasToApprove(false)\n }, stepDelay)\n return () => clearTimeout(delay)\n } else if (!hasTriggeredApproval.current && approvalState !== ApprovalState.PENDING) {\n setApproveLoading(true)\n hasTriggeredApproval.current = true\n handleApprove()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain, approvalState])\n\n // Execute main tx Step #3\n const hasTriggeredTx = useRef(false)\n useEffect(() => {\n if (!hasToSwitchChain && !hasToApprove && !hasTriggeredTx.current) {\n hasTriggeredTx.current = true\n if (rateChanged) {\n onDismiss?.()\n } else {\n setApproveLoading(false)\n txCallback?.()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [hasToSwitchChain, hasToApprove, txCallback])\n\n // Close modal if a hash is found. Final Step\n const { data: txReceipt, isSuccess, isLoading: verifyingTx } = useMonitorTx(buyTxHash, txChain)\n useEffect(() => {\n if (buyTxHash && txReceipt) {\n if (isSuccess) {\n onDismiss?.()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [buyTxHash, txReceipt, isSuccess])\n\n const currentStep: number = showSwitchChainFlow ? (hasToSwitchChain ? 1 : hasToApprove ? 2 : 3) : hasToApprove ? 1 : 2\n const splited = typeof inputToken !== 'string' ? inputToken?.symbol?.split('-') : undefined\n const trueBondPrice = findHighestTrueBondPrice(\n // @ts-ignore\n TIERS_WEIGHT[getUserTier(promotionalPoints)] ?? '0',\n bondData?.trueBondPrices,\n )\n\n return (\n <Modal>\n <ModalHeader onDismiss={onDismiss} hideDivider />\n <Flex sx={{ flexDirection: 'column', width: '100%' }}>\n <Flex sx={{ width: '100%', alignItems: 'center', p: '10px' }}>\n {showSwitchChainFlow && (\n <StepBubble number={1} title={'Switch Chain'} currentStep={currentStep} loading={loadingSwitchChain} />\n )}\n <StepBubble\n number={showSwitchChainFlow ? 2 : 1}\n title={'Approve'}\n currentStep={currentStep}\n loading={approveLoading || approvalState === ApprovalState.PENDING}\n />\n <StepBubble\n number={showSwitchChainFlow ? 3 : 2}\n title={'Buy'}\n currentStep={currentStep}\n loading={loadingTx || verifyingTx}\n hideBar\n />\n </Flex>\n <Flex sx={{ width: '100%', mt: '40px', justifyContent: 'center' }}>\n <LoadingSpinner\n isLoading={\n loadingSwitchChain ||\n approveLoading ||\n loadingTx ||\n verifyingTx ||\n approvalState === ApprovalState.PENDING\n }\n size={100}\n />\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'center', mt: '10px' }}>\n {hasToSwitchChain\n ? loadingSwitchChain\n ? 'Switching Chain...'\n : 'Switch Chain'\n : hasToApprove\n ? approveLoading || approvalState === ApprovalState.PENDING\n ? 'Approving...'\n : 'Approve Contract'\n : loadingTx || verifyingTx\n ? 'Buying...'\n : 'Buy'}\n </Flex>\n {bondData.billType === 'fcfs' ? (\n <Flex sx={{ width: '100%', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n p: '5px',\n borderRadius: 'normal',\n color: 'textDisabledButton',\n justifyContent: 'center',\n }}\n >\n {bondData.earnToken.symbol} ({getTimePeriods(bondData?.vestingTerm).months} Mo)\n </Flex>\n <Flex sx={{ width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }}>\n <TokenImage symbol={bondData.earnToken.symbol} size={40} chain={txChain} />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', alignItems: 'center' }}>\n <Flex sx={{ flexDirection: 'column', fontSize: '12px', ml: '10px' }}>\n <Flex sx={{ color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }}>\n ${bondData.tgePrice}\n </Flex>\n <Flex sx={{ color: 'green', fontWeight: 600 }}>${bondData.initPrice}</Flex>\n </Flex>\n <Flex\n sx={{\n p: '5px',\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n background: 'rgba(56, 166, 17, 0.13)',\n color: 'success',\n lineHeight: '18px',\n }}\n >\n {trueBondPrice?.bonusWithFee?.toFixed(2)} % Bonus\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', mt: '10px' }}>\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n {isArray(splited) ? (\n <TokenImage symbol={splited[0]} symbol2={splited[1]} size={20} chain={txChain} />\n ) : (\n <TokenImage symbol={getSymbol(inputToken, txChain)} size={20} chain={txChain} />\n )}\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(inputValue, 4) ?? '0'}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (\n {inputTokenPrice?.price && inputValue\n ? `$${formatNumberSI(inputTokenPrice?.price * parseFloat(inputValue))}`\n : '0.00'}\n )\n </Flex>\n </Flex>\n <Svg icon={'arrow'} direction={'right'} width={'10px'} />\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n <TokenImage symbol={getSymbol(bondData.earnToken, txChain)} chain={txChain} size={20} />\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(preTGEEstimatedOutput, 4)}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (${formatNumberSI(preTGEEstimatedOutputUSD)})\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <Flex sx={{ width: '100%', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n p: '5px',\n borderRadius: 'normal',\n color: 'textDisabledButton',\n justifyContent: 'center',\n }}\n >\n {bondData.earnToken.symbol} ({getVestingTermsString(bondData)})\n </Flex>\n <Flex sx={{ width: '100%', background: 'white3', p: '10px', borderRadius: 'normal', mt: '10px' }}>\n <TokenImage symbol={bondData.earnToken.symbol} size={40} chain={txChain} />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', alignItems: 'center' }}>\n <Flex sx={{ flexDirection: 'column', fontSize: '12px', ml: '10px' }}>\n <Flex sx={{ color: 'textDisabledButton', fontWeight: 400, textDecoration: 'line-through' }}>\n ${earnTokenPrice(bondData)}\n </Flex>\n <Flex sx={{ color: 'green', fontWeight: 600 }}>\n $\n {discountEarnTokenPriceForUser(\n bondData,\n SDKConfig.useTiers,\n getUserTier(promotionalPoints!) ?? undefined,\n )}\n </Flex>\n </Flex>\n <Flex\n sx={{\n p: '5px',\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n background: 'rgba(56, 166, 17, 0.13)',\n color: 'success',\n lineHeight: '18px',\n }}\n >\n {bondData.earnToken.symbol.toLowerCase() === 'ireet'\n ? '3.00'\n : trueBondPrice?.bonusWithFee?.toFixed(2)}{' '}\n % Bonus\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', mt: '10px' }}>\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n {isArray(splited) ? (\n <TokenImage symbol={splited[0]} symbol2={splited[1]} size={20} chain={txChain} />\n ) : (\n <TokenImage symbol={getSymbol(inputToken, txChain)} size={20} chain={txChain} />\n )}\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(inputValue, 4) ?? '0'}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (\n {inputTokenPrice?.price && inputValue\n ? `$${formatNumberSI(inputTokenPrice?.price * parseFloat(inputValue))}`\n : '0.00'}\n )\n </Flex>\n </Flex>\n <Svg icon={'arrow'} direction={'right'} width={'10px'} />\n <Flex\n sx={{ p: '10px', borderRadius: 'normal', background: 'white3', alignItems: 'center', width: '45%' }}\n >\n <TokenImage symbol={getSymbol(bondData.earnToken, txChain)} chain={txChain} size={20} />\n <Flex sx={{ fontSize: '14px', fontWeight: 600, mx: '5px' }}>\n {formatNumberSI(estimatedOutputAmount, 4)}\n </Flex>\n <Flex sx={{ color: 'textDisabledButton', fontSize: '12px', fontWeight: 400 }}>\n (${formatNumberSI(estimatedOutputUSD)})\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n )}\n\n {/*\n\n Action Buttons\n\n */}\n <Flex sx={{ mt: '20px' }}>\n {hasToSwitchChain ? (\n <Button load={loadingSwitchChain} disabled={loadingSwitchChain} onClick={handleSwitchChain} fullWidth>\n switch to {NETWORK_LABEL[txChain!]}\n </Button>\n ) : !hasToApprove ? (\n <Button load={loadingTx || verifyingTx} disabled={loadingTx || verifyingTx} onClick={txCallback} fullWidth>\n buy\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={approvalState === ApprovalState.PENDING || approveLoading}\n disabled={approvalState === ApprovalState.PENDING || approveLoading}\n onClick={handleApprove}\n fullWidth\n >\n Approve\n </Button>\n )}\n </Flex>\n </Flex>\n </Modal>\n )\n}\n\nexport default TransactionModal\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Ape Bond SDK",
|
|
4
4
|
"author": "Ape Bond",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "5.1.
|
|
6
|
+
"version": "5.1.37",
|
|
7
7
|
"module": "dist/main.js",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"types": "dist/main.d.ts",
|
|
@@ -113,8 +113,7 @@
|
|
|
113
113
|
"axios": "^1.8.2",
|
|
114
114
|
"react": ">=17 <19",
|
|
115
115
|
"react-dom": ">=17 <19",
|
|
116
|
-
"wagmi": "^2.14.16"
|
|
117
|
-
"@rakurai/rakurai-stake-sdk": "1.0.0"
|
|
116
|
+
"wagmi": "^2.14.16"
|
|
118
117
|
},
|
|
119
118
|
"devDependencies": {
|
|
120
119
|
"@eslint/js": "9.39.4",
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'theme-ui/jsx-runtime';
|
|
2
|
-
import Flex from '../uikit-sdk/Flex/index.js';
|
|
3
|
-
import Text from '../uikit-sdk/Text/index.js';
|
|
4
|
-
|
|
5
|
-
const TabNavigation = ({ tabs, activeTab, setActiveTab, lineColor }) => {
|
|
6
|
-
const color = lineColor ?? '#fff';
|
|
7
|
-
return (jsx(Flex, { sx: { gap: ['20px', '20px', '25px'], fontSize: ['12px', '12px', '16px'] }, children: tabs.map((tab) => {
|
|
8
|
-
const isActive = activeTab === tab;
|
|
9
|
-
return (jsxs(Flex, { sx: {
|
|
10
|
-
// borderBottom: isActive ? `2px solid ${color}` : '',
|
|
11
|
-
cursor: 'pointer',
|
|
12
|
-
position: 'relative',
|
|
13
|
-
}, onClick: () => setActiveTab(tab), children: [jsx(Text, { sx: {
|
|
14
|
-
color: (theme) => (isActive ? `${theme.colors?.text}` : 'textDisabledButton'),
|
|
15
|
-
}, children: tab }), isActive && (jsx(Flex, { sx: {
|
|
16
|
-
height: '2px',
|
|
17
|
-
background: color,
|
|
18
|
-
width: '100%',
|
|
19
|
-
position: 'absolute',
|
|
20
|
-
bottom: '-2px',
|
|
21
|
-
left: 0,
|
|
22
|
-
'@keyframes slideIn': {
|
|
23
|
-
from: { transform: 'scaleX(0)', transformOrigin: 'left' },
|
|
24
|
-
to: { transform: 'scaleX(1)', transformOrigin: 'left' },
|
|
25
|
-
},
|
|
26
|
-
animation: 'slideIn 0.2s ease-out forwards',
|
|
27
|
-
transformOrigin: 'left',
|
|
28
|
-
} }))] }, tab));
|
|
29
|
-
}) }));
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export { TabNavigation as default };
|
|
33
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/TabNavigation/index.tsx"],"sourcesContent":["import { Theme } from 'theme-ui'\nimport Flex from '../uikit-sdk/Flex'\nimport Text from '../uikit-sdk/Text'\n\ninterface TabNavigationProps<T> {\n tabs: T[]\n activeTab: T\n setActiveTab: (value: T) => void\n lineColor?: string\n}\n\nconst TabNavigation = <T extends string>({ tabs, activeTab, setActiveTab, lineColor }: TabNavigationProps<T>) => {\n const color = lineColor ?? '#fff'\n return (\n <Flex sx={{ gap: ['20px', '20px', '25px'], fontSize: ['12px', '12px', '16px'] }}>\n {tabs.map((tab) => {\n const isActive: boolean = activeTab === tab\n return (\n <Flex\n key={tab}\n sx={{\n // borderBottom: isActive ? `2px solid ${color}` : '',\n cursor: 'pointer',\n position: 'relative',\n }}\n onClick={() => setActiveTab(tab)}\n >\n <Text\n sx={{\n color: (theme: Theme) => (isActive ? `${theme.colors?.text}` : 'textDisabledButton'),\n }}\n >\n {tab}\n </Text>\n {isActive && (\n <Flex\n sx={{\n height: '2px',\n background: color,\n width: '100%',\n position: 'absolute',\n bottom: '-2px',\n left: 0,\n '@keyframes slideIn': {\n from: { transform: 'scaleX(0)', transformOrigin: 'left' },\n to: { transform: 'scaleX(1)', transformOrigin: 'left' },\n },\n animation: 'slideIn 0.2s ease-out forwards',\n transformOrigin: 'left',\n }}\n />\n )}\n </Flex>\n )\n })}\n </Flex>\n )\n}\n\nexport default TabNavigation\n"],"names":["_jsx","_jsxs"],"mappings":";;;;AAWA,MAAM,aAAa,GAAG,CAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAyB,KAAI;AAC9G,IAAA,MAAM,KAAK,GAAG,SAAS,IAAI,MAAM;AACjC,IAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAC5E,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,YAAA,MAAM,QAAQ,GAAY,SAAS,KAAK,GAAG;AAC3C,YAAA,QACEC,IAAA,CAAC,IAAI,EAAA,EAEH,EAAE,EAAE;;AAEF,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,EACD,OAAO,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CAEhCD,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;4BACF,KAAK,EAAE,CAAC,KAAY,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAoB,CAAC;yBACrF,EAAA,QAAA,EAEA,GAAG,EAAA,CACC,EACN,QAAQ,KACPA,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,4BAAA,MAAM,EAAE,KAAK;AACb,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,QAAQ,EAAE,UAAU;AACpB,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,IAAI,EAAE,CAAC;AACP,4BAAA,oBAAoB,EAAE;gCACpB,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE;gCACzD,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE;AACxD,6BAAA;AACD,4BAAA,SAAS,EAAE,gCAAgC;AAC3C,4BAAA,eAAe,EAAE,MAAM;AACxB,yBAAA,EAAA,CACD,CACH,CAAA,EAAA,EAhCI,GAAG,CAiCH;QAEX,CAAC,CAAC,EAAA,CACG;AAEX;;;;"}
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'theme-ui/jsx-runtime';
|
|
2
|
-
import { useState } from 'react';
|
|
3
|
-
import { useWallet, useConnection } from '@solana/wallet-adapter-react';
|
|
4
|
-
import { useWalletModal } from '@solana/wallet-adapter-react-ui';
|
|
5
|
-
import { LAMPORTS_PER_SOL } from '@solana/web3.js';
|
|
6
|
-
import { liquidStake, updateCampaign, liquidUnstakeJupiter, liquidUnstake } from '@rakurai/rakurai-stake-sdk';
|
|
7
|
-
import { useRakuraiStats, RAISOL_TOKEN } from './useRakuraiStats.js';
|
|
8
|
-
import { useIsMobile } from '../../hooks/useIsMobile.js';
|
|
9
|
-
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
10
|
-
import { useTokenPrice } from '../../state/tokenPrices/useTokenPrice.js';
|
|
11
|
-
import { usePopups } from '../../state/popups/usePopups.js';
|
|
12
|
-
import useSolanaStakeBalances from './useSolanaStakeBalances.js';
|
|
13
|
-
import Flex from '../../components/uikit-sdk/Flex/index.js';
|
|
14
|
-
import TokenImage from '../../components/uikit-sdk/TokenImage/index.js';
|
|
15
|
-
import TokenSelectorPanel from '../../components/TokenSelectorPanel/index.js';
|
|
16
|
-
import { formatNumberSI } from '../../utils/formatNumber.js';
|
|
17
|
-
import Button from '../../components/uikit-sdk/Button/Button.js';
|
|
18
|
-
import TabNavigation from '../../components/TabNavigation/index.js';
|
|
19
|
-
|
|
20
|
-
const TABS = ['Stake SOL', 'Unstake'];
|
|
21
|
-
const REFERRAL_CODE = '2kzDPgGG8';
|
|
22
|
-
const RakuraiComponent = () => {
|
|
23
|
-
const { data } = useRakuraiStats();
|
|
24
|
-
const isMobile = useIsMobile();
|
|
25
|
-
const [activeTab, setActiveTab] = useState('Stake SOL');
|
|
26
|
-
const [typedValue, setTypedValue] = useState('');
|
|
27
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
28
|
-
const [unstakeMethod, setUnstakeMethod] = useState('immediate');
|
|
29
|
-
const SOLPrice = useTokenPrice('so11111111111111111111111111111111111111112', ChainId.SOL) ?? 0;
|
|
30
|
-
const raiSOLPrice = SOLPrice / (data?.price ?? 0);
|
|
31
|
-
const { publicKey, signTransaction, connected } = useWallet();
|
|
32
|
-
const { connection } = useConnection();
|
|
33
|
-
const { setVisible: openSolanaWalletModal } = useWalletModal();
|
|
34
|
-
const { solBalance, raiSolBalance, refetch } = useSolanaStakeBalances();
|
|
35
|
-
const isStake = activeTab === 'Stake SOL';
|
|
36
|
-
const receiveAmount = isStake
|
|
37
|
-
? parseFloat(typedValue) / (data?.price ?? 0)
|
|
38
|
-
: parseFloat(typedValue) * (data?.price ?? 0);
|
|
39
|
-
const currentBalance = isStake ? solBalance : raiSolBalance;
|
|
40
|
-
const { addToastError, addToastSuccess } = usePopups();
|
|
41
|
-
const handleTabSwitch = (tab) => {
|
|
42
|
-
setActiveTab(tab);
|
|
43
|
-
setTypedValue('');
|
|
44
|
-
};
|
|
45
|
-
const handleStake = async () => {
|
|
46
|
-
if (!publicKey || !signTransaction)
|
|
47
|
-
return;
|
|
48
|
-
setIsLoading(true);
|
|
49
|
-
try {
|
|
50
|
-
const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL);
|
|
51
|
-
const tx = await liquidStake({ pubkey: publicKey.toBase58(), amount: amountLamports });
|
|
52
|
-
const signedTx = await signTransaction(tx);
|
|
53
|
-
const txSig = await connection.sendRawTransaction(signedTx.serialize());
|
|
54
|
-
setTypedValue('');
|
|
55
|
-
addToastSuccess(txSig, ChainId.SOL, 'SOL staked successfully');
|
|
56
|
-
await updateCampaign({
|
|
57
|
-
address: publicKey.toBase58(),
|
|
58
|
-
amount: amountLamports,
|
|
59
|
-
txn_sig: txSig,
|
|
60
|
-
is_stake: true,
|
|
61
|
-
referral_code: REFERRAL_CODE,
|
|
62
|
-
});
|
|
63
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
64
|
-
refetch();
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
console.error('RakuraiCampaign: stake failed', err);
|
|
68
|
-
addToastError(err?.message ?? 'Stake failed');
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
setIsLoading(false);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
const handleUnstakeJupiter = async () => {
|
|
75
|
-
if (!publicKey || !signTransaction)
|
|
76
|
-
return;
|
|
77
|
-
setIsLoading(true);
|
|
78
|
-
try {
|
|
79
|
-
const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL);
|
|
80
|
-
const tx = await liquidUnstakeJupiter({ pubkey: publicKey.toBase58(), amount: amountLamports });
|
|
81
|
-
const signedTx = await signTransaction(tx);
|
|
82
|
-
const txSig = await connection.sendRawTransaction(signedTx.serialize());
|
|
83
|
-
setTypedValue('');
|
|
84
|
-
addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (Jupiter)');
|
|
85
|
-
await updateCampaign({
|
|
86
|
-
address: publicKey.toBase58(),
|
|
87
|
-
amount: amountLamports,
|
|
88
|
-
txn_sig: txSig,
|
|
89
|
-
is_stake: false,
|
|
90
|
-
referral_code: REFERRAL_CODE,
|
|
91
|
-
});
|
|
92
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
93
|
-
refetch();
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
console.error('RakuraiCampaign: unstake failed', err);
|
|
97
|
-
addToastError(err?.message ?? 'Unstake failed');
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
setIsLoading(false);
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
const handleUnstakeEpoch = async () => {
|
|
104
|
-
if (!publicKey || !signTransaction)
|
|
105
|
-
return;
|
|
106
|
-
setIsLoading(true);
|
|
107
|
-
try {
|
|
108
|
-
const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL);
|
|
109
|
-
const { transaction, stakeAccountKeypair } = await liquidUnstake({
|
|
110
|
-
pubkey: publicKey.toBase58(),
|
|
111
|
-
amount: amountLamports,
|
|
112
|
-
});
|
|
113
|
-
const signedTx = await signTransaction(transaction);
|
|
114
|
-
signedTx.partialSign(stakeAccountKeypair);
|
|
115
|
-
const txSig = await connection.sendRawTransaction(signedTx.serialize());
|
|
116
|
-
setTypedValue('');
|
|
117
|
-
console.log(txSig);
|
|
118
|
-
addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (after epoch)');
|
|
119
|
-
await updateCampaign({
|
|
120
|
-
address: publicKey.toBase58(),
|
|
121
|
-
amount: amountLamports,
|
|
122
|
-
txn_sig: txSig,
|
|
123
|
-
is_stake: false,
|
|
124
|
-
referral_code: REFERRAL_CODE,
|
|
125
|
-
});
|
|
126
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
127
|
-
refetch();
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
console.error('RakuraiCampaign: epoch unstake failed', err);
|
|
131
|
-
addToastError(err?.message ?? 'Epoch unstake failed');
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
setIsLoading(false);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
return (jsxs(Flex, { sx: {
|
|
138
|
-
height: '200px',
|
|
139
|
-
width: '100%',
|
|
140
|
-
p: ['10px', '10px', '10px', '10px 20px'],
|
|
141
|
-
backgroundImage: 'url(https://ape.bond/images/rakurai/bgrakurai.png)',
|
|
142
|
-
backgroundSize: 'cover',
|
|
143
|
-
borderRadius: '16px',
|
|
144
|
-
mb: '10px',
|
|
145
|
-
}, children: [jsxs(Flex, { sx: {
|
|
146
|
-
width: ['50%'],
|
|
147
|
-
flexDirection: 'column',
|
|
148
|
-
display: ['none', 'none', 'none', 'flex'],
|
|
149
|
-
justifyContent: 'space-between',
|
|
150
|
-
}, children: [jsxs(Flex, { sx: { flexDirection: 'column', gap: '20px' }, children: [jsxs(Flex, { sx: {
|
|
151
|
-
alignItems: 'center',
|
|
152
|
-
gap: '5px',
|
|
153
|
-
fontSize: '18px',
|
|
154
|
-
fontWeight: 700,
|
|
155
|
-
color: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',
|
|
156
|
-
}, children: [jsx(TokenImage, { symbol: 'raiSOL', size: 24 }), "raiSol Liquid Staking"] }), jsxs("span", { sx: {
|
|
157
|
-
fontSize: '14px',
|
|
158
|
-
fontWeight: 500,
|
|
159
|
-
color: 'textDisabledButton',
|
|
160
|
-
mr: ['unset', 'unset', 'unset', '15px'],
|
|
161
|
-
}, children: [`APY ${data?.apy.toFixed(2)}% - Delegate to Rakurai and earn maximized yield that auto-compounds every epoch, all while keeping full custody of your SOL.`, jsx("span", { sx: { color: 'primaryButton', ml: '3px', cursor: 'pointer', ':hover': { textDecoration: 'underlined' } }, onClick: () => window.open('https://rakurai.io/stake', '_blank'), children: 'Learn More >' })] })] }), jsxs(Flex, { sx: { flexDirection: 'column', fontSize: '10px', color: 'grey', fontWeight: 300, pb: '10px' }, children: ["Powered by", jsx("img", { alt: 'rakuraiCampaign', src: 'https://ape.bond/images/rakurai/rakurai.png', style: { width: '117px', height: '25px' } })] })] }), jsxs(Flex, { sx: { width: ['100%', '100%', '100%', '50%'], flexDirection: 'column' }, children: [jsxs(Flex, { sx: { width: '100%', justifyContent: 'space-between' }, children: [jsxs(Flex, { sx: { fontSize: '12px', lineHeight: '22px', display: ['flex', 'flex', 'flex', 'none'], gap: '5px' }, children: [jsx(TokenImage, { symbol: 'raiSOL', size: 24 }), "raiSol Liquid Staking"] }), jsx(Flex, { sx: {
|
|
162
|
-
mb: '7px',
|
|
163
|
-
mr: '10px',
|
|
164
|
-
justifyContent: 'center',
|
|
165
|
-
'& > div:first-of-type': {
|
|
166
|
-
fontSize: ['12px', '12px', '12px', '14px'],
|
|
167
|
-
fontWeight: 500,
|
|
168
|
-
color: 'textDisabledButton',
|
|
169
|
-
},
|
|
170
|
-
}, children: jsx(TabNavigation, { tabs: TABS, activeTab: activeTab, setActiveTab: handleTabSwitch, lineColor: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)' }) })] }), jsx(Flex, { sx: {
|
|
171
|
-
width: '100%',
|
|
172
|
-
'& > div:first-of-type': {
|
|
173
|
-
width: '100%',
|
|
174
|
-
},
|
|
175
|
-
}, children: jsx(TokenSelectorPanel, { selectedToken: isStake ? 'NATIVE' : RAISOL_TOKEN, typedValue: typedValue, setTypedValue: setTypedValue, handleValueBtn: (val) => setTypedValue(val), handleCurrencySelect: () => null, tokenBalance: currentBalance, selectedTokenPrice: isStake ? SOLPrice : raiSOLPrice,
|
|
176
|
-
// account={solanaAddress}
|
|
177
|
-
enableZap: false, bondChainId: ChainId.SOL }) }), jsxs(Flex, { sx: {
|
|
178
|
-
fontSize: '12px',
|
|
179
|
-
fontWeight: 500,
|
|
180
|
-
gap: '5px',
|
|
181
|
-
my: '5px',
|
|
182
|
-
alignItems: 'center',
|
|
183
|
-
justifyContent: 'space-between',
|
|
184
|
-
}, children: [jsxs(Flex, { sx: { gap: '5px', alignItems: 'center', height: '21px' }, children: ["You Get:", jsx(TokenImage, { symbol: isStake ? `raiSOL` : `SOL`, size: 20 }), formatNumberSI(receiveAmount), " ", isStake ? `raiSOL` : `SOL`, isStake && (jsxs(Flex, { sx: { color: 'success', fontWeight: 600, opacity: 0.8 }, children: ["+", data?.apy?.toFixed(2), "% APY"] }))] }), isStake ? (jsxs(Flex, { sx: { gap: '5px', alignItems: 'center' }, children: [jsx(Flex, { sx: { display: ['flex', 'flex', 'flex', 'none'] }, children: "Staked:" }), jsx(Flex, { sx: { display: ['none', 'none', 'none', 'flex'] }, children: "Staked Amount:" }), jsx(TokenImage, { symbol: isStake ? `raiSOL` : `SOL`, size: 20 }), formatNumberSI(raiSolBalance), " ", isStake ? `raiSOL` : `SOL`] })) : (jsx(Flex, { sx: { gap: '5px', alignItems: 'center' }, children: ['immediate', 'epoch'].map((method) => {
|
|
185
|
-
const label = method === 'immediate'
|
|
186
|
-
? isMobile
|
|
187
|
-
? 'Immediate (Jup)'
|
|
188
|
-
: 'Immediate (Jupiter)'
|
|
189
|
-
: isMobile
|
|
190
|
-
? 'After Epoch'
|
|
191
|
-
: 'After Epoch Ends';
|
|
192
|
-
const isSelected = unstakeMethod === method;
|
|
193
|
-
return (jsx(Flex, { onClick: () => setUnstakeMethod(method), sx: {
|
|
194
|
-
cursor: 'pointer',
|
|
195
|
-
fontSize: '10px',
|
|
196
|
-
fontWeight: 500,
|
|
197
|
-
padding: '2px 7px',
|
|
198
|
-
borderRadius: '8px',
|
|
199
|
-
border: isSelected ? '1px solid transparent' : '1px solid rgba(255,255,255,0.15)',
|
|
200
|
-
background: isSelected
|
|
201
|
-
? 'linear-gradient(#16213e, #16213e) padding-box, linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) border-box'
|
|
202
|
-
: 'transparent',
|
|
203
|
-
color: isSelected ? 'white' : 'textDisabledButton',
|
|
204
|
-
whiteSpace: 'nowrap',
|
|
205
|
-
}, children: label }, method));
|
|
206
|
-
}) }))] }), jsx(Flex, { sx: { width: '100%', height: '28px' }, children: !connected ? (jsx(Button, { sx: {
|
|
207
|
-
width: '100%',
|
|
208
|
-
fontSize: '12px !important',
|
|
209
|
-
background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',
|
|
210
|
-
border: 'none !important',
|
|
211
|
-
'&:hover': {
|
|
212
|
-
background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',
|
|
213
|
-
color: 'black',
|
|
214
|
-
},
|
|
215
|
-
}, onClick: () => openSolanaWalletModal(true), children: "Connect Solana Wallet" })) : (jsx(Button, { sx: {
|
|
216
|
-
width: '100%',
|
|
217
|
-
fontSize: '12px !important',
|
|
218
|
-
background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',
|
|
219
|
-
border: 'none !important',
|
|
220
|
-
'&:hover': {
|
|
221
|
-
background: !(isLoading || !typedValue || parseFloat(typedValue) <= 0) &&
|
|
222
|
-
'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',
|
|
223
|
-
color: 'black',
|
|
224
|
-
},
|
|
225
|
-
}, load: isLoading, disabled: isLoading || !typedValue || parseFloat(typedValue) <= 0, onClick: isStake ? handleStake : unstakeMethod === 'immediate' ? handleUnstakeJupiter : handleUnstakeEpoch, children: isStake ? 'Stake' : 'Unstake' })) })] })] }));
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
export { RakuraiComponent as default };
|
|
229
|
-
//# sourceMappingURL=RakuraiComponent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RakuraiComponent.js","sources":["../../../src/views/RakuraiComponent/RakuraiComponent.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react'\nimport { useWalletModal } from '@solana/wallet-adapter-react-ui'\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js'\nimport { liquidStake, liquidUnstake, liquidUnstakeJupiter, updateCampaign } from '@rakurai/rakurai-stake-sdk'\nimport { useRakuraiStats, RAISOL_TOKEN } from './useRakuraiStats'\nimport { useIsMobile } from '../../hooks/useIsMobile'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { useTokenPrice } from '../../state/tokenPrices/useTokenPrice'\nimport { usePopups } from '../../state/popups/usePopups'\nimport useSolanaStakeBalances from './useSolanaStakeBalances'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport TabNavigation from '../../components/TabNavigation'\n\ntype StakeTab = 'Stake SOL' | 'Unstake'\nconst TABS: StakeTab[] = ['Stake SOL', 'Unstake']\nconst REFERRAL_CODE = '2kzDPgGG8'\n\nconst RakuraiComponent = () => {\n const { data } = useRakuraiStats()\n const isMobile = useIsMobile()\n const [activeTab, setActiveTab] = useState<StakeTab>('Stake SOL')\n const [typedValue, setTypedValue] = useState<string>('')\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [unstakeMethod, setUnstakeMethod] = useState<'immediate' | 'epoch'>('immediate')\n const SOLPrice = useTokenPrice('so11111111111111111111111111111111111111112', ChainId.SOL) ?? 0\n const raiSOLPrice = SOLPrice / (data?.price ?? 0)\n\n const { publicKey, signTransaction, connected } = useWallet()\n const { connection } = useConnection()\n const { setVisible: openSolanaWalletModal } = useWalletModal()\n const { solBalance, raiSolBalance, refetch } = useSolanaStakeBalances()\n\n const isStake = activeTab === 'Stake SOL'\n const receiveAmount = isStake\n ? parseFloat(typedValue) / (data?.price ?? 0)\n : parseFloat(typedValue) * (data?.price ?? 0)\n const currentBalance = isStake ? solBalance : raiSolBalance\n\n const { addToastError, addToastSuccess } = usePopups()\n\n const handleTabSwitch = (tab: StakeTab) => {\n setActiveTab(tab)\n setTypedValue('')\n }\n\n const handleStake = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidStake({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'SOL staked successfully')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: true,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: stake failed', err)\n addToastError(err?.message ?? 'Stake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeJupiter = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidUnstakeJupiter({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (Jupiter)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: unstake failed', err)\n addToastError(err?.message ?? 'Unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeEpoch = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const { transaction, stakeAccountKeypair } = await liquidUnstake({\n pubkey: publicKey.toBase58(),\n amount: amountLamports,\n })\n const signedTx = await signTransaction(transaction)\n signedTx.partialSign(stakeAccountKeypair)\n const txSig = await connection.sendRawTransaction(signedTx.serialize())\n setTypedValue('')\n console.log(txSig)\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (after epoch)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: epoch unstake failed', err)\n addToastError(err?.message ?? 'Epoch unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Flex\n sx={{\n height: '200px',\n width: '100%',\n p: ['10px', '10px', '10px', '10px 20px'],\n backgroundImage: 'url(https://ape.bond/images/rakurai/bgrakurai.png)',\n backgroundSize: 'cover',\n borderRadius: '16px',\n mb: '10px',\n }}\n >\n <Flex\n sx={{\n width: ['50%'],\n flexDirection: 'column',\n display: ['none', 'none', 'none', 'flex'],\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ flexDirection: 'column', gap: '20px' }}>\n <Flex\n sx={{\n alignItems: 'center',\n gap: '5px',\n fontSize: '18px',\n fontWeight: 700,\n color: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n }}\n >\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <span\n sx={{\n fontSize: '14px',\n fontWeight: 500,\n color: 'textDisabledButton',\n mr: ['unset', 'unset', 'unset', '15px'],\n }}\n >\n {`APY ${data?.apy.toFixed(2)}% - Delegate to Rakurai and earn maximized yield that auto-compounds every epoch, all while keeping full custody of your SOL.`}\n <span\n sx={{ color: 'primaryButton', ml: '3px', cursor: 'pointer', ':hover': { textDecoration: 'underlined' } }}\n onClick={() => window.open('https://rakurai.io/stake', '_blank')}\n >\n {'Learn More >'}\n </span>\n </span>\n </Flex>\n\n <Flex sx={{ flexDirection: 'column', fontSize: '10px', color: 'grey', fontWeight: 300, pb: '10px' }}>\n Powered by\n <img\n alt={'rakuraiCampaign'}\n src={'https://ape.bond/images/rakurai/rakurai.png'}\n style={{ width: '117px', height: '25px' }}\n />\n </Flex>\n </Flex>\n <Flex sx={{ width: ['100%', '100%', '100%', '50%'], flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex sx={{ fontSize: '12px', lineHeight: '22px', display: ['flex', 'flex', 'flex', 'none'], gap: '5px' }}>\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <Flex\n sx={{\n mb: '7px',\n mr: '10px',\n justifyContent: 'center',\n '& > div:first-of-type': {\n fontSize: ['12px', '12px', '12px', '14px'],\n fontWeight: 500,\n color: 'textDisabledButton',\n },\n }}\n >\n <TabNavigation\n tabs={TABS}\n activeTab={activeTab}\n setActiveTab={handleTabSwitch}\n lineColor={'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)'}\n />\n </Flex>\n </Flex>\n <Flex\n sx={{\n width: '100%',\n '& > div:first-of-type': {\n width: '100%',\n },\n }}\n >\n <TokenSelectorPanel\n selectedToken={isStake ? 'NATIVE' : RAISOL_TOKEN}\n typedValue={typedValue}\n setTypedValue={setTypedValue}\n handleValueBtn={(val) => setTypedValue(val)}\n handleCurrencySelect={() => null}\n tokenBalance={currentBalance}\n selectedTokenPrice={isStake ? SOLPrice : raiSOLPrice}\n // account={solanaAddress}\n enableZap={false}\n bondChainId={ChainId.SOL}\n />\n </Flex>\n <Flex\n sx={{\n fontSize: '12px',\n fontWeight: 500,\n gap: '5px',\n my: '5px',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ gap: '5px', alignItems: 'center', height: '21px' }}>\n You Get:\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(receiveAmount)} {isStake ? `raiSOL` : `SOL`}\n {isStake && (\n <Flex sx={{ color: 'success', fontWeight: 600, opacity: 0.8 }}>+{data?.apy?.toFixed(2)}% APY</Flex>\n )}\n </Flex>\n {isStake ? (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n <Flex sx={{ display: ['flex', 'flex', 'flex', 'none'] }}>Staked:</Flex>\n <Flex sx={{ display: ['none', 'none', 'none', 'flex'] }}>Staked Amount:</Flex>\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(raiSolBalance)} {isStake ? `raiSOL` : `SOL`}\n </Flex>\n ) : (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n {(['immediate', 'epoch'] as const).map((method) => {\n const label =\n method === 'immediate'\n ? isMobile\n ? 'Immediate (Jup)'\n : 'Immediate (Jupiter)'\n : isMobile\n ? 'After Epoch'\n : 'After Epoch Ends'\n const isSelected = unstakeMethod === method\n return (\n <Flex\n key={method}\n onClick={() => setUnstakeMethod(method)}\n sx={{\n cursor: 'pointer',\n fontSize: '10px',\n fontWeight: 500,\n padding: '2px 7px',\n borderRadius: '8px',\n border: isSelected ? '1px solid transparent' : '1px solid rgba(255,255,255,0.15)',\n background: isSelected\n ? 'linear-gradient(#16213e, #16213e) padding-box, linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) border-box'\n : 'transparent',\n color: isSelected ? 'white' : 'textDisabledButton',\n whiteSpace: 'nowrap',\n }}\n >\n {label}\n </Flex>\n )\n })}\n </Flex>\n )}\n </Flex>\n {/* CTA button */}\n <Flex sx={{ width: '100%', height: '28px' }}>\n {!connected ? (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n onClick={() => openSolanaWalletModal(true)}\n >\n Connect Solana Wallet\n </Button>\n ) : (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background:\n !(isLoading || !typedValue || parseFloat(typedValue) <= 0) &&\n 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n load={isLoading}\n disabled={isLoading || !typedValue || parseFloat(typedValue) <= 0}\n onClick={\n isStake ? handleStake : unstakeMethod === 'immediate' ? handleUnstakeJupiter : handleUnstakeEpoch\n }\n >\n {isStake ? 'Stake' : 'Unstake'}\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n )\n}\n\nexport default RakuraiComponent\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAM,IAAI,GAAe,CAAC,WAAW,EAAE,SAAS,CAAC;AACjD,MAAM,aAAa,GAAG,WAAW;AAEjC,MAAM,gBAAgB,GAAG,MAAK;AAC5B,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE;AAClC,IAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;IAC9B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAW,WAAW,CAAC;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAwB,WAAW,CAAC;AACtF,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,6CAA6C,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/F,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;IAEjD,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;AAC7D,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;IACtC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,cAAc,EAAE;IAC9D,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,sBAAsB,EAAE;AAEvE,IAAA,MAAM,OAAO,GAAG,SAAS,KAAK,WAAW;IACzC,MAAM,aAAa,GAAG;AACpB,UAAE,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;AAC5C,UAAE,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa;IAE3D,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE;AAEtD,IAAA,MAAM,eAAe,GAAG,CAAC,GAAa,KAAI;QACxC,YAAY,CAAC,GAAG,CAAC;QACjB,aAAa,CAAC,EAAE,CAAC;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,YAAW;AAC7B,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe;YAAE;QACpC,YAAY,CAAC,IAAI,CAAC;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AAC5E,YAAA,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AACtF,YAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAS,CAAC;AACjD,YAAA,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAE,QAAgB,CAAC,SAAS,EAAE,CAAC;YAChF,aAAa,CAAC,EAAE,CAAC;YACjB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,yBAAyB,CAAC;AAC9D,YAAA,MAAM,cAAc,CAAC;AACnB,gBAAA,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,aAAa,EAAE,aAAa;AAC7B,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,OAAO,EAAE;QACX;QAAE,OAAO,GAAQ,EAAE;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC;AACnD,YAAA,aAAa,CAAC,GAAG,EAAE,OAAO,IAAI,cAAc,CAAC;QAC/C;gBAAU;YACR,YAAY,CAAC,KAAK,CAAC;QACrB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,YAAW;AACtC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe;YAAE;QACpC,YAAY,CAAC,IAAI,CAAC;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AAC5E,YAAA,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AAC/F,YAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAS,CAAC;AACjD,YAAA,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAE,QAAgB,CAAC,SAAS,EAAE,CAAC;YAChF,aAAa,CAAC,EAAE,CAAC;YACjB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,wCAAwC,CAAC;AAC7E,YAAA,MAAM,cAAc,CAAC;AACnB,gBAAA,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,aAAa,EAAE,aAAa;AAC7B,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,OAAO,EAAE;QACX;QAAE,OAAO,GAAQ,EAAE;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC;AACrD,YAAA,aAAa,CAAC,GAAG,EAAE,OAAO,IAAI,gBAAgB,CAAC;QACjD;gBAAU;YACR,YAAY,CAAC,KAAK,CAAC;QACrB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,YAAW;AACpC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe;YAAE;QACpC,YAAY,CAAC,IAAI,CAAC;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;YAC5E,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,aAAa,CAAC;AAC/D,gBAAA,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC5B,gBAAA,MAAM,EAAE,cAAc;AACvB,aAAA,CAAC;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC;AACnD,YAAA,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC;AACzC,YAAA,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvE,aAAa,CAAC,EAAE,CAAC;AACjB,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAClB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,4CAA4C,CAAC;AACjF,YAAA,MAAM,cAAc,CAAC;AACnB,gBAAA,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,aAAa,EAAE,aAAa;AAC7B,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,OAAO,EAAE;QACX;QAAE,OAAO,GAAQ,EAAE;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC;AAC3D,YAAA,aAAa,CAAC,GAAG,EAAE,OAAO,IAAI,sBAAsB,CAAC;QACvD;gBAAU;YACR,YAAY,CAAC,KAAK,CAAC;QACrB;AACF,IAAA,CAAC;AAED,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,KAAK,EAAE,MAAM;YACb,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;AACxC,YAAA,eAAe,EAAE,oDAAoD;AACrE,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,EAAE,EAAE,MAAM;AACX,SAAA,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;oBACF,KAAK,EAAE,CAAC,KAAK,CAAC;AACd,oBAAA,aAAa,EAAE,QAAQ;oBACvB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACzC,oBAAA,cAAc,EAAE,eAAe;AAChC,iBAAA,EAAA,QAAA,EAAA,CAEDA,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAChDA,KAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,GAAG,EAAE,KAAK;AACV,oCAAA,QAAQ,EAAE,MAAM;AAChB,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,KAAK,EAAE,0DAA0D;AAClE,iCAAA,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAAA,uBAAA,CAAA,EAAA,CAErC,EACPD,IAAA,CAAA,MAAA,EAAA,EACE,EAAE,EAAE;AACF,oCAAA,QAAQ,EAAE,MAAM;AAChB,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,KAAK,EAAE,oBAAoB;oCAC3B,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;iCACxC,EAAA,QAAA,EAAA,CAEA,CAAA,IAAA,EAAO,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,6HAAA,CAA+H,EAC3JC,GAAA,CAAA,MAAA,EAAA,EACE,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EACxG,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,EAAA,QAAA,EAE/D,cAAc,EAAA,CACV,CAAA,EAAA,CACF,IACF,EAEPD,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAAA,YAAA,EAEjGC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,6CAA6C,EAClD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GACzC,CAAA,EAAA,CACG,CAAA,EAAA,CACF,EACPD,IAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CAC3EA,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,EAAA,QAAA,EAAA,CAC1DA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CACvGC,IAAC,UAAU,EAAA,EAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAAA,uBAAA,CAAA,EAAA,CAErC,EACPA,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,oCAAA,EAAE,EAAE,KAAK;AACT,oCAAA,EAAE,EAAE,MAAM;AACV,oCAAA,cAAc,EAAE,QAAQ;AACxB,oCAAA,uBAAuB,EAAE;wCACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1C,wCAAA,UAAU,EAAE,GAAG;AACf,wCAAA,KAAK,EAAE,oBAAoB;AAC5B,qCAAA;iCACF,EAAA,QAAA,EAEDA,GAAA,CAAC,aAAa,EAAA,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,eAAe,EAC7B,SAAS,EAAE,0DAA0D,EAAA,CACrE,EAAA,CACG,CAAA,EAAA,CACF,EACPA,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,uBAAuB,EAAE;AACvB,gCAAA,KAAK,EAAE,MAAM;AACd,6BAAA;yBACF,EAAA,QAAA,EAEDA,GAAA,CAAC,kBAAkB,EAAA,EACjB,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,EAChD,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,EAC3C,oBAAoB,EAAE,MAAM,IAAI,EAChC,YAAY,EAAE,cAAc,EAC5B,kBAAkB,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW;;AAEpD,4BAAA,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAA,CACxB,GACG,EACPD,IAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,EAAE,EAAE,KAAK;AACT,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,cAAc,EAAE,eAAe;yBAChC,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,yBAE5DC,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,CAAA,GAAA,CAAK,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAC3D,cAAc,CAAC,aAAa,CAAC,EAAA,GAAA,EAAG,OAAO,GAAG,CAAA,MAAA,CAAQ,GAAG,KAAK,EAC1D,OAAO,KACND,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAA,QAAA,EAAA,CAAA,GAAA,EAAI,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAA,OAAA,CAAA,EAAA,CAAa,CACpG,IACI,EACN,OAAO,IACNA,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAC5CC,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,EACvEA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAuB,EAC9EA,GAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,OAAO,GAAG,CAAA,MAAA,CAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,EAC3D,cAAc,CAAC,aAAa,CAAC,EAAA,GAAA,EAAG,OAAO,GAAG,CAAA,MAAA,CAAQ,GAAG,KAAK,CAAA,EAAA,CACtD,KAEPA,IAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAC1C,CAAC,WAAW,EAAE,OAAO,CAAW,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAChD,oCAAA,MAAM,KAAK,GACT,MAAM,KAAK;AACT,0CAAE;AACA,8CAAE;AACF,8CAAE;AACJ,0CAAE;AACA,8CAAE;8CACA,kBAAkB;AAC1B,oCAAA,MAAM,UAAU,GAAG,aAAa,KAAK,MAAM;AAC3C,oCAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAEH,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACvC,EAAE,EAAE;AACF,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,QAAQ,EAAE,MAAM;AAChB,4CAAA,UAAU,EAAE,GAAG;AACf,4CAAA,OAAO,EAAE,SAAS;AAClB,4CAAA,YAAY,EAAE,KAAK;4CACnB,MAAM,EAAE,UAAU,GAAG,uBAAuB,GAAG,kCAAkC;AACjF,4CAAA,UAAU,EAAE;AACV,kDAAE;AACF,kDAAE,aAAa;4CACjB,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,oBAAoB;AAClD,4CAAA,UAAU,EAAE,QAAQ;AACrB,yCAAA,EAAA,QAAA,EAEA,KAAK,EAAA,EAhBD,MAAM,CAiBN;AAEX,gCAAA,CAAC,CAAC,EAAA,CACG,CACR,CAAA,EAAA,CACI,EAEPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAA,QAAA,EACxC,CAAC,SAAS,IACTA,GAAA,CAAC,MAAM,EAAA,EACL,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,QAAQ,EAAE,iBAAiB;AAC3B,gCAAA,UAAU,EAAE,0DAA0D;AACtE,gCAAA,MAAM,EAAE,iBAAiB;AACzB,gCAAA,SAAS,EAAE;AACT,oCAAA,UAAU,EAAE,qEAAqE;AACjF,oCAAA,KAAK,EAAE,OAAO;AACf,iCAAA;AACF,6BAAA,EACD,OAAO,EAAE,MAAM,qBAAqB,CAAC,IAAI,CAAC,sCAGnC,KAETA,IAAC,MAAM,EAAA,EACL,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,QAAQ,EAAE,iBAAiB;AAC3B,gCAAA,UAAU,EAAE,0DAA0D;AACtE,gCAAA,MAAM,EAAE,iBAAiB;AACzB,gCAAA,SAAS,EAAE;AACT,oCAAA,UAAU,EACR,EAAE,SAAS,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wCAC1D,qEAAqE;AACvE,oCAAA,KAAK,EAAE,OAAO;AACf,iCAAA;6BACF,EACD,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,SAAS,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EACjE,OAAO,EACL,OAAO,GAAG,WAAW,GAAG,aAAa,KAAK,WAAW,GAAG,oBAAoB,GAAG,kBAAkB,EAAA,QAAA,EAGlG,OAAO,GAAG,OAAO,GAAG,SAAS,EAAA,CACvB,CACV,EAAA,CACI,CAAA,EAAA,CACF,CAAA,EAAA,CACF;AAEX;;;;"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Token } from '@ape.swap/apeswap-lists';
|
|
2
|
-
export declare const useRakuraiStats: () => import("@tanstack/react-query").UseQueryResult<{
|
|
3
|
-
apy: number;
|
|
4
|
-
price: number;
|
|
5
|
-
} | undefined, Error>;
|
|
6
|
-
export declare const RAISOL_MINT_ADDRESS = "Ra1so1sTkvX3PorAM9ewqrsUMz9sPSbfFZ5oZUjN4oc";
|
|
7
|
-
export declare const RAISOL_TOKEN: Token;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import { useSDKConfig } from '../../state/useSDKConfig.js';
|
|
3
|
-
import { ChainId } from '@ape.swap/apeswap-lists';
|
|
4
|
-
|
|
5
|
-
const getRakuraiStats = async () => {
|
|
6
|
-
try {
|
|
7
|
-
const [apyResponse, priceResponse] = await Promise.all([
|
|
8
|
-
fetch('https://api.rakurai.io/api/v1/validator/apy-liquid'),
|
|
9
|
-
fetch('https://api.rakurai.io/api/v1/price/raisol'),
|
|
10
|
-
]);
|
|
11
|
-
if (!apyResponse.ok || !priceResponse.ok) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
const apyData = await apyResponse.json();
|
|
15
|
-
const priceData = await priceResponse.json();
|
|
16
|
-
return {
|
|
17
|
-
apy: apyData.apy,
|
|
18
|
-
price: priceData.raisol,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
console.log('Error on rakurai calls');
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
const useRakuraiStats = () => {
|
|
26
|
-
const SDKConfig = useSDKConfig();
|
|
27
|
-
return useQuery({
|
|
28
|
-
queryKey: ['rakuraiStats'],
|
|
29
|
-
queryFn: getRakuraiStats,
|
|
30
|
-
enabled: SDKConfig.referenceId === 'apebond',
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
const RAISOL_MINT_ADDRESS = 'Ra1so1sTkvX3PorAM9ewqrsUMz9sPSbfFZ5oZUjN4oc';
|
|
34
|
-
const RAISOL_TOKEN = {
|
|
35
|
-
symbol: 'raiSOL',
|
|
36
|
-
name: 'Rakurai SOL',
|
|
37
|
-
decimals: 9,
|
|
38
|
-
address: { [ChainId.SOL]: RAISOL_MINT_ADDRESS },
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export { RAISOL_MINT_ADDRESS, RAISOL_TOKEN, useRakuraiStats };
|
|
42
|
-
//# sourceMappingURL=useRakuraiStats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRakuraiStats.js","sources":["../../../src/views/RakuraiComponent/useRakuraiStats.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { ChainId, Token } from '@ape.swap/apeswap-lists'\n\nconst getRakuraiStats = async (): Promise<{ apy: number; price: number } | undefined> => {\n try {\n const [apyResponse, priceResponse] = await Promise.all([\n fetch('https://api.rakurai.io/api/v1/validator/apy-liquid'),\n fetch('https://api.rakurai.io/api/v1/price/raisol'),\n ])\n\n if (!apyResponse.ok || !priceResponse.ok) {\n return undefined\n }\n\n const apyData = await apyResponse.json()\n const priceData = await priceResponse.json()\n\n return {\n apy: apyData.apy,\n price: priceData.raisol,\n }\n } catch {\n console.log('Error on rakurai calls')\n }\n}\n\nexport const useRakuraiStats = () => {\n const SDKConfig = useSDKConfig()\n return useQuery({\n queryKey: ['rakuraiStats'],\n queryFn: getRakuraiStats,\n enabled: SDKConfig.referenceId === 'apebond',\n })\n}\n\nexport const RAISOL_MINT_ADDRESS = 'Ra1so1sTkvX3PorAM9ewqrsUMz9sPSbfFZ5oZUjN4oc'\n\nexport const RAISOL_TOKEN = {\n symbol: 'raiSOL',\n name: 'Rakurai SOL',\n decimals: 9,\n address: { [ChainId.SOL as number]: RAISOL_MINT_ADDRESS },\n} as unknown as Token\n"],"names":[],"mappings":";;;;AAIA,MAAM,eAAe,GAAG,YAAgE;AACtF,IAAA,IAAI;QACF,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,KAAK,CAAC,oDAAoD,CAAC;YAC3D,KAAK,CAAC,4CAA4C,CAAC;AACpD,SAAA,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;AACxC,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE;QAE5C,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAS,CAAC,MAAM;SACxB;IACH;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACvC;AACF,CAAC;AAEM,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;AAChC,IAAA,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,cAAc,CAAC;AAC1B,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,OAAO,EAAE,SAAS,CAAC,WAAW,KAAK,SAAS;AAC7C,KAAA,CAAC;AACJ;AAEO,MAAM,mBAAmB,GAAG;AAE5B,MAAM,YAAY,GAAG;AAC1B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAa,GAAG,mBAAmB,EAAE;;;;;"}
|