import { StartDateTime } from './StartDateTime'
import { Goal } from './Goal'
import { FrequencyCaps } from './FrequencyCaps'
import { CreativePlaceholders } from './CreativePlaceholders'
import { Targeting } from './Targeting'
import { CustomFieldValues } from './CustomFieldValues'
import { AppliedLabels } from './AppliedLabels'
import { NetRate } from './NetRate'
import { DeliveryIndicator } from './DeliveryIndicator'
import { DeliveryData } from './DeliveryData'
import { GrpSettings } from './GrpSettings'
import { ThirdPartyMeasurementSettings } from './ThirdPartyMeasurementSettings'
import { MakegoodInfos } from './MakegoodInfos'

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

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 CompanionDeliveryOption {
  OPTIONAL = 'OPTIONAL',
  AT_LEAST_ONE = 'AT_LEAST_ONE',
  ALL = 'ALL',
  UNKNOWN = 'UNKNOWN',
}

export enum VideoCreativeSkippableAdType {
  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 RateType {
  CPM = 'CPM',
  CPD = 'CPD',
  VCPM = 'VCPM',
  CPM_IN_TARGET = 'CPM_IN_TARGET',
  UNKNOWN = 'UNKNOWN',
}

export enum ComputedStatus {
  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',
  NOT_RESERVED = 'NOT_RESERVED',
  RELEASED = 'RELEASED',
  CHECK_LINE_ITEM_RESERVATION_STATUS = 'CHECK_LINE_ITEM_RESERVATION_STATUS',
  UNKNOWN = 'UNKNOWN',
}

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

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

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

export enum PauseRole {
  BUYER = 'BUYER',
  SELLER = 'SELLER',
  UNKNOWN = 'UNKNOWN',
}

/**
 * rval
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202502`
 */
export interface Rval {
  /** xsd:long */
  id?: number
  /** xsd:long */
  proposalId?: number
  /** xsd:string */
  name?: string
  /** startDateTime */
  startDateTime?: StartDateTime
  /** endDateTime */
  endDateTime?: StartDateTime
  /** xsd:string */
  internalNotes?: string
  /** xsd:boolean */
  isArchived?: boolean
  /** goal */
  goal?: Goal
  /** secondaryGoals[] */
  secondaryGoals?: Array<Goal>
  /** xsd:long */
  contractedUnitsBought?: number
  /** DeliveryRateType|xsd:string|EVENLY,FRONTLOADED,AS_FAST_AS_POSSIBLE */
  deliveryRateType?: DeliveryRateType | keyof typeof DeliveryRateType
  /** RoadblockingType|xsd:string|ONLY_ONE,ONE_OR_MORE,AS_MANY_AS_POSSIBLE,ALL_ROADBLOCK,CREATIVE_SET */
  roadblockingType?: RoadblockingType | keyof typeof RoadblockingType
  /** CompanionDeliveryOption|xsd:string|OPTIONAL,AT_LEAST_ONE,ALL,UNKNOWN */
  companionDeliveryOption?:
    | CompanionDeliveryOption
    | keyof typeof CompanionDeliveryOption
  /** xsd:long */
  videoMaxDuration?: number
  /** SkippableAdType|xsd:string|UNKNOWN,DISABLED,ENABLED,INSTREAM_SELECT,ANY */
  videoCreativeSkippableAdType?:
    | VideoCreativeSkippableAdType
    | keyof typeof VideoCreativeSkippableAdType
  /** frequencyCaps[] */
  frequencyCaps?: Array<FrequencyCaps>
  /** xsd:long */
  dfpLineItemId?: number
  /** 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 */
  lineItemPriority?: number
  /** RateType|xsd:string|CPM,CPD,VCPM,CPM_IN_TARGET,UNKNOWN */
  rateType?: RateType | keyof typeof RateType
  /** creativePlaceholders[] */
  creativePlaceholders?: Array<CreativePlaceholders>
  /** targeting */
  targeting?: Targeting
  /** customFieldValues[] */
  customFieldValues?: Array<CustomFieldValues>
  /** appliedLabels[] */
  appliedLabels?: Array<AppliedLabels>
  /** effectiveAppliedLabels[] */
  effectiveAppliedLabels?: Array<AppliedLabels>
  /** xsd:boolean */
  disableSameAdvertiserCompetitiveExclusion?: boolean
  /** xsd:boolean */
  isSold?: boolean
  /** netRate */
  netRate?: NetRate
  /** netCost */
  netCost?: NetRate
  /** deliveryIndicator */
  deliveryIndicator?: DeliveryIndicator
  /** deliveryData */
  deliveryData?: DeliveryData
  /** ComputedStatus|xsd:string|DELIVERY_EXTENDED,DELIVERING,READY,PAUSED,INACTIVE,PAUSED_INVENTORY_RELEASED,PENDING_APPROVAL,COMPLETED,DISAPPROVED,DRAFT,CANCELED */
  computedStatus?: ComputedStatus | keyof typeof ComputedStatus
  /** lastModifiedDateTime */
  lastModifiedDateTime?: StartDateTime
  /** ReservationStatus|xsd:string|RESERVED,NOT_RESERVED,RELEASED,CHECK_LINE_ITEM_RESERVATION_STATUS,UNKNOWN */
  reservationStatus?: ReservationStatus | keyof typeof ReservationStatus
  /** lastReservationDateTime */
  lastReservationDateTime?: StartDateTime
  /** EnvironmentType|xsd:string|BROWSER,VIDEO_PLAYER */
  environmentType?: EnvironmentType | keyof typeof EnvironmentType
  /** AllowedFormats|xsd:string|AUDIO,UNKNOWN */
  allowedFormats?: Array<AllowedFormats | keyof typeof AllowedFormats>
  /** xsd:string */
  additionalTerms?: string
  /** ProgrammaticCreativeSource|xsd:string|PUBLISHER,ADVERTISER,UNKNOWN */
  programmaticCreativeSource?:
    | ProgrammaticCreativeSource
    | keyof typeof ProgrammaticCreativeSource
  /** grpSettings */
  grpSettings?: GrpSettings
  /** xsd:long */
  estimatedMinimumImpressions?: number
  /** thirdPartyMeasurementSettings */
  thirdPartyMeasurementSettings?: ThirdPartyMeasurementSettings
  /** makegoodInfo */
  makegoodInfo?: MakegoodInfos
  /** xsd:boolean */
  hasMakegood?: boolean
  /** xsd:boolean */
  canCreateMakegood?: boolean
  /** NegotiationRole|xsd:string|BUYER,SELLER,UNKNOWN */
  pauseRole?: PauseRole | keyof typeof PauseRole
  /** xsd:string */
  pauseReason?: string
}
