import type { NavigationRoute as CoreNavigationRoute } from '@donotdev/core';
import type { JSX } from 'react';
import type { ReactNode } from 'react';
/**
 * Route information interface for discovered routes
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface RouteInfo {
    /** Route path (e.g., '/dashboard', '/demo/new') */
    path: string;
    /** Human-readable label for navigation */
    label: string;
    /** Optional icon identifier or component for navigation */
    icon?: string | ReactNode;
    /** Component reference as string (lazy import expression for Vite) */
    component: string;
    /** Absolute import path (for Next.js and monorepo support) */
    importPath: string;
    /** Export name for named exports (e.g., 'HomePage', 'AboutPage') */
    exportName?: string;
    /** Authentication configuration for the route */
    auth?: boolean | Record<string, unknown>;
    /** Additional route metadata */
    meta?: unknown;
}
/**
 * Group of related routes organized by entity/domain
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface RouteGroup {
    /** Group label for navigation sections */
    label: string;
    /** Optional icon for the group */
    icon?: JSX.Element;
    /** Routes belonging to this group */
    routes: RouteInfo[];
}
/**
 * Navigation route - re-exported from @donotdev/core (Item 90)
 * Core's version is the single source of truth with richer fields.
 */
export type NavigationRoute = CoreNavigationRoute;
/**
 * Hook that provides auto-discovered routes from virtual module system
 *
 * This hook provides raw route discovery data from the virtual module system
 * without authentication filtering. It serves as the foundation for other
 * route-related hooks.
 *
 * Performance:
 * - Results are memoized to prevent unnecessary re-computation
 * - No authentication dependencies to avoid re-renders
 * - Integrates with navigation store for enhanced caching
 *
 * @returns Array of route groups organized by entity/domain
 *
 * @example
 * ```tsx
 * function RouteDebugger() {
 *   const allRoutes = useRouteDiscovery();
 *   return <div>Total routes: {allRoutes.flatMap(g => g.routes).length}</div>;
 * }
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function useRouteDiscovery(): RouteGroup[];
/**
 * Hook that provides routes filtered by user access permissions
 *
 * Enhanced version that integrates with navigation store for optimal performance
 * and caching. Uses store-level filtering with auth state caching to minimize
 * re-computation across multiple component uses.
 *
 * @returns Array of route groups filtered by user permissions
 *
 * @example
 * ```tsx
 * function AdminRoutesList() {
 *   const accessibleGroups = useAccessibleRoutes();
 *   return (
 *     <div>
 *       {accessibleGroups.map(group => (
 *         <RouteGroup key={group.label} group={group} />
 *       ))}
 *     </div>
 *   );
 * }
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function useAccessibleRoutes(): RouteGroup[];
/**
 * Hook for components that need auth-filtered navigation routes (Store-Enhanced)
 *
 * Provides auth-filtered navigation routes with store integration for optimal
 * performance. This is the recommended hook for UI components that need
 * navigation data with authentication filtering.
 *
 * Features:
 * - Store-level caching by auth state
 * - Automatic updates when auth changes
 * - Consistent filtering logic with AuthGuard
 * - Optimized for multiple component usage
 *
 * @returns Array of navigation routes filtered by user permissions
 *
 * @example
 * ```tsx
 * function Sidebar() {
 *   const routes = useAccessibleNavigationRoutes();
 *   return <SidebarMenu routes={routes} />;
 * }
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function useAccessibleNavigationRoutes(): NavigationRoute[];
/**
 * Hook that returns all discovered routes as a flat list
 *
 * Provides all route information without grouping or filtering.
 * Useful for route analytics, debugging, or admin interfaces.
 *
 * @returns Flat array of all route information
 *
 * @example
 * ```tsx
 * function RouteAnalytics() {
 *   const allRoutes = useAllRoutes();
 *   return <div>Total discovered routes: {allRoutes.length}</div>;
 * }
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function useAllRoutes(): RouteInfo[];
/**
 * Hook that returns route manifest information from virtual module
 *
 * Provides metadata about the route discovery process including statistics
 * and build-time information. Useful for debugging and development tools.
 *
 * @returns Route manifest with statistics and metadata, or null if unavailable
 *
 * @example
 * ```tsx
 * function RouteManifestDisplay() {
 *   const manifest = useRouteManifest();
 *   if (!manifest) return <div>No manifest available</div>;
 *
 *   return (
 *     <div>
 *       <p>Total routes: {manifest.totalRoutes}</p>
 *       <p>Auth required: {manifest.authRequired}</p>
 *       <p>Generated: {manifest.generatedAt}</p>
 *     </div>
 *   );
 * }
 * ```
 *
 * @version 0.0.1
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function useRouteManifest(): {
    totalRoutes: number;
    authRequired: number;
    publicRoutes: number;
    source: import("@donotdev/types").RouteSource;
    generatedAt: string;
} | null;
//# sourceMappingURL=useRouteDiscovery.d.ts.map