import { EventBus } from '../core/EventBus';
export type DocCategory = 'core' | 'ecs' | 'rendering' | 'physics' | 'audio' | 'input' | 'ui' | 'scene' | 'multiplayer' | 'editor' | 'legendary' | 'other';
export type DocMemberKind = 'class' | 'interface' | 'type' | 'function' | 'constant' | 'enum';
export interface DocParam {
    name: string;
    type: string;
    description: string;
    optional?: boolean;
    defaultValue?: string;
}
export interface DocMember {
    name: string;
    kind: DocMemberKind;
    description: string;
    category?: DocCategory;
    /** Signature or type representation. */
    signature?: string;
    /** Parameters (for functions/methods). */
    params?: DocParam[];
    /** Return type description. */
    returns?: string;
    /** Code example. */
    example?: string;
    /** Since which version. */
    since?: string;
    /** Deprecated message (if deprecated). */
    deprecated?: string;
    /** Related API names. */
    seeAlso?: string[];
    /** Tags for search. */
    tags?: string[];
}
export interface DocModule {
    name: string;
    category: DocCategory;
    description: string;
    members: DocMember[];
}
export interface DocSearchResult {
    member: DocMember;
    module: string;
    score: number;
}
export declare class DocRegistry {
    readonly events: EventBus;
    private modules;
    /** Register a module's documentation. */
    registerModule(mod: DocModule): void;
    /** Unregister a module. */
    unregisterModule(name: string): void;
    /** Get a module by name. */
    getModule(name: string): DocModule | undefined;
    /** Get all registered modules. */
    getAllModules(): DocModule[];
    /** Get all modules in a category. */
    getModulesByCategory(category: DocCategory): DocModule[];
    /** Search across all docs. */
    search(query: string, maxResults?: number): DocSearchResult[];
    private scoreMember;
    /** Get a specific member by name. */
    findMember(memberName: string): {
        member: DocMember;
        module: string;
    } | null;
    /** Generate Markdown docs for a single module. */
    generateModuleMarkdown(moduleName: string): string;
    /** Generate full Markdown documentation for all modules. */
    generateFullMarkdown(): string;
    /** Generate a JSON index for interactive docs browser. */
    generateSearchIndex(): Array<{
        name: string;
        module: string;
        kind: DocMemberKind;
        description: string;
        tags: string[];
    }>;
    /** Total number of documented members. */
    get totalMembers(): number;
    /** Reset. */
    clear(): void;
}
export declare const DOCS_ECS: DocModule;
export declare const DOCS_RENDERING: DocModule;
