import { Graph, RoutingModule } from '../../common/interfaces';
export declare enum Mode {
    Angular = "angular",
    ReactTSX = "react-tsx",
    ReactJSX = "react-jsx",
    PreactJSX = "preact-jsx",
    Gatsby = "gatsby",
    Auto = "auto"
}
export declare type RouteProvider = () => Promise<RoutingModule[]>;
export declare type Cluster = string[];
export declare type Clusters = Cluster[];
export declare type ClusteringAlgorithm = (graph: Graph, modules: Module[], totalClusters: number) => Clusters;
export interface Module {
    modulePath: string;
    parentModulePath: string;
}
export declare type CompressedPrefetchGraph = number[][][];
export interface CompressedGraphMap {
    chunks: string[];
    routes: string[];
}
export interface PrefetchConfig {
    '4g': number;
    '3g': number;
    '2g': number;
    'slow-2g': number;
}
export interface PrefetchPluginConfig {
    debug?: boolean;
    data: Graph;
    basePath: string;
    prefetchConfig?: PrefetchConfig;
    routes: RoutingModule[];
    delegate: boolean;
}
export interface BundleEntryNeighbor {
    route: string;
    probability: number;
    file: string;
}
export interface BundleEntryGraph {
    [route: string]: BundleEntryNeighbor[];
}
export interface PrefetchNeighbor {
    route: string;
    probability: number;
    chunk: string;
}
export interface PrefetchGraph {
    [route: string]: PrefetchNeighbor[];
}
export interface PrefetchAotNeighbor {
    probability: number;
    chunks: string[];
}
export interface FileChunkMap {
    [path: string]: {
        file: string;
        deps: Set<string>;
    } | null;
}
export interface PrefetchAotGraph {
    [route: string]: PrefetchAotNeighbor[];
}
export interface PrefetchAotPluginConfig {
    debug?: boolean;
    data: Graph;
    base: string;
    prefetchConfig?: PrefetchConfig;
    routes: RoutingModule[];
}
