import { BlazeMomentsPlayerStyle } from "./moments-player-style";
import { BlazeStoryPlayerStyle } from "./stories-player-style";
import { BlazeVideosPlaybackConfiguration } from "./videos-playback-configuration";
import { BlazeVideosPlayerStyle } from "./videos-player-style";
import { BlazeDataSourceType } from "./widgets-props.interface";

export interface PlayStoryOptions {
  storyId: string;
  pageId?: string;
  playerStyle?: BlazeStoryPlayerStyle;
  triggerSource?: BlazeEntryPointTriggerSource;
}

export interface PrepareStoriesOptions {
  dataSource: BlazeDataSourceType;
  entryContentId?: string;
}

export interface PlayStoriesOptions {
  dataSource: BlazeDataSourceType;
  playerStyle?: BlazeStoryPlayerStyle;
  shouldOrderContentByReadStatus?: boolean;
  triggerSource?: BlazeEntryPointTriggerSource;
  entryContentId?: string;
}

export interface PlayMomentOptions {
  momentId: string;
  playerStyle?: BlazeMomentsPlayerStyle;
  triggerSource?: BlazeEntryPointTriggerSource;
}

export interface PrepareMomentsOptions {
  dataSource: BlazeDataSourceType;
  entryContentId?: string;
}

export interface PlayMomentsOptions {
  dataSource: BlazeDataSourceType;
  playerStyle?: BlazeMomentsPlayerStyle;
  shouldOrderContentByReadStatus?: boolean;
  triggerSource?: BlazeEntryPointTriggerSource;
  entryContentId?: string;
}

export interface AppendMomentsToPlayerOptions {
  sourceId: string;
  dataSource: BlazeDataSourceType;
  shouldOrderContentByReadStatus?: boolean;
}

export interface PlayVideoOptions {
  videoId: string;
  playerStyle?: BlazeVideosPlayerStyle;
  triggerSource?: BlazeEntryPointTriggerSource;
  playbackConfiguration?: BlazeVideosPlaybackConfiguration;
}

export interface PrepareVideosOptions {
  dataSource: BlazeDataSourceType;
  entryContentId?: string;
}

export interface PlayVideosOptions {
  dataSource: BlazeDataSourceType;
  playerStyle?: BlazeVideosPlayerStyle;
  shouldOrderContentByReadStatus?: boolean;
  triggerSource?: BlazeEntryPointTriggerSource;
  entryContentId?: string;
  playbackConfiguration?: BlazeVideosPlaybackConfiguration;
}

type BlazeEntryPointTriggerSource =
  'notification'
  | 'deepLink'
  | 'entryPoint';