import { type Command as CommanderCommand, type CommandOptions as CommanderCommandOptions, type ParseOptions } from "commander"; import { type Colors as WebpackColors, type Compiler, type Configuration, type MultiCompiler, type MultiConfiguration, type MultiStats, type Stats, type WebpackError, default as webpack } from "webpack"; type RecordAny = Record; type PackageManager = "pnpm" | "yarn" | "npm"; type LogHandler = (value: any) => void; interface Logger { error: LogHandler; warn: LogHandler; info: LogHandler; success: LogHandler; log: LogHandler; raw: LogHandler; } interface Colors extends WebpackColors { isColorSupported: boolean; } type Context = RecordAny; interface Command extends CommanderCommand { pkg?: string; forHelp?: boolean; context: Context; } interface CommandOptions extends CommanderCommandOptions { rawName: string; name: string; alias: string | string[]; description?: string; usage?: string; dependencies?: string[]; pkg?: string; preload?: () => Promise; options?: CommandOption[] | ((command: Command & { context: C; }) => CommandOption[]) | ((command: Command & { context: C; }) => Promise); action: A extends void ? (options: O, cmd: Command & { context: C; }) => void | Promise : (args: A, options: O, cmd: Command & { context: C; }) => void | Promise; } type CommanderArgs = Record; type BasicPrimitive = string | boolean | number; type EnumValue = string | number | boolean | EnumValueObject | EnumValue[] | null; interface EnumValueObject { [key: string]: EnumValue; } interface ArgumentConfig { description?: string; negatedDescription?: string; path?: string; multiple?: boolean; type: "enum" | "string" | "path" | "number" | "boolean" | "RegExp" | "reset"; values?: EnumValue[]; } interface CommandOption { name: string; alias?: string; type?: (value: string, previous: Record) => Record; configs?: ArgumentConfig[]; negative?: boolean; multiple?: boolean; valueName?: string; description?: string; describe?: string; negatedDescription?: string; defaultValue?: string; hidden?: boolean; negativeHidden?: boolean; } interface Env { WEBPACK_BUNDLE?: boolean; WEBPACK_BUILD?: boolean; WEBPACK_WATCH?: boolean; WEBPACK_SERVE?: boolean; } interface Argv extends RecordAny { env: Env; } interface ConfigurationsAndPaths { options: Configuration | MultiConfiguration; path: WeakMap; } declare interface WebpackCallback { (err: null | Error, result?: Stats): void; (err: null | Error, result?: MultiStats): void; } type Schema = Parameters<(typeof webpack)["cli"]["getArguments"]>[0]; interface KnownOptions { config?: string[]; argv?: Argv; env?: Env; configNodeEnv?: string; watchOptionsStdin?: boolean; watch?: boolean; failOnWarnings?: boolean; isWatchingLikeCommand?: boolean; progress?: boolean | "profile"; analyze?: boolean; json?: boolean; entry?: string | string[]; merge?: boolean; configName?: string[]; disableInterpret?: boolean; extends?: string[]; webpack: typeof webpack; } type Options = KnownOptions & RecordAny; declare class WebpackCLI { #private; colors: Colors; logger: Logger; program: Command; constructor(); isPromise(value: Promise): value is Promise; isFunction(value: unknown): value is CallableFunction; capitalizeFirstLetter(str: string): string; toKebabCase(str: string): string; getLogger(): Logger; getDefaultPackageManager(): Promise; isPackageInstalled(packageName: string): Promise; installPackage(packageName: string, options?: { preMessage?: () => void; }): Promise; makeCommand(options: CommandOptions): Promise; makeOption(command: Command, option: CommandOption): void; isMultipleConfiguration(config: Configuration | MultiConfiguration): config is MultiConfiguration; isMultipleCompiler(compiler: Compiler | MultiCompiler): compiler is MultiCompiler; isValidationError(error: unknown): error is WebpackError; schemaToOptions(webpackMod: typeof webpack, schema?: Schema, additionalOptions?: CommandOption[], override?: Partial): CommandOption[]; loadWebpack(): Promise; loadWebpackDevServer(): Promise; run(args: readonly string[], parseOptions: ParseOptions): Promise; loadConfig(options: Options): Promise; createCompiler(options: Options, callback?: WebpackCallback): Promise; runWebpack(options: Options, isWatchCommand: boolean): Promise; } export default WebpackCLI;