///
import { AbsoluteFsPath, FileSystem, PathSegment, PathString } from './types';
export declare function getFileSystem(): FileSystem;
export declare function setFileSystem(fileSystem: FileSystem): void;
/**
* Convert the path `path` to an `AbsoluteFsPath`, throwing an error if it's not an absolute path.
*/
export declare function absoluteFrom(path: string): AbsoluteFsPath;
/**
* Extract an `AbsoluteFsPath` from a `ts.SourceFile`-like object.
*/
export declare function absoluteFromSourceFile(sf: {
fileName: string;
}): AbsoluteFsPath;
/**
* Convert the path `path` to a `PathSegment`, throwing an error if it's not a relative path.
*/
export declare function relativeFrom(path: string): PathSegment;
/**
* Static access to `dirname`.
*/
export declare function dirname(file: T): T;
/**
* Static access to `join`.
*/
export declare function join(basePath: T, ...paths: string[]): T;
/**
* Static access to `resolve`s.
*/
export declare function resolve(basePath: string, ...paths: string[]): AbsoluteFsPath;
/** Returns true when the path provided is the root path. */
export declare function isRoot(path: AbsoluteFsPath): boolean;
/**
* Static access to `isRooted`.
*/
export declare function isRooted(path: string): boolean;
/**
* Static access to `relative`.
*/
export declare function relative(from: T, to: T): PathSegment | AbsoluteFsPath;
/**
* Static access to `basename`.
*/
export declare function basename(filePath: PathString, extension?: string): PathSegment;
/**
* Returns true if the given path is locally relative.
*
* This is used to work out if the given path is relative (i.e. not absolute) but also is not
* escaping the current directory.
*/
export declare function isLocalRelativePath(relativePath: string): boolean;
/**
* Converts a path to a form suitable for use as a relative module import specifier.
*
* In other words it adds the `./` to the path if it is locally relative.
*/
export declare function toRelativeImport(relativePath: PathSegment | AbsoluteFsPath): PathSegment | AbsoluteFsPath;