import { Router } from '../types/router';
/**
 * Enhances a router with lifecycle management capabilities.
 *
 * This module provides functionality for:
 * - Starting the router with initial state
 * - Stopping the router and cleaning up
 * - Managing router started state
 * - Handling initial navigation and default routes
 * - Error handling for startup scenarios
 *
 * The router lifecycle includes:
 * 1. Start: Initialize router with a path, state, or default route
 * 2. Running: Router is active and handling navigation
 * 3. Stop: Router is stopped and state is cleared
 *
 * @template Dependencies - Type of dependencies available in the router
 * @param router - Router instance to enhance with lifecycle capabilities
 * @returns Enhanced router with start/stop functionality
 *
 * @example
 * ```typescript
 * // Start with current browser path
 * router.start('/users/123', (err, state) => {
 *   if (err) {
 *     console.error('Failed to start router:', err)
 *   } else {
 *     console.log('Router started with state:', state)
 *   }
 * })
 *
 * // Start with state object
 * router.start({
 *   name: 'user',
 *   params: { id: '123' },
 *   path: '/users/123'
 * })
 *
 * // Stop the router
 * router.stop()
 * ```
 */
export default function withRouterLifecycle<Dependencies>(router: Router<Dependencies>): Router<Dependencies>;
