//#region src/schemas/sharing/ProvideSharedPlugin.d.ts
declare const _default: {
  readonly definitions: {
    readonly Provides: {
      readonly description: "Modules that should be provided as shared modules to the share scope. When provided, property name is used to match modules, otherwise this is automatically inferred from share key.";
      readonly anyOf: readonly [{
        readonly type: "array";
        readonly items: {
          readonly description: "Modules that should be provided as shared modules to the share scope.";
          readonly anyOf: readonly [{
            readonly $ref: "#/definitions/ProvidesItem";
          }, {
            readonly $ref: "#/definitions/ProvidesObject";
          }];
        };
      }, {
        readonly $ref: "#/definitions/ProvidesObject";
      }];
    };
    readonly ProvidesConfig: {
      readonly description: "Advanced configuration for modules that should be provided as shared modules to the share scope.";
      readonly type: "object";
      readonly additionalProperties: false;
      readonly properties: {
        readonly eager: {
          readonly description: "Include the provided module directly instead behind an async request. This allows to use this shared module in initial load too. All possible shared modules need to be eager too.";
          readonly type: "boolean";
        };
        readonly shareKey: {
          readonly description: "Key in the share scope under which the shared modules should be stored.";
          readonly type: "string";
          readonly minLength: 1;
        };
        readonly request: {
          readonly description: "Import request to match on";
          readonly type: "string";
          readonly minLength: 1;
        };
        readonly shareScope: {
          readonly description: "Share scope name.";
          readonly anyOf: readonly [{
            readonly type: "string";
            readonly minLength: 1;
          }, {
            readonly type: "array";
            readonly items: {
              readonly type: "string";
              readonly minLength: 1;
            };
          }];
        };
        readonly requiredVersion: {
          readonly description: "Version requirement from module in share scope.";
          readonly anyOf: readonly [{
            readonly description: "No version requirement check.";
            readonly enum: readonly [false];
          }, {
            readonly description: "Version as string. Can be prefixed with '^' or '~' for minimum matches. Each part of the version should be separated by a dot '.'.";
            readonly type: "string";
          }];
        };
        readonly strictVersion: {
          readonly description: "Do not accept shared module if version is not valid (defaults to yes, if local fallback module is available and shared module is not a singleton, otherwise no, has no effect if there is no required version specified).";
          readonly type: "boolean";
        };
        readonly singleton: {
          readonly description: "Allow only a single version of the shared module in share scope (disabled by default).";
          readonly type: "boolean";
        };
        readonly layer: {
          readonly description: "Layer in which the shared module should be placed.";
          readonly type: "string";
          readonly minLength: 1;
        };
        readonly issuerLayer: {
          readonly description: "Layer of the issuer.";
          readonly type: "string";
          readonly minLength: 1;
        };
        readonly version: {
          readonly description: "Version of the provided module. Will replace lower matching versions, but not higher.";
          readonly anyOf: readonly [{
            readonly description: "Don't provide a version.";
            readonly enum: readonly [false];
          }, {
            readonly description: "Version as string. Each part of the version should be separated by a dot '.'.";
            readonly type: "string";
          }];
        };
        readonly exclude: {
          readonly description: "Filter for the shared module.";
          readonly $ref: "#/definitions/IncludeExcludeOptions";
        };
        readonly include: {
          readonly description: "Options for including only certain versions or requests of the provided module. Cannot be used with 'exclude'.";
          readonly $ref: "#/definitions/IncludeExcludeOptions";
        };
        readonly allowNodeModulesSuffixMatch: {
          readonly description: "Enable reconstructed lookup for node_modules paths for this share item";
          readonly type: "boolean";
        };
        readonly treeShakingMode: {
          readonly description: "Tree shaking mode for the shared module.";
          readonly type: "string";
          readonly enum: readonly ["server-calc", "runtime-infer"];
        };
      };
    };
    readonly ProvidesItem: {
      readonly description: "Request to a module that should be provided as shared module to the share scope (will be resolved when relative).";
      readonly type: "string";
      readonly minLength: 1;
    };
    readonly ProvidesObject: {
      readonly description: "Modules that should be provided as shared modules to the share scope. Property names are used as share keys.";
      readonly type: "object";
      readonly additionalProperties: {
        readonly description: "Modules that should be provided as shared modules to the share scope.";
        readonly anyOf: readonly [{
          readonly $ref: "#/definitions/ProvidesConfig";
        }, {
          readonly $ref: "#/definitions/ProvidesItem";
        }];
      };
    };
    readonly ProvidesList: {
      readonly type: "array";
      readonly description: "A list of module requests to be provided to the shared scope.";
      readonly items: {
        readonly type: "string";
      };
    };
    readonly IncludeExcludeOptions: {
      readonly type: "object";
      readonly properties: {
        readonly request: {
          readonly anyOf: readonly [{
            readonly type: "string";
            readonly description: "Request string to match exactly.";
          }, {
            readonly instanceof: "RegExp";
            readonly description: "Regular expression to match the request path.";
          }];
        };
        readonly version: {
          readonly type: "string";
          readonly description: "Semantic versioning range to match against the module's version.";
        };
        readonly fallbackVersion: {
          readonly type: "string";
          readonly description: "Optional specific version string to check against the version range instead of reading package.json.";
        };
      };
      readonly additionalProperties: false;
      readonly anyOf: readonly [{
        readonly required: readonly ["request"];
      }, {
        readonly required: readonly ["version"];
      }];
    };
  };
  readonly title: "ProvideSharedPluginOptions";
  readonly type: "object";
  readonly additionalProperties: false;
  readonly properties: {
    readonly provides: {
      readonly $ref: "#/definitions/Provides";
    };
    readonly shareScope: {
      readonly description: "Share scope name used for all provided modules (defaults to 'default').";
      readonly anyOf: readonly [{
        readonly type: "string";
        readonly minLength: 1;
      }, {
        readonly type: "array";
        readonly items: {
          readonly type: "string";
          readonly minLength: 1;
        };
      }];
    };
    readonly experiments: {
      readonly description: "Experimental features configuration";
      readonly type: "object";
      readonly additionalProperties: false;
      readonly properties: {
        readonly allowNodeModulesSuffixMatch: {
          readonly description: "Enable reconstructed lookup for node_modules paths";
          readonly type: "boolean";
        };
      };
    };
  };
  readonly required: readonly ["provides"];
};
//#endregion
export { _default as default };
//# sourceMappingURL=ProvideSharedPlugin.d.ts.map