import { Targeting } from './Targeting'
import { StartDateTime } from './StartDateTime'
import { Preroll } from './Preroll'

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 Status {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  UNKNOWN = 'UNKNOWN',
}

export enum FrequencyCapBehavior {
  TURN_ON = 'TURN_ON',
  TURN_OFF = 'TURN_OFF',
  DEFER = 'DEFER',
  UNKNOWN = 'UNKNOWN',
}

/**
 * adRules
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202408`
 */
export interface AdRules {
  /** xsd:long */
  id?: number
  /** xsd:string */
  name?: string
  /** xsd:int */
  priority?: number
  /** targeting */
  targeting?: Targeting
  /** startDateTime */
  startDateTime?: StartDateTime
  /** StartDateTimeType|xsd:string|USE_START_DATE_TIME,IMMEDIATELY,ONE_HOUR_FROM_NOW,UNKNOWN */
  startDateTimeType?: StartDateTimeType | keyof typeof StartDateTimeType
  /** endDateTime */
  endDateTime?: StartDateTime
  /** xsd:boolean */
  unlimitedEndDateTime?: boolean
  /** AdRuleStatus|xsd:string|ACTIVE,INACTIVE,UNKNOWN */
  status?: Status | keyof typeof Status
  /** FrequencyCapBehavior|xsd:string|TURN_ON,TURN_OFF,DEFER,UNKNOWN */
  frequencyCapBehavior?:
    | FrequencyCapBehavior
    | keyof typeof FrequencyCapBehavior
  /** xsd:int */
  maxImpressionsPerLineItemPerStream?: number
  /** xsd:int */
  maxImpressionsPerLineItemPerPod?: number
  /** preroll */
  preroll?: Preroll
  /** midroll */
  midroll?: Preroll
  /** postroll */
  postroll?: Preroll
}
