/**
 * Product Variations
 * Description: Variations allow you to create the variations that your products have.
 * Things like size or color are examples of a Variation.
 */ import { Identifiable , CrudQueryableResource , RelationshipToMany , Resource , ResourceList , ResourcePage , } from './core' ; /**
 * Product Variations Base Interface
 */ export interface PCMVariationBase { attributes : { name : string ; } ; } export interface PCMVariation extends Identifiable , PCMVariationBase { type : 'product-variation' ; options : VariationsOption [ ] ; relationships : { options : RelationshipToMany < 'option' > ; } ; } /**
 * The Product Variation Option object
 * A variation option represents an option for selection for a single product-variation.
 */ export interface VariationsOption { attributes : { name : string ; description : string ; } ; } export interface VariationsOptionResponse extends Identifiable { type : 'product-variation-option' ; attributes : { name : string ; description : string ; } ; relationships : { modifiers : { data : VariationsModifierTypeObj [ ] ; } ; } ; } export interface UpdateVariation extends PCMVariationBase , Identifiable { } export interface UpdateVariationOption extends VariationsOption , Identifiable { } /**
 * Modifiers object
 * Modifiers help augmenting properties of a variation of a product, price, etc., by creating an array of child products or prices.
 */ export interface VariationsModifier { attributes : { type : VariationsModifierType ; value ? : string ; seek ? : string ; set ? : string ; } ; } export interface VariationsModifierResponse extends Identifiable , VariationsModifier { type : 'product-variation-modifier' ; } export type VariationsModifierTypeObj = { name_equals : string ; } | { name_append : string ; } | { name_prepend : string ; } | { description_equals : string ; } | { description_append : string ; } | { description_prepend : string ; } | { commoditytype : string ; } | { slug_equals : string ; } | { slug_append : string ; } | { slug_prepend : string ; } | { slug_builder : VariationsBuilderModifier ; } | { sku_equals : string ; } | { sku_append : string ; } | { sku_prepend : string ; } | { sku_builder : VariationsBuilderModifier ; } | { status : string ; } ; export type VariationsModifierType = 'name_equals' | 'name_append' | 'name_prepend' | 'description_equals' | 'description_append' | 'description_prepend' | 'commodity_type' | 'slug_equals' | 'slug_append' | 'slug_prepend' | 'slug_builder' | 'sku_equals' | 'sku_append' | 'sku_prepend' | 'sku_builder' | 'status' ; export interface VariationsBuilderModifier { seek : string ; set : string ; } /**
 * Variations Endpoints
 * Get DOCS: https://documentation.elasticpath.com/commerce-cloud/docs/api/catalog/product-variations/get-a-product-variation.html
 * Get All DOCS: https://documentation.elasticpath.com/commerce-cloud/docs/api/catalog/product-variations/create-a-product-variation.html
 * Delete DOCS: https://documentation.elasticpath.com/commerce-cloud/docs/api/catalog/product-variations/delete-a-product-variation.html
 */ export interface PCMVariationsEndpoint extends CrudQueryableResource < PCMVariation , PCMVariationBase , VariationsOptionResponse , never , never , never > { endpoint : 'pcm/variations' ; param body constructor CreateVariation ( body ) : Promise < Resource < PCMVariation > > ; param id param body param token constructor UpdateVariation ( id , body , token ? ) : Promise < Resource < PCMVariation > > ; param variationId param optionId constructor VariationsOption ( variationId , optionId ) : Promise < Resource < VariationsOptionResponse > > ; param variationId constructor VariationsOptions ( variationId ) : Promise < ResourcePage < never > > ; param variationId param body constructor CreateVariationsOption ( variationId , body ) : Promise < Resource < VariationsOptionResponse > > ; param variationId param optionId param body constructor UpdateVariationsOption ( variationId , optionId , body ) : Promise < Resource < VariationsOptionResponse > > ; param variationId param optionId constructor DeleteVariationsOption ( variationId , optionId ) : Promise < { } > ; param variationId param optionId param modifierId constructor VariationsModifier ( variationId , optionId , modifierId ) : Promise < Resource < VariationsModifierResponse > > ; param variationId param optionId constructor VariationsModifiers ( variationId , optionId ) : Promise < ResourceList < VariationsModifierResponse > > ; param variationId param optionId param body constructor CreateVariationsModifier ( variationId , optionId , body ) : Promise < Resource < VariationsModifierResponse > > ; param variationId param optionId param modifierId param body constructor UpdateVariationsModifier ( variationId , optionId , modifierId , body ) : Promise < Resource < VariationsModifierResponse > > ; param variationId param optionId param modifierId constructor DeleteVariationsModifier ( variationId , optionId , modifierId ) : Promise < { } > ; }