import { BusinessProfileMinimal } from './BusinessProfile'; import { BookingConfirmation, ProductStockAvailability, ProductKind } from './enums'; import { Media } from './Media'; import { BaseModel, PublishableModel } from './Model'; import { Pricing } from './Pricing'; import { Rating } from './Rating'; import { ResourceFaq } from './ResourceFaq'; export interface Product extends PublishableModel { object: "product"; nationality?: string; bookable: boolean; kind: ProductKind; type?: string; image?: Media; gallery: Media[]; video_url?: string; description?: string; short_description?: string; currency_code?: string; price: number; comparison_price: number; price_min: number; price_max: number; cancellation_policy?: string; vendor?: string; seo_title?: string; seo_description?: string; seo_keywords?: string[]; tags: string[]; rating?: Rating; virtual: boolean; private: boolean; faqs?: ResourceFaq[]; booking_timezone?: string; booking_confirmation?: BookingConfirmation; booking_hide_calendar_notes: boolean; categories_handles: string[]; collection_handles: string[]; category: string; collection: string[]; template_suffix?: string; businessProfile?: BusinessProfileMinimal; variants: ProductVariant[]; } export interface ProductVariant extends BaseModel { id: string; gid: string; name: string; image?: Media; gallery: Media[]; barcode?: string; virtual?: boolean; availability: ProductStockAvailability; pricing: Pricing; comparison_pricing?: Pricing; booking_duration?: number; booking_cancellation_fee?: number; width?: number; length?: number; height?: number; weight?: number; volume_unit?: string; weight_unit?: string; }