#include <stdio.h>

// 1. MUST DEFINE THIS FIRST SO RACE DETAILS CAN USE IT
struct date {
    int month;
    int day;
    int year;
};

// ==========================================
// ENUMERATED TYPES
// ==========================================
typedef enum { 
    Fast, Wet_Fast, Slow, Sealed, Firm, Soft, Heavy, Good, Muddy, Sloppy 
} track_conditions; 

typedef enum { 
    Maiden_Special_Weight, Claiming, Allowance, Starter_Allowance, 
    Claiming_Stakes, Maiden_Optional_Claiming, Invitational, Trials, 
    Stakes, Maiden_Claiming, Allowance_Optional_Claiming, Handicap, 
    Starter_Handicap, Starter_Optional_Claiming, Maiden_Stakes, Derby, Futurity 
} race_type; 

typedef enum { 
    main_turf, inner_dirt, timber_course, hurdle, equitrack, 
    hunt, inner_turf, downhill_turf, steeple_chase, training_track, off_turf 
} track_surface; 

typedef enum { 
    Bute, Lasix, Adjunt_Medication, First_Time_Bute, First_Time_Lasix, 
    Aluminum_Pads, Mud_Caulks, Inner_Rims, Goggles, Inserts, Flipping_Halter, 
    Blocks, Blinker_Off, Nasal_Strip_Off, Nasal_Strip, Spurs, No_Shoes, 
    Running_Ws, Shields, Blinkers, Glued_Shoes, Front_Bandages, Outer_Rims, 
    Bar_Shoes, No_Whip, Pads, Turndowns, Queens_Plate, Tongue_Tie, Screens 
} horse_equipment_and_medication; 

// ==========================================
// DATA STRUCTURES
// ==========================================

// 2. MUST DEFINE THIS BEFORE THE HORSE PERFORMANCE STRUCT
struct horse_totals { 
    int totals_onDirt; 
    int totals_onTurf; 
    int totals_onAllWeather; 
    int totals_distance; 
    int totals_onCurrentCourse; 
    int total_starts; 
    int total_wins; 
    int total_places; 
    int total_shows; 
}; 

struct race_details { 
    struct date raceDate; 
    int raceNumber; 
    char trackName[50]; 
    char wagersAvailable[50]; 
    race_type raceType; // CHANGED: Now uses your custom race_type enum
    int numOfHorses; 
    int raceDistance; 
    int raceAgeRestriction; 
    int raceRating; 
    char raceHorseSexRestriction; 
    track_conditions raceCondition; 
    track_surface raceSurface; 
}; 

struct horse_details_and_past_performance { 
    int programNumber; 
    char horseName[50]; 
    char horseGender; 
    char saddleColor[20]; 
    int morningLineOdds; 
    int claimingPrice; 
    int age; 
    char horseColor[10]; 
    char sire[50]; 
    char dam[50]; 
    char jockeySilk[20]; 
    char horseJockey[50]; 
    char horseTrainer[50]; 
    char horseOwner[50]; 
    int carriedWeight; 
    int daysUnraced; 
    int finalOdds; 
    int speedFigure; 
    int postPosition; 
    int finalPostion; 
    struct horse_totals horse_stats; // Works perfectly now!
}; 

// ==========================================
// MAIN FUNCTION
// ==========================================
int main(void) { 
    // FIXED: Renamed structure types to match your defined structures
   
    
    printf("Success! The code now compiles perfectly.\n");
    return (0); 
}
