import { Observable } from 'rxjs';
import { MonitorInterface } from '../../monitor/monitor.interface';
export interface VariableMonitorOptions {
    period?: number;
    forceChange?: boolean;
    duration?: number;
}
export declare type VariableMonitorEventType = "START" | "STOP" | "PAUSE" | "READ_ERROR" | "READ_SUCCESS";
export interface VariableMonitorEvent<PayloadType = any> {
    type: VariableMonitorEventType;
    payload: PayloadType;
}
export interface VariableMonitoringUpdate<DataType> {
    update(totalMs: number): Promise<DataType>;
}
export interface VariableMonitor<DataType> extends MonitorInterface<DataType> {
    start(options?: VariableMonitorOptions): this;
    /**
     * Stop monitoring
     * It will terminates values and event streams (complete will be called on your subsriptions)
     */
    stop(): this;
    /**
     * Pause monitoring
     */
    pause(): this;
    values(): Observable<DataType>;
    events(): Observable<VariableMonitorEvent>;
}
