UNPKG

lavva.exalushome

Version:

Library implementing communication and abstraction layers for ExalusHome system

78 lines (77 loc) 3.64 kB
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" }