import type { StartggClient } from "../startgg/client.js"; export interface ToolContext { client: StartggClient; } /** Cache TTLs (ms) per data category. Metadata changes rarely; live data does. */ export declare const TTL: { readonly videogames: number; readonly tournamentMeta: number; readonly eventMeta: number; readonly search: number; readonly entrants: number; readonly standings: number; readonly sets: number; readonly streamQueue: number; readonly player: number; readonly resolve: number; }; interface ToolResult { [key: string]: unknown; content: { type: "text"; text: string; }[]; isError?: boolean; } export declare function jsonResult(data: unknown): ToolResult; /** * Wrap a tool handler: successful returns become pretty-printed JSON, thrown * errors become a structured { error: { code, message } } payload with * isError set. Tokens and stack traces never reach the client. */ export declare function wrapHandler(handler: (args: Args) => Promise): (args: Args) => Promise; export interface TournamentLocatorArgs { tournamentId?: number | undefined; slug?: string | undefined; url?: string | undefined; } /** Resolve tool args to GraphQL variables { id } or { slug } for tournament(...). */ export declare function tournamentLocator(args: TournamentLocatorArgs): { id?: number; slug?: string; }; export interface EventLocatorArgs { eventId?: number | undefined; slug?: string | undefined; url?: string | undefined; } /** Resolve tool args to GraphQL variables { id } or { slug } for event(...). */ export declare function eventLocator(args: EventLocatorArgs): { id?: number; slug?: string; }; /** Accept ISO-8601 strings or Unix epoch seconds; return epoch seconds. */ export declare function toEpochSeconds(value: string | number, argName: string): number; export interface FetchAllPageInfo { total: number | null; totalPages: number | null; perPage: number; fetchedPages: number; /** True when the safety cap stopped fetching before the last page. */ truncated: boolean; } /** * Fetch multiple pages with a hard page cap so fetchAll can never stampede * the API. `getPage` returns the raw connection { pageInfo, nodes }. */ export declare function fetchAllPages(getPage: (page: number) => Promise<{ pageInfo?: unknown; nodes?: TNode[]; } | undefined>, perPage: number, maxPages: number): Promise<{ nodes: TNode[]; pageInfo: FetchAllPageInfo; }>; export {};