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