import { create } from 'zustand';
import { Race, Tip, UserPreferences } from '../types';

interface AppState {
  // Selected race for tip generation
  selectedRace: Race | null;
  setSelectedRace: (race: Race | null) => void;
  
  // Selected bet type
  selectedBetType: string;
  setSelectedBetType: (type: string) => void;
  
  // Current tip
  currentTip: Tip | null;
  setCurrentTip: (tip: Tip | null) => void;
  
  // User preferences
  preferences: UserPreferences | null;
  setPreferences: (prefs: UserPreferences) => void;
  
  // Loading states
  isLoading: boolean;
  setIsLoading: (loading: boolean) => void;
  
  // Reset
  resetTipFlow: () => void;
}

export const useAppStore = create<AppState>((set) => ({
  selectedRace: null,
  setSelectedRace: (race) => set({ selectedRace: race }),
  
  selectedBetType: 'best_bet',
  setSelectedBetType: (type) => set({ selectedBetType: type }),
  
  currentTip: null,
  setCurrentTip: (tip) => set({ currentTip: tip }),
  
  preferences: null,
  setPreferences: (prefs) => set({ preferences: prefs }),
  
  isLoading: false,
  setIsLoading: (loading) => set({ isLoading: loading }),
  
  resetTipFlow: () => set({
    selectedRace: null,
    selectedBetType: 'best_bet',
    currentTip: null,
  }),
}));
