import { ProductCategory, Product, ProductAttributeCategory, ProductAttribute, ReorderConfig, ProductProductAttribute, Table, ProductProductAttributeCategory } from "./../../models"; import { BlockVersion } from "../../enums/block-storage"; import { AttributeIdsInProduct } from "../../models/array-mutations"; import { CursorPaginationEnabled, Filterable, Selectable } from './common'; import { StoreTemplateItemRequest, StoreTemplateItemDeleteRequest } from "./store"; export interface CreateProductCategoryRequest extends StoreTemplateItemRequest { item: ProductCategory; } export interface GetProductCategoriesRequest extends CursorPaginationEnabled, Filterable, StoreTemplateItemRequest { blockVersion?: BlockVersion; } export interface UpdateProductCategoryRequest extends StoreTemplateItemRequest { item: ProductCategory; } export interface ReorderProductCategoriesRequest extends StoreTemplateItemRequest { items: ReorderConfig[]; } export interface DeleteProductCategoryRequest extends StoreTemplateItemDeleteRequest { } export interface CreateProductRequest extends StoreTemplateItemRequest { item: Product; } export interface GetProductsByCategoryIdRequest extends StoreTemplateItemRequest { productCategoryId: string; } export interface ReorderProductsRequest extends StoreTemplateItemRequest { items: ReorderConfig[]; } export interface UpdateProductRequest extends StoreTemplateItemRequest { item: Product; attributeIdsMutation?: AttributeIdsInProduct; } export interface DeleteProductRequest extends StoreTemplateItemDeleteRequest { attributeIds: string[]; } export interface CreateProductAttributeCategoryRequest extends StoreTemplateItemRequest { item: ProductAttributeCategory; } export interface GetProductAttributeCategoriesRequest extends CursorPaginationEnabled, Filterable, StoreTemplateItemRequest { blockVersion?: BlockVersion; } export interface UpdateProductAttributeCategoryRequest extends StoreTemplateItemRequest { item: ProductAttributeCategory; } export interface ReorderProductAttributeCategoriesRequest extends StoreTemplateItemRequest { items: ReorderConfig[]; } export interface DeleteProductAttributeCategoryRequest extends StoreTemplateItemDeleteRequest { } export interface CreateProductAttributeRequest extends StoreTemplateItemRequest { item: ProductAttribute; } export interface GetProductAttributesRequest extends CursorPaginationEnabled, Selectable, Filterable, StoreTemplateItemRequest { blockVersion?: BlockVersion; } export interface GetProductAttributesByCategoryIdRequest extends StoreTemplateItemRequest { productAttributeCategoryId: string; } export interface UpdateProductAttributeRequest extends StoreTemplateItemRequest { item: ProductAttribute; } export interface DeleteProductAttributeRequest extends StoreTemplateItemDeleteRequest { } export interface UpdateProductAttributesInCategoryRequest extends StoreTemplateItemRequest { productAttributeCategoryId: string; items: ProductAttribute[]; } export interface SoldOutSwitchRequest extends StoreTemplateItemRequest { productId: string; soldOut: boolean; } export interface GetProductsRequest extends CursorPaginationEnabled, Filterable, StoreTemplateItemRequest { blockVersion?: BlockVersion; } /** storeId or chainId must given */ export interface SetProductAndProductAttributeRelationRequest extends StoreTemplateItemRequest { from: 'Product' | 'ProductAttribute'; productIds: string[]; productAttributeIds: string[]; } /** overwrite product, productAttributes, productCategories, and productAttributeCategories */ export interface OverwriteMenuRequest extends StoreTemplateItemRequest { products: Product[]; productAttributes: ProductAttribute[]; productCategories: ProductCategory[]; productAttributeCategories: ProductAttributeCategory[]; productProductAttributeRelations: ProductProductAttribute[]; productProductAttributeCategoryRelations: ProductProductAttributeCategory[]; tables?: Table[]; }