import type { Configuration } from 'webpack';
import { BuildResult, Bundler, BundlerOptions } from './bundler';
import type { InputNode } from 'broccoli-node-api';
import Plugin from 'broccoli-plugin';
import { Package } from '@embroider/shared-internals';
export default class WebpackBundler extends Plugin implements Bundler {
    private opts;
    private state;
    private lastBuildResult;
    private writeCache;
    constructor(priorTrees: InputNode[], opts: BundlerOptions);
    get buildResult(): BuildResult;
    private get webpack();
    private get stagingDir();
    private setup;
    private setupStyleLoader;
    private skipBabel;
    private fileIsInApp;
    private babelRule;
    private externalizedByUs;
    private get externalsHandler();
    withResolvableExtensions(importSpecifier: string): Generator<string, void, void>;
    importMatchesAppImports(relativeImportSpecifier: string): boolean;
    matchesAppImports(pkg: Package, requestingFile: string | undefined): boolean;
    build(): Promise<void>;
    private cachedWriteFileSync;
    private addDiscoveredExternals;
    private externalDepsSearcher;
    private summarizeStats;
    private writeEntryFile;
    private writeLoaderFile;
    private linkDeps;
    private ensureLinked;
    private runWebpack;
}
export declare function mergeConfig(dest: Configuration, ...srcs: Configuration[]): any;
