'use client'

import { createContext, useContext, useState, ReactNode } from 'react'

interface AuthContextType {
  isAuthManagerInitialized: boolean
  setAuthManagerInitialized: (value: boolean) => void
  isUserAuthWatcherInitialized: boolean
  setUserAuthWatcherInitialized: (value: boolean) => void
}

const AuthContext = createContext<AuthContextType | undefined>(undefined)

export function AuthProvider({ children }: { children: ReactNode }) {
  const [isAuthManagerInitialized, setAuthManagerInitialized] = useState(false)
  const [isUserAuthWatcherInitialized, setUserAuthWatcherInitialized] =
    useState(false)

  return (
    <AuthContext.Provider
      value={{
        isAuthManagerInitialized,
        setAuthManagerInitialized,
        isUserAuthWatcherInitialized,
        setUserAuthWatcherInitialized,
      }}
    >
      {children}
    </AuthContext.Provider>
  )
}

export function useAuth() {
  const context = useContext(AuthContext)
  if (context === undefined) {
    throw new Error('useAuth must be used within an AuthProvider')
  }
  return context
}
