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