@ape.swap/bonds-sdk 5.1.36 → 5.1.38

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 (27) hide show
  1. package/dist/config/constants/variables.d.ts +1 -1
  2. package/dist/config/constants/variables.js +1 -1
  3. package/dist/config/constants/variables.js.map +1 -1
  4. package/dist/state/tiers/useTierPoints.js +1 -0
  5. package/dist/state/tiers/useTierPoints.js.map +1 -1
  6. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +1 -2
  7. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
  8. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +22 -36
  9. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
  10. package/dist/views/BuyBond/components/Estimations.js +13 -2
  11. package/dist/views/BuyBond/components/Estimations.js.map +1 -1
  12. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +2 -2
  13. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
  14. package/dist/views/BuyBond/utils.js +12 -13
  15. package/dist/views/BuyBond/utils.js.map +1 -1
  16. package/package.json +2 -3
  17. package/dist/components/TabNavigation/index.js +0 -33
  18. package/dist/components/TabNavigation/index.js.map +0 -1
  19. package/dist/views/RakuraiComponent/RakuraiComponent.d.ts +0 -3
  20. package/dist/views/RakuraiComponent/RakuraiComponent.js +0 -229
  21. package/dist/views/RakuraiComponent/RakuraiComponent.js.map +0 -1
  22. package/dist/views/RakuraiComponent/useRakuraiStats.d.ts +0 -7
  23. package/dist/views/RakuraiComponent/useRakuraiStats.js +0 -42
  24. package/dist/views/RakuraiComponent/useRakuraiStats.js.map +0 -1
  25. package/dist/views/RakuraiComponent/useSolanaStakeBalances.d.ts +0 -8
  26. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js +0 -47
  27. package/dist/views/RakuraiComponent/useSolanaStakeBalances.js.map +0 -1
@@ -6,4 +6,4 @@ export type ZapSupportedChainId = (typeof zapSupported)[number];
6
6
  export declare const STRAPI_URL = "https://strapi-api.ape.bond";
7
7
  export declare const SOUL_ZAP_API = "https://zap-api.ape.bond/zap";
8
8
  export declare const APEBOND = "https://ape.bond";
9
- export declare const tierOptimizerUIEnabled = false;
9
+ export declare const tierOptimizerUIEnabled = true;
@@ -36,7 +36,7 @@ const zapSupported = [
36
36
  const STRAPI_URL = `https://strapi-api.ape.bond`;
37
37
  const SOUL_ZAP_API = `https://zap-api.ape.bond/zap`;
38
38
  const APEBOND = `https://ape.bond`;
39
- const tierOptimizerUIEnabled = false;
39
+ const tierOptimizerUIEnabled = true;
40
40
 
41
41
  export { APEBOND, LifiSupported, SOUL_ZAP_API, STRAPI_URL, tierOptimizerUIEnabled, zapSupported };
42
42
  //# sourceMappingURL=variables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variables.js","sources":["../../../src/config/constants/variables.ts"],"sourcesContent":["import { ChainId } from '@ape.swap/apeswap-lists'\n\nexport const LifiSupported = [\n ChainId.BASE,\n ChainId.MAINNET,\n ChainId.MATIC,\n ChainId.BSC,\n ChainId.ARBITRUM,\n ChainId.LINEA,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.SONIC,\n ChainId.BERACHAIN,\n ChainId.UNICHAIN,\n ChainId.MONAD,\n ChainId.KATANA,\n ChainId.SOL,\n ChainId.HYPEREVM,\n]\n\nexport const zapSupported = [\n ChainId.MAINNET,\n ChainId.MATIC,\n ChainId.BSC,\n ChainId.ARBITRUM,\n ChainId.LINEA,\n ChainId.BASE,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.SONIC,\n ChainId.BERACHAIN,\n // ChainId.UNICHAIN, not working atm\n ChainId.KATANA,\n ChainId.SOL,\n ChainId.HYPEREVM,\n] as const\n\n/** Union of all chain IDs where zap is supported. Derived from `zapSupported`. */\nexport type ZapSupportedChainId = (typeof zapSupported)[number]\n\nexport const STRAPI_URL = `https://strapi-api.ape.bond`\nexport const SOUL_ZAP_API = `https://zap-api.ape.bond/zap`\nexport const APEBOND = `https://ape.bond`\n\nexport const tierOptimizerUIEnabled = false\n"],"names":[],"mappings":";;AAEO,MAAM,aAAa,GAAG;AAC3B,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,OAAO;AACf,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,SAAS;AACjB,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,MAAM;AACd,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;;AAGX,MAAM,YAAY,GAAG;AAC1B,IAAA,OAAO,CAAC,OAAO;AACf,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,SAAS;;AAEjB,IAAA,OAAO,CAAC,MAAM;AACd,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;;AAMX,MAAM,UAAU,GAAG;AACnB,MAAM,YAAY,GAAG;AACrB,MAAM,OAAO,GAAG;AAEhB,MAAM,sBAAsB,GAAG;;;;"}
1
+ {"version":3,"file":"variables.js","sources":["../../../src/config/constants/variables.ts"],"sourcesContent":["import { ChainId } from '@ape.swap/apeswap-lists'\n\nexport const LifiSupported = [\n ChainId.BASE,\n ChainId.MAINNET,\n ChainId.MATIC,\n ChainId.BSC,\n ChainId.ARBITRUM,\n ChainId.LINEA,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.SONIC,\n ChainId.BERACHAIN,\n ChainId.UNICHAIN,\n ChainId.MONAD,\n ChainId.KATANA,\n ChainId.SOL,\n ChainId.HYPEREVM,\n]\n\nexport const zapSupported = [\n ChainId.MAINNET,\n ChainId.MATIC,\n ChainId.BSC,\n ChainId.ARBITRUM,\n ChainId.LINEA,\n ChainId.BASE,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.SONIC,\n ChainId.BERACHAIN,\n // ChainId.UNICHAIN, not working atm\n ChainId.KATANA,\n ChainId.SOL,\n ChainId.HYPEREVM,\n] as const\n\n/** Union of all chain IDs where zap is supported. Derived from `zapSupported`. */\nexport type ZapSupportedChainId = (typeof zapSupported)[number]\n\nexport const STRAPI_URL = `https://strapi-api.ape.bond`\nexport const SOUL_ZAP_API = `https://zap-api.ape.bond/zap`\nexport const APEBOND = `https://ape.bond`\n\nexport const tierOptimizerUIEnabled = true\n"],"names":[],"mappings":";;AAEO,MAAM,aAAa,GAAG;AAC3B,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,OAAO;AACf,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,SAAS;AACjB,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,MAAM;AACd,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;;AAGX,MAAM,YAAY,GAAG;AAC1B,IAAA,OAAO,CAAC,OAAO;AACf,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;AAChB,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,IAAI;AACZ,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,KAAK;AACb,IAAA,OAAO,CAAC,SAAS;;AAEjB,IAAA,OAAO,CAAC,MAAM;AACd,IAAA,OAAO,CAAC,GAAG;AACX,IAAA,OAAO,CAAC,QAAQ;;AAMX,MAAM,UAAU,GAAG;AACnB,MAAM,YAAY,GAAG;AACrB,MAAM,OAAO,GAAG;AAEhB,MAAM,sBAAsB,GAAG;;;;"}
@@ -140,6 +140,7 @@ function useTierPoints() {
140
140
  queryKey: [QUERY_KEYS.TIERS, account],
141
141
  queryFn: () => fetchUserPoints(account, SDKConfig.useTiers, apiUrl),
142
142
  refetchInterval: 120000, // i.e. 2 mins
143
+ staleTime: 120000, // i.e. 2 mins
143
144
  refetchOnWindowFocus: false,
144
145
  });
145
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTierPoints.js","sources":["../../../src/state/tiers/useTierPoints.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport lensContractABI from '../../config/abi/lensContract.json'\nimport { LENS_CONTRACT } from '../../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport multicall from '../../utils/multicall'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport BigNumber from 'bignumber.js'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { useSDKConfig } from '../useSDKConfig'\nimport { reportError } from '../../utils/reportError'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport enum NewTiers {\n Silver = 1,\n Gold = 2,\n Diamond = 3,\n Legend = 4,\n Mythical = 5,\n}\n\nexport enum Promotions {\n WelcomeBonus = 'welcome bonus',\n}\n\nexport const TIERS_COLORS = {\n [NewTiers.Silver]: '#7c7c7c',\n [NewTiers.Gold]: '#cc9d60',\n [NewTiers.Diamond]: '#427b9e',\n [NewTiers.Legend]: '#8984E8',\n [NewTiers.Mythical]: '#891F3F',\n}\n\nexport const TIERS_BG = {\n [NewTiers.Silver]: 'linear-gradient(90deg, #3A3A3C 0%, #2C2C2F 100%)',\n [NewTiers.Gold]: 'linear-gradient(90deg, #BC933F 0%, #56431D 100%)',\n [NewTiers.Diamond]: 'linear-gradient(90deg, #1174A2 0%, #062B3C 100%)',\n [NewTiers.Legend]: 'linear-gradient(90deg, #6B43D7 0%, #382371 100%)',\n [NewTiers.Mythical]: 'linear-gradient(90deg, #DFA9D2 -13.84%, #790524 10.35%, #DFA9D2 38.05%, #790524 76.31%)',\n}\n\nexport const TIERS_WEIGHT = {\n [NewTiers.Silver]: '10000000000000000000000',\n [NewTiers.Gold]: '50000000000000000000000',\n [NewTiers.Diamond]: '200000000000000000000000',\n [NewTiers.Legend]: '500000000000000000000000',\n [NewTiers.Mythical]: '1000000000000000000000000',\n}\n\nexport const TIER_MAPPING = {\n '10000000000000000000000': NewTiers.Silver,\n '50000000000000000000000': NewTiers.Gold,\n '200000000000000000000000': NewTiers.Diamond,\n '500000000000000000000000': NewTiers.Legend,\n '1000000000000000000000000': NewTiers.Mythical,\n}\n\nexport const TIERS_NAMES = {\n null: 'No Tier',\n [NewTiers.Silver]: 'Silver',\n [NewTiers.Gold]: 'Gold',\n [NewTiers.Diamond]: 'Diamond',\n [NewTiers.Legend]: 'Legend',\n [NewTiers.Mythical]: 'Mythical',\n}\n\nexport const getUserTier = (weight?: string | null): LaunchBondTiers | null => {\n if (!weight) return null\n const weightBG = new BigNumber(weight)\n const silver = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Silver])\n const gold = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Gold])\n const diamond = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Diamond])\n const legend = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Legend])\n const mythical = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Mythical])\n\n if (weightBG.gte(mythical)) {\n return LaunchBondTiers.Mythical\n } else if (weightBG.gte(legend)) {\n return LaunchBondTiers.Legend\n } else if (weightBG.gte(diamond)) {\n return LaunchBondTiers.Diamond\n } else if (weightBG.gte(gold)) {\n return LaunchBondTiers.Gold\n } else if (weightBG.gte(silver)) {\n return LaunchBondTiers.Silver\n }\n return null\n}\n\nexport const fetchUserPoints = async (\n account?: string,\n useTiers?: boolean,\n apiUrl?: string,\n): Promise<{\n onChainPoints: string\n promotionalPoints: string\n usingPromotion: boolean\n promotion: Promotions | null\n} | null> => {\n const lensContractAddress = LENS_CONTRACT[ChainId.BSC]\n if (account && useTiers) {\n try {\n const res = await multicall(ChainId.BSC, lensContractABI, [\n {\n address: lensContractAddress,\n name: 'getEscrowWeight',\n params: [account],\n },\n ])\n const onChainPoints = new BigNumber(res[0][0].toString()).times(2)\n\n const promotionsData = await fetch(`${apiUrl}/tier-promotion?user=${account}`)\n .then((res) => res.json())\n .then((data) => {\n console.log(data)\n return data\n })\n .catch((err) => {\n console.error('Error fetching promotions:', err)\n return {}\n })\n const promotionalTier: LaunchBondTiers | null = promotionsData?.bestPromotion?.tier\n\n const bestPromotionPoints = new BigNumber(promotionalTier ? TIERS_WEIGHT[promotionalTier] : 0)\n\n return {\n onChainPoints: onChainPoints.toString(),\n promotionalPoints: bestPromotionPoints.gt(onChainPoints)\n ? bestPromotionPoints.toString()\n : onChainPoints.toString(),\n usingPromotion: bestPromotionPoints.gt(onChainPoints),\n promotion:\n bestPromotionPoints.gt(onChainPoints) && promotionsData?.bestPromotion?.promotion === Promotions.WelcomeBonus\n ? Promotions.WelcomeBonus\n : null,\n }\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchUserPoints', e },\n account,\n })\n return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n }\n } else return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n}\n\nexport default function useTierPoints() {\n const { address: account } = useEVMAccount()\n const SDKConfig = useSDKConfig()\n const apiUrl = SDKConfig?.urls?.apiV2\n return useQuery({\n queryKey: [QUERY_KEYS.TIERS, account],\n queryFn: () => fetchUserPoints(account, SDKConfig.useTiers, apiUrl),\n refetchInterval: 120000, // i.e. 2 mins\n refetchOnWindowFocus: false,\n })\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTierPoints.js","sources":["../../../src/state/tiers/useTierPoints.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport lensContractABI from '../../config/abi/lensContract.json'\nimport { LENS_CONTRACT } from '../../config/constants/addresses'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport multicall from '../../utils/multicall'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport BigNumber from 'bignumber.js'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport { useSDKConfig } from '../useSDKConfig'\nimport { reportError } from '../../utils/reportError'\nimport useEVMAccount from '../../hooks/accounts/useEVMAccount'\n\nexport enum NewTiers {\n Silver = 1,\n Gold = 2,\n Diamond = 3,\n Legend = 4,\n Mythical = 5,\n}\n\nexport enum Promotions {\n WelcomeBonus = 'welcome bonus',\n}\n\nexport const TIERS_COLORS = {\n [NewTiers.Silver]: '#7c7c7c',\n [NewTiers.Gold]: '#cc9d60',\n [NewTiers.Diamond]: '#427b9e',\n [NewTiers.Legend]: '#8984E8',\n [NewTiers.Mythical]: '#891F3F',\n}\n\nexport const TIERS_BG = {\n [NewTiers.Silver]: 'linear-gradient(90deg, #3A3A3C 0%, #2C2C2F 100%)',\n [NewTiers.Gold]: 'linear-gradient(90deg, #BC933F 0%, #56431D 100%)',\n [NewTiers.Diamond]: 'linear-gradient(90deg, #1174A2 0%, #062B3C 100%)',\n [NewTiers.Legend]: 'linear-gradient(90deg, #6B43D7 0%, #382371 100%)',\n [NewTiers.Mythical]: 'linear-gradient(90deg, #DFA9D2 -13.84%, #790524 10.35%, #DFA9D2 38.05%, #790524 76.31%)',\n}\n\nexport const TIERS_WEIGHT = {\n [NewTiers.Silver]: '10000000000000000000000',\n [NewTiers.Gold]: '50000000000000000000000',\n [NewTiers.Diamond]: '200000000000000000000000',\n [NewTiers.Legend]: '500000000000000000000000',\n [NewTiers.Mythical]: '1000000000000000000000000',\n}\n\nexport const TIER_MAPPING = {\n '10000000000000000000000': NewTiers.Silver,\n '50000000000000000000000': NewTiers.Gold,\n '200000000000000000000000': NewTiers.Diamond,\n '500000000000000000000000': NewTiers.Legend,\n '1000000000000000000000000': NewTiers.Mythical,\n}\n\nexport const TIERS_NAMES = {\n null: 'No Tier',\n [NewTiers.Silver]: 'Silver',\n [NewTiers.Gold]: 'Gold',\n [NewTiers.Diamond]: 'Diamond',\n [NewTiers.Legend]: 'Legend',\n [NewTiers.Mythical]: 'Mythical',\n}\n\nexport const getUserTier = (weight?: string | null): LaunchBondTiers | null => {\n if (!weight) return null\n const weightBG = new BigNumber(weight)\n const silver = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Silver])\n const gold = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Gold])\n const diamond = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Diamond])\n const legend = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Legend])\n const mythical = new BigNumber(TIERS_WEIGHT[LaunchBondTiers.Mythical])\n\n if (weightBG.gte(mythical)) {\n return LaunchBondTiers.Mythical\n } else if (weightBG.gte(legend)) {\n return LaunchBondTiers.Legend\n } else if (weightBG.gte(diamond)) {\n return LaunchBondTiers.Diamond\n } else if (weightBG.gte(gold)) {\n return LaunchBondTiers.Gold\n } else if (weightBG.gte(silver)) {\n return LaunchBondTiers.Silver\n }\n return null\n}\n\nexport const fetchUserPoints = async (\n account?: string,\n useTiers?: boolean,\n apiUrl?: string,\n): Promise<{\n onChainPoints: string\n promotionalPoints: string\n usingPromotion: boolean\n promotion: Promotions | null\n} | null> => {\n const lensContractAddress = LENS_CONTRACT[ChainId.BSC]\n if (account && useTiers) {\n try {\n const res = await multicall(ChainId.BSC, lensContractABI, [\n {\n address: lensContractAddress,\n name: 'getEscrowWeight',\n params: [account],\n },\n ])\n const onChainPoints = new BigNumber(res[0][0].toString()).times(2)\n\n const promotionsData = await fetch(`${apiUrl}/tier-promotion?user=${account}`)\n .then((res) => res.json())\n .then((data) => {\n console.log(data)\n return data\n })\n .catch((err) => {\n console.error('Error fetching promotions:', err)\n return {}\n })\n const promotionalTier: LaunchBondTiers | null = promotionsData?.bestPromotion?.tier\n\n const bestPromotionPoints = new BigNumber(promotionalTier ? TIERS_WEIGHT[promotionalTier] : 0)\n\n return {\n onChainPoints: onChainPoints.toString(),\n promotionalPoints: bestPromotionPoints.gt(onChainPoints)\n ? bestPromotionPoints.toString()\n : onChainPoints.toString(),\n usingPromotion: bestPromotionPoints.gt(onChainPoints),\n promotion:\n bestPromotionPoints.gt(onChainPoints) && promotionsData?.bestPromotion?.promotion === Promotions.WelcomeBonus\n ? Promotions.WelcomeBonus\n : null,\n }\n } catch (e) {\n console.error(e)\n reportError({\n apiUrl,\n error: e,\n extraInfo: { type: 'fetchUserPoints', e },\n account,\n })\n return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n }\n } else return { onChainPoints: '0', promotionalPoints: '0', usingPromotion: false, promotion: null }\n}\n\nexport default function useTierPoints() {\n const { address: account } = useEVMAccount()\n const SDKConfig = useSDKConfig()\n const apiUrl = SDKConfig?.urls?.apiV2\n return useQuery({\n queryKey: [QUERY_KEYS.TIERS, account],\n queryFn: () => fetchUserPoints(account, SDKConfig.useTiers, apiUrl),\n refetchInterval: 120000, // i.e. 2 mins\n staleTime: 120000, // i.e. 2 mins\n refetchOnWindowFocus: false,\n })\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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"}
@@ -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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"}
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from 'theme-ui/jsx-runtime';
2
2
  import { getRawBonus, getPayoutAmount, getBonusColor } from '../../../utils/displayHelpers.js';
3
3
  import { TooltipText } from '../../../config/constants/tooltips.js';
4
4
  import { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers.js';
5
- import useTierPoints, { getUserTier, TIERS_NAMES } from '../../../state/tiers/useTierPoints.js';
5
+ import useTierPoints, { getUserTier, TIERS_NAMES, TIERS_COLORS, TIERS_BG } from '../../../state/tiers/useTierPoints.js';
6
6
  import { useSDKConfig } from '../../../state/useSDKConfig.js';
7
7
  import { formatNumberSI } from '../../../utils/formatNumber.js';
8
8
  import { BillVersion } from '@ape.swap/apeswap-lists';
@@ -69,7 +69,18 @@ const Estimations = ({ depositAmount, inputValue, inputTokenPrice, bondData, you
69
69
  'translate(-8%, 0%)',
70
70
  'translate(-8%, 0%)',
71
71
  'translate(-7%, 0%)',
72
- ], children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), isZap && fetchingZapQuote ? (jsx(Dots, {})) : isZap && zapError ? ('-') : (jsx(Flex, { className: "row-container get-val", children: jsxs(Flex, { sx: { alignItems: 'center', gap: '5px' }, children: [highestProfitableTier || optimizationData?.tierBoostPoints ? (jsxs(Fragment, { children: [jsx(TokenImage, { symbol: 'veABOND', size: 15 }), formatNumberSI(optimizationData?.tierBoostPoints, 2, true), jsx(Flex, { children: "points" })] })) : ('-'), highestProfitableTier && tierOptimizerUIEnabled] }) }))] }))] })] }));
72
+ ], children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), isZap && fetchingZapQuote ? (jsx(Dots, {})) : isZap && zapError ? ('-') : (jsx(Flex, { className: "row-container get-val", children: jsxs(Flex, { sx: { alignItems: 'center', gap: '5px' }, children: [highestProfitableTier || optimizationData?.tierBoostPoints ? (jsxs(Fragment, { children: [jsx(TokenImage, { symbol: 'veABOND', size: 15 }), formatNumberSI(highestProfitableTier && tierOptimizerUIEnabled
73
+ ? highestProfitableTier.necessaryPointsToUpgrade
74
+ : optimizationData?.tierBoostPoints, 2, true), jsx(Flex, { children: "points" })] })) : ('-'), highestProfitableTier && tierOptimizerUIEnabled && (jsxs(Fragment, { children: ["+", jsxs(Flex, { sx: {
75
+ px: '3px',
76
+ height: '24px',
77
+ background: TIERS_BG[highestProfitableTier.tier],
78
+ border: `2px solid ${TIERS_COLORS[highestProfitableTier.tier]}`,
79
+ borderRadius: '5px',
80
+ fontWeight: 700,
81
+ alignItems: 'center',
82
+ minWidth: highestProfitableTier.tier > 2 && '118px',
83
+ }, children: [jsx("img", { src: `https://ape.bond/images/launch/${highestProfitableTier?.tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }), highestProfitableTier.tierName, " Tier"] })] }))] }) }))] }))] })] }));
73
84
  };
74
85
 
75
86
  export { Estimations as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Estimations.js","sources":["../../../../src/views/BuyBond/components/Estimations.tsx"],"sourcesContent":["import React from 'react'\nimport { getBonusColor, getPayoutAmount, getRawBonus } from '../../../utils/displayHelpers'\nimport { TooltipText } from '../../../config/constants/tooltips'\nimport { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers'\nimport { BondsData } from '../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n NewTiers,\n TIERS_BG,\n TIERS_COLORS,\n TIERS_NAMES,\n} from '../../../state/tiers/useTierPoints'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport { BillVersion } from '@ape.swap/apeswap-lists'\nimport { getTimePeriods } from '../../../utils/getTimePeriods'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../components/uikit-sdk/Svg'\nimport LoadingDots from '../../../components/uikit-sdk/LoadingDots'\nimport { calculateOptimizationData } from '../utils'\nimport { useAbondPrice } from '../../../state/tokenPrices/useAbondPrice'\nimport TokenImage from '../../../components/uikit-sdk/TokenImage'\nimport { tierOptimizerUIEnabled } from '../../../config/constants/variables'\n\nconst Estimations = ({\n depositAmount,\n inputValue,\n inputTokenPrice,\n bondData,\n youSpendString,\n isZap,\n fetchingZapQuote,\n zapError,\n}: {\n depositAmount: string // actually deposited (after zap fees and estimations)\n inputValue?: string // input amount selected on the UI\n inputTokenPrice?: number\n bondData: BondsData\n youSpendString?: string\n isZap?: boolean\n fetchingZapQuote?: boolean\n zapError?: boolean\n}) => {\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints } = tierPointsState || {}\n const abondPrice = useAbondPrice()\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const SDKConfig = useSDKConfig()\n const userTier = getUserTier(promotionalPoints)\n const tierName = userTier ? TIERS_NAMES[userTier] : ''\n\n // Estimations\n const bonusString = getRawBonus(bondData, depositAmount, '0')\n // const fee = getFeeAmount(bondData, depositAmount, userPoints ?? '0')\n // const feeUSD = fee * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints)\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const boostAmount =\n parseFloat(getRawBonus(bondData, depositAmount, promotionalPoints ?? '0')) - parseFloat(noTierAmount)\n\n const optimizationData = calculateOptimizationData(\n inputValue ?? '',\n promotionalPoints!,\n bondData,\n inputTokenPrice,\n abondPrice,\n )\n const highestProfitableTier = optimizationData?.highestProfitableTier\n\n return (\n <Flex className=\"modaltable-container text-container\">\n <Flex className=\"text-container row\">\n <Flex className=\"row-container spend\">You Spend:</Flex>\n <Flex className=\"row-container spend-val\">{youSpendString}</Flex>\n </Flex>\n <Flex className=\"text-container row\">\n <Flex className=\"row-container premium\">\n {!!userTier && !!promotionalPoints && SDKConfig.useTiers && bondData.billVersion === BillVersion.V4\n ? 'Base Bonus:'\n : 'Bonus:'}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {(bondData?.feeInPayout || 0) > 0\n ? `This is the dollar value of the bonus tokens you’ll receive at current market price, already accounting for the protocol fee (${bondData.feeInPayout}%)`\n : 'This is the dollar value of the bonus tokens you’ll receive at current market price.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val ${getBonusColor(bonusString)}`}>\n $ {formatNumberSI(bonusString)}\n </Flex>\n )}\n </Flex>\n {trueBondPrice?.points !== '0' && userTier && promotionalPoints && SDKConfig.useTiers && (\n <Flex\n sx={{\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '2px',\n position: 'relative',\n justifyContent: 'space-between',\n }}\n >\n <Flex className=\"row-container premium\" sx={{ zIndex: 1 }}>\n <img\n src={`https://ape.bond/images/launch/${tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n Boost\n <Flex sx={{ color: 'success', mx: '3px', fontWeight: 700 }}>{`+${trueBondPrice?.boost ?? 0}%`}</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Boost}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val premium-positive`}>$ {formatNumberSI(boostAmount)}</Flex>\n )}\n </Flex>\n )}\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '4px',\n position: 'relative',\n flexDirection: 'column',\n gap: '3px',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n background: '#9960C5',\n opacity: 0.2,\n borderRadius: 'normal',\n }}\n />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\">\n You Get (over {getTimePeriods(bondData?.vestingTerm, true).days} days):\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n {formatNumberSI(estimatedOutputAmount, 4)} {bondData?.showcaseTokenName} = ${' '}\n {formatNumberSI(estimatedOutputUSD, 2)}\n </Flex>\n )}\n </Flex>\n {(bondData.tierBoostRate || highestProfitableTier) && (\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\">\n Ape Points Earned:\n <Flex sx={{ ml: '5px' }}>\n <TooltipBubble\n body={\n 'This purchase will earn you Ape Points. Ape Points provide a weekly yield in USDT and count toward your Ape Tier progression. Unlock higher Ape Tiers to get extra discounts on all Bonds.'\n }\n width={['200px', '200px', '200px', '250px']}\n placement=\"bottomLeft\"\n transformTip={[\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-7%, 0%)',\n ]}\n >\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </TooltipBubble>\n </Flex>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n <Flex sx={{ alignItems: 'center', gap: '5px' }}>\n {highestProfitableTier || optimizationData?.tierBoostPoints ? (\n <>\n <TokenImage symbol={'veABOND'} size={15} />\n {formatNumberSI(\n highestProfitableTier && tierOptimizerUIEnabled\n ? highestProfitableTier.necessaryPointsToUpgrade\n : optimizationData?.tierBoostPoints,\n 2,\n true,\n )}\n <Flex>points</Flex>\n </>\n ) : (\n '-'\n )}\n {highestProfitableTier && tierOptimizerUIEnabled && (\n <>\n +\n <Flex\n sx={{\n px: '3px',\n height: '24px',\n background: TIERS_BG[highestProfitableTier.tier as NewTiers],\n border: `2px solid ${TIERS_COLORS[highestProfitableTier.tier as NewTiers]}`,\n borderRadius: '5px',\n fontWeight: 700,\n alignItems: 'center',\n minWidth: highestProfitableTier.tier > 2 && '118px',\n }}\n >\n <img\n src={`https://ape.bond/images/launch/${highestProfitableTier?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n {highestProfitableTier.tierName} Tier\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n </Flex>\n )\n}\n\nexport default Estimations\n"],"names":["_jsxs","_jsx","LoadingDots","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Estimations.js","sources":["../../../../src/views/BuyBond/components/Estimations.tsx"],"sourcesContent":["import React from 'react'\nimport { getBonusColor, getPayoutAmount, getRawBonus } from '../../../utils/displayHelpers'\nimport { TooltipText } from '../../../config/constants/tooltips'\nimport { findHighestTrueBondPrice } from '../../../utils/bondPriceHelpers'\nimport { BondsData } from '../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n NewTiers,\n TIERS_BG,\n TIERS_COLORS,\n TIERS_NAMES,\n} from '../../../state/tiers/useTierPoints'\nimport { useSDKConfig } from '../../../state/useSDKConfig'\nimport { formatNumberSI } from '../../../utils/formatNumber'\nimport { BillVersion } from '@ape.swap/apeswap-lists'\nimport { getTimePeriods } from '../../../utils/getTimePeriods'\nimport Flex from '../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../components/uikit-sdk/Svg'\nimport LoadingDots from '../../../components/uikit-sdk/LoadingDots'\nimport { calculateOptimizationData } from '../utils'\nimport { useAbondPrice } from '../../../state/tokenPrices/useAbondPrice'\nimport TokenImage from '../../../components/uikit-sdk/TokenImage'\nimport { tierOptimizerUIEnabled } from '../../../config/constants/variables'\n\nconst Estimations = ({\n depositAmount,\n inputValue,\n inputTokenPrice,\n bondData,\n youSpendString,\n isZap,\n fetchingZapQuote,\n zapError,\n}: {\n depositAmount: string // actually deposited (after zap fees and estimations)\n inputValue?: string // input amount selected on the UI\n inputTokenPrice?: number\n bondData: BondsData\n youSpendString?: string\n isZap?: boolean\n fetchingZapQuote?: boolean\n zapError?: boolean\n}) => {\n const { data: tierPointsState } = useTierPoints()\n const { promotionalPoints } = tierPointsState || {}\n const abondPrice = useAbondPrice()\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bondData?.trueBondPrices)\n const SDKConfig = useSDKConfig()\n const userTier = getUserTier(promotionalPoints)\n const tierName = userTier ? TIERS_NAMES[userTier] : ''\n\n // Estimations\n const bonusString = getRawBonus(bondData, depositAmount, '0')\n // const fee = getFeeAmount(bondData, depositAmount, userPoints ?? '0')\n // const feeUSD = fee * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const estimatedOutputAmount = getPayoutAmount(bondData, depositAmount, promotionalPoints)\n const estimatedOutputUSD = estimatedOutputAmount * parseFloat(bondData?.payoutTokenPrice ?? '0')\n\n const noTierAmount = getRawBonus(bondData, depositAmount, '0')\n const boostAmount =\n parseFloat(getRawBonus(bondData, depositAmount, promotionalPoints ?? '0')) - parseFloat(noTierAmount)\n\n const optimizationData = calculateOptimizationData(\n inputValue ?? '',\n promotionalPoints!,\n bondData,\n inputTokenPrice,\n abondPrice,\n )\n const highestProfitableTier = optimizationData?.highestProfitableTier\n\n return (\n <Flex className=\"modaltable-container text-container\">\n <Flex className=\"text-container row\">\n <Flex className=\"row-container spend\">You Spend:</Flex>\n <Flex className=\"row-container spend-val\">{youSpendString}</Flex>\n </Flex>\n <Flex className=\"text-container row\">\n <Flex className=\"row-container premium\">\n {!!userTier && !!promotionalPoints && SDKConfig.useTiers && bondData.billVersion === BillVersion.V4\n ? 'Base Bonus:'\n : 'Bonus:'}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Flex>\n {(bondData?.feeInPayout || 0) > 0\n ? `This is the dollar value of the bonus tokens you’ll receive at current market price, already accounting for the protocol fee (${bondData.feeInPayout}%)`\n : 'This is the dollar value of the bonus tokens you’ll receive at current market price.'}\n </Flex>\n }\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val ${getBonusColor(bonusString)}`}>\n $ {formatNumberSI(bonusString)}\n </Flex>\n )}\n </Flex>\n {trueBondPrice?.points !== '0' && userTier && promotionalPoints && SDKConfig.useTiers && (\n <Flex\n sx={{\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '2px',\n position: 'relative',\n justifyContent: 'space-between',\n }}\n >\n <Flex className=\"row-container premium\" sx={{ zIndex: 1 }}>\n <img\n src={`https://ape.bond/images/launch/${tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n Boost\n <Flex sx={{ color: 'success', mx: '3px', fontWeight: 700 }}>{`+${trueBondPrice?.boost ?? 0}%`}</Flex>\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Boost}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, 0%)\"\n >\n <Flex className=\"row-container premium-icon\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className={`row-container premium-val premium-positive`}>$ {formatNumberSI(boostAmount)}</Flex>\n )}\n </Flex>\n )}\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n mx: '-8px',\n px: '8px',\n py: '4px',\n position: 'relative',\n flexDirection: 'column',\n gap: '3px',\n }}\n >\n <Flex\n sx={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n zIndex: 0,\n background: '#9960C5',\n opacity: 0.2,\n borderRadius: 'normal',\n }}\n />\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\">\n You Get (over {getTimePeriods(bondData?.vestingTerm, true).days} days):\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n {formatNumberSI(estimatedOutputAmount, 4)} {bondData?.showcaseTokenName} = ${' '}\n {formatNumberSI(estimatedOutputUSD, 2)}\n </Flex>\n )}\n </Flex>\n {(bondData.tierBoostRate || highestProfitableTier) && (\n <Flex sx={{ width: '100%', justifyContent: 'space-between', height: '21px' }}>\n <Flex className=\"row-container get\">\n Ape Points Earned:\n <Flex sx={{ ml: '5px' }}>\n <TooltipBubble\n body={\n 'This purchase will earn you Ape Points. Ape Points provide a weekly yield in USDT and count toward your Ape Tier progression. Unlock higher Ape Tiers to get extra discounts on all Bonds.'\n }\n width={['200px', '200px', '200px', '250px']}\n placement=\"bottomLeft\"\n transformTip={[\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-8%, 0%)',\n 'translate(-7%, 0%)',\n ]}\n >\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </TooltipBubble>\n </Flex>\n </Flex>\n {isZap && fetchingZapQuote ? (\n <LoadingDots />\n ) : isZap && zapError ? (\n '-'\n ) : (\n <Flex className=\"row-container get-val\">\n <Flex sx={{ alignItems: 'center', gap: '5px' }}>\n {highestProfitableTier || optimizationData?.tierBoostPoints ? (\n <>\n <TokenImage symbol={'veABOND'} size={15} />\n {formatNumberSI(\n highestProfitableTier && tierOptimizerUIEnabled\n ? highestProfitableTier.necessaryPointsToUpgrade\n : optimizationData?.tierBoostPoints,\n 2,\n true,\n )}\n <Flex>points</Flex>\n </>\n ) : (\n '-'\n )}\n {highestProfitableTier && tierOptimizerUIEnabled && (\n <>\n +\n <Flex\n sx={{\n px: '3px',\n height: '24px',\n background: TIERS_BG[highestProfitableTier.tier as NewTiers],\n border: `2px solid ${TIERS_COLORS[highestProfitableTier.tier as NewTiers]}`,\n borderRadius: '5px',\n fontWeight: 700,\n alignItems: 'center',\n minWidth: highestProfitableTier.tier > 2 && '118px',\n }}\n >\n <img\n src={`https://ape.bond/images/launch/${highestProfitableTier?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n {highestProfitableTier.tierName} Tier\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )}\n </Flex>\n )}\n </Flex>\n </Flex>\n )\n}\n\nexport default Estimations\n"],"names":["_jsxs","_jsx","LoadingDots","_Fragment"],"mappings":"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"}
@@ -92,7 +92,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
92
92
  ':hover': { textDecoration: 'underline' },
93
93
  }, onClick: (e) => {
94
94
  e.stopPropagation();
95
- handleSetNextTierAmount(nextTierData.minBreakevenWithFeeUSD * 1.01);
95
+ handleSetNextTierAmount(nextTierData.minBreakevenWithFeeUSD);
96
96
  }, children: 'Upgrade now >' })] }), jsx(Svg, { icon: 'caret', direction: isOpen ? 'up' : 'down', width: 10 })] }))), jsx(AnimatePresence, { children: isOpen && optimizationData && (jsx(motion.div, { initial: { height: 0 }, animate: { height: 'fit-content' }, transition: { opacity: { duration: 0.2 } }, exit: { height: 0 }, sx: { overflow: 'hidden', width: '100%', marginTop: '5px', cursor: 'pointer' }, children: optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data) => {
97
97
  return (jsxs(Flex, { sx: {
98
98
  border: '1px solid #9960C5',
@@ -106,7 +106,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
106
106
  alignItems: 'center',
107
107
  background: '#312341',
108
108
  justifyContent: 'space-between',
109
- }, onClick: () => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01), children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'bottom' }, children: jsx("img", { src: `https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }) }), "Doing a $", formatNumberSI(data?.minBreakevenWithFeeUSD), " bond purchase will grant you a", jsx("span", { sx: { color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }, children: data?.tierName }), "Tier.", jsx("span", { sx: {
109
+ }, onClick: () => handleSetNextTierAmount(data.minBreakevenWithFeeUSD), children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'bottom' }, children: jsx("img", { src: `https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }) }), "Doing a $", formatNumberSI(data?.minBreakevenWithFeeUSD), " bond purchase will grant you a", jsx("span", { sx: { color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }, children: data?.tierName }), "Tier.", jsx("span", { sx: {
110
110
  ml: '5px',
111
111
  mr: '15px',
112
112
  color: 'primaryButton',
@@ -1 +1 @@
1
- {"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n setInputValue(inputValueInSelectedToken.toFixed(inputTokenDecimals))\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier ? (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n ) : (\n (userTier ?? 0) < LaunchBondTiers.Mythical &&\n nextTierData && (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ alignItems: 'center', justifyContent: 'space-between', width: '100%' }}>\n <Flex sx={{ alignItems: 'center' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>\n {nextTierData?.tierName}\n </span>\n Tier.\n </Flex>\n <span\n sx={{\n mx: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(nextTierData.minBreakevenWithFeeUSD * 1.01)\n }}\n >\n {'Upgrade now >'}\n </span>\n </Flex>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '5px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n <Flex sx={{ mt: '15px' }}>Debbuging table</Flex>\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n '& > :nth-of-type(even)': {\n background: 'white3',\n },\n '& > :nth-of-type(odd)': {\n background: 'white4',\n },\n }}\n >\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>User Points</Flex>\n <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n {/*@ts-ignore*/}\n <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>\n <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>usd Abond necessary for next tier</Flex>\n <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>Fee percentage</Flex>\n <Flex>\n {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})\n </Flex>\n </Flex>\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>Points To Be Earned through tierBoostRate</Flex>\n <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>\n </Flex>\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n setInputValue(inputValueInSelectedToken.toFixed(inputTokenDecimals))\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier ? (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n ) : (\n (userTier ?? 0) < LaunchBondTiers.Mythical &&\n nextTierData && (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ alignItems: 'center', justifyContent: 'space-between', width: '100%' }}>\n <Flex sx={{ alignItems: 'center' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>\n {nextTierData?.tierName}\n </span>\n Tier.\n </Flex>\n <span\n sx={{\n mx: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {'Upgrade now >'}\n </span>\n </Flex>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '5px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD)}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n <Flex sx={{ mt: '15px' }}>Debbuging table</Flex>\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n '& > :nth-of-type(even)': {\n background: 'white3',\n },\n '& > :nth-of-type(odd)': {\n background: 'white4',\n },\n }}\n >\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>User Points</Flex>\n <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n {/*@ts-ignore*/}\n <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>\n <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>usd Abond necessary for next tier</Flex>\n <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>Fee percentage</Flex>\n <Flex>\n {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})\n </Flex>\n </Flex>\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>\n <Flex>Points To Be Earned through tierBoostRate</Flex>\n <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>\n </Flex>\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers.js';
2
2
  import { getUserTier, TIERS_NAMES } from '../../state/tiers/useTierPoints.js';
3
3
 
4
- const ABOND_PRICE_SAFETY_BUFFER_MIN = 0.05; // 5% floor
5
- const ABOND_PRICE_SAFETY_BUFFER_SCALE = 0.0001; // 0.01% of rawTierCostUsd
6
4
  function calculateOptimizationData(inputAmount, userPoints = '0', bond, inputTokenPriceUsd = 0, abondPriceUsd) {
7
5
  const { trueBondPrices } = bond;
8
6
  if (!trueBondPrices) {
@@ -19,13 +17,14 @@ function calculateOptimizationData(inputAmount, userPoints = '0', bond, inputTok
19
17
  }
20
18
  const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices);
21
19
  const currentTier = getUserTier(userPoints);
22
- const bonus_curr = 1 + currentTierData?.bonusWithFee / 100;
20
+ // const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100
23
21
  const currentPoints = BigInt(userPoints);
24
22
  const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd;
25
23
  const tierBoostRate = (bond.tierBoostRate ?? 0) / 100;
26
24
  const tierBoostUsd = inputAmountUSD * tierBoostRate;
27
25
  const feeInAbond = tierBoostUsd / abondPriceUsd;
28
26
  const tierBoostPoints = feeInAbond * 4;
27
+ const currentPrice = parseFloat(currentTierData?.trueBondPrice);
29
28
  const dataToReturn = {};
30
29
  for (const tierData of trueBondPrices) {
31
30
  if (tierData.boost <= currentTier)
@@ -34,24 +33,24 @@ function calculateOptimizationData(inputAmount, userPoints = '0', bond, inputTok
34
33
  const tierName = TIERS_NAMES[tierData.boost];
35
34
  const pointsNeededWei = BigInt(tierData.points) - currentPoints;
36
35
  const abondNeededRaw = Math.ceil(Number(pointsNeededWei) / 1e18 / 4);
37
- const rawTierCostUsd = abondNeededRaw * abondPriceUsd;
38
- const dynamicBuffer = Math.max(ABOND_PRICE_SAFETY_BUFFER_MIN, rawTierCostUsd * ABOND_PRICE_SAFETY_BUFFER_SCALE);
39
- const bufferedAbondPrice = abondPriceUsd * (1 + dynamicBuffer);
40
- const newBonusWithThisTier = tierData.bonusWithFee;
41
- const tierCostUsd = abondNeededRaw * bufferedAbondPrice;
42
- const bonus_new = 1 + newBonusWithThisTier / 100;
43
- const denominator = bonus_new - bonus_curr + tierBoostRate;
36
+ const tierCostUsd = abondNeededRaw * abondPriceUsd;
37
+ const newPrice = parseFloat(tierData.trueBondPrice);
38
+ const priceDiff = (currentPrice - newPrice) / currentPrice;
39
+ // const newBonusWithThisTier = tierData.bonusWithFee
40
+ // const bonus_new = 1 + newBonusWithThisTier / 100
41
+ // const denominator = bonus_new - bonus_curr + tierBoostRate
42
+ const denominator = (1 - tierBoostRate) * priceDiff + tierBoostRate;
44
43
  const minBreakeven = denominator > 0 ? tierCostUsd / denominator : Infinity;
45
- // for debugging purposes
44
+ // for debugging purposes this two should match
46
45
  // const originalOutputUsd = minBreakeven * bonus_curr
47
- // const outputAfterUpgrade = minBreakeven * bonus_new - (tierCostUsd - minBreakeven * tierBoostRate)
46
+ // const outputAfterUpgrade = (minBreakeven - (tierCostUsd - minBreakeven * tierBoostRate)) * bonus_new
48
47
  const isProfitable = inputAmountUSD > (minBreakeven ?? 0);
49
48
  dataToReturn[tierData.boost] = {
50
49
  tier: tierData.boost,
51
50
  tierName,
52
51
  isProfitable,
53
52
  tierCostUSD: tierCostUsd,
54
- minBreakevenWithFeeUSD: minBreakeven,
53
+ minBreakevenWithFeeUSD: minBreakeven * 1.05,
55
54
  necessaryPointsToUpgrade: abondNeededRaw * 4,
56
55
  };
57
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/views/BuyBond/utils.ts"],"sourcesContent":["import { BondsData } from '../../types/bonds'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { getUserTier, NewTiers, TIERS_NAMES } from '../../state/tiers/useTierPoints'\n\nconst ABOND_PRICE_SAFETY_BUFFER_MIN = 0.05 // 5% floor\nconst ABOND_PRICE_SAFETY_BUFFER_SCALE = 0.0001 // 0.01% of rawTierCostUsd\n\nexport function calculateOptimizationData(\n inputAmount: string,\n userPoints = '0',\n bond: BondsData,\n inputTokenPriceUsd = 0,\n abondPriceUsd?: number,\n) {\n const { trueBondPrices } = bond\n\n if (!trueBondPrices) {\n console.log('no truebondprices')\n return null\n }\n if (!abondPriceUsd) {\n console.log('No Abond Price')\n return null\n }\n\n if (inputTokenPriceUsd <= 0) {\n console.log('missing token price')\n return null\n }\n\n const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices)\n const currentTier = getUserTier(userPoints)!\n\n const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100\n const currentPoints = BigInt(userPoints)\n\n const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd\n\n const tierBoostRate = (bond.tierBoostRate ?? 0) / 100\n const tierBoostUsd = inputAmountUSD * tierBoostRate\n const feeInAbond = tierBoostUsd / abondPriceUsd\n const tierBoostPoints = feeInAbond * 4\n\n const dataToReturn: Record<\n number,\n {\n tier: number\n tierName: string\n isProfitable: boolean\n tierCostUSD: number\n minBreakevenWithFeeUSD: number\n necessaryPointsToUpgrade: number\n }\n > = {}\n\n for (const tierData of trueBondPrices) {\n if (tierData.boost <= currentTier) continue\n // @ts-ignore\n const tierName = TIERS_NAMES[tierData.boost]\n\n const pointsNeededWei = BigInt(tierData.points) - currentPoints\n const abondNeededRaw = Math.ceil(Number(pointsNeededWei) / 1e18 / 4)\n\n const rawTierCostUsd = abondNeededRaw * abondPriceUsd\n const dynamicBuffer = Math.max(ABOND_PRICE_SAFETY_BUFFER_MIN, rawTierCostUsd * ABOND_PRICE_SAFETY_BUFFER_SCALE)\n const bufferedAbondPrice = abondPriceUsd * (1 + dynamicBuffer)\n\n const newBonusWithThisTier = tierData.bonusWithFee\n\n const tierCostUsd = abondNeededRaw * bufferedAbondPrice\n const bonus_new = 1 + newBonusWithThisTier / 100\n\n const denominator = bonus_new - bonus_curr + tierBoostRate\n const minBreakeven = denominator > 0 ? tierCostUsd / denominator : Infinity\n\n // for debugging purposes\n // const originalOutputUsd = minBreakeven * bonus_curr\n // const outputAfterUpgrade = minBreakeven * bonus_new - (tierCostUsd - minBreakeven * tierBoostRate)\n\n const isProfitable = inputAmountUSD > (minBreakeven ?? 0)\n\n dataToReturn[tierData.boost] = {\n tier: tierData.boost as NewTiers,\n tierName,\n isProfitable,\n tierCostUSD: tierCostUsd,\n minBreakevenWithFeeUSD: minBreakeven,\n necessaryPointsToUpgrade: abondNeededRaw * 4,\n }\n }\n\n const profitableTiers = Object.values(dataToReturn).filter((item) => item.isProfitable)\n const highestProfitableTier = profitableTiers[profitableTiers.length - 1]\n\n return { tierBoostPoints, highestProfitableTier, data: Object.values(dataToReturn) }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/views/BuyBond/utils.ts"],"sourcesContent":["import { BondsData } from '../../types/bonds'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { getUserTier, NewTiers, TIERS_NAMES } from '../../state/tiers/useTierPoints'\n\nexport function calculateOptimizationData(\n inputAmount: string,\n userPoints = '0',\n bond: BondsData,\n inputTokenPriceUsd = 0,\n abondPriceUsd?: number,\n) {\n const { trueBondPrices } = bond\n\n if (!trueBondPrices) {\n console.log('no truebondprices')\n return null\n }\n if (!abondPriceUsd) {\n console.log('No Abond Price')\n return null\n }\n\n if (inputTokenPriceUsd <= 0) {\n console.log('missing token price')\n return null\n }\n\n const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices)\n const currentTier = getUserTier(userPoints)!\n\n // const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100\n const currentPoints = BigInt(userPoints)\n\n const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd\n\n const tierBoostRate = (bond.tierBoostRate ?? 0) / 100\n const tierBoostUsd = inputAmountUSD * tierBoostRate\n const feeInAbond = tierBoostUsd / abondPriceUsd\n const tierBoostPoints = feeInAbond * 4\n const currentPrice = parseFloat(currentTierData?.trueBondPrice!)\n\n const dataToReturn: Record<\n number,\n {\n tier: number\n tierName: string\n isProfitable: boolean\n tierCostUSD: number\n minBreakevenWithFeeUSD: number\n necessaryPointsToUpgrade: number\n }\n > = {}\n\n for (const tierData of trueBondPrices) {\n if (tierData.boost <= currentTier) continue\n // @ts-ignore\n const tierName = TIERS_NAMES[tierData.boost]\n\n const pointsNeededWei = BigInt(tierData.points) - currentPoints\n const abondNeededRaw = Math.ceil(Number(pointsNeededWei) / 1e18 / 4)\n\n const tierCostUsd = abondNeededRaw * abondPriceUsd\n const newPrice = parseFloat(tierData.trueBondPrice)\n const priceDiff = (currentPrice - newPrice) / currentPrice\n\n // const newBonusWithThisTier = tierData.bonusWithFee\n\n // const bonus_new = 1 + newBonusWithThisTier / 100\n\n // const denominator = bonus_new - bonus_curr + tierBoostRate\n const denominator = (1 - tierBoostRate) * priceDiff + tierBoostRate\n const minBreakeven = denominator > 0 ? tierCostUsd / denominator : Infinity\n\n // for debugging purposes this two should match\n // const originalOutputUsd = minBreakeven * bonus_curr\n // const outputAfterUpgrade = (minBreakeven - (tierCostUsd - minBreakeven * tierBoostRate)) * bonus_new\n\n const isProfitable = inputAmountUSD > (minBreakeven ?? 0)\n\n dataToReturn[tierData.boost] = {\n tier: tierData.boost as NewTiers,\n tierName,\n isProfitable,\n tierCostUSD: tierCostUsd,\n minBreakevenWithFeeUSD: minBreakeven * 1.05,\n necessaryPointsToUpgrade: abondNeededRaw * 4,\n }\n }\n\n const profitableTiers = Object.values(dataToReturn).filter((item) => item.isProfitable)\n const highestProfitableTier = profitableTiers[profitableTiers.length - 1]\n\n return { tierBoostPoints, highestProfitableTier, data: Object.values(dataToReturn) }\n}\n"],"names":[],"mappings":";;;AAIM,SAAU,yBAAyB,CACvC,WAAmB,EACnB,UAAU,GAAG,GAAG,EAChB,IAAe,EACf,kBAAkB,GAAG,CAAC,EACtB,aAAsB,EAAA;AAEtB,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAE/B,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChC,QAAA,OAAO,IAAI;IACb;IACA,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,kBAAkB,IAAI,CAAC,EAAE;AAC3B,QAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAClC,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,eAAe,GAAG,wBAAwB,CAAC,UAAU,EAAE,cAAc,CAAC;AAC5E,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAE;;AAG5C,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,kBAAkB;IAE1E,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,GAAG;AACrD,IAAA,MAAM,YAAY,GAAG,cAAc,GAAG,aAAa;AACnD,IAAA,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa;AAC/C,IAAA,MAAM,eAAe,GAAG,UAAU,GAAG,CAAC;IACtC,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE,aAAc,CAAC;IAEhE,MAAM,YAAY,GAUd,EAAE;AAEN,IAAA,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE;AACrC,QAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,WAAW;YAAE;;QAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;QAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa;AAC/D,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAEpE,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,aAAa;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;QACnD,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,QAAQ,IAAI,YAAY;;;;QAO1D,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,aAAa,IAAI,SAAS,GAAG,aAAa;AACnE,QAAA,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ;;;;QAM3E,MAAM,YAAY,GAAG,cAAc,IAAI,YAAY,IAAI,CAAC,CAAC;AAEzD,QAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;YAC7B,IAAI,EAAE,QAAQ,CAAC,KAAiB;YAChC,QAAQ;YACR,YAAY;AACZ,YAAA,WAAW,EAAE,WAAW;YACxB,sBAAsB,EAAE,YAAY,GAAG,IAAI;YAC3C,wBAAwB,EAAE,cAAc,GAAG,CAAC;SAC7C;IACH;IAEA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC;IACvF,MAAM,qBAAqB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAEzE,IAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AACtF;;;;"}
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.36",
6
+ "version": "5.1.38",
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,3 +0,0 @@
1
- import React from 'react';
2
- declare const RakuraiComponent: () => React.JSX.Element;
3
- export default RakuraiComponent;
@@ -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":"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"}
@@ -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;;;;;"}
@@ -1,8 +0,0 @@
1
- interface SolanaStakeBalances {
2
- solBalance: string;
3
- raiSolBalance: string;
4
- isLoading: boolean;
5
- refetch: () => void;
6
- }
7
- declare const useSolanaStakeBalances: () => SolanaStakeBalances;
8
- export default useSolanaStakeBalances;
@@ -1,47 +0,0 @@
1
- import { useQuery } from '@tanstack/react-query';
2
- import { useWallet, useConnection } from '@solana/wallet-adapter-react';
3
- import { PublicKey, LAMPORTS_PER_SOL } from '@solana/web3.js';
4
- import { getAssociatedTokenAddressSync, getAccount } from '@solana/spl-token';
5
- import { RAISOL_MINT_ADDRESS } from './useRakuraiStats.js';
6
-
7
- const useSolanaStakeBalances = () => {
8
- const { publicKey } = useWallet();
9
- const { connection } = useConnection();
10
- const { data, isLoading, refetch } = useQuery({
11
- queryKey: ['solanaStakeBalances', publicKey?.toBase58()],
12
- enabled: !!publicKey,
13
- queryFn: async () => {
14
- // Following async-parallel: fetch both balances concurrently
15
- const [solInfo, raiSolBal] = await Promise.all([
16
- // SOL native balance
17
- connection.getAccountInfo(publicKey),
18
- // raiSOL SPL token balance — returns '0' if ATA does not exist
19
- (async () => {
20
- try {
21
- console.log('fetching raiSOL balance');
22
- const ataAddress = getAssociatedTokenAddressSync(new PublicKey(RAISOL_MINT_ADDRESS), publicKey);
23
- const tokenAccount = await getAccount(connection, ataAddress);
24
- return (Number(tokenAccount.amount) / 1e9).toString();
25
- }
26
- catch {
27
- // ATA not found (common for wallets that have never staked)
28
- return '0';
29
- }
30
- })(),
31
- ]);
32
- return {
33
- solBalance: ((solInfo?.lamports ?? 0) / LAMPORTS_PER_SOL).toString(),
34
- raiSolBalance: raiSolBal,
35
- };
36
- },
37
- });
38
- return {
39
- solBalance: data?.solBalance ?? '0',
40
- raiSolBalance: data?.raiSolBalance ?? '0',
41
- isLoading,
42
- refetch,
43
- };
44
- };
45
-
46
- export { useSolanaStakeBalances as default };
47
- //# sourceMappingURL=useSolanaStakeBalances.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSolanaStakeBalances.js","sources":["../../../src/views/RakuraiComponent/useSolanaStakeBalances.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { useWallet, useConnection } from '@solana/wallet-adapter-react'\nimport { PublicKey, LAMPORTS_PER_SOL } from '@solana/web3.js'\nimport { getAssociatedTokenAddressSync, getAccount } from '@solana/spl-token'\nimport { RAISOL_MINT_ADDRESS } from './useRakuraiStats'\n\ninterface SolanaStakeBalances {\n solBalance: string\n raiSolBalance: string\n isLoading: boolean\n refetch: () => void\n}\n\nconst useSolanaStakeBalances = (): SolanaStakeBalances => {\n const { publicKey } = useWallet()\n const { connection } = useConnection()\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['solanaStakeBalances', publicKey?.toBase58()],\n enabled: !!publicKey,\n queryFn: async () => {\n // Following async-parallel: fetch both balances concurrently\n const [solInfo, raiSolBal] = await Promise.all([\n // SOL native balance\n connection.getAccountInfo(publicKey!),\n // raiSOL SPL token balance — returns '0' if ATA does not exist\n (async () => {\n try {\n console.log('fetching raiSOL balance')\n const ataAddress = getAssociatedTokenAddressSync(new PublicKey(RAISOL_MINT_ADDRESS), publicKey!)\n const tokenAccount = await getAccount(connection, ataAddress)\n return (Number(tokenAccount.amount) / 1e9).toString()\n } catch {\n // ATA not found (common for wallets that have never staked)\n return '0'\n }\n })(),\n ])\n\n return {\n solBalance: ((solInfo?.lamports ?? 0) / LAMPORTS_PER_SOL).toString(),\n raiSolBalance: raiSolBal,\n }\n },\n })\n\n return {\n solBalance: data?.solBalance ?? '0',\n raiSolBalance: data?.raiSolBalance ?? '0',\n isLoading,\n refetch,\n }\n}\n\nexport default useSolanaStakeBalances\n"],"names":[],"mappings":";;;;;;AAaA,MAAM,sBAAsB,GAAG,MAA0B;AACvD,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;AACjC,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE;IAEtC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QAC5C,QAAQ,EAAE,CAAC,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,OAAO,EAAE,YAAW;;YAElB,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;;AAE7C,gBAAA,UAAU,CAAC,cAAc,CAAC,SAAU,CAAC;;gBAErC,CAAC,YAAW;AACV,oBAAA,IAAI;AACF,wBAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,wBAAA,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAU,CAAC;wBAChG,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;AAC7D,wBAAA,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE;oBACvD;AAAE,oBAAA,MAAM;;AAEN,wBAAA,OAAO,GAAG;oBACZ;AACF,gBAAA,CAAC,GAAG;AACL,aAAA,CAAC;YAEF,OAAO;AACL,gBAAA,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,IAAI,gBAAgB,EAAE,QAAQ,EAAE;AACpE,gBAAA,aAAa,EAAE,SAAS;aACzB;QACH,CAAC;AACF,KAAA,CAAC;IAEF,OAAO;AACL,QAAA,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,GAAG;AACnC,QAAA,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,GAAG;QACzC,SAAS;QACT,OAAO;KACR;AACH;;;;"}