import '@iotize/tap/auth';
import '@iotize/tap/service/impl/single-packet';
import { StepOperations } from '@iotize/common/task-manager';
import { Tap } from '@iotize/tap';
import { SinglePacketStoreLoader } from '@iotize/tap/service/impl/single-packet';
import { Observable } from 'rxjs';
export declare class TapNLinkUpdater extends StepOperations<TapNLinkUpdater.Event, Record<string, any>> {
    readonly options: TapNLinkUpdater.Options;
    static create(tap: Tap, firmwareUpdateData: Uint8Array, options?: TapNLinkUpdater.Options): TapNLinkUpdater;
    constructor(steps: StepOperations.OperationType<TapNLinkUpdater.Event>[], options?: TapNLinkUpdater.Options);
    private isFirmwareUpdateAvailable;
    static waitingForReconnection(tap: Tap, options?: {
        reconnectRetryCount?: number;
        reconnectRetryDelay?: number;
    }): Observable<TapNLinkUpdater.Event>;
}
export declare namespace TapNLinkUpdater {
    export const DEFAULT_OPTIONS: Required<Options>;
    export interface Options {
        /**
         * True to try to reconnect tap after firmware update is done
         */
        reconnectAfterUpdate?: boolean;
        /**
         * Number retry for reconnection after firmware update is done
         */
        reconnectRetryCount?: number;
        /**
         * Delay between reconnection attempt in milliseconds
         */
        reconnectRetryDelay?: number;
    }
    interface RestartStepProgress {
        step: 'restart';
    }
    interface FinishStepProgress {
        step: 'finish';
        executeRequestTimeout?: boolean;
    }
    interface ApplyStepProgress {
        step: 'apply';
    }
    interface SetupStepProgress {
        step: 'setup';
    }
    export type Event = SinglePacketStoreLoader.Event | SetupStepProgress | ApplyStepProgress | RestartStepProgress | FinishStepProgress;
    export {};
}
