import { Tap } from '@iotize/device-client.js';
import { Observable } from 'rxjs';
export declare const DEFAULT_KEEP_ALIVE_PERIOD_MS = 5000;
export declare type KeepAliveEvent = KeepAliveEventError | KeepAliveEventTick | KeepAliveEventScheduleTick | {
    type: 'start';
} | {
    type: 'stop';
};
interface KeepAliveEventError {
    type: 'error';
    error: Error;
}
interface KeepAliveEventTick {
    type: 'tick';
}
interface KeepAliveEventScheduleTick {
    type: 'rescheduleKeepAlive';
    timeout: number;
}
export interface KeepAliveOptions {
    period: number;
}
export declare class KeepAliveEngine {
    private tap;
    options: KeepAliveOptions;
    private timeoutId?;
    private _lastResponseTime;
    private _isStopped;
    get events(): Observable<KeepAliveEvent>;
    private _events;
    constructor(tap: Tap, options: KeepAliveOptions);
    get running(): boolean;
    start(): void;
    stop(): void;
    private _setupNextTimeout;
}
export {};
