import { TimeSegment } from '../segments/TimeSegment'; import * as state from './StateConfigs'; export interface ISequenceConfigShape { period: number; compareAsBitwise?: boolean; } export interface ISegmentConfigShape { duration: number; omitFirst?: boolean; compareAsBitwise?: boolean; states?: Array; } export interface ISegmentInterface { add(ctor: ISegmentType, config: ISegmentConfigShape): T; group(intervals: number, ...segments: Array>): T; } export type ISegmentType = new (config: ISegmentConfigShape) => T; export interface IGroupParameter { ctor: ISegmentType; config: ISegmentConfigShape; }