import { create } from 'zustand';
import { devtools, persist } from 'zustand/middleware';

/**
 * authStore — JWT session + user profile
 */
interface User {
  id: string;
  name: string;
  email: string;
  role: 'SALES_BROKER' | 'SALES_DIRECTOR' | 'ADMIN' | 'SUPERADMIN' | string;
  avatarUrl?: string;
}

interface AuthStore {
  user: User | null;
  token: string | null;
  isAuthenticated: boolean;
  // Actions
  setSession: (user: User, token: string) => void;
  clearSession: () => void;
}

export const useAuthStore = create<AuthStore>()(
  devtools(
    persist(
      (set) => ({
        user: null,
        token: null,
        isAuthenticated: false,

        setSession: (user, token) =>
          set({ user, token, isAuthenticated: true }, false, 'auth/setSession'),

        clearSession: () =>
          set({ user: null, token: null, isAuthenticated: false }, false, 'auth/clearSession'),
      }),
      {
        name: 'velocity-auth',
        partialize: (state) => ({
          token: state.token,
          user: state.user,
          isAuthenticated: Boolean(state.token && state.user),
        }),
      }
    ),
    { name: 'AuthStore' }
  )
);
