export type { FilePath };
export type { FilePathUnresolved };
export type { FilePathResolved };
type FilePath = FilePathResolved | FilePathUnresolved;
type FilePathUnresolved = FilePathCommon & {
    filePathAbsoluteFilesystem: null;
} & ImportPathAbsolute;
type FilePathResolved = FilePathCommon & {
    /**
     * The file's path, absolute starting from the filesystem root.
     *
     * Example: `/home/rom/code/my-app/pages/some-page/+Page.js`
     *
     * The value is `null` for imports using path aliases. (Because Vike cannot resolve path aliases, otherwise Vike would need to re-implement https://www.npmjs.com/package/@rollup/plugin-alias.)
     */
    filePathAbsoluteFilesystem: string;
    /**
     * The file path shown to the user in logs.
     *
     * Its value is: `filePath.filePathAbsoluteUserRootDir ?? filePath.filePathAbsoluteFilesystem`.
     *
     * Note that it always shows a file path. (It never shows an import path such as `vike-react/config`.)
     */
    filePathToShowToUserResolved: string;
    /**
     * File's name (without its file path).
     *
     * Example: `+Page.js`
     */
    fileName: string;
} & (FilePathAbsoluteUserRootDir | ImportPathAbsolute);
type ImportPathAbsolute = {
    /**
     * The file's non-relative import path. It's either:
     *  - an npm package import (e.g. `vike-react/config`), or
     *  - a path alias import (e.g. `#components/Counter').
     */
    importPathAbsolute: string;
    filePathAbsoluteUserRootDir: null;
};
type FilePathAbsoluteUserRootDir = {
    /**
     * The file's path, absolute starting from the user root directory (i.e. Vite's `config.root`).
     *
     * Example: `/pages/some-page/+Page.js`.
     *
     * Its value is `null` if the file is outside of the user root directory (i.e. Vite's `config.root`).
     *
     */
    filePathAbsoluteUserRootDir: string;
    importPathAbsolute: string | null;
};
type FilePathCommon = {
    /**
     * The file or import path shown to the user in logs.
     *
     * Its value is: `filePath.filePathAbsoluteUserRootDir ?? filePath.importPathAbsolute`.
     *
     * Note that if `filePath.filePathAbsoluteUserRootDir` isn't defined then it shows the import path (e.g. `vike-react/config`) instead of a file path.
     */
    filePathToShowToUser: string;
    /**
     * The file's non-relative path, from Vite's perspective.
     *
     * Examples:
     *   - `/pages/+config.js`
     *   - `vike-react/config`
     *
     * We use it to generate imports in virtual modules. (Since import paths in virtual modules cannot be relative.)
     *
     * Its value is equivalent to `filePath.filePathAbsoluteUserRootDir ?? filePath.importPathAbsolute`.
     */
    filePathAbsoluteVite: string;
};
