"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.Product = void 0;

var _propTypes = _interopRequireDefault(require("prop-types"));

var _imageSet = require("./image-set");

var _integer = require("./integer");

var _variation = require("./variation");

var _variationProperty = require("./variation-property");

/* * *  *  * *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */

/* Copyright (c) 2018 Mobify Research & Development Inc. All rights reserved. */

/* * *  *  * *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
const Product = {
  id: _propTypes.default.string.isRequired,
  name: _propTypes.default.string,
  imageSets: _propTypes.default.arrayOf(_propTypes.default.shape(_imageSet.ImageSet)),
  description: _propTypes.default.string,
  categoryId: _propTypes.default.string,
  brand: _propTypes.default.string,
  minimumOrderQuantity: _integer.Integer,
  stepQuantity: _integer.Integer,
  upc: _propTypes.default.string,
  unit: _propTypes.default.string,
  price: _propTypes.default.number,
  prices: _propTypes.default.object,
  variations: _propTypes.default.arrayOf(_propTypes.default.shape(_variation.Variation)),
  variationProperties: _propTypes.default.arrayOf(_propTypes.default.shape(_variationProperty.VariationProperty)),
  variationValues: _propTypes.default.object
  /**
   * @memberOf module:@mobify/commerce-integrations/dist/types
   * @typedef {Object} Product
   * @property {String} id The product id.
   * @property {String} name The product name.
   * @property {Array.<module:@mobify/commerce-integrations/dist/types.ImageSet>} imageSets The product's image-sets.
   * @property {String} description The product's description.
   * @property {String} categoryId The product's main category id.
   * @property {String} brand The product's brand name.
   * @property {module:@mobify/commerce-integrations/dist/types.Integer} minimumOrderQuantity The product's minimum order quantity.
   * @property {module:@mobify/commerce-integrations/dist/types.Integer} stepQuantity The product's step quantity.
   * @property {String} upc The product's universal product code.
   * @property {String} unit The product's units, such as 'each', 'ea', or 'pair'.
   * @property {Number} price The default price.
   * @property {Object} prices The map of price type label and value. For example: {'Regular': 99.99, 'Sale': 69.99}
   * @property {Array.<module:@mobify/commerce-integrations/dist/types.Variation>} variations The different variations of the product.
   * @property {Array.<module:@mobify/commerce-integrations/dist/types.VariationProperty>} variationProperties All the product variations' different properties.
   * @property {Object} variationValues The product's property values.
   */

};
exports.Product = Product;