/// <reference types="node" />
import type { ParsedUrlQuery } from 'querystring';
import type { UrlObject } from 'url';
import type { TRouteBranch } from '../types';
declare enum MATCH_TYPE {
    STATIC = "static",
    DYNAMIC = "dynamic",
    MATCHALL = "match-all"
}
declare type TParsedPathParts = {
    additionalQuery: ParsedUrlQuery;
    parsedPathParts: string[];
    firstMatchType: MATCH_TYPE;
};
/**
 * Recursively parse paths to identify the matching file path, and extract the parameters
 *
 * We must do this taking care of the priorities:
 * 1. static match among the current route branch children
 * 2. static match among among the descendants of a child that is path-ignored
 * 3. dynamic match among the current route branch children
 * 4. dynamic match among among the descendants of a child that is path-ignored
 * 5. match all match among the current route branch children
 * 6. match all match among among the descendants of a child that is path-ignored
 */
export declare const parsePathParts: ({ locale, pathParts, routeBranch, }: {
    locale: string;
    /**
     * The path parts to parse using the routeBranch children
     * A path part can be a bare name or a dynamic value
     */
    pathParts?: string[] | undefined;
    routeBranch: TRouteBranch;
}) => TParsedPathParts | undefined;
/**
 * Parse a translated url to get the corresponding file url (UrlObject)
 *
 * Ex: `urlToFileUrl('/fr/mon/url/de/france', 'fr')` => `{ pathname: '/my/url/from/[country], query: { country: 'france' } }`
 *
 * @param url The url to parse: can be a string, an URL or an UrlObject
 * @param locale (optional) The locale corresponding to the url translation.
 * If omitted, urlToFileUrl will look for the locale in the first path part.
 * If it does not match a locale, urlToFileUrl will use the default locale.
 *
 * @returns The file path based, Next.js format, url in UrlObject format
 * if the url successfully matched a file path, and undefined otherwise
 */
export declare const urlToFileUrl: (url: string | URL | UrlObject, locale?: string) => {
    pathname: string;
    query: import("querystring").ParsedUrlQueryInput;
    hash: string | null | undefined;
} | {
    hash?: string | undefined;
    pathname: string;
    query: {
        [x: string]: string | number | boolean | string[] | readonly string[] | readonly number[] | readonly boolean[] | null | undefined;
    };
} | undefined;
export {};
