import { Compiler, ExternalsElement, Loader, Plugin } from 'webpack';
import { BabelTarget } from './babel-target';
import { BabelMultiTargetLoader } from './babel.multi.target.loader';
/**
 * @internalapi
 */
export declare class TargetingPlugin implements Plugin {
    private targets;
    private exclude;
    private readonly externals;
    private babelLoaderPath;
    private babelLoaders;
    private remainingTargets;
    private readonly doNotTarget;
    constructor(targets: BabelTarget[], exclude: RegExp[], doNotTarget: RegExp[], externals: ExternalsElement | ExternalsElement[]);
    apply(compiler: Compiler): void;
    private getBlindTarget;
    targetLazyModules(resolveContext: any): Promise<any>;
    wrapResolveDependencies(resolveContext: any): Promise<any>;
    targetModule(module: any): void;
    private targetDependency;
    targetDependencies(babelTarget: BabelTarget, context: any): void;
    afterResolve(resolveContext: any): Promise<void>;
    checkResolveTarget(resolveContext: any, hasLoader: boolean): void;
    private targetChunkNames;
    replaceLoaders(resolveContext: any, loaders: BabelMultiTargetLoader[]): void;
    isTargetedRequest(context: any, request: string): boolean;
    private isExternalRequest;
    isTranspiledRequest(resolveContext: any): boolean;
    getTargetFromContext(context: any): BabelTarget;
    private getTargetedBabelLoader;
    static loader(loader?: Loader): Loader;
}
