import { type BuiltinPlugin, BuiltinPluginName } from '../binding';
import { RspackBuiltinPlugin } from '../builtin-plugin/base';
import type { Compiler } from '../Compiler';
export type ConsumeSharedPluginOptions = {
    consumes: Consumes;
    shareScope?: string | string[];
    enhanced?: boolean;
};
export type Consumes = (ConsumesItem | ConsumesObject)[] | ConsumesObject;
export type ConsumesItem = string;
export type ConsumesObject = {
    [k: string]: ConsumesConfig | ConsumesItem;
};
export type ConsumesConfig = {
    eager?: boolean;
    import?: false | ConsumesItem;
    packageName?: string;
    requiredVersion?: false | string;
    shareKey?: string;
    shareScope?: string | string[];
    singleton?: boolean;
    strictVersion?: boolean;
    treeShakingMode?: 'server-calc' | 'runtime-infer';
};
export declare function normalizeConsumeShareOptions(consumes: Consumes, shareScope?: string | string[]): [string, {
    import: string | undefined;
    shareScope: string | string[];
    shareKey: string;
    requiredVersion: string | false | undefined;
    strictVersion: boolean;
    packageName: string | undefined;
    singleton: boolean;
    eager: boolean;
    treeShakingMode: "runtime-infer" | "server-calc" | undefined;
}][];
export declare class ConsumeSharedPlugin extends RspackBuiltinPlugin {
    name: BuiltinPluginName;
    _options: {
        consumes: [string, {
            import: string | undefined;
            shareScope: string | string[];
            shareKey: string;
            requiredVersion: string | false | undefined;
            strictVersion: boolean;
            packageName: string | undefined;
            singleton: boolean;
            eager: boolean;
            treeShakingMode: "runtime-infer" | "server-calc" | undefined;
        }][];
        enhanced: boolean;
    };
    constructor(options: ConsumeSharedPluginOptions);
    raw(compiler: Compiler): BuiltinPlugin;
}
