import { Category } from './category'; type Values = T[keyof T]; export interface Product { absolute_url: string; attribute_set: number; attributes: { [key: string]: any; }; attributes_kwargs: any; base_code: string; basket_offers: Array<{ kwargs: { show_benefit_products: boolean }; label: string; listing_kwargs: { [key: string]: any; }; pk: number; }>; currency_type: string; data_source: null; item_id?: string; extra_attributes: { [key: string]: any; }; form_schema: null; image?: string; in_stock: boolean; is_ready_to_basket: boolean; name: string; pk: number; price: string; price_type: string; product_type: string; productimage_set: Array<{ created_date: Date; image: string; order: number; pk: number; specialimage_set: Array<{ [key: string]: any; }>; status: string; }>; productvideo_set: Array<{ [key: string]: any; }>; retail_price: string; sku: string; stock: number; unit_type: string; created_date: string; modified_date: string; description?: string; quantity: string; extra_data: { [key: string]: any; }; [key: string]: any; } export interface FavoriteItem { pk: number; product: Product; } export type VariantOption = { in_stock: boolean; is_selectable: boolean; is_selectable_without_stock: boolean; is_selected: boolean; label: string; order: string; product: Product; value: string; }; export type StockResultType = [ { address: string; latitude: string; longitude: string; name: string; stock: string; store_hours: Array; } ]; export type FindInStoreFormType = { productPk: string; queryString: string; }; export interface ProductCategoryResult { count: number; next: string; previous: null | string; results: Category[]; } export type VariantType = { attribute_key: Values; attribute_name: string; options: Array; }; export type ProductResult = { in_stock: boolean; product: Product; group_products?: Array; selected_variant?: Product | null; variants?: Array; };