import { Subscription, Observable, Subject } from 'rxjs';
import { VariableMonitor, VariableMonitorOptions, VariableMonitorEvent, VariableMonitoringUpdate, VariableMonitorEventType } from './variable-monitor.interface';
import { VariableInteraction } from '../variable-interaction.interface';
export declare class DefaultVariableMonitor<DataType> implements VariableMonitor<DataType> {
    static DEFAULT_PERIOD: number;
    static fromVariable<DataType>(variable: VariableInteraction<DataType>): DefaultVariableMonitor<DataType>;
    _previousValue?: DataType;
    _values?: Subject<DataType>;
    _events?: Subject<VariableMonitorEvent>;
    _options: VariableMonitorOptions;
    _interval?: Observable<number>;
    _intervalSubscription?: Subscription;
    _updater: VariableMonitoringUpdate<DataType>;
    constructor(updater: VariableMonitoringUpdate<DataType>);
    start(options?: VariableMonitorOptions): this;
    isStarted(): boolean;
    pause(): this;
    stop(): this;
    values(): Observable<DataType>;
    events(): Observable<VariableMonitorEvent>;
    notifyNewValue(data: DataType): void;
    fetchNewValue(count: number): Promise<any>;
    notifyValueError(error: any): void;
    protected valueHasChanged(newValue: DataType): boolean;
    protected _emit(type: VariableMonitorEventType): void;
}
