import { Status } from "lavva.exalushome/build/js/DataFrame";
import { IDevice } from "lavva.exalushome/build/js/Services/Devices/IDevice";
import { IDeviceConfigService } from "lavva.exalushome/build/js/Services/Devices/IDeviceConfigService";
import { ResponseResult } from "lavva.exalushome/build/js/Services/FieldChangeResult";
import { GlobalTimeParameters, IInputOutputSwitchParameters, InputModeSwitchParams, InputOutputSwitchParameters, ReactionToInputSwitchParams, StateOfTurnOnSwitchDeviceParameters } from "../Common/OnOffSwitchConfigurations/OnOffSwitchParameters";
import { SwitchConfigurationErrorCode } from "../Common/OnOffSwitchConfigurations/OnOffSwitchService";
import { LedControllersLightTransitionTime } from "./SlrConfigParameters";
export interface ISlr22ConfigService extends IDeviceConfigService {
    GetTurnOnBehaviourAsync(device: IDevice, channel: number): Promise<StateOfTurnOnSwitchDeviceParameters | ResponseResult<SwitchConfigurationErrorCode>>;
    SetTurnOnBehaviourAsync(device: IDevice, params: StateOfTurnOnSwitchDeviceParameters): Promise<Status>;
    GetDimmingAndBrighteningTimeAsync(device: IDevice, channel: number): Promise<ResponseResult<SwitchConfigurationErrorCode> | LedControllersLightTransitionTime>;
    SetDimmingAndBrighteningTimeAsync(device: IDevice, channel: number, time: LedControllersLightTransitionTime): Promise<Status>;
    GetTurnOnTimeAsync(device: IDevice, channel: number): Promise<GlobalTimeParameters | ResponseResult<SwitchConfigurationErrorCode>>;
    /**
     * Turn on time for SLR-22 coud be set in range between 0 and 4 minutes, when time is set below 240sec (4 minutes) method returns WrongData
     * @param device
     * @param params
     */
    SetTurnOnTimeAsync(device: IDevice, params: GlobalTimeParameters): Promise<Status>;
    GetTurnOffTimeAsync(device: IDevice, channel: number): Promise<GlobalTimeParameters | ResponseResult<SwitchConfigurationErrorCode>>;
    /**
     * Turn off time for SLR-22 coud be set in range between 0 and 4 minutes, when time is set below 240sec (4 minutes) method returns WrongData
     * @param device
     * @param params
     */
    SetTurnOffTimeAsync(device: IDevice, params: GlobalTimeParameters): Promise<Status>;
    GetTurnOnOffTimeActivationAsync(device: IDevice): Promise<boolean | ResponseResult<SwitchConfigurationErrorCode>>;
    SetTurnOnOffTimeActivationAsync(device: IDevice, activation: boolean): Promise<Status>;
    GetSwitchInputOutputParamAsync(device: IDevice, channel: number): Promise<IInputOutputSwitchParameters[] | ResponseResult<SwitchConfigurationErrorCode>>;
    SetSwitchInputOutputParamAsync(device: IDevice, params: InputOutputSwitchParameters): Promise<Status>;
    SetSwitchInputOutputInputModeParamAsync(device: IDevice, params: InputModeSwitchParams): Promise<Status>;
    /**
     * Reaction to input for SLR-22 - can be set to On, Off or OnOff
     * @param device
     * @param params
     */
    SetSwitchInputOutputReactionToInputParamAsync(device: IDevice, params: ReactionToInputSwitchParams): Promise<Status>;
    GetFloatingTimeAsync(device: IDevice, channel: number): Promise<GlobalTimeParameters | ResponseResult<SwitchConfigurationErrorCode>>;
    /**
     * Floating time - can be set in range of 1s to 18h.
     * @param device
     * @param params
     */
    SetFloatingTimeAsync(device: IDevice, params: GlobalTimeParameters): Promise<Status>;
}
