interface GitInfo { provider: "github" | "gitlab" | "bitbucket" | "sourcehut"; repo: string; subdir: string; ref: string; } interface TemplateInfo { name: string; tar: string; version?: string; subdir?: string; url?: string; defaultDir?: string; headers?: Record; source?: never; dir?: never; [key: string]: any; } declare type TemplateProvider = (input: string, options: { auth?: string; }) => TemplateInfo | Promise | null; interface DownloadTemplateOptions { provider?: string; force?: boolean; forceClean?: boolean; offline?: boolean; preferOffline?: boolean; providers?: Record; dir?: string; registry?: false | string; cwd?: string; auth?: string; } declare type DownloadTemplateResult = Omit & { dir: string; source: string; }; declare function downloadTemplate(input: string, options?: DownloadTemplateOptions): Promise; declare const registryProvider: (registryEndpoint?: string) => TemplateProvider; declare function startShell(cwd: string): void; export { DownloadTemplateOptions, DownloadTemplateResult, GitInfo, TemplateInfo, TemplateProvider, downloadTemplate, registryProvider, startShell };