import { BuilderConfigsProp, BuilderOptions, WebpackBuilderMiddlewareFn } from '../types';
import { Configuration as WebpackConfig } from 'webpack';
export declare type ifCondition = (then: any, or?: any) => any;
export default class WebpackBuilder implements BuilderOptions {
    private webpackConfig;
    /** Path of the boot options file (boot.js) */
    bluebaseJsPath: string;
    appJsPath: string;
    assetsDirPath: string;
    buildDirPath: string;
    configDirPath: string;
    configs: BuilderConfigsProp;
    /** Is this production enviornment? */
    isProd: boolean;
    /** Is this development enviornment? */
    isDev: boolean;
    /** Is this a client build? */
    isClient: boolean;
    /** Is this a server build? */
    isServer: boolean;
    /** Is this a node enviornment? */
    isNode: boolean;
    /** Execute if enviornment is development. */
    ifDev: ifCondition;
    /** Execute if enviornment is production. */
    ifProd: ifCondition;
    /** Execute if enviornment is node. */
    ifNode: ifCondition;
    /** Execute if enviornment is client. */
    ifClient: ifCondition;
    /** Execute if enviornment is development client. */
    ifDevClient: ifCondition;
    /** Execute if enviornment is production client. */
    ifProdClient: ifCondition;
    constructor(buildOptions: BuilderOptions, webpackConfig?: WebpackConfig);
    /**
     * Build a webpack config
     * @param webpackConfigInput
     */
    build(): WebpackConfig;
    /**
     * Use a middleware. A middleware is a function that returns a merged
     * webpack config
     * @param middleware
     */
    use(middleware: WebpackBuilderMiddlewareFn): WebpackBuilder;
    /**
     * Merge a webpack config
     * @param config
     */
    merge(config: WebpackConfig): WebpackBuilder;
}
