import type { RetroArchCommand } from '../types/retroarch-command.ts';
import type { RetroArchEmscriptenModule } from '../types/retroarch-emscripten';
import type { EmulatorOptions } from './emulator-options';
import type { ResolvableFile } from './resolvable-file.ts';
type GameStatus = 'initial' | 'paused' | 'running' | 'terminated';
type EmulatorEvent = 'beforeLaunch' | 'onLaunch';
interface EmulatorEmscripten {
    AL: any;
    Browser: any;
    exit: (code: number) => void;
    JSEvents: any;
    Module: RetroArchEmscriptenModule;
}
export declare class Emulator {
    private canvasInitialSize;
    private emscripten;
    private eventListeners;
    private fileSystem;
    private gameStatus;
    private messageQueue;
    private options;
    private get coreFullName();
    private get fs();
    private get romBaseName();
    private get sramFileDirectory();
    private get sramFilePath();
    private get stateFileDirectory();
    private get stateFilePath();
    private get stateThumbnailFilePath();
    constructor(options: EmulatorOptions);
    callCommand(command: string): void;
    exit(statusCode?: number): void;
    getEmscripten(): EmulatorEmscripten;
    getOptions(): EmulatorOptions;
    getStatus(): GameStatus;
    launch(): Promise<void>;
    loadState(state: ResolvableFile): Promise<void>;
    on(event: EmulatorEvent, callback: (...args: unknown[]) => unknown): this;
    pause(): void;
    press(button: string, player?: number, time?: number): Promise<void>;
    pressDown(button: string, player?: number): void;
    pressUp(button: string, player?: number): void;
    resize({ height, width }: {
        height: number;
        width: number;
    }): void;
    restart(): void;
    resume(): void;
    saveSRAM(): Promise<Blob>;
    saveState(): Promise<{
        state: Blob;
        thumbnail: Blob | undefined;
    }>;
    screenshot(): Promise<Blob>;
    sendCommand(msg: RetroArchCommand): void;
    setup(): Promise<void>;
    private clearStateFile;
    private fireKeyboardEvent;
    private getCurrentRetroarchConfig;
    private getElementSize;
    private getKeyboardCode;
    private guessScreenshotFileName;
    private keyboardDown;
    private keyboardPress;
    private keyboardUp;
    private postRun;
    private runEventListeners;
    private runMain;
    private setupEmscripten;
    private setupFileSystem;
    private setupRaConfigFiles;
    private setupRaShaderFiles;
    private stdin;
    private updateKeyboardEventHandlers;
}
export {};
