import type { Compiler } from '.';
interface ResolvedRequest {
    request: string;
    issuer: string;
    packageName: string;
}
interface ProcessedRequest extends ResolvedRequest {
    url: URL;
}
interface BrowserHttpImportPluginOptions {
    /**
     * ESM CDN domain
     */
    domain: string | ((resolvedRequest: ResolvedRequest) => string);
    /**
     * Specify ESM CDN URL for dependencies.
     * If a record is provided, it will be used to map package names to their CDN URLs.
     *
     * Once this function resolves a dependency, other options are ignored.
     */
    dependencyUrl?: Record<string, string | undefined> | ((resolvedRequest: ResolvedRequest) => string | undefined);
    /**
     * Specify versions for dependencies.
     * Default to "latest" if not specified.
     */
    dependencyVersions?: Record<string, string | undefined>;
    /**
     * You can attach additional queries supported by the CDN to the `request.url`.
     *
     * For example, to specify the external dependencies under esm.sh, you can do:
     *
     * `request.url.searchParams.set("external", "react,react-dom")`
     */
    postprocess?: (request: ProcessedRequest) => void;
}
/**
 * Convert imports of dependencies in node modules to http imports from esm cdn.
 */
export declare class BrowserHttpImportEsmPlugin {
    private options;
    constructor(options: BrowserHttpImportPluginOptions);
    apply(compiler: Compiler): void;
    private resolveWithUrlIssuer;
    private resolveNodeModule;
    private parameterize;
    private isNodeModule;
}
export {};
