@azuro-org/sdk
Version:
One-stop solution for building betting dApps on the Azuro Protocol.
50 lines (49 loc) • 1.91 kB
TypeScript
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;