import { NormalizedSharedOptions } from "../SharePlugin.js";
import { moduleFederationPlugin } from "@module-federation/sdk";
import { Compiler, WebpackPluginInstance } from "webpack";

//#region src/lib/sharing/tree-shaking/IndependentSharedPlugin.d.ts
type ShareFallback = Record<string, [string, string, string][]>;
type MakeRequired<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
interface IndependentSharePluginOptions {
  name: string;
  shared: moduleFederationPlugin.Shared;
  library?: moduleFederationPlugin.LibraryOptions;
  outputDir?: string;
  plugins?: WebpackPluginInstance[];
  treeShaking?: boolean;
  manifest?: moduleFederationPlugin.ModuleFederationPluginOptions['manifest'];
  injectTreeShakingUsedExports?: boolean;
  treeShakingSharedExcludePlugins?: string[];
}
declare class IndependentSharedPlugin {
  mfName: string;
  shared: moduleFederationPlugin.Shared;
  library?: moduleFederationPlugin.LibraryOptions;
  sharedOptions: NormalizedSharedOptions;
  outputDir: string;
  plugins: WebpackPluginInstance[];
  treeShaking?: boolean;
  manifest?: moduleFederationPlugin.ModuleFederationPluginOptions['manifest'];
  injectTreeShakingUsedExports?: boolean;
  buildAssets: ShareFallback;
  treeShakingSharedExcludePlugins?: string[];
  name: string;
  constructor(options: IndependentSharePluginOptions);
  static IndependentShareBuildAssetsFilename: string;
  apply(compiler: Compiler): void;
  private createEntry;
  private createIndependentCompilers;
  private createIndependentCompiler;
}
//#endregion
export { IndependentSharePluginOptions, MakeRequired, ShareFallback, IndependentSharedPlugin as default };
//# sourceMappingURL=IndependentSharedPlugin.d.ts.map