import { type LeaderboardState, type ScoreSubmissionState, type ScoreSubmissionEvent, type ControlReadState, type ControlReadEvent } from './Lifecycle.js'; import { type ControlReadOptions } from './ControlRead.js'; import type { ControlTransport, PlayerProfile } from './types.js'; export interface LeaderboardEntry extends PlayerProfile { rank: number; score: number; createdAt: string | null; metadata: Record; } export interface LeaderboardPage { gameId: string; leaderboardId: string; entries: LeaderboardEntry[]; total: number | null; nextCursor: string | null; currentUser: LeaderboardEntry | null; raw: unknown; } export interface LeaderboardQuery { limit?: number; offset?: number; cursor?: string; aroundUser?: boolean; userId?: string; [key: string]: unknown; } export interface ScoreSubmissionOptions { requestId?: string; timeoutMs?: number; signal?: AbortSignal; } export interface LeaderboardReadOptions extends ControlReadOptions { } type Listener = (page: LeaderboardPage) => void; export declare class Leaderboard { private readonly transport; readonly leaderboardId: string; readonly gameId: string; private lifecycle; get state(): LeaderboardState; get stateHistory(): { from: LeaderboardState; event: import("./Lifecycle.js").LeaderboardEvent; to: LeaderboardState; }[]; get isDisposed(): boolean; private requireActive; private pageValue; private listeners; private unsubscribe?; private revision; private submissions; private submissionQueue; private activeSubmission?; private submissionHistories; private latestSubmissionIdValue; private queryId; private latestQueryIdValue; private queryReads; private queryHistories; constructor(transport: ControlTransport, leaderboardId: string, gameId: string); get page(): LeaderboardPage; onChange(listener: Listener): () => void; get latestQueryId(): number; queryHistory(id?: number): { from: ControlReadState; event: ControlReadEvent; to: ControlReadState; }[]; getLeaderboard(query?: LeaderboardQuery, options?: LeaderboardReadOptions): Promise; get(query?: LeaderboardQuery, options?: LeaderboardReadOptions): Promise; get latestSubmissionId(): string | null; submissionHistory(id?: string): { from: ScoreSubmissionState; event: ScoreSubmissionEvent; to: ScoreSubmissionState; }[]; submitScore(score: number, metadata?: Record, options?: ScoreSubmissionOptions): Promise; private pumpSubmissions; private runSubmission; private finishSubmission; dispose(): void; private apply; } export {};