import type { ClassInfo, MethodInfo, EnumInfo, PropertyInfo, WikiPage, GroupInfo } from "./types.js";
export interface MethodSearchResult {
    className: string;
    classSource: "enfusion" | "arma";
    classGroup: string;
    method: MethodInfo;
}
export interface EnumSearchResult {
    className: string;
    classSource: "enfusion" | "arma";
    classGroup: string;
    enumInfo: EnumInfo;
}
export interface PropertySearchResult {
    className: string;
    classSource: "enfusion" | "arma";
    classGroup: string;
    property: PropertyInfo;
}
export interface SearchResult {
    type: "class" | "method" | "enum" | "property";
    score: number;
    classInfo?: ClassInfo;
    methodResult?: MethodSearchResult;
    enumResult?: EnumSearchResult;
    propertyResult?: PropertySearchResult;
}
export declare class SearchEngine {
    private dataDir;
    private classByName;
    private classNames;
    private methodIndex;
    private enumIndex;
    private propertyIndex;
    private wikiPages;
    private groups;
    private loaded;
    constructor(dataDir: string);
    private load;
    getClass(name: string): ClassInfo | undefined;
    searchClasses(query: string, source?: "enfusion" | "arma" | "all", limit?: number): ClassInfo[];
    searchMethods(query: string, source?: "enfusion" | "arma" | "all", limit?: number): MethodSearchResult[];
    searchEnums(query: string, source?: "enfusion" | "arma" | "all", limit?: number): EnumSearchResult[];
    searchProperties(query: string, source?: "enfusion" | "arma" | "all", limit?: number): PropertySearchResult[];
    searchAny(query: string, source?: "enfusion" | "arma" | "all", limit?: number): SearchResult[];
    searchWiki(query: string, limit?: number): WikiPage[];
    getGroups(): GroupInfo[];
    getGroup(name: string): GroupInfo | undefined;
    /** Get all class names (for resource listing) */
    getAllClassNames(): string[];
    /**
     * Get the full inheritance tree for a class.
     * Walks up through parents[] and down through children[].
     */
    getClassTree(name: string): {
        ancestors: string[];
        descendants: string[];
    };
    /**
     * Get the ordered inheritance chain from root to the given class.
     * Returns [root, ..., parent, className].
     */
    getInheritanceChain(name: string): string[];
    /**
     * Get all inherited members by walking the inheritance chain.
     * Returns methods, properties, and enums from all ancestor classes.
     */
    getInheritedMembers(name: string): {
        methods: MethodSearchResult[];
        properties: PropertySearchResult[];
        enums: EnumSearchResult[];
    };
    /**
     * Get all classes that inherit from ScriptComponent (directly or indirectly).
     * Useful for finding available components to attach to entities.
     */
    getComponents(): ClassInfo[];
    /**
     * Check if a class name exists in the index (case-insensitive).
     */
    hasClass(name: string): boolean;
    isLoaded(): boolean;
    getStats(): {
        totalClasses: number;
        totalMethods: number;
        totalEnums: number;
        totalProperties: number;
        totalWikiPages: number;
    };
}
//# sourceMappingURL=search-engine.d.ts.map