///
import { BaseEmitter } from './baseEmitter';
import { IDataEvent, IExecutionResult, ISettings, IStatusEvent, ITraceableAction } from './dataEmitter';
import { LoggerFacade } from './loggerFacade';
import { IService } from './maestro';
export interface IPollingSettings {
interval: number;
}
/**
* A base class that handles the scheduling of a polled fetch
* to collect information and emit it
*/
export declare abstract class PollingEmitter extends BaseEmitter implements IService {
protected _interval: number;
protected _intervalTimer?: ReturnType;
protected _lastDataEvent?: IDataEvent;
protected _lastStatusEvent?: IStatusEvent;
/**
*
* @param {string} id
* @param {string} name
* @param {string} desc
* @param {number} interval
* @param {LoggerFacade|undefined} logger
*/
constructor(id: string, name: string, desc: string, _interval: number, logger?: LoggerFacade | undefined);
/**
* Execute the poll and emit the result
* @return {Promise}
*/
protected pollExecutor(): Promise;
/**
* Start polling
*/
startPolling(): void;
/**
* Stop polling
*/
stopPolling(): void;
/**
* Start polling
* @return {Promise}
*/
start(): Promise;
/**
* Stop Polling
* @return {Promise}
*/
stop(): Promise;
/**
* probe current data
* @return {IDataEvent}
*/
probeCurrentData(): Promise;
/**
* probe the status
* @return {IStatusEvent}
*/
probeStatus(): Promise;
/**
* set settings
* @param {ISettings} settings
* @return {Promise}
*/
applySettings(settings: ISettings & ITraceableAction & IPollingSettings): Promise;
/**
* Poll the resource
*/
abstract poll(): Promise;
/**
* Clean up timers used for polling
*/
dispose(): void;
}
/**
* Polls a data source but only emits data events
* when the data changes
*/
export declare abstract class DeltaPollingEmitter extends PollingEmitter {
/**
* Execute the poll and emit the result if there has been a change
* @return {Promise}
*/
protected pollExecutor(): Promise;
/**
* Check if the data event includes changes
* @param {IDataEvent} evt
*/
abstract hasChanged(evt: IDataEvent): boolean;
}