import type { Scalars } from '../generated/graphql.js'; import type { EngineDetector } from './engine.js'; /** Options for {@link MatchmakingKit}. */ export interface MatchmakingKitOptions { /** The matchmaking module name. Defaults to `'matchmaking'`. */ moduleName?: string; } /** Your queue status: where you are queued and any live proposal. */ export interface KitQueueStatus { queuedIn: string | null; proposal: { proposalId: string; mode: string; players: string[]; accepted: string[]; handedOff: boolean; } | null; queueDepth: number; rating: number; } /** * Runtime helpers for the matchmaking engine (Wave 2): rating-bucketed * queues with widening windows, party blocks, and accept-gated proposals * that hand off to the match layer over compute events. After everyone * accepts, resolve the created match with `kit.matches.findByProposal`. * * Obtained via `client.kit(appId).matchmaking`. */ export declare class MatchmakingKit { private readonly engines; private readonly moduleName; constructor(_appId: Scalars['BigInt']['input'], engines: EngineDetector, options?: MatchmakingKitOptions); /** Is the matchmaking engine deployed + enabled (cached per session)? */ engineAvailable(): Promise; /** * Join a queue (optionally with a party block that must match together, * and an explicit rating for games that keep rating on the progression * layer). */ queueJoin(input?: { mode?: string; rating?: number; party?: string[]; }): Promise>; /** Leave your queue (all modes, or one with `mode`). */ queueLeave(mode?: string): Promise>; /** Your queue/proposal status. */ queueStatus(mode?: string): Promise; /** Accept a proposal; when everyone has, the match handoff fires. */ accept(proposalId: string): Promise>; /** Report the decided result (Elo-lite rating update + proposal close). */ reportResult(proposalId: string, winnerUserId: string): Promise>; /** Engine totals (queues/proposals/rated players). */ status(): Promise>; private invoke; } //# sourceMappingURL=matchmaking.d.ts.map