@ape.swap/bonds-sdk 6.1.7-test.1 → 6.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/constants/chains.js +1 -1
- package/dist/config/constants/chains.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/Actions.js +1 -1
- package/dist/views/YourBondsModal/components/Actions/Actions.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsAptos.js +2 -3
- package/dist/views/YourBondsModal/components/Actions/ActionsAptos.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSolana.js +1 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSolana.js.map +1 -1
- package/dist/views/YourBondsModal/components/Actions/ActionsSui.js +2 -3
- package/dist/views/YourBondsModal/components/Actions/ActionsSui.js.map +1 -1
- package/package.json +1 -1
|
@@ -91,7 +91,7 @@ const NETWORK_LABEL = {
|
|
|
91
91
|
[ChainId.HYPEREVM]: 'HyperEVM',
|
|
92
92
|
[ChainId.APTOS]: 'Aptos',
|
|
93
93
|
[ChainId.SUI]: 'Sui',
|
|
94
|
-
[ChainId.BITTENSOR_TESTNET]: 'Bittensor',
|
|
94
|
+
[ChainId.BITTENSOR_TESTNET]: 'Bittensor Testnet',
|
|
95
95
|
};
|
|
96
96
|
const SHORT_NETWORK_LABEL = {
|
|
97
97
|
[ChainId.BSC]: 'BNB',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sources":["../../../src/config/constants/chains.ts"],"sourcesContent":["// Network chain ids\nimport { icons } from '../../components/uikit-sdk/Svg/types'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n// Ensure the ChainId.APTOS and ChainId.SUI runtime patches run before the maps below evaluate\nimport '../../constants/aptosConstants'\nimport '../../constants/suiConstants'\n\n// These are the lists we will display to the user\nexport const MAINNET_CHAINS = [\n ChainId.MAINNET,\n ChainId.BSC,\n ChainId.MATIC,\n ChainId.BASE,\n ChainId.IOTA,\n ChainId.LINEA,\n ChainId.ARBITRUM,\n ChainId.APTOS,\n ChainId.SUI,\n ChainId.LIGHTLINK,\n ChainId.GRAPHLINQ,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.CROSSFI,\n ChainId.SONIC,\n ChainId.MONAD,\n ChainId.BERACHAIN,\n ChainId.SOL,\n ChainId.KATANA,\n ChainId.UNICHAIN,\n ChainId.MEGAETH_TESTNET,\n ChainId.HYPEREVM,\n ChainId.BITTENSOR_TESTNET,\n]\n\nexport const TESTNET_CHAINS = [ChainId.MEGAETH_TESTNET]\n\n// Network Icons\nexport const NETWORK_ICONS: Partial<Record<number, icons>> = {\n [ChainId.BSC]: icons.BNB_TOKEN,\n [ChainId.MATIC]: icons.POLYGON_TOKEN,\n [ChainId.MAINNET]: icons.ETH_TOKEN,\n [ChainId.TLOS]: icons.TLOS_TOKEN,\n [ChainId.ARBITRUM]: icons.ARBITRUM_TOKEN,\n [ChainId.INEVM]: icons.INEVM,\n [ChainId.SEPOLIA]: icons.ETH_TOKEN,\n [ChainId.LINEA]: icons.LINEA,\n [ChainId.LIGHTLINK]: icons.LIGHTLINK,\n [ChainId.IOTA]: icons.IOTA,\n [ChainId.BASE]: icons.BASE,\n [ChainId.GRAPHLINQ]: icons.GRAPHLINQ,\n [ChainId.AVAX]: icons.AVAX_TOKEN,\n [ChainId.BLAST]: icons.BLAST,\n [ChainId.CROSSFI]: icons.CROSSFI,\n [ChainId.MONAD_TESTNET]: icons.MONAD,\n [ChainId.MONAD]: icons.MONAD,\n [ChainId.SONIC]: icons.SONIC,\n [ChainId.BERACHAIN]: icons.BERA,\n [ChainId.SOL]: icons.SOL,\n [ChainId.KATANA]: icons.KATANA,\n [ChainId.UNICHAIN]: icons.UNICHAIN,\n [ChainId.MEGAETH_TESTNET]: icons.MEGAETH,\n [ChainId.HYPEREVM]: icons.HYPEREVM,\n [ChainId.APTOS]: icons.APTOS,\n [ChainId.SUI]: icons.SUI,\n [ChainId.BITTENSOR_TESTNET]: icons.BITTENSOR,\n}\n\n// Network labels\nexport const NETWORK_LABEL: Record<number, string> = {\n [ChainId.BSC]: 'BNB',\n [ChainId.BSC_TESTNET]: 'BNB Testnet',\n [ChainId.MATIC]: 'Polygon',\n [ChainId.MAINNET]: 'Ethereum',\n [ChainId.TLOS]: 'Telos',\n [ChainId.ARBITRUM]: 'Arbitrum',\n [ChainId.INEVM]: 'inEVM',\n [ChainId.SEPOLIA]: 'Sepolia',\n [ChainId.LINEA]: 'Linea',\n [ChainId.LIGHTLINK]: 'Lightlink',\n [ChainId.IOTA]: 'Iota',\n [ChainId.IOTA_TESTNET]: 'Iota Testnet',\n [ChainId.BASE]: 'Base',\n [ChainId.GRAPHLINQ]: 'GraphLinq',\n [ChainId.AVAX]: 'Avalanche',\n [ChainId.BLAST]: 'Blast',\n [ChainId.CROSSFI]: 'Crossfi',\n [ChainId.MONAD_TESTNET]: 'Monad Testnet',\n [ChainId.MONAD]: 'Monad',\n [ChainId.SONIC]: 'Sonic',\n [ChainId.BERACHAIN]: 'Berachain',\n [ChainId.SOL]: 'Solana',\n [ChainId.KATANA]: 'Katana',\n [ChainId.UNICHAIN]: 'Unichain',\n [ChainId.MEGAETH_TESTNET]: 'MegaETH Testnet',\n [ChainId.HYPEREVM]: 'HyperEVM',\n [ChainId.APTOS]: 'Aptos',\n [ChainId.SUI]: 'Sui',\n [ChainId.BITTENSOR_TESTNET]: 'Bittensor',\n}\n\nexport const SHORT_NETWORK_LABEL: Record<number, string> = {\n [ChainId.BSC]: 'BNB',\n [ChainId.MATIC]: 'Pol',\n [ChainId.MAINNET]: 'Eth',\n [ChainId.TLOS]: 'Telo',\n [ChainId.ARBITRUM]: 'Arb',\n [ChainId.LINEA]: 'Line',\n [ChainId.LIGHTLINK]: 'Ligh',\n [ChainId.IOTA]: 'Iota',\n [ChainId.BASE]: 'Base',\n [ChainId.GRAPHLINQ]: 'Grap',\n [ChainId.AVAX]: 'Avax',\n [ChainId.BLAST]: 'Bla',\n [ChainId.CROSSFI]: 'Cro',\n [ChainId.MONAD]: 'Mona',\n [ChainId.SONIC]: 'Son',\n [ChainId.BERACHAIN]: 'Bera',\n [ChainId.SOL]: 'Sol',\n [ChainId.KATANA]: 'Kat',\n [ChainId.UNICHAIN]: 'Unic',\n [ChainId.HYPEREVM]: 'Hyp',\n [ChainId.APTOS]: 'Apt',\n [ChainId.SUI]: 'Sui',\n [ChainId.BITTENSOR_TESTNET]: 'Bitt',\n}\n\n// Network block explorers\nexport const BLOCK_EXPLORER: Record<number, string> = {\n [ChainId.MAINNET]: 'https://etherscan.io',\n [ChainId.ARBITRUM]: 'https://arbiscan.io',\n [ChainId.MATIC]: 'https://polygonscan.com',\n [ChainId.BSC]: 'https://bscscan.com',\n [ChainId.BSC_TESTNET]: 'https://testnet.bscscan.com',\n [ChainId.TLOS]: 'https://www.teloscan.io',\n [ChainId.INEVM]: 'https://explorer.inevm.com',\n [ChainId.SEPOLIA]: 'https://sepolia.etherscan.io',\n [ChainId.LINEA]: 'https://lineascan.build',\n [ChainId.LIGHTLINK]: 'https://phoenix.lightlink.io',\n [ChainId.IOTA]: 'https://explorer.evm.iota.org',\n [ChainId.IOTA_TESTNET]: 'https://explorer.evm.testnet.iotaledger.net/',\n [ChainId.BASE]: 'https://basescan.org',\n [ChainId.GRAPHLINQ]: 'https://graphlinq.dex.guru',\n [ChainId.AVAX]: 'https://snowtrace.io/',\n [ChainId.BLAST]: 'https://blastscan.io',\n [ChainId.CROSSFI]: 'https://xfiscan.com',\n [ChainId.MONAD_TESTNET]: 'https://testnet.monadexplorer.com/',\n [ChainId.MONAD]: 'https://monadvision.com/',\n [ChainId.SONIC]: 'https://sonicscan.org',\n [ChainId.BERACHAIN]: 'https://berascan.com',\n [ChainId.SOL]: 'https://solscan.io',\n [ChainId.KATANA]: 'https://explorer.katanarpc.com',\n [ChainId.UNICHAIN]: 'https://uniscan.xyz',\n [ChainId.MEGAETH_TESTNET]: 'https://megaexplorer.xyz',\n [ChainId.HYPEREVM]: 'https://hyperevmscan.io',\n [ChainId.APTOS]: 'https://explorer.aptoslabs.com',\n [ChainId.SUI]: 'https://suiscan.xyz/mainnet',\n [ChainId.BITTENSOR_TESTNET]: 'https://evm-testscan.dev.opentensor.ai',\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chains.js","sources":["../../../src/config/constants/chains.ts"],"sourcesContent":["// Network chain ids\nimport { icons } from '../../components/uikit-sdk/Svg/types'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n// Ensure the ChainId.APTOS and ChainId.SUI runtime patches run before the maps below evaluate\nimport '../../constants/aptosConstants'\nimport '../../constants/suiConstants'\n\n// These are the lists we will display to the user\nexport const MAINNET_CHAINS = [\n ChainId.MAINNET,\n ChainId.BSC,\n ChainId.MATIC,\n ChainId.BASE,\n ChainId.IOTA,\n ChainId.LINEA,\n ChainId.ARBITRUM,\n ChainId.APTOS,\n ChainId.SUI,\n ChainId.LIGHTLINK,\n ChainId.GRAPHLINQ,\n ChainId.AVAX,\n ChainId.BLAST,\n ChainId.CROSSFI,\n ChainId.SONIC,\n ChainId.MONAD,\n ChainId.BERACHAIN,\n ChainId.SOL,\n ChainId.KATANA,\n ChainId.UNICHAIN,\n ChainId.MEGAETH_TESTNET,\n ChainId.HYPEREVM,\n ChainId.BITTENSOR_TESTNET,\n]\n\nexport const TESTNET_CHAINS = [ChainId.MEGAETH_TESTNET]\n\n// Network Icons\nexport const NETWORK_ICONS: Partial<Record<number, icons>> = {\n [ChainId.BSC]: icons.BNB_TOKEN,\n [ChainId.MATIC]: icons.POLYGON_TOKEN,\n [ChainId.MAINNET]: icons.ETH_TOKEN,\n [ChainId.TLOS]: icons.TLOS_TOKEN,\n [ChainId.ARBITRUM]: icons.ARBITRUM_TOKEN,\n [ChainId.INEVM]: icons.INEVM,\n [ChainId.SEPOLIA]: icons.ETH_TOKEN,\n [ChainId.LINEA]: icons.LINEA,\n [ChainId.LIGHTLINK]: icons.LIGHTLINK,\n [ChainId.IOTA]: icons.IOTA,\n [ChainId.BASE]: icons.BASE,\n [ChainId.GRAPHLINQ]: icons.GRAPHLINQ,\n [ChainId.AVAX]: icons.AVAX_TOKEN,\n [ChainId.BLAST]: icons.BLAST,\n [ChainId.CROSSFI]: icons.CROSSFI,\n [ChainId.MONAD_TESTNET]: icons.MONAD,\n [ChainId.MONAD]: icons.MONAD,\n [ChainId.SONIC]: icons.SONIC,\n [ChainId.BERACHAIN]: icons.BERA,\n [ChainId.SOL]: icons.SOL,\n [ChainId.KATANA]: icons.KATANA,\n [ChainId.UNICHAIN]: icons.UNICHAIN,\n [ChainId.MEGAETH_TESTNET]: icons.MEGAETH,\n [ChainId.HYPEREVM]: icons.HYPEREVM,\n [ChainId.APTOS]: icons.APTOS,\n [ChainId.SUI]: icons.SUI,\n [ChainId.BITTENSOR_TESTNET]: icons.BITTENSOR,\n}\n\n// Network labels\nexport const NETWORK_LABEL: Record<number, string> = {\n [ChainId.BSC]: 'BNB',\n [ChainId.BSC_TESTNET]: 'BNB Testnet',\n [ChainId.MATIC]: 'Polygon',\n [ChainId.MAINNET]: 'Ethereum',\n [ChainId.TLOS]: 'Telos',\n [ChainId.ARBITRUM]: 'Arbitrum',\n [ChainId.INEVM]: 'inEVM',\n [ChainId.SEPOLIA]: 'Sepolia',\n [ChainId.LINEA]: 'Linea',\n [ChainId.LIGHTLINK]: 'Lightlink',\n [ChainId.IOTA]: 'Iota',\n [ChainId.IOTA_TESTNET]: 'Iota Testnet',\n [ChainId.BASE]: 'Base',\n [ChainId.GRAPHLINQ]: 'GraphLinq',\n [ChainId.AVAX]: 'Avalanche',\n [ChainId.BLAST]: 'Blast',\n [ChainId.CROSSFI]: 'Crossfi',\n [ChainId.MONAD_TESTNET]: 'Monad Testnet',\n [ChainId.MONAD]: 'Monad',\n [ChainId.SONIC]: 'Sonic',\n [ChainId.BERACHAIN]: 'Berachain',\n [ChainId.SOL]: 'Solana',\n [ChainId.KATANA]: 'Katana',\n [ChainId.UNICHAIN]: 'Unichain',\n [ChainId.MEGAETH_TESTNET]: 'MegaETH Testnet',\n [ChainId.HYPEREVM]: 'HyperEVM',\n [ChainId.APTOS]: 'Aptos',\n [ChainId.SUI]: 'Sui',\n [ChainId.BITTENSOR_TESTNET]: 'Bittensor Testnet',\n}\n\nexport const SHORT_NETWORK_LABEL: Record<number, string> = {\n [ChainId.BSC]: 'BNB',\n [ChainId.MATIC]: 'Pol',\n [ChainId.MAINNET]: 'Eth',\n [ChainId.TLOS]: 'Telo',\n [ChainId.ARBITRUM]: 'Arb',\n [ChainId.LINEA]: 'Line',\n [ChainId.LIGHTLINK]: 'Ligh',\n [ChainId.IOTA]: 'Iota',\n [ChainId.BASE]: 'Base',\n [ChainId.GRAPHLINQ]: 'Grap',\n [ChainId.AVAX]: 'Avax',\n [ChainId.BLAST]: 'Bla',\n [ChainId.CROSSFI]: 'Cro',\n [ChainId.MONAD]: 'Mona',\n [ChainId.SONIC]: 'Son',\n [ChainId.BERACHAIN]: 'Bera',\n [ChainId.SOL]: 'Sol',\n [ChainId.KATANA]: 'Kat',\n [ChainId.UNICHAIN]: 'Unic',\n [ChainId.HYPEREVM]: 'Hyp',\n [ChainId.APTOS]: 'Apt',\n [ChainId.SUI]: 'Sui',\n [ChainId.BITTENSOR_TESTNET]: 'Bitt',\n}\n\n// Network block explorers\nexport const BLOCK_EXPLORER: Record<number, string> = {\n [ChainId.MAINNET]: 'https://etherscan.io',\n [ChainId.ARBITRUM]: 'https://arbiscan.io',\n [ChainId.MATIC]: 'https://polygonscan.com',\n [ChainId.BSC]: 'https://bscscan.com',\n [ChainId.BSC_TESTNET]: 'https://testnet.bscscan.com',\n [ChainId.TLOS]: 'https://www.teloscan.io',\n [ChainId.INEVM]: 'https://explorer.inevm.com',\n [ChainId.SEPOLIA]: 'https://sepolia.etherscan.io',\n [ChainId.LINEA]: 'https://lineascan.build',\n [ChainId.LIGHTLINK]: 'https://phoenix.lightlink.io',\n [ChainId.IOTA]: 'https://explorer.evm.iota.org',\n [ChainId.IOTA_TESTNET]: 'https://explorer.evm.testnet.iotaledger.net/',\n [ChainId.BASE]: 'https://basescan.org',\n [ChainId.GRAPHLINQ]: 'https://graphlinq.dex.guru',\n [ChainId.AVAX]: 'https://snowtrace.io/',\n [ChainId.BLAST]: 'https://blastscan.io',\n [ChainId.CROSSFI]: 'https://xfiscan.com',\n [ChainId.MONAD_TESTNET]: 'https://testnet.monadexplorer.com/',\n [ChainId.MONAD]: 'https://monadvision.com/',\n [ChainId.SONIC]: 'https://sonicscan.org',\n [ChainId.BERACHAIN]: 'https://berascan.com',\n [ChainId.SOL]: 'https://solscan.io',\n [ChainId.KATANA]: 'https://explorer.katanarpc.com',\n [ChainId.UNICHAIN]: 'https://uniscan.xyz',\n [ChainId.MEGAETH_TESTNET]: 'https://megaexplorer.xyz',\n [ChainId.HYPEREVM]: 'https://hyperevmscan.io',\n [ChainId.APTOS]: 'https://explorer.aptoslabs.com',\n [ChainId.SUI]: 'https://suiscan.xyz/mainnet',\n [ChainId.BITTENSOR_TESTNET]: 'https://evm-testscan.dev.opentensor.ai',\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ const Actions = ({ userBill }) => {
|
|
|
118
118
|
}, sx: { fontSize: '14px', width: '100%' }, children: isPendingCliff
|
|
119
119
|
? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`
|
|
120
120
|
: 'Claim' }), jsx(Button, { sx: { fontSize: '14px', width: '100%' }, onClick: () => canPurchaseAgain
|
|
121
|
-
? (window.location.href =
|
|
121
|
+
? (window.location.href = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`)
|
|
122
122
|
: null, disabled: !canPurchaseAgain, children: canPurchaseAgain ? 'Buy again' : 'sold out' })] }));
|
|
123
123
|
};
|
|
124
124
|
|
|
@@ -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'\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\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 }\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 sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() =>\n canPurchaseAgain\n ? (window.location.href = `https://ape.bond/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'\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\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 }\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 sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\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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"}
|
|
@@ -86,9 +86,8 @@ const ActionsAptos = ({ userBill }) => {
|
|
|
86
86
|
: 'Claim' }), jsx(Button, { sx: { fontSize: '14px', width: '100%' }, onClick: () => {
|
|
87
87
|
if (!canPurchaseAgain)
|
|
88
88
|
return;
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
window.location.href = `${baseUrl}?${params}`;
|
|
89
|
+
const params = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`;
|
|
90
|
+
window.location.href = `${params}`;
|
|
92
91
|
}, disabled: !canPurchaseAgain, children: canPurchaseAgain ? 'Buy again' : 'sold out' })] }));
|
|
93
92
|
};
|
|
94
93
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsAptos.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsAptos.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { reportError } from '../../../../utils/reportError'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants'\nimport { getAptosClient } from '../../../../utils/aptosHelpers'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n// YourBondsModal action buttons for Aptos bonds. Mirrors the shape of\n// `ActionsSolana`: one Claim button (simulation-aware) and one \"Buy again\"\n// button that jumps to an active bond of the same showcase token.\nconst ActionsAptos = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 () => {\n if (loadingTx || !aptosAccount || !userBill) return\n\n try {\n setLoadingTx(true)\n\n const market = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId ?? 0]\n if (!market) throw new Error('Missing bond market address')\n if (!userBill.id) throw new Error('Missing bill ID')\n\n // `apebond::bond::claim(market, bill_id: u64)` — the contract takes\n // the scalar bill_id, NOT the object address.\n const response = await signAndSubmitTransaction?.({\n data: {\n function: APTOS_CLAIM_FUNCTION,\n typeArguments: [],\n functionArguments: [market, userBill.id],\n },\n })\n if (!response?.hash) throw new Error('No tx hash returned by wallet')\n\n const aptos = getAptosClient()\n await aptos.waitForTransaction({ transactionHash: response.hash })\n\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] })\n addToastSuccess(response.hash, ChainId.APTOS)\n } catch (error: any) {\n console.error('Aptos claim failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: aptosAccount ?? '',\n chainId: ChainId.APTOS,\n extraInfo: { type: 'aptosClaim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() => {\n if (!canPurchaseAgain) return\n const
|
|
1
|
+
{"version":3,"file":"ActionsAptos.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsAptos.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\n\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { reportError } from '../../../../utils/reportError'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport useAPTAccount from '../../../../hooks/accounts/useAPTAccount'\nimport { APTOS_CLAIM_FUNCTION } from '../../../../constants/aptosConstants'\nimport { getAptosClient } from '../../../../utils/aptosHelpers'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n// YourBondsModal action buttons for Aptos bonds. Mirrors the shape of\n// `ActionsSolana`: one Claim button (simulation-aware) and one \"Buy again\"\n// button that jumps to an active bond of the same showcase token.\nconst ActionsAptos = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n const { address: aptosAccount, signAndSubmitTransaction } = useAPTAccount()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 () => {\n if (loadingTx || !aptosAccount || !userBill) return\n\n try {\n setLoadingTx(true)\n\n const market = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId ?? 0]\n if (!market) throw new Error('Missing bond market address')\n if (!userBill.id) throw new Error('Missing bill ID')\n\n // `apebond::bond::claim(market, bill_id: u64)` — the contract takes\n // the scalar bill_id, NOT the object address.\n const response = await signAndSubmitTransaction?.({\n data: {\n function: APTOS_CLAIM_FUNCTION,\n typeArguments: [],\n functionArguments: [market, userBill.id],\n },\n })\n if (!response?.hash) throw new Error('No tx hash returned by wallet')\n\n const aptos = getAptosClient()\n await aptos.waitForTransaction({ transactionHash: response.hash })\n\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] })\n addToastSuccess(response.hash, ChainId.APTOS)\n } catch (error: any) {\n console.error('Aptos claim failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: aptosAccount ?? '',\n chainId: ChainId.APTOS,\n extraInfo: { type: 'aptosClaim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() => {\n if (!canPurchaseAgain) return\n const params = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`\n window.location.href = `${params}`\n }}\n disabled={!canPurchaseAgain}\n >\n {canPurchaseAgain ? 'Buy again' : 'sold out'}\n </Button>\n </>\n )\n}\n\nexport default ActionsAptos\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -141,7 +141,7 @@ const ActionsSolana = ({ userBill }) => {
|
|
|
141
141
|
}, sx: { fontSize: '14px', width: '100%' }, children: isPendingCliff
|
|
142
142
|
? `Claimable in ${cliffCountdown.days !== 0 ? `${cliffCountdown.days} days` : cliffCountdown.hours !== 0 ? `${cliffCountdown.hours} hours` : `${cliffCountdown.minutes} mins`}`
|
|
143
143
|
: 'Claim' }), jsx(Button, { sx: { fontSize: '14px', width: '100%' }, onClick: () => canPurchaseAgain
|
|
144
|
-
? (window.location.href =
|
|
144
|
+
? (window.location.href = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`)
|
|
145
145
|
: null, disabled: !canPurchaseAgain, children: canPurchaseAgain ? 'Buy again' : 'sold out' })] }));
|
|
146
146
|
};
|
|
147
147
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsSolana.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsSolana.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport useSOLAccount from '../../../../hooks/accounts/useSOLAccount'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { Connection, PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js'\nimport { ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { CLAIM_DISCRIMINATOR, PROGRAM_ID } from '../../../../constants/solanaConstants'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { getRPC } from '../../../../config/constants/networks'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { derivePda } from '../../../../utils/derivePda'\nimport { reportError } from '../../../../utils/reportError'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../../../../utils/solanaAtaHelper'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nconst ActionsSolana = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { refetch } = useUserBonds()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\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 () => {\n // Early return guard - prevent double execution\n if (loadingTx || !accountSolana || !userBill) return\n\n try {\n setLoadingTx(true)\n const earnTokenAddress = userBill?.bond?.earnToken?.address?.[userBill?.bond?.chainId]\n const contractAddress = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]\n\n if (!earnTokenAddress || !userBill.asset || !contractAddress) return\n\n const payoutMint = new PublicKey(earnTokenAddress)\n const bondIssuancePda = new PublicKey(contractAddress)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n const nftMint = new PublicKey(userBill.asset)\n\n // Detect token program for payout mint (supports Token-2022)\n const payoutTokenProgram = await getTokenProgramForMint(connection, payoutMint)\n\n const [bondTermPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond_term'), bondIssuancePda.toBuffer()],\n PROGRAM_ID,\n )\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond'), bondIssuancePda.toBuffer(), nftMint.toBuffer()],\n PROGRAM_ID,\n )\n\n // Get user payout ATA and creation instruction if needed\n const { address: userPayoutAta, createInstruction: createAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n accountSolana,\n )\n\n // Treasury ATA (standard associated token account for bond issuance PDA)\n const { address: treasuryAta, createInstruction: createTreasuryAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n bondIssuancePda,\n accountSolana,\n )\n\n // Build keys list\n const keys = [\n { pubkey: bondPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: bondTermPda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondIssuancePda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondPricingPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: accountSolana as PublicKey, isSigner: true, isWritable: true }, // user\n { pubkey: nftMint as PublicKey, isSigner: false, isWritable: true },\n { pubkey: userPayoutAta as PublicKey, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: payoutMint, isSigner: false, isWritable: false }, // payout_mint\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: new PublicKey('CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'), isSigner: false, isWritable: false }, // mplCoreProgram\n { pubkey: PROGRAM_ID, isSigner: false, isWritable: false }, // passing programId is the same as passing null\n ]\n\n // Build Claim Instruction (no args → just discriminator)\n const claimInstruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: CLAIM_DISCRIMINATOR,\n })\n\n // Build Transaction - include ATA creation if needed\n const transaction = new Transaction()\n if (createTreasuryAtaIx) transaction.add(createTreasuryAtaIx)\n if (createAtaIx) transaction.add(createAtaIx)\n transaction.add(claimInstruction)\n transaction.feePayer = accountSolana\n\n // Get fresh blockhash right before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('finalized')\n transaction.recentBlockhash = blockhash\n\n if (!signTransaction) return\n const signedTx = await signTransaction(transaction)\n\n // Send with better error handling\n const txHash = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'finalized',\n maxRetries: 0, // Don't auto-retry to avoid duplicates\n })\n\n await connection.confirmTransaction(\n {\n signature: txHash,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n const txStatus = await connection.getSignatureStatus(txHash, { searchTransactionHistory: true })\n if (txStatus?.value?.confirmationStatus === 'confirmed' || txStatus?.value?.confirmationStatus === 'finalized') {\n console.log('Tx confirmed on-chain, refetching bonds')\n refetch()\n addToastSuccess(txHash, ChainId.SOL)\n }\n } catch (error: any) {\n console.error('Claim failed:', error)\n\n // Better error messaging for duplicate transactions\n if (error?.message?.includes('already been processed')) {\n addToastError('Transaction already processed. Please wait and try again.')\n } else {\n addToastError(error?.message ?? 'Unknown error')\n }\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: accountSolana?.toBase58(),\n chainId: ChainId.SOL,\n extraInfo: { type: 'claim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() =>\n canPurchaseAgain\n ? (window.location.href = `https://ape.bond/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 ActionsSolana\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionsSolana.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsSolana.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport useSOLAccount from '../../../../hooks/accounts/useSOLAccount'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { Connection, PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js'\nimport { ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\nimport { CLAIM_DISCRIMINATOR, PROGRAM_ID } from '../../../../constants/solanaConstants'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { getRPC } from '../../../../config/constants/networks'\nimport useUserBonds from '../../../../state/bonds/useUserBonds'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { derivePda } from '../../../../utils/derivePda'\nimport { reportError } from '../../../../utils/reportError'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../../../../utils/solanaAtaHelper'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nconst ActionsSolana = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { refetch } = useUserBonds()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\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 () => {\n // Early return guard - prevent double execution\n if (loadingTx || !accountSolana || !userBill) return\n\n try {\n setLoadingTx(true)\n const earnTokenAddress = userBill?.bond?.earnToken?.address?.[userBill?.bond?.chainId]\n const contractAddress = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]\n\n if (!earnTokenAddress || !userBill.asset || !contractAddress) return\n\n const payoutMint = new PublicKey(earnTokenAddress)\n const bondIssuancePda = new PublicKey(contractAddress)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n const nftMint = new PublicKey(userBill.asset)\n\n // Detect token program for payout mint (supports Token-2022)\n const payoutTokenProgram = await getTokenProgramForMint(connection, payoutMint)\n\n const [bondTermPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond_term'), bondIssuancePda.toBuffer()],\n PROGRAM_ID,\n )\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [new TextEncoder().encode('bond'), bondIssuancePda.toBuffer(), nftMint.toBuffer()],\n PROGRAM_ID,\n )\n\n // Get user payout ATA and creation instruction if needed\n const { address: userPayoutAta, createInstruction: createAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n accountSolana,\n )\n\n // Treasury ATA (standard associated token account for bond issuance PDA)\n const { address: treasuryAta, createInstruction: createTreasuryAtaIx } = await getAtaWithCreateInstruction(\n connection,\n payoutMint,\n bondIssuancePda,\n accountSolana,\n )\n\n // Build keys list\n const keys = [\n { pubkey: bondPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: bondTermPda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondIssuancePda as PublicKey, isSigner: false, isWritable: false },\n { pubkey: bondPricingPda as PublicKey, isSigner: false, isWritable: true },\n { pubkey: accountSolana as PublicKey, isSigner: true, isWritable: true }, // user\n { pubkey: nftMint as PublicKey, isSigner: false, isWritable: true },\n { pubkey: userPayoutAta as PublicKey, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: payoutMint, isSigner: false, isWritable: false }, // payout_mint\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: new PublicKey('CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d'), isSigner: false, isWritable: false }, // mplCoreProgram\n { pubkey: PROGRAM_ID, isSigner: false, isWritable: false }, // passing programId is the same as passing null\n ]\n\n // Build Claim Instruction (no args → just discriminator)\n const claimInstruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: CLAIM_DISCRIMINATOR,\n })\n\n // Build Transaction - include ATA creation if needed\n const transaction = new Transaction()\n if (createTreasuryAtaIx) transaction.add(createTreasuryAtaIx)\n if (createAtaIx) transaction.add(createAtaIx)\n transaction.add(claimInstruction)\n transaction.feePayer = accountSolana\n\n // Get fresh blockhash right before signing\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('finalized')\n transaction.recentBlockhash = blockhash\n\n if (!signTransaction) return\n const signedTx = await signTransaction(transaction)\n\n // Send with better error handling\n const txHash = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'finalized',\n maxRetries: 0, // Don't auto-retry to avoid duplicates\n })\n\n await connection.confirmTransaction(\n {\n signature: txHash,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n const txStatus = await connection.getSignatureStatus(txHash, { searchTransactionHistory: true })\n if (txStatus?.value?.confirmationStatus === 'confirmed' || txStatus?.value?.confirmationStatus === 'finalized') {\n console.log('Tx confirmed on-chain, refetching bonds')\n refetch()\n addToastSuccess(txHash, ChainId.SOL)\n }\n } catch (error: any) {\n console.error('Claim failed:', error)\n\n // Better error messaging for duplicate transactions\n if (error?.message?.includes('already been processed')) {\n addToastError('Transaction already processed. Please wait and try again.')\n } else {\n addToastError(error?.message ?? 'Unknown error')\n }\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: accountSolana?.toBase58(),\n chainId: ChainId.SOL,\n extraInfo: { type: 'claim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\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 ActionsSolana\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -105,9 +105,8 @@ const ActionsSui = ({ userBill }) => {
|
|
|
105
105
|
: 'Claim' }), jsx(Button, { sx: { fontSize: '14px', width: '100%' }, onClick: () => {
|
|
106
106
|
if (!canPurchaseAgain)
|
|
107
107
|
return;
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
window.location.href = `${baseUrl}?${params}`;
|
|
108
|
+
const params = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`;
|
|
109
|
+
window.location.href = `${params}`;
|
|
111
110
|
}, disabled: !canPurchaseAgain, children: canPurchaseAgain ? 'Buy again' : 'sold out' })] }));
|
|
112
111
|
};
|
|
113
112
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsSui.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsSui.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { Transaction } from '@mysten/sui/transactions'\n\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { reportError } from '../../../../utils/reportError'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport useSUIAccount from '../../../../hooks/accounts/useSUIAccount'\nimport { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants'\nimport { getSuiClient, verifySuiTxSuccess } from '../../../../utils/suiHelpers'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n// YourBondsModal action buttons for Sui bonds. Mirrors the shape of\n// `ActionsAptos`: one Claim button and one \"Buy again\" button that\n// jumps to an active bond of the same showcase token.\nconst ActionsSui = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 () => {\n if (loadingTx || !suiAccount || !userBill || !signAndExecuteTransaction) return\n\n try {\n setLoadingTx(true)\n\n const market = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]\n if (!market) throw new Error('Missing bond market address')\n\n // The user's BondNFT object ID is stored in `bill.address`\n const nftObjectId = userBill?.address\n if (!nftObjectId) throw new Error('Missing bond NFT object ID')\n\n const payoutCoinType = userBill?.bond?.earnToken?.address?.[userBill?.bond?.chainId ?? 0]\n const principalCoinType = userBill?.bond?.lpToken?.address?.[userBill?.bond?.chainId ?? 0]\n if (!payoutCoinType || !principalCoinType) throw new Error('Missing token type info')\n\n const tx = new Transaction()\n const [claimedCoin] = tx.moveCall({\n target: SUI_CLAIM_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(nftObjectId),\n tx.object('0x6'), // clock\n ],\n })\n tx.transferObjects([claimedCoin], tx.pure.address(suiAccount))\n\n // Pre-build so the wallet receives fully-resolved bytes\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000)\n const suiClient = getSuiClient()\n const builtBytes = await tx.build({ client: suiClient })\n const prebuiltTx = Transaction.from(builtBytes)\n\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 await suiClient.waitForTransaction({ digest })\n await verifySuiTxSuccess(digest)\n\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] })\n addToastSuccess(digest, ChainId.SUI)\n } catch (error: any) {\n console.error('Sui claim failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: suiAccount ?? '',\n chainId: ChainId.SUI,\n extraInfo: { type: 'suiClaim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() => {\n if (!canPurchaseAgain) return\n const baseUrl = process.env.NODE_ENV === 'production' ? 'https://ape.bond/bonds' : window.location.origin\n const params = `bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`\n window.location.href = `${baseUrl}?${params}`\n }}\n disabled={!canPurchaseAgain}\n >\n {canPurchaseAgain ? 'Buy again' : 'sold out'}\n </Button>\n </>\n )\n}\n\nexport default ActionsSui\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionsSui.js","sources":["../../../../../src/views/YourBondsModal/components/Actions/ActionsSui.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { Transaction } from '@mysten/sui/transactions'\n\nimport { claimable } from '../../../../utils/displayHelpers'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { usePopups } from '../../../../state/popups/usePopups'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { reportError } from '../../../../utils/reportError'\nimport Button from '../../../../components/uikit-sdk/Button/Button'\n\nimport { useQueryClient } from '@tanstack/react-query'\nimport useSUIAccount from '../../../../hooks/accounts/useSUIAccount'\nimport { SUI_CLAIM_FUNCTION } from '../../../../constants/suiConstants'\nimport { getSuiClient, verifySuiTxSuccess } from '../../../../utils/suiHelpers'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n// YourBondsModal action buttons for Sui bonds. Mirrors the shape of\n// `ActionsAptos`: one Claim button and one \"Buy again\" button that\n// jumps to an active bond of the same showcase token.\nconst ActionsSui = ({ userBill }: { userBill?: UserBill }) => {\n // Hooks\n const SDKConfig = useSDKConfig()\n const queryClient = useQueryClient()\n const { address: suiAccount, signAndExecuteTransaction } = useSUIAccount()\n const { addToastError, addToastSuccess } = usePopups()\n const { data: liveBonds } = useBondsData()\n\n // State\n const [loadingTx, setLoadingTx] = useState(false)\n\n // Static Data\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 () => {\n if (loadingTx || !suiAccount || !userBill || !signAndExecuteTransaction) return\n\n try {\n setLoadingTx(true)\n\n const market = userBill?.bond?.contractAddress?.[userBill?.bond?.chainId]\n if (!market) throw new Error('Missing bond market address')\n\n // The user's BondNFT object ID is stored in `bill.address`\n const nftObjectId = userBill?.address\n if (!nftObjectId) throw new Error('Missing bond NFT object ID')\n\n const payoutCoinType = userBill?.bond?.earnToken?.address?.[userBill?.bond?.chainId ?? 0]\n const principalCoinType = userBill?.bond?.lpToken?.address?.[userBill?.bond?.chainId ?? 0]\n if (!payoutCoinType || !principalCoinType) throw new Error('Missing token type info')\n\n const tx = new Transaction()\n const [claimedCoin] = tx.moveCall({\n target: SUI_CLAIM_FUNCTION,\n typeArguments: [payoutCoinType, principalCoinType],\n arguments: [\n tx.object(market),\n tx.object(nftObjectId),\n tx.object('0x6'), // clock\n ],\n })\n tx.transferObjects([claimedCoin], tx.pure.address(suiAccount))\n\n // Pre-build so the wallet receives fully-resolved bytes\n tx.setSender(suiAccount)\n tx.setGasBudget(50_000_000)\n const suiClient = getSuiClient()\n const builtBytes = await tx.build({ client: suiClient })\n const prebuiltTx = Transaction.from(builtBytes)\n\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 await suiClient.waitForTransaction({ digest })\n await verifySuiTxSuccess(digest)\n\n await queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.USER_BONDS] })\n addToastSuccess(digest, ChainId.SUI)\n } catch (error: any) {\n console.error('Sui claim failed:', error)\n addToastError(error?.message ?? 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error,\n account: suiAccount ?? '',\n chainId: ChainId.SUI,\n extraInfo: { type: 'suiClaim', userBill, error },\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n return (\n <>\n <Button\n variant=\"secondary\"\n disabled={claimable(userBill) === 0 || loadingTx || !userBill || isPendingCliff}\n load={loadingTx}\n onClick={(event) => {\n event.stopPropagation()\n if (!loadingTx) handleClaim()\n }}\n sx={{ fontSize: '14px', width: '100%' }}\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 sx={{ fontSize: '14px', width: '100%' }}\n onClick={() => {\n if (!canPurchaseAgain) return\n const params = `/bonds?bondAddress=${similarLiveBond.contractAddress[similarLiveBond.chainId]}&bondChain=${similarLiveBond.chainId}`\n window.location.href = `${params}`\n }}\n disabled={!canPurchaseAgain}\n >\n {canPurchaseAgain ? 'Buy again' : 'sold out'}\n </Button>\n </>\n )\n}\n\nexport default ActionsSui\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|