UNPKG

@azuro-org/sdk

Version:

One-stop solution for building betting dApps on the Azuro Protocol.

50 lines (49 loc) 1.91 kB
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;