import { Hours, Minutes, Seconds } from "../../Helpers";
import { DeviceResponseType } from "../Devices/IDevice";
import { IDeviceStateData } from "../Devices/IDeviceState";
/**
 * Day of week, from monday to sunday
 */
export type DayOfWeekArgument = 1 | 2 | 3 | 4 | 5 | 6 | 7;
export declare class DeviceStateArgument {
    private _comparisonParams;
    private _checkDeviceState;
    /**
     * Field is set when the method SetCheckDeviceState<T extends IDeviceStateData> is called,
     * type is set based on instancof state: T - so this object so this object must have a prototype.
     *
     * If the object has no prototypes you need to set this field manually AFTER calling SetCheckDeviceState<T extends IDeviceStateData>(state: T)
     */
    Type: DeviceResponseType;
    DeviceGuid: string;
    ComparisonMethod: DeviceStateComparisonMethod;
    GetCheckDeviceState<T extends IDeviceStateData>(): T;
    SetCheckDeviceState<T extends IDeviceStateData>(state: T): void;
    GetComparisonParam<E extends IDeviceStateComparisonParams>(comparisonParam: DeviceStateComparisonParams): E;
    GetComparisonParams(): Map<DeviceStateComparisonParams, IDeviceStateComparisonParams>;
    SetComparisonParam<E extends IDeviceStateComparisonParams>(comparisonParam: DeviceStateComparisonParams, value: E): void;
}
export interface IDeviceStateComparisonParams {
    get Value(): any;
}
export declare class NumberParam implements IDeviceStateComparisonParams {
    private _value;
    constructor(val: number);
    get Value(): number;
    set Value(val: number);
}
export declare class TimeSpanParam implements IDeviceStateComparisonParams {
    private _value;
    constructor(rawValue: string);
    constructor(seconds: Seconds, minutes: Minutes, hours: Hours, days: number);
    SetTimeSpan(seconds: Seconds, minutes: Minutes, hours: Hours, days: number): void;
    get Value(): string;
}
export declare enum DeviceStateComparisonMethod {
    Default = 0,
    Delta = 1,
    StateRepeat = 2
}
export declare enum DeviceStateComparisonParams {
    DeltaValue = 0,
    DeltaCalculationTimeRange = 1,
    StateRepeatCount = 2,
    StateRepeatTimeRange = 3
}
export declare class AstronomicalClockArgument {
    Position: SunPosition;
}
export declare class AstronomicalClockWithOffsetArgument {
    Position: SunPosition;
    Offset: number;
}
export declare enum SunPosition {
    SunRise = 1,
    SunSet = 2
}
export declare class TimeArgument {
    constructor(seconds: Seconds, minutes: Minutes, hours: Hours);
    constructor();
    Hour: Hours;
    Minute: Minutes;
    Second: Seconds;
}
export declare class SimpleTimeSpanArgument {
    constructor(seconds: Seconds, minutes: Minutes, hours: Hours, days: number);
    constructor();
    hours: Hours;
    minutes: Minutes;
    seconds: Seconds;
    days: number;
}
export declare class ConditionInfoArgument {
    DeviceGuid: string;
}
