import type { CurrencyValue, Image, Option } from '../../../libs/util-domain-models'; import type { Brand } from './brand.model'; import type { Inventory } from './inventory.model'; import type { Variant } from './variant.model'; export interface Product { /** * The product's identifier. * * @example '165139' */ id: string; /** * The name of the product. * * @example 'Kingsford 24' Charcoal Grill' */ title: string; /** * A SEO slug for the product. Used as a human-readable portion of the URL * to access the product. * * @example 'Kingsford-24-Charcoal-Grill' */ slug?: string; /** * The brand or manufacturer of a product. * * @example 'Kingsford' */ brand?: Brand; /** * A description of the product. * * @example * 'Kingsford Charcoal Grill comes with a cast iron cooking grid and 360 sq in of cooking space.' */ description?: string; /** * An array of images of the product. */ images?: Image[]; /** * The current offer price of the product. * * @example '84.98' */ price?: CurrencyValue; /** * The original price of the product. * * @example '105.00' */ originalPrice?: CurrencyValue; /** * The current inventory for the product. */ inventory?: Inventory; /** * An array of options for the product. For example a 1 Year Warranty. */ options?: Option[]; /** * An array of variants for the product. For example alternative sizes or colors. */ variants?: Variant[]; }