import { type RseConfig } from "@reliverse/cfg";
/**
 * Defines the options for downloading a project from a remote repository.
 */
interface DownloadRepoOptions {
    repoURL: string;
    projectName: string;
    isDev: boolean;
    cwd: string;
    githubToken?: string;
    install?: boolean;
    provider?: "github" | "gitlab" | "bitbucket" | "sourcehut";
    subdirectory?: string;
    force?: boolean;
    forceClean?: boolean;
    preserveGit?: boolean;
    config?: RseConfig | undefined;
    returnTime?: boolean;
    returnSize?: boolean;
    returnConcurrency?: boolean;
    fastCloneSource?: string;
    isTemplateDownload: boolean;
    cache?: boolean;
}
/**
 * Represents the result of a successful download operation.
 */
export interface DownloadResult {
    source: string;
    dir: string;
    time?: number;
    size?: number;
    sizePretty?: string;
    concurrency?: number;
}
/**
 * Downloads a repository.
 * Integrates an optional tarball cache branch if `cache` is enabled and preserveGit is false.
 */
export declare function downloadRepo({ repoURL, projectName, isDev, cwd, githubToken, install, provider, subdirectory, force, forceClean, preserveGit, config, returnTime, returnSize, returnConcurrency, fastCloneSource, isTemplateDownload, cache, }: DownloadRepoOptions): Promise<DownloadResult>;
export {};
