import { StartDateTime } from './StartDateTime'
import { CustomPacingCurve } from './CustomPacingCurve'
import { FrequencyCaps } from './FrequencyCaps'
import { CostPerUnit } from './CostPerUnit'
import { CreativePlaceholders } from './CreativePlaceholders'
import { ActivityAssociations } from './ActivityAssociations'
import { Stats } from './Stats'
import { DeliveryIndicator } from './DeliveryIndicator'
import { DeliveryData } from './DeliveryData'
import { AppliedLabels } from './AppliedLabels'
import { CustomFieldValues } from './CustomFieldValues'
import { ThirdPartyMeasurementSettings } from './ThirdPartyMeasurementSettings'
import { PrimaryGoal } from './PrimaryGoal'
import { GrpSettings } from './GrpSettings'
import { DealInfo } from './DealInfo'
import { Targeting } from './Targeting'
import { CreativeTargetings } from './CreativeTargetings'

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 CreativeRotationType {
  EVEN = 'EVEN',
  OPTIMIZED = 'OPTIMIZED',
  MANUAL = 'MANUAL',
  SEQUENTIAL = 'SEQUENTIAL',
}

export enum DeliveryRateType {
  EVENLY = 'EVENLY',
  FRONTLOADED = 'FRONTLOADED',
  AS_FAST_AS_POSSIBLE = 'AS_FAST_AS_POSSIBLE',
}

export enum DeliveryForecastSource {
  HISTORICAL = 'HISTORICAL',
  FORECASTING = 'FORECASTING',
  CUSTOM_PACING_CURVE = 'CUSTOM_PACING_CURVE',
  UNKNOWN = 'UNKNOWN',
}

export enum RoadblockingType {
  ONLY_ONE = 'ONLY_ONE',
  ONE_OR_MORE = 'ONE_OR_MORE',
  AS_MANY_AS_POSSIBLE = 'AS_MANY_AS_POSSIBLE',
  ALL_ROADBLOCK = 'ALL_ROADBLOCK',
  CREATIVE_SET = 'CREATIVE_SET',
}

export enum SkippableAdType {
  UNKNOWN = 'UNKNOWN',
  DISABLED = 'DISABLED',
  ENABLED = 'ENABLED',
  INSTREAM_SELECT = 'INSTREAM_SELECT',
  ANY = 'ANY',
}

export enum LineItemType {
  SPONSORSHIP = 'SPONSORSHIP',
  STANDARD = 'STANDARD',
  NETWORK = 'NETWORK',
  BULK = 'BULK',
  PRICE_PRIORITY = 'PRICE_PRIORITY',
  HOUSE = 'HOUSE',
  LEGACY_DFP = 'LEGACY_DFP',
  CLICK_TRACKING = 'CLICK_TRACKING',
  ADSENSE = 'ADSENSE',
  AD_EXCHANGE = 'AD_EXCHANGE',
  BUMPER = 'BUMPER',
  ADMOB = 'ADMOB',
  PREFERRED_DEAL = 'PREFERRED_DEAL',
  UNKNOWN = 'UNKNOWN',
}

export enum CostType {
  CPA = 'CPA',
  CPC = 'CPC',
  CPD = 'CPD',
  CPM = 'CPM',
  VCPM = 'VCPM',
  CPM_IN_TARGET = 'CPM_IN_TARGET',
  UNKNOWN = 'UNKNOWN',
}

export enum DiscountType {
  ABSOLUTE_VALUE = 'ABSOLUTE_VALUE',
  PERCENTAGE = 'PERCENTAGE',
}

export enum EnvironmentType {
  BROWSER = 'BROWSER',
  VIDEO_PLAYER = 'VIDEO_PLAYER',
}

export enum AllowedFormats {
  AUDIO = 'AUDIO',
  UNKNOWN = 'UNKNOWN',
}

export enum CompanionDeliveryOption {
  OPTIONAL = 'OPTIONAL',
  AT_LEAST_ONE = 'AT_LEAST_ONE',
  ALL = 'ALL',
  UNKNOWN = 'UNKNOWN',
}

export enum Status {
  DELIVERY_EXTENDED = 'DELIVERY_EXTENDED',
  DELIVERING = 'DELIVERING',
  READY = 'READY',
  PAUSED = 'PAUSED',
  INACTIVE = 'INACTIVE',
  PAUSED_INVENTORY_RELEASED = 'PAUSED_INVENTORY_RELEASED',
  PENDING_APPROVAL = 'PENDING_APPROVAL',
  COMPLETED = 'COMPLETED',
  DISAPPROVED = 'DISAPPROVED',
  DRAFT = 'DRAFT',
  CANCELED = 'CANCELED',
}

export enum ReservationStatus {
  RESERVED = 'RESERVED',
  UNRESERVED = 'UNRESERVED',
}

export enum CompetitiveConstraintScope {
  POD = 'POD',
  STREAM = 'STREAM',
  UNKNOWN = 'UNKNOWN',
}

export enum ProgrammaticCreativeSource {
  PUBLISHER = 'PUBLISHER',
  ADVERTISER = 'ADVERTISER',
  UNKNOWN = 'UNKNOWN',
}

export enum ChildContentEligibility {
  UNKNOWN = 'UNKNOWN',
  DISALLOWED = 'DISALLOWED',
  ALLOWED = 'ALLOWED',
}

/**
 * lineItems
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202411`
 */
export interface LineItems {
  /** xsd:long */
  orderId?: number
  /** xsd:long */
  id?: number
  /** xsd:string */
  name?: string
  /** xsd:string */
  externalId?: string
  /** xsd:string */
  orderName?: string
  /** 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:int */
  autoExtensionDays?: number
  /** xsd:boolean */
  unlimitedEndDateTime?: boolean
  /** CreativeRotationType|xsd:string|EVEN,OPTIMIZED,MANUAL,SEQUENTIAL */
  creativeRotationType?:
    | CreativeRotationType
    | keyof typeof CreativeRotationType
  /** DeliveryRateType|xsd:string|EVENLY,FRONTLOADED,AS_FAST_AS_POSSIBLE */
  deliveryRateType?: DeliveryRateType | keyof typeof DeliveryRateType
  /** DeliveryForecastSource|xsd:string|HISTORICAL,FORECASTING,CUSTOM_PACING_CURVE,UNKNOWN */
  deliveryForecastSource?:
    | DeliveryForecastSource
    | keyof typeof DeliveryForecastSource
  /** customPacingCurve */
  customPacingCurve?: CustomPacingCurve
  /** RoadblockingType|xsd:string|ONLY_ONE,ONE_OR_MORE,AS_MANY_AS_POSSIBLE,ALL_ROADBLOCK,CREATIVE_SET */
  roadblockingType?: RoadblockingType | keyof typeof RoadblockingType
  /** SkippableAdType|xsd:string|UNKNOWN,DISABLED,ENABLED,INSTREAM_SELECT,ANY */
  skippableAdType?: SkippableAdType | keyof typeof SkippableAdType
  /** frequencyCaps[] */
  frequencyCaps?: Array<FrequencyCaps>
  /** LineItemType|xsd:string|SPONSORSHIP,STANDARD,NETWORK,BULK,PRICE_PRIORITY,HOUSE,LEGACY_DFP,CLICK_TRACKING,ADSENSE,AD_EXCHANGE,BUMPER,ADMOB,PREFERRED_DEAL,UNKNOWN */
  lineItemType?: LineItemType | keyof typeof LineItemType
  /** xsd:int */
  priority?: number
  /** costPerUnit */
  costPerUnit?: CostPerUnit
  /** valueCostPerUnit */
  valueCostPerUnit?: CostPerUnit
  /** CostType|xsd:string|CPA,CPC,CPD,CPM,VCPM,CPM_IN_TARGET,UNKNOWN */
  costType?: CostType | keyof typeof CostType
  /** LineItemDiscountType|xsd:string|ABSOLUTE_VALUE,PERCENTAGE */
  discountType?: DiscountType | keyof typeof DiscountType
  /** xsd:double */
  discount?: number
  /** xsd:long */
  contractedUnitsBought?: number
  /** creativePlaceholders[] */
  creativePlaceholders?: Array<CreativePlaceholders>
  /** activityAssociations[] */
  activityAssociations?: Array<ActivityAssociations>
  /** EnvironmentType|xsd:string|BROWSER,VIDEO_PLAYER */
  environmentType?: EnvironmentType | keyof typeof EnvironmentType
  /** AllowedFormats|xsd:string|AUDIO,UNKNOWN */
  allowedFormats?: Array<AllowedFormats | keyof typeof AllowedFormats>
  /** CompanionDeliveryOption|xsd:string|OPTIONAL,AT_LEAST_ONE,ALL,UNKNOWN */
  companionDeliveryOption?:
    | CompanionDeliveryOption
    | keyof typeof CompanionDeliveryOption
  /** xsd:boolean */
  allowOverbook?: boolean
  /** xsd:boolean */
  skipInventoryCheck?: boolean
  /** xsd:boolean */
  skipCrossSellingRuleWarningChecks?: boolean
  /** xsd:boolean */
  reserveAtCreation?: boolean
  /** stats */
  stats?: Stats
  /** deliveryIndicator */
  deliveryIndicator?: DeliveryIndicator
  /** deliveryData */
  deliveryData?: DeliveryData
  /** budget */
  budget?: CostPerUnit
  /** ComputedStatus|xsd:string|DELIVERY_EXTENDED,DELIVERING,READY,PAUSED,INACTIVE,PAUSED_INVENTORY_RELEASED,PENDING_APPROVAL,COMPLETED,DISAPPROVED,DRAFT,CANCELED */
  status?: Status | keyof typeof Status
  /** LineItemSummary.ReservationStatus|xsd:string|RESERVED,UNRESERVED */
  reservationStatus?: ReservationStatus | keyof typeof ReservationStatus
  /** xsd:boolean */
  isArchived?: boolean
  /** xsd:string */
  webPropertyCode?: string
  /** appliedLabels[] */
  appliedLabels?: Array<AppliedLabels>
  /** effectiveAppliedLabels[] */
  effectiveAppliedLabels?: Array<AppliedLabels>
  /** xsd:boolean */
  disableSameAdvertiserCompetitiveExclusion?: boolean
  /** xsd:string */
  lastModifiedByApp?: string
  /** xsd:string */
  notes?: string
  /** CompetitiveConstraintScope|xsd:string|POD,STREAM,UNKNOWN */
  competitiveConstraintScope?:
    | CompetitiveConstraintScope
    | keyof typeof CompetitiveConstraintScope
  /** lastModifiedDateTime */
  lastModifiedDateTime?: StartDateTime
  /** creationDateTime */
  creationDateTime?: StartDateTime
  /** customFieldValues[] */
  customFieldValues?: Array<CustomFieldValues>
  /** xsd:boolean */
  isMissingCreatives?: boolean
  /** ProgrammaticCreativeSource|xsd:string|PUBLISHER,ADVERTISER,UNKNOWN */
  programmaticCreativeSource?:
    | ProgrammaticCreativeSource
    | keyof typeof ProgrammaticCreativeSource
  /** thirdPartyMeasurementSettings */
  thirdPartyMeasurementSettings?: ThirdPartyMeasurementSettings
  /** xsd:boolean */
  youtubeKidsRestricted?: boolean
  /** xsd:long */
  videoMaxDuration?: number
  /** primaryGoal */
  primaryGoal?: PrimaryGoal
  /** secondaryGoals[] */
  secondaryGoals?: Array<PrimaryGoal>
  /** grpSettings */
  grpSettings?: GrpSettings
  /** dealInfo */
  dealInfo?: DealInfo
  /** xsd:long */
  viewabilityProviderCompanyIds?: Array<number>
  /** ChildContentEligibility|xsd:string|UNKNOWN,DISALLOWED,ALLOWED */
  childContentEligibility?:
    | ChildContentEligibility
    | keyof typeof ChildContentEligibility
  /** xsd:string */
  customVastExtension?: string
  /** targeting */
  targeting?: Targeting
  /** creativeTargetings[] */
  creativeTargetings?: Array<CreativeTargetings>
}
