import { IOptions as DasmOptions } from 'dasm'; import StellaConfig from '../machine/stella/Config'; import Board from '../machine/stella/Board'; import CpuInterface from '../machine/cpu/CpuInterface'; import Instruction from '../machine/cpu/Instruction'; declare class VcsRunner { private _defaultCycles; private constructor(); static fromSource(source: string, config?: VcsRunner.Config): Promise; static fromFile(fileName: string, config?: VcsRunner.Config): Promise; boot(): this; cld(): this; modifyCpuState(mapping: (state: CpuInterface.State) => Partial): this; getCpuState(): CpuInterface.State; runUntil(condition: (runner: this) => boolean, maxCycles?: number, stepping?: VcsRunner.Stepping): this; runTo(label: string, maxCycles?: number): this; runToRts(maxCycles?: number): this; hasReachedLabel(label: string): boolean; nextInstruction(): Instruction; jumpTo(label: string): this; getBoard(): Board; getCpuCycles(): number; getColorClocks(): number; readMemory(address: number): number; writeMemoryAt(label: string, value: number): this; readMemoryAt(label: string): number; trap(condition: VcsRunner.Trap['condition'], handler: VcsRunner.Trap['handler']): this; trapAt(label: string, handler: VcsRunner.Trap['handler']): this; trapAlways(handler: VcsRunner.Trap['handler']): this; private _resolveLabel; private _tick; private _assembly; private _symbols; private _cartridge; private _board; private _traps; private _cpuClocks; private _colorClocks; } declare namespace VcsRunner { enum Stepping { instruction = 0, cpuClock = 1, colorClock = 2 } interface Trap { condition: (runner: VcsRunner) => boolean; handler: () => void; } interface Config { includes?: DasmOptions['includes']; stellaConfig?: Partial; defaultCycles?: number; } } export default VcsRunner;