export interface Product {
  id: string;
  title: string;
  subtitle: string | null;
  description: string | null;
  handle: string;
  is_giftcard: boolean;
  discountable: boolean;
  thumbnail: string;
  collection_id: string | null;
  type_id: string;
  weight: number | null;
  length: number | null;
  height: number | null;
  width: number | null;
  hs_code: string | null;
  origin_country: string | null;
  mid_code: string | null;
  material: string | null;
  created_at: string;
  updated_at: string;
  type: ProductType;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  collection: any | null;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  options: any[];
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  tags: any[];
  images: ProductImage[];
  variants: ProductVariant[];
}

export interface ProductType {
  id: string;
  value: string;
  metadata: {
    tax_id: string;
    discount_limit: number;
  };
  created_at: string;
  updated_at: string;
  deleted_at: string | null;
}

export interface ProductImage {
  id: string;
  url: string;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  metadata: any | null;
  created_at: string;
  updated_at: string;
  deleted_at: string | null;
}

export interface ProductVariant {
  id: string;
  title: string;
  sku: string | null;
  barcode: string | null;
  ean: string | null;
  upc: string | null;
  allow_backorder: boolean;
  manage_inventory: boolean;
  hs_code: string | null;
  origin_country: string | null;
  mid_code: string | null;
  material: string | null;
  weight: number | null;
  length: number | null;
  height: number | null;
  width: number | null;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  metadata: any | null;
  variant_rank: number;
  product_id: string;
  created_at: string;
  updated_at: string;
  deleted_at: string | null;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  options: any[];
  calculated_price: number | null;
}
