import { Event } from 'microevent.ts'; import BoardInterface from '../board/BoardInterface'; import CpuInterface from '../cpu/CpuInterface'; import Memory from './Memory'; import BusInterface from '../bus/BusInterface'; import TimerInterface from '../board/TimerInterface'; import SchedulerInterface from '../../tools/scheduler/SchedulerInterface'; import TaskInterface from '../../tools/scheduler/TaskInterface'; declare class Board implements BoardInterface { constructor(cpuFactory?: (bus: BusInterface) => CpuInterface); getCpu(): CpuInterface; getBus(): BusInterface; getTimer(): TimerInterface; reset(hard: boolean): Board; boot(): Board; suspend(): void; resume(): void; triggerTrap(reason: BoardInterface.TrapReason, message?: string): Board; getBoardStateDebug(): string; setClockMode(clockMode: BoardInterface.ClockMode): Board; getClockMode(): BoardInterface.ClockMode; protected _createBus(): Memory; protected _tick(clocks: number): number; protected _start(scheduler: SchedulerInterface, sliceHint?: number): void; protected _executeSlice(board: Board): void; protected _stop(): void; protected _onInvalidInstruction(): void; clock: Event; cpuClock: Event; trap: Event; systemReset: Event; protected _cpu: CpuInterface; protected _bus: Memory; protected _trap: boolean; protected _sliceHint: number; protected _runTask: TaskInterface; protected _clockMode: BoardInterface.ClockMode; protected _timer: { tick: (clocks: number) => number; start: (scheduler: SchedulerInterface, sliceHint?: number) => void; stop: () => void; isRunning: () => boolean; }; } export { Board as default };