import { ICommandInfo } from './command'; export interface INestedTopic { description?: string; subtopics?: { [k: string]: INestedTopic; }; commands?: { [k: string]: ICommandInfo; }; hidden?: boolean; } export interface ITopic extends INestedTopic { name: string; } export declare class TopicBase { subtopics: { [k: string]: Topic; }; commands: { [k: string]: ICommandInfo; }; findTopic(id: string): Topic | undefined; findCommand(id: string): ICommandInfo | undefined; } export declare class Topic extends TopicBase implements ITopic { name: string; description?: string; hidden: boolean; constructor(opts: ITopic); } export declare class RootTopic extends TopicBase { subtopics: { [k: string]: Topic; }; commands: { [k: string]: ICommandInfo; }; allCommands: ICommandInfo[]; allTopics: Topic[]; addTopics(topics: ITopic[] | { [k: string]: ITopic; } | undefined): void; addCommands(commands: ICommandInfo[] | { [k: string]: ICommandInfo; } | undefined): void; private findOrCreateTopic(name); private mergeTopics(a, b); }