import type { Emitter, EventMap } from "../core/emitter"; import type { EntityID } from "../core/Entity"; import type { Game } from "./Game"; export declare const activeHost: string; declare type Event = { time: number; }; export declare type InitEvent = Event & { type: "init"; connections: number; state: ReturnType; }; export declare type StateEvent = Event & { type: "state"; state: ReturnType; }; declare type UpdateEvent = Event & { type: "update"; }; export declare type PlayerEvent = Event & { connection: number; sent?: number; }; export declare type BuildEvent = PlayerEvent & { type: "build"; builder: number; x: number; y: number; obstruction: string; }; export declare type MoveEvent = PlayerEvent & { type: "move"; connection: number; sprites: EntityID[]; x: number; y: number; obstruction: string; }; export declare type AttackEvent = PlayerEvent & { type: "move"; connection: number; attackers: EntityID[]; target: EntityID | undefined; x: number; y: number; }; export declare type HoldPositionEvent = PlayerEvent & { type: "holdPosition"; connection: number; sprites: EntityID[]; }; export declare type StopEvent = PlayerEvent & { type: "stop"; connection: number; sprites: EntityID[]; }; export declare type MirrorEvent = PlayerEvent & { type: "mirror"; connection: number; sprites: EntityID[]; }; export declare type UpgradeEvent = PlayerEvent & { type: "upgrade"; obstructions: [EntityID]; upgrade: string; }; declare type ChatEvent = PlayerEvent & { type: "chat"; message: string; }; declare type DisconnectionEvent = PlayerEvent & { type: "disconnection"; }; export declare type ConnectionEvent = PlayerEvent & { type: "connection"; username: string; }; declare type PingEvent = { type: "ping"; eventType: Exclude; ping: number; }; declare const networkEvents: { readonly init: (data: InitEvent) => void; readonly state: (data: StateEvent) => void; readonly update: (data: UpdateEvent) => void; readonly build: (data: BuildEvent) => void; readonly move: (data: MoveEvent) => void; readonly attack: (data: AttackEvent) => void; readonly holdPosition: (data: HoldPositionEvent) => void; readonly stop: (data: StopEvent) => void; readonly mirror: (data: MirrorEvent) => void; readonly upgrade: (data: UpgradeEvent) => void; readonly chat: (data: ChatEvent) => void; readonly disconnection: (data: DisconnectionEvent) => void; readonly connection: (data: ConnectionEvent) => void; readonly ping: (data: PingEvent) => void; }; export declare type NetworkEventCallback = typeof networkEvents; export declare class Network implements Emitter { static networkEvents: EventMap; addEventListener: Emitter["addEventListener"]; removeEventListener: Emitter["removeEventListener"]; removeEventListeners: Emitter["removeEventListeners"]; dispatchEvent: Emitter["dispatchEvent"]; private connection?; private localPlayerId?; constructor(); send>(data: T): void; connect(token: string): void; onMessage(message: MessageEvent): void; private onConnection; get isHost(): boolean; } export {};