import WebpackChainConfig from 'webpack-chain'; import { Config } from '../config/argv'; import { BabelRC } from '../config/babel'; export declare type SetConfig = (config: Config) => Config | Promise<Config>; export declare type ModifyBundlerConfig<C = any> = (config: C, dev: boolean, args: Config) => C; export declare type ModifyBabelRC = (babelrc: BabelRC, args: Config) => BabelRC; export declare type ModifyFiles = (files: string[], args: Config) => string[]; export declare type OnCreateWebpackChain = (config: WebpackChainConfig, dev: boolean, args: Config) => void; export declare type onPreCreateApp = <A>(app: A) => void; export declare type onCreateApp = <A>(app: A) => void; export declare type OnServerListening = <S>(server: S) => void; export declare type OnPreBuild = (args: Config) => void; export declare type OnPostBuild = (args: Config) => void; export declare type OnPreRender = () => void; export declare type OnPostRender = () => void; export interface PluginFactory { setConfig?: SetConfig; modifyBundlerConfig?: ModifyBundlerConfig; modifyBabelRc?: ModifyBabelRC; modifyFiles?: ModifyFiles; onCreateWebpackChain?: OnCreateWebpackChain; onPreCreateApp?: onPreCreateApp; onCreateApp?: onCreateApp; onServerListening?: OnServerListening; onPreBuild?: OnPreBuild; onPostBuild?: OnPostBuild; onPreRender?: OnPreRender; onPostRender?: OnPostRender; } export declare class Plugin<C = any> implements PluginFactory { static runPluginsMethod(plugins: Plugin[] | undefined): (method: keyof Plugin, ...args: any[]) => void; static propsOfPlugins(plugins: Plugin[]): (prop: keyof Plugin) => any[]; static reduceFromPlugins<C>(plugins: Plugin[] | undefined): (method: keyof Plugin, initial: C, ...args: any[]) => C; static reduceFromPluginsAsync<C>(plugins: Plugin[] | undefined): (method: keyof Plugin, initial: C, ...args: any[]) => Promise<C>; readonly setConfig?: SetConfig; readonly modifyBundlerConfig?: ModifyBundlerConfig<C>; readonly modifyBabelRc?: ModifyBabelRC; readonly modifyFiles?: ModifyFiles; readonly onCreateWebpackChain?: OnCreateWebpackChain; readonly onPreCreateApp?: onPreCreateApp; readonly onCreateApp?: onCreateApp; readonly onServerListening?: OnServerListening; readonly onPreBuild?: OnPreBuild; readonly onPostBuild?: OnPostBuild; readonly onPreRender?: OnPreRender; readonly onPostRender?: OnPostRender; constructor(p: PluginFactory); } export declare function createPlugin<C = any>(factory: PluginFactory): Plugin<C>;