import type { Compiler } from '../Compiler';
import type { ExternalsType } from '../config';
import type { ShareScope } from '../sharing/SharePlugin';
import { type ModuleFederationManifestPluginOptions } from './ModuleFederationManifestPlugin';
import type { ModuleFederationPluginV1Options } from './ModuleFederationPluginV1';
import { type ModuleFederationRuntimeExperimentsOptions } from './ModuleFederationRuntimePlugin';
export interface ModuleFederationPluginOptions extends Omit<ModuleFederationPluginV1Options, 'enhanced'> {
    runtimePlugins?: RuntimePlugins;
    implementation?: string;
    shareStrategy?: 'version-first' | 'loaded-first';
    manifest?: ModuleFederationManifestPluginOptions;
    injectTreeShakingUsedExports?: boolean;
    treeShakingSharedDir?: string;
    treeShakingSharedExcludePlugins?: string[];
    treeShakingSharedPlugins?: string[];
    experiments?: ModuleFederationRuntimeExperimentsOptions;
}
export type RuntimePlugins = string[] | [string, Record<string, unknown>][];
export declare class ModuleFederationPlugin {
    private _options;
    private _treeShakingSharedPlugin?;
    constructor(_options: ModuleFederationPluginOptions);
    apply(compiler: Compiler): void;
}
interface RemoteInfo {
    alias: string;
    name?: string;
    entry?: string;
    externalType: ExternalsType;
    shareScope: ShareScope;
}
type RemoteInfos = Record<string, RemoteInfo[]>;
export declare function getRemoteInfos(options: ModuleFederationPluginOptions): RemoteInfos;
export {};
