import { CreationDateTime } from './CreationDateTime'
import { PrerollSettings } from './PrerollSettings'
import { HlsSettings } from './HlsSettings'
import { PrefetchSettings } from './PrefetchSettings'
import { LiveStreamConditioning } from './LiveStreamConditioning'

export enum Status {
  ACTIVE = 'ACTIVE',
  ARCHIVED = 'ARCHIVED',
  PAUSED = 'PAUSED',
  ADS_PAUSED = 'ADS_PAUSED',
  UNKNOWN = 'UNKNOWN',
}

export enum StartDateTimeType {
  USE_START_DATE_TIME = 'USE_START_DATE_TIME',
  IMMEDIATELY = 'IMMEDIATELY',
  ONE_HOUR_FROM_NOW = 'ONE_HOUR_FROM_NOW',
  UNKNOWN = 'UNKNOWN',
}

export enum AdBreakFillType {
  SLATE = 'SLATE',
  UNDERLYING_CONTENT = 'UNDERLYING_CONTENT',
  MINIMIZE_SLATE = 'MINIMIZE_SLATE',
  UNKNOWN = 'UNKNOWN',
}

export enum UnderfillAdBreakFillType {
  SLATE = 'SLATE',
  UNDERLYING_CONTENT = 'UNDERLYING_CONTENT',
  MINIMIZE_SLATE = 'MINIMIZE_SLATE',
  UNKNOWN = 'UNKNOWN',
}

export enum DynamicAdInsertionType {
  LINEAR = 'LINEAR',
  POD_SERVING_REDIRECT = 'POD_SERVING_REDIRECT',
  POD_SERVING_MANIFEST = 'POD_SERVING_MANIFEST',
  UNKNOWN = 'UNKNOWN',
}

export enum StreamingFormat {
  HLS = 'HLS',
  DASH = 'DASH',
  UNKNOWN = 'UNKNOWN',
}

export enum AdBreakMarkups {
  AD_BREAK_MARKUP_HLS_EXT_CUE = 'AD_BREAK_MARKUP_HLS_EXT_CUE',
  AD_BREAK_MARKUP_HLS_PRIMETIME_SPLICE = 'AD_BREAK_MARKUP_HLS_PRIMETIME_SPLICE',
  AD_BREAK_MARKUP_HLS_DATERANGE_SPLICE = 'AD_BREAK_MARKUP_HLS_DATERANGE_SPLICE',
  AD_BREAK_MARKUP_SCTE35_XML_SPLICE_INSERT = 'AD_BREAK_MARKUP_SCTE35_XML_SPLICE_INSERT',
  AD_BREAK_MARKUP_SCTE35_BINARY_SPLICE_INSERT = 'AD_BREAK_MARKUP_SCTE35_BINARY_SPLICE_INSERT',
  AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_AD_START_END = 'AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_AD_START_END',
  AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_PLACEMENT_OP_START_END = 'AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_PLACEMENT_OP_START_END',
  AD_BREAK_MARKUP_SCTE35_BINARY_BREAK_START_END = 'AD_BREAK_MARKUP_SCTE35_BINARY_BREAK_START_END',
  UNKNOWN = 'UNKNOWN',
}

export enum AdServingFormat {
  AD_MANAGER_DAI = 'AD_MANAGER_DAI',
  DIRECT = 'DIRECT',
  UNKNOWN = 'UNKNOWN',
}

/**
 * liveStreamEvents
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202408`
 */
export interface LiveStreamEvents {
  /** xsd:long */
  id?: number
  /** xsd:string */
  name?: string
  /** LiveStreamEventStatus|xsd:string|ACTIVE,ARCHIVED,PAUSED,ADS_PAUSED,UNKNOWN */
  status?: Status | keyof typeof Status
  /** creationDateTime */
  creationDateTime?: CreationDateTime
  /** lastModifiedDateTime */
  lastModifiedDateTime?: CreationDateTime
  /** startDateTime */
  startDateTime?: CreationDateTime
  /** StartDateTimeType|xsd:string|USE_START_DATE_TIME,IMMEDIATELY,ONE_HOUR_FROM_NOW,UNKNOWN */
  startDateTimeType?: StartDateTimeType | keyof typeof StartDateTimeType
  /** endDateTime */
  endDateTime?: CreationDateTime
  /** xsd:boolean */
  unlimitedEndDateTime?: boolean
  /** xsd:long */
  totalEstimatedConcurrentUsers?: number
  /** xsd:string */
  contentUrls?: Array<string>
  /** xsd:string */
  adTags?: Array<string>
  /** xsd:string */
  assetKey?: string
  /** xsd:long */
  slateCreativeId?: number
  /** xsd:int */
  dvrWindowSeconds?: number
  /** xsd:boolean */
  enableDaiAuthenticationKeys?: boolean
  /** AdBreakFillType|xsd:string|SLATE,UNDERLYING_CONTENT,MINIMIZE_SLATE,UNKNOWN */
  adBreakFillType?: AdBreakFillType | keyof typeof AdBreakFillType
  /** AdBreakFillType|xsd:string|SLATE,UNDERLYING_CONTENT,MINIMIZE_SLATE,UNKNOWN */
  underfillAdBreakFillType?:
    | UnderfillAdBreakFillType
    | keyof typeof UnderfillAdBreakFillType
  /** xsd:long */
  adHolidayDuration?: number
  /** xsd:boolean */
  enableMaxFillerDuration?: boolean
  /** xsd:long */
  maxFillerDuration?: number
  /** xsd:long */
  podServingSegmentDuration?: number
  /** xsd:boolean */
  enableDurationlessAdBreaks?: boolean
  /** xsd:long */
  defaultAdBreakDuration?: number
  /** xsd:long */
  streamCreateDaiAuthenticationKeyIds?: Array<number>
  /** xsd:long */
  sourceContentConfigurationIds?: Array<number>
  /** prerollSettings */
  prerollSettings?: PrerollSettings
  /** hlsSettings */
  hlsSettings?: HlsSettings
  /** xsd:boolean */
  enableAllowlistedIps?: boolean
  /** DynamicAdInsertionType|xsd:string|LINEAR,POD_SERVING_REDIRECT,POD_SERVING_MANIFEST,UNKNOWN */
  dynamicAdInsertionType?:
    | DynamicAdInsertionType
    | keyof typeof DynamicAdInsertionType
  /** xsd:boolean */
  enableRelativePlaylistDelivery?: boolean
  /** StreamingFormat|xsd:string|HLS,DASH,UNKNOWN */
  streamingFormat?: StreamingFormat | keyof typeof StreamingFormat
  /** xsd:boolean */
  prefetchEnabled?: boolean
  /** prefetchSettings */
  prefetchSettings?: PrefetchSettings
  /** xsd:boolean */
  enableForceCloseAdBreaks?: boolean
  /** xsd:boolean */
  enableShortSegmentDropping?: boolean
  /** xsd:string */
  customAssetKey?: string
  /** xsd:long */
  daiEncodingProfileIds?: Array<number>
  /** xsd:long */
  segmentUrlAuthenticationKeyIds?: Array<number>
  /** AdBreakMarkupType|xsd:string|AD_BREAK_MARKUP_HLS_EXT_CUE,AD_BREAK_MARKUP_HLS_PRIMETIME_SPLICE,AD_BREAK_MARKUP_HLS_DATERANGE_SPLICE,AD_BREAK_MARKUP_SCTE35_XML_SPLICE_INSERT,AD_BREAK_MARKUP_SCTE35_BINARY_SPLICE_INSERT,AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_AD_START_END,AD_BREAK_MARKUP_SCTE35_BINARY_PROVIDER_PLACEMENT_OP_START_END,AD_BREAK_MARKUP_SCTE35_BINARY_BREAK_START_END,UNKNOWN */
  adBreakMarkups?: Array<AdBreakMarkups | keyof typeof AdBreakMarkups>
  /** xsd:boolean */
  adBreakMarkupTypesEnabled?: boolean
  /** AdServingFormat|xsd:string|AD_MANAGER_DAI,DIRECT,UNKNOWN */
  adServingFormat?: AdServingFormat | keyof typeof AdServingFormat
  /** liveStreamConditioning */
  liveStreamConditioning?: LiveStreamConditioning
}
