export interface IRemoteDevice {
    get DeviceGuid(): string;
    get Channel(): number;
    get Guid(): string;
    get Name(): string;
    get RemoteChannelAmount(): number;
    get DeviceChannelAmount(): number;
    get DeviceType(): DeviceType;
    get RemoteMode(): RemoteMode;
    set RemoteMode(value: RemoteMode);
    get CurrentRemotePairingOptions(): DeviceTypeOptions;
    get RawCurrentRemoteOptions(): PairingOption;
}
export declare enum RemoteMode {
    OnOff = 1,
    Bistable = 2,
    Monostable = 3,
    Timer = 4,
    Local = 5,
    Central = 6,
    PixoBidi_1 = 7,
    PixoBidi_12 = 8,
    TwoButton = 9,
    OneButton = 10,
    Comfort = 11,
    TimerDimmer = 12,
    Gate = 13,
    GateWay = 14,
    NXZFBidi = 15,
    PXZFBidi = 16,
    WSZFBidi = 17
}
export declare enum DeviceType {
    OnOff = 1,
    Blind = 2,
    Dimmer = 3,
    Gate = 4,
    Gateway = 5,
    Facade = 6
}
type OnOff = {
    [RemoteMode.OnOff]: RemoteMode;
    [RemoteMode.Bistable]: RemoteMode;
    [RemoteMode.Monostable]: RemoteMode;
    [RemoteMode.Timer]: RemoteMode;
};
type Blind = {
    [RemoteMode.PixoBidi_1]: RemoteMode;
    [RemoteMode.PixoBidi_12]: RemoteMode;
};
type Dimmer = {
    [RemoteMode.TwoButton]: RemoteMode;
    [RemoteMode.OneButton]: RemoteMode;
    [RemoteMode.Comfort]: RemoteMode;
    [RemoteMode.TimerDimmer]: RemoteMode;
};
type Gate = {
    [RemoteMode.Gate]: RemoteMode;
    [RemoteMode.Bistable]: RemoteMode;
};
type Gateway = {
    [RemoteMode.GateWay]: RemoteMode;
    [RemoteMode.Bistable]: RemoteMode;
};
type Facade = {
    [RemoteMode.NXZFBidi]: RemoteMode;
    [RemoteMode.PXZFBidi]: RemoteMode;
    [RemoteMode.WSZFBidi]: RemoteMode;
};
type DeviceTypeRemoteMode = {
    [DeviceType.OnOff]: OnOff;
    [DeviceType.Blind]: Blind;
    [DeviceType.Dimmer]: Dimmer;
    [DeviceType.Gate]: Gate;
    [DeviceType.Gateway]: Gateway;
    [DeviceType.Facade]: Facade;
};
export declare class DeviceTypeMode {
    static readonly AvailableModes: DeviceTypeRemoteMode;
}
declare class RemoteDeviceResponse {
    DeviceGuid: string;
    Channel: number;
    Guid: string;
    Name: string;
    RemoteChannelAmount: number;
    DeviceChannelAmount: number;
    PairingOption: PairingOption;
    OldSettingsOptional: PairingOption;
    DeviceType: DeviceType;
}
declare class PairingOption {
    Mode: RemoteMode;
    KeyOn: number;
    KeyOff: number;
    KeyBrightening: number;
    KeyDimmer: number;
    TimeOn: number;
    Channel: number;
}
type DeviceTypeOptions = {
    [DeviceType.OnOff]: OnOffOptions;
    [DeviceType.Blind]: BlindOptions;
    [DeviceType.Dimmer]: DimmerOptions;
    [DeviceType.Gate]: GateOptions;
    [DeviceType.Gateway]: GateWayOptions;
    [DeviceType.Facade]: FacadeOptions;
};
interface IOptions {
    ModeParams: any;
}
declare class OnOffParameters {
    private _remoteChannels;
    private _keyOn;
    private _keyOff;
    constructor(remoteChannels: number, options: PairingOption);
    get KeyOn(): number;
    get KeyOff(): number;
    set KeyOn(value: number);
    set KeyOff(value: number);
}
declare class ChannelParameters {
    private _remoteChannels;
    private _channel;
    constructor(remoteChannels: number, options: PairingOption);
    get Channel(): number;
    set Channel(value: number);
}
declare class BistableMonostableParameters {
    private _remoteChannels;
    private _keyOn;
    constructor(remoteChannels: number, options: PairingOption);
    get KeyOn(): number;
    set KeyOn(value: number);
}
declare class TimerParameters {
    private _remoteChannels;
    private _keyOn;
    private _timeOn;
    constructor(remoteChannels: number, options: PairingOption);
    get KeyOn(): number;
    set KeyOn(value: number);
    get TimeOn(): number;
    set TimeOn(value: number);
}
declare class DimmingBrighteningParameters {
    private _remoteChannels;
    private _keyOn;
    private _keyOff;
    private _keyBrightening;
    private _keyDimmer;
    constructor(remoteChannels: number, options: PairingOption);
    get KeyOn(): number;
    set KeyOn(value: number);
    get KeyOff(): number;
    set KeyOff(value: number);
    get KeyBrightening(): number;
    set KeyBrightening(value: number);
    get KeyDimmer(): number;
    set KeyDimmer(value: number);
}
type OnOffModes = {
    [RemoteMode.OnOff]: OnOffParameters;
    [RemoteMode.Bistable]: BistableMonostableParameters;
    [RemoteMode.Monostable]: BistableMonostableParameters;
    [RemoteMode.Timer]: TimerParameters;
};
declare class OnOffOptions implements IOptions {
    ModeParams: OnOffModes;
    constructor(remoteChannels: number, options: PairingOption);
}
type BlindModes = {
    [RemoteMode.PixoBidi_1]: ChannelParameters;
    [RemoteMode.PixoBidi_12]: ChannelParameters;
};
declare class BlindOptions implements IOptions {
    ModeParams: BlindModes;
    constructor(remoteChannels: number, options: PairingOption);
}
type DimmerModes = {
    [RemoteMode.TwoButton]: OnOffParameters;
    [RemoteMode.OneButton]: BistableMonostableParameters;
    [RemoteMode.Comfort]: DimmingBrighteningParameters;
    [RemoteMode.TimerDimmer]: TimerParameters;
};
declare class DimmerOptions implements IOptions {
    ModeParams: DimmerModes;
    constructor(remoteChannels: number, options: PairingOption);
}
type GateModes = {
    [RemoteMode.Gate]: BistableMonostableParameters;
    [RemoteMode.Bistable]: BistableMonostableParameters;
};
declare class GateOptions implements IOptions {
    ModeParams: GateModes;
    constructor(remoteChannels: number, options: PairingOption);
}
type GateWayModes = {
    [RemoteMode.GateWay]: BistableMonostableParameters;
    [RemoteMode.Bistable]: BistableMonostableParameters;
};
declare class GateWayOptions implements IOptions {
    ModeParams: GateWayModes;
    constructor(remoteChannels: number, options: PairingOption);
}
type FacadeModes = {
    [RemoteMode.NXZFBidi]: ChannelParameters;
    [RemoteMode.PXZFBidi]: ChannelParameters;
    [RemoteMode.WSZFBidi]: null;
};
declare class FacadeOptions implements IOptions {
    ModeParams: FacadeModes;
    constructor(remoteChannels: number, options: PairingOption);
}
export declare class RemoteDevice implements IRemoteDevice {
    private _configs;
    protected _deviceGuid: string;
    protected _channel: number;
    protected _guid: string;
    protected _name: string;
    protected _remoteChannelAmount: number;
    protected _deviceChannelAmount: number;
    protected _deviceType: DeviceType;
    protected _remoteMode: RemoteMode;
    protected _currentRemotePairingOptions: DeviceTypeOptions;
    protected _rawCurrentRemoteOptions: PairingOption;
    protected _rawOldRemoteOptions: PairingOption;
    constructor(data: RemoteDeviceResponse);
    get DeviceGuid(): string;
    set DeviceGuid(value: string);
    get Channel(): number;
    set Channel(value: number);
    get Guid(): string;
    set Guid(value: string);
    get Name(): string;
    set Name(value: string);
    get RemoteChannelAmount(): number;
    get DeviceChannelAmount(): number;
    get DeviceType(): DeviceType;
    set DeviceType(value: DeviceType);
    get RemoteMode(): RemoteMode;
    set RemoteMode(value: RemoteMode);
    get CurrentRemotePairingOptions(): DeviceTypeOptions;
    get RawCurrentRemoteOptions(): PairingOption;
    get RawOldRemoteOptions(): PairingOption;
}
export {};
