import _ from 'lodash';
import { DeclarationReflection, ProjectReflection } from 'typedoc';
import { ModuleCommands } from '../module-commands';
import { ExecMethodDataSet, ParentReflection, RouteMap } from '../types';
/**
 * A reflection containing data about commands and/or execute methods.
 *
 * Methods may be invoked directly by Handlebars templates.
 */
export declare class ExtensionReflection extends DeclarationReflection {
    #private;
    /**
     * Info about execute methods
     */
    readonly execMethodDataSet: ExecMethodDataSet;
    /**
     * Info about routes/commands
     */
    readonly routeMap: RouteMap;
    hasOwnDocument: boolean;
    /**
     *
     * @param name Name of module containing commands
     * @param parent Module containing commands
     * @param moduleCommands Data containing commands and execute methods
     * @param title Title if provided in options
     * @todo Determine the kind by inspecting `package.json` or smth
     */
    constructor(name: string, parent: ParentReflection, moduleCommands: ModuleCommands, title?: string);
    /**
     * Returns `true` if the project contains more than one `ExtensionReflection` that isn't built-in commands.
     *
     * Should **not** be called before the TypeDoc converter has emitted `EVENT_RESOLVE_END`
     */
    static isCompositeProject: ((project: ProjectReflection) => boolean) & _.MemoizedFunction;
    /**
     * This is called by `AppiumTheme`'s `getUrl` method, which causes a particular filename to be used.
     *
     * - The name of an `ExtensionReflection` is the name of the module containing commands
     * - If that name is a _scoped package name_, we strip the scope and delimiter
     * - Replaces any non-alphanumeric characters with `-`
     * @returns The "alias", whatever that means
     */
    getAlias(): string;
    /**
     * Returns the title for display. Used as the first-level header for rendered page.
     */
    get extensionTitle(): string;
    /**
     * Returns number of execute methods in this data
     */
    get execMethodCount(): number;
    /**
     * Returns `true` if there are any "execute commands" in this set.
     *
     * Used by templates
     */
    get hasExecuteMethod(): boolean;
    /**
     * Returns `true` if there are any "regular" commands in this set.
     *
     * Used by templates
     */
    get hasRoute(): boolean;
    /**
     * Returns number of routes ("commands") in this in this data
     */
    get routeCount(): number;
}
//# sourceMappingURL=extension.d.ts.map