import {
useAddress,
useBuildStakeTransaction,
useSendTransaction,
useStakingProviders,
useStakingQuote,
} from '@ton/appkit-react';
export const StakeButton = () => {
const address = useAddress();
const { data: providers } = useStakingProviders();
const providerId = providers?.[0];
const { data: quote } = useStakingQuote({
providerId,
// Quote direction: 'stake' or 'unstake'
direction: 'stake',
// Staking user's TON wallet address
userAddress: address ?? '<TON_WALLET_ADDRESS>',
// Fractional Toncoin amount string.
// For example, '0.1' or '10' Toncoin.
amount: '1',
});
const {
mutateAsync: buildTransaction,
isPending: isBuilding,
} = useBuildStakeTransaction();
const {
mutateAsync: sendTransaction,
isPending: isSending,
} = useSendTransaction();
const handleStake = async () => {
if (!quote || !address || !providerId) {
return;
}
const transaction = await buildTransaction({
providerId,
quote,
userAddress: address,
});
await sendTransaction(transaction);
};
return (
<button
onClick={() => void handleStake()}
disabled={!quote || !address || isBuilding || isSending}
>
{isBuilding || isSending ? 'Submitting...' : 'Stake 1 TON'}
</button>
);
};