import { Status } from "lavva.exalushome/build/js/DataFrame";
import { IDevice } from "lavva.exalushome/build/js/Services/Devices/IDevice";
import { ResponseResult } from "lavva.exalushome/build/js/Services/FieldChangeResult";
import { ComfortPositionParameters, InputOutputBlindParameters, ManualCalibration, StateOfTurnOnBlindDeviceParameters } from "../Common/BlindConfigurations/BlindConfigParameters";
import { BlindConfigurationErrorCode } from "../Common/BlindConfigurations/BlindConfigService";
export interface ISrp22ConfigService {
    GetServiceName(): string;
    /**
    * Helper for manual calibration.
    * The steps must be executed in the correct order, otherwise the "step" function will return NoPermissionToPerformThisOperation.
    * Promise<Status> returned by each calibration step does not mean that the step has been completed! The "OK" status only means that the controller confirms that the task has been scheduled.
    *
    * @param device
    * @param channel
    * @returns ManualCalibration - calibration functions as the next steps in the calibration activity.
    */
    ManualCalibration(device: IDevice, channel: number): ManualCalibration | ResponseResult<BlindConfigurationErrorCode>;
    GetComfortPositionsAsync(device: IDevice, channel: number): Promise<ComfortPositionParameters | ResponseResult<BlindConfigurationErrorCode>>;
    SetComfortPositionAsync(device: IDevice, data: ComfortPositionParameters): Promise<Status>;
    GetBlindInputOutputParamAsync(device: IDevice, channel: number): Promise<InputOutputBlindParameters | ResponseResult<BlindConfigurationErrorCode>>;
    SetBlindInputOutputParamAsync(device: IDevice, params: InputOutputBlindParameters): Promise<Status>;
    GetTurnOnBehaviourAsync(device: IDevice, channel: number): Promise<StateOfTurnOnBlindDeviceParameters | ResponseResult<BlindConfigurationErrorCode>>;
    SetTurnOnBehaviourAsync(device: IDevice, params: StateOfTurnOnBlindDeviceParameters): Promise<Status>;
}
