import { IDevice } from 'lavva.exalushome/build/js/Services/Devices/IDevice';
import { ResponseResult } from 'lavva.exalushome/build/js/Services/FieldChangeResult';
import { DeviceType, IRemoteDevice, RemoteDevice, RemoteMode } from './RemoteParams';
import { Status } from 'lavva.exalushome/build/js/DataFrame';
import { IRemotesService } from './IRemotesService';
export declare class RemotesService implements IRemotesService {
    private _connection;
    private static _pairedRemoteCache;
    static readonly ServiceName: string;
    constructor();
    GetServiceName(): string;
    GetPairedRemotesAsync(device: IDevice, channel: number): Promise<IRemoteDevice[] | ResponseResult<RemoteServiceErrorCode>>;
    GetAvailableRemotesForDeviceAsync(deviceToControl: IDevice, channelToControll: number): Promise<IRemoteDevice[]>;
    EditRemoteOptionsAsync(remote: IRemoteDevice): Promise<ResponseResult<RemoteServiceErrorCode> | Status>;
    AssingRemoteToDeviceAsync(remote: IRemoteDevice): Promise<ResponseResult<RemoteServiceErrorCode> | Status>;
    RemoveRemoteFromDeviceAsync(remote: IRemoteDevice): Promise<Status>;
    protected GenerateRemoteInitConfig(remoteDev: IDevice, deviceToControl: IDevice, channelToControll: number, remoteTypeInit: RemoteTypeInit): RemoteDevice;
    protected GenerateRemoteRawObject(remote: IRemoteDevice): RemoteDeviceRawObject;
}
export declare enum RemoteServiceErrorCode {
    OtherError = "OtherError",
    InvalidChannelNumber = "InvalidChannelNumber",
    NoData = "NoData",
    IllegalButtonNumber = "IllegalButtonNumber",
    ButtonAlreadyAssigned = "ButtonAlreadyAssigned",
    IllegalTimeValue = "IllegalTimeValue",
    NoPairedRemotes = "NoPairedRemotes"
}
declare enum RemoteTypeInit {
    FacadeWindSensor = -1,
    FacadeSingle = 0,
    FacadeMultiple = 1,
    BlindsSingle = 2,
    BlindsMultiple = 3,
    DimmerSingle = 4,
    DimmerMultiple = 5,
    OnOffSingle = 6,
    OnOffMultiple = 7,
    GateSingle = 8,
    GateMultiple = 9,
    GatewaySingle = 10,
    GatewayMultiple = 11
}
declare class RemoteDeviceRawObject {
    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;
}
export {};
