type FixtureTypes = Obj & FixtureTypeObj[] & { [index: string]: FixtureTypeObj }; type FixtureTypeObj = Obj & any[] & { [index: string]: any } & { DMXModes: DMXModes; Wheels: Wheels; AttributeDefinitions: AttributeDefinitions; }; type DMXModes = Obj & DMXMode[] & { [index: string]: DMXMode } & { Default: DMXMode; }; type DMXMode = Obj & any[] & { [index: string]: any } & { DMXChannels: DMXChannels; }; type DMXChannels = Obj & DMXChannel[] & { [index: string]: DMXChannel }; type DMXChannelProps = ObjProps & { dmxBreak: number; coarse: number | 'None'; fine: number | 'None'; ultra: number | 'None'; Highlight: number; lowLight: number; }; type DMXChannel = Obj & { [index: string]: LogicalChannel; }; type LogicalChannelProps = ObjProps & { attribute: string; snap: any; master: any; }; type LogicalChannel = Obj & LogicalChannelProps & { ChannelFunction: ChannelFunction; }; type ChannelFunctionProps = ObjProps & { attribute: string; dmxFrom: number; dmxTo: number; // READ ONLY physicalFrom: number; physicalTo: number; wheel: Wheel; dmxInvert: boolean; }; type ChannelFunction = Obj & ChannelFunctionProps & { wheel: Wheel; }; type ChannelSetProps = ObjProps & { DMXfrom: number; DMXto: number; wheelSlotIndex: number; }; type ChannelSet = Obj & ChannelSetProps; type Wheels = Obj & Wheel[] & { [index: string]: Wheel }; type Wheel = Obj & Slot[]; type Slot = Obj & { color: string; // R,G,B,A : normalized 0-1 image: GoboImage; }; type AttributeDefinitions = Obj & { FeatureGroups: FeatureGroups; Attributes: Attributes; }; type FeatureGroups = Obj; type FeatureGroup = Obj & { [key: string]: Feature }; type Feature = Obj & {}; /** * NOTE: Using attributes.Children() doesn't give all attributes. * Also we access the attributes by name attribute['ColorRGB_R'], * since not ALL attributes appear this way. * We need to get attributes with GetAttributeByUIChannel(). * * GetAttributeCount() is not the same as GetUIChannelCount(). */ type Attributes = Obj & { [key: string]: Attribute }; type Attribute = Obj & { Feature: Feature; Color: any; };