import { type ChainId, OrderDirection, GameOrderBy, type GetSportsParams, type SportData } from '@azuro-org/toolkit';
import { type UseQueryResult } from '@tanstack/react-query';
import { type QueryParameterWithSelect } from '../../global';
export type UseSportsQueryFnData = SportData[];
export type UseSportsProps<TData = UseSportsQueryFnData> = {
    filter?: {
        sportSlug?: string;
        countrySlug?: string;
        leagueSlug?: string;
        /** Filter for leagues, if not set, returns all leagues */
        topLeagueFilter?: GetSportsParams['topLeagueFilter'];
        sportIds?: Array<string | number>;
        /**
         * default: 1000,
         * minimum: 10
         * */
        maxGamesPerLeague?: number;
        /** @deprecated pass `maxGamesPerLeague` instead */
        limit?: number;
    };
    gameOrderBy?: GameOrderBy;
    orderDir?: OrderDirection;
    /** if false or undefined, follows games sorting order */
    sortLeaguesAndCountriesByName?: boolean;
    isLive?: boolean;
    chainId?: ChainId;
    query?: QueryParameterWithSelect<UseSportsQueryFnData, TData>;
};
export type GetUseSportsQueryOptionsProps<TData = UseSportsQueryFnData> = UseSportsProps<TData> & {
    chainId: ChainId;
};
export type UseSports<TData = UseSportsQueryFnData> = (props?: UseSportsProps<TData>) => UseQueryResult<TData>;
export declare const getUseSportsQueryOptions: <TData = UseSportsQueryFnData>(params: GetUseSportsQueryOptionsProps<TData>) => import("@tanstack/query-core").OmitKeyof<import("@tanstack/react-query").UseQueryOptions<{
    countries: {
        leagues: {
            slug: string;
            name: string;
            turnover: string;
            isTopLeague: boolean;
            topWeight?: number;
            games: import("@azuro-org/toolkit").GameData[];
        }[];
        slug: string;
        name: string;
        turnover: string;
    }[];
    id: number;
    slug: string;
    name: string;
    sportId: string;
    turnover: string;
}[], Error, TData, readonly unknown[]>, "queryFn"> & {
    queryFn?: import("@tanstack/query-core").QueryFunction<{
        countries: {
            leagues: {
                slug: string;
                name: string;
                turnover: string;
                isTopLeague: boolean;
                topWeight?: number;
                games: import("@azuro-org/toolkit").GameData[];
            }[];
            slug: string;
            name: string;
            turnover: string;
        }[];
        id: number;
        slug: string;
        name: string;
        sportId: string;
        turnover: string;
    }[], readonly unknown[], never> | undefined;
} & {
    queryKey: readonly unknown[] & {
        [dataTagSymbol]: {
            countries: {
                leagues: {
                    slug: string;
                    name: string;
                    turnover: string;
                    isTopLeague: boolean;
                    topWeight?: number;
                    games: import("@azuro-org/toolkit").GameData[];
                }[];
                slug: string;
                name: string;
                turnover: string;
            }[];
            id: number;
            slug: string;
            name: string;
            sportId: string;
            turnover: string;
        }[];
        [dataTagErrorSymbol]: Error;
    };
};
/**
 * Fetches sports data with nested country and league information.
 * Automatically filters out empty sports/countries/leagues (those without games).
 *
 * Use `isLive` prop to switch between live and prematch sports.
 * Supports custom sorting by turnover or game start time.
 *
 * - Docs: https://gem.azuro.org/hub/apps/sdk/data-hooks/useSports
 *
 * @example
 * import { useSports } from '@azuro-org/sdk'
 *
 * const { data: sports, isLoading } = useSports({
 *   filter: { sportHub: 'sports', maxGamesPerLeague: 20 },
 *   isLive: false
 * })
 * */
export declare const useSports: <TData = UseSportsQueryFnData>(props?: UseSportsProps<TData>) => UseQueryResult<NoInfer<TData>, Error>;
