import { StartDateTime } from './StartDateTime'
import { Advertiser } from './Advertiser'
import { PrimarySalesperson } from './PrimarySalesperson'
import { CustomFieldValues } from './CustomFieldValues'
import { AppliedLabels } from './AppliedLabels'
import { MarketplaceInfo } from './MarketplaceInfo'
import { BuyerRfp } from './BuyerRfp'

export enum Status {
  DRAFT = 'DRAFT',
  PENDING_APPROVAL = 'PENDING_APPROVAL',
  APPROVED = 'APPROVED',
  REJECTED = 'REJECTED',
  UNKNOWN = 'UNKNOWN',
}

/**
 * proposals
 * @targetNSAlias `tns`
 * @targetNamespace `https://www.google.com/apis/ads/publisher/v202411`
 */
export interface Proposals {
  /** xsd:long */
  id?: number
  /** xsd:boolean */
  isProgrammatic?: boolean
  /** xsd:long */
  dfpOrderId?: number
  /** xsd:string */
  name?: string
  /** startDateTime */
  startDateTime?: StartDateTime
  /** endDateTime */
  endDateTime?: StartDateTime
  /** ProposalStatus|xsd:string|DRAFT,PENDING_APPROVAL,APPROVED,REJECTED,UNKNOWN */
  status?: Status | keyof typeof Status
  /** xsd:boolean */
  isArchived?: boolean
  /** advertiser */
  advertiser?: Advertiser
  /** agencies[] */
  agencies?: Array<Advertiser>
  /** xsd:string */
  internalNotes?: string
  /** primarySalesperson */
  primarySalesperson?: PrimarySalesperson
  /** xsd:long */
  salesPlannerIds?: Array<number>
  /** xsd:long */
  primaryTraffickerId?: number
  /** xsd:long */
  sellerContactIds?: Array<number>
  /** xsd:long */
  appliedTeamIds?: Array<number>
  /** customFieldValues[] */
  customFieldValues?: Array<CustomFieldValues>
  /** appliedLabels[] */
  appliedLabels?: Array<AppliedLabels>
  /** effectiveAppliedLabels[] */
  effectiveAppliedLabels?: Array<AppliedLabels>
  /** xsd:string */
  currencyCode?: string
  /** xsd:boolean */
  isSold?: boolean
  /** lastModifiedDateTime */
  lastModifiedDateTime?: StartDateTime
  /** marketplaceInfo */
  marketplaceInfo?: MarketplaceInfo
  /** buyerRfp */
  buyerRfp?: BuyerRfp
  /** xsd:boolean */
  hasBuyerRfp?: boolean
  /** xsd:boolean */
  deliveryPausingEnabled?: boolean
}
