import { BuildOptions, IndexHtmlTransformContext, ModuleNode, Plugin, PluginOption, splitVendorChunk } from "vite";

//#region src/type.d.ts
type Prettify<T> = { [K in keyof T]: T[K] } & {};
// #region Rollup 相关类型定义获取
type ExtractOutputOptions<T> = T extends (infer U)[] ? U : T extends undefined ? never : T;
type OutputOptions = ExtractOutputOptions<Exclude<BuildOptions['rollupOptions'], undefined>['output']>;
type ManualChunksOption = OutputOptions['manualChunks'];
type RenderDynamicImportOptions = Parameters<Plugin['renderDynamicImport']>[0];
type ModuleInfo = Pick<Exclude<ModuleNode['info'], undefined>, 'id' | 'meta' | 'importers' | 'importedIds' | 'importedIdResolutions' | 'dynamicImporters' | 'dynamicallyImportedIds' | 'dynamicallyImportedIdResolutions'> & {
  isMain?: boolean;
};
type GetManualChunk = ReturnType<typeof splitVendorChunk>;
type ManualChunkMeta = Parameters<GetManualChunk>['1'];
type OutputChunk = Exclude<IndexHtmlTransformContext['chunk'], undefined>;
// #endregion

interface ISubPkgsInfo {
  root: string;
  independent: boolean;
}
type Enable = 'optimization' | 'async-component' | 'async-import';
interface OptimizationOptions {
  /**
   * 是否启用 vue 实体模块规整逻辑
   *
   * @description 默认为 true。关闭后将跳过 `*-vendor` 的规整逻辑
   */
  normalizeVueEntityModule?: boolean;
}
interface IOptions {
  /**
   * 插件功能开关（可选）
   *
   * @description 默认为true，即开启所有功能
   */
  enable?: boolean | Prettify<Partial<Record<Enable, boolean>>>;
  /**
   * log 控制，默认不启用，为false
   */
  logger?: Prettify<boolean | Enable[]>;
  /**
   * 分包优化插件的细粒度配置
   */
  optimization?: OptimizationOptions;
  /**
   * 日志落盘
   * ---
   * 如果启用则会在 `node_modules/.cache/[项目名称]` 下生成 `logs.log` 日志文件, 也可以传入字符串自定义日志文件路径、名称
   */
  logToFile?: boolean | string;
}
//#endregion
//#region src/index.d.ts
declare const _default: (options?: IOptions) => PluginOption;
//#endregion
export { IOptions, ISubPkgsInfo, ManualChunkMeta, ManualChunksOption, ModuleInfo, OptimizationOptions, OutputChunk, OutputOptions, Prettify, RenderDynamicImportOptions, _default as default };
//# sourceMappingURL=index.d.mts.map