import { AssetStats, ChunkStats, ModuleStats, Stats } from "rollup-plugin-stats/extract";

//#region src/transform.d.ts
type WebpackStatsFilteredAsset = {
  name: string;
  size?: number;
};
interface WebpackStatsFilteredChunk {
  id: number | string;
  entry: boolean;
  initial: boolean;
  files?: Array<string>;
  names?: Array<string>;
}
interface WebpackStatsFilteredModule {
  name: string;
  size?: number;
  chunks: Array<string | number>;
}
interface WebpackStatsFilteredConcatenatedModule {
  name: string;
  size?: number;
}
interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
  modules?: Array<WebpackStatsFilteredConcatenatedModule>;
}
interface WebpackStatsFiltered {
  builtAt: number;
  hash?: string;
  assets: Array<WebpackStatsFilteredAsset>;
  chunks: Array<WebpackStatsFilteredChunk>;
  modules: Array<WebpackStatsFilteredRootModule>;
}
type ChunksIssuers = Record<string, Array<ChunkStats>>;
/**
 * Recursivily check if a chunk is async based on the chunks issuers
 */
declare const lookupChunkAsync: (chunksIssuers: ChunksIssuers, chunk: ChunkStats, processedChunks?: Array<string>, cache?: Map<string, boolean>) => boolean;
type AssetSource = ChunkStats | AssetStats;
type ChunkSource = ChunkStats;
type ModuleSource = {
  fileName: string;
} & ModuleStats;
/**
 * Store transformed sources
 */
declare class TransformSources {
  constructor();
  entries: Record<string, unknown>;
  push(id: string, source: AssetSource | ChunkSource | ModuleSource): void;
  /**
   * Get asset source
   */
  getByAsset: (asset: WebpackStatsFilteredAsset) => AssetSource;
  /**
   * Get chunk source
   */
  getByChunk: (chunk: WebpackStatsFilteredChunk) => ChunkSource;
  /**
   * Get module source
   */
  getByModule: (module: WebpackStatsFilteredModule) => ModuleSource;
}
type TransformCallback = (stats: WebpackStatsFiltered, sources: TransformSources, bundle: Stats) => WebpackStatsFiltered;
type BundleTransformOptions = {
  /**
   * Extract module original size or rendered size
   * default: false
   */
  moduleOriginalSize?: boolean;
  /**
   * Callback function to access and mutate the resulting stats after the transformation
   */
  transform?: TransformCallback;
};
declare const bundleToWebpackStats: (bundle: Stats, pluginOptions?: BundleTransformOptions) => WebpackStatsFiltered;
//#endregion
export { BundleTransformOptions, ChunksIssuers, TransformCallback, WebpackStatsFiltered, WebpackStatsFilteredAsset, WebpackStatsFilteredChunk, WebpackStatsFilteredConcatenatedModule, WebpackStatsFilteredModule, WebpackStatsFilteredRootModule, bundleToWebpackStats, lookupChunkAsync };
//# sourceMappingURL=transform.d.mts.map