@ape.swap/bonds-sdk 6.2.1 → 6.2.3

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 (263) hide show
  1. package/dist/components/MenuSelect/MenuSelect.d.ts +1 -1
  2. package/dist/components/MenuSelect/MenuSelect.js.map +1 -1
  3. package/dist/components/ProgressBar/ProgressBarWrapper.d.ts +1 -1
  4. package/dist/components/ProgressBar/ProgressBarWrapper.js.map +1 -1
  5. package/dist/components/TokenInfoAndName/index.d.ts +0 -1
  6. package/dist/components/TokenInfoAndName/index.js +1 -1
  7. package/dist/components/TokenInfoAndName/index.js.map +1 -1
  8. package/dist/components/TokenSelectorModal/TokenRow.js +2 -2
  9. package/dist/components/TokenSelectorModal/TokenRow.js.map +1 -1
  10. package/dist/components/TokenSelectorPanel/index.js +3 -3
  11. package/dist/components/TokenSelectorPanel/index.js.map +1 -1
  12. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  13. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  14. package/dist/components/uikit-sdk/Button/Button.js +0 -36
  15. package/dist/components/uikit-sdk/Button/Button.js.map +1 -1
  16. package/dist/components/uikit-sdk/Button/types.d.ts +6 -10
  17. package/dist/components/uikit-sdk/Button/types.js +0 -5
  18. package/dist/components/uikit-sdk/Button/types.js.map +1 -1
  19. package/dist/components/uikit-sdk/Checkbox/types.d.ts +2 -1
  20. package/dist/components/uikit-sdk/Checkbox/types.js.map +1 -1
  21. package/dist/components/uikit-sdk/Skeleton/styles.d.ts +0 -12
  22. package/dist/components/uikit-sdk/Skeleton/styles.js +1 -1
  23. package/dist/components/uikit-sdk/Skeleton/styles.js.map +1 -1
  24. package/dist/components/uikit-sdk/Svg/Icons/ZapIcon.d.ts +2 -2
  25. package/dist/components/uikit-sdk/Svg/styles.d.ts +0 -2
  26. package/dist/components/uikit-sdk/Svg/styles.js.map +1 -1
  27. package/dist/components/uikit-sdk/Text/types.d.ts +1 -1
  28. package/dist/components/uikit-sdk/Text/types.js +1 -1
  29. package/dist/components/uikit-sdk/Text/types.js.map +1 -1
  30. package/dist/components/uikit-sdk/TooltipBubble/types.d.ts +2 -1
  31. package/dist/components/uikit-sdk/TooltipBubble/types.js.map +1 -1
  32. package/dist/config/constants/aptosZapTokens.d.ts +0 -9
  33. package/dist/config/constants/aptosZapTokens.js +1 -2
  34. package/dist/config/constants/aptosZapTokens.js.map +1 -1
  35. package/dist/config/constants/networks.d.ts +0 -2
  36. package/dist/config/constants/networks.js +1 -1
  37. package/dist/config/constants/networks.js.map +1 -1
  38. package/dist/config/constants/tokens.d.ts +1 -2
  39. package/dist/constants/aptosConstants.d.ts +0 -6
  40. package/dist/constants/aptosConstants.js +15 -1
  41. package/dist/constants/aptosConstants.js.map +1 -1
  42. package/dist/constants/solanaConstants.d.ts +0 -6
  43. package/dist/constants/solanaConstants.js +0 -21
  44. package/dist/constants/solanaConstants.js.map +1 -1
  45. package/dist/constants/suiConstants.d.ts +0 -5
  46. package/dist/constants/suiConstants.js +11 -0
  47. package/dist/constants/suiConstants.js.map +1 -1
  48. package/dist/hooks/useSortedZapList.d.ts +1 -1
  49. package/dist/hooks/useSortedZapList.js +1 -2
  50. package/dist/hooks/useSortedZapList.js.map +1 -1
  51. package/dist/hooks/useTokenFromZapList.js +0 -1
  52. package/dist/hooks/useTokenFromZapList.js.map +1 -1
  53. package/dist/providers/index.d.ts +11 -0
  54. package/dist/providers/index.js +0 -6
  55. package/dist/providers/index.js.map +1 -1
  56. package/dist/state/allowance/useAllowance.js +2 -3
  57. package/dist/state/allowance/useAllowance.js.map +1 -1
  58. package/dist/state/balance/useCurrencyBalance.js +2 -3
  59. package/dist/state/balance/useCurrencyBalance.js.map +1 -1
  60. package/dist/state/balance/useCurrencyBalanceAptos.js +5 -5
  61. package/dist/state/balance/useCurrencyBalanceAptos.js.map +1 -1
  62. package/dist/state/balance/useCurrencyBalanceSolana.d.ts +0 -2
  63. package/dist/state/balance/useCurrencyBalanceSolana.js +3 -6
  64. package/dist/state/balance/useCurrencyBalanceSolana.js.map +1 -1
  65. package/dist/state/balance/useCurrencyBalanceSui.js +2 -2
  66. package/dist/state/balance/useCurrencyBalanceSui.js.map +1 -1
  67. package/dist/state/balance/useUserTokensBalance.js +3 -5
  68. package/dist/state/balance/useUserTokensBalance.js.map +1 -1
  69. package/dist/state/bondApiStats/useGetBondApiStats.d.ts +0 -1
  70. package/dist/state/bondApiStats/useGetBondApiStats.js +1 -1
  71. package/dist/state/bondApiStats/useGetBondApiStats.js.map +1 -1
  72. package/dist/state/bonds/fetchBondsData/cleanBillsData.js +16 -13
  73. package/dist/state/bonds/fetchBondsData/cleanBillsData.js.map +1 -1
  74. package/dist/state/bonds/fetchBondsData/fetchBondsDataAptos.d.ts +1 -1
  75. package/dist/state/bonds/fetchBondsData/fetchBondsDataAptos.js +4 -6
  76. package/dist/state/bonds/fetchBondsData/fetchBondsDataAptos.js.map +1 -1
  77. package/dist/state/bonds/fetchBondsData/fetchBondsDataEVM.d.ts +1 -1
  78. package/dist/state/bonds/fetchBondsData/fetchBondsDataEVM.js +4 -3
  79. package/dist/state/bonds/fetchBondsData/fetchBondsDataEVM.js.map +1 -1
  80. package/dist/state/bonds/fetchBondsData/fetchBondsDataSOL.d.ts +1 -1
  81. package/dist/state/bonds/fetchBondsData/fetchBondsDataSOL.js +2 -3
  82. package/dist/state/bonds/fetchBondsData/fetchBondsDataSOL.js.map +1 -1
  83. package/dist/state/bonds/fetchBondsData/fetchBondsDataSui.d.ts +1 -1
  84. package/dist/state/bonds/fetchBondsData/fetchBondsDataSui.js +5 -7
  85. package/dist/state/bonds/fetchBondsData/fetchBondsDataSui.js.map +1 -1
  86. package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsEVM.d.ts +1 -2
  87. package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsEVM.js +2 -5
  88. package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsEVM.js.map +1 -1
  89. package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsSOL.js +2 -5
  90. package/dist/state/bonds/fetchUsersBonds/fetchUsersBondsSOL.js.map +1 -1
  91. package/dist/state/bonds/useBondsList.d.ts +1 -2
  92. package/dist/state/bonds/useBondsList.js +1 -1
  93. package/dist/state/bonds/useBondsList.js.map +1 -1
  94. package/dist/state/bonds/useBondsListPreTGE.d.ts +1 -2
  95. package/dist/state/bonds/useBondsListPreTGE.js +1 -1
  96. package/dist/state/bonds/useBondsListPreTGE.js.map +1 -1
  97. package/dist/state/bonds/useTierProofSignature.d.ts +0 -1
  98. package/dist/state/bonds/useTierProofSignature.js +1 -1
  99. package/dist/state/bonds/useTierProofSignature.js.map +1 -1
  100. package/dist/state/bonds/useUserBondsPreTGE.d.ts +3 -4
  101. package/dist/state/bonds/useUserBondsPreTGE.js +4 -7
  102. package/dist/state/bonds/useUserBondsPreTGE.js.map +1 -1
  103. package/dist/state/historicalPrice/useHistoricalPrice.d.ts +1 -2
  104. package/dist/state/historicalPrice/useHistoricalPrice.js +1 -1
  105. package/dist/state/historicalPrice/useHistoricalPrice.js.map +1 -1
  106. package/dist/state/hotBonds/useHotBonds.d.ts +0 -2
  107. package/dist/state/hotBonds/useHotBonds.js +1 -1
  108. package/dist/state/hotBonds/useHotBonds.js.map +1 -1
  109. package/dist/state/price/useCurrencyPrice.js +1 -2
  110. package/dist/state/price/useCurrencyPrice.js.map +1 -1
  111. package/dist/state/recommendations/useGetBondRecommendations.d.ts +0 -1
  112. package/dist/state/recommendations/useGetBondRecommendations.js +1 -1
  113. package/dist/state/recommendations/useGetBondRecommendations.js.map +1 -1
  114. package/dist/state/tiers/useTierPoints.d.ts +0 -6
  115. package/dist/state/tiers/useTierPoints.js +16 -17
  116. package/dist/state/tiers/useTierPoints.js.map +1 -1
  117. package/dist/state/zap/useAptosZapQuote.d.ts +1 -16
  118. package/dist/state/zap/useAptosZapQuote.js +4 -4
  119. package/dist/state/zap/useAptosZapQuote.js.map +1 -1
  120. package/dist/state/zap/useJupiterSolanaQuote.js +4 -11
  121. package/dist/state/zap/useJupiterSolanaQuote.js.map +1 -1
  122. package/dist/state/zap/useSoulZapBondQuote.js +12 -21
  123. package/dist/state/zap/useSoulZapBondQuote.js.map +1 -1
  124. package/dist/state/zap/useSuiZapQuote.d.ts +1 -1
  125. package/dist/state/zap/useSuiZapQuote.js +9 -14
  126. package/dist/state/zap/useSuiZapQuote.js.map +1 -1
  127. package/dist/theme/base.d.ts +1 -4
  128. package/dist/theme/base.js +1 -1
  129. package/dist/theme/base.js.map +1 -1
  130. package/dist/theme/components.d.ts +0 -20
  131. package/dist/theme/components.js +1 -1
  132. package/dist/theme/components.js.map +1 -1
  133. package/dist/types/aptosBonds.d.ts +0 -60
  134. package/dist/types/bondIssuanceCodec.d.ts +0 -1
  135. package/dist/types/bondIssuanceCodec.js.map +1 -1
  136. package/dist/types/bondTermCodec.d.ts +0 -1
  137. package/dist/types/bondTermCodec.js.map +1 -1
  138. package/dist/types/solanaBonds.d.ts +4 -3
  139. package/dist/utils/aptosHelpers.d.ts +1 -14
  140. package/dist/utils/aptosHelpers.js +30 -2
  141. package/dist/utils/aptosHelpers.js.map +1 -1
  142. package/dist/utils/bondPriceHelpers.d.ts +1 -1
  143. package/dist/utils/bondPriceHelpers.js +5 -11
  144. package/dist/utils/bondPriceHelpers.js.map +1 -1
  145. package/dist/utils/calculateSolanaTrueBillPrice.d.ts +0 -4
  146. package/dist/utils/calculateSolanaTrueBillPrice.js +33 -32
  147. package/dist/utils/calculateSolanaTrueBillPrice.js.map +1 -1
  148. package/dist/utils/convertToBigish.d.ts +0 -1
  149. package/dist/utils/convertToBigish.js +3 -18
  150. package/dist/utils/convertToBigish.js.map +1 -1
  151. package/dist/utils/displayHelpers.d.ts +3 -9
  152. package/dist/utils/displayHelpers.js +63 -47
  153. package/dist/utils/displayHelpers.js.map +1 -1
  154. package/dist/utils/fixedPoint.d.ts +28 -0
  155. package/dist/utils/fixedPoint.js +239 -0
  156. package/dist/utils/fixedPoint.js.map +1 -0
  157. package/dist/utils/formatNumber.d.ts +0 -7
  158. package/dist/utils/formatNumber.js +6 -12
  159. package/dist/utils/formatNumber.js.map +1 -1
  160. package/dist/utils/getBalanceNumber.d.ts +1 -2
  161. package/dist/utils/getBalanceNumber.js +5 -3
  162. package/dist/utils/getBalanceNumber.js.map +1 -1
  163. package/dist/utils/getNativeTicker.js +0 -1
  164. package/dist/utils/getNativeTicker.js.map +1 -1
  165. package/dist/utils/suiHelpers.d.ts +0 -2
  166. package/dist/utils/suiHelpers.js +13 -15
  167. package/dist/utils/suiHelpers.js.map +1 -1
  168. package/dist/views/Bonds/Bonds.d.ts +0 -4
  169. package/dist/views/Bonds/Bonds.js.map +1 -1
  170. package/dist/views/Bonds/components/BondRows/ActiveBondRows.d.ts +1 -1
  171. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +2 -3
  172. package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
  173. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +1 -2
  174. package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
  175. package/dist/views/Bonds/components/BonusComponents/BonusTable.js +1 -2
  176. package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
  177. package/dist/views/Bonds/components/BuyAgainRow/index.js +2 -4
  178. package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
  179. package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.d.ts +1 -1
  180. package/dist/views/Bonds/components/RecommendationCards/SmallRecommendationCard.js.map +1 -1
  181. package/dist/views/Bonds/utils.d.ts +0 -2
  182. package/dist/views/Bonds/utils.js +2 -3
  183. package/dist/views/Bonds/utils.js.map +1 -1
  184. package/dist/views/BuyBond/BuyBondModal.d.ts +1 -1
  185. package/dist/views/BuyBond/BuyBondModal.js.map +1 -1
  186. package/dist/views/BuyBond/BuyComponent.js +16 -17
  187. package/dist/views/BuyBond/BuyComponent.js.map +1 -1
  188. package/dist/views/BuyBond/BuyComponentAptos.d.ts +1 -1
  189. package/dist/views/BuyBond/BuyComponentAptos.js +20 -33
  190. package/dist/views/BuyBond/BuyComponentAptos.js.map +1 -1
  191. package/dist/views/BuyBond/BuyComponentPreTGE.js +6 -8
  192. package/dist/views/BuyBond/BuyComponentPreTGE.js.map +1 -1
  193. package/dist/views/BuyBond/BuyComponentSolana.d.ts +1 -1
  194. package/dist/views/BuyBond/BuyComponentSolana.js +20 -27
  195. package/dist/views/BuyBond/BuyComponentSolana.js.map +1 -1
  196. package/dist/views/BuyBond/BuyComponentSui.d.ts +1 -1
  197. package/dist/views/BuyBond/BuyComponentSui.js +15 -28
  198. package/dist/views/BuyBond/BuyComponentSui.js.map +1 -1
  199. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js +2 -2
  200. package/dist/views/BuyBond/components/NewRateModal/NewRateModal.js.map +1 -1
  201. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js +6 -9
  202. package/dist/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.js.map +1 -1
  203. package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.d.ts +1 -1
  204. package/dist/views/ProjectView/components/BondLeaderboard/components/SalesTable.js.map +1 -1
  205. package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.d.ts +1 -1
  206. package/dist/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.js.map +1 -1
  207. package/dist/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.d.ts +1 -1
  208. package/dist/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.js.map +1 -1
  209. package/dist/views/ProjectView/components/BondStats/index.js +2 -4
  210. package/dist/views/ProjectView/components/BondStats/index.js.map +1 -1
  211. package/dist/views/ProjectView/components/BondStats/types.d.ts +2 -1
  212. package/dist/views/ProjectView/components/BondStats/types.js.map +1 -1
  213. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.d.ts +1 -1
  214. package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
  215. package/dist/views/YourBonds/components/UserBondRow/UserBondRowPreTGE.js +4 -5
  216. package/dist/views/YourBonds/components/UserBondRow/UserBondRowPreTGE.js.map +1 -1
  217. package/dist/views/YourBondsModal/components/LinkShare/htmlToJpeg.d.ts +8 -0
  218. package/dist/views/YourBondsModal/components/LinkShare/htmlToJpeg.js +43 -0
  219. package/dist/views/YourBondsModal/components/LinkShare/htmlToJpeg.js.map +1 -0
  220. package/dist/views/YourBondsModal/components/LinkShare/templateImageShare.d.ts +8 -1
  221. package/dist/views/YourBondsModal/components/LinkShare/templateImageShare.js +172 -15
  222. package/dist/views/YourBondsModal/components/LinkShare/templateImageShare.js.map +1 -1
  223. package/dist/views/YourBondsModal/components/LinkShare/utils.js +19 -10
  224. package/dist/views/YourBondsModal/components/LinkShare/utils.js.map +1 -1
  225. package/dist/views/YourBondsModal/components/TransferBondModal/index.js +1 -2
  226. package/dist/views/YourBondsModal/components/TransferBondModal/index.js.map +1 -1
  227. package/package.json +6 -8
  228. package/dist/components/AccordionText/index.d.ts +0 -6
  229. package/dist/components/RestrictedRegionModal/index.d.ts +0 -5
  230. package/dist/components/TabNavigation/index.d.ts +0 -8
  231. package/dist/components/uikit-sdk/Input/NumericInput.d.ts +0 -9
  232. package/dist/components/uikit-sdk/Modal/ModalFooter.d.ts +0 -4
  233. package/dist/components/uikit-sdk/Svg/Icons/Audit.d.ts +0 -4
  234. package/dist/components/uikit-sdk/Svg/Icons/Fire.d.ts +0 -4
  235. package/dist/components/uikit-sdk/Svg/Icons/FullLogo.d.ts +0 -4
  236. package/dist/components/uikit-sdk/Svg/Icons/Instagram.d.ts +0 -4
  237. package/dist/components/uikit-sdk/Svg/Icons/Language.d.ts +0 -4
  238. package/dist/components/uikit-sdk/Svg/Icons/Medium.d.ts +0 -4
  239. package/dist/components/uikit-sdk/Svg/Icons/Pool.d.ts +0 -4
  240. package/dist/components/uikit-sdk/Svg/Icons/Reddit.d.ts +0 -4
  241. package/dist/components/uikit-sdk/Svg/Icons/Telegram.d.ts +0 -4
  242. package/dist/components/uikit-sdk/Svg/Icons/Website.d.ts +0 -4
  243. package/dist/components/uikit-sdk/Svg/tokens/BSC.d.ts +0 -4
  244. package/dist/components/uikit-sdk/Svg/tokens/CELO.d.ts +0 -4
  245. package/dist/components/uikit-sdk/Svg/tokens/CRONOS.d.ts +0 -4
  246. package/dist/components/uikit-sdk/Svg/tokens/FANTOM.d.ts +0 -4
  247. package/dist/components/uikit-sdk/Svg/tokens/GNOSIS.d.ts +0 -4
  248. package/dist/components/uikit-sdk/Svg/tokens/OKX.d.ts +0 -4
  249. package/dist/components/uikit-sdk/Svg/tokens/OPTIMISM.d.ts +0 -4
  250. package/dist/components/uikit-sdk/Svg/tokens/POLYGONZK.d.ts +0 -4
  251. package/dist/config/constants/tokens.js +0 -36
  252. package/dist/config/constants/tokens.js.map +0 -1
  253. package/dist/contexts/RefreshContext.d.ts +0 -10
  254. package/dist/hooks/useRefresh.d.ts +0 -6
  255. package/dist/hooks/useTimer.d.ts +0 -2
  256. package/dist/state/bondApiStats/useUserApiStats.d.ts +0 -22
  257. package/dist/state/bonds/aptosBondsConfig.d.ts +0 -4
  258. package/dist/state/bonds/fetchUsersBonds/getBillNftData.d.ts +0 -9
  259. package/dist/state/geoFencing/useGeoFencing.d.ts +0 -5
  260. package/dist/state/zap/useSoulZapTokenQuote.d.ts +0 -3
  261. package/dist/state/zap/useTierOptimizationPreview.d.ts +0 -27
  262. package/dist/views/ZapModal/index.d.ts +0 -13
  263. package/dist/views/ZapModal/styles.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"BuyComponentSui.js","sources":["../../../src/views/BuyBond/BuyComponentSui.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { Transaction } from '@mysten/sui/transactions'\nimport useSuiZapQuote, { AFTERMATH_TX_API_URL } from '../../state/zap/useSuiZapQuote'\nimport { findSuiZapToken } from '../../config/constants/suiZapTokens'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { usePopups } from '../../state/popups/usePopups'\nimport { useSlippage } from '../../state/slippage/useSlippage'\nimport { BondsData } from '../../types/bonds'\nimport { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '../../utils/displayHelpers'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { reportError } from '../../utils/reportError'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport { getSymbol } from '../../utils/getNativeTicker'\n\nimport useSUIAccount from '../../hooks/accounts/useSUIAccount'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport useSortedZapList from '../../hooks/useSortedZapList'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\n\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\n\nimport { SUI_DEPOSIT_FUNCTION, SUI_PACKAGE_ID } from '../../constants/suiConstants'\nimport { getSuiClient, readFreshTrueBondPrice, verifySuiTxSuccess } from '../../utils/suiHelpers'\nimport { openSuiWalletConnector } from '../../config/constants/walletConnectors'\nimport { MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport axios from 'axios'\nimport { SuiJsonRpcClient } from '@mysten/sui/dist/cjs/jsonRpc/client'\n\nconst extractSuiBillId = async (digest: string, suiClient: SuiJsonRpcClient): Promise<string> => {\n const txBlock = await suiClient.getTransactionBlock({\n digest,\n options: {\n showEffects: true,\n showObjectChanges: true,\n showEvents: true,\n },\n })\n const bondNftType = `${SUI_PACKAGE_ID}::bond_nft::BondNFT`\n const createdNft = txBlock.objectChanges?.find(\n (change) =>\n change.type === 'created' && 'objectType' in change && (change.objectType as string)?.includes(bondNftType),\n )\n if (createdNft && 'objectId' in createdNft) {\n const nftObjectId = createdNft.objectId as string\n try {\n const nftObj = await suiClient.getObject({\n id: nftObjectId,\n options: { showContent: true },\n })\n if (nftObj.data?.content?.dataType === 'moveObject') {\n const fields = nftObj.data.content.fields as Record<string, any>\n const billId = String(fields?.bill_id ?? '')\n if (billId && billId !== 'undefined' && billId !== '') {\n return billId\n }\n }\n } catch (e) {\n console.warn('[SUI AFTER-PURCHASE] Failed to read BondNFT object:', nftObjectId, e)\n }\n }\n return `digest:${digest}`\n}\n\nexport interface BuyComponentSuiProps {\n onDismiss?: () => void\n bondAddress?: string\n bondChain?: number\n setBillId?: (id: string) => void\n isProjectView?: boolean\n}\n\nconst BuyComponentSui: React.FC<BuyComponentSuiProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n isProjectView,\n setBillId,\n}) => {\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n\n // Hooks\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { data: bonds } = useBondsData()\n const { addToastError, addToastSuccess } = usePopups()\n const { solSlippage: slippage } = useSlippage() // reuse Sol slippage bucket for Sui\n\n const bondData: BondsData | undefined = bonds?.find(\n (bond) => bond?.contractAddress?.[bond?.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )\n\n // Derived pricing (same path the Solana no-tier branch uses).\n const trueBondPriceData = findHighestTrueBondPrice('0', bondData?.trueBondPrices)\n\n // State\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData?.chainId])\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Token selection — reuses the same infrastructure as Solana\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const principalAddress = bondData?.lpToken?.address?.[bondData?.chainId]\n // Detect zap: selected token differs from the bond principal\n const SUI_NATIVE_COIN_TYPE = '0x2::sui::SUI'\n const isNativeMatchingPrincipal =\n (inputTokenString === 'NATIVE' || inputTokenString?.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()) &&\n principalAddress?.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n const isZap =\n !!inputTokenString &&\n !!principalAddress &&\n !isNativeMatchingPrincipal &&\n inputTokenString.toLowerCase() !== principalAddress.toLowerCase()\n\n // Zap quote from Aftermath DEX aggregator\n const suiZapToken = findSuiZapToken(\n inputToken && inputToken !== 'NATIVE'\n ? inputToken?.address?.[ChainId.SUI]\n : inputToken === 'NATIVE'\n ? '0x2::sui::SUI'\n : undefined,\n )\n const [fetchingZapQuote, aftermathQuote, zapDepositAmount, zapError] = useSuiZapQuote(\n inputValue,\n suiZapToken,\n bondData,\n suiAccount ?? undefined,\n slippage,\n )\n\n // Sorted zap list (balances + prices)\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n\n // Estimations — use zapDepositAmount if swapping\n const depositAmount = isZap ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = $${formatUSDNumber(\n (parseFloat(inputValue || '0') * (inputTokenPrice ?? 0)).toString(),\n )}`\n\n const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, '0'))\n const exceedsSafeMaxBuy = getMaxBuy(bondData, false)\n .times(isZap ? 0.995 : 0.9995)\n .lte(getPayoutAmount(bondData, depositAmount, '0'))\n\n const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue)\n\n const load = loadingTx || (fetchingZapQuote && !!inputValue)\n\n // Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = () => {\n const balance = new BigNumber(inputCurrencyBalance ?? '0')\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 9\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), '0')\n if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n setInputValue(new BigNumber(principalForMaxBuy).toFixed(principalDecimals))\n } else {\n setInputValue(balance.toFixed(principalDecimals))\n }\n }\n\n const handleBuyCallback = async () => {\n if (!suiAccount || !bondData || !inputValue || !signAndExecuteTransaction) return\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n setLoadingTx(true)\n\n const principalDecimals = bondData.lpToken.decimals[bondData.chainId] ?? 9\n const atomicAmount = new BigNumber(inputValue)\n .times(new BigNumber(10).pow(principalDecimals))\n .integerValue(BigNumber.ROUND_FLOOR)\n .toFixed(0)\n\n const market = bondData.contractAddress[bondData.chainId]\n\n // Read fresh bond price from chain to avoid stale cache after previous purchases\n const freshTruePrice = await readFreshTrueBondPrice(market)\n const atomicMaxPrice = new BigNumber(freshTruePrice.toString())\n .times(new BigNumber(100 + slippage))\n .dividedBy(new BigNumber(100))\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0)\n const principalCoinType = bondData.lpToken.address[bondData.chainId]\n const payoutCoinType = bondData.earnToken.address[bondData.chainId]\n if (!principalCoinType || !payoutCoinType) throw new Error('Missing token type info')\n\n // Build Sui transaction\n const tx = new Transaction()\n const isPrincipalNativeSui =\n !principalCoinType || principalCoinType.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n\n let principalCoin\n if (isPrincipalNativeSui) {\n ;[principalCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(atomicAmount)])\n } else {\n const suiClient = getSuiClient()\n const userCoins = await suiClient.getCoins({ owner: suiAccount, coinType: principalCoinType })\n if (!userCoins.data.length) throw new Error(`No ${bondData.lpToken.symbol} coins found in wallet`)\n if (userCoins.data.length > 1) {\n const [primary, ...rest] = userCoins.data.map((c) => tx.object(c.coinObjectId))\n tx.mergeCoins(primary, rest)\n ;[principalCoin] = tx.splitCoins(primary, [tx.pure.u64(atomicAmount)])\n } else {\n ;[principalCoin] = tx.splitCoins(tx.object(userCoins.data[0].coinObjectId), [tx.pure.u64(atomicAmount)])\n }\n }\n\n if (!market || !bondData?.suiTreasuryId || !bondData?.billNnftAddress?.[ChainId.SUI]) {\n return\n }\n\n tx.moveCall({\n target: SUI_DEPOSIT_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bondData.suiTreasuryId),\n tx.object(bondData.billNnftAddress[ChainId.SUI]),\n principalCoin,\n tx.pure.u64(atomicMaxPrice),\n tx.pure.address(suiAccount),\n tx.object('0x6'), // clock\n ],\n })\n\n // Pre-build the transaction so the wallet receives fully-resolved bytes.\n // Some wallets (e.g. Phantom) fail with \"Unexpected error\" when they have\n // to build/simulate a Transaction object themselves.\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000) // 0.05 SUI — generous for a bond deposit\n const builtBytes = await tx.build({ client: getSuiClient() })\n const prebuiltTx = Transaction.from(builtBytes)\n const response = await signAndExecuteTransaction({\n transaction: prebuiltTx,\n })\n\n const digest = response?.digest\n if (!digest) throw new Error('No tx digest returned by wallet')\n\n const suiClient = getSuiClient()\n await suiClient.waitForTransaction({ digest })\n await verifySuiTxSuccess(digest)\n\n // Extract the bill_id from the confirmed transaction.\n // extractSuiBillId logs the full tx block so you can inspect the raw data\n // in case automatic extraction fails.\n const billId = await extractSuiBillId(digest, suiClient)\n console.log('[SUI AFTER-PURCHASE] handleBuyCallback billId:', billId)\n\n // Invalidate bonds data so next purchase uses fresh pricing\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.BONDS_DATA] })\n\n // Sui's indexer has a short lag — getOwnedObjects may not return the\n // new BondNFT immediately. Schedule re-invalidations so the Your Bonds\n // view picks up the new bond once the indexer catches up.\n setTimeout(() => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] }), 3000)\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(market),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n addToastSuccess(digest, bondChain as ChainId)\n setBillId?.(billId)\n } catch (error: any) {\n console.error('[SUI DEBUG] Error during Sui bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error?.message,\n extraInfo: { type: 'suiBuyBond', error: error?.message },\n chainId: bondChain,\n account: suiAccount,\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleZapCallback = async () => {\n if (loadingTx || !suiAccount || !bondData || !aftermathQuote || !signAndExecuteTransaction) return\n\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n try {\n setLoadingTx(true)\n const suiClient = getSuiClient()\n const principalDecimals = bondData.lpToken.decimals[bondData.chainId] ?? 6\n const depositAmountAtomic = new BigNumber(zapDepositAmount)\n .times(new BigNumber(10).pow(principalDecimals))\n .integerValue(BigNumber.ROUND_FLOOR)\n .toFixed(0)\n\n // TX1: Acquire principal tokens\n // if (IS_SUI_MAINNET) {\n // Mainnet: swap via Aftermath DEX aggregator\n const txResponse = await axios.post(AFTERMATH_TX_API_URL, {\n walletAddress: suiAccount,\n completeRoute: aftermathQuote,\n slippage: slippage / 100,\n })\n\n const swapTxBytes = txResponse.data\n if (!swapTxBytes) throw new Error('Aftermath returned no transaction data')\n\n const swapTx = Transaction.from(swapTxBytes)\n const swapResponse = await signAndExecuteTransaction({ transaction: swapTx })\n const swapDigest = swapResponse?.digest\n if (!swapDigest) throw new Error('No tx digest returned for swap')\n await suiClient.waitForTransaction({ digest: swapDigest })\n // } else {\n // // Testnet: mint principal tokens via test_principal_token::mint\n // // No DEX aggregator supports Sui testnet or custom test tokens.\n // const mintTx = new Transaction()\n // mintTx.moveCall({\n // target: SUI_MINT_PRINCIPAL_FUNCTION,\n // arguments: [\n // mintTx.object(SUI_PRINCIPAL_TOKEN_ADMIN_TESTNET),\n // mintTx.pure.u64(depositAmountAtomic),\n // mintTx.pure.address(suiAccount),\n // ],\n // })\n //\n // mintTx.setSender(suiAccount)\n // mintTx.setGasBudget(50_000_000)\n // const builtMint = await mintTx.build({ client: suiClient })\n // const prebuiltMint = Transaction.from(builtMint)\n //\n // const mintResponse = await signAndExecuteTransaction({ transaction: prebuiltMint })\n // const mintDigest = mintResponse?.digest\n // if (!mintDigest) throw new Error('No tx digest returned for testnet mint')\n // await suiClient.waitForTransaction({ digest: mintDigest })\n // }\n\n // TX2: Deposit into bond with principal tokens\n const market = bondData.contractAddress[ChainId.SUI]\n\n // Read fresh bond price from chain to avoid stale cache\n const freshTruePrice = await readFreshTrueBondPrice(market)\n const atomicMaxPrice = new BigNumber(freshTruePrice.toString())\n .times(new BigNumber(100 + slippage))\n .dividedBy(new BigNumber(100))\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0)\n\n const principalCoinType = bondData.lpToken.address[bondData.chainId]\n const payoutCoinType = bondData.earnToken.address[bondData.chainId]\n if (!principalCoinType || !payoutCoinType) throw new Error('Missing token type info')\n\n const tx = new Transaction()\n const isPrincipalNativeSui = principalCoinType.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n\n let principalCoin\n if (isPrincipalNativeSui) {\n ;[principalCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(depositAmountAtomic)])\n } else {\n const userCoins = await suiClient.getCoins({ owner: suiAccount, coinType: principalCoinType })\n if (!userCoins.data.length) throw new Error(`No ${bondData.lpToken.symbol} coins found after swap`)\n if (userCoins.data.length > 1) {\n const [primary, ...rest] = userCoins.data.map((c) => tx.object(c.coinObjectId))\n tx.mergeCoins(primary, rest)\n ;[principalCoin] = tx.splitCoins(primary, [tx.pure.u64(depositAmountAtomic)])\n } else {\n ;[principalCoin] = tx.splitCoins(tx.object(userCoins.data[0].coinObjectId), [\n tx.pure.u64(depositAmountAtomic),\n ])\n }\n }\n\n if (!market || !bondData?.suiTreasuryId || !bondData?.billNnftAddress?.[ChainId.SUI]) {\n return\n }\n\n tx.moveCall({\n target: SUI_DEPOSIT_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bondData.suiTreasuryId),\n tx.object(bondData.billNnftAddress[ChainId.SUI]),\n principalCoin,\n tx.pure.u64(atomicMaxPrice),\n tx.pure.address(suiAccount),\n tx.object('0x6'), // clock\n ],\n })\n\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000)\n const builtDeposit = await tx.build({ client: suiClient })\n const prebuiltDeposit = Transaction.from(builtDeposit)\n\n const depositResponse = await signAndExecuteTransaction({ transaction: prebuiltDeposit })\n const depositDigest = depositResponse?.digest\n if (!depositDigest) throw new Error('No tx digest returned for deposit')\n await suiClient.waitForTransaction({ digest: depositDigest })\n await verifySuiTxSuccess(depositDigest)\n\n // Extract the bill_id from the confirmed deposit transaction.\n // extractSuiBillId logs the full tx block so you can inspect the raw data\n // in case automatic extraction fails.\n const billId = await extractSuiBillId(depositDigest, suiClient)\n console.log('[SUI AFTER-PURCHASE] handleZapCallback billId:', billId)\n\n // Invalidate bonds data so next purchase uses fresh pricing\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.BONDS_DATA] })\n\n // Sui indexer lag — schedule delayed re-invalidations for user bonds\n setTimeout(() => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] }), 3000)\n\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bond',\n token1: getSymbol(inputToken, bondData?.chainId),\n token2: bondData?.lpToken.symbol ?? '',\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(market),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n addToastSuccess(depositDigest, bondChain as ChainId)\n setBillId?.(billId)\n } catch (error: any) {\n console.error('Error during Sui zap bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error?.message,\n extraInfo: { type: 'suiZapBuyBond', error: error?.message },\n chainId: bondChain,\n account: suiAccount,\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleBuy = () => {\n if (loadingTx) return\n if (isZap) {\n handleZapCallback()\n } else {\n handleBuyCallback()\n }\n }\n\n // Sync inputTokenString when bondData loads after initial render\n useEffect(() => {\n const addr = bondData?.lpToken?.address?.[bondData?.chainId]\n if (addr && !inputTokenString) {\n setInputTokenString(addr)\n }\n }, [bondData?.lpToken?.address, bondData?.chainId]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Auto-select highest balance token when zap list loads\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0]?.token === 'NATIVE' ? 'NATIVE' : sortedZapList[0]?.token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n const hasPositiveBonus = (trueBondPriceData?.bonusWithFee ?? 0) > 0\n\n const canBuy =\n !load &&\n !!suiAccount &&\n !bondData?.soldOut &&\n !!inputValue &&\n parseFloat(inputValue) > 0 &&\n !exceedsRealMaxBuy &&\n !exceedsBalance &&\n hasPositiveBonus &&\n !SDKConfig.blockSales &&\n !zapError &&\n !(isZap && !aftermathQuote)\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} hidePromotionUi />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={inputValue}\n inputTokenPrice={inputTokenPrice}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZap}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={ChainId.SUI}\n enableZap={true}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={inputTokenPrice}\n isConnected={!!suiAccount}\n />\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!suiAccount ? (\n <Button\n className=\"action-button\"\n onClick={openSuiWalletConnector}\n sx={{ width: '100%', fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n Connect to Sui\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={load}\n disabled={!canBuy}\n onClick={handleBuy}\n sx={{ width: '100%', fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : zapError\n ? 'Swap quote failed'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Insufficient balance'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : 'buy'}\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\n\nexport default BuyComponentSui\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"BuyComponentSui.js","sources":["../../../src/views/BuyBond/BuyComponentSui.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { Transaction } from '@mysten/sui/transactions'\nimport useSuiZapQuote, { AFTERMATH_TX_API_URL } from '../../state/zap/useSuiZapQuote'\nimport { findSuiZapToken } from '../../config/constants/suiZapTokens'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { usePopups } from '../../state/popups/usePopups'\nimport { useSlippage } from '../../state/slippage/useSlippage'\nimport { BondsData } from '../../types/bonds'\nimport { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '../../utils/displayHelpers'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { reportError } from '../../utils/reportError'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport { getSymbol } from '../../utils/getNativeTicker'\n\nimport useSUIAccount from '../../hooks/accounts/useSUIAccount'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport useSortedZapList from '../../hooks/useSortedZapList'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\n\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\n\nimport { SUI_DEPOSIT_FUNCTION, SUI_PACKAGE_ID } from '../../constants/suiConstants'\nimport { getSuiClient, readFreshTrueBondPrice, verifySuiTxSuccess } from '../../utils/suiHelpers'\nimport { openSuiWalletConnector } from '../../config/constants/walletConnectors'\nimport { MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { QUERY_KEYS } from '../../config/constants/queryKeys'\nimport axios from 'axios'\nimport { SuiJsonRpcClient } from '@mysten/sui/dist/cjs/jsonRpc/client'\nimport { mulDivRound, parseUnits, toFixedString } from '../../utils/fixedPoint'\n\n// (100 + slippage) / 100 as an exact integer fraction, scaled by 1e6 to preserve fractional\n// slippage percentages (e.g. 0.5%) without a float precompute.\nconst slippageMaxPrice = (priceBig: bigint, slippage: number): bigint =>\n mulDivRound(priceBig, parseUnits(String(100 + slippage), 6), parseUnits('100', 6), 'ceil')\n\nconst extractSuiBillId = async (digest: string, suiClient: SuiJsonRpcClient): Promise<string> => {\n const txBlock = await suiClient.getTransactionBlock({\n digest,\n options: {\n showEffects: true,\n showObjectChanges: true,\n showEvents: true,\n },\n })\n const bondNftType = `${SUI_PACKAGE_ID}::bond_nft::BondNFT`\n const createdNft = txBlock.objectChanges?.find(\n (change) =>\n change.type === 'created' && 'objectType' in change && (change.objectType as string)?.includes(bondNftType),\n )\n if (createdNft && 'objectId' in createdNft) {\n const nftObjectId = createdNft.objectId as string\n try {\n const nftObj = await suiClient.getObject({\n id: nftObjectId,\n options: { showContent: true },\n })\n if (nftObj.data?.content?.dataType === 'moveObject') {\n const fields = nftObj.data.content.fields as Record<string, any>\n const billId = String(fields?.bill_id ?? '')\n if (billId && billId !== 'undefined' && billId !== '') {\n return billId\n }\n }\n } catch (e) {\n console.warn('[SUI AFTER-PURCHASE] Failed to read BondNFT object:', nftObjectId, e)\n }\n }\n return `digest:${digest}`\n}\n\ninterface BuyComponentSuiProps {\n onDismiss?: () => void\n bondAddress?: string\n bondChain?: number\n setBillId?: (id: string) => void\n isProjectView?: boolean\n}\n\nconst BuyComponentSui: React.FC<BuyComponentSuiProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n isProjectView,\n setBillId,\n}) => {\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n\n // Hooks\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { data: bonds } = useBondsData()\n const { addToastError, addToastSuccess } = usePopups()\n const { solSlippage: slippage } = useSlippage() // reuse Sol slippage bucket for Sui\n\n const bondData: BondsData | undefined = bonds?.find(\n (bond) => bond?.contractAddress?.[bond?.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )\n\n // Derived pricing (same path the Solana no-tier branch uses).\n const trueBondPriceData = findHighestTrueBondPrice('0', bondData?.trueBondPrices)\n\n // State\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData?.chainId])\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Token selection — reuses the same infrastructure as Solana\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const principalAddress = bondData?.lpToken?.address?.[bondData?.chainId]\n // Detect zap: selected token differs from the bond principal\n const SUI_NATIVE_COIN_TYPE = '0x2::sui::SUI'\n const isNativeMatchingPrincipal =\n (inputTokenString === 'NATIVE' || inputTokenString?.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()) &&\n principalAddress?.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n const isZap =\n !!inputTokenString &&\n !!principalAddress &&\n !isNativeMatchingPrincipal &&\n inputTokenString.toLowerCase() !== principalAddress.toLowerCase()\n\n // Zap quote from Aftermath DEX aggregator\n const suiZapToken = findSuiZapToken(\n inputToken && inputToken !== 'NATIVE'\n ? inputToken?.address?.[ChainId.SUI]\n : inputToken === 'NATIVE'\n ? '0x2::sui::SUI'\n : undefined,\n )\n const [fetchingZapQuote, aftermathQuote, zapDepositAmount, zapError] = useSuiZapQuote(\n inputValue,\n suiZapToken,\n bondData,\n suiAccount ?? undefined,\n slippage,\n )\n\n // Sorted zap list (balances + prices)\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n\n // Estimations — use zapDepositAmount if swapping\n const depositAmount = isZap ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = $${formatUSDNumber(\n (parseFloat(inputValue || '0') * (inputTokenPrice ?? 0)).toString(),\n )}`\n\n const exceedsRealMaxBuy = getMaxBuy(bondData, true) <= getPayoutAmount(bondData, depositAmount, '0')\n const exceedsSafeMaxBuy =\n getMaxBuy(bondData, false) * (isZap ? 0.995 : 0.9995) <= getPayoutAmount(bondData, depositAmount, '0')\n\n const exceedsBalance = Number(inputCurrencyBalance ?? '0') < Number(inputValue)\n\n const load = loadingTx || (fetchingZapQuote && !!inputValue)\n\n // Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = () => {\n const balance = Number(inputCurrencyBalance ?? '0')\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 9\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), '0')\n if (maxPossibleUserPurchase > maxBuyAmount) {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n setInputValue(toFixedString(principalForMaxBuy, principalDecimals))\n } else {\n setInputValue(toFixedString(balance, principalDecimals))\n }\n }\n\n const handleBuyCallback = async () => {\n if (!suiAccount || !bondData || !inputValue || !signAndExecuteTransaction) return\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n setLoadingTx(true)\n\n const principalDecimals = bondData.lpToken.decimals[bondData.chainId] ?? 9\n const atomicAmount = parseUnits(inputValue, principalDecimals, 'floor').toString()\n\n const market = bondData.contractAddress[bondData.chainId]\n\n // Read fresh bond price from chain to avoid stale cache after previous purchases\n const freshTruePrice = await readFreshTrueBondPrice(market)\n const atomicMaxPrice = slippageMaxPrice(freshTruePrice, slippage).toString()\n const principalCoinType = bondData.lpToken.address[bondData.chainId]\n const payoutCoinType = bondData.earnToken.address[bondData.chainId]\n if (!principalCoinType || !payoutCoinType) throw new Error('Missing token type info')\n\n // Build Sui transaction\n const tx = new Transaction()\n const isPrincipalNativeSui =\n !principalCoinType || principalCoinType.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n\n let principalCoin\n if (isPrincipalNativeSui) {\n ;[principalCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(atomicAmount)])\n } else {\n const suiClient = getSuiClient()\n const userCoins = await suiClient.getCoins({ owner: suiAccount, coinType: principalCoinType })\n if (!userCoins.data.length) throw new Error(`No ${bondData.lpToken.symbol} coins found in wallet`)\n if (userCoins.data.length > 1) {\n const [primary, ...rest] = userCoins.data.map((c) => tx.object(c.coinObjectId))\n tx.mergeCoins(primary, rest)\n ;[principalCoin] = tx.splitCoins(primary, [tx.pure.u64(atomicAmount)])\n } else {\n ;[principalCoin] = tx.splitCoins(tx.object(userCoins.data[0].coinObjectId), [tx.pure.u64(atomicAmount)])\n }\n }\n\n if (!market || !bondData?.suiTreasuryId || !bondData?.billNnftAddress?.[ChainId.SUI]) {\n return\n }\n\n tx.moveCall({\n target: SUI_DEPOSIT_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bondData.suiTreasuryId),\n tx.object(bondData.billNnftAddress[ChainId.SUI]),\n principalCoin,\n tx.pure.u64(atomicMaxPrice),\n tx.pure.address(suiAccount),\n tx.object('0x6'), // clock\n ],\n })\n\n // Pre-build the transaction so the wallet receives fully-resolved bytes.\n // Some wallets (e.g. Phantom) fail with \"Unexpected error\" when they have\n // to build/simulate a Transaction object themselves.\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000) // 0.05 SUI — generous for a bond deposit\n const builtBytes = await tx.build({ client: getSuiClient() })\n const prebuiltTx = Transaction.from(builtBytes)\n const response = await signAndExecuteTransaction({\n transaction: prebuiltTx,\n })\n\n const digest = response?.digest\n if (!digest) throw new Error('No tx digest returned by wallet')\n\n const suiClient = getSuiClient()\n await suiClient.waitForTransaction({ digest })\n await verifySuiTxSuccess(digest)\n\n // Extract the bill_id from the confirmed transaction.\n // extractSuiBillId logs the full tx block so you can inspect the raw data\n // in case automatic extraction fails.\n const billId = await extractSuiBillId(digest, suiClient)\n console.log('[SUI AFTER-PURCHASE] handleBuyCallback billId:', billId)\n\n // Invalidate bonds data so next purchase uses fresh pricing\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.BONDS_DATA] })\n\n // Sui's indexer has a short lag — getOwnedObjects may not return the\n // new BondNFT immediately. Schedule re-invalidations so the Your Bonds\n // view picks up the new bond once the indexer catches up.\n setTimeout(() => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] }), 3000)\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(market),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n addToastSuccess(digest, bondChain as ChainId)\n setBillId?.(billId)\n } catch (error: any) {\n console.error('[SUI DEBUG] Error during Sui bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error?.message,\n extraInfo: { type: 'suiBuyBond', error: error?.message },\n chainId: bondChain,\n account: suiAccount,\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleZapCallback = async () => {\n if (loadingTx || !suiAccount || !bondData || !aftermathQuote || !signAndExecuteTransaction) return\n\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n try {\n setLoadingTx(true)\n const suiClient = getSuiClient()\n const principalDecimals = bondData.lpToken.decimals[bondData.chainId] ?? 6\n const depositAmountAtomic = parseUnits(zapDepositAmount, principalDecimals, 'floor').toString()\n\n // TX1: Acquire principal tokens\n // if (IS_SUI_MAINNET) {\n // Mainnet: swap via Aftermath DEX aggregator\n const txResponse = await axios.post(AFTERMATH_TX_API_URL, {\n walletAddress: suiAccount,\n completeRoute: aftermathQuote,\n slippage: slippage / 100,\n })\n\n const swapTxBytes = txResponse.data\n if (!swapTxBytes) throw new Error('Aftermath returned no transaction data')\n\n const swapTx = Transaction.from(swapTxBytes)\n const swapResponse = await signAndExecuteTransaction({ transaction: swapTx })\n const swapDigest = swapResponse?.digest\n if (!swapDigest) throw new Error('No tx digest returned for swap')\n await suiClient.waitForTransaction({ digest: swapDigest })\n // } else {\n // // Testnet: mint principal tokens via test_principal_token::mint\n // // No DEX aggregator supports Sui testnet or custom test tokens.\n // const mintTx = new Transaction()\n // mintTx.moveCall({\n // target: SUI_MINT_PRINCIPAL_FUNCTION,\n // arguments: [\n // mintTx.object(SUI_PRINCIPAL_TOKEN_ADMIN_TESTNET),\n // mintTx.pure.u64(depositAmountAtomic),\n // mintTx.pure.address(suiAccount),\n // ],\n // })\n //\n // mintTx.setSender(suiAccount)\n // mintTx.setGasBudget(50_000_000)\n // const builtMint = await mintTx.build({ client: suiClient })\n // const prebuiltMint = Transaction.from(builtMint)\n //\n // const mintResponse = await signAndExecuteTransaction({ transaction: prebuiltMint })\n // const mintDigest = mintResponse?.digest\n // if (!mintDigest) throw new Error('No tx digest returned for testnet mint')\n // await suiClient.waitForTransaction({ digest: mintDigest })\n // }\n\n // TX2: Deposit into bond with principal tokens\n const market = bondData.contractAddress[ChainId.SUI]\n\n // Read fresh bond price from chain to avoid stale cache\n const freshTruePrice = await readFreshTrueBondPrice(market)\n const atomicMaxPrice = slippageMaxPrice(freshTruePrice, slippage).toString()\n\n const principalCoinType = bondData.lpToken.address[bondData.chainId]\n const payoutCoinType = bondData.earnToken.address[bondData.chainId]\n if (!principalCoinType || !payoutCoinType) throw new Error('Missing token type info')\n\n const tx = new Transaction()\n const isPrincipalNativeSui = principalCoinType.toLowerCase() === SUI_NATIVE_COIN_TYPE.toLowerCase()\n\n let principalCoin\n if (isPrincipalNativeSui) {\n ;[principalCoin] = tx.splitCoins(tx.gas, [tx.pure.u64(depositAmountAtomic)])\n } else {\n const userCoins = await suiClient.getCoins({ owner: suiAccount, coinType: principalCoinType })\n if (!userCoins.data.length) throw new Error(`No ${bondData.lpToken.symbol} coins found after swap`)\n if (userCoins.data.length > 1) {\n const [primary, ...rest] = userCoins.data.map((c) => tx.object(c.coinObjectId))\n tx.mergeCoins(primary, rest)\n ;[principalCoin] = tx.splitCoins(primary, [tx.pure.u64(depositAmountAtomic)])\n } else {\n ;[principalCoin] = tx.splitCoins(tx.object(userCoins.data[0].coinObjectId), [\n tx.pure.u64(depositAmountAtomic),\n ])\n }\n }\n\n if (!market || !bondData?.suiTreasuryId || !bondData?.billNnftAddress?.[ChainId.SUI]) {\n return\n }\n\n tx.moveCall({\n target: SUI_DEPOSIT_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(bondData.suiTreasuryId),\n tx.object(bondData.billNnftAddress[ChainId.SUI]),\n principalCoin,\n tx.pure.u64(atomicMaxPrice),\n tx.pure.address(suiAccount),\n tx.object('0x6'), // clock\n ],\n })\n\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000)\n const builtDeposit = await tx.build({ client: suiClient })\n const prebuiltDeposit = Transaction.from(builtDeposit)\n\n const depositResponse = await signAndExecuteTransaction({ transaction: prebuiltDeposit })\n const depositDigest = depositResponse?.digest\n if (!depositDigest) throw new Error('No tx digest returned for deposit')\n await suiClient.waitForTransaction({ digest: depositDigest })\n await verifySuiTxSuccess(depositDigest)\n\n // Extract the bill_id from the confirmed deposit transaction.\n // extractSuiBillId logs the full tx block so you can inspect the raw data\n // in case automatic extraction fails.\n const billId = await extractSuiBillId(depositDigest, suiClient)\n console.log('[SUI AFTER-PURCHASE] handleZapCallback billId:', billId)\n\n // Invalidate bonds data so next purchase uses fresh pricing\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.BONDS_DATA] })\n\n // Sui indexer lag — schedule delayed re-invalidations for user bonds\n setTimeout(() => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] }), 3000)\n\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bond',\n token1: getSymbol(inputToken, bondData?.chainId),\n token2: bondData?.lpToken.symbol ?? '',\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(market),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n addToastSuccess(depositDigest, bondChain as ChainId)\n setBillId?.(billId)\n } catch (error: any) {\n console.error('Error during Sui zap bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error?.message,\n extraInfo: { type: 'suiZapBuyBond', error: error?.message },\n chainId: bondChain,\n account: suiAccount,\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleBuy = () => {\n if (loadingTx) return\n if (isZap) {\n handleZapCallback()\n } else {\n handleBuyCallback()\n }\n }\n\n // Sync inputTokenString when bondData loads after initial render\n useEffect(() => {\n const addr = bondData?.lpToken?.address?.[bondData?.chainId]\n if (addr && !inputTokenString) {\n setInputTokenString(addr)\n }\n }, [bondData?.lpToken?.address, bondData?.chainId]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Auto-select highest balance token when zap list loads\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0]?.token === 'NATIVE' ? 'NATIVE' : sortedZapList[0]?.token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n const hasPositiveBonus = (trueBondPriceData?.bonusWithFee ?? 0) > 0\n\n const canBuy =\n !load &&\n !!suiAccount &&\n !bondData?.soldOut &&\n !!inputValue &&\n parseFloat(inputValue) > 0 &&\n !exceedsRealMaxBuy &&\n !exceedsBalance &&\n hasPositiveBonus &&\n !SDKConfig.blockSales &&\n !zapError &&\n !(isZap && !aftermathQuote)\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} hidePromotionUi />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={inputValue}\n inputTokenPrice={inputTokenPrice}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZap}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={ChainId.SUI}\n enableZap={true}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={inputTokenPrice}\n isConnected={!!suiAccount}\n />\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!suiAccount ? (\n <Button\n className=\"action-button\"\n onClick={openSuiWalletConnector}\n sx={{ width: '100%', fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n Connect to Sui\n </Button>\n ) : (\n <Button\n className=\"action-button\"\n load={load}\n disabled={!canBuy}\n onClick={handleBuy}\n sx={{ width: '100%', fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : zapError\n ? 'Swap quote failed'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Insufficient balance'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : 'buy'}\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\n\nexport default BuyComponentSui\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -5,8 +5,8 @@ import Modal from '../../../../components/uikit-sdk/Modal/index.js';
5
5
  import Button from '../../../../components/uikit-sdk/Button/Button.js';
6
6
  import TokenImage from '../../../../components/uikit-sdk/TokenImage/index.js';
7
7
  import Estimations from '../Estimations.js';
8
- import BigNumber from 'bignumber.js';
9
8
  import { getBalanceNumber } from '../../../../utils/getBalanceNumber.js';
9
+ import { mulDivRound, parseUnits } from '../../../../utils/fixedPoint.js';
10
10
  import useTierPoints from '../../../../state/tiers/useTierPoints.js';
11
11
  import { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers.js';
12
12
  import Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow.js';
@@ -20,7 +20,7 @@ const NewRateModal = ({ bond, zapTrueBondPrice, depositAmount, youSpendString, f
20
20
  const fee = bond?.feeInPayout ?? 0;
21
21
  const earnTokenPrice = parseFloat(bond?.payoutTokenPrice ?? '0');
22
22
  const lpPrice = parseFloat(bond?.principalTokenPrice ?? '0');
23
- const trueBillPriceMinusFee = new BigNumber(zapTrueBondPrice ?? '0').times((100 + fee) / 100);
23
+ const trueBillPriceMinusFee = mulDivRound(BigInt(zapTrueBondPrice ?? '0'), parseUnits(String(100 + fee), 6), parseUnits('100', 6), 'halfUp');
24
24
  const priceUSDMinusFee = getBalanceNumber(trueBillPriceMinusFee) * lpPrice;
25
25
  const discountWithoutFee = ((earnTokenPrice - priceUSDMinusFee) / earnTokenPrice) * 100;
26
26
  const zapBonusWithFee = discountWithoutFee > 0 ? (discountWithoutFee / (100 - discountWithoutFee)) * 100 : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"NewRateModal.js","sources":["../../../../../src/views/BuyBond/components/NewRateModal/NewRateModal.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport { BondsData } from '../../../../types/bonds'\nimport Estimations from '../Estimations'\nimport BigNumber from 'bignumber.js'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport useTierPoints from '../../../../state/tiers/useTierPoints'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\n\nconst NewRateModal = ({\n bond,\n zapTrueBondPrice,\n depositAmount,\n youSpendString,\n fetchingZapQuote,\n zapError,\n onDismiss,\n}: {\n bond?: BondsData\n zapTrueBondPrice?: string\n depositAmount: string\n youSpendString?: string\n fetchingZapQuote?: boolean\n zapError?: boolean\n onDismiss?: () => void\n}) => {\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bond?.trueBondPrices)\n\n const tokenSymbol = bond?.earnToken?.symbol\n const oldBonus = trueBondPrice?.bonusWithFee ?? 0\n const fee = bond?.feeInPayout ?? 0\n const earnTokenPrice = parseFloat(bond?.payoutTokenPrice ?? '0')\n const lpPrice = parseFloat(bond?.principalTokenPrice ?? '0')\n const trueBillPriceMinusFee = new BigNumber(zapTrueBondPrice ?? '0').times((100 + fee) / 100)\n const priceUSDMinusFee = getBalanceNumber(trueBillPriceMinusFee) * lpPrice\n const discountWithoutFee = ((earnTokenPrice - priceUSDMinusFee) / earnTokenPrice) * 100\n const zapBonusWithFee = discountWithoutFee > 0 ? (discountWithoutFee / (100 - discountWithoutFee)) * 100 : 0\n\n return (\n <Modal title=\"Bonus update\" sx={{ width: '380px' }}>\n <Flex sx={{ width: '100%', alignItems: 'center', flexDirection: 'column', mt: '10px' }}>\n <Flex sx={{ display: 'block', fontSize: '14px', fontWeight: 500, color: 'textDisabledButton' }}>\n The bonus for the bond you are purchasing has been adjusted by{' '}\n <Text sx={{ color: 'error' }}>{(zapBonusWithFee - oldBonus).toFixed(2)}%</Text>.\n </Flex>\n <Flex\n sx={{\n p: '8px 4px 4px 4px',\n borderRadius: '8px',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Flex sx={{ alignItems: 'center' }}>\n <TokenImage size={30} symbol={tokenSymbol} />\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Text sx={{ fontSize: '12px', fontWeight: '300', lineHeight: '14px' }}>Old Bonus:</Text>\n <Text sx={{ fontSize: '12px', fontWeight: 400 }}>\n {oldBonus?.toFixed(2)}% {tokenSymbol}\n </Text>\n </Flex>\n </Flex>\n <Flex sx={{ width: '15px', height: '15px', ml: '20px', mr: '10px', alignItems: 'center' }}>\n <Arrow direction=\"right\" />\n </Flex>\n <Flex sx={{ alignItems: 'center' }}>\n <TokenImage size={30} symbol={tokenSymbol} />\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Text sx={{ fontSize: '12px', fontWeight: '300', lineHeight: '14px' }}>New Bonus:</Text>\n <Text sx={{ fontSize: '12px', fontWeight: 400 }}>\n {zapBonusWithFee.toFixed(2)}% {tokenSymbol}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={depositAmount} // placeholder value\n inputTokenPrice={1} // placeholder value\n bondData={{ ...bond, trueBillPrice: zapTrueBondPrice } as BondsData}\n youSpendString={youSpendString}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n isZap\n />\n <Flex\n sx={{\n width: '100%',\n fontSize: '14px',\n fontWeight: 500,\n color: 'textDisabledButton',\n justifyContent: 'flex-start',\n mb: '10px',\n }}\n >\n Would you like to confirm the new rate?\n </Flex>\n <Button fullWidth onClick={onDismiss} disabled={fetchingZapQuote} load={fetchingZapQuote}>\n {fetchingZapQuote ? 'Loading' : 'Confirm'}\n </Button>\n </Flex>\n </Modal>\n )\n}\n\nexport default NewRateModal\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"NewRateModal.js","sources":["../../../../../src/views/BuyBond/components/NewRateModal/NewRateModal.tsx"],"sourcesContent":["import React from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport Text from '../../../../components/uikit-sdk/Text'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport { BondsData } from '../../../../types/bonds'\nimport Estimations from '../Estimations'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { mulDivRound, parseUnits } from '../../../../utils/fixedPoint'\nimport useTierPoints from '../../../../state/tiers/useTierPoints'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport Arrow from '../../../../components/uikit-sdk/Svg/Icons/Arrow'\n\nconst NewRateModal = ({\n bond,\n zapTrueBondPrice,\n depositAmount,\n youSpendString,\n fetchingZapQuote,\n zapError,\n onDismiss,\n}: {\n bond?: BondsData\n zapTrueBondPrice?: string\n depositAmount: string\n youSpendString?: string\n fetchingZapQuote?: boolean\n zapError?: boolean\n onDismiss?: () => void\n}) => {\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const trueBondPrice = findHighestTrueBondPrice(promotionalPoints, bond?.trueBondPrices)\n\n const tokenSymbol = bond?.earnToken?.symbol\n const oldBonus = trueBondPrice?.bonusWithFee ?? 0\n const fee = bond?.feeInPayout ?? 0\n const earnTokenPrice = parseFloat(bond?.payoutTokenPrice ?? '0')\n const lpPrice = parseFloat(bond?.principalTokenPrice ?? '0')\n const trueBillPriceMinusFee = mulDivRound(\n BigInt(zapTrueBondPrice ?? '0'),\n parseUnits(String(100 + fee), 6),\n parseUnits('100', 6),\n 'halfUp',\n )\n const priceUSDMinusFee = getBalanceNumber(trueBillPriceMinusFee) * lpPrice\n const discountWithoutFee = ((earnTokenPrice - priceUSDMinusFee) / earnTokenPrice) * 100\n const zapBonusWithFee = discountWithoutFee > 0 ? (discountWithoutFee / (100 - discountWithoutFee)) * 100 : 0\n\n return (\n <Modal title=\"Bonus update\" sx={{ width: '380px' }}>\n <Flex sx={{ width: '100%', alignItems: 'center', flexDirection: 'column', mt: '10px' }}>\n <Flex sx={{ display: 'block', fontSize: '14px', fontWeight: 500, color: 'textDisabledButton' }}>\n The bonus for the bond you are purchasing has been adjusted by{' '}\n <Text sx={{ color: 'error' }}>{(zapBonusWithFee - oldBonus).toFixed(2)}%</Text>.\n </Flex>\n <Flex\n sx={{\n p: '8px 4px 4px 4px',\n borderRadius: '8px',\n width: '100%',\n alignItems: 'center',\n }}\n >\n <Flex sx={{ alignItems: 'center' }}>\n <TokenImage size={30} symbol={tokenSymbol} />\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Text sx={{ fontSize: '12px', fontWeight: '300', lineHeight: '14px' }}>Old Bonus:</Text>\n <Text sx={{ fontSize: '12px', fontWeight: 400 }}>\n {oldBonus?.toFixed(2)}% {tokenSymbol}\n </Text>\n </Flex>\n </Flex>\n <Flex sx={{ width: '15px', height: '15px', ml: '20px', mr: '10px', alignItems: 'center' }}>\n <Arrow direction=\"right\" />\n </Flex>\n <Flex sx={{ alignItems: 'center' }}>\n <TokenImage size={30} symbol={tokenSymbol} />\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Text sx={{ fontSize: '12px', fontWeight: '300', lineHeight: '14px' }}>New Bonus:</Text>\n <Text sx={{ fontSize: '12px', fontWeight: 400 }}>\n {zapBonusWithFee.toFixed(2)}% {tokenSymbol}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n inputValue={depositAmount} // placeholder value\n inputTokenPrice={1} // placeholder value\n bondData={{ ...bond, trueBillPrice: zapTrueBondPrice } as BondsData}\n youSpendString={youSpendString}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n isZap\n />\n <Flex\n sx={{\n width: '100%',\n fontSize: '14px',\n fontWeight: 500,\n color: 'textDisabledButton',\n justifyContent: 'flex-start',\n mb: '10px',\n }}\n >\n Would you like to confirm the new rate?\n </Flex>\n <Button fullWidth onClick={onDismiss} disabled={fetchingZapQuote} load={fetchingZapQuote}>\n {fetchingZapQuote ? 'Loading' : 'Confirm'}\n </Button>\n </Flex>\n </Modal>\n )\n}\n\nexport default NewRateModal\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { jsxs, jsx } from 'theme-ui/jsx-runtime';
2
2
  import { useState } from 'react';
3
- import BigNumber from 'bignumber.js';
4
3
  import Flex from '../../../../components/uikit-sdk/Flex/index.js';
5
4
  import useTierPoints, { getUserTier, TIERS_COLORS } from '../../../../state/tiers/useTierPoints.js';
6
5
  import { LaunchBondTiers, BillVersion } from '@ape.swap/apeswap-lists';
@@ -10,13 +9,13 @@ import { AnimatePresence, motion } from 'framer-motion';
10
9
  import { calculateOptimizationData } from '../../utils.js';
11
10
  import Discount from '../../../../components/uikit-sdk/Svg/Icons/Discount.js';
12
11
  import Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret.js';
12
+ import { toFixedString } from '../../../../utils/fixedPoint.js';
13
13
 
14
14
  const UPGRADE_NOW_USD_BUFFER = 0.1;
15
- const getUpgradeNowAmountUsd = (amountUsd) => new BigNumber(amountUsd)
16
- .decimalPlaces(2, BigNumber.ROUND_HALF_UP)
17
- .plus(UPGRADE_NOW_USD_BUFFER)
18
- .decimalPlaces(2, BigNumber.ROUND_CEIL)
19
- .toNumber();
15
+ const getUpgradeNowAmountUsd = (amountUsd) => {
16
+ const roundedUp = Number(toFixedString(amountUsd, 2, 'halfUp'));
17
+ return Number(toFixedString(roundedUp + UPGRADE_NOW_USD_BUFFER, 2, 'ceil'));
18
+ };
20
19
  const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDecimals, inputTokenPrice, }) => {
21
20
  const [isOpen, setIsOpen] = useState(false);
22
21
  // Hooks & Data
@@ -38,9 +37,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
38
37
  const shouldShowNextTierRowCaret = !highestProfitableTier;
39
38
  const handleSetNextTierAmount = (amount) => {
40
39
  const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0);
41
- const roundedInputValue = new BigNumber(inputValueInSelectedToken)
42
- .decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)
43
- .toFixed(inputTokenDecimals);
40
+ const roundedInputValue = toFixedString(inputValueInSelectedToken, inputTokenDecimals, 'ceil');
44
41
  setInputValue(roundedInputValue);
45
42
  };
46
43
  const handleTierSelection = (amount) => {
@@ -1 +1 @@
1
- {"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n // TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\n// import { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\nimport Discount from '../../../../components/uikit-sdk/Svg/Icons/Discount'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\n\nconst UPGRADE_NOW_USD_BUFFER = 0.1\n\nconst getUpgradeNowAmountUsd = (amountUsd: number) =>\n new BigNumber(amountUsd)\n .decimalPlaces(2, BigNumber.ROUND_HALF_UP)\n .plus(UPGRADE_NOW_USD_BUFFER)\n .decimalPlaces(2, BigNumber.ROUND_CEIL)\n .toNumber()\n\n// const getNextTierInfo = (userPoints: string) => {\n// const tiers = [\n// { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n// { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n// { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n// { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n// { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n// ]\n//\n// const userPointsBN = getBalanceNumber(userPoints)\n//\n// for (const { tier, threshold } of tiers) {\n// const thresholdNumber = getBalanceNumber(threshold)\n// if (userPointsBN < thresholdNumber) {\n// const pointsNeeded = thresholdNumber - userPointsBN\n// return { nextTier: tier, pointsNeeded }\n// }\n// }\n//\n// return null // User is at max tier (Mythical)\n// }\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n // const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n // const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n // const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n // const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n // const feeToBeCollected = inputAmountUSD * fee\n // const feeInAbond = feeToBeCollected / abondPrice!\n // const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const shouldRenderNextTierRow = Boolean(\n (userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen),\n )\n const shouldShowNextTierRowCaret = !highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n const roundedInputValue = new BigNumber(inputValueInSelectedToken)\n .decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)\n .toFixed(inputTokenDecimals)\n setInputValue(roundedInputValue)\n }\n\n const handleTierSelection = (amount: number) => {\n handleSetNextTierAmount(getUpgradeNowAmountUsd(amount))\n setIsOpen(false)\n }\n\n const handleToggleOpen = (e: React.MouseEvent) => {\n e.stopPropagation()\n setIsOpen((prev) => !prev)\n }\n\n const handleUpgradeNowClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!nextTierData) return\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: !highestProfitableTier && '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 <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 {!highestProfitableTier && <Caret direction={isOpen ? 'up' : 'down'} width={10} />}\n </Flex>\n )}\n {shouldRenderNextTierRow && !highestProfitableTier && (\n <Flex\n onClick={handleToggleOpen}\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '15px',\n py: '2px',\n mt: highestProfitableTier ? '3px' : '0px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n minWidth: '120px',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} purchase will grant you a{/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>\n {nextTierData?.tierName}\n </span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n {shouldShowNextTierRowCaret && (\n <span\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n onClick={handleToggleOpen}\n role=\"button\"\n aria-label={isOpen ? 'Collapse tier list' : 'Expand tier list'}\n >\n <Caret direction={isOpen ? 'up' : 'down'} width={8} />\n </span>\n )}\n </Flex>\n )}\n <AnimatePresence>\n {isOpen && optimizationData && !highestProfitableTier && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: index === 0 ? '0px' : '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={handleToggleOpen}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} purchase will grant you a{/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n minWidth: '100px',\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n </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_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\n// import { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\nimport Discount from '../../../../components/uikit-sdk/Svg/Icons/Discount'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\nimport { toFixedString } from '../../../../utils/fixedPoint'\n\nconst UPGRADE_NOW_USD_BUFFER = 0.1\n\nconst getUpgradeNowAmountUsd = (amountUsd: number) => {\n const roundedUp = Number(toFixedString(amountUsd, 2, 'halfUp'))\n return Number(toFixedString(roundedUp + UPGRADE_NOW_USD_BUFFER, 2, 'ceil'))\n}\n\n// const getNextTierInfo = (userPoints: string) => {\n// const tiers = [\n// { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n// { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n// { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n// { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n// { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n// ]\n//\n// const userPointsBN = getBalanceNumber(userPoints)\n//\n// for (const { tier, threshold } of tiers) {\n// const thresholdNumber = getBalanceNumber(threshold)\n// if (userPointsBN < thresholdNumber) {\n// const pointsNeeded = thresholdNumber - userPointsBN\n// return { nextTier: tier, pointsNeeded }\n// }\n// }\n//\n// return null // User is at max tier (Mythical)\n// }\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n // const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n // const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n // const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n // const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n // const feeToBeCollected = inputAmountUSD * fee\n // const feeInAbond = feeToBeCollected / abondPrice!\n // const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const shouldRenderNextTierRow = Boolean(\n (userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen),\n )\n const shouldShowNextTierRowCaret = !highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n const roundedInputValue = toFixedString(inputValueInSelectedToken, inputTokenDecimals, 'ceil')\n setInputValue(roundedInputValue)\n }\n\n const handleTierSelection = (amount: number) => {\n handleSetNextTierAmount(getUpgradeNowAmountUsd(amount))\n setIsOpen(false)\n }\n\n const handleToggleOpen = (e: React.MouseEvent) => {\n e.stopPropagation()\n setIsOpen((prev) => !prev)\n }\n\n const handleUpgradeNowClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (!nextTierData) return\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: !highestProfitableTier && '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 <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 {!highestProfitableTier && <Caret direction={isOpen ? 'up' : 'down'} width={10} />}\n </Flex>\n )}\n {shouldRenderNextTierRow && !highestProfitableTier && (\n <Flex\n onClick={handleToggleOpen}\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '15px',\n py: '2px',\n mt: highestProfitableTier ? '3px' : '0px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n minWidth: '120px',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} purchase will grant you a{/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>\n {nextTierData?.tierName}\n </span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n handleUpgradeNowClick(e)\n }}\n >\n {`Upgrade now >`}\n </span>\n {shouldShowNextTierRowCaret && (\n <span\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n onClick={handleToggleOpen}\n role=\"button\"\n aria-label={isOpen ? 'Collapse tier list' : 'Expand tier list'}\n >\n <Caret direction={isOpen ? 'up' : 'down'} width={8} />\n </span>\n )}\n </Flex>\n )}\n <AnimatePresence>\n {isOpen && optimizationData && !highestProfitableTier && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: index === 0 ? '0px' : '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={handleToggleOpen}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} purchase will grant you a{/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n minWidth: '100px',\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Sales } from '../../../../../state/bondApiStats/useUserApiStats';
2
+ import { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats';
3
3
  declare const SalesTable: ({ allSales }: {
4
4
  allSales: Sales[] | undefined;
5
5
  }) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"SalesTable.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/SalesTable.tsx"],"sourcesContent":["import React from 'react'\nimport { styles } from './styles'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport TokenImage from '../../../../../components/uikit-sdk/TokenImage'\nimport { formatUTCDate } from '../../../../../utils/dates/formatDate'\nimport { Sales } from '../../../../../state/bondApiStats/useUserApiStats'\nimport useEVMAccount from '../../../../../hooks/accounts/useEVMAccount'\n\nconst SalesTable = ({ allSales }: { allSales: Sales[] | undefined }) => {\n const { address: account } = useEVMAccount()\n\n return (\n <Flex sx={{ width: '100%', minWidth: '700px', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n mx: '2px',\n justifyContent: 'space-between',\n color: 'textDisabledButton',\n fontSize: '12px',\n fontWeight: 400,\n mb: '5px',\n }}\n >\n <Flex sx={{ width: '170px' }}>\n <Flex sx={{ width: '30px', justifyContent: 'center' }}>#</Flex>\n <Flex>Bond</Flex>\n </Flex>\n <Flex sx={{ width: '120px', justifyContent: 'center' }}>Purchase Date</Flex>\n <Flex sx={{ width: '160px', justifyContent: 'center' }}>Buyer</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>Deposit Amount</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>Payout Amount</Flex>\n <Flex sx={{ width: '85px', justifyContent: 'center' }}>Bonus</Flex>\n </Flex>\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n {allSales &&\n allSales.length > 0 &&\n allSales.map((sale, index) => {\n const buyer = sale.createdAddressOwner\n const receivedUsdAmount = (sale?.payout ?? 0) * sale?.payoutTokenPrice\n const discount = 100 - (sale.dollarValue * 100) / receivedUsdAmount\n const isUserTheBuyer = buyer?.toLowerCase() === account?.toLowerCase()\n const payoutToken = sale.payoutToken === 'LL.e' ? 'LL' : sale.payoutToken\n\n return (\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n border: '2px solid var(--theme-ui-colors-textDisabledButton)',\n height: '49px',\n mb: '5px',\n borderRadius: 'normal',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '12px',\n }}\n key={sale.transactionHash}\n >\n <Flex sx={{ width: '170px', alignItems: 'center' }}>\n <Flex sx={{ width: '30px', justifyContent: 'center' }}>{index + 4}</Flex>\n <TokenImage symbol={payoutToken} chain={sale.chainId} size={28} />\n <Flex sx={{ ml: '10px' }}>{sale.payoutToken}</Flex>\n </Flex>\n <Flex sx={{ width: '120px', justifyContent: 'center' }}>\n {formatUTCDate(new Date(sale.createdAt * 1000))}\n </Flex>\n <Flex sx={{ width: '160px', justifyContent: 'center', position: 'relative' }}>\n <Flex sx={{ position: 'relative' }}>\n {buyer?.slice(0, 4)}...\n {buyer?.slice(buyer?.length - 4, buyer?.length)}\n {isUserTheBuyer && <Flex sx={styles.youCard}>You</Flex>}\n </Flex>\n </Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>${sale.dollarValue.toFixed(2)}</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>${receivedUsdAmount?.toFixed(2)}</Flex>\n <Flex sx={{ width: '85px', justifyContent: 'center', color: discount > 0 ? 'success' : 'error' }}>\n {discount.toFixed(2)}%\n </Flex>\n </Flex>\n )\n })}\n </Flex>\n </Flex>\n )\n}\n\nexport default SalesTable\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"SalesTable.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/SalesTable.tsx"],"sourcesContent":["import React from 'react'\nimport { styles } from './styles'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport TokenImage from '../../../../../components/uikit-sdk/TokenImage'\nimport { formatUTCDate } from '../../../../../utils/dates/formatDate'\nimport { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats'\nimport useEVMAccount from '../../../../../hooks/accounts/useEVMAccount'\n\nconst SalesTable = ({ allSales }: { allSales: Sales[] | undefined }) => {\n const { address: account } = useEVMAccount()\n\n return (\n <Flex sx={{ width: '100%', minWidth: '700px', flexDirection: 'column', mt: '20px' }}>\n <Flex\n sx={{\n width: '100%',\n mx: '2px',\n justifyContent: 'space-between',\n color: 'textDisabledButton',\n fontSize: '12px',\n fontWeight: 400,\n mb: '5px',\n }}\n >\n <Flex sx={{ width: '170px' }}>\n <Flex sx={{ width: '30px', justifyContent: 'center' }}>#</Flex>\n <Flex>Bond</Flex>\n </Flex>\n <Flex sx={{ width: '120px', justifyContent: 'center' }}>Purchase Date</Flex>\n <Flex sx={{ width: '160px', justifyContent: 'center' }}>Buyer</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>Deposit Amount</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>Payout Amount</Flex>\n <Flex sx={{ width: '85px', justifyContent: 'center' }}>Bonus</Flex>\n </Flex>\n <Flex sx={{ width: '100%', flexDirection: 'column' }}>\n {allSales &&\n allSales.length > 0 &&\n allSales.map((sale, index) => {\n const buyer = sale.createdAddressOwner\n const receivedUsdAmount = (sale?.payout ?? 0) * sale?.payoutTokenPrice\n const discount = 100 - (sale.dollarValue * 100) / receivedUsdAmount\n const isUserTheBuyer = buyer?.toLowerCase() === account?.toLowerCase()\n const payoutToken = sale.payoutToken === 'LL.e' ? 'LL' : sale.payoutToken\n\n return (\n <Flex\n sx={{\n width: '100%',\n background: 'white3',\n border: '2px solid var(--theme-ui-colors-textDisabledButton)',\n height: '49px',\n mb: '5px',\n borderRadius: 'normal',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '12px',\n }}\n key={sale.transactionHash}\n >\n <Flex sx={{ width: '170px', alignItems: 'center' }}>\n <Flex sx={{ width: '30px', justifyContent: 'center' }}>{index + 4}</Flex>\n <TokenImage symbol={payoutToken} chain={sale.chainId} size={28} />\n <Flex sx={{ ml: '10px' }}>{sale.payoutToken}</Flex>\n </Flex>\n <Flex sx={{ width: '120px', justifyContent: 'center' }}>\n {formatUTCDate(new Date(sale.createdAt * 1000))}\n </Flex>\n <Flex sx={{ width: '160px', justifyContent: 'center', position: 'relative' }}>\n <Flex sx={{ position: 'relative' }}>\n {buyer?.slice(0, 4)}...\n {buyer?.slice(buyer?.length - 4, buyer?.length)}\n {isUserTheBuyer && <Flex sx={styles.youCard}>You</Flex>}\n </Flex>\n </Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>${sale.dollarValue.toFixed(2)}</Flex>\n <Flex sx={{ width: '110px', justifyContent: 'center' }}>${receivedUsdAmount?.toFixed(2)}</Flex>\n <Flex sx={{ width: '85px', justifyContent: 'center', color: discount > 0 ? 'success' : 'error' }}>\n {discount.toFixed(2)}%\n </Flex>\n </Flex>\n )\n })}\n </Flex>\n </Flex>\n )\n}\n\nexport default SalesTable\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Sales } from '../../../../../state/bondApiStats/useUserApiStats';
2
+ import { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats';
3
3
  declare const TopSaleCard: ({ sale, position }: {
4
4
  sale?: Sales;
5
5
  position: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TopSaleCard.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.tsx"],"sourcesContent":["import React from 'react'\nimport { styles } from './styles'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport { formatUTCDate } from '../../../../../utils/dates/formatDate'\nimport { Sales } from '../../../../../state/bondApiStats/useUserApiStats'\nimport useEVMAccount from '../../../../../hooks/accounts/useEVMAccount'\n\nconst TopSaleCard = ({ sale, position }: { sale?: Sales; position: number }) => {\n const { address: account } = useEVMAccount()\n const buyer = sale?.createdAddressOwner\n const isUserTheBuyer = buyer?.toLowerCase() === account?.toLowerCase()\n const receivedUsdAmount = (sale?.payout ?? 0) * (sale?.payoutTokenPrice ?? 0)\n const discount = 100 - ((sale?.dollarValue ?? 0) * 100) / receivedUsdAmount\n\n const borderColor = ['2px solid #E6C7B180', '2px solid #D5CDE480', '2px solid #D2B0BA80']\n const size = [\n ['60px', '60px', '60px', '225px'],\n ['60px', '60px', '60px', '200px'],\n ['60px', '60px', '60px', '200px'],\n ]\n\n return (\n <Flex sx={{ ...styles.topSaleCardContainer, border: borderColor[position - 1] }}>\n <Flex sx={{ width: ['100%', '100%', '100%', '180px'], flexDirection: 'column' }}>\n <Flex>\n <Flex sx={styles.positionNumber}>{position}</Flex>\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Flex sx={{ fontSize: '10px', color: 'textDisabledButton' }}>Buyer</Flex>\n <Flex sx={{ fontSize: '12px', lineHeight: '13px', position: 'relative' }}>\n {buyer?.slice(0, 4)}...\n {buyer?.slice(buyer?.length - 4, buyer?.length)}\n {isUserTheBuyer && <Flex sx={styles.youCard}>You</Flex>}\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ mt: '20px', width: '100%', fontSize: '12px', fontWeight: 400, flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Deposit Amount:</Flex>\n <Flex>${sale?.dollarValue.toFixed(2)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Payout Amount:</Flex>\n <Flex>${receivedUsdAmount?.toFixed(2)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Bonus:</Flex>\n <Flex sx={{ color: discount > 0 ? 'success' : 'error' }}>{discount?.toFixed(2)}%</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Date:</Flex>\n <Flex>{formatUTCDate(new Date((sale?.createdAt ?? 0) * 1000))}</Flex>\n </Flex>\n </Flex>\n </Flex>\n <img\n src={`https://ape.bond/images/singleBondPage/${position}.png`}\n alt=\"ads\"\n sx={{\n width: size[position - 1],\n height: size[position - 1],\n ...styles.medals,\n }}\n />\n <Flex\n sx={{\n position: 'absolute',\n width: '50%',\n right: '0px',\n height: '100%',\n background: '#BF5AC7',\n opacity: 0.2,\n filter: 'blur(92px)',\n }}\n />\n </Flex>\n )\n}\n\nexport default TopSaleCard\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"TopSaleCard.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/TopSaleCard.tsx"],"sourcesContent":["import React from 'react'\nimport { styles } from './styles'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport { formatUTCDate } from '../../../../../utils/dates/formatDate'\nimport { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats'\nimport useEVMAccount from '../../../../../hooks/accounts/useEVMAccount'\n\nconst TopSaleCard = ({ sale, position }: { sale?: Sales; position: number }) => {\n const { address: account } = useEVMAccount()\n const buyer = sale?.createdAddressOwner\n const isUserTheBuyer = buyer?.toLowerCase() === account?.toLowerCase()\n const receivedUsdAmount = (sale?.payout ?? 0) * (sale?.payoutTokenPrice ?? 0)\n const discount = 100 - ((sale?.dollarValue ?? 0) * 100) / receivedUsdAmount\n\n const borderColor = ['2px solid #E6C7B180', '2px solid #D5CDE480', '2px solid #D2B0BA80']\n const size = [\n ['60px', '60px', '60px', '225px'],\n ['60px', '60px', '60px', '200px'],\n ['60px', '60px', '60px', '200px'],\n ]\n\n return (\n <Flex sx={{ ...styles.topSaleCardContainer, border: borderColor[position - 1] }}>\n <Flex sx={{ width: ['100%', '100%', '100%', '180px'], flexDirection: 'column' }}>\n <Flex>\n <Flex sx={styles.positionNumber}>{position}</Flex>\n <Flex sx={{ flexDirection: 'column', ml: '10px' }}>\n <Flex sx={{ fontSize: '10px', color: 'textDisabledButton' }}>Buyer</Flex>\n <Flex sx={{ fontSize: '12px', lineHeight: '13px', position: 'relative' }}>\n {buyer?.slice(0, 4)}...\n {buyer?.slice(buyer?.length - 4, buyer?.length)}\n {isUserTheBuyer && <Flex sx={styles.youCard}>You</Flex>}\n </Flex>\n </Flex>\n </Flex>\n <Flex sx={{ mt: '20px', width: '100%', fontSize: '12px', fontWeight: 400, flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Deposit Amount:</Flex>\n <Flex>${sale?.dollarValue.toFixed(2)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Payout Amount:</Flex>\n <Flex>${receivedUsdAmount?.toFixed(2)}</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Bonus:</Flex>\n <Flex sx={{ color: discount > 0 ? 'success' : 'error' }}>{discount?.toFixed(2)}%</Flex>\n </Flex>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex>Date:</Flex>\n <Flex>{formatUTCDate(new Date((sale?.createdAt ?? 0) * 1000))}</Flex>\n </Flex>\n </Flex>\n </Flex>\n <img\n src={`https://ape.bond/images/singleBondPage/${position}.png`}\n alt=\"ads\"\n sx={{\n width: size[position - 1],\n height: size[position - 1],\n ...styles.medals,\n }}\n />\n <Flex\n sx={{\n position: 'absolute',\n width: '50%',\n right: '0px',\n height: '100%',\n background: '#BF5AC7',\n opacity: 0.2,\n filter: 'blur(92px)',\n }}\n />\n </Flex>\n )\n}\n\nexport default TopSaleCard\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Sales } from '../../../../../state/bondApiStats/useUserApiStats';
2
+ import { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats';
3
3
  declare const TopThreeSalesCards: ({ topThreeSales }: {
4
4
  topThreeSales?: Sales[];
5
5
  }) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"TopThreeSalesCards.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.tsx"],"sourcesContent":["import React from 'react'\nimport TopSaleCard from './TopSaleCard'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport { Sales } from '../../../../../state/bondApiStats/useUserApiStats'\n\nconst TopThreeSalesCards = ({ topThreeSales }: { topThreeSales?: Sales[] }) => {\n return (\n <Flex sx={{ width: '100%', mt: '15px', justifyContent: 'space-between' }}>\n <Flex sx={{ width: '100%' }}>\n {topThreeSales && topThreeSales.length > 0 && (\n <>\n {/* DESKTOP */}\n <Flex sx={{ width: '100%', display: ['none', 'none', 'none', 'flex'] }}>\n <Flex sx={{ width: ['32%'], mt: '15px' }}>\n {topThreeSales[1] && <TopSaleCard sale={topThreeSales[1]} position={2} />}\n </Flex>\n <Flex sx={{ width: ['36%'], mx: '20px' }}>\n {topThreeSales[0] && <TopSaleCard sale={topThreeSales[0]} position={1} />}\n </Flex>\n <Flex sx={{ width: ['32%'], mt: '15px' }}>\n {topThreeSales[2] && <TopSaleCard sale={topThreeSales[2]} position={3} />}\n </Flex>\n </Flex>\n {/* MOBILE */}\n <Flex sx={{ width: '100%', flexDirection: 'column', display: ['flex', 'flex', 'flex', 'none'] }}>\n {topThreeSales[0] && <TopSaleCard sale={topThreeSales[0]} position={1} />}\n <Flex sx={{ mt: '10px' }}>\n {topThreeSales[1] && <TopSaleCard sale={topThreeSales[1]} position={2} />}\n </Flex>\n <Flex sx={{ mt: '10px' }}>\n {topThreeSales[2] && <TopSaleCard sale={topThreeSales[2]} position={3} />}\n </Flex>\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )\n}\n\nexport default TopThreeSalesCards\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;AAKA,MAAM,kBAAkB,GAAG,CAAC,EAAE,aAAa,EAA+B,KAAI;AAC5E,IAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,EAAA,QAAA,EACtEA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EACxB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,KACxCC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEED,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,CACpED,IAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,IAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,GACpE,CAAA,EAAA,CACF,EAEPC,IAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,CAC5F,aAAa,CAAC,CAAC,CAAC,IAAID,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EACzEA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrB,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,GACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrB,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,IACF,CAAA,EAAA,CACN,CACJ,EAAA,CACI,EAAA,CACF;AAEX;;;;"}
1
+ {"version":3,"file":"TopThreeSalesCards.js","sources":["../../../../../../src/views/ProjectView/components/BondLeaderboard/components/TopThreeSalesCards.tsx"],"sourcesContent":["import React from 'react'\nimport TopSaleCard from './TopSaleCard'\nimport Flex from '../../../../../components/uikit-sdk/Flex'\nimport { Sales } from '../../../../../state/bondApiStats/useGetBondApiStats'\n\nconst TopThreeSalesCards = ({ topThreeSales }: { topThreeSales?: Sales[] }) => {\n return (\n <Flex sx={{ width: '100%', mt: '15px', justifyContent: 'space-between' }}>\n <Flex sx={{ width: '100%' }}>\n {topThreeSales && topThreeSales.length > 0 && (\n <>\n {/* DESKTOP */}\n <Flex sx={{ width: '100%', display: ['none', 'none', 'none', 'flex'] }}>\n <Flex sx={{ width: ['32%'], mt: '15px' }}>\n {topThreeSales[1] && <TopSaleCard sale={topThreeSales[1]} position={2} />}\n </Flex>\n <Flex sx={{ width: ['36%'], mx: '20px' }}>\n {topThreeSales[0] && <TopSaleCard sale={topThreeSales[0]} position={1} />}\n </Flex>\n <Flex sx={{ width: ['32%'], mt: '15px' }}>\n {topThreeSales[2] && <TopSaleCard sale={topThreeSales[2]} position={3} />}\n </Flex>\n </Flex>\n {/* MOBILE */}\n <Flex sx={{ width: '100%', flexDirection: 'column', display: ['flex', 'flex', 'flex', 'none'] }}>\n {topThreeSales[0] && <TopSaleCard sale={topThreeSales[0]} position={1} />}\n <Flex sx={{ mt: '10px' }}>\n {topThreeSales[1] && <TopSaleCard sale={topThreeSales[1]} position={2} />}\n </Flex>\n <Flex sx={{ mt: '10px' }}>\n {topThreeSales[2] && <TopSaleCard sale={topThreeSales[2]} position={3} />}\n </Flex>\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n )\n}\n\nexport default TopThreeSalesCards\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;AAKA,MAAM,kBAAkB,GAAG,CAAC,EAAE,aAAa,EAA+B,KAAI;AAC5E,IAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,EAAA,QAAA,EACtEA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EACxB,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,KACxCC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEED,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,CACpED,IAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrC,aAAa,CAAC,CAAC,CAAC,IAAIA,IAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,GACpE,CAAA,EAAA,CACF,EAEPC,IAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,CAC5F,aAAa,CAAC,CAAC,CAAC,IAAID,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EACzEA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrB,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,GACpE,EACPA,GAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAA,QAAA,EACrB,aAAa,CAAC,CAAC,CAAC,IAAIA,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAA,CAAI,EAAA,CACpE,IACF,CAAA,EAAA,CACN,CACJ,EAAA,CACI,EAAA,CACF;AAEX;;;;"}