'use client';

// Core form hooks (decomposed)
export { useAuthFormState, type UseAuthFormStateReturn } from './useAuthFormState';
export { useAuthValidation, detectChannelFromIdentifier, validateIdentifier } from './useAuthValidation';

// Complete form hook (composes the above)
export { useAuthForm, type AuthFormReturn, type UseAuthFormOptions } from './useAuthForm';

// Auto-auth from URL
export { useAutoAuth, type UseAutoAuthOptions } from './useAutoAuth';

// OAuth
export { useGithubAuth, type UseGithubAuthOptions, type UseGithubAuthReturn } from './useGithubAuth';

// 2FA hooks
export { useTwoFactor, type UseTwoFactorOptions, type UseTwoFactorReturn } from './useTwoFactor';
export {
  useTwoFactorSetup,
  type UseTwoFactorSetupOptions,
  type UseTwoFactorSetupReturn,
  type TwoFactorSetupData,
} from './useTwoFactorSetup';
export {
  useTwoFactorStatus,
  type UseTwoFactorStatusReturn,
  type TwoFactorDevice,
} from './useTwoFactorStatus';

// Auth guards and redirects
export { useAuthRedirectManager } from './useAuthRedirect';
export { useAuthGuard } from './useAuthGuard';

// Storage hooks
export { useSessionStorage } from './useSessionStorage';
export { useLocalStorage } from './useLocalStorage';
export { useBase64, encodeBase64, decodeBase64 } from './useBase64';

// Profile cache
export {
  getCachedProfile,
  setCachedProfile,
  clearProfileCache,
  hasValidCache,
  getCacheMetadata,
  type ProfileCacheOptions,
} from './useProfileCache';

// Token refresh
export { useTokenRefresh } from './useTokenRefresh';

// Account deletion
export {
  useDeleteAccount,
  type UseDeleteAccountReturn,
  type DeleteAccountResult,
} from './useDeleteAccount';
