import { CASINO_GAME_TYPE, type CasinoChainId, type CasinoRolledBet, CasinoToken, COINTOSS_FACE, CoinTossEncodedInput, DiceEncodedInput, DiceNumber, KenoBall, KenoEncodedInput, LEADERBOARD_CASINO_RULES_GAME, LEADERBOARD_STATUS, type Leaderboard, RouletteEncodedInput, RouletteNumber, type Token, type WeightedGameConfiguration, type WeightedGameEncodedInput } from "@betswirl/sdk-core"; import { type DefaultError, type QueryKey, type UseQueryOptions } from "@tanstack/react-query"; import { type Address, Hex } from "viem"; import type { EnrichedLeaderboard } from "../data/leaderboardQueries"; export type Theme = "light" | "dark" | "system"; export declare const THEME_OPTIONS: Theme[]; export type QueryParameter = Omit, "queryFn" | "queryHash" | "queryKey" | "queryKeyHashFn" | "throwOnError" | "select"> | undefined; export type GameChoice = { game: CASINO_GAME_TYPE.COINTOSS; choice: COINTOSS_FACE; } | { game: CASINO_GAME_TYPE.DICE; choice: DiceNumber; } | { game: CASINO_GAME_TYPE.ROULETTE; choice: RouletteNumber[]; } | { game: CASINO_GAME_TYPE.KENO; choice: KenoBall[]; } | { game: CASINO_GAME_TYPE.WHEEL; choice: WeightedGameConfiguration; }; export type GameRolledResult = { game: CASINO_GAME_TYPE.COINTOSS; rolled: COINTOSS_FACE; } | { game: CASINO_GAME_TYPE.DICE; rolled: DiceNumber; } | { game: CASINO_GAME_TYPE.ROULETTE; rolled: RouletteNumber; } | { game: CASINO_GAME_TYPE.KENO; rolled: KenoBall[]; } | { game: CASINO_GAME_TYPE.WHEEL; rolled: number; }; export type GameEncodedInput = { game: CASINO_GAME_TYPE.COINTOSS; encodedInput: CoinTossEncodedInput; } | { game: CASINO_GAME_TYPE.DICE; encodedInput: DiceEncodedInput; } | { game: CASINO_GAME_TYPE.ROULETTE; encodedInput: RouletteEncodedInput; } | { game: CASINO_GAME_TYPE.KENO; encodedInput: KenoEncodedInput; } | { game: CASINO_GAME_TYPE.WHEEL; encodedInput: WeightedGameEncodedInput; }; export type GameResult = CasinoRolledBet & { rolled: GameRolledResult; formattedRolled: string; }; export type BetStatus = "loading" | "pending" | "success" | "rolling" | "error" | "waiting-error" | "internal-error" | null; export interface TokenWithImage extends Token { image: string; } export interface CasinoTokenWithImage extends CasinoToken { image: string; } export declare enum HistoryEntryStatus { WonBet = "Won bet", Busted = "Busted" } export interface HistoryEntry { id: string; status: HistoryEntryStatus; multiplier: number | string; payoutAmount: number | string; payoutCurrencyToken: TokenWithImage; timestamp: string; } export type ChainTokenPanelView = "main" | "chain" | "token"; export interface GameDefinition { gameType: T["game"]; defaultSelection: T; getMultiplier: (choice: T["choice"]) => number; encodeInput: (choice: T["choice"]) => GameEncodedInput["encodedInput"]; encodeAbiParametersInput: (choice: T["choice"]) => Hex; getWinChancePercent?: (choice: T["choice"]) => number | number[]; formatDisplayResult: (rolled: GameRolledResult, choice: T["choice"]) => string; } export type PlayNowEvent = { chainId: CasinoChainId; games: LEADERBOARD_CASINO_RULES_GAME[]; tokens: Token[]; }; export type LeaderboardUserAction = { type: "play"; } | { type: "overview"; } | { type: "claim"; amount: string; tokenSymbol: string; } | { type: "claimed"; amount: string; tokenSymbol: string; } | { type: "none"; }; export interface LeaderboardPrize { token: TokenWithImage; amount: string; } export interface LeaderboardItem { id: string; userRank: number | null; title: string; chainId: CasinoChainId; startDate: string; endDate: string; status: LEADERBOARD_STATUS; prize: LeaderboardPrize; participants: number; isPartner: boolean; userAction: LeaderboardUserAction; } export interface LeaderboardUserStats { status: LEADERBOARD_STATUS; position: number; points: number; prize: { amount: string; tokenSymbol: string; tokenIconUrl?: string; }; contractAddress: string; } export interface LeaderboardOverviewData extends LeaderboardItem { userStats: LeaderboardUserStats; } export interface RankingEntry { rank: number; playerAddress: Address; points: number; rewardAmount: string; rewardToken: TokenWithImage; } export interface LeaderboardItemWithRaw { item: LeaderboardItem; raw: Leaderboard; } export interface LeaderboardItemWithEnriched { item: LeaderboardItem; enriched: EnrichedLeaderboard; }