@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.
Files changed (70) hide show
  1. package/dist/components/TokenSelectorPanel/index.js.map +1 -1
  2. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.d.ts +4 -0
  3. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js +10 -0
  4. package/dist/components/uikit-sdk/Svg/Icons/GiftBox.js.map +1 -0
  5. package/dist/components/uikit-sdk/Svg/index.js +3 -0
  6. package/dist/components/uikit-sdk/Svg/index.js.map +1 -1
  7. package/dist/components/uikit-sdk/Svg/types.d.ts +1 -0
  8. package/dist/components/uikit-sdk/Svg/types.js +1 -0
  9. package/dist/components/uikit-sdk/Svg/types.js.map +1 -1
  10. package/dist/components/uikit-sdk/TooltipBubble/types.d.ts +2 -2
  11. package/dist/components/uikit-sdk/TooltipBubble/types.js.map +1 -1
  12. package/dist/config/constants/queryKeys.d.ts +1 -0
  13. package/dist/config/constants/queryKeys.js.map +1 -1
  14. package/dist/state/tiers/useTierPoints.d.ts +15 -2
  15. package/dist/state/tiers/useTierPoints.js +31 -4
  16. package/dist/state/tiers/useTierPoints.js.map +1 -1
  17. package/dist/state/zap/useSoulZapBondQuote.js +6 -3
  18. package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
  19. package/dist/utils/formatNumber.d.ts +6 -0
  20. package/dist/utils/formatNumber.js +39 -3
  21. package/dist/utils/formatNumber.js.map +1 -1
  22. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +1 -2
  23. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
  24. package/dist/views/Bonds/components/BonusComponents/BonusTable.js +3 -2
  25. package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
  26. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +22 -36
  27. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
  28. package/dist/views/BuyBond/BuyComponent.js +10 -9
  29. package/dist/views/BuyBond/BuyComponent.js.map +1 -1
  30. package/dist/views/BuyBond/components/BondModalHeader.js +21 -3
  31. package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
  32. package/dist/views/BuyBond/components/Estimations.d.ts +1 -1
  33. package/dist/views/BuyBond/components/Estimations.js +15 -9
  34. package/dist/views/BuyBond/components/Estimations.js.map +1 -1
  35. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +27 -7
  36. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +1 -1
  37. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +4 -3
  38. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
  39. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +6 -5
  40. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
  41. package/dist/views/ProjectView/ProjectView.js +7 -9
  42. package/dist/views/ProjectView/ProjectView.js.map +1 -1
  43. package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js +111 -0
  44. package/dist/views/ProjectView/components/PriceChart/components/CandleStickChart.js.map +1 -0
  45. package/dist/views/ProjectView/components/PriceChart/components/LineChart.js +100 -0
  46. package/dist/views/ProjectView/components/PriceChart/components/LineChart.js.map +1 -0
  47. package/dist/views/ProjectView/components/PriceChart/components/utils.js +20 -0
  48. package/dist/views/ProjectView/components/PriceChart/components/utils.js.map +1 -0
  49. package/dist/views/ProjectView/components/PriceChart/index.js +38 -0
  50. package/dist/views/ProjectView/components/PriceChart/index.js.map +1 -0
  51. package/dist/views/ProjectView/components/PriceChart/styles.js +44 -0
  52. package/dist/views/ProjectView/components/PriceChart/styles.js.map +1 -0
  53. package/dist/views/ProjectView/components/RecommendationCards/index.js +7 -2
  54. package/dist/views/ProjectView/components/RecommendationCards/index.js.map +1 -1
  55. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +4 -3
  56. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
  57. package/dist/views/TransactionModal/TransactionModal.js +5 -4
  58. package/dist/views/TransactionModal/TransactionModal.js.map +1 -1
  59. package/package.json +2 -3
  60. package/dist/components/TabNavigation/index.js +0 -33
  61. package/dist/components/TabNavigation/index.js.map +0 -1
  62. package/dist/views/RakuraiComponent/RakuraiComponent.d.ts +0 -3
  63. package/dist/views/RakuraiComponent/RakuraiComponent.js +0 -229
  64. package/dist/views/RakuraiComponent/RakuraiComponent.js.map +0 -1
  65. package/dist/views/RakuraiComponent/useRakuraiStats.d.ts +0 -7
  66. package/dist/views/RakuraiComponent/useRakuraiStats.js +0 -42
  67. package/dist/views/RakuraiComponent/useRakuraiStats.js.map +0 -1
  68. package/dist/views/RakuraiComponent/useSolanaStakeBalances.d.ts +0 -8
  69. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js +0 -47
  70. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSoulZapBondQuote.js","sources":["../../../src/state/zap/useSoulZapBondQuote.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { BillVersion, ChainId, dexFactories, LiquidityDex, Token, Wrappers } from '@ape.swap/apeswap-lists'\nimport { getChainParam, getLpType } from './getChainParam'\nimport axios from 'axios'\nimport { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { BondsData } from '../../types/bonds'\nimport { useSlippage } from '../slippage/useSlippage'\nimport useDebounce from '../../hooks/useDebounce'\nimport { WNATIVE, zapInputTokens } from '../../config/constants/tokens'\nimport { SOUL_ZAP_API, zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { useSDKConfig } from '../useSDKConfig'\n\nconst useSoulZapBondQuote = (\n typedValue: string,\n inputCurrency: 'NATIVE' | Token | undefined,\n bond: BondsData | undefined,\n account?: string,\n tierProofSig?: string,\n): [loading: boolean, response: any, depositAmount: string, error: boolean, trueBondPrice: string | undefined] => {\n const isZapSupported = zapSupported.includes(bond?.chainId as ZapSupportedChainId)\n const debouncedInput = useDebounce(typedValue, 500)\n const isDebouncing = typedValue !== debouncedInput\n const { evmSlippage: slippage } = useSlippage()\n const SDKConfig = useSDKConfig()\n\n const principalToken = bond?.lpToken as Token\n const bondContractAddress = bond?.contractAddress[bond?.chainId as ChainId]\n const chainId = bond?.chainId as ChainId\n const inputCurrencyString =\n inputCurrency === 'NATIVE' ? '0x0000000000000000000000000000000000000000' : inputCurrency?.address[chainId]\n const inputCurrencyDecimals = inputCurrency === 'NATIVE' ? 18 : inputCurrency?.decimals![chainId]\n const principalContractAddress = principalToken?.address[chainId]\n const chainName = getChainParam(chainId)\n\n const isReserveBond = bond?.billType === 'reserve' || bond?.billType === 'staking'\n const liquidityDex: LiquidityDex | undefined =\n principalToken?.liquiditySource?.[chainId] ?? principalToken?.liquidityDex?.[chainId]\n const protocol = dexFactories[chainId]?.[liquidityDex!]?.protocol\n const lpType = isReserveBond ? 'single' : getLpType(protocol)\n const ichiUnderlyingDex = principalToken?.ichiUnderlyingDex\n const vault = principalToken?.address?.[chainId]\n const router = dexFactories[chainId]?.[liquidityDex!]?.router\n\n // Validates that the user did not pass an amount with 19 decimals or more\n const validated18DecimalAmount = new BigNumber(debouncedInput ?? '0').toFixed(18, 5)\n const bigishInputAmount = new BigNumber(validated18DecimalAmount ?? '0')\n .times(new BigNumber(10).pow(inputCurrencyDecimals ?? 18))\n .toString()\n\n const zapInputData = useMemo(() => {\n if (\n inputCurrencyString &&\n inputCurrencyDecimals &&\n bigishInputAmount !== 'NaN' &&\n bigishInputAmount !== '0' &&\n principalContractAddress &&\n chainName &&\n bondContractAddress &&\n isZapSupported\n ) {\n if (principalToken.liquidityWrapper && principalToken.liquidityWrapper === Wrappers.Steer) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'steer',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n lpAddress: vault,\n periphery: '0xCEBF1A54A9Ce703FC80967760b5A6cbDb4111099',\n slippage,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n }\n // a.k.a if it is principal token\n if (inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'none',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType:\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n ? 'none'\n : lpType,\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n underlyingDex: ichiUnderlyingDex,\n vault: isReserveBond ? undefined : vault,\n slippage: slippage,\n lpAddress: lpType === 'solidly' || lpType === 'univ2' || lpType === 'curve' ? vault : undefined,\n router: lpType === 'solidly' || lpType === 'univ2' ? router : undefined,\n toToken: isReserveBond ? vault : undefined,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else {\n return null\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [\n bigishInputAmount,\n principalContractAddress,\n chainName,\n account,\n ichiUnderlyingDex,\n vault,\n lpType,\n router,\n slippage,\n ])\n\n const queryKey = useMemo(() => {\n if (!zapInputData) return null\n return [\n 'zapBondDetails',\n zapInputData.chain,\n zapInputData.user,\n zapInputData.lpData.lpType,\n zapInputData.lpData.fromToken,\n zapInputData.lpData.fromAmount,\n zapInputData.lpData.underlyingDex ?? '',\n zapInputData.lpData.vault,\n zapInputData.lpData.slippage,\n zapInputData.lpData.lpAddress,\n zapInputData.lpData.router ?? '',\n ]\n }, [zapInputData])\n\n const fetchZapDetails = async () => {\n const response = await axios.post(SOUL_ZAP_API, zapInputData)\n return response.data?.result?.data\n }\n\n const {\n data: response,\n isLoading,\n isFetching,\n error,\n } = useQuery({\n queryKey: [QUERY_KEYS.ZAP_TOKEN_QUOTE, queryKey],\n queryFn: fetchZapDetails,\n refetchInterval: 60000, // i.e. 60 sec\n staleTime: 60000,\n enabled: !!queryKey,\n retry: 1,\n })\n const zapError = !!error\n\n const tokenList = zapInputTokens[chainId] ? zapInputTokens[chainId] : []\n\n // toToken0 data\n const toToken0Estimate: string | undefined = response?.lpQuote?.token0?.fromAmountEstimate\n const toToken0 = [...tokenList, principalToken]?.find(\n (token) => token?.address?.[chainId]?.toLowerCase() === response?.lpQuote?.token0?.address?.toLowerCase(),\n )\n const toToken0Price = useCurrencyPrice(toToken0 ?? null, chainId)\n\n // toToken1 data\n const toToken1Estimate: string | undefined = response?.lpQuote?.token1?.fromAmountEstimate\n const toToken1 = zapInputTokens[chainId]?.find(\n (token) => token.address[chainId]?.toLowerCase() === response?.lpQuote?.token1?.address?.toLowerCase(),\n )\n const toToken1Price = useCurrencyPrice(toToken1 ?? null, chainId)\n\n let toToken0USD = new BigNumber(toToken0Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken0?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken0Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token0?.fromAmountUSD) {\n toToken0USD = new BigNumber(response?.lpQuote?.token0?.fromAmountUSD)\n }\n\n let toToken1USD = new BigNumber(toToken1Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken1?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken1Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token1?.fromAmountUSD) {\n toToken1USD = new BigNumber(response?.lpQuote?.token1?.fromAmountUSD)\n }\n\n const youSpendUSD = toToken0USD.plus(toToken1USD) // youSpendUSD\n const estimatedDepositAmount = youSpendUSD.div(bond?.principalTokenPrice ?? '0')\n\n const isWrap =\n inputCurrency === 'NATIVE' &&\n bond?.lpToken?.address?.[chainId]?.toLowerCase() === WNATIVE[chainId]?.address?.[chainId]?.toLowerCase()\n\n const isPrincipalToken =\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n\n const estimatedDepositAmountToReturn =\n isWrap || isPrincipalToken\n ? new BigNumber(typedValue || '0').times((100 - bond?.tierBoostRate!) / 100).toString()\n : estimatedDepositAmount.toString()\n\n const trueBondPrice: string | undefined = response?.protocolQuote?.trueBondPrice\n\n // DEBUG: log tierOptimization when present\n if (response?.protocolQuote?.tierOptimization) {\n const tier = response.protocolQuote.tierOptimization\n const decimals = principalToken?.decimals?.[chainId] ?? 18\n const cost = new BigNumber(tier.tierCost).div(new BigNumber(10).pow(decimals))\n const input = new BigNumber(tier.bondInput).div(new BigNumber(10).pow(decimals))\n const profit = new BigNumber(tier.profit).div(new BigNumber(10).pow(decimals))\n console.log('[ZAP] tierOptimization:', {\n tier: `${tier.previousTier} → ${tier.newTier}`,\n cost: cost.toFixed(6),\n bondInput: input.toFixed(6),\n profit: profit.toFixed(6),\n })\n }\n\n const zapLoading = isDebouncing || isLoading || isFetching\n if (zapLoading) return [true, undefined, '', false, undefined]\n\n return [zapLoading, response, estimatedDepositAmountToReturn, zapError, trueBondPrice]\n}\n\nexport default useSoulZapBondQuote\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSoulZapBondQuote.js","sources":["../../../src/state/zap/useSoulZapBondQuote.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { BillVersion, ChainId, dexFactories, LiquidityDex, Token, Wrappers } from '@ape.swap/apeswap-lists'\nimport { getChainParam, getLpType } from './getChainParam'\nimport axios from 'axios'\nimport { useQuery } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport useCurrencyPrice from '../../state/price/useCurrencyPrice'\nimport { BondsData } from '../../types/bonds'\nimport { useSlippage } from '../slippage/useSlippage'\nimport useDebounce from '../../hooks/useDebounce'\nimport { WNATIVE, zapInputTokens } from '../../config/constants/tokens'\nimport { SOUL_ZAP_API, zapSupported, ZapSupportedChainId } from '../../config/constants/variables'\nimport { useSDKConfig } from '../useSDKConfig'\nimport useTierPoints from '../tiers/useTierPoints'\n\nconst useSoulZapBondQuote = (\n typedValue: string,\n inputCurrency: 'NATIVE' | Token | undefined,\n bond: BondsData | undefined,\n account?: string,\n tierProofSig?: string,\n): [loading: boolean, response: any, depositAmount: string, error: boolean, trueBondPrice: string | undefined] => {\n const isZapSupported = zapSupported.includes(bond?.chainId as ZapSupportedChainId)\n const debouncedInput = useDebounce(typedValue, 500)\n const isDebouncing = typedValue !== debouncedInput\n const { evmSlippage: slippage } = useSlippage()\n const SDKConfig = useSDKConfig()\n const { data: tierPointsState } = useTierPoints()\n const { usingPromotion } = tierPointsState || {}\n\n const principalToken = bond?.lpToken as Token\n const bondContractAddress = bond?.contractAddress[bond?.chainId as ChainId]\n const chainId = bond?.chainId as ChainId\n const inputCurrencyString =\n inputCurrency === 'NATIVE' ? '0x0000000000000000000000000000000000000000' : inputCurrency?.address[chainId]\n const inputCurrencyDecimals = inputCurrency === 'NATIVE' ? 18 : inputCurrency?.decimals![chainId]\n const principalContractAddress = principalToken?.address[chainId]\n const chainName = getChainParam(chainId)\n\n const isReserveBond = bond?.billType === 'reserve' || bond?.billType === 'staking'\n const liquidityDex: LiquidityDex | undefined =\n principalToken?.liquiditySource?.[chainId] ?? principalToken?.liquidityDex?.[chainId]\n const protocol = dexFactories[chainId]?.[liquidityDex!]?.protocol\n const lpType = isReserveBond ? 'single' : getLpType(protocol)\n const ichiUnderlyingDex = principalToken?.ichiUnderlyingDex\n const vault = principalToken?.address?.[chainId]\n const router = dexFactories[chainId]?.[liquidityDex!]?.router\n\n // Validates that the user did not pass an amount with 19 decimals or more\n const validated18DecimalAmount = new BigNumber(debouncedInput ?? '0').toFixed(18, 5)\n const bigishInputAmount = new BigNumber(validated18DecimalAmount ?? '0')\n .times(new BigNumber(10).pow(inputCurrencyDecimals ?? 18))\n .toString()\n\n const zapInputData = useMemo(() => {\n if (\n inputCurrencyString &&\n inputCurrencyDecimals &&\n bigishInputAmount !== 'NaN' &&\n bigishInputAmount !== '0' &&\n principalContractAddress &&\n chainName &&\n bondContractAddress &&\n isZapSupported\n ) {\n if (principalToken.liquidityWrapper && principalToken.liquidityWrapper === Wrappers.Steer) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'steer',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n lpAddress: vault,\n periphery: '0xCEBF1A54A9Ce703FC80967760b5A6cbDb4111099',\n slippage,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n }\n // a.k.a if it is principal token\n if (inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]) {\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType: 'none',\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else\n return {\n chain: chainName,\n recipient: account ?? '0x0000000000000000000000000000000000000000',\n user: account ?? '0x0000000000000000000000000000000000000000',\n lpData: {\n lpType:\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n ? 'none'\n : lpType,\n fromToken: inputCurrencyString,\n fromAmount: bigishInputAmount,\n underlyingDex: ichiUnderlyingDex,\n vault: isReserveBond ? undefined : vault,\n slippage: slippage,\n lpAddress: lpType === 'solidly' || lpType === 'univ2' || lpType === 'curve' ? vault : undefined,\n router: lpType === 'solidly' || lpType === 'univ2' ? router : undefined,\n toToken: isReserveBond ? vault : undefined,\n },\n protocolData: {\n protocol: 'ApeBond',\n bond: bondContractAddress,\n depositer: account ?? '0x0000000000000000000000000000000000000000',\n tierProofSignature: bond.billVersion === BillVersion.V4 && tierProofSig ? tierProofSig : undefined,\n enableTierOptimizer: SDKConfig.useTiers && !usingPromotion,\n tierBoostRate: bond.tierBoostRate,\n },\n }\n } else {\n return null\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [\n bigishInputAmount,\n principalContractAddress,\n chainName,\n account,\n ichiUnderlyingDex,\n vault,\n lpType,\n router,\n slippage,\n ])\n\n const queryKey = useMemo(() => {\n if (!zapInputData) return null\n return [\n 'zapBondDetails',\n zapInputData.chain,\n zapInputData.user,\n zapInputData.lpData.lpType,\n zapInputData.lpData.fromToken,\n zapInputData.lpData.fromAmount,\n zapInputData.lpData.underlyingDex ?? '',\n zapInputData.lpData.vault,\n zapInputData.lpData.slippage,\n zapInputData.lpData.lpAddress,\n zapInputData.lpData.router ?? '',\n ]\n }, [zapInputData])\n\n const fetchZapDetails = async () => {\n const response = await axios.post(SOUL_ZAP_API, zapInputData)\n return response.data?.result?.data\n }\n\n const {\n data: response,\n isLoading,\n isFetching,\n error,\n } = useQuery({\n queryKey: [QUERY_KEYS.ZAP_TOKEN_QUOTE, queryKey],\n queryFn: fetchZapDetails,\n refetchInterval: 60000, // i.e. 60 sec\n staleTime: 60000,\n enabled: !!queryKey,\n retry: 1,\n })\n const zapError = !!error\n\n const tokenList = zapInputTokens[chainId] ? zapInputTokens[chainId] : []\n\n // toToken0 data\n const toToken0Estimate: string | undefined = response?.lpQuote?.token0?.fromAmountEstimate\n const toToken0 = [...tokenList, principalToken]?.find(\n (token) => token?.address?.[chainId]?.toLowerCase() === response?.lpQuote?.token0?.address?.toLowerCase(),\n )\n const toToken0Price = useCurrencyPrice(toToken0 ?? null, chainId)\n\n // toToken1 data\n const toToken1Estimate: string | undefined = response?.lpQuote?.token1?.fromAmountEstimate\n const toToken1 = zapInputTokens[chainId]?.find(\n (token) => token.address[chainId]?.toLowerCase() === response?.lpQuote?.token1?.address?.toLowerCase(),\n )\n const toToken1Price = useCurrencyPrice(toToken1 ?? null, chainId)\n\n let toToken0USD = new BigNumber(toToken0Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken0?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken0Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token0?.fromAmountUSD) {\n toToken0USD = new BigNumber(response?.lpQuote?.token0?.fromAmountUSD)\n }\n\n let toToken1USD = new BigNumber(toToken1Estimate ?? '0')\n ?.div(new BigNumber(10).pow(toToken1?.decimals![chainId] ?? 18)) // this is amount of swap output\n ?.times(new BigNumber(toToken1Price?.price ?? 0)) // convert it to usd price\n\n if (response?.lpQuote?.token1?.fromAmountUSD) {\n toToken1USD = new BigNumber(response?.lpQuote?.token1?.fromAmountUSD)\n }\n\n const youSpendUSD = toToken0USD.plus(toToken1USD) // youSpendUSD\n const estimatedDepositAmount = youSpendUSD.div(bond?.principalTokenPrice ?? '0')\n\n const isWrap =\n inputCurrency === 'NATIVE' &&\n bond?.lpToken?.address?.[chainId]?.toLowerCase() === WNATIVE[chainId]?.address?.[chainId]?.toLowerCase()\n\n const isPrincipalToken =\n inputCurrency !== 'NATIVE' && inputCurrency?.address[chainId] === principalToken.address[chainId]\n\n const estimatedDepositAmountToReturn =\n isWrap || isPrincipalToken\n ? new BigNumber(typedValue || '0').times((100 - bond?.tierBoostRate!) / 100).toString()\n : estimatedDepositAmount.toString()\n\n const trueBondPrice: string | undefined = response?.protocolQuote?.trueBondPrice\n\n // DEBUG: log tierOptimization when present\n if (response?.protocolQuote?.tierOptimization) {\n const tier = response.protocolQuote.tierOptimization\n const decimals = principalToken?.decimals?.[chainId] ?? 18\n const cost = new BigNumber(tier.tierCost).div(new BigNumber(10).pow(decimals))\n const input = new BigNumber(tier.bondInput).div(new BigNumber(10).pow(decimals))\n const profit = new BigNumber(tier.profit).div(new BigNumber(10).pow(decimals))\n console.log('[ZAP] tierOptimization:', {\n tier: `${tier.previousTier} → ${tier.newTier}`,\n cost: cost.toFixed(6),\n bondInput: input.toFixed(6),\n profit: profit.toFixed(6),\n })\n }\n\n const zapLoading = isDebouncing || isLoading || isFetching\n if (zapLoading) return [true, undefined, '', false, undefined]\n\n return [zapLoading, response, estimatedDepositAmountToReturn, zapError, trueBondPrice]\n}\n\nexport default useSoulZapBondQuote\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
1
  export declare const localeFormat: (number: number, precision?: number) => string;
2
+ /**
3
+ * Formats very small numbers with compressed zero notation.
4
+ * e.g. 0.0000000456 → "0.0₆456"
5
+ * Threshold: 4 or more leading zeros after the decimal point.
6
+ */
7
+ export declare const formatSmallNumber: (num: number, sigDigits?: number) => string;
2
8
  export declare const formatSignificantDigits: (num: number, digits: number) => string;
3
9
  export declare const formatNumberSI: (num?: number | string, digits?: number, useKSuffix?: boolean) => string | undefined;
@@ -10,6 +10,42 @@ const localeFormat = (number, precision = 2) => {
10
10
  // Remove .0, .00, .000, etc. when all decimal places are zero (but keep .0001, .01, etc.)
11
11
  return formatted.replace(/\.0+$/, '');
12
12
  };
13
+ const SUPERSCRIPT_DIGITS = ['⁰', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹'];
14
+ const toSuperscript = (n) => String(n)
15
+ .split('')
16
+ .map((d) => SUPERSCRIPT_DIGITS[parseInt(d)])
17
+ .join('');
18
+ /**
19
+ * Formats very small numbers with compressed zero notation.
20
+ * e.g. 0.0000000456 → "0.0₆456"
21
+ * Threshold: 4 or more leading zeros after the decimal point.
22
+ */
23
+ const formatSmallNumber = (num, sigDigits = 3) => {
24
+ if (num === 0)
25
+ return '0';
26
+ const isNegative = num < 0;
27
+ const abs = Math.abs(num);
28
+ // Get decimal string avoiding scientific notation
29
+ const str = abs.toFixed(20).replace(/0+$/, '');
30
+ const afterDot = str.split('.')[1] ?? '';
31
+ const leadingZeros = afterDot.match(/^0+/)?.[0].length ?? 0;
32
+ if (leadingZeros < 4) {
33
+ // Not small enough to compress — fall back to significant digits
34
+ const result = formatSignificantDigits(abs, sigDigits);
35
+ return isNegative ? `-${result}` : result;
36
+ }
37
+ // Significant digits after the leading zeros
38
+ const significantPart = afterDot.slice(leadingZeros);
39
+ const bn = new BigNumber(`0.${significantPart}`);
40
+ const rounded = bn
41
+ .sd(sigDigits)
42
+ .toFixed()
43
+ .replace(/^0\./, '')
44
+ .replace(/\.?0+$/, '');
45
+ // Format: "0.0⁽ⁿ⁻¹⁾<digits>" where n = total leading zeros
46
+ const formatted = `0.0${toSuperscript(leadingZeros - 1)}${rounded}`;
47
+ return isNegative ? `-${formatted}` : formatted;
48
+ };
13
49
  const formatSignificantDigits = (num, digits) => {
14
50
  const bn = new BigNumber(num);
15
51
  if (bn.isNaN() || bn.isZero()) {
@@ -50,7 +86,7 @@ const formatNumberSI = (num, digits = 2, useKSuffix = false) => {
50
86
  return isNegative ? `-${formatted}` : formatted;
51
87
  }
52
88
  if (absNumber >= 1e6 && suffix) {
53
- const formatted = `${localeFormat(absNumber / suffix.value, digits)}${suffix.symbol}`;
89
+ const formatted = `${localeFormat(absNumber / suffix.value, 2)}${suffix.symbol}`;
54
90
  return isNegative ? `-${formatted}` : formatted;
55
91
  }
56
92
  if (absNumber >= 1000) {
@@ -63,9 +99,9 @@ const formatNumberSI = (num, digits = 2, useKSuffix = false) => {
63
99
  }
64
100
  if (absNumber === 0)
65
101
  return '0';
66
- const formatted = formatSignificantDigits(absNumber, digits);
102
+ const formatted = absNumber < 0.00001 ? formatSmallNumber(absNumber, digits) : formatSignificantDigits(absNumber, digits);
67
103
  return isNegative ? `-${formatted}` : formatted;
68
104
  };
69
105
 
70
- export { formatNumberSI, formatSignificantDigits, localeFormat };
106
+ export { formatNumberSI, formatSignificantDigits, formatSmallNumber, localeFormat };
71
107
  //# sourceMappingURL=formatNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatNumber.js","sources":["../../src/utils/formatNumber.ts"],"sourcesContent":["import { BigNumber } from 'bignumber.js'\n\n// Ideally let's keep all formating in this file and DO NOT CREATE MORE FILES\n\nexport const localeFormat = (number: number, precision = 2) => {\n const options = {\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n }\n const formatted = number.toLocaleString('en-US', options)\n // Remove .0, .00, .000, etc. when all decimal places are zero (but keep .0001, .01, etc.)\n return formatted.replace(/\\.0+$/, '')\n}\n\nexport const formatSignificantDigits = (num: number, digits: number): string => {\n const bn = new BigNumber(num)\n\n if (bn.isNaN() || bn.isZero()) {\n return '0'\n }\n\n // Use toSignificantDigits (sd) to round to significant digits\n const rounded = bn.sd(digits || 3)\n\n // Convert to string and remove trailing zeros\n return rounded.toFixed().replace(/\\.?0+$/, '')\n}\n\nexport const formatNumberSI = (num?: number | string, digits = 2, useKSuffix = false): string | undefined => {\n if (num === undefined || num === null) return undefined\n let number = typeof num === 'string' ? parseFloat(num) : num\n\n if (isNaN(number)) {\n number = 0\n }\n\n // Handle negative numbers by formatting the absolute value and adding the sign back\n const isNegative = number < 0\n const absNumber = Math.abs(number)\n\n const suffixes = useKSuffix\n ? [\n { value: 1e12, symbol: 'T' },\n { value: 1e9, symbol: 'B' },\n { value: 1e6, symbol: 'M' },\n { value: 1e3, symbol: 'K' },\n { value: 1, symbol: '' },\n ]\n : [\n { value: 1e12, symbol: 'T' },\n { value: 1e9, symbol: 'B' },\n { value: 1e6, symbol: 'M' },\n { value: 1, symbol: '' },\n ]\n\n const suffix = suffixes.find(({ value }) => absNumber >= value)\n\n if (useKSuffix && absNumber >= 1e3 && suffix && suffix.symbol) {\n const formatted = `${localeFormat(absNumber / suffix.value, digits)}${suffix.symbol}`\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber >= 1e6 && suffix) {\n const formatted = `${localeFormat(absNumber / suffix.value, digits)}${suffix.symbol}`\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber >= 1000) {\n const formatted = localeFormat(Math.round(absNumber), 0)\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber > 1) {\n const formatted = localeFormat(absNumber, digits)\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber === 0) return '0'\n\n const formatted = formatSignificantDigits(absNumber, digits)\n return isNegative ? `-${formatted}` : formatted\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatNumber.js","sources":["../../src/utils/formatNumber.ts"],"sourcesContent":["import { BigNumber } from 'bignumber.js'\n\n// Ideally let's keep all formating in this file and DO NOT CREATE MORE FILES\n\nexport const localeFormat = (number: number, precision = 2) => {\n const options = {\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n }\n const formatted = number.toLocaleString('en-US', options)\n // Remove .0, .00, .000, etc. when all decimal places are zero (but keep .0001, .01, etc.)\n return formatted.replace(/\\.0+$/, '')\n}\n\nconst SUPERSCRIPT_DIGITS = ['⁰', '¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹']\n\nconst toSuperscript = (n: number): string =>\n String(n)\n .split('')\n .map((d) => SUPERSCRIPT_DIGITS[parseInt(d)])\n .join('')\n\n/**\n * Formats very small numbers with compressed zero notation.\n * e.g. 0.0000000456 → \"0.0₆456\"\n * Threshold: 4 or more leading zeros after the decimal point.\n */\nexport const formatSmallNumber = (num: number, sigDigits = 3): string => {\n if (num === 0) return '0'\n const isNegative = num < 0\n const abs = Math.abs(num)\n\n // Get decimal string avoiding scientific notation\n const str = abs.toFixed(20).replace(/0+$/, '')\n const afterDot = str.split('.')[1] ?? ''\n const leadingZeros = afterDot.match(/^0+/)?.[0].length ?? 0\n\n if (leadingZeros < 4) {\n // Not small enough to compress — fall back to significant digits\n const result = formatSignificantDigits(abs, sigDigits)\n return isNegative ? `-${result}` : result\n }\n\n // Significant digits after the leading zeros\n const significantPart = afterDot.slice(leadingZeros)\n const bn = new BigNumber(`0.${significantPart}`)\n const rounded = bn\n .sd(sigDigits)\n .toFixed()\n .replace(/^0\\./, '')\n .replace(/\\.?0+$/, '')\n\n // Format: \"0.0⁽ⁿ⁻¹⁾<digits>\" where n = total leading zeros\n const formatted = `0.0${toSuperscript(leadingZeros - 1)}${rounded}`\n return isNegative ? `-${formatted}` : formatted\n}\n\nexport const formatSignificantDigits = (num: number, digits: number): string => {\n const bn = new BigNumber(num)\n\n if (bn.isNaN() || bn.isZero()) {\n return '0'\n }\n\n // Use toSignificantDigits (sd) to round to significant digits\n const rounded = bn.sd(digits || 3)\n\n // Convert to string and remove trailing zeros\n return rounded.toFixed().replace(/\\.?0+$/, '')\n}\n\nexport const formatNumberSI = (num?: number | string, digits = 2, useKSuffix = false): string | undefined => {\n if (num === undefined || num === null) return undefined\n let number = typeof num === 'string' ? parseFloat(num) : num\n\n if (isNaN(number)) {\n number = 0\n }\n\n // Handle negative numbers by formatting the absolute value and adding the sign back\n const isNegative = number < 0\n const absNumber = Math.abs(number)\n\n const suffixes = useKSuffix\n ? [\n { value: 1e12, symbol: 'T' },\n { value: 1e9, symbol: 'B' },\n { value: 1e6, symbol: 'M' },\n { value: 1e3, symbol: 'K' },\n { value: 1, symbol: '' },\n ]\n : [\n { value: 1e12, symbol: 'T' },\n { value: 1e9, symbol: 'B' },\n { value: 1e6, symbol: 'M' },\n { value: 1, symbol: '' },\n ]\n\n const suffix = suffixes.find(({ value }) => absNumber >= value)\n\n if (useKSuffix && absNumber >= 1e3 && suffix && suffix.symbol) {\n const formatted = `${localeFormat(absNumber / suffix.value, digits)}${suffix.symbol}`\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber >= 1e6 && suffix) {\n const formatted = `${localeFormat(absNumber / suffix.value, 2)}${suffix.symbol}`\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber >= 1000) {\n const formatted = localeFormat(Math.round(absNumber), 0)\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber > 1) {\n const formatted = localeFormat(absNumber, digits)\n return isNegative ? `-${formatted}` : formatted\n }\n\n if (absNumber === 0) return '0'\n\n const formatted =\n absNumber < 0.00001 ? formatSmallNumber(absNumber, digits) : formatSignificantDigits(absNumber, digits)\n return isNegative ? `-${formatted}` : formatted\n}\n"],"names":[],"mappings":"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"}
@@ -14,7 +14,6 @@ import BigNumber from 'bignumber.js';
14
14
  import { formatNumberSI } from '../../../../utils/formatNumber.js';
15
15
  import { getTimePeriods } from '../../../../utils/getTimePeriods.js';
16
16
  import { useSDKConfig } from '../../../../state/useSDKConfig.js';
17
- import RakuraiComponent from '../../../RakuraiComponent/RakuraiComponent.js';
18
17
 
19
18
  const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
20
19
  const { namingPreference } = useSDKConfig();
@@ -25,7 +24,7 @@ const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
25
24
  overflow: 'hidden',
26
25
  width: '100%',
27
26
  marginTop: '0px',
28
- }, className: "bonds-card-container", children: [[ChainId.MONAD].includes(chain) && !hideTitles && jsx(ChainBanner, { chainId: chain }), chain === ChainId.SOL && jsx(RakuraiComponent, {}), bonds?.map((bondFromMap, index) => {
27
+ }, className: "bonds-card-container", children: [[ChainId.MONAD, ChainId.SOL].includes(chain) && !hideTitles && jsx(ChainBanner, { chainId: chain }), bonds?.map((bondFromMap, index) => {
29
28
  // PRE TGE ROWS
30
29
  if (bondFromMap.billType === 'fcfs') {
31
30
  const bond = bondFromMap;
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport { Flex } from 'theme-ui'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport SwiperProvider from '../../../../contexts/SwiperProvider'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport BigNumber from 'bignumber.js'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport RakuraiComponent from '../../../RakuraiComponent/RakuraiComponent'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\nexport interface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} sx={{ cursor: 'pointer' }}>\n <ChainTitle chain={chain} pt={'5px'} hideTitles={bonds.length <= 0 || hideTitles} isOpen={isOpen} />\n </Flex>\n {isOpen && bonds.length > 0 && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n sx={{\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n marginTop: '0px',\n }}\n key={key}\n className=\"bonds-card-container\"\n >\n {[ChainId.MONAD].includes(chain) && !hideTitles && <ChainBanner chainId={chain} />}\n {chain === ChainId.SOL && <RakuraiComponent />}\n {bonds?.map((bondFromMap, index) => {\n // PRE TGE ROWS\n\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n new BigNumber(bond?.totalPrincipalBilled ?? '0'),\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(\n new BigNumber(bond?.totalRaise ?? '0'),\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={saleHasFinished ? undefined : `${bonus}%`}\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else {\n // POST TGE BONDS AKA NORMAL BONDS\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && (\n <SwiperProvider>\n <HotBondCards />\n </SwiperProvider>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport { Flex } from 'theme-ui'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport SwiperProvider from '../../../../contexts/SwiperProvider'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport BigNumber from 'bignumber.js'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\nexport interface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} sx={{ cursor: 'pointer' }}>\n <ChainTitle chain={chain} pt={'5px'} hideTitles={bonds.length <= 0 || hideTitles} isOpen={isOpen} />\n </Flex>\n {isOpen && bonds.length > 0 && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n sx={{\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n marginTop: '0px',\n }}\n key={key}\n className=\"bonds-card-container\"\n >\n {[ChainId.MONAD, ChainId.SOL].includes(chain) && !hideTitles && <ChainBanner chainId={chain} />}\n {bonds?.map((bondFromMap, index) => {\n // PRE TGE ROWS\n\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n new BigNumber(bond?.totalPrincipalBilled ?? '0'),\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(\n new BigNumber(bond?.totalRaise ?? '0'),\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={saleHasFinished ? undefined : `${bonus}%`}\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else {\n // POST TGE BONDS AKA NORMAL BONDS\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && (\n <SwiperProvider>\n <HotBondCards />\n </SwiperProvider>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -8,8 +8,9 @@ import { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers.js'
8
8
  import TokenImage from '../../../../components/uikit-sdk/TokenImage/index.js';
9
9
 
10
10
  const BonusTable = ({ trueBondPrices, minTier, hideTitle, isIREET, }) => {
11
- const { data: userPoints } = useTierPoints();
12
- const usersTrueBondPrices = findHighestTrueBondPrice(userPoints, trueBondPrices);
11
+ const { data: tierPointsState } = useTierPoints();
12
+ const { promotionalPoints } = tierPointsState || {};
13
+ const usersTrueBondPrices = findHighestTrueBondPrice(promotionalPoints, trueBondPrices);
13
14
  return isIREET ? (jsxs(Flex, { sx: { width: '100%', flexDirection: 'column' }, children: [jsx(Flex, { sx: { width: '100%', justifyContent: 'center', mb: '10px' }, children: "Bonus Breakdown" }), jsxs(Flex, { sx: {
14
15
  width: '100%',
15
16
  flexDirection: 'column',
@@ -1 +1 @@
1
- {"version":3,"file":"BonusTable.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusTable.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useTierPoints, { getUserTier, TIERS_BG, TIERS_NAMES } from '../../../../state/tiers/useTierPoints'\nimport { BigNumber } from 'bignumber.js'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport YouTooltip from '../../../../components/YouTooltip/YouTooltip'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\n\nconst BonusTable = ({\n trueBondPrices,\n minTier,\n hideTitle,\n isIREET,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n hideTitle?: boolean\n isIREET?: boolean\n}) => {\n const { data: userPoints } = useTierPoints()\n const usersTrueBondPrices = findHighestTrueBondPrice(userPoints, trueBondPrices)\n\n return isIREET ? (\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'center', mb: '10px' }}>Bonus Breakdown</Flex>\n <Flex\n sx={{\n width: '100%',\n flexDirection: 'column',\n borderRadius: 'normal',\n overflow: 'hidden',\n fontWeight: 400,\n // color: 'textDisabledButton',\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: '5px' }}>\n <Flex sx={{ alignItems: 'center', gap: '3px' }}>\n Base <TokenImage symbol={'ireet'} size={15} />\n iREET Bonus\n </Flex>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n }}\n >\n +3%\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '5px' }}>\n <Flex sx={{ alignItems: 'center', gap: '3px' }}>If Bond sells out by April 21st:</Flex>\n </Flex>\n <Flex sx={{ flex: 1, justifyContent: 'space-between', p: '5px' }}>\n <div style={{ flex: 1 }}>\n Extra{' '}\n <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>\n <TokenImage symbol={'pmusd'} size={15} />\n </span>{' '}\n pmUSD Bonus for non-RAAC Bot holders*\n </div>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n height: '19px',\n }}\n >\n +2%\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '5px' }}>\n <div style={{ flex: 1 }}>\n Extra{' '}\n <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>\n <TokenImage symbol={'pmusd'} size={15} />\n </span>{' '}\n pmUSD Bonus for RAAC Bot holders*\n </div>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n height: '19px',\n minWidth: '35px',\n }}\n >\n +4%\n </Flex>\n </Flex>\n </Flex>\n <div\n sx={{\n flex: 1,\n alignItems: 'center',\n fontWeight: 500,\n color: 'textDisabledButton',\n fontStyle: 'italic',\n mt: '10px',\n }}\n >\n * Extra rewards to be distributed in pmUSD by RAAC at bond maturity.\n </div>\n </Flex>\n ) : (\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n {!hideTitle && <Flex sx={{ width: '100%', justifyContent: 'center', mb: '10px' }}>Ape Tier Bonuses</Flex>}\n {trueBondPrices\n ?.sort((a, b) => new BigNumber(b.points).minus(new BigNumber(a.points)).toNumber())\n .map((tier) => {\n const tierToUse = getUserTier(tier.points) as LaunchBondTiers\n //@ts-ignore\n const tierName = `${TIERS_NAMES[tierToUse!]}`\n const you = tier.points === usersTrueBondPrices?.points\n // @ts-ignore\n const isUnavailable = minTier ? minTier > tierToUse || (minTier === 0 && tier.points === '0') : false\n return (\n <Flex\n sx={{\n width: '100%',\n justifyContent: 'space-between',\n height: '30px',\n //@ts-ignore\n background: TIERS_BG[tierToUse] ?? 'white3',\n borderRadius: 'normal',\n alignItems: 'center',\n px: '8px',\n mb: '1px',\n }}\n key={tier.points}\n >\n <Flex sx={{ alignItems: 'center' }}>\n {tier.points !== '0' && (\n <img\n //@ts-ignore\n src={`https://ape.bond/images/launch/${TIERS_NAMES[tierToUse]?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n )}\n <Flex>{tier.points === '0' ? 'No Tier' : tierName}</Flex>\n {you && <YouTooltip />}\n </Flex>\n {isUnavailable ? (\n <Flex sx={{ fontWeight: 600, opacity: 0.8 }}>UNAVAILABLE</Flex>\n ) : (\n <Flex sx={{ color: tier.bonusWithFee > 0 ? 'success' : 'text', fontWeight: 700, alignItems: 'center' }}>\n {tier.bonusWithFee > 0 ? tier.bonusWithFee.toFixed(2) : '0'}%\n {tier.points !== '0' && (\n <Flex\n sx={{\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n px: '4px',\n ml: '3px',\n color: 'success',\n }}\n >\n {`+${tier?.boost ?? 0}%`}\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n )\n })}\n {!hideTitle && (\n <Button\n variant=\"secondary\"\n sx={{ width: '100%', mt: '10px' }}\n onClick={() => window.open('https://www.ape.bond/true-yield?createPosition', '_blank')}\n >\n get tier\n </Button>\n )}\n </Flex>\n )\n}\n\nexport default BonusTable\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"BonusTable.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusTable.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport useTierPoints, { getUserTier, TIERS_BG, TIERS_NAMES } from '../../../../state/tiers/useTierPoints'\nimport { BigNumber } from 'bignumber.js'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport YouTooltip from '../../../../components/YouTooltip/YouTooltip'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\n\nconst BonusTable = ({\n trueBondPrices,\n minTier,\n hideTitle,\n isIREET,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n hideTitle?: boolean\n isIREET?: boolean\n}) => {\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints } = tierPointsState || {}\n const usersTrueBondPrices = findHighestTrueBondPrice(promotionalPoints, trueBondPrices)\n\n return isIREET ? (\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'center', mb: '10px' }}>Bonus Breakdown</Flex>\n <Flex\n sx={{\n width: '100%',\n flexDirection: 'column',\n borderRadius: 'normal',\n overflow: 'hidden',\n fontWeight: 400,\n // color: 'textDisabledButton',\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: '5px' }}>\n <Flex sx={{ alignItems: 'center', gap: '3px' }}>\n Base <TokenImage symbol={'ireet'} size={15} />\n iREET Bonus\n </Flex>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n }}\n >\n +3%\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '5px' }}>\n <Flex sx={{ alignItems: 'center', gap: '3px' }}>If Bond sells out by April 21st:</Flex>\n </Flex>\n <Flex sx={{ flex: 1, justifyContent: 'space-between', p: '5px' }}>\n <div style={{ flex: 1 }}>\n Extra{' '}\n <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>\n <TokenImage symbol={'pmusd'} size={15} />\n </span>{' '}\n pmUSD Bonus for non-RAAC Bot holders*\n </div>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n height: '19px',\n }}\n >\n +2%\n </Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '5px' }}>\n <div style={{ flex: 1 }}>\n Extra{' '}\n <span style={{ display: 'inline-block', verticalAlign: 'middle' }}>\n <TokenImage symbol={'pmusd'} size={15} />\n </span>{' '}\n pmUSD Bonus for RAAC Bot holders*\n </div>\n <Flex\n sx={{\n color: 'success',\n fontWeight: 700,\n border: '1px solid var(--theme-ui-colors-success)',\n borderRadius: 'normal',\n px: '4px',\n alignItems: 'center',\n height: '19px',\n minWidth: '35px',\n }}\n >\n +4%\n </Flex>\n </Flex>\n </Flex>\n <div\n sx={{\n flex: 1,\n alignItems: 'center',\n fontWeight: 500,\n color: 'textDisabledButton',\n fontStyle: 'italic',\n mt: '10px',\n }}\n >\n * Extra rewards to be distributed in pmUSD by RAAC at bond maturity.\n </div>\n </Flex>\n ) : (\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n {!hideTitle && <Flex sx={{ width: '100%', justifyContent: 'center', mb: '10px' }}>Ape Tier Bonuses</Flex>}\n {trueBondPrices\n ?.sort((a, b) => new BigNumber(b.points).minus(new BigNumber(a.points)).toNumber())\n .map((tier) => {\n const tierToUse = getUserTier(tier.points) as LaunchBondTiers\n //@ts-ignore\n const tierName = `${TIERS_NAMES[tierToUse!]}`\n const you = tier.points === usersTrueBondPrices?.points\n // @ts-ignore\n const isUnavailable = minTier ? minTier > tierToUse || (minTier === 0 && tier.points === '0') : false\n return (\n <Flex\n sx={{\n width: '100%',\n justifyContent: 'space-between',\n height: '30px',\n //@ts-ignore\n background: TIERS_BG[tierToUse] ?? 'white3',\n borderRadius: 'normal',\n alignItems: 'center',\n px: '8px',\n mb: '1px',\n }}\n key={tier.points}\n >\n <Flex sx={{ alignItems: 'center' }}>\n {tier.points !== '0' && (\n <img\n //@ts-ignore\n src={`https://ape.bond/images/launch/${TIERS_NAMES[tierToUse]?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n )}\n <Flex>{tier.points === '0' ? 'No Tier' : tierName}</Flex>\n {you && <YouTooltip />}\n </Flex>\n {isUnavailable ? (\n <Flex sx={{ fontWeight: 600, opacity: 0.8 }}>UNAVAILABLE</Flex>\n ) : (\n <Flex sx={{ color: tier.bonusWithFee > 0 ? 'success' : 'text', fontWeight: 700, alignItems: 'center' }}>\n {tier.bonusWithFee > 0 ? tier.bonusWithFee.toFixed(2) : '0'}%\n {tier.points !== '0' && (\n <Flex\n sx={{\n borderRadius: 'normal',\n border: '1px solid var(--theme-ui-colors-success)',\n px: '4px',\n ml: '3px',\n color: 'success',\n }}\n >\n {`+${tier?.boost ?? 0}%`}\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n )\n })}\n {!hideTitle && (\n <Button\n variant=\"secondary\"\n sx={{ width: '100%', mt: '10px' }}\n onClick={() => window.open('https://www.ape.bond/true-yield?createPosition', '_blank')}\n >\n get tier\n </Button>\n )}\n </Flex>\n )\n}\n\nexport default BonusTable\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,45 +1,44 @@
1
- import { jsxs, Fragment, jsx } from 'theme-ui/jsx-runtime';
1
+ import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
2
  import Button from '../../../../components/uikit-sdk/Button/Button.js';
3
3
  import { ChainId } from '@ape.swap/apeswap-lists';
4
4
  import { variants } from '../../../../components/uikit-sdk/Button/types.js';
5
- import { useWalletModal } from '@solana/wallet-adapter-react-ui';
6
- import useSOLAccount from '../../../../hooks/accounts/useSOLAccount.js';
7
5
 
8
6
  const BANNER_INFO = {
7
+ // MONAD IS BROKEN, TODO fix it!
9
8
  [ChainId.MONAD]: {
10
9
  title: 'Monad Mainnet Bonds',
11
10
  subtitle: 'Launch Coming Soon.',
12
11
  buttons: [
13
12
  {
14
13
  label: 'LEARN MORE',
15
- href: 'https://x.com/ApeBond/status/1995538519536578880?s=20',
14
+ cta: 'https://x.com/ApeBond/status/1995538519536578880?s=20',
16
15
  variant: variants.SECONDARY,
17
16
  },
18
- { label: 'Launch Yours', href: 'https://forms.clickup.com/3080492/f/2y09c-6585/O175DYTK4PMR6P4CZA' },
17
+ { label: 'Launch Yours', cta: 'https://forms.clickup.com/3080492/f/2y09c-6585/O175DYTK4PMR6P4CZA' },
19
18
  ],
20
19
  background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner_jpkg38.png',
21
20
  backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner-mobile_y6xveu.png',
22
- logo: 'https://ape.bond/images/bills/monad.png',
23
21
  },
24
22
  [ChainId.SOL]: {
25
- title: 'Bonds are now Live on Solana',
26
- subtitle: 'Get tokens at a discount on Solana. Faster, cheaper, and fully on-chain.',
27
- buttons: [
28
- {
29
- label: 'LEARN MORE',
30
- href: 'https://apebond.click/sol-launch',
31
- variant: variants.SECONDARY,
32
- },
33
- ],
34
- background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751667949/background_ldg88q.png',
35
- backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751668240/backgroundMobile_lht5tu.png',
36
- logo: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751665836/solana_bonds_logo_1_jrbn4g.png',
23
+ background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1776440199/desktopBanner_fse6ls.png',
24
+ backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1776440198/mobileBanner_x9tii9.png',
25
+ cta: '?modal=rakurai',
37
26
  },
38
27
  };
39
28
  const ChainBanner = ({ chainId }) => {
40
- const { setVisible } = useWalletModal();
41
- const { publicKey } = useSOLAccount();
42
- const isConnectedToSol = !!publicKey;
29
+ const bannerCTA = BANNER_INFO[chainId]?.cta;
30
+ const handleClickOnBanner = () => {
31
+ if (!bannerCTA)
32
+ return;
33
+ // Next.js exposes the router singleton on window.next.router (Pages Router, dev + prod)
34
+ const nextRouter = typeof window !== 'undefined' && window.__NEXT_DATA__ && window.next?.router;
35
+ if (nextRouter) {
36
+ nextRouter.push(bannerCTA);
37
+ return;
38
+ }
39
+ // Fallback for non-Next.js environments
40
+ window.history.pushState({}, '', bannerCTA);
41
+ };
43
42
  return (jsxs("div", { className: "banner-container", sx: {
44
43
  backgroundImage: [
45
44
  `url(${BANNER_INFO[chainId]?.backgroundMobile})`,
@@ -48,21 +47,8 @@ const ChainBanner = ({ chainId }) => {
48
47
  `url(${BANNER_INFO[chainId]?.background})`,
49
48
  `url(${BANNER_INFO[chainId]?.background})`,
50
49
  ],
51
- }, children: [jsxs("div", { className: "banner-logos", children: [chainId === ChainId.MONAD_TESTNET && (jsxs(Fragment, { children: [jsx("img", { src: "https://res.cloudinary.com/dswmrqgwy/image/upload/v1743089809/logos/apebond-logo_vzt4dl.png", alt: "apebond-white-logo", style: { width: '120px' } }), jsx("img", { src: "https://res.cloudinary.com/dswmrqgwy/image/upload/v1743089809/logos/x-icono_va7sdu.png", alt: "x-white-logo" })] })), jsx("img", { src: `${BANNER_INFO[chainId]?.logo}`, alt: "partner-logo", height: 19 })] }), jsx("div", { className: "banner-title", children: BANNER_INFO[chainId]?.title }), jsx("div", { className: "banner-subtitle", children: BANNER_INFO[chainId]?.subtitle }), jsxs("div", { className: "banner-actions", children: [BANNER_INFO[chainId]?.buttons.map((button, index) => (jsx(Button, { className: "action-button", onClick: () => window.open(button.href, '_blank'), variant: button.variant || variants.PRIMARY, children: button.label }, `banner-button-${index}`))), chainId === ChainId.SOL && (jsx(Button, { className: "action-button", sx: {
52
- background: 'linear-gradient(93deg, #20EEA9 -19%, #9945FF 97.7%)',
53
- border: 'none',
54
- '&:hover': {
55
- '&:not([disabled])': {
56
- background: 'linear-gradient(93deg, #20EEA9 -19%, #9945FF 97.7%)',
57
- },
58
- },
59
- }, onClick: () => {
60
- if (isConnectedToSol) {
61
- window.open('https://jumper.exchange/es?fromChain=1151111081099710&fromToken=11111111111111111111111111111111&toChain=1151111081099710&toToken=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', '_blank', 'noopener noreferrer');
62
- }
63
- else
64
- setVisible(true);
65
- }, children: "Get Started" }))] })] }, `banner-container-${chainId}`));
50
+ cursor: bannerCTA ? 'pointer' : 'unset',
51
+ }, onClick: handleClickOnBanner, children: [jsx("div", { className: "banner-title", children: BANNER_INFO[chainId]?.title }), jsx("div", { className: "banner-subtitle", children: BANNER_INFO[chainId]?.subtitle }), jsx("div", { className: "banner-actions", children: BANNER_INFO[chainId]?.buttons?.map((button, index) => (jsx(Button, { className: "action-button", onClick: () => window.open(button.cta, '_blank'), variant: button.variant || variants.PRIMARY, children: button.label }, `banner-button-${index}`))) })] }, `banner-container-${chainId}`));
66
52
  };
67
53
 
68
54
  export { ChainBanner as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ChainBanner.js","sources":["../../../../../src/views/Bonds/components/ChainBanner/ChainBanner.tsx"],"sourcesContent":["import React from 'react'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { variants } from '../../../../components/uikit-sdk/Button/types'\nimport { useWalletModal } from '@solana/wallet-adapter-react-ui'\nimport useSOLAccount from '../../../../hooks/accounts/useSOLAccount'\n\ninterface ButtonInfo {\n label: string\n href: string\n variant?: variants\n background?: string\n}\n\ninterface BannerInfo {\n title: string\n subtitle: string\n buttons: ButtonInfo[]\n background: string\n backgroundMobile: string\n logo: string\n}\n\nconst BANNER_INFO: Partial<Record<ChainId, BannerInfo>> = {\n [ChainId.MONAD]: {\n title: 'Monad Mainnet Bonds',\n subtitle: 'Launch Coming Soon.',\n buttons: [\n {\n label: 'LEARN MORE',\n href: 'https://x.com/ApeBond/status/1995538519536578880?s=20',\n variant: variants.SECONDARY,\n },\n { label: 'Launch Yours', href: 'https://forms.clickup.com/3080492/f/2y09c-6585/O175DYTK4PMR6P4CZA' },\n ],\n background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner_jpkg38.png',\n backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner-mobile_y6xveu.png',\n logo: 'https://ape.bond/images/bills/monad.png',\n },\n [ChainId.SOL]: {\n title: 'Bonds are now Live on Solana',\n subtitle: 'Get tokens at a discount on Solana. Faster, cheaper, and fully on-chain.',\n buttons: [\n {\n label: 'LEARN MORE',\n href: 'https://apebond.click/sol-launch',\n variant: variants.SECONDARY,\n },\n ],\n background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751667949/background_ldg88q.png',\n backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751668240/backgroundMobile_lht5tu.png',\n logo: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1751665836/solana_bonds_logo_1_jrbn4g.png',\n },\n}\n\nconst ChainBanner = ({ chainId }: { chainId: ChainId }) => {\n const { setVisible } = useWalletModal()\n const { publicKey } = useSOLAccount()\n const isConnectedToSol = !!publicKey\n return (\n <div\n key={`banner-container-${chainId}`}\n className=\"banner-container\"\n sx={{\n backgroundImage: [\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.background})`,\n `url(${BANNER_INFO[chainId]?.background})`,\n ],\n }}\n >\n <div className=\"banner-logos\">\n {chainId === ChainId.MONAD_TESTNET && (\n <>\n <img\n src=\"https://res.cloudinary.com/dswmrqgwy/image/upload/v1743089809/logos/apebond-logo_vzt4dl.png\"\n alt=\"apebond-white-logo\"\n style={{ width: '120px' }}\n />\n <img\n src=\"https://res.cloudinary.com/dswmrqgwy/image/upload/v1743089809/logos/x-icono_va7sdu.png\"\n alt=\"x-white-logo\"\n />\n </>\n )}\n\n <img src={`${BANNER_INFO[chainId]?.logo}`} alt=\"partner-logo\" height={19} />\n </div>\n <div className=\"banner-title\">{BANNER_INFO[chainId]?.title}</div>\n <div className=\"banner-subtitle\">{BANNER_INFO[chainId]?.subtitle}</div>\n <div className=\"banner-actions\">\n {BANNER_INFO[chainId]?.buttons.map((button, index) => (\n <Button\n key={`banner-button-${index}`}\n className=\"action-button\"\n onClick={() => window.open(button.href, '_blank')}\n variant={button.variant || variants.PRIMARY}\n >\n {button.label}\n </Button>\n ))}\n {chainId === ChainId.SOL && (\n <Button\n className=\"action-button\"\n sx={{\n background: 'linear-gradient(93deg, #20EEA9 -19%, #9945FF 97.7%)',\n border: 'none',\n '&:hover': {\n '&:not([disabled])': {\n background: 'linear-gradient(93deg, #20EEA9 -19%, #9945FF 97.7%)',\n },\n },\n }}\n onClick={() => {\n if (isConnectedToSol) {\n window.open(\n 'https://jumper.exchange/es?fromChain=1151111081099710&fromToken=11111111111111111111111111111111&toChain=1151111081099710&toToken=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n '_blank',\n 'noopener noreferrer',\n )\n } else setVisible(true)\n }}\n >\n Get Started\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nexport default ChainBanner\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChainBanner.js","sources":["../../../../../src/views/Bonds/components/ChainBanner/ChainBanner.tsx"],"sourcesContent":["import React from 'react'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { variants } from '../../../../components/uikit-sdk/Button/types'\n\ninterface ButtonInfo {\n label: string\n cta?: string\n variant?: variants\n background?: string\n}\n\ninterface BannerInfo {\n title?: string\n subtitle?: string\n buttons?: ButtonInfo[]\n background: string\n backgroundMobile: string\n cta?: string\n}\n\nconst BANNER_INFO: Partial<Record<ChainId, BannerInfo>> = {\n // MONAD IS BROKEN, TODO fix it!\n [ChainId.MONAD]: {\n title: 'Monad Mainnet Bonds',\n subtitle: 'Launch Coming Soon.',\n buttons: [\n {\n label: 'LEARN MORE',\n cta: 'https://x.com/ApeBond/status/1995538519536578880?s=20',\n variant: variants.SECONDARY,\n },\n { label: 'Launch Yours', cta: 'https://forms.clickup.com/3080492/f/2y09c-6585/O175DYTK4PMR6P4CZA' },\n ],\n background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner_jpkg38.png',\n backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1/banner-mobile_y6xveu.png',\n },\n [ChainId.SOL]: {\n background: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1776440199/desktopBanner_fse6ls.png',\n backgroundMobile: 'https://res.cloudinary.com/dswmrqgwy/image/upload/v1776440198/mobileBanner_x9tii9.png',\n cta: '?modal=rakurai',\n },\n}\n\nconst ChainBanner = ({ chainId }: { chainId: ChainId }) => {\n const bannerCTA = BANNER_INFO[chainId]?.cta\n\n const handleClickOnBanner = () => {\n if (!bannerCTA) return\n // Next.js exposes the router singleton on window.next.router (Pages Router, dev + prod)\n const nextRouter = typeof window !== 'undefined' && (window as any).__NEXT_DATA__ && (window as any).next?.router\n if (nextRouter) {\n nextRouter.push(bannerCTA)\n return\n }\n // Fallback for non-Next.js environments\n window.history.pushState({}, '', bannerCTA)\n }\n\n return (\n <div\n key={`banner-container-${chainId}`}\n className=\"banner-container\"\n sx={{\n backgroundImage: [\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.backgroundMobile})`,\n `url(${BANNER_INFO[chainId]?.background})`,\n `url(${BANNER_INFO[chainId]?.background})`,\n ],\n cursor: bannerCTA ? 'pointer' : 'unset',\n }}\n onClick={handleClickOnBanner}\n >\n <div className=\"banner-title\">{BANNER_INFO[chainId]?.title}</div>\n <div className=\"banner-subtitle\">{BANNER_INFO[chainId]?.subtitle}</div>\n <div className=\"banner-actions\">\n {BANNER_INFO[chainId]?.buttons?.map((button, index) => (\n <Button\n key={`banner-button-${index}`}\n className=\"action-button\"\n onClick={() => window.open(button.cta, '_blank')}\n variant={button.variant || variants.PRIMARY}\n >\n {button.label}\n </Button>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ChainBanner\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -60,13 +60,14 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
60
60
  const { sendTransactionAsync } = useSendTransaction();
61
61
  const { data: bonds, refetch: refetchBondState } = useBondsData();
62
62
  const sendReferenceId = useSendReferenceId();
63
- const { data: userPoints } = useTierPoints();
63
+ const { data: tierPointsState } = useTierPoints();
64
+ const { promotionalPoints } = tierPointsState || {};
64
65
  const bondData = bonds?.find((bond) => bond?.contractAddress?.[bond.chainId]?.toLowerCase() === bondAddress?.toLowerCase());
65
66
  // Tier Gating
66
- const userTier = getUserTier(userPoints ?? '0');
67
+ const userTier = getUserTier(promotionalPoints ?? '0');
67
68
  const minTier = bondData?.minTier !== undefined ? bondData.minTier : null;
68
69
  const isUserRestricted = minTier !== null && (userTier === null || userTier < minTier);
69
- const trueBondPriceData = findHighestTrueBondPrice(userPoints, bondData?.trueBondPrices);
70
+ const trueBondPriceData = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices);
70
71
  const trueBondPrice = trueBondPriceData?.trueBondPrice;
71
72
  const { data: tierProofSig } = useTierProofSignature(bondAddress, bondChain, isUserRestricted);
72
73
  // State
@@ -109,10 +110,10 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
109
110
  const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} =
110
111
  $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`;
111
112
  // Validations
112
- const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, userPoints));
113
+ const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, promotionalPoints));
113
114
  const exceedsSafeMaxBuy = getMaxBuy(bondData, false)
114
115
  .times(isZapSupported ? 0.995 : 0.9995)
115
- .lte(getPayoutAmount(bondData, depositAmount, userPoints));
116
+ .lte(getPayoutAmount(bondData, depositAmount, promotionalPoints));
116
117
  const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue);
117
118
  const isPrincipalTokenLP = bondData?.lpToken?.symbol?.includes('-');
118
119
  // Loading State
@@ -129,10 +130,10 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
129
130
  const balance = new BigNumber(inputCurrencyBalance ?? '0');
130
131
  const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds);
131
132
  if (!isZapSupported) {
132
- const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), userPoints);
133
+ const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), promotionalPoints);
133
134
  const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18;
134
135
  if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {
135
- const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), userPoints);
136
+ const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints);
136
137
  setInputValue(principalForMaxBuy.toFixed(principalDecimals));
137
138
  }
138
139
  else {
@@ -140,7 +141,7 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
140
141
  }
141
142
  }
142
143
  else {
143
- const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), userPoints);
144
+ const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), promotionalPoints);
144
145
  const principalForMaxBuyUSD = principalForMaxBuy.times(bondData?.principalTokenPrice ?? 0);
145
146
  const maxBuyAmountInSelectedToken = principalForMaxBuyUSD.div(inputTokenPrice ?? 0);
146
147
  const decimals = enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId] ?? 18);
@@ -154,7 +155,7 @@ const BuyComponent = ({ onDismiss, bondAddress, bondChain, handlePurchasedBond,
154
155
  }, [
155
156
  bondData,
156
157
  isZapSupported,
157
- userPoints,
158
+ promotionalPoints,
158
159
  SDKConfig.showLowValueBonds,
159
160
  inputTokenPrice,
160
161
  enrichedTokenData?.token,