import type { ArenaAuthoritativeSnapshot, ArenaCombatIntent, ArenaResult, ArenaRole, ArenaStageManifest, } from "../src/game/arenaTypes"; import type { ArenaBracket, ArenaMode, ArenaRuleset } from "../src/game/arenaRules"; export interface ArenaSimulationParticipant { actorId: string; accountId?: string | null; characterId?: string | null; name: string; team: 0 | 1; role: ArenaRole; isBot: boolean; disconnected?: boolean; rating: number; } export interface ArenaSimulationOptions { id: string; stage: ArenaStageManifest; bracket: ArenaBracket; mode: ArenaMode; ruleset: ArenaRuleset; participants: readonly ArenaSimulationParticipant[]; random?: () => number; startedAt?: number; onSnapshot?: (snapshot: ArenaAuthoritativeSnapshot) => void; onResult?: (result: Omit) => void; } export declare const ARENA_TICK_RATE: 20; export declare const ARENA_SNAPSHOT_RATE: 10; export declare const ARENA_TICK_MS: 50; export declare class ArenaSimulation { constructor(options: ArenaSimulationOptions); start(): this; resetPreparationClock(startedAt?: number): boolean; stop(): void; step(): void; snapshot(): ArenaAuthoritativeSnapshot; receiveIntent(actorId: string, intent: ArenaCombatIntent): { accepted: boolean; reason?: string }; }