import { Plugin } from "src/plugin";
import { DeclarationReflection, ProjectReflection } from "typedoc";
import { ModuleBundle } from "./module_bundle";
/**
 * Merger that merges the content of modules based on their JSDoc module annotation.
 */
export declare class ModuleMerger {
    /** The project whose modules are merged. */
    protected readonly project: ProjectReflection;
    /** The plugin which is using this merger. */
    protected readonly plugin: Plugin;
    /**
     * Creates a new merger instance.
     * @param project The project whose modules are merged.
     * @param plugin The plugin which is using this merger.
     */
    constructor(project: ProjectReflection, plugin: Plugin);
    /**
     * Performs the merging routine.
     */
    execute(): void;
    /**
     * Creates an identifier for the module's bundle.
     * @param module The module for which the identifier is generated.
     * @returns The identifier for the module's bundle.
     */
    protected createModuleBundleId(module: DeclarationReflection): string;
    /**
     * Creates an object describing which modules of the project should be merged.
     * @returns The collection of module bundles.
     */
    protected createModuleBundles(): ModuleBundle[];
}
