@ape.swap/bonds-sdk 6.2.13-test.2 → 6.2.13-test.4

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 (37) hide show
  1. package/dist/components/MenuSelect/MenuSelect.js +1 -6
  2. package/dist/components/MenuSelect/MenuSelect.js.map +1 -1
  3. package/dist/components/NetworkFilter/index.js +1 -3
  4. package/dist/components/NetworkFilter/index.js.map +1 -1
  5. package/dist/components/TokenInfoAndName/index.js +1 -0
  6. package/dist/components/TokenInfoAndName/index.js.map +1 -1
  7. package/dist/components/uikit-sdk/Text/index.js +1 -8
  8. package/dist/components/uikit-sdk/Text/index.js.map +1 -1
  9. package/dist/components/uikit-sdk/Text/types.js.map +1 -1
  10. package/dist/hooks/accounts/useSUIAccount.d.ts +5 -4
  11. package/dist/hooks/accounts/useSUIAccount.js.map +1 -1
  12. package/dist/state/useSDKConfig.d.ts +0 -8
  13. package/dist/state/useSDKConfig.js.map +1 -1
  14. package/dist/styles.css +1 -1
  15. package/dist/utils/bondPriceHelpers.js +1 -11
  16. package/dist/utils/bondPriceHelpers.js.map +1 -1
  17. package/dist/utils/resolveColor.d.ts +0 -12
  18. package/dist/utils/resolveColor.js +0 -12
  19. package/dist/utils/resolveColor.js.map +1 -1
  20. package/dist/utils/solanaRpc.d.ts +1 -1
  21. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js +1 -14
  22. package/dist/views/Bonds/components/ChainBanner/ChainBanner.js.map +1 -1
  23. package/dist/views/BuyBond/BuyComponent.js +8 -9
  24. package/dist/views/BuyBond/BuyComponent.js.map +1 -1
  25. package/dist/views/BuyBond/BuyComponentSui.js.map +1 -1
  26. package/dist/views/BuyBond/components/L1xIframe/L1xIframe.d.ts +4 -0
  27. package/dist/views/BuyBond/components/L1xIframe/L1xIframe.js +12 -0
  28. package/dist/views/BuyBond/components/L1xIframe/L1xIframe.js.map +1 -0
  29. package/dist/views/BuyBond/utils.js +0 -1
  30. package/dist/views/BuyBond/utils.js.map +1 -1
  31. package/dist/views/LifiModal/LifiModal.js +1 -2
  32. package/dist/views/LifiModal/LifiModal.js.map +1 -1
  33. package/dist/views/YourBondsModal/components/Actions/Actions.js +1 -1
  34. package/dist/views/YourBondsModal/components/Actions/Actions.js.map +1 -1
  35. package/package.json +4 -4
  36. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js +0 -34
  37. package/dist/views/BuyBond/components/GetUpToComponent/GetUpToComponent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BuyComponentSui.js","sources":["../../../src/views/BuyBond/BuyComponentSui.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport clsx from 'clsx'\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 { apiPost } from '../../utils/httpClient'\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 swapTxBytes = await apiPost(AFTERMATH_TX_API_URL, {\n walletAddress: suiAccount,\n completeRoute: aftermathQuote,\n slippage: slippage / 100,\n })\n\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\n className=\"modal-content ape:flex ape:flex-col ape:rounded-[10px] ape:bg-white2 ape:w-full ape:p-[15px] ape:min-[800px]:p-[20px]\"\n style={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}\n >\n <Flex className=\"modaltable-container ape:w-full ape:flex ape:flex-col ape:relative\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} hidePromotionUi />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex className={clsx('ape:w-full', isProjectView ? 'ape:hidden ape:lg:flex' : 'ape: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 className=\"ape:w-full ape:justify-center ape:mt-[10px] ape:rounded-normal ape:p-[2px_10px]\"\n style={{ background: '#DE62F366' }}\n >\n <Text as=\"div\" size=\"12px\" className=\"ape:font-normal ape:flex ape:items-center ape:gap-[10px]\">\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container ape:w-full ape:flex ape:relative ape:flex-row ape:pt-[10px] ape:justify-between\">\n <Flex className=\"button-container buy ape:justify-center ape:items-center ape:cursor-pointer ape:w-full\">\n {!suiAccount ? (\n <Button\n className=\"action-button ape:w-full ape:text-[14px]! ape:lg:text-[16px]!\"\n onClick={openSuiWalletConnector}\n >\n Connect to Sui\n </Button>\n ) : (\n <Button\n className=\"action-button ape:w-full ape:text-[14px]! ape:lg:text-[16px]!\"\n load={load}\n disabled={!canBuy}\n onClick={handleBuy}\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 clsx from 'clsx'\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 { apiPost } from '../../utils/httpClient'\nimport { SuiClient } from '@mysten/sui/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: SuiClient): 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 swapTxBytes = await apiPost(AFTERMATH_TX_API_URL, {\n walletAddress: suiAccount,\n completeRoute: aftermathQuote,\n slippage: slippage / 100,\n })\n\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\n className=\"modal-content ape:flex ape:flex-col ape:rounded-[10px] ape:bg-white2 ape:w-full ape:p-[15px] ape:min-[800px]:p-[20px]\"\n style={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}\n >\n <Flex className=\"modaltable-container ape:w-full ape:flex ape:flex-col ape:relative\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} hidePromotionUi />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex className={clsx('ape:w-full', isProjectView ? 'ape:hidden ape:lg:flex' : 'ape: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 className=\"ape:w-full ape:justify-center ape:mt-[10px] ape:rounded-normal ape:p-[2px_10px]\"\n style={{ background: '#DE62F366' }}\n >\n <Text as=\"div\" size=\"12px\" className=\"ape:font-normal ape:flex ape:items-center ape:gap-[10px]\">\n <SafeHTMLComponent html={bondData?.warningCard} />\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container ape:w-full ape:flex ape:relative ape:flex-row ape:pt-[10px] ape:justify-between\">\n <Flex className=\"button-container buy ape:justify-center ape:items-center ape:cursor-pointer ape:w-full\">\n {!suiAccount ? (\n <Button\n className=\"action-button ape:w-full ape:text-[14px]! ape:lg:text-[16px]!\"\n onClick={openSuiWalletConnector}\n >\n Connect to Sui\n </Button>\n ) : (\n <Button\n className=\"action-button ape:w-full ape:text-[14px]! ape:lg:text-[16px]!\"\n load={load}\n disabled={!canBuy}\n onClick={handleBuy}\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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"}
@@ -0,0 +1,4 @@
1
+ declare const L1XIframe: ({ onDismiss }: {
2
+ onDismiss?: () => void;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export default L1XIframe;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import Modal from '../../../../components/uikit-sdk/Modal/index.js';
3
+ import ModalHeader from '../../../../components/uikit-sdk/Modal/ModalHeader.js';
4
+ import IconButton from '../../../../components/uikit-sdk/Button/IconButton.js';
5
+ import Close from '../../../../components/uikit-sdk/Svg/Icons/Close.js';
6
+
7
+ const L1XIframe = ({ onDismiss }) => {
8
+ return (jsxs(Modal, { sx: { height: '725px', width: '500px', p: '0px' }, children: [jsxs(ModalHeader, { sx: { p: '15px 20px 5px 20px', fontSize: '22px' }, children: [`Bridge to Layer One X`, jsx(IconButton, { icon: Close, color: "text", variant: "transparent", onClick: onDismiss })] }), jsx("iframe", { src: "https://www.qd.finance/swap", style: { width: '100%', height: '725px', border: 'none', borderRadius: 'normal' } })] }));
9
+ };
10
+
11
+ export { L1XIframe as default };
12
+ //# sourceMappingURL=L1xIframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"L1xIframe.js","sources":["../../../../../src/views/BuyBond/components/L1xIframe/L1xIframe.tsx"],"sourcesContent":["import React from 'react'\nimport Modal from '../../../../components/uikit-sdk/Modal'\nimport ModalHeader from '../../../../components/uikit-sdk/Modal/ModalHeader'\nimport IconButton from '../../../../components/uikit-sdk/Button/IconButton'\nimport Close from '../../../../components/uikit-sdk/Svg/Icons/Close'\n\nconst L1XIframe = ({ onDismiss }: { onDismiss?: () => void }) => {\n return (\n <Modal sx={{ height: '725px', width: '500px', p: '0px' }}>\n <ModalHeader sx={{ p: '15px 20px 5px 20px', fontSize: '22px' }}>\n {`Bridge to Layer One X`}\n <IconButton icon={Close} color=\"text\" variant=\"transparent\" onClick={onDismiss} />\n </ModalHeader>\n <iframe\n src=\"https://www.qd.finance/swap\"\n style={{ width: '100%', height: '725px', border: 'none', borderRadius: 'normal' }}\n />\n </Modal>\n )\n}\n\nexport default L1XIframe\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;AAMA,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,EAA8B,KAAI;AAC9D,IAAA,QACEA,IAAA,CAAC,KAAK,IAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,CACtDA,IAAA,CAAC,WAAW,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CAC3D,CAAA,qBAAA,CAAuB,EACxBC,GAAA,CAAC,UAAU,IAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,aAAa,EAAC,OAAO,EAAE,SAAS,GAAI,CAAA,EAAA,CACtE,EACdA,gBACE,GAAG,EAAC,6BAA6B,EACjC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAA,CACjF,CAAA,EAAA,CACI;AAEZ;;;;"}
@@ -20,7 +20,6 @@ function calculateOptimizationData(inputAmount, userPoints = '0', bond, inputTok
20
20
  }
21
21
  const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices);
22
22
  const currentTier = getUserTier(userPoints);
23
- console.log(currentTier);
24
23
  // const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100
25
24
  const currentPoints = BigInt(userPoints);
26
25
  const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/views/BuyBond/utils.ts"],"sourcesContent":["import { BondsData } from '../../types/bonds'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { getUserTier, NewTiers, TIERS_NAMES } from '../../state/tiers/useTierPoints'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nexport function calculateOptimizationData(\n inputAmount: string,\n userPoints = '0',\n bond: BondsData,\n inputTokenPriceUsd = 0,\n abondPriceUsd?: number,\n) {\n if (bond.chainId === ChainId.SUI || bond.chainId === ChainId.APTOS || bond.chainId === ChainId.SOL) return null\n\n const { trueBondPrices } = bond\n\n if (!trueBondPrices) {\n console.log('no truebondprices')\n return null\n }\n if (!abondPriceUsd) {\n console.log('No Abond Price')\n return null\n }\n\n if (inputTokenPriceUsd <= 0) {\n console.log('missing token price')\n return null\n }\n\n const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices)\n const currentTier = getUserTier(userPoints)!\n console.log(currentTier)\n\n // const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100\n const currentPoints = BigInt(userPoints)\n\n const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd\n\n const tierBoostRate = (bond.tierBoostRate ?? 0) / 100\n const tierBoostUsd = inputAmountUSD * tierBoostRate\n const feeInAbond = tierBoostUsd / abondPriceUsd\n const tierBoostPoints = feeInAbond * 4\n const currentPrice = parseFloat(currentTierData?.trueBondPrice!)\n\n const dataToReturn: Record<\n number,\n {\n tier: number\n tierName: string\n isProfitable: boolean\n tierCostUSD: number\n minBreakevenWithFeeUSD: number\n necessaryPointsToUpgrade: number\n }\n > = {}\n\n for (const tierData of trueBondPrices) {\n if (tierData.boost <= currentTier) continue\n // @ts-ignore\n const tierName = TIERS_NAMES[tierData.boost]\n\n const pointsNeededWei = BigInt(tierData.points) - currentPoints\n const abondNeededRaw = Math.ceil(Number(pointsNeededWei) / 1e18 / 4)\n\n const tierCostUsd = abondNeededRaw * abondPriceUsd\n const newPrice = parseFloat(tierData.trueBondPrice)\n const priceDiff = (currentPrice - newPrice) / currentPrice\n\n // const newBonusWithThisTier = tierData.bonusWithFee\n\n // const bonus_new = 1 + newBonusWithThisTier / 100\n\n // const denominator = bonus_new - bonus_curr + tierBoostRate\n const denominator = (1 - tierBoostRate) * priceDiff + tierBoostRate\n const minBreakeven = denominator > 0 ? tierCostUsd / denominator : Infinity\n const minBreakevenWithFee = minBreakeven * 1.05 + 0.1\n\n // for debugging purposes this two should match\n // const originalOutputUsd = minBreakeven * bonus_curr\n // const outputAfterUpgrade = (minBreakeven - (tierCostUsd - minBreakeven * tierBoostRate)) * bonus_new\n\n const isProfitable = inputAmountUSD > (minBreakevenWithFee ?? 0)\n\n dataToReturn[tierData.boost] = {\n tier: tierData.boost as NewTiers,\n tierName,\n isProfitable,\n tierCostUSD: tierCostUsd,\n minBreakevenWithFeeUSD: minBreakevenWithFee,\n necessaryPointsToUpgrade: abondNeededRaw * 4,\n }\n }\n\n const profitableTiers = Object.values(dataToReturn).filter((item) => item.isProfitable)\n const highestProfitableTier = profitableTiers[profitableTiers.length - 1]\n\n return { tierBoostPoints, highestProfitableTier, data: Object.values(dataToReturn) }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../src/views/BuyBond/utils.ts"],"sourcesContent":["import { BondsData } from '../../types/bonds'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport { getUserTier, NewTiers, TIERS_NAMES } from '../../state/tiers/useTierPoints'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nexport function calculateOptimizationData(\n inputAmount: string,\n userPoints = '0',\n bond: BondsData,\n inputTokenPriceUsd = 0,\n abondPriceUsd?: number,\n) {\n if (bond.chainId === ChainId.SUI || bond.chainId === ChainId.APTOS || bond.chainId === ChainId.SOL) return null\n\n const { trueBondPrices } = bond\n\n if (!trueBondPrices) {\n console.log('no truebondprices')\n return null\n }\n if (!abondPriceUsd) {\n console.log('No Abond Price')\n return null\n }\n\n if (inputTokenPriceUsd <= 0) {\n console.log('missing token price')\n return null\n }\n\n const currentTierData = findHighestTrueBondPrice(userPoints, trueBondPrices)\n const currentTier = getUserTier(userPoints)!\n\n // const bonus_curr = 1 + currentTierData?.bonusWithFee! / 100\n const currentPoints = BigInt(userPoints)\n\n const inputAmountUSD = parseFloat(inputAmount || '0') * inputTokenPriceUsd\n\n const tierBoostRate = (bond.tierBoostRate ?? 0) / 100\n const tierBoostUsd = inputAmountUSD * tierBoostRate\n const feeInAbond = tierBoostUsd / abondPriceUsd\n const tierBoostPoints = feeInAbond * 4\n const currentPrice = parseFloat(currentTierData?.trueBondPrice!)\n\n const dataToReturn: Record<\n number,\n {\n tier: number\n tierName: string\n isProfitable: boolean\n tierCostUSD: number\n minBreakevenWithFeeUSD: number\n necessaryPointsToUpgrade: number\n }\n > = {}\n\n for (const tierData of trueBondPrices) {\n if (tierData.boost <= currentTier) continue\n // @ts-ignore\n const tierName = TIERS_NAMES[tierData.boost]\n\n const pointsNeededWei = BigInt(tierData.points) - currentPoints\n const abondNeededRaw = Math.ceil(Number(pointsNeededWei) / 1e18 / 4)\n\n const tierCostUsd = abondNeededRaw * abondPriceUsd\n const newPrice = parseFloat(tierData.trueBondPrice)\n const priceDiff = (currentPrice - newPrice) / currentPrice\n\n // const newBonusWithThisTier = tierData.bonusWithFee\n\n // const bonus_new = 1 + newBonusWithThisTier / 100\n\n // const denominator = bonus_new - bonus_curr + tierBoostRate\n const denominator = (1 - tierBoostRate) * priceDiff + tierBoostRate\n const minBreakeven = denominator > 0 ? tierCostUsd / denominator : Infinity\n const minBreakevenWithFee = minBreakeven * 1.05 + 0.1\n\n // for debugging purposes this two should match\n // const originalOutputUsd = minBreakeven * bonus_curr\n // const outputAfterUpgrade = (minBreakeven - (tierCostUsd - minBreakeven * tierBoostRate)) * bonus_new\n\n const isProfitable = inputAmountUSD > (minBreakevenWithFee ?? 0)\n\n dataToReturn[tierData.boost] = {\n tier: tierData.boost as NewTiers,\n tierName,\n isProfitable,\n tierCostUSD: tierCostUsd,\n minBreakevenWithFeeUSD: minBreakevenWithFee,\n necessaryPointsToUpgrade: abondNeededRaw * 4,\n }\n }\n\n const profitableTiers = Object.values(dataToReturn).filter((item) => item.isProfitable)\n const highestProfitableTier = profitableTiers[profitableTiers.length - 1]\n\n return { tierBoostPoints, highestProfitableTier, data: Object.values(dataToReturn) }\n}\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { LiFiWidget } from '@lifi/widget';
3
3
  import Modal from '../../components/uikit-sdk/Modal/index.js';
4
4
  import ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader.js';
5
- import Text from '../../components/uikit-sdk/Text/index.js';
6
5
 
7
6
  const getFees = async (fromTokenSymbol, toTokenSymbol) => {
8
7
  const stableCoins = ['FRAX', 'USDC', 'USDT', 'DAI', 'BUSD', 'TUSD', 'USDD', 'FDUSD'];
@@ -61,7 +60,7 @@ const LifiModal = ({ bondChain, principalToken, onDismiss, }) => {
61
60
  },
62
61
  },
63
62
  };
64
- return (jsxs(Modal, { className: "ape:min-w-[450px] ape:justify-center ape:items-center ape:p-0", children: [jsx(ModalHeader, { onDismiss: onDismiss, hideDivider: true, className: "ape:p-[20px_20px_0_20px]", children: jsx(Text, { size: "22px", weight: 700, style: { lineHeight: '33px' }, children: "Swap & Bridge with LIFI" }) }), jsx(LiFiWidget, { ...config })] }));
63
+ return (jsxs(Modal, { className: "ape:min-w-100 ape:justify-center ape:items-center ape:p-0!", children: [jsx(ModalHeader, { className: "ape:px-6 ape:pt-4", onDismiss: onDismiss, hideDivider: true, children: "Swap & Bridge with LIFI" }), jsx(LiFiWidget, { ...config })] }));
65
64
  };
66
65
 
67
66
  export { LifiModal as default };
@@ -1 +1 @@
1
- {"version":3,"file":"LifiModal.js","sources":["../../../src/views/LifiModal/LifiModal.tsx"],"sourcesContent":["import React from 'react'\nimport { LiFiWidget } from '@lifi/widget'\nimport Modal from '../../components/uikit-sdk/Modal'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\nimport Text from '../../components/uikit-sdk/Text'\n\nconst getFees = async (fromTokenSymbol: string, toTokenSymbol: string): Promise<number> => {\n const stableCoins = ['FRAX', 'USDC', 'USDT', 'DAI', 'BUSD', 'TUSD', 'USDD', 'FDUSD']\n const isFromStable = stableCoins.includes(fromTokenSymbol)\n const isToStable = stableCoins.includes(toTokenSymbol)\n if (toTokenSymbol.toLowerCase() === 'abond') {\n return 0\n }\n return isFromStable && isToStable ? 0.001 : 0.003\n}\n\nconst LifiModal = ({\n bondChain,\n principalToken,\n onDismiss,\n}: {\n bondChain?: number\n principalToken?: string\n onDismiss?: () => void\n}) => {\n const config = {\n appearance: 'dark' as const,\n loadFonts: false,\n theme: {\n typography: {\n fontFamily: 'Poppins',\n },\n colorSchemes: {\n dark: {\n palette: {\n background: {\n default: '#161420',\n paper: '#1F1D29',\n },\n primary: {\n main: '#6560C5',\n },\n secondary: {\n main: '#6560C5',\n },\n },\n },\n },\n container: {\n boxShadow: '0px 8px 32px rgba(0, 0, 0, 0.08)',\n borderRadius: '16px',\n },\n },\n // fromToken: 'BNB',\n // fromChain: ChainId.BSC,\n toChain: bondChain,\n toToken: principalToken,\n sdkConfig: {\n rpcUrls: {\n [1151111081099710]: [\n 'https://ancient-cold-sailboat.solana-mainnet.quiknode.pro/da13400ad8d0035313f3e71c6a37c107d0d0334b',\n ],\n },\n },\n variant: 'wide' as const,\n integrator: 'apeswap',\n feeConfig: {\n calculateFee: async (params: any) => {\n return getFees(params.fromToken.symbol, params.toToken.symbol)\n },\n },\n }\n\n return (\n <Modal className=\"ape:min-w-[450px] ape:justify-center ape:items-center ape:p-0\">\n <ModalHeader onDismiss={onDismiss} hideDivider className=\"ape:p-[20px_20px_0_20px]\">\n <Text size=\"22px\" weight={700} style={{ lineHeight: '33px' }}>\n Swap & Bridge with LIFI\n </Text>\n </ModalHeader>\n <LiFiWidget {...config} />\n </Modal>\n )\n}\n\nexport default LifiModal\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;AAMA,MAAM,OAAO,GAAG,OAAO,eAAuB,EAAE,aAAqB,KAAqB;AACxF,IAAA,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;IACpF,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;AACtD,IAAA,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC3C,QAAA,OAAO,CAAC;IACV;IACA,OAAO,YAAY,IAAI,UAAU,GAAG,KAAK,GAAG,KAAK;AACnD,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,EACjB,SAAS,EACT,cAAc,EACd,SAAS,GAKV,KAAI;AACH,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,UAAU,EAAE,MAAe;AAC3B,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,SAAS;AACtB,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE;AACP,wBAAA,UAAU,EAAE;AACV,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,KAAK,EAAE,SAAS;AACjB,yBAAA;AACD,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,SAAS;AAChB,yBAAA;AACD,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,SAAS;AAChB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,kCAAkC;AAC7C,gBAAA,YAAY,EAAE,MAAM;AACrB,aAAA;AACF,SAAA;;;AAGD,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE;gBACP,CAAC,gBAAgB,GAAG;oBAClB,oGAAoG;AACrG,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,MAAe;AACxB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,SAAS,EAAE;AACT,YAAA,YAAY,EAAE,OAAO,MAAW,KAAI;AAClC,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAChE,CAAC;AACF,SAAA;KACF;IAED,QACEA,KAAC,KAAK,EAAA,EAAC,SAAS,EAAC,+DAA+D,EAAA,QAAA,EAAA,CAC9EC,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAA,IAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,QAAA,EACjFA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,yBAAA,EAAA,CAErD,EAAA,CACK,EACdA,GAAA,CAAC,UAAU,OAAK,MAAM,EAAA,CAAI,CAAA,EAAA,CACpB;AAEZ;;;;"}
1
+ {"version":3,"file":"LifiModal.js","sources":["../../../src/views/LifiModal/LifiModal.tsx"],"sourcesContent":["import React from 'react'\nimport { LiFiWidget } from '@lifi/widget'\nimport Modal from '../../components/uikit-sdk/Modal'\nimport ModalHeader from '../../components/uikit-sdk/Modal/ModalHeader'\n\nconst getFees = async (fromTokenSymbol: string, toTokenSymbol: string): Promise<number> => {\n const stableCoins = ['FRAX', 'USDC', 'USDT', 'DAI', 'BUSD', 'TUSD', 'USDD', 'FDUSD']\n const isFromStable = stableCoins.includes(fromTokenSymbol)\n const isToStable = stableCoins.includes(toTokenSymbol)\n if (toTokenSymbol.toLowerCase() === 'abond') {\n return 0\n }\n return isFromStable && isToStable ? 0.001 : 0.003\n}\n\nconst LifiModal = ({\n bondChain,\n principalToken,\n onDismiss,\n}: {\n bondChain?: number\n principalToken?: string\n onDismiss?: () => void\n}) => {\n const config = {\n appearance: 'dark' as const,\n loadFonts: false,\n theme: {\n typography: {\n fontFamily: 'Poppins',\n },\n colorSchemes: {\n dark: {\n palette: {\n background: {\n default: '#161420',\n paper: '#1F1D29',\n },\n primary: {\n main: '#6560C5',\n },\n secondary: {\n main: '#6560C5',\n },\n },\n },\n },\n container: {\n boxShadow: '0px 8px 32px rgba(0, 0, 0, 0.08)',\n borderRadius: '16px',\n },\n },\n // fromToken: 'BNB',\n // fromChain: ChainId.BSC,\n toChain: bondChain,\n toToken: principalToken,\n sdkConfig: {\n rpcUrls: {\n [1151111081099710]: [\n 'https://ancient-cold-sailboat.solana-mainnet.quiknode.pro/da13400ad8d0035313f3e71c6a37c107d0d0334b',\n ],\n },\n },\n variant: 'wide' as const,\n integrator: 'apeswap',\n feeConfig: {\n calculateFee: async (params: any) => {\n return getFees(params.fromToken.symbol, params.toToken.symbol)\n },\n },\n }\n\n return (\n <Modal className=\"ape:min-w-100 ape:justify-center ape:items-center ape:p-0!\">\n <ModalHeader className=\"ape:px-6 ape:pt-4\" onDismiss={onDismiss} hideDivider>\n Swap & Bridge with LIFI\n </ModalHeader>\n <LiFiWidget {...config} />\n </Modal>\n )\n}\n\nexport default LifiModal\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAKA,MAAM,OAAO,GAAG,OAAO,eAAuB,EAAE,aAAqB,KAAqB;AACxF,IAAA,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;IACpF,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;AACtD,IAAA,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC3C,QAAA,OAAO,CAAC;IACV;IACA,OAAO,YAAY,IAAI,UAAU,GAAG,KAAK,GAAG,KAAK;AACnD,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,EACjB,SAAS,EACT,cAAc,EACd,SAAS,GAKV,KAAI;AACH,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,UAAU,EAAE,MAAe;AAC3B,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,SAAS;AACtB,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE;AACP,wBAAA,UAAU,EAAE;AACV,4BAAA,OAAO,EAAE,SAAS;AAClB,4BAAA,KAAK,EAAE,SAAS;AACjB,yBAAA;AACD,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,SAAS;AAChB,yBAAA;AACD,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,SAAS;AAChB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,SAAS,EAAE,kCAAkC;AAC7C,gBAAA,YAAY,EAAE,MAAM;AACrB,aAAA;AACF,SAAA;;;AAGD,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE;gBACP,CAAC,gBAAgB,GAAG;oBAClB,oGAAoG;AACrG,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,MAAe;AACxB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,SAAS,EAAE;AACT,YAAA,YAAY,EAAE,OAAO,MAAW,KAAI;AAClC,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAChE,CAAC;AACF,SAAA;KACF;AAED,IAAA,QACEA,IAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,4DAA4D,EAAA,QAAA,EAAA,CAC3EC,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAE9D,EACdA,GAAA,CAAC,UAAU,EAAA,EAAA,GAAK,MAAM,EAAA,CAAI,CAAA,EAAA,CACpB;AAEZ;;;;"}
@@ -40,7 +40,7 @@ const Actions = ({ userBill }) => {
40
40
  !bond?.hide &&
41
41
  bond?.earnToken?.symbol?.toLowerCase() === userBill?.bond?.earnToken?.symbol?.toLowerCase());
42
42
  const canPurchaseAgain = !!similarLiveBond;
43
- const vestingCliff = userBill?.bond?.vestingCliff;
43
+ const vestingCliff = Number(userBill?.bond?.vestingCliff);
44
44
  const currentTime = Math.round(new Date().getTime() / 1000);
45
45
  const purchaseTimestamp = parseInt(userBill?.vestingStartTimestamp ?? '0');
46
46
  const isPendingCliff = vestingCliff ? currentTime - purchaseTimestamp < vestingCliff : false;
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/Actions.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { useChainId, useSwitchChain, useWriteContract } from 'wagmi'\nimport { useMonitorTx } from '../../../../hooks/useMonitorTx'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport BOND_ABI from '../../../../config/abi/BOND_2_4_0.json'\nimport track from '../../../../utils/track'\nimport { remove0xPrefix } from '../../../../utils/remove0xPrefix'\nimport { reportError } from '../../../../utils/reportError'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useModal from '../../../../hooks/useModal'\nimport { AbondModal, OabondModal, PmusdModal } from '../../../../components/CustomClaimModals'\nimport PostClaimModal from '../../../../components/CustomClaimModals/PostClaimModal'\n\nconst Actions = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const { switchChainAsync } = useSwitchChain()\n const { data: liveBonds } = useBondsData()\n const SDKConfig = useSDKConfig()\n const chainId = useChainId()\n const { writeContractAsync } = useWriteContract()\n const { address: account } = useEVMAccount()\n const { addToastError } = usePopups()\n const { refetch: refetchUserBonds } = useUserBonds()\n\n // State\n const [claimTxHash, setClaimTxHash] = useState<string | null>(null)\n const [loadingTx, setLoadingTx] = useState(false)\n const { isLoading, isSuccess: isConfirmed } = useMonitorTx(claimTxHash, userBill?.bond?.chainId)\n\n // Static Data\n const load = loadingTx || (isLoading && !isConfirmed)\n const similarLiveBond = liveBonds?.find(\n (bond) =>\n !bond?.soldOut &&\n !bond?.hide &&\n bond?.earnToken?.symbol?.toLowerCase() === userBill?.bond?.earnToken?.symbol?.toLowerCase(),\n )\n const canPurchaseAgain = !!similarLiveBond\n const vestingCliff = userBill?.bond?.vestingCliff\n const currentTime = Math.round(new Date().getTime() / 1000)\n const purchaseTimestamp = parseInt(userBill?.vestingStartTimestamp ?? '0')\n const isPendingCliff = vestingCliff ? currentTime - purchaseTimestamp < vestingCliff : false\n const cliffCountdown = getTimePeriods(purchaseTimestamp + (vestingCliff ?? 0) - currentTime, true)\n\n const handleClaim = async (billId?: string, billAddress?: string) => {\n const address: `0x${string}` = billAddress as `0x${string}`\n try {\n setLoadingTx(true)\n const tx = await writeContractAsync({\n address: address,\n abi: BOND_ABI,\n functionName: 'redeem',\n args: [billId],\n chain: chainId as any,\n account: account,\n }).catch()\n\n if (tx) {\n setClaimTxHash(tx)\n track({\n event: 'bond',\n chain: userBill?.bond?.chainId,\n data: {\n cat: 'claim',\n bondType: userBill?.bond?.billType,\n address: remove0xPrefix(userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]),\n earnToken: userBill?.bond?.earnToken.symbol,\n },\n })\n }\n setLoadingTx(false)\n } catch (error: any) {\n console.error('Claim Failed:', error)\n setLoadingTx(false)\n addToastError(error.message)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'redeem', userBill, error },\n chainId,\n account,\n })\n }\n }\n\n // Modals\n const [openAbondModal] = useModal(<AbondModal />, true, false, 'abondModal')\n const [openOabondModal] = useModal(<OabondModal />, true, false, 'oAbondModal')\n const [openPmusdModal] = useModal(<PmusdModal />, true, false, 'pmUSDModal')\n const [openPostClaimFlowModal] = useModal(\n <PostClaimModal\n tokenSymbol={userBill?.bond?.earnToken?.symbol!}\n text={userBill?.bond?.postClaimFlow?.text!}\n imgUrl={userBill?.bond?.postClaimFlow?.imgUrl!}\n ctaUrl={userBill?.bond?.postClaimFlow?.ctaUrl!}\n />,\n true,\n false,\n 'postClaimFlowModal',\n )\n\n useEffect(() => {\n if (isConfirmed) {\n refetchUserBonds()\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'abond') {\n openAbondModal()\n }\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'oabond') {\n openOabondModal()\n }\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'pmusd') {\n openPmusdModal()\n }\n if (userBill?.bond?.postClaimFlow) {\n openPostClaimFlowModal()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [isConfirmed])\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || load || !userBill || isPendingCliff}\n load={load}\n onClick={(event) => {\n event.stopPropagation()\n if (chainId !== userBill?.bond?.chainId) {\n switchChainAsync({ chainId: userBill?.bond?.chainId! })\n .then(() => {\n handleClaim(userBill?.id, userBill?.address)\n })\n .catch()\n } else {\n handleClaim(userBill?.id, userBill?.address)\n }\n }}\n className=\"ape:text-[14px]! ape:w-full\"\n >\n {isPendingCliff\n ? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`\n : 'Claim'}\n </Button>\n <Button\n className=\"ape:text-[14px]! ape:w-full\"\n onClick={() =>\n canPurchaseAgain\n ? (window.location.href = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`)\n : null\n }\n disabled={!canPurchaseAgain}\n >\n {canPurchaseAgain ? 'Buy again' : 'sold out'}\n </Button>\n </>\n )\n}\n\nexport default Actions\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/Actions.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { useChainId, useSwitchChain, useWriteContract } from 'wagmi'\nimport { useMonitorTx } from '../../../../hooks/useMonitorTx'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport BOND_ABI from '../../../../config/abi/BOND_2_4_0.json'\nimport track from '../../../../utils/track'\nimport { remove0xPrefix } from '../../../../utils/remove0xPrefix'\nimport { reportError } from '../../../../utils/reportError'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport useEVMAccount from '../../../../hooks/accounts/useEVMAccount'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useModal from '../../../../hooks/useModal'\nimport { AbondModal, OabondModal, PmusdModal } from '../../../../components/CustomClaimModals'\nimport PostClaimModal from '../../../../components/CustomClaimModals/PostClaimModal'\n\nconst Actions = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const { switchChainAsync } = useSwitchChain()\n const { data: liveBonds } = useBondsData()\n const SDKConfig = useSDKConfig()\n const chainId = useChainId()\n const { writeContractAsync } = useWriteContract()\n const { address: account } = useEVMAccount()\n const { addToastError } = usePopups()\n const { refetch: refetchUserBonds } = useUserBonds()\n\n // State\n const [claimTxHash, setClaimTxHash] = useState<string | null>(null)\n const [loadingTx, setLoadingTx] = useState(false)\n const { isLoading, isSuccess: isConfirmed } = useMonitorTx(claimTxHash, userBill?.bond?.chainId)\n\n // Static Data\n const load = loadingTx || (isLoading && !isConfirmed)\n const similarLiveBond = liveBonds?.find(\n (bond) =>\n !bond?.soldOut &&\n !bond?.hide &&\n bond?.earnToken?.symbol?.toLowerCase() === userBill?.bond?.earnToken?.symbol?.toLowerCase(),\n )\n const canPurchaseAgain = !!similarLiveBond\n const vestingCliff = Number(userBill?.bond?.vestingCliff)\n const currentTime = Math.round(new Date().getTime() / 1000)\n const purchaseTimestamp = parseInt(userBill?.vestingStartTimestamp ?? '0')\n const isPendingCliff = vestingCliff ? currentTime - purchaseTimestamp < vestingCliff : false\n const cliffCountdown = getTimePeriods(purchaseTimestamp + (vestingCliff ?? 0) - currentTime, true)\n\n const handleClaim = async (billId?: string, billAddress?: string) => {\n const address: `0x${string}` = billAddress as `0x${string}`\n try {\n setLoadingTx(true)\n const tx = await writeContractAsync({\n address: address,\n abi: BOND_ABI,\n functionName: 'redeem',\n args: [billId],\n chain: chainId as any,\n account: account,\n }).catch()\n\n if (tx) {\n setClaimTxHash(tx)\n track({\n event: 'bond',\n chain: userBill?.bond?.chainId,\n data: {\n cat: 'claim',\n bondType: userBill?.bond?.billType,\n address: remove0xPrefix(userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]),\n earnToken: userBill?.bond?.earnToken.symbol,\n },\n })\n }\n setLoadingTx(false)\n } catch (error: any) {\n console.error('Claim Failed:', error)\n setLoadingTx(false)\n addToastError(error.message)\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n extraInfo: { type: 'redeem', userBill, error },\n chainId,\n account,\n })\n }\n }\n\n // Modals\n const [openAbondModal] = useModal(<AbondModal />, true, false, 'abondModal')\n const [openOabondModal] = useModal(<OabondModal />, true, false, 'oAbondModal')\n const [openPmusdModal] = useModal(<PmusdModal />, true, false, 'pmUSDModal')\n const [openPostClaimFlowModal] = useModal(\n <PostClaimModal\n tokenSymbol={userBill?.bond?.earnToken?.symbol!}\n text={userBill?.bond?.postClaimFlow?.text!}\n imgUrl={userBill?.bond?.postClaimFlow?.imgUrl!}\n ctaUrl={userBill?.bond?.postClaimFlow?.ctaUrl!}\n />,\n true,\n false,\n 'postClaimFlowModal',\n )\n\n useEffect(() => {\n if (isConfirmed) {\n refetchUserBonds()\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'abond') {\n openAbondModal()\n }\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'oabond') {\n openOabondModal()\n }\n if (userBill?.bond?.earnToken.symbol.toLowerCase() === 'pmusd') {\n openPmusdModal()\n }\n if (userBill?.bond?.postClaimFlow) {\n openPostClaimFlowModal()\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [isConfirmed])\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || load || !userBill || isPendingCliff}\n load={load}\n onClick={(event) => {\n event.stopPropagation()\n if (chainId !== userBill?.bond?.chainId) {\n switchChainAsync({ chainId: userBill?.bond?.chainId! })\n .then(() => {\n handleClaim(userBill?.id, userBill?.address)\n })\n .catch()\n } else {\n handleClaim(userBill?.id, userBill?.address)\n }\n }}\n className=\"ape:text-[14px]! ape:w-full\"\n >\n {isPendingCliff\n ? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`\n : 'Claim'}\n </Button>\n <Button\n className=\"ape:text-[14px]! ape:w-full\"\n onClick={() =>\n canPurchaseAgain\n ? (window.location.href = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`)\n : null\n }\n disabled={!canPurchaseAgain}\n >\n {canPurchaseAgain ? 'Buy again' : 'sold out'}\n </Button>\n </>\n )\n}\n\nexport default Actions\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAA2B,KAAI;;AAExD,IAAA,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE;IAC7C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE;AAC1C,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;AAChC,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,IAAA,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;AAC5C,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE;IACrC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE;;IAGpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACnE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;;IAGhG,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC;AACrD,IAAA,MAAM,eAAe,GAAG,SAAS,EAAE,IAAI,CACrC,CAAC,IAAI,KACH,CAAC,IAAI,EAAE,OAAO;QACd,CAAC,IAAI,EAAE,IAAI;AACX,QAAA,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAC9F;AACD,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,eAAe;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;AACzD,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,IAAI,GAAG,CAAC;AAC1E,IAAA,MAAM,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,GAAG,YAAY,GAAG,KAAK;AAC5F,IAAA,MAAM,cAAc,GAAG,cAAc,CAAC,iBAAiB,IAAI,YAAY,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC;IAElG,MAAM,WAAW,GAAG,OAAO,MAAe,EAAE,WAAoB,KAAI;QAClE,MAAM,OAAO,GAAkB,WAA4B;AAC3D,QAAA,IAAI;YACF,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC;AAClC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,CAAC,MAAM,CAAC;AACd,gBAAA,KAAK,EAAE,OAAc;AACrB,gBAAA,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC,KAAK,EAAE;YAEV,IAAI,EAAE,EAAE;gBACN,cAAc,CAAC,EAAE,CAAC;AAClB,gBAAA,KAAK,CAAC;AACJ,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,GAAG,EAAE,OAAO;AACZ,wBAAA,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ;AAClC,wBAAA,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnF,wBAAA,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM;AAC5C,qBAAA;AACF,iBAAA,CAAC;YACJ;YACA,YAAY,CAAC,KAAK,CAAC;QACrB;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;YACrC,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5B,YAAA,WAAW,CAAC;AACV,gBAAA,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK;gBAC9B,KAAK;gBACL,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC9C,OAAO;gBACP,OAAO;AACR,aAAA,CAAC;QACJ;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC;AAC5E,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,WAAW,EAAA,EAAA,CAAG,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;AAC/E,IAAA,MAAM,CAAC,cAAc,CAAC,GAAG,QAAQ,CAACA,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC;IAC5E,MAAM,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CACvCA,GAAA,CAAC,cAAc,EAAA,EACb,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAO,EAC/C,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAK,EAC1C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAO,EAC9C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAO,EAAA,CAC9C,EACF,IAAI,EACJ,KAAK,EACL,oBAAoB,CACrB;IAED,SAAS,CAAC,MAAK;QACb,IAAI,WAAW,EAAE;AACf,YAAA,gBAAgB,EAAE;AAClB,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC9D,gBAAA,cAAc,EAAE;YAClB;AACA,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AAC/D,gBAAA,eAAe,EAAE;YACnB;AACA,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAC9D,gBAAA,cAAc,EAAE;YAClB;AACA,YAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;AACjC,gBAAA,sBAAsB,EAAE;YAC1B;QACF;;AAEF,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAA,QACEC,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEF,GAAA,CAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,EAC1E,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,KAAK,KAAI;oBACjB,KAAK,CAAC,eAAe,EAAE;oBACvB,IAAI,OAAO,KAAK,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;wBACvC,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAQ,EAAE;6BACnD,IAAI,CAAC,MAAK;4BACT,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC9C,wBAAA,CAAC;AACA,6BAAA,KAAK,EAAE;oBACZ;yBAAO;wBACL,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;oBAC9C;AACF,gBAAA,CAAC,EACD,SAAS,EAAC,6BAA6B,YAEtC;AACC,sBAAE,CAAA,aAAA,EAAgB,cAAc,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAA,KAAA,CAAO,GAAG,cAAc,CAAC,KAAK,KAAK,CAAC,GAAG,CAAA,EAAG,cAAc,CAAC,KAAK,CAAA,MAAA,CAAQ,GAAG,CAAA,EAAG,cAAc,CAAC,OAAO,OAAO,CAAA;AAC7K,sBAAE,OAAO,EAAA,CACJ,EACTA,GAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,MACP;uBACK,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,mBAAA,EAAsB,eAAe,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,eAAe,CAAC,OAAO,CAAA,CAAE;sBAC7I,IAAI,EAEV,QAAQ,EAAE,CAAC,gBAAgB,YAE1B,gBAAgB,GAAG,WAAW,GAAG,UAAU,EAAA,CACrC,CAAA,EAAA,CACR;AAEP;;;;"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Ape Bond SDK",
4
4
  "author": "Ape Bond",
5
5
  "license": "MIT",
6
- "version": "6.2.13-test.2",
6
+ "version": "6.2.13-test.4",
7
7
  "module": "dist/main.js",
8
8
  "type": "module",
9
9
  "types": "dist/main.d.ts",
@@ -119,8 +119,8 @@
119
119
  "@ape.swap/apeswap-lists": "4.8.6",
120
120
  "@jup-ag/api": "6.0.45",
121
121
  "buffer": "6.0.3",
122
- "framer-motion": "11.18.2",
123
122
  "clsx": "2.1.1",
123
+ "framer-motion": "11.18.2",
124
124
  "lightweight-charts": "4.2.3",
125
125
  "lodash-es": "4.17.23"
126
126
  },
@@ -155,8 +155,8 @@
155
155
  "rimraf": "5.0.10",
156
156
  "rollup": "4.60.0",
157
157
  "tailwindcss": "^4.3.3",
158
- "typescript": "5.9.3",
159
- "typescript-eslint": "8.57.2",
158
+ "typescript": "6.0.3",
159
+ "typescript-eslint": "^8.68.0",
160
160
  "vite": "7.3.3",
161
161
  "wagmi": "2.19.5"
162
162
  },
@@ -1,34 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState } from 'react';
3
- import Flex from '../../../../components/uikit-sdk/Flex/index.js';
4
- import useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints.js';
5
- import { LaunchBondTiers, BillVersion } from '@ape.swap/apeswap-lists';
6
- import { AnimatePresence, motion } from 'framer-motion';
7
- import BonusTable from '../../../Bonds/components/BonusComponents/BonusTable.js';
8
- import { getRawBonus, formatUSDNumber } from '../../../../utils/displayHelpers.js';
9
- import { findHighestTrueBondPriceUserAgnostic } from '../../../../utils/bondPriceHelpers.js';
10
- import Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret.js';
11
-
12
- const GetUpToComponent = ({ bond, depositAmount }) => {
13
- // Hooks & Data
14
- const { data: tierState } = useTierPoints();
15
- const { promotionalPoints } = tierState || {};
16
- const userTier = getUserTier(promotionalPoints);
17
- const bonusString = getRawBonus(bond, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical]);
18
- const noTierAmount = getRawBonus(bond, depositAmount, '0');
19
- const boostAmount = parseFloat(bonusString) - parseFloat(noTierAmount);
20
- const trueBondPrice = findHighestTrueBondPriceUserAgnostic(bond);
21
- //State
22
- const [isOpen, setIsOpen] = useState(false);
23
- return (userTier !== LaunchBondTiers.Mythical &&
24
- bond.billVersion === BillVersion.V4 && (jsxs(Flex, { className: "ape:w-full ape:mt-[10px] ape:text-[12px] ape:font-normal ape:flex-col ape:relative", children: [jsxs(Flex, { onClick: () => setIsOpen(!isOpen), className: "ape:border ape:border-solid ape:border-[#9960C5] ape:rounded-normal ape:relative ape:overflow-hidden ape:pl-[10px] ape:pr-[20px] ape:py-[2px] ape:items-center ape:cursor-pointer ape:justify-between", style: { background: '#312341' }, children: [jsxs(Flex, { className: "ape:items-center", children: [jsx("img", { src: `https://ape.bond/images/launch/mythical.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }), jsxs("div", { children: ["Get up to", jsx("span", { className: "ape:text-success ape:mx-[3px] ape:font-bold", children: `+${trueBondPrice?.boost ?? 0}%` }), "Boost.", jsx("span", { className: "ape:ml-[5px] ape:text-primary-button ape:font-medium ape:cursor-pointer ape:hover:underline ape:hidden ape:lg:inline", onClick: (e) => {
25
- e.stopPropagation();
26
- window.open('https://www.ape.bond/true-yield?createPosition', '_blank');
27
- }, children: 'By locking ABOND >' })] })] }), !!depositAmount && parseFloat(depositAmount) !== 0 && (jsxs(Flex, { className: "ape:text-success ape:font-bold ape:min-w-[65px] ape:justify-end", children: ["$ ", formatUSDNumber(boostAmount.toString())] })), jsx(Flex, { className: "ape:absolute ape:right-[6px]", children: jsx(Caret, { direction: isOpen ? 'up' : 'down' }) })] }), jsx(AnimatePresence, { children: isOpen && (jsx(motion.div, { initial: { height: 0 }, animate: { height: 'fit-content' }, transition: { opacity: { duration: 0.2 } }, exit: { height: 0 }, className: "ape:overflow-hidden ape:w-full ape:mt-[5px] ape:cursor-pointer", onClick: (e) => {
28
- e.stopPropagation();
29
- window.open('https://www.ape.bond/true-yield?createPosition', '_blank');
30
- }, children: jsx(BonusTable, { trueBondPrices: bond?.trueBondPrices, minTier: bond.minTier, hideTitle: true }) })) })] })));
31
- };
32
-
33
- export { GetUpToComponent as default };
34
- //# sourceMappingURL=GetUpToComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GetUpToComponent.js","sources":["../../../../../src/views/BuyBond/components/GetUpToComponent/GetUpToComponent.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, { getUserTier, TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport BonusTable from '../../../Bonds/components/BonusComponents/BonusTable'\nimport { formatUSDNumber, getRawBonus } from '../../../../utils/displayHelpers'\nimport { findHighestTrueBondPriceUserAgnostic } from '../../../../utils/bondPriceHelpers'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\n\ninterface GetUpToComponentProps {\n bond: BondsData\n depositAmount: string\n}\n\nconst GetUpToComponent: React.FC<GetUpToComponentProps> = ({ bond, depositAmount }) => {\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const userTier = getUserTier(promotionalPoints)\n const bonusString = getRawBonus(bond, depositAmount, TIERS_WEIGHT[LaunchBondTiers.Mythical])\n const noTierAmount = getRawBonus(bond, depositAmount, '0')\n const boostAmount = parseFloat(bonusString) - parseFloat(noTierAmount)\n const trueBondPrice = findHighestTrueBondPriceUserAgnostic(bond)\n\n //State\n const [isOpen, setIsOpen] = useState(false)\n return (\n userTier !== LaunchBondTiers.Mythical &&\n bond.billVersion === BillVersion.V4 && (\n <Flex className=\"ape:w-full ape:mt-[10px] ape:text-[12px] ape:font-normal ape:flex-col ape:relative\">\n <Flex\n onClick={() => setIsOpen(!isOpen)}\n className=\"ape:border ape:border-solid ape:border-[#9960C5] ape:rounded-normal ape:relative ape:overflow-hidden ape:pl-[10px] ape:pr-[20px] ape:py-[2px] ape:items-center ape:cursor-pointer ape:justify-between\"\n style={{ background: '#312341' }}\n >\n <Flex className=\"ape:items-center\">\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n <div>\n Get up to\n <span className=\"ape:text-success ape:mx-[3px] ape:font-bold\">{`+${trueBondPrice?.boost ?? 0}%`}</span>\n Boost.\n <span\n className=\"ape:ml-[5px] ape:text-primary-button ape:font-medium ape:cursor-pointer ape:hover:underline ape:hidden ape:lg:inline\"\n onClick={(e) => {\n e.stopPropagation()\n window.open('https://www.ape.bond/true-yield?createPosition', '_blank')\n }}\n >\n {'By locking ABOND >'}\n </span>\n </div>\n </Flex>\n {!!depositAmount && parseFloat(depositAmount) !== 0 && (\n <Flex className=\"ape:text-success ape:font-bold ape:min-w-[65px] ape:justify-end\">\n $ {formatUSDNumber(boostAmount.toString())}\n </Flex>\n )}\n <Flex className=\"ape:absolute ape:right-[6px]\">\n <Caret direction={isOpen ? 'up' : 'down'} />\n </Flex>\n </Flex>\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n className=\"ape:overflow-hidden ape:w-full ape:mt-[5px] ape:cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation()\n window.open('https://www.ape.bond/true-yield?createPosition', '_blank')\n }}\n >\n <BonusTable trueBondPrices={bond?.trueBondPrices} minTier={bond.minTier} hideTitle />\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n )\n}\n\nexport default GetUpToComponent\n"],"names":["_jsxs","_jsx"],"mappings":"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"}