import { InputHandler } from './InputHandler'; import { Config, ConfigAttrs } from './models/Config'; import { Value } from './models/Value'; import { Module } from './modules/Module'; import { Renderer } from './Renderer'; import { StateProcessor } from './StateProcessor'; interface SetupCommand { config: ConfigAttrs; modules: Module[]; } export type ValueChangeHandler = (v: { index: number; real: number; ratio: number; }) => void; /** * Engine initializes and connects all modules together. */ export declare class Engine { readonly config: Config; readonly stateProcessor: StateProcessor; readonly inputHandler: InputHandler; readonly renderer: Renderer; readonly modules: Module[]; /** Store for handlers for value change event */ private valueChangeHandlers; /** Disabled Engine doesn't react on value change events */ private enabled; constructor(setup: SetupCommand); addValueChangeHandler(handler: ValueChangeHandler): VoidFunction; enable(): void; disable(): void; isEnabled(): boolean; /** * Create Value object from real value. */ produceRealValue(value: number): Value; /** * Initialize views of all modules. */ private initView; /** * Internal handler for reacting on any value changed. * Updates the state, triggers value change event handlers. */ private onValueChange; private renderState; } export {};