import { Observable } from 'rxjs';
import { AppContext } from './app-context';
import { ExtensionBroker } from './extension-broker/extension-broker';
export declare enum ScheduleRebootReasonOption {
    UserDefined = "u",
    Planned = "p"
}
export interface ScheduleRebootReason {
    restartReason: ScheduleRebootReasonOption;
    reasonNumberMajor: number;
    reasonNumberMinor: number;
}
export interface ScheduleRebootDialogParameter {
    minDateTimeLocal?: Date;
    maxDateTimeLocal?: Date;
    reason?: ScheduleRebootReason;
}
export interface RestartSetting {
    /**
    * The flag indicates restart later or not
    * true: restart later, false: restart immediately
    */
    restartLater: boolean;
    restartTime?: Date;
}
export interface ScheduleRebootDialogResult {
    confirm: boolean;
    restartOption: RestartSetting;
}
export interface ScheduleRebootResponse {
    restartOption: RestartSetting;
    success?: boolean;
}
export declare class ScheduleRebootManager {
    private appContext;
    private extensionBroker;
    private nodeName;
    private strings;
    private scheduleRebootStrings;
    protected get logSourceName(): string;
    constructor(appContext: AppContext, extensionBroker: ExtensionBroker);
    private showScheduleRestartDialog;
    private onRestart;
    private cancelScheduledReboot;
    private showNotification;
    private restart;
    scheduleReboot(args?: ScheduleRebootDialogParameter): Observable<ScheduleRebootResponse>;
}
