import { Diff } from '../Diff'; interface EqualDiffSegment extends Diff { equal: TContent[]; } interface ChangeDiffSegment extends Diff { change: Diff[]; } interface OmissionDiffSegment extends Diff { omission: TContent[]; } interface AdditionDiffSegment extends Diff { addition: TContent[]; } type ArrayDiffSegment = EqualDiffSegment | ChangeDiffSegment | OmissionDiffSegment | AdditionDiffSegment; const isEqualDiffSegment = function ( value: ArrayDiffSegment ): value is EqualDiffSegment { return 'equal' in value; }; const isChangeDiffSegment = function ( value: ArrayDiffSegment ): value is ChangeDiffSegment { return 'change' in value; }; const isOmissionDiffSegment = function ( value: ArrayDiffSegment ): value is OmissionDiffSegment { return 'omission' in value; }; const isAdditionDiffSegment = function ( value: ArrayDiffSegment ): value is AdditionDiffSegment { return 'addition' in value; }; export type { EqualDiffSegment, ChangeDiffSegment, OmissionDiffSegment, AdditionDiffSegment, ArrayDiffSegment }; export { isEqualDiffSegment, isChangeDiffSegment, isOmissionDiffSegment, isAdditionDiffSegment };