import { Path, URLParamsEncodingType } from 'path-parser'; import { IOptions as QueryParamsOptions } from 'search-params'; export interface RouteDefinition { name: string; path: string; [key: string]: any; } export declare type Route = RouteNode | RouteDefinition; export declare type Callback = (...args: any[]) => void; export declare type TrailingSlashMode = 'default' | 'never' | 'always'; export declare type QueryParamsMode = 'default' | 'strict' | 'loose'; export interface BuildOptions { trailingSlashMode?: TrailingSlashMode; queryParamsMode?: QueryParamsMode; queryParams?: QueryParamsOptions; urlParamsEncoding?: URLParamsEncodingType; } export interface MatchOptions { caseSensitive?: boolean; trailingSlashMode?: TrailingSlashMode; queryParamsMode?: QueryParamsMode; queryParams?: QueryParamsOptions; strictTrailingSlash?: boolean; strongMatching?: boolean; urlParamsEncoding?: URLParamsEncodingType; } export { QueryParamsOptions }; export interface MatchResponse { segments: RouteNode[]; params: Record; } export interface RouteNodeStateMeta { [routeName: string]: { [routeParams: string]: 'query' | 'url'; }; } export interface RouteNodeState { name: string; params: Record; meta: RouteNodeStateMeta; } export interface RouteNodeOptions { finalSort?: boolean; onAdd?: Callback; parent?: RouteNode; sort?: boolean; } export declare class RouteNode { name: string; absolute: boolean; path: string; parser: Path | null; children: RouteNode[]; parent?: RouteNode; constructor(name?: string, path?: string, childRoutes?: Route[], options?: RouteNodeOptions); getParentSegments(segments?: RouteNode[]): RouteNode[]; setParent(parent: RouteNode): void; setPath(path?: string): void; add(route: Route | Route[], cb?: Callback, sort?: boolean): this; addNode(name: string, path: string): this; getPath(routeName: string): string | null; getNonAbsoluteChildren(): RouteNode[]; sortChildren(): void; sortDescendants(): void; buildPath(routeName: string, params?: Record, options?: BuildOptions): string; buildState(name: string, params?: Record): RouteNodeState | null; matchPath(path: string, options?: MatchOptions): RouteNodeState | null; private addRouteNode; private checkParents; private hasParentsParams; private findAbsoluteChildren; private findSlashChild; private getSegmentsByName; private getSegmentsMatchingPath; }