import { ItemName } from './item.model';

/**
 * Storefront-side raw category shape (item.service.ts/api.service.ts responses).
 * Unrelated to core/categories/models/category-domain.model.ts's Category, which is
 * the normalized admin-backoffice domain shape produced by CategoryMapper.
 */
export interface CategoryApiModel {
  categoryID: number;
  name: string;
  parentID: number;
  icon?: string;
  wideBanner?: string;
  itemCount?: number;
  categoriesCount?: number;
  priority?: number;
  names?: ItemName[];
  translations?: Record<string, CategoryTranslation>;

  // BackOffice API fields
  id?: string;
  visible?: boolean;
  img?: string;
  marketplaceId?: string;
  subcategories?: Subcategory[];
}

export interface Subcategory {
  id: string;
  name: string;
  visible?: boolean;
  priority?: number;
  img?: string;
  categoryId: string;
  parentId: string;
  itemCount?: number;
  hasItems?: boolean;
  subcategories?: Subcategory[];
}

interface CategoryTranslation {
  name?: string;
}
