import { ITimer, TimerType } from '../helpers/TimerHelper';
import { IProprietaryTimer, ProprietaryTimerType } from '../helpers/ProprietaryTimerHelper';
/**
 * Interface representing the scheduled reboot action.
 */
export interface IScheduledRebootActions {
    id: string;
    rule: IScheduledRebootRule;
}
export interface IScheduledRebootRule {
    weekdays: number[] | string[];
    time: string;
}
export type WeekdayType = 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY';
/**
 * This enum is necessary to convert between the number representation of the weekday and the string representation.
 * On device and servers values are stored as numbers, but in the JS API, we use strings for better human friendly values.
 */
export declare enum WeekdayNumbered {
    SUNDAY = 0,
    MONDAY = 1,
    TUESDAY = 2,
    WEDNESDAY = 3,
    THURSDAY = 4,
    FRIDAY = 5,
    SATURDAY = 6
}
export declare enum WeekdayNamed {
    SUNDAY = "SUNDAY",
    MONDAY = "MONDAY",
    TUESDAY = "TUESDAY",
    WEDNESDAY = "WEDNESDAY",
    THURSDAY = "THURSDAY",
    FRIDAY = "FRIDAY",
    SATURDAY = "SATURDAY"
}
export default interface IPower {
    systemReboot(): Promise<void>;
    appRestart(): Promise<void>;
    getTimers(): Promise<ITimer[]>;
    setTimer(type: keyof typeof TimerType, timeOn: string | null, timeOff: string | null, weekdays: string[], volume: number): Promise<void>;
    unsetTimer(type: keyof typeof TimerType): Promise<void>;
    getProprietaryTimers(): Promise<IProprietaryTimer[]>;
    setProprietaryTimer(type: ProprietaryTimerType, timeOn: string | null, timeOff: string | null, weekdays: string[], keepAppletRunning?: boolean): Promise<void>;
    unsetProprietaryTimer(type: ProprietaryTimerType): Promise<void>;
    setScheduledReboot(weekdays: WeekdayType[], time: string): Promise<void>;
    removeScheduledReboot(id: string): Promise<void>;
    getScheduledReboots(): Promise<IScheduledRebootActions[]>;
    clearScheduledReboots(): Promise<void>;
}
