import taxonomyData from "@/data/brandlxft-industry-taxonomy.json";

export interface TaxonomyBusinessType {
  label: string;
  slug: string;
  industryId: string;
  industry: string;
  category: string;
  isPriority: boolean;
}

export interface TaxonomyCategory {
  category: string;
  categoryId: string;
  databaseCategory: string;
  businessTypeCount: number;
  businessTypes: TaxonomyBusinessType[];
}

export interface PriorityIndustry {
  rank: number;
  label: string;
  rationale: string;
  linkedBusinessTypes: Array<{
    label: string;
    industryId: string;
    industry: string;
    category: string;
  }>;
}

export const industryTaxonomy = taxonomyData as {
  version: string;
  totalTaxonomyBusinessTypes: number;
  taxonomy: TaxonomyCategory[];
  priorityIndustries: PriorityIndustry[];
  highGrowthRationale: string;
};

export const TAXONOMY_CATEGORIES = industryTaxonomy.taxonomy.map((t) => t.category);

export function getTaxonomyCategory(category: string): TaxonomyCategory | undefined {
  return industryTaxonomy.taxonomy.find((t) => t.category === category);
}

export function getBusinessTypesForCategory(category: string): TaxonomyBusinessType[] {
  return getTaxonomyCategory(category)?.businessTypes ?? [];
}

export function getPriorityIndustries(): PriorityIndustry[] {
  return industryTaxonomy.priorityIndustries;
}

export function resolveIndustrySelection(category: string, businessTypeLabel: string) {
  const match = getBusinessTypesForCategory(category).find((b) => b.label === businessTypeLabel);
  if (!match) return null;
  return {
    taxonomyLabel: match.label,
    industryId: match.industryId,
    industry: match.industry,
    databaseCategory: match.category,
  };
}
