import { type RouteObject } from 'react-router-dom';
import type { RouteConfig, ContextRouteExtensions } from './types';
/**
 * SmartStack core routes - these are locked and cannot be overridden
 */
export declare const smartstackRoutes: RouteObject[];
/**
 * Analyzes route children to find path prefixes at every hierarchy level
 * (application, module, section, resource) that don't have their own route,
 * and returns redirect descriptors.
 *
 * For routes like 'rh/time/dashboard' and 'rh/time/entries', this generates
 * redirects for both 'rh' → 'time/dashboard' AND 'rh/time' → 'dashboard',
 * unless those paths already have their own routes defined.
 *
 * @example
 * // Input: ['rh/time/dashboard', 'rh/time/entries', 'rh/projects']
 * // Output: [{ prefix: 'rh', redirectTo: 'time/dashboard' },
 * //          { prefix: 'rh/time', redirectTo: 'dashboard' }]
 */
export declare function computeApplicationRedirects(existingChildren: RouteObject[]): Array<{
    prefix: string;
    redirectTo: string;
}>;
/**
 * Merge client routes with SmartStack routes
 *
 * Client routes have priority for non-locked paths.
 * Locked paths (SmartStack contexts) cannot be overridden,
 * but can be extended via contextRoutes.
 *
 * @param clientRoutes - Routes defined by the client (non-locked paths only)
 * @param contextRoutes - Routes to inject as children of locked SmartStack contexts
 * @param ssRoutes - SmartStack routes (optional, defaults to smartstackRoutes)
 * @returns Merged routes array for react-router
 *
 * @example
 * ```tsx
 * import { mergeRoutes } from '@atlashub/smartstack';
 *
 * const routes = mergeRoutes(
 *   // Free routes (outside locked contexts)
 *   [
 *     { path: '/about', element: <AboutPage /> },
 *   ],
 *   // Routes injected into SmartStack contexts
 *   {
 *     business: [
 *       { path: 'ressourceshumaines/timemanagement/dashboard', element: <TimeDashboard /> },
 *       { path: 'ressourceshumaines/timemanagement/list', element: <TimeList /> },
 *     ],
 *   }
 * );
 *
 * function App() {
 *   return (
 *     <SmartStackProvider config={{ apiUrl: 'http://localhost:5142' }}>
 *       <BrowserRouter>
 *         <Routes>
 *           {routes.map((route, index) => (
 *             <Route key={index} {...route} />
 *           ))}
 *         </Routes>
 *       </BrowserRouter>
 *     </SmartStackProvider>
 *   );
 * }
 * ```
 */
export declare function mergeRoutes(clientRoutes: RouteConfig[], contextRoutes?: ContextRouteExtensions, ssRoutes?: RouteObject[]): RouteObject[];
//# sourceMappingURL=smartstackRoutes.d.ts.map