import { IProjectPathUtil } from "./i-project-path-util";
import { IFileLoader } from "@wessberg/fileloader";
import { IPathUtil } from "@wessberg/pathutil";
import { IBuildConfig } from "../../build-config/i-build-config";
import { IOutputPath } from "../../output-path/i-output-path";
import { IGetOutputPathsForOutputOptions } from "./i-get-output-paths-for-output-options";
import { IOutputResource } from "../../resource/i-resource";
/**
 * A utility class that helps with resolving paths within the project folder
 */
export declare class ProjectPathUtil implements IProjectPathUtil {
    private readonly config;
    private readonly fileLoader;
    private readonly pathUtil;
    constructor(config: IBuildConfig, fileLoader: IFileLoader, pathUtil: IPathUtil);
    /**
     * Gets the absolute paths to something within the project root
     * @param {string} folder
     * @param {string} path
     * @returns {string}
     */
    getPathFromProjectRoot(folder: string, path: string): string;
    /**
     * Gets the (absolute) project root paths
     * @param {string} folder
     * @returns {string}
     */
    getProjectRoot(folder: string): string;
    /**
     * Finds the project root directory. The project root will be the directory that contains the configuration file
     * of the given name
     * @param {string} configName
     * @returns {string}
     */
    findProjectRoot(configName: string): Promise<string>;
    /**
     * Gets the directory for the given paths from the given root
     * @param {string} root
     * @param {string} path
     * @returns {string}
     */
    getDirectoryFromProjectRoot(root: string, path: string): string;
    /**
     * Removes whatever is given from the given paths
     * @param {string} path
     * @param {string} clear
     * @returns {string}
     */
    clearFromPath(path: string, clear: string): string;
    /**
     * Removes the source directory from the given paths
     * @param {string} root
     * @param {string} entry
     * @param {string} path
     * @returns {string}
     */
    clearBaseDirectoryFromPath(root: string, entry: string, path: string): string;
    /**
     * Adds some mark to a paths, for example a hash or a build tag
     * @param {string} path
     * @param {string} mark
     * @returns {string}
     */
    addMarkToPath(path: string, mark: string): string;
    /**
     * Gets all output paths for a specific output
     * @param {IGetOutputPathsForOutputOptions} options
     * @returns {IOutputPath}
     */
    getOutputPathsForOutput({ assets, foveaCliConfig, hash, output, root }: IGetOutputPathsForOutputOptions): IOutputPath;
    /**
     * Takes the given outputPath and retrieves an IOutputResource from it
     * @param {IOutputPath} outputPath
     * @param {string[]} generatedChunkNames
     * @returns {IOutputResource}
     */
    getOutputResourceFromOutputPath(outputPath: IOutputPath, generatedChunkNames: string[]): IOutputResource;
}
