import { TransformPlugin } from '../transform/types.cjs';
import { HandleNodeAccumulator, ImportDeclaration, RouteNode } from '../types.cjs';
import { Generator } from '../generator.cjs';
export type GeneratorPlugin = GeneratorPluginBase | GeneratorPluginWithTransform;
export interface GeneratorPluginBase {
    name: string;
    onRouteTreesChanged?: (opts: {
        routeTrees: Array<{
            sortedRouteNodes: Array<RouteNode>;
            acc: HandleNodeAccumulator;
            exportName: string;
        }>;
        rootRouteNode: RouteNode;
        generator: Generator;
    }) => void;
}
export interface GeneratorPluginWithTransform extends GeneratorPluginBase {
    transformPlugin: TransformPlugin;
    moduleAugmentation: (opts: {
        generator: Generator;
    }) => {
        module: string;
        interfaceName: string;
    };
    imports: (opts: {
        rootRouteNode: RouteNode;
        sortedRouteNodes: Array<RouteNode>;
        acc: HandleNodeAccumulator;
        generator: Generator;
    }) => Array<ImportDeclaration>;
    routeModuleAugmentation: (opts: {
        routeNode: RouteNode;
    }) => string | undefined;
    createRootRouteCode: () => string;
    createVirtualRouteCode: (opts: {
        node: RouteNode;
    }) => string;
    config: (opts: {
        generator: Generator;
        rootRouteNode: RouteNode;
        sortedRouteNodes: Array<RouteNode>;
    }) => {
        virtualRootRoute?: boolean;
    };
}
export {};
