import { CommandInterface, NetworkType, BackendOptions, DosConfig, InitFsEntry } from "../emulators"; import { CommandInterfaceEventsImpl } from "../impl/ci-impl"; type Peer = { peerId: number; }; export type Net = { peerId: number; connected: Set; wait: (ms: number) => void; registerAlias: (alias: string) => Promise; unregisterAlias: (alias: string) => void; queryAliases: (query: string) => Promise; sendBinary: (data: Uint8Array, peerId: number) => number; recvBinary: () => { data: Uint8Array; peerId: number; } | null; disconnect: (peerId: number) => void; }; export type ClientMessage = "wc-install" | "wc-run" | "wc-pack-fs-to-bundle" | "wc-add-key" | "wc-mouse-move" | "wc-mouse-button" | "wc-mouse-sync" | "wc-exit" | "wc-sync-sleep" | "wc-pause" | "wc-resume" | "wc-mute" | "wc-unmute" | "wc-connect" | "wc-disconnect" | "wc-backend-event" | "wc-asyncify-stats" | "wc-fs-tree" | "wc-fs-get-file" | "wc-send-data-chunk" | "wc-net-connected" | "wc-net-received" | "wc-unload" | "wc-fs-delete-file" | "wc-persist-sockdrives" | "wc-get-running-program"; export type ServerMessage = "ws-extract-progress" | "ws-ready" | "ws-server-ready" | "ws-frame-set-size" | "ws-update-lines" | "ws-log" | "ws-warn" | "ws-err" | "ws-stdout" | "ws-exit" | "ws-persist" | "ws-sound-init" | "ws-sound-push" | "ws-config" | "ws-sync-sleep" | "ws-connected" | "ws-disconnected" | "ws-asyncify-stats" | "ws-fs-tree" | "ws-send-data-chunk" | "ws-net-disconnect" | "ws-net-send" | "ws-unload" | "ws-fs-delete-file" | "ws-persist-sockdrives" | "ws-get-running-program"; export type MessageHandler = (name: ServerMessage, props: { [key: string]: any; }) => void; export interface TransportLayer { sessionId: string; sendMessageToServer(name: ClientMessage, props: { [key: string]: any; }, transfer?: Transferable[]): void; initMessageHandler(handler: MessageHandler): void; exit?: () => void; net: Net | null; } export interface FrameLine { start: number; heapu8: Uint8Array; } export interface DataChunk { type: "ok" | "file" | "bundle"; name: string; data: ArrayBuffer | null; } export interface CPUMetrics { cpuMax: number; emulatorSpeed: number; cpuUsed: number; frameSkip: number; fastForward: boolean; cpuSockdrive: boolean; cpuAuto: boolean; cpuSkip: boolean; sleepPattern: string; ratio: number[]; newCmax: number[]; ticksDone: number[]; ticksScheduled: number[]; } export interface AsyncifyStats { glfx?: boolean; offscreenCanvas?: boolean; messageSent: number; messageReceived: number; messageFrame: number; messageSound: number; nonSkippableSleepCount: number; sleepCount: number; sleepTime: number; cpuMetrics: CPUMetrics | null; netSent: number; netRecv: number; driveIo: { url: string; preload: number; total: number; read: number; write: number; }[]; } export interface FsNode { name: string; size: number | null; nodes: FsNode[] | null; } export declare class CommandInterfaceOverTransportLayer implements CommandInterface { private startedAt; private exited; private frameWidth; private frameHeight; private rgb; private rgba; private freq; private utf8Decoder; private init?; private transport; private ready; private persistPromise?; private persistResolve?; private exitPromise?; private exitResolve?; private eventsImpl; private keyMatrix; private configPromise; private configResolve; private panicMessages; private connectPromise; private connectResolve; private connectReject; private disconnectPromise; private disconnectResolve; private asyncifyStatsPromise; private asyncifyStatsResolve; private fsTreePromise; private fsTreeResolve; private fsGetFilePromise; private fsGetFileResolve; private fsGetFileParts; private fsDeleteFilePromise; private fsDeleteFileResolve; private getRunningProgramPromise; private getRunningProgramResolve; private dataChunkPromise; private dataChunkResolve; private persistSockdrivesPromise; private persistSockdrivesResolve; private myPeerId; private netSent; private netRecv; private netPollInterval; options: BackendOptions; constructor(init: InitFsEntry[], transport: TransportLayer, ready: (err: Error | null) => void, options: BackendOptions); private sendClientMessage; private onServerMessage; private onConfig; private onFrameSize; private onFrameLines; private onSoundInit; private onSoundPush; private onLog; private onWarn; private onErr; private onStdout; config(): Promise; width(): number; height(): number; soundFrequency(): number; screenshot(): Promise; simulateKeyPress(...keyCodes: number[]): void; sendKeyEvent(keyCode: number, pressed: boolean): void; addKey(keyCode: number, pressed: boolean, timeMs: number): void; sendMouseMotion(x: number, y: number): void; sendMouseRelativeMotion(x: number, y: number): void; sendMouseButton(button: number, pressed: boolean): void; sendMouseSync(): void; sendBackendEvent(payload: any): void; persist(optOnlyChanges?: boolean): Promise; private onPersist; pause(): void; resume(): void; mute(): void; unmute(): void; exit(): Promise; private onExit; events(): CommandInterfaceEventsImpl; networkConnect(networkType: NetworkType, address: string): Promise; networkDisconnect(networkType: NetworkType): Promise; asyncifyStats(): Promise; fsTree(): Promise; fsReadFile(file: string): Promise; fsWriteFile(file: string, contents: ReadableStream | Uint8Array): Promise; fsDeleteFile(file: string): Promise; persistSockdrives(): Promise; private sendDataChunk; private sendFullDataChunk; private dataChunkKey; private mergeChunks; net(): Net | null; getRunningProgram(): Promise; } export {};