types/api/performers.ts

import { EventResponse } from "./events";

export type Performer = {
  id: number;
  performer_id: number;
  name: string;
  role?:
    | "Featured"
    | "Headliner"
    | "Opener"
    | "Guest"
    | "Home Team"
    | "Away Team";
};

/**
 * Correspondes to TickPick.API.Models.Entities.PerformerResponse
 */
export type PerformerResponse = Performer & {
  response_type: string;
  events: EventResponse[];
  nearby_events: EventResponse[];
  total_count?: number;
  home_venue?: number;
  limit: number;
  offset: number;
  included_performers?: any[];
  blogs?: any[];
};

export type PerformerCategory = {
  parent: ParentCategory;
  child: ChildCategory;
  grandchild?: GrandchildCategory;
};

export type ParentCategory = (typeof ParentCategoryValues)[number];
export type ChildCategory = (typeof ChildCategoryValues)[number];
export type GrandchildCategory = (typeof GrandchildCategoryValues)[number];

export const ParentCategoryValues = [
  "CONCERTS",
  "OTHER",
  "SPORTS",
  "THEATRE",
] as const;

export const ChildCategoryValues = [
  "50s / 60s ERA",
  "ADULT",
  "ALTERNATIVE",
  "BALLET",
  "BASEBALL",
  "BASKETBALL",
  "BLUEGRASS",
  "BOXING",
  "BROADWAY",
  "CHILDREN / FAMILY",
  "CIRCUS",
  "CIRQUE DU SOLEIL",
  "CLASSICAL",
  "COMEDY",
  "COUNTRY / FOLK",
  "CRICKET",
  "DANCE",
  "FAIRS / FESTIVALS",
  "FESTIVAL",
  "FESTIVAL / TOUR",
  "FILM",
  "FOOTBALL",
  "GOLF",
  "GYMNASTICS",
  "HARD ROCK / METAL",
  "HOCKEY",
  "HOLIDAY",
  "JAZZ / BLUES",
  "LACROSSE",
  "LAS VEGAS",
  "LAS VEGAS SHOWS",
  "LATIN",
  "LECTURE",
  "MAGIC SHOWS",
  "MIXED MARTIAL ARTS",
  "MUSEUM / EXHIBIT",
  "MUSICAL / PLAY",
  "NEW AGE",
  "OFF-BROADWAY",
  "OLYMPICS",
  "OPERA",
  "OTHER",
  "PERFORMANCE SERIES",
  "POP / ROCK",
  "R&B / SOUL",
  "RACING",
  "RAP / HIP HOP",
  "REGGAE / REGGAETON",
  "RELIGIOUS",
  "RODEO",
  "RUGBY",
  "SKATING",
  "SOCCER",
  "SOFTBALL",
  "TAPED PROGRAM (TV / RADIO)",
  "TECHNO / ELECTRONIC",
  "TENNIS",
  "VOLLEYBALL",
  "WEST END",
  "WORLD",
  "WRESTLING",
] as const;

export const GrandchildCategoryValues = [
  "-",
  "AFL",
  "AHL",
  "Archery",
  "Argentinian Premier League",
  "Artistic Gymnastics",
  "Austrian T-Mobile Bundesliga",
  "Auto",
  "Badminton",
  "Basketball",
  "Beach Volleyball",
  "Belgian Jupiler League",
  "BMX Cycling",
  "Boat",
  "Boxing",
  "Brazilian Serie A",
  "Celtic",
  "CFL",
  "CHL - Canadian",
  "CHL - Central",
  "Cirque du Soleil",
  "Closing Ceremony",
  "College (Div I-A and Div I-AA)",
  "College Band",
  "Croatian Prva HNL",
  "Czech 1. Gambrinus Liga",
  "Diving",
  "Dutch Eerste Divisie",
  "Dutch Eredivise",
  "ECHL",
  "English Football Leagues (Lower Divisions)",
  "English Premier League",
  "Equestrian",
  "Euro Cup",
  "Fencing",
  "French Ligue (Lower Divisions)",
  "French Ligue 1",
  "Frontier League",
  "General",
  "German Bundesliga",
  "German Bundesliga (Lower Divisions)",
  "Greek Superleague",
  "Handball",
  "Horse",
  "Ice (figure)",
  "Ice (show)",
  "Ice Hockey",
  "Ice Show",
  "IHL",
  "International League Baseball",
  "Israeli Premier League",
  "Italian Serie (Lower Divisions)",
  "Italian Serie A",
  "Jamaican National Premier League",
  "Japanese J1 League",
  "Judo",
  "KHL - Kontinental Hockey League",
  "Major Arena Soccer League (MASL)",
  "Major Indoor Soccer League (MISL)",
  "Mexican Primera División",
  "Minors (AAA)",
  "MLL",
  "Motorcycle",
  "Mountain Biking",
  "NASCAR",
  "National Teams",
  "National Womens Soccer League (NWSL)",
  "NFL",
  "Nightclub Passes",
  "NLL",
  "North American Soccer League",
  "Norwegian Tippeligaen",
  "Other",
  "Pacific Coast League (PCL)",
  "Polish I Liga",
  "Portuguese Primeira Liga",
  "Portuguese Segunda Liga",
  "Professional",
  "Professional (MLB)",
  "Professional (MLS)",
  "Professional (NBA)",
  "Professional (NHL)",
  "Professional (PGA)",
  "Professional (WNBA)",
  "Rhythmic Gymnastics",
  "Rowing",
  "Sailing",
  "Scottish Premier League",
  "Serbia & Montenegro Prva Liga",
  "Shooting",
  "Soccer",
  "Spanish Liga",
  "Spanish Liga (Lower Divisions)",
  "SPHL - Southern",
  "Swedish Allsvenskan",
  "Swimming",
  "Swiss Super League",
  "Synchronized Swimming",
  "Table Tennis",
  "Taekwondo",
  "Tennis",
  "Tournaments & Cups",
  "Track & Field",
  "Track Cycling",
  "Trampoline Gymnastics",
  "Triathlon",
  "Truck",
  "Turkish Süper Lig",
  "UFC",
  "UFL",
  "United Soccer League Pro",
  "Volleyball",
  "Water Polo",
  "Weightlifting",
  "WHL - Western",
  "Womens Professional (LPGA)",
  "World Cup",
  "Wrestling",
  "WWE",
] as const;