import * as webpack from 'webpack';
import { TerserPluginOptions } from 'terser-webpack-plugin';
import { Configuration, Output, Options, Resolve, Plugin, RuleSetRule, Module } from 'webpack';
import { HotModule } from './plugins/HotModule';
import { PluginHandle } from './plugins/PluginHandle';
import { HashedModuleIds } from './plugins/HashedModuleIds';
import { Html as HtmlPlugin } from './plugins/Html';
import { Html as HtmlRule } from './rules/Html';
import { Clean } from './plugins/Clean';
import { MiniCss } from './plugins/MiniCss';
import WebpackDevServer from 'webpack-dev-server';
import { RuleHandle } from './rules/RuleHandle';
import { Tsx } from './rules/Tsx';
import { Jsx } from './rules/Jsx';
import { Css } from './rules/Css';
import { Scss } from './rules/Scss';
import { Less } from './rules/Less';
import { LessAntd } from './rules/LessAntd';
import { Asset } from './rules/Asset';
import { Gzip } from './plugins/Gzip';
import { Copy } from './plugins/Copy';
import { Define } from './plugins/Define';
import { CssNodeModules } from './rules/CssNodeModules';
import { Json5 } from './rules/Json5';
import { ProgressBar } from './plugins/ProgressBar';
import { Preload } from './plugins/Preload';
import { ReactRefresh } from './plugins/ReactRefresh';
import { ErrorOverlay } from './plugins/ErrorOverlay';
import { AntdDayJs } from './plugins/AntdDayJs';
export declare class WebpackGenius {
    readonly webpack: typeof webpack;
    private readonly config;
    private readonly plugins;
    private readonly rules;
    private readonly environment;
    private readonly port;
    private uglifyConfig?;
    constructor(environment: string, port: number);
    getConfig(): Configuration;
    hasPackage(name: string): boolean;
    getPackageField(name: string): any;
    getPort(): number;
    getEnvironment(): string;
    isHot(): boolean;
    isBuild(): boolean;
    switchChunkHash(hashNumber?: number): string;
    switchContentHash(hashNumber?: number): string;
    getUglifyConfig(): TerserPluginOptions | undefined;
    setUglifyConfig(config: TerserPluginOptions): this;
    target(target: Configuration['target']): this;
    devtool(devtool: Options.Devtool | ((webpack: this) => Options.Devtool)): this;
    mode(mode: Configuration['mode'] | ((webpack: this) => Configuration['mode'])): this;
    noParse(pattern: Module['noParse']): this;
    optimization(fn: (optimization: Options.Optimization, webpack: this) => Options.Optimization | void): this;
    output(fn: (output: Output, webpack: this) => Output | void): this;
    miniCss(is: boolean): this;
    devServer(fn: (server: WebpackDevServer.Configuration, webpack: this) => WebpackDevServer.Configuration | void): this;
    stats(fn: (stats: Options.Stats, webpack: this) => Options.Stats | void): this;
    entry(entry: NonNullable<Configuration['entry']>): this;
    getOriginalEntry(): Readonly<Configuration['entry']>;
    resolve(fn: (resolve: Resolve, webpack: this) => Resolve | void): this;
    addPlugin(plugin: Plugin): this;
    pluginHotModuleReplace(fn?: (plugin: HotModule) => void): this;
    pluginErrorOverlay(fn?: (plugin: ErrorOverlay) => void): this;
    pluginReactRefresh(fn?: (plugin: ReactRefresh) => void): this;
    pluginAntdDayJs(fn?: (plugin: AntdDayJs) => void): this;
    pluginCopy(fn?: (plugin: Copy) => void): this;
    pluginGzip(fn?: (plugin: Gzip) => void): this;
    pluginDefine(fn?: (plugin: Define) => void): this;
    pluginProgressBar(fn?: (plugin: ProgressBar) => void): this;
    pluginPreload(fn?: (plugin: Preload) => void): this;
    pluginHtml(fn?: (plugin: HtmlPlugin) => void): this;
    pluginHashedModule(fn?: (plugin: HashedModuleIds) => void): this;
    pluginClean(fn?: (plugin: Clean) => void): this;
    pluginMiniCss(fn?: (plugin: MiniCss) => void): this;
    addRule(rule: RuleSetRule): this;
    ruleTsx(fn?: (rule: Tsx) => void): this;
    ruleJsx(fn?: (rule: Jsx) => void): this;
    ruleCssNodeModules(fn?: (rule: CssNodeModules) => void): this;
    ruleCss(fn?: (rule: Css) => void): this;
    ruleScss(fn?: (rule: Scss) => void): this;
    ruleLess(fn?: (rule: Less) => void): this;
    disableCssModule(): this;
    ruleAntd(fn?: (rule: LessAntd) => void): this;
    ruleAsset(fn?: (rule: Asset) => void): this;
    ruleHtml(fn?: (rule: HtmlRule) => void): this;
    ruleJson5(fn?: (rule: Json5) => void): this;
    protected collect(): webpack.Configuration;
    protected findPlugin<T extends PluginHandle>(name: string, or: () => T): T;
    protected findRule<T extends RuleHandle>(name: string, or: () => T): T;
}
