import { Compiler, WebpackPluginInstance } from "webpack";

//#region src/wrapper/BaseWrapperPlugin.d.ts
/**
 * Base Wrapper Plugin Class
 *
 * Why we need a Wrapper layer:
 * 1. Prevent direct references to peer dependency webpack in CommonJS environment, which can lead to inconsistent instances
 * 2. Ensure the FEDERATION_WEBPACK_PATH environment variable is set correctly, which is crucial for module federation to work properly
 * 3. Provide unified plugin initialization logic, reducing code duplication
 *
 * Why we need to set FEDERATION_WEBPACK_PATH:
 * In CommonJS environment, require('webpack') might get a different webpack version than the current compiler instance,
 * which can cause module federation to malfunction. By setting FEDERATION_WEBPACK_PATH, we ensure all internal
 * dependencies use the same webpack instance as the current compiler.
 */
declare abstract class BaseWrapperPlugin implements WebpackPluginInstance {
  protected _options: any;
  name: string;
  protected pluginName: string;
  protected coreModulePath: string;
  constructor(options: any, pluginName: string, coreModulePath: string);
  apply(compiler: Compiler): void;
  /**
   * Create core plugin instance
   * Subclasses can override this method to customize instantiation logic
   */
  protected createCorePluginInstance(CorePlugin: any, compiler: Compiler): void;
}
//#endregion
export { BaseWrapperPlugin as default };
//# sourceMappingURL=BaseWrapperPlugin.d.ts.map