import { WAMediaUpload } from './Message'

export type CatalogResult = {
   data: {
      paging: {
         cursors: {
            before: string
            after: string
         }
      }
      data: any[]
   }
}

export type ProductCreateResult = {
   data: {
      product: {}
   }
}

export type CatalogStatus = {
   status: string
   canAppeal: boolean
}

export type CatalogCollection = {
   id: string
   name: string
   products: Product[]
   status: CatalogStatus
}

export type ProductAvailability = 'in stock'

export type ProductBase = {
   name: string
   retailerId?: string
   url?: string
   description: string
   price: number
   currency: string
   isHidden?: boolean
}

export type ProductCreate = ProductBase & {
   /** ISO country code for product origin. Set to undefined for no country */
   originCountryCode: string | undefined
   /** images of the product */
   images: WAMediaUpload[]
}

export type ProductUpdate = Omit<ProductCreate, 'originCountryCode'>

export type Product = ProductBase & {
   id: string
   imageUrls: {
      [_: string]: string
   }
   reviewStatus: {
      [_: string]: string
   }
   availability: ProductAvailability
}

export type OrderPrice = {
   currency: string
   total: number
}

export type OrderProduct = {
   id: string
   imageUrl: string
   name: string
   quantity: number
   currency: string
   price: number
}

export type OrderDetails = {
   price: OrderPrice
   products: OrderProduct[]
}

export type CatalogCursor = string

export type GetCatalogOptions = {
   /** cursor to start from */
   cursor?: CatalogCursor
   /** number of products to fetch */
   limit?: number
   jid?: string
}