import { create } from "zustand";

interface AuthUser {
  id: string;
  steamId: string;
  name: string;
  avatar: string;
  balance: number;
  coins: number;
  role: "user" | "admin";
}

interface AuthState {
  user: AuthUser | null;
  login: () => void;
  logout: () => void;
  topUpBalance: (gel: number) => void;
  addCoins: (wgc: number) => void;
}

const mockUser: AuthUser = {
  id: "me",
  steamId: "STEAM_1:0:12345678",
  name: "v1p3r",
  avatar: "https://api.dicebear.com/9.x/bottts-neutral/svg?seed=me",
  balance: 42.5,
  coins: 1250,
  role: "admin",
};

export const useAuthStore = create<AuthState>((set) => ({
  user: mockUser, // start signed in for demo
  login: () => set({ user: mockUser }),
  logout: () => set({ user: null }),
  topUpBalance: (gel) =>
    set((s) => (s.user ? { user: { ...s.user, balance: +(s.user.balance + gel).toFixed(2) } } : s)),
  addCoins: (wgc) =>
    set((s) => (s.user ? { user: { ...s.user, coins: s.user.coins + wgc } } : s)),
}));
