import { CompilerType, CSSType, FrameworkType, NpmType } from '@tarojs/binding'; import Creator from './creator'; import type { ITemplates } from './fetchTemplate'; export interface IProjectConf { projectName: string; projectDir: string; npm: NpmType; templateSource: string; clone?: boolean; template: string; description?: string; typescript?: boolean; css: CSSType; date?: string; src?: string; sourceRoot?: string; env?: string; autoInstall?: boolean; hideDefaultTemplate?: boolean; framework: FrameworkType; compiler?: CompilerType; } type CustomPartial = Omit & Partial>; type IProjectConfOptions = CustomPartial; interface AskMethods { (conf: IProjectConfOptions, prompts: Record[], choices?: ITemplates[]): void; } export default class Project extends Creator { rootPath: string; conf: IProjectConfOptions; constructor(options: IProjectConfOptions); init(): void; create(): Promise; ask(): Promise<{ projectName: string; projectDir: string; npm: NpmType; templateSource: string; clone?: boolean | undefined; template: string; description?: string | undefined; typescript?: boolean | undefined; css: CSSType; date?: string | undefined; src?: string | undefined; sourceRoot?: string | undefined; env?: string | undefined; autoInstall?: boolean | undefined; hideDefaultTemplate?: boolean | undefined; framework: FrameworkType; compiler?: CompilerType | undefined; }>; askProjectName: AskMethods; askDescription: AskMethods; askTypescript: AskMethods; askCSS: AskMethods; askCompiler: AskMethods; askFramework: AskMethods; askTemplateSource: AskMethods; askTemplate: AskMethods; askNpm: AskMethods; fetchTemplates(answers: IProjectConf): Promise; write(cb?: () => void): void; } export {};