import { FileTemplateData } from './file-template-data.js';
export declare enum OS {
    Unknown = "unknown",
    Mac = "mac",
    Windows = "windows",
    Linux = "linux"
}
export declare enum InstallType {
    Template = 0,
    Copy = 1
}
export interface InstallFileDescriptor {
    type: InstallType;
    path: string;
    outputPath: string;
}
/**
 * Reads in a file template and returns the resulting file contents.
 * @param {string} filePath The path the file template.
 * @param {Record<string, never>} values The template values.
 */
export declare function templateFile<T extends FileTemplateData>(filePath: string, values: T, templateOptions?: any): Promise<string>;
/**
 * Installs files to the destination directory.
 * @param files
 * @param dest
 * @param templateValues
 */
export declare function installFiles<T extends FileTemplateData>(files: InstallFileDescriptor[], templateData?: T, templateOptions?: any): Promise<void>;
/**
 * Forms an absolute path from either an absolute or relative path.
 * @param path The path to convert.
 * @param cwd The root directory to start in to form an absolute path from relative.
 */
export declare function absolutify(path: string, cwd: string): string;
/** Executes a terminal command. */
export declare function runCommand(command: string, cwd?: string, live?: boolean): Promise<string>;
/**
 * Executes an async function with a progress display.
 * @param title The title of the task to display in the console.
 * @param fn The async task function execute.
 * @param quiet Whether to execute the task with output status messaging.
 */
export declare function runTask<T>(title: string, fn: () => Promise<T>, quiet?: boolean): Promise<T>;
/**
 * Formats hrtime.
 * @param hrtime
 */
export declare function formatHrTime(hrtime: any): string;
/**
 * Determines if there are any glob characters within the provided string.
 */
export declare function isGlob(str: string): boolean;
