import { type Hex, type TransactionReceipt, type WaitForTransactionReceiptReturnType } from 'viem';
import { type polygon } from 'viem/chains';
import { type ChainId, type GetCalculatedCashout } from '@azuro-org/toolkit';
import { type UseQueryResult } from '@tanstack/react-query';
import { type Bet } from '../../global';
export type UseCashoutProps = {
    bet: Pick<Bet, 'tokenId' | 'outcomes'>;
    chainId?: ChainId;
    EIP712Attention?: string;
    onSuccess?(receipt?: TransactionReceipt): void;
    onError?(err?: Error): void;
};
export type UseCashout = (props: UseCashoutProps) => {
    submit: () => Promise<void>;
    calculationQuery: UseQueryResult<GetCalculatedCashout, Error>;
    approveTx: {
        data: Hex | undefined;
        receipt: WaitForTransactionReceiptReturnType<typeof polygon> | undefined;
        isPending: boolean;
        isProcessing: boolean;
    };
    cashoutTx: {
        data: Hex | undefined;
        receipt: WaitForTransactionReceiptReturnType<typeof polygon> | undefined;
        isPending: boolean;
        isProcessing: boolean;
    };
    isAllowanceFetching: boolean;
    isCashoutAvailable: boolean;
    isApproveRequired: boolean;
};
/**
 * Cash out a bet before the event is finished.
 * Handles the full cashout flow including approval (if required) and EIP712 signature.
 *
 * For AA wallets, automatically handles chain switching and approval in a single transaction.
 * For EOA wallets, requires separate approval transaction if `isApproveRequired` is true.
 *
 * - Docs: https://gem.azuro.org/hub/apps/sdk/cashout/useCashout
 *
 * @example
 * import { useCashout } from '@azuro-org/sdk'
 *
 * const { submit, isCashoutAvailable, isApproveRequired, calculationQuery } = useCashout({
 *   bet: { tokenId: '123', outcomes: [...] },
 *   onSuccess: (receipt) => console.log('Cashout successful'),
 * })
 * */
export declare const useCashout: UseCashout;
