import { LanguageParser } from './parser-interface.js';
import { ParseResult, SymbolKind, ExtractedReference } from '../types.js';
import { LanguageDefinition } from '../languages/registry.js';

declare class GenericWasmParser implements LanguageParser {
    readonly languageName: string;
    readonly supportedExtensions: string[];
    protected langDef: LanguageDefinition;
    protected language: any;
    protected symbolsQuery: string | null;
    protected referencesQuery: string | null;
    protected loadingPromise: Promise<void> | null;
    constructor(langDef: LanguageDefinition);
    protected ensureLoaded(): Promise<void>;
    parse(filePath: string, source: string, options?: any): Promise<ParseResult>;
    protected isContainerKind(kind: SymbolKind): boolean;
    protected isMemberKind(kind: SymbolKind): boolean;
    protected extractSignature(source: string, node: any, name: string, kind: string, startLine: number): string;
    protected cleanTarget(name: string, refType: string): string;
    protected mapRefType(refType: string): ExtractedReference['referenceType'];
}

export { GenericWasmParser };
