dataProvider_model_typedef.ts

/**
 * Represents a time interval metadata used to mark the beginning and ending
 * of opening or closing credits.
 */
export type TimeInterval = {
  /**
   * The type of the time interval.
   */
  type: 'OPENING_CREDITS' | 'CLOSING_CREDITS';
  /**
   * An integer representing the mark in time.
   */
  markIn: number;
  /**
   * An integer representing the mark out time.
   */
  markOut: number;
};
/**
 * Represents a media segment with detailed metadata.
 */
export type Segment = {
  /**
   * Unique identifier for the segment.
   */
  id: string;
  /**
   * Type of media.
   */
  mediaType: AudioType;
  /**
   * Vendor of the segment.
   */
  vendor: VendorType;
  /**
   * URN (Uniform Resource Name) specifying the segment details.
   */
  urn: string;
  /**
   * Title of the segment. Limited to 2000 characters.
   */
  title: string;
  /**
   * Lead information for the segment.
   */
  lead: string;
  /**
   * Description of the segment.
   */
  description: string;
  /**
   * Media description for the segment.
   */
  mediaDescription: string;
  /**
   * URL of the image associated with the segment.
   */
  imageUrl: string;
  /**
   * Title of the image associated with the segment. Limited to 2000 characters.
   */
  imageTitle: string;
  /**
   * Copyright information for the image.
   */
  imageCopyright: string;
  /**
   * Reason for blocking.
   */
  blockReason: BlockReason;
  /**
   * Youth protection color. Allowed values: 'YELLOW', 'RED'.
   */
  youthProtectionColor: 'YELLOW' | 'RED';
  /**
   * Type of the segment. Allowed values: 'EPISODE', 'EXTRACT', 'TRAILER', 'CLIP', 'LIVESTREAM', 'SCHEDULED_LIVESTREAM'.
   */
  type: 'EPISODE' | 'EXTRACT' | 'TRAILER' | 'CLIP' | 'LIVESTREAM' | 'SCHEDULED_LIVESTREAM';
  /**
   * Date and time information in ISO8601 format.
   */
  date: string;
  /**
   * Duration of the segment in seconds.
   */
  duration: number;
  /**
   * URL for the standard definition podcast.
   */
  podcastSdUrl: string;
  /**
   * URL for the high definition podcast.
   */
  podcastHdUrl: string;
  /**
   * Start date and time for the validity period in ISO8601 format.
   */
  validFrom: string;
  /**
   * End date and time for the validity period in ISO8601 format.
   */
  validTo: string;
  /**
   * Entity responsible for the assignment. Allowed values: 'EDITOR', 'TRENDING', 'RECOMMENDATION'.
   */
  assignedBy: 'EDITOR' | 'TRENDING' | 'RECOMMENDATION';
  /**
   * Indicates if the segment is playable abroad.
   */
  playableAbroad: boolean;
  /**
   * List of related content items.
   */
  relatedContentList: Array<RelatedContent>;
  /**
   * List of social count entries.
   */
  socialCountList: Array<SocialCountEntry>;
  /**
   * Indicates if the segment is displayable.
   */
  displayable: boolean;
  /**
   * Full-length URN specifying the segment details.
   */
  fullLengthUrn: string;
  /**
   * Position of the segment.
   */
  position: number;
  /**
   * Indicates if the segment should not be embedded.
   */
  noEmbed: boolean;
  /**
   * List of subtitle entries.
   */
  subtitleList: Array<Subtitle>;
  /**
   * Analytics data for the segment.
   */
  analyticsData: {
    [x: string]: string;
  };
  /**
   * Metadata for analytics purposes.
   */
  analyticsMetadata: {
    [x: string]: string;
  };
  /**
   * Event data associated with the segment.
   */
  eventData: string;
  /**
   * List of player properties.
   */
  playerProperties: Array<PlayerProperty>;
  /**
   * List of tags associated with the segment.
   */
  tagList: Array<string>;
  /**
   * Label for the segment.
   */
  label: string;
  /**
   * Integer representing the mark in time.
   */
  markIn: number;
  /**
   * Integer representing the mark out time.
   */
  markOut: number;
};
/**
 * Represents a chapter of media content.
 */
export type Chapter = {
  /**
   * Unique identifier for the chapter.
   */
  id: string;
  /**
   * Type of media content (AUDIO or VIDEO).
   */
  mediaType: AudioType;
  /**
   * Vendor associated with the chapter.
   */
  vendor: VendorType;
  /**
   * URN (Uniform Resource Name) for the chapter.
   */
  urn: string;
  /**
   * Title of the chapter.
   */
  title: string;
  /**
   * Lead information for the chapter.
   */
  lead: string;
  /**
   * Description of the chapter.
   */
  description: string;
  /**
   * Media description of the chapter.
   */
  mediaDescription: string;
  /**
   * URL of the image associated with the chapter.
   */
  imageUrl: string;
  /**
   * Title of the image associated with the chapter.
   */
  imageTitle: string;
  /**
   * Copyright information for the image.
   */
  imageCopyright: string;
  /**
   * Reason for blocking the chapter.
   */
  blockReason: BlockReason;
  /**
   * Youth protection color code.
   */
  youthProtectionColor: 'YELLOW' | 'RED';
  /**
   * Type of the chapter.
   */
  type: 'EPISODE' | 'EXTRACT' | 'TRAILER' | 'CLIP' | 'LIVESTREAM' | 'SCHEDULED_LIVESTREAM';
  /**
   * Date and time information for the chapter.
   */
  date: string;
  /**
   * Duration of the chapter in seconds.
   */
  duration: number;
  /**
   * URL for the standard-definition podcast.
   */
  podcastSdUrl: string;
  /**
   * URL for the high-definition podcast.
   */
  podcastHdUrl: string;
  /**
   * Validity start date and time for the chapter.
   */
  validFrom: string;
  /**
   * Validity end date and time for the chapter.
   */
  validTo: string;
  /**
   * User who assigned the chapter.
   */
  assignedBy: 'EDITOR' | 'TRENDING' | 'RECOMMENDATION';
  /**
   * Indicates if the chapter is playable abroad.
   */
  playableAbroad: boolean;
  /**
   * List of related content for the chapter.
   */
  relatedContentList: Array<RelatedContent>;
  /**
   * List of social media counts for the chapter.
   */
  socialCountList: Array<SocialCountEntry>;
  /**
   * Indicates if the chapter is displayable.
   */
  displayable: boolean;
  /**
   * URN for the full-length version of the chapter.
   */
  fullLengthUrn: string;
  /**
   * Position of the chapter.
   */
  position: number;
  /**
   * Indicates if the chapter can be embedded.
   */
  noEmbed: boolean;
  /**
   * List of subtitles for the chapter.
   */
  subtitleList: Array<Subtitle>;
  /**
   * Analytics data for the chapter.
   */
  analyticsData: {
    [x: string]: string;
  };
  /**
   * Metadata for analytics associated with the chapter.
   */
  analyticsMetadata: {
    [x: string]: string;
  };
  /**
   * Event data associated with the chapter.
   */
  eventData: string;
  /**
   * List of player properties for the chapter.
   */
  playerProperties: Array<PlayerProperty>;
  /**
   * List of tags associated with the chapter.
   */
  tagList: Array<string>;
  /**
   * Label information for the chapter.
   */
  label: string;
  /**
   * Mark in time for the full-length version of the chapter.
   */
  fullLengthMarkIn: number;
  /**
   * Mark out time for the full-length version of the chapter.
   */
  fullLengthMarkOut: number;
  /**
   * List of resources associated with the chapter.
   */
  resourceList: Array<Resource>;
  /**
   * List of segments associated with the chapter.
   */
  segmentList: Array<Segment>;
  /**
   * Start time for the pre-trailer content.
   */
  preTrailerStart: string;
  /**
   * Stop time for the post-trailer content.
   */
  postTrailerStop: string;
  /**
   * CESIM (Content, Episode, Segment, Image, Module) identifier for the chapter.
   */
  cesimId: string;
  /**
   * List of HbbtvProperties for the chapter.
   */
  hbbtvProperties: Array<HbbtvProperties>;
  /**
   * Name of the creator of the chapter.
   */
  creatorName: string;
  /**
   * User associated with the creator of the chapter.
   */
  creatorUser: string;
  /**
   * Aspect ratio of the chapter.
   */
  aspectRatio: '1:1' | '4:5' | '4:3' | '9:16' | '16:9';
  /**
   * DVR reference date and time for the chapter.
   */
  dvrReferenceDate: string;
  /**
   * List of time intervals associated with the chapter.
   */
  timeIntervalList: Array<TimeInterval>;
  /**
   * Sprite sheet information for the chapter.
   */
  spriteSheet: SpriteSheet;
};
/**
 * Represents a resource associated with a media segment.
 */
export type Resource = {
  /**
   * URL of the resource.
   */
  url: string;
  /**
   * List of Digital Rights Management (DRM) information for the resource.
   */
  drmList: Array<DrmMetadata>;
  /**
   * Quality of the resource.
   */
  quality: QualityType;
  /**
   * Protocol used for streaming the resource.
   */
  protocol: 'HLS' | 'HLS-DVR' | 'HDS' | 'HDS-DVR' | 'RTMP' | 'HTTP' | 'HTTPS' | 'HTTP-M3U' | 'HTTP-MP3-STREAM' | 'DASH' | 'DASH-DVR';
  /**
   * Encoding used for the resource.
   */
  encoding: 'H264' | 'VP6F' | 'MPEG2' | 'WMV3' | 'AAC' | 'AAC-HE' | 'MP3' | 'MP2' | 'WMAV2';
  /**
   * MIME type of the resource.
   */
  mimeType: string;
  /**
   * Presentation mode of the resource.
   */
  presentation: PresentationType;
  /**
   * Streaming type of the resource.
   */
  streaming: StreamingType;
  /**
   * Indicates if the resource supports Digital Video Recorder (DVR).
   */
  dvr: boolean;
  /**
   * Indicates if the resource is a live stream.
   */
  live: boolean;
  /**
   * Media container type of the resource.
   */
  mediaContainer: 'MP4' | 'MKV' | 'MPEG2_TS' | 'FMP4' | 'NONE' | 'UNKNOWN';
  /**
   * Audio codec used for the resource.
   */
  audioCodec: 'AAC' | 'AAC-HE' | 'MP3' | 'MP2' | 'WMAV2' | 'UNKNOWN';
  /**
   * Video codec used for the resource.
   */
  videoCodec: 'H264' | 'VP6F' | 'MPEG2' | 'WMV3' | 'NONE' | 'UNKNOWN';
  /**
   * Token type used for the resource.
   */
  tokenType: TokenType;
  /**
   * List of audio tracks associated with the resource.
   */
  audioTrackList: Array<AudioTrack>;
  /**
   * List of subtitle information associated with the resource.
   */
  subtitleInformationList: Array<SubtitleInformation>;
  /**
   * Analytics data for the resource.
   */
  analyticsData: {
    [x: string]: string;
  };
  /**
   * Metadata for analytics purposes.
   */
  analyticsMetadata: {
    [x: string]: string;
  };
  /**
   * Stream offset for the resource.
   */
  streamOffset: number;
};
/**
 * Represents related content associated with a media segment.
 */
export type RelatedContent = {
  /**
   * Unique identifier for the related content.
   */
  id: string;
  /**
   * Title of the related content. Limited to 2000 characters.
   */
  title: string;
  /**
   * Lead information for the related content.
   */
  lead: string;
  /**
   * Description of the related content.
   */
  description: string;
  /**
   * URL of the related content.
   */
  url: string;
  /**
   * Type of content.
   */
  contentType: string;
  /**
   * Indicates if the related content is external.
   */
  isExternal: boolean;
};
/**
 * Represents subtitle information for a media segment.
 */
export type Subtitle = {
  /**
   * Locale information for the subtitle.
   */
  locale: string;
  /**
   * Language of the subtitle.
   */
  language: string;
  /**
   * Source of the subtitle.
   */
  source: 'EXTERNAL' | TrackSourceType;
  /**
   * Type of the subtitle.
   */
  type: 'SDH';
  /**
   * URL of the subtitle.
   */
  url: string;
  /**
   * Format of the subtitle.
   */
  format: 'TTML' | 'VTT';
};
/**
 * Represents a social media count entry associated with a media segment.
 */
export type SocialCountEntry = {
  /**
   * Key identifying the type of social media count.
   */
  key: 'srgView' | 'srgLike' | 'fbShare' | 'googleShare' | 'twitterShare' | 'whatsAppShare';
  /**
   * Count value for the social media entry.
   */
  value: number;
};
/**
 * Represents a player property associated with a media segment.
 */
export type PlayerProperty = {
  /**
   * Key identifying the type of player property.
   */
  key: 'iFrameUrl' | 'playerUrl' | 'playerRelativeIconImageUrl' | 'playerWidth' | 'playerHeight';
  /**
   * Value of the player property.
   */
  value: string;
};
/**
 * Represents Digital Rights Management (DRM) information associated with a media resource.
 */
export type DrmMetadata = {
  /**
   * Type of DRM used for the resource.
   */
  type: 'FAIRPLAY' | 'WIDEVINE' | 'PLAYREADY';
  /**
   * URL for the DRM license.
   */
  licenseUrl: string;
  /**
   * URL for the DRM certificate.
   */
  certificateUrl: string;
};
/**
 * Represents audio track information associated with a media resource.
 */
export type AudioTrack = {
  /**
   * Locale information for the audio track.
   */
  locale: string;
  /**
   * Language of the audio track.
   */
  language: string;
  /**
   * Source of the audio track.
   */
  source: TrackSourceType;
  /**
   * Type of the audio track.
   */
  type: 'AUDIO_DESCRIPTION';
};
/**
 * Represents subtitle information associated with a media resource.
 */
export type SubtitleInformation = {
  /**
   * Locale information for the subtitle.
   */
  locale: string;
  /**
   * Language of the subtitle.
   */
  language: string;
  /**
   * Source of the subtitle information.
   */
  source: 'EXTERNAL' | TrackSourceType;
  /**
   * Type of the subtitle information.
   */
  type: 'SDH';
};
/**
 * Represents HbbTV properties associated with a chapter.
 */
export type HbbtvProperties = {
  /**
   * Indicates the availability of the red button feature.
   */
  redButton: boolean;
  /**
   * URL link associated with the image for HbbTV.
   */
  imageLink: string;
};
/**
 * Represents a sprite sheet associated with a chapter.
 */
export type SpriteSheet = {
  /**
   * URN (Uniform Resource Name) for the sprite sheet.
   */
  urn: string;
  /**
   * Number of rows in the sprite sheet.
   */
  rows: number;
  /**
   * Number of columns in the sprite sheet.
   */
  columns: number;
  /**
   * Height of each thumbnail in the sprite sheet.
   */
  thumbnailHeight: number;
  /**
   * Width of each thumbnail in the sprite sheet.
   */
  thumbnailWidth: number;
  /**
   * Interval between frames in milliseconds.
   */
  interval: number;
  /**
   * URL link to the sprite sheet.
   */
  url: string;
};
/**
 * Represents an episode of media content.
 */
export type Episode = {
  /**
   * Unique identifier for the episode.
   */
  id: string;
  /**
   * Title of the episode.
   */
  title: string;
  /**
   * Lead description of the episode.
   */
  lead: string;
  /**
   * Detailed description of the episode.
   */
  description: string;
  /**
   * Date and time when the episode was published.
   */
  publishedDate: string;
  /**
   * URL of the image associated with the episode.
   */
  imageUrl: string;
  /**
   * Title of the image associated with the episode.
   */
  imageTitle: string;
  /**
   * Copyright information for the episode image.
   */
  imageCopyright: string;
  /**
   * URN (Uniform Resource Name) for the full-length version of the episode.
   */
  fullLengthUrn: string;
  /**
   * Season number to which the episode belongs.
   */
  seasonNumber: number;
  /**
   * Episode number.
   */
  number: number;
  /**
   * Social count entry for the episode.
   */
  socialCount: SocialCountEntry;
};
/**
 * Represents a show.
 */
export type Show = {
  /**
   * Unique identifier for the show.
   */
  id: string;
  /**
   * Vendor of the show.
   */
  vendor: VendorType;
  /**
   * Type of transmission for the show.
   */
  transmission: TransmissionType;
  /**
   * URN (Uniform Resource Name) for the show.
   */
  urn: string;
  /**
   * Title of the show.
   */
  title: string;
  /**
   * Lead description of the show.
   */
  lead: string;
  /**
   * Detailed description of the show.
   */
  description: string;
  /**
   * URL of the image associated with the show.
   */
  imageUrl: string;
  /**
   * Title of the image associated with the show.
   */
  imageTitle: string;
  /**
   * Copyright information for the show image.
   */
  imageCopyright: string;
  /**
   * URL of the banner image for the show.
   */
  bannerImageUrl: string;
  /**
   * URL of the poster image for the show.
   */
  posterImageUrl: string;
  /**
   * Indicates if the poster image is a fallback URL.
   */
  posterImageIsFallbackUrl: boolean;
  /**
   * URL of the podcast image for the show.
   */
  podcastImageUrl: string;
  /**
   * Indicates if the podcast image is a fallback URL.
   */
  podcastImageIsFallbackUrl: boolean;
  /**
   * URL of the show's homepage.
   */
  homepageUrl: string;
  /**
   * URL for podcast subscription.
   */
  podcastSubscriptionUrl: string;
  /**
   * URL for podcast feed (SD).
   */
  podcastFeedSdUrl: string;
  /**
   * URL for podcast feed (HD).
   */
  podcastFeedHdUrl: string;
  /**
   * URL for podcast on Deezer.
   */
  podcastDeezerUrl: string;
  /**
   * URL for podcast on Spotify.
   */
  podcastSpotifyUrl: string;
  /**
   * URL for the show's timetable.
   */
  timeTableUrl: string;
  /**
   * List of links associated with the show.
   */
  links: Array<Link>;
  /**
   * ID of the primary channel for the show.
   */
  primaryChannelId: string;
  /**
   * Number of times the show has been viewed.
   */
  viewedMedias: number;
  /**
   * Number of episodes available for the show.
   */
  numberOfEpisodes: number;
  /**
   * List of available audio languages for the show.
   */
  availableAudioLanguageList: Array<Language>;
  /**
   * List of available subtitle languages for the show.
   */
  availableSubtitleLanguageList: Array<Language>;
  /**
   * List of available video quality options for the show.
   */
  availableVideoQualityList: Array<QualityType>;
  /**
   * Indicates if audio description is available for the show.
   */
  audioDescriptionAvailable: boolean;
  /**
   * Indicates if subtitles are available for the show.
   */
  subtitlesAvailable: boolean;
  /**
   * Indicates if multiple audio languages are available for the show.
   */
  multiAudioLanguagesAvailable: boolean;
  /**
   * List of topics associated with the show.
   */
  topicList: Array<Topic>;
  /**
   * Information about the show's broadcast.
   */
  broadcastInformation: BroadcastInformation;
  /**
   * Indicates if the show is allowed to be indexed.
   */
  allowIndexing: boolean;
  /**
   * Information about the next scheduled broadcast for the show.
   */
  nextScheduledBroadcast: ScheduledBroadcast;
  /**
   * List of programs for the next scheduled broadcasts.
   */
  nextScheduledBroadcastList: Array<Program>;
  /**
   * URN of the primary channel for the show.
   */
  primaryChannelUrn: string;
};
/**
 * Represents a channel.
 */
export type Channel = {
  /**
   * Unique identifier for the channel.
   */
  id: string;
  /**
   * Vendor of the channel.
   */
  vendor: VendorType;
  /**
   * Title of the channel.
   */
  title: string;
  /**
   * Lead description of the channel.
   */
  lead: string;
  /**
   * Detailed description of the channel.
   */
  description: string;
  /**
   * URL of the image associated with the channel.
   */
  imageUrl: string;
  /**
   * Raw URL of the image associated with the channel.
   */
  imageUrlRaw: string;
  /**
   * Title of the image associated with the channel.
   */
  imageTitle: string;
  /**
   * Copyright information for the channel image.
   */
  imageCopyright: string;
  /**
   * Type of transmission for the channel.
   */
  transmission: TransmissionType;
  /**
   * URL for the channel's timetable.
   */
  timeTableUrl: string;
  /**
   * Information about the presenter associated with the channel.
   */
  presenter: Presenter;
  /**
   * Information about the currently airing program on the channel.
   */
  now: Program;
  /**
   * Information about the next scheduled program on the channel.
   */
  next: Program;
  /**
   * URN (Uniform Resource Name) for the channel.
   */
  urn: string;
};
/**
 * Represents a topic.
 */
export type Topic = {
  /**
   * Unique identifier for the topic.
   */
  id: string;
  /**
   * Vendor of the topic.
   */
  vendor: VendorType;
  /**
   * Type of transmission for the topic.
   */
  transmission: TransmissionType;
  /**
   * URN (Uniform Resource Name) for the topic.
   */
  urn: string;
  /**
   * Title of the topic.
   */
  title: string;
  /**
   * Lead description of the topic.
   */
  lead: string;
  /**
   * Detailed description of the topic.
   */
  description: string;
  /**
   * Number of viewed medias related to the topic.
   */
  viewedMedias: number;
  /**
   * URL of the image associated with the topic.
   */
  imageUrl: string;
  /**
   * Title of the image associated with the topic.
   */
  imageTitle: string;
  /**
   * Copyright information for the topic image.
   */
  imageCopyright: string;
  /**
   * List of subtopics associated with the main topic.
   */
  subTopicList: Array<SubTopic>;
};
/**
 * Represents a link.
 */
export type Link = {
  /**
   * The title of the link.
   */
  title: string;
  /**
   * The URL link.
   */
  link: string;
};
/**
 * Represents a language.
 */
export type Language = {
  /**
   * The locale of the language.
   */
  locale: string;
  /**
   * The language code.
   */
  language: string;
};
/**
 * Represents a subtopic.
 */
export type SubTopic = {
  /**
   * The unique identifier for the subtopic.
   */
  id: string;
  /**
   * The vendor of the subtopic.
   */
  vendor: VendorType;
  /**
   * The transmission type of the subtopic.
   */
  transmission: TransmissionType;
  /**
   * The URN of the subtopic.
   */
  urn: string;
  /**
   * The title of the subtopic.
   */
  title: string;
  /**
   * The lead information for the subtopic.
   */
  lead: string;
  /**
   * The description of the subtopic.
   */
  description: string;
  /**
   * The number of viewed medias for the subtopic.
   */
  viewedMedias: number;
  /**
   * The URL of the image associated with the subtopic.
   */
  imageUrl: string;
  /**
   * The title of the image associated with the subtopic.
   */
  imageTitle: string;
  /**
   * The copyright information of the image associated with the subtopic.
   */
  imageCopyright: string;
};
/**
 * Represents a presenter.
 */
export type Presenter = {
  /**
   * The name of the presenter.
   */
  name: string;
  /**
   * The URL associated with the presenter.
   */
  url: string;
  /**
   * The URL of the image associated with the presenter.
   */
  imageUrl: string;
  /**
   * The title of the image associated with the presenter.
   */
  imageTitle: string;
  /**
   * The copyright information of the image associated with the presenter.
   */
  imageCopyright: string;
};
/**
 * Represents broadcast information.
 */
export type BroadcastInformation = {
  /**
   * The hint text associated with the broadcast.
   */
  hintText: string;
  /**
   * The URL associated with the broadcast.
   */
  url: string;
  /**
   * The start date and time of the broadcast in ISO 8601 format.
   */
  startDate: string;
  /**
   * The end date and time of the broadcast in ISO 8601 format.
   */
  endDate: string;
};
/**
 * Represents a scheduled broadcast.
 */
export type ScheduledBroadcast = {
  /**
   * The title of the scheduled broadcast.
   */
  title: string;
  /**
   * The start time of the scheduled broadcast in ISO 8601 format.
   */
  startTime: string;
  /**
   * The end time of the scheduled broadcast in ISO 8601 format.
   */
  endTime: string;
  /**
   * The title of the channel associated with the scheduled broadcast.
   */
  channelTitle: string;
  /**
   * The URN (Uniform Resource Name) associated with the channel.
   */
  channelUrn: string;
};
/**
 * Represents a program.
 */
export type Program = {
  /**
   * The title of the program.
   */
  title: string;
  /**
   * The start time of the program in ISO 8601 format.
   */
  startTime: string;
  /**
   * The end time of the program in ISO 8601 format.
   */
  endTime: string;
  /**
   * The lead information of the program.
   */
  lead: string;
  /**
   * The description of the program.
   */
  description: string;
  /**
   * The URL of the image associated with the program.
   */
  imageUrl: string;
  /**
   * Indicates whether the image is a fallback URL.
   */
  imageIsFallbackUrl: boolean;
  /**
   * The title of the image associated with the program.
   */
  imageTitle: string;
  /**
   * The copyright information of the image associated with the program.
   */
  imageCopyright: string;
  /**
   * The URL associated with the program.
   */
  url: string;
  /**
   * The show associated with the program.
   */
  show: Show;
  /**
   * The title of the program.
   */
  programTitle: string;
  /**
   * The URL associated with the program.
   */
  programUrl: string;
  /**
   * The title of the episode.
   */
  episodeTitle: string;
  /**
   * The URL associated with the episode.
   */
  episodeUrl: string;
  /**
   * The title of the image associated with the episode.
   */
  episodeImageTitle: string;
  /**
   * The URL of the image associated with the episode.
   */
  episodeImageUrl: string;
  /**
   * The URN (Uniform Resource Name) associated with the media.
   */
  mediaUrn: string;
  /**
   * The genre of the program.
   */
  genre: string;
  /**
   * The season number of the program.
   */
  seasonNumber: number;
  /**
   * The episode number of the program.
   */
  episodeNumber: number;
  /**
   * The total number of episodes.
   */
  episodesTotal: number;
  /**
   * The production year of the program.
   */
  productionYear: number;
  /**
   * The production country of the program.
   */
  productionCountry: string;
  /**
   * The color code for youth protection.
   */
  youthProtectionColor: string;
  /**
   * The subtitle information of the program.
   */
  subtitle: string;
  /**
   * The title of the block associated with the program.
   */
  blockTitle: string;
  /**
   * The original title of the program.
   */
  originalTitle: string;
  /**
   * The list of credits associated with the program.
   */
  creditList: Array<Credit>;
  /**
   * The list of sub-programs associated with the program.
   */
  subProgramList: Array<Program>;
  /**
   * Indicates whether subtitles are available.
   */
  subtitlesAvailable: boolean;
  /**
   * Indicates whether the program is live.
   */
  isLive: boolean;
  /**
   * Indicates whether the program has two languages.
   */
  hasTwoLanguages: boolean;
  /**
   * Indicates whether the program has sign language.
   */
  hasSignLanguage: boolean;
  /**
   * Indicates whether the program has visual description.
   */
  hasVisualDescription: boolean;
  /**
   * Indicates whether the program is a follow-up.
   */
  isFollowUp: boolean;
  /**
   * Indicates whether the program is in Dolby Digital.
   */
  isDolbyDigital: boolean;
  /**
   * Indicates whether the program is a repetition.
   */
  isRepetition: boolean;
  /**
   * The description of the repetition.
   */
  repetitionDescription: string;
  /**
   * The broadcast information associated with the program.
   */
  broadcastInfo: string;
  /**
   * The title of the channel associated with the program.
   */
  channelTitle: string;
  /**
   * The URN (Uniform Resource Name) associated with the channel.
   */
  channelUrn: string;
  /**
   * The list of headlines associated with the program.
   */
  headlineList: Array<Headline>;
};
/**
 * Represents credit information.
 */
export type Credit = {
  /**
   * The real name associated with the credit.
   */
  realName: string;
  /**
   * The role of the individual associated with the credit.
   */
  role: string;
  /**
   * The name associated with the credit.
   */
  name: string;
};
/**
 * Represents headline information.
 */
export type Headline = {
  /**
   * The title of the headline.
   */
  title: string;
  /**
   * The description of the headline.
   */
  description: string;
};
/**
 * Broadcasting organizations
 */
export type VendorType = 'SRF' | 'RTR' | 'RTS' | 'RSI' | 'SWI' | 'SSATR';
/**
 * Audio-only or includes video
 */
export type AudioType = 'AUDIO' | 'VIDEO';
/**
 * Reasons for content blocking
 */
export type BlockReason =
  'GEOBLOCK'
  | 'LEGAL'
  | 'COMMERCIAL'
  | 'AGERATING18'
  | 'AGERATING12'
  | 'STARTDATE'
  | 'ENDDATE'
  | 'UNKNOWN';
/**
 * Medium of transmission
 */
export type TransmissionType = 'TV' | 'RADIO' | 'ONLINE';
/**
 * Content quality
 */
export type QualityType = 'SD' | 'HD' | 'HQ';
/**
 * Source type for audio/video tracks
 */
export type TrackSourceType = 'HLS' | 'HDS' | 'DASH';
/**
 * Presentation format
 */
export type PresentationType = 'DEFAULT' | 'VIDEO_360';
/**
 * Enumerates various streaming methods
 */
export type StreamingType = 'PROGRESSIVE' | 'M3UPLAYLIST' | 'HLS' | 'HDS' | 'RTMP' | 'DASH' | 'UNKNOWN';
/**
 * Represents different token types for authentication
 */
export type TokenType = 'AKAMAI' | 'NONE';


/**
 * Represents the transformed format of a resource.
 */
export interface MainResource {
  /**
   * Merged analytics data.
   */
  analyticsData: {
    [x: string]: string;
  };
  /**
   * Merged analytics metadata.
   */
  analyticsMetadata: {
    [x: string]: string;
  };
  /**
   * Block reason from the main chapter.
   */
  blockReason: BlockReason;
  /**
   * Blocked segments from the main chapter.
   */
  blockedSegments: Array<Segment>;
  /**
   * Chapters from the main chapter.
   */
  chapters: Array<Chapter>;
  /**
   * Vendor from the main chapter.
   */
  vendor: VendorType;
  /**
   * List of DRM information from the resource.
   */
  drmList: Array<DrmMetadata>;
  /**
   * DVR information from the resource.
   */
  dvr: boolean;
  /**
   * Event data from the main chapter.
   */
  eventData: string;
  /**
   * ID from the main chapter.
   */
  id: string;
  /**
   * The url of the copyright image copyright from the main chapter.
   */
  imageCopyright: string;
  /**
   * The url of the image from the main chapter.
   */
  imageUrl: string;
  /**
   * Live status from the resource.
   */
  live: boolean;
  /**
   * Media type from the main chapter.
   */
  mediaType: AudioType;
  /**
   * MIME type from the resource.
   */
  mimeType: string;
  /**
   * Presentation information from the resource.
   */
  presentation: PresentationType;
  /**
   * Quality information from the resource.
   */
  quality: QualityType;
  /**
   * Streaming information from the resource.
   */
  streaming: StreamingType;
  /**
   * Stream offset from the resource.
   */
  streamOffset: number;
  /**
   * Filtered external subtitles.
   */
  subtitles: Array<Subtitle>;
  /**
   * The title of this resource.
   */
  title: string;
  /**
   * Time intervals from the main chapter.
   */
  intervals: Array<TimeInterval>;
  /**
   * Token type from the resource.
   */
  tokenType: TokenType;
  /**
   * URL from the resource.
   */
  url: string;
  /**
   * Chapter URN.
   */
  urn: string;
}