lavva.exalushome
Version:
Library implementing communication and abstraction layers for ExalusHome system
78 lines (77 loc) • 3.64 kB
TypeScript
import { Status } from "../../DataFrame";
import { IDIService } from "../../IDIService";
import { ResponseResult } from "../FieldChangeResult";
import { IRawSequence, ISequence, ISequenceInfo, ScenesUsedIn, ScenesUtils, SupportedTaskTypes } from "./Scenes";
import { SequenceBuilder, SequenceRequestData } from "./ScenesBuilder";
export interface IScenesService extends IDIService {
/**
* Returns list of sequences available in controller.
*/
GetSequencesListAsync(): Promise<ISequenceInfo[] | ResponseResult<ScenesServiceErrorCode>>;
/**
* Returns details of given sequence
* @param sequenceInfo sequence info - method GetSequencesListAsync returns this object.
*/
GetSequenceAsync(sequenceInfo: ISequenceInfo): Promise<(ISequence & IRawSequence) | ResponseResult<ScenesServiceErrorCode>>;
GetSequenceAsync(sequenceGuid: string): Promise<(ISequence & IRawSequence) | ResponseResult<ScenesServiceErrorCode>>;
/**
* Function returns helper for sequence creation, you need to pass sequence name and icon, rest of settings can be set in builder.
* @param newSequenceName new sequence name
* @param newSequenceIcon new sequence icon
*/
GetSequenceBuilder(newSequenceName: string, newSequenceIcon: string): SequenceBuilder;
GetSequenceBuilder(newSequenceName: string): SequenceBuilder;
GetSequenceBuilder(): SequenceBuilder;
/**
* Creates sequence in controller, first you nedd to generate sequence using SequenceBuilder.
* @param sequence sequence generated from SequenceBuilder
*/
CreateSequenceAsync(sequence: SequenceRequestData): Promise<Status>;
/**
* Function check if given sequence is used in another sequences (as task or as argument)
* This function should be call before deleting sequence to inform user that removing given sequence coud have inpact to scenes logic
* @param sequenceInfo
*/
CheckIfSequenceIsUsedInAnotherSequenceAsync(sequenceInfo: ISequenceInfo): Promise<ScenesUsedIn | ResponseResult<ScenesServiceErrorCode>>;
CheckIfSequenceIsUsedInAnotherSequenceAsync(sequenceGuid: string): Promise<ScenesUsedIn | ResponseResult<ScenesServiceErrorCode>>;
/**
* Delete sequence from controller
* @param sequenceInfo
*/
DeleteSequenceAsync(sequenceInfo: ISequenceInfo): Promise<Status>;
DeleteSequenceAsync(sequenceGuid: string): Promise<Status>;
/**
* Editing sequence in controller, first you nedd to make changes in sequence using SequenceBuilder.
* @param sequence
*/
EditSequenceAsync(sequence: SequenceRequestData): Promise<Status>;
/**
* Activate sequence (turns on)
* @param sequenceInfo
*/
EnableSequenceAsync(sequenceInfo: ISequenceInfo): Promise<Status>;
EnableSequenceAsync(sequenceGuid: string): Promise<Status>;
/**
* Deactivate sequence (turns off)
* @param sequenceInfo
*/
DisableSequenceAsync(sequenceInfo: ISequenceInfo): Promise<Status>;
DisableSequenceAsync(sequenceGuid: string): Promise<Status>;
/**
* Runs sequence
* @param sequenceInfo
*/
RunSequenceAsync(sequenceInfo: ISequenceInfo): Promise<Status>;
RunSequenceAsync(sequenceGuid: string): Promise<Status>;
/**
* Returns additional functions to assist in the context of scenario building
*/
GetUtilsAsync(): Promise<ScenesUtils>;
GetSupportedTaskTypesAsync(): Promise<SupportedTaskTypes[]>;
}
export declare enum ScenesServiceErrorCode {
OtherError = "OtherError",
FatalError = "FatalError",
NoData = "NoData",
InvalidSceneGuid = "InvalidSceneGuid"
}