type Size = { width: number; height: number; }; type Position = { x: number; y: number; }; type Event = { timeout: TimeoutTag; } | { key: PagurusKeyEvent; } | { mouse: PagurusMouseEvent; } | { windowResized: Size; }; type TimeoutTag = number; type PagurusKeyEvent = { key: Key; ctrl: boolean; alt: boolean; }; type PagurusMouseEvent = { move: { position: Position; }; } | { down: { position: Position; }; } | { up: { position: Position; }; }; type Key = { char: string; } | "left" | "right" | "down" | "up" | "return" | "backspace" | "delete" | "shift" | "ctrl" | "alt" | "tab" | "backTab" | "esc"; interface SystemOptions { canvas?: HTMLCanvasElement; propagateControlKey?: boolean; disableTouchEvents?: boolean; disableMouseEvents?: boolean; disableKeyEvents?: boolean; } declare class System { private wasmMemory; private canvas?; private audioContext?; private audioInputNode?; private audioSampleRate?; private startTime; private eventQueue; private resolveNextEvent?; private propagateControlKey; static create(wasmMemory: WebAssembly.Memory, options?: SystemOptions): System; private constructor(); nextEvent(): Promise; private preventKeyEventDefaultIfNeed; private handleKeyup; private touchPosition; private handleTouchmove; private handleTouchstart; private handleTouchend; private handleMousemove; private handleMousedown; private handleMouseup; private enqueueEvent; requestRedraw(): void; videoInit(width: number, _height: number, pixelFormatPtr: number, stridePtr: number): void; videoDraw(videoFrameOffset: number, videoFrameLen: number, width: number, stride: number, format: number): void; audioInit(sampleRate: number, _dataSamples: number, sampleFormatPtr: number): void; audioEnqueue(audioDataOffset: number, audioDataLen: number): void; consoleLog(messageOffset: number, messageLen: number): void; clockGameTime(): number; clockUnixTime(): number; clockSetTimeout(tag: TimeoutTag, timeout: number): void; private getWasmString; } declare class Game { private wasmInstance; private gameInstance; private systemRef; readonly memory: WebAssembly.Memory; private constructor(); static load(gameWasmPath: string): Promise; initialize(system: System): void; handleEvent(system: System, event: Event): boolean; query(system: System, name: string): Uint8Array; command(system: System, name: string, data: Uint8Array): void; private createWasmBytes; private getWasmString; private getWasmBytes; } export { System, Game };