import { ResourceId } from '../models' export interface SessionReportTimelineItemBase { id: ResourceId eventType: string subType: string startTime: number userId: ResourceId endTime: number duration: number reactions: SessionReportTimelineReaction[] } // session items export interface SessionReportTimelineItemSessionEvent extends SessionReportTimelineItemBase { eventType: 'session' subType: 'session_start' | 'session_end' } // text items export interface SessionReportTimelineItemTextSegment extends SessionReportTimelineItemBase { eventType: 'text' subType: 'segment' text: string confidence: number children: SessionReportTimelineItemTextChild[] } export interface SessionReportTimelineItemTextChild extends SessionReportTimelineItemBase { eventType: 'text' subType: 'interjection' | 'interruption' parentId: ResourceId text: string confidence: number targetIndices: number[] } export type SessionReportTimelineItemText = SessionReportTimelineItemTextSegment // scene items export interface SessionReportTimelineItemSceneEvent extends SessionReportTimelineItemBase { eventType: 'scene' subType: 'screen_share_start' | 'screen_share_end' } export interface SessionReportTimelineItemSceneChange extends SessionReportTimelineItemBase { eventType: 'scene' subType: 'scene_change' mediaUrl: string } export type SessionReportTimelineItemScene = SessionReportTimelineItemSceneEvent | SessionReportTimelineItemSceneChange // highlight items export interface SessionReportTimelineItemHighlightGeneric extends SessionReportTimelineItemBase { eventType: 'highlight' subType: 'monologue' | 'question' } // TODO: define body export interface SessionReportTimelineItemHighlightKeyword extends SessionReportTimelineItemBase { eventType: 'highlight' subType: 'keyword' body: any } // TODO: define body export interface SessionReportTimelineItemHighlightFollowUp extends SessionReportTimelineItemBase { eventType: 'highlight' subType: 'follow_up' body: any } // TODO: define body export interface SessionReportTimelineItemHighlightBookmark extends SessionReportTimelineItemBase { eventType: 'highlight' subType: 'bookmark' body: any } export type SessionReportTimelineItemHighlight = SessionReportTimelineItemSessionEvent | SessionReportTimelineItemHighlightGeneric | SessionReportTimelineItemHighlightKeyword | SessionReportTimelineItemHighlightFollowUp | SessionReportTimelineItemHighlightBookmark // reactions export interface SessionReportTimelineReaction { startIndex: number endIndex: number id: ResourceId userId: ResourceId startTime: number endTime: number duration: number intensity: null name: string speaking: boolean description: string signal: string sentiment: number color: string } export type SessionReportTimelineItem = SessionReportTimelineItemText | SessionReportTimelineItemScene | SessionReportTimelineItemHighlight