import { ReactNode } from 'react'; export interface RequireAuthProps { /** Content to render when authenticated */ children: ReactNode; /** Path to redirect to when not authenticated (default: /auth/login) */ loginPath?: string; /** Custom loading component */ loadingComponent?: ReactNode; /** Custom unauthorized component (shown when lacking permissions) */ unauthorizedComponent?: ReactNode; /** Required permission(s) to access this route */ permissions?: string | string[]; /** Whether all permissions are required (true) or just one (false) */ requireAllPermissions?: boolean; /** Callback when authentication check fails */ onAuthFail?: () => void; /** Custom redirect function (for React Router integration) */ redirect?: (path: string) => ReactNode; } /** * RequireAuth Component * * Route guard component that protects routes from unauthenticated access. * Supports permission-based access control and customizable fallback UI. * * Features: * - Authentication check * - Permission-based authorization * - Loading state handling * - Customizable redirect * - Flexible fallback components * * @example Basic usage (with Navigate from react-router) * ```tsx * import { Navigate } from 'react-router'; * * }> * * * ``` * * @example With permissions * ```tsx * } * unauthorizedComponent={} * > * * * ``` */ export declare function RequireAuth({ children, loginPath, loadingComponent, unauthorizedComponent, permissions, requireAllPermissions, onAuthFail, redirect, }: RequireAuthProps): import("react/jsx-runtime").JSX.Element; /** * RequireGuest Component * * Opposite of RequireAuth - only allows unauthenticated users. * Useful for login/register pages that should redirect authenticated users away. * * @example * ```tsx * }> * * * ``` */ export interface RequireGuestProps { children: ReactNode; /** Path to redirect authenticated users to */ redirectTo?: string; /** Custom redirect function */ redirect?: (path: string) => ReactNode; } export declare function RequireGuest({ children, redirectTo, redirect }: RequireGuestProps): import("react/jsx-runtime").JSX.Element | null; //# sourceMappingURL=RequireAuth.d.ts.map