import { Router, Route, Options, DefaultDependencies } from './types/router';
import { RouteNode } from './lib/route-node';
/**
 * Creates a new router instance with the specified routes, options, and dependencies.
 *
 * The router is built using a functional composition pattern where each enhancer
 * adds specific functionality to the base router object.
 *
 * @template Dependencies - Type of dependencies to inject into the router
 * @param routes - Array of route definitions or a RouteNode instance. Defaults to empty array.
 * @param options - Configuration options for the router behavior. Defaults to empty object.
 * @param dependencies - Dependencies to inject into route handlers and middleware. Defaults to empty object.
 * @returns A fully configured router instance
 *
 * @example
 * ```typescript
 * // Basic router
 * const router = createRouter([
 *   { name: 'home', path: '/' },
 *   { name: 'user', path: '/users/:id' }
 * ])
 *
 * // Router with options
 * const router = createRouter(routes, {
 *   defaultRoute: 'home',
 *   strictTrailingSlash: false
 * })
 *
 * // Router with dependencies
 * const router = createRouter(routes, options, {
 *   api: new ApiService(),
 *   auth: new AuthService()
 * })
 * ```
 */
declare const createRouter: <Dependencies extends DefaultDependencies = DefaultDependencies>(routes?: RouteNode | Route<Dependencies>[], options?: Partial<Options>, dependencies?: Dependencies) => Router<Dependencies>;
export default createRouter;
