import { type UseQueryResult } from '@tanstack/react-query';
import { type Bonus, type BonusStatus, type ChainId } from '@azuro-org/toolkit';
import { type Address } from 'viem';
import { type QueryParameterWithSelect } from '../../global';
export type UseBonusesQueryFnData = Bonus[];
export type UseBonusesProps<TData = UseBonusesQueryFnData> = {
    account: Address;
    affiliate: Address;
    bonusStatus?: BonusStatus;
    chainId?: ChainId;
    query?: QueryParameterWithSelect<UseBonusesQueryFnData, TData>;
};
export type GetUseBonusesQueryOptionsProps<TData = UseBonusesQueryFnData> = UseBonusesProps<TData> & {
    chainId: ChainId;
};
export type UseBonuses = <TData = UseBonusesQueryFnData>(props: UseBonusesProps<TData>) => UseQueryResult<TData>;
export declare const getUseBonusesQueryOptions: <TData = UseBonusesQueryFnData>(params: GetUseBonusesQueryOptionsProps<TData>) => import("@tanstack/query-core").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<UseBonusesQueryFnData, Error, TData, readonly unknown[]>, "queryFn"> & {
    queryFn?: import("@tanstack/query-core").QueryFunction<UseBonusesQueryFnData, readonly unknown[], never> | undefined;
} & {
    queryKey: readonly unknown[] & {
        [dataTagSymbol]: UseBonusesQueryFnData;
        [dataTagErrorSymbol]: Error;
    };
};
/**
 * Retrieves bonuses (freebets) for a specific account and affiliate address.
 * Optionally filter by bonus status: active (BonusStatus.Available) or redeemed (BonusStatus.Used).
 *
 * - Docs: https://gem.azuro.org/hub/apps/sdk/bonus/useBonuses
 *
 * @example
 * import { BonusStatus } from '@azuro-org/toolkit'
 * import { useBonuses } from '@azuro-org/sdk'
 *
 * const { data: bonuses, isLoading } = useBonuses({
 *   account: '0x...',
 *   affiliate: '0x...',
 *   bonusStatus: BonusStatus.Available,
 * })
 * */
export declare const useBonuses: UseBonuses;
