import { ParentPath } from './ParentPath'
import { AdUnitSizes } from './AdUnitSizes'
import { AdSenseSettings } from './AdSenseSettings'
import { AppliedLabelFrequencyCaps } from './AppliedLabelFrequencyCaps'
import { AppliedLabels } from './AppliedLabels'
import { LastModifiedDateTime } from './LastModifiedDateTime'

export enum TargetWindow {
  TOP = 'TOP',
  BLANK = 'BLANK',
}

export enum Status {
  ACTIVE = 'ACTIVE',
  INACTIVE = 'INACTIVE',
  ARCHIVED = 'ARCHIVED',
}

export enum AdSenseSettingsSource {
  PARENT = 'PARENT',
  DIRECTLY_SPECIFIED = 'DIRECTLY_SPECIFIED',
  UNKNOWN = 'UNKNOWN',
}

export enum SmartSizeMode {
  UNKNOWN = 'UNKNOWN',
  NONE = 'NONE',
  SMART_BANNER = 'SMART_BANNER',
  DYNAMIC_SIZE = 'DYNAMIC_SIZE',
}

/**
 * adUnits
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202408`
 */
export interface AdUnits {
  /** xsd:string */
  id?: string
  /** xsd:string */
  parentId?: string
  /** xsd:boolean */
  hasChildren?: boolean
  /** parentPath[] */
  parentPath?: Array<ParentPath>
  /** xsd:string */
  name?: string
  /** xsd:string */
  description?: string
  /** AdUnit.TargetWindow|xsd:string|TOP,BLANK */
  targetWindow?: TargetWindow | keyof typeof TargetWindow
  /** InventoryStatus|xsd:string|ACTIVE,INACTIVE,ARCHIVED */
  status?: Status | keyof typeof Status
  /** xsd:string */
  adUnitCode?: string
  /** adUnitSizes[] */
  adUnitSizes?: Array<AdUnitSizes>
  /** xsd:boolean */
  isInterstitial?: boolean
  /** xsd:boolean */
  isNative?: boolean
  /** xsd:boolean */
  isFluid?: boolean
  /** xsd:boolean */
  explicitlyTargeted?: boolean
  /** adSenseSettings */
  adSenseSettings?: AdSenseSettings
  /** ValueSourceType|xsd:string|PARENT,DIRECTLY_SPECIFIED,UNKNOWN */
  adSenseSettingsSource?:
    | AdSenseSettingsSource
    | keyof typeof AdSenseSettingsSource
  /** appliedLabelFrequencyCaps[] */
  appliedLabelFrequencyCaps?: Array<AppliedLabelFrequencyCaps>
  /** effectiveLabelFrequencyCaps[] */
  effectiveLabelFrequencyCaps?: Array<AppliedLabelFrequencyCaps>
  /** appliedLabels[] */
  appliedLabels?: Array<AppliedLabels>
  /** effectiveAppliedLabels[] */
  effectiveAppliedLabels?: Array<AppliedLabels>
  /** xsd:long */
  effectiveTeamIds?: Array<number>
  /** xsd:long */
  appliedTeamIds?: Array<number>
  /** lastModifiedDateTime */
  lastModifiedDateTime?: LastModifiedDateTime
  /** SmartSizeMode|xsd:string|UNKNOWN,NONE,SMART_BANNER,DYNAMIC_SIZE */
  smartSizeMode?: SmartSizeMode | keyof typeof SmartSizeMode
  /** xsd:int */
  refreshRate?: number
  /** xsd:string */
  externalSetTopBoxChannelId?: string
  /** xsd:boolean */
  isSetTopBoxEnabled?: boolean
  /** xsd:long */
  applicationId?: number
}
