import type { Stats, AssetStats, ChunkStats, ModuleStats } from 'rollup-plugin-stats/extract';
export type WebpackStatsFilteredAsset = {
    name: string;
    size?: number;
};
export interface WebpackStatsFilteredChunk {
    id: number | string;
    entry: boolean;
    initial: boolean;
    files?: Array<string>;
    names?: Array<string>;
}
export interface WebpackStatsFilteredModule {
    name: string;
    size?: number;
    chunks: Array<string | number>;
}
export interface WebpackStatsFilteredConcatenatedModule {
    name: string;
    size?: number;
}
export interface WebpackStatsFilteredRootModule extends WebpackStatsFilteredModule {
    modules?: Array<WebpackStatsFilteredConcatenatedModule>;
}
export interface WebpackStatsFiltered {
    builtAt: number;
    hash?: string;
    assets: Array<WebpackStatsFilteredAsset>;
    chunks: Array<WebpackStatsFilteredChunk>;
    modules: Array<WebpackStatsFilteredRootModule>;
}
export type ChunksIssuers = Record<string, Array<ChunkStats>>;
/**
 * Recursivily check if a chunk is async based on the chunks issuers
 */
export declare const lookupChunkAsync: (chunk: ChunkStats, chunksIssuers: ChunksIssuers) => 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;
}
export type TransformCallback = (stats: WebpackStatsFiltered, sources: TransformSources, bundle: Stats) => WebpackStatsFiltered;
export 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;
};
export declare const bundleToWebpackStats: (bundle: Stats, pluginOptions?: BundleTransformOptions) => WebpackStatsFiltered;
export {};
