import WebpackDevServer from 'webpack-dev-server'; import { Config as Args, Env } from './commands/args'; import { BabelRC } from './utils/babel-config'; export interface ServerHooks { onCreateWebpackChain(config: C, dev: boolean, args: Args): void; onPreCreateApp(app: A): void; onCreateApp(app: A): void; onServerListening(server: S): void; } export interface BundlerServer { start(): Promise; } export declare type ConfigFn = (babelrc: BabelRC, hooks: ServerHooks) => Promise; export declare type BuildFn = (config: C, dist: string, publicDir: string) => void; export declare type ServerFn = (config: C, hooks: ServerHooks) => BundlerServer | Promise; export interface BundlerConstructor { args: Args; config: ConfigFn; server: ServerFn; build: BuildFn; } export interface ConfigObj { [key: string]: any; } export declare class Bundler { private readonly args; private config; private server; private builder; private hooks; constructor(params: BundlerConstructor); mountConfig(env: Env): Promise; createApp(config: C): Promise; build(config: C): Promise; }