import { EventInterface as Event } from 'microevent.ts'; import CartridgeInfo from '../../../machine/stella/cartridge/CartridgeInfo'; import ControlPanel from './ControlPanel'; export declare class Stellerator { constructor(canvasElt: HTMLCanvasElement | null, workerUrl: string, config?: Partial); setGamma(gamma: number): this; getGamma(): number; setScalingMode(scalingMode: Stellerator.ScalingMode): this; getScalingMode(): Stellerator.ScalingMode; setTvEmulation(tvEmulation: Stellerator.TvEmulation): this; getTvEmulation(): Stellerator.TvEmulation; setPhosphorLevel(phosphorLevel: number): this; getPhosphorLevel(): number; setScanlineLevel(scanlineLevel: number): this; getScanlineLevel(): number; toggleFullscreen(fullscreen?: boolean): this; isFullscreen(): boolean; setVolume(volume: number): this; audioEnabled(): boolean; getVolume(): number; resize(): this; getState(): Stellerator.State; getControlPanel(): ControlPanel; setCanvas(canvas: HTMLCanvasElement): this; releaseCanvas(): this; start(cartridge: ArrayLike | string, tvMode: Stellerator.TvMode, config?: Partial): Promise; run(cartridge: ArrayLike | string, tvMode: Stellerator.TvMode, config?: Partial): Promise; pause(): Promise; resume(): Promise; stop(): Promise; reset(): Promise; lastError(): Error; asyncIOSend(message: ArrayLike): this; private _convertTvMode; private _createDrivers; private _removeVideoDriver; private _createVideoDriver; private _removeTouchDriver; private _createTouchDriver; private _mapState; private _pauseHandler; frequencyUpdate: Event; asyncIOMessage: Event>; stateChange: Event; private _canvasElt; private _config; private _emulationService; private _serviceInitialized; private _videoDriver; private _fullscreenVideo; private _audioDriver; private _keyboardIO; private _asyncIO; private _touchIO; private _paddle; private _gamepad; private _controlPanel; private _state; private _driverManager; private _mutex; } export declare namespace Stellerator { interface Config { gamma: number; scalingMode: ScalingMode; tvEmulation: TvEmulation; phosphorLevel: number; scanlineLevel: number; audio: boolean; volume: number; enableKeyboard: boolean; enableTouch: boolean; touchLeftHanded: boolean; touchJoystickSensitivity: number; keyboardTarget: HTMLElement | HTMLDocument; fullscreenViaKeyboard: boolean; pauseViaKeyboard: boolean; resetViaKeyboard: boolean; pauseViaTouch: boolean; fullscreenViaTouch: boolean; paddleViaMouse: boolean; enableGamepad: boolean; } enum TvMode { ntsc = "ntsc", pal = "pal", secam = "secam" } enum TvEmulation { composite = "composite", svideo = "svideo", none = "none" } enum ScalingMode { qis = "qis", bilinear = "bilinear", none = "none" } interface CartridgeConfig { cartridgeType: CartridgeInfo.CartridgeType; randomSeed: number; emulatePaddles: boolean; frameStart: number; cpuAccuracy: CpuAccuracy; asyncIO: boolean; } const CartridgeType: typeof CartridgeInfo.CartridgeType; const describeCartridgeType: (cartridgeType: CartridgeInfo.CartridgeType) => string; const allCartridgeTypes: () => Array; enum State { running = "running", paused = "paused", stopped = "stopped", error = "error" } enum CpuAccuracy { cycle = "cycle", instruction = "instruction" } } export { Stellerator as default };