export declare function norm(path: string): string;
export declare function globPrefixMatch(path: string, pattern: string): boolean;
export declare function resolvePath(path: string, cwd: string): string;
export declare function posixNormpath(path: string): string;
/**
 * The absolute spelling of a typed path whose dots a walk proves.
 *
 * The kernel resolves `.` and `..` against the directory they sit in, so
 * every component in front of one has to be a directory, while the textual
 * simplification a virtual path gets lets `nope/../f` reach `f` past a
 * missing `nope`. This keeps the spelling a walk needs. A trailing slash is
 * kept too, since `x/` resolves as `x/.` and so names a directory. Null when
 * neither follows a named component: a leading climb (`../x`) only walks up
 * from `base`, a directory already, so the common `cd ..` and `cat ../f`
 * cost nothing. Mirrors Python's dotted_spelling.
 */
/**
 * Whether a name's last component, before any trailing slash, is `.` or
 * `..`: then a trailing slash says nothing on its own, and the walk through
 * the dot answers first (`missing/./` is ENOENT, `f/./` ENOTDIR, where
 * `missing/` and `f/` are EISDIR).
 */
export declare function endsAtDot(spelling: string): boolean;
export declare function dottedSpelling(word: string, base?: string): string | null;
/**
 * The directories a walk of `dotted` has to find, in walk order.
 *
 * Whatever stands in front of a `.` or `..` is where it resolves, so it has
 * to be a directory; each is spelled as the walk has simplified it so far,
 * and the root, always one, is left out. Mirrors Python's dot_prefixes.
 */
export declare function dotPrefixes(dotted: string, follow?: ((path: string) => string) | null): string[];
/**
 * The names a walk of `dotted` looks up in front of a dot, in walk order,
 * each as the walk reached it and before a link there is followed: the
 * simplified path no longer names them, so a hide has to answer for them
 * here. A caller that stops at one never follows it. Mirrors Python's
 * dot_lookups.
 */
export declare function dotLookups(dotted: string, follow?: ((path: string) => string) | null): Generator<string>;
/**
 * The names a walk of `dotted` enters, each with its spelling in `raw`.
 *
 * What `mkdir -p` creates on the way and names when it cannot: GNU makes each
 * component as it reaches it, so `mkdir -p nope/../m` leaves `nope` behind as
 * well as `m`, and a plain file in the way is quoted as the operand spells it
 * (`'a.txt'`, not the absolute path). Only the typed components are entered:
 * the directory a relative word starts from is there already. Mirrors
 * Python's walk_nodes.
 */
export declare function walkNodes(dotted: string, raw: string, follow?: ((path: string) => string) | null): [string, string][];
export declare function expandTilde(word: string, home: string | null): string;
export declare function respellRaw(paths: string[], virtual: string, raw: string): string[];
export declare function dropTrailingSegments(path: string, count: number): string;
export declare function respellOne(path: string, virtual: string, raw: string): string;
export declare function parent(path: string): string;
export declare function ancestors(path: string): string[];
export declare const MAX_SYMLINK_HOPS = 40;
export interface LinkFollow {
    readonly kind: 'follow';
    readonly path: string;
}
export interface LinkEnter {
    readonly kind: 'enter';
    readonly path: string;
    readonly nextIsParent: boolean;
}
export interface LinkLanding {
    readonly kind: 'landing';
    readonly path: string;
}
export interface LinkHopLimit {
    readonly kind: 'hop_limit';
}
export type LinkStep = LinkFollow | LinkEnter | LinkLanding | LinkHopLimit;
export declare class CycleError extends Error {
    readonly path: string;
    readonly code = "ELOOP";
    readonly virtualPath: string;
    constructor(path: string);
}
export declare function resolveSymlinks(path: string, links: ReadonlyMap<string, string>): string;
export declare function traceSymlinks(path: string, links: ReadonlyMap<string, string>): LinkStep[];
export declare function gnuBasename(path: string, suffix?: string): string;
export declare function gnuDirname(path: string): string;
//# sourceMappingURL=path.d.ts.map