/** * Tree-Sitter Adapter Interface * * Library-agnostic interface for tree-sitter parsing operations. * Implementations can use web-tree-sitter, native tree-sitter, or any compatible parser. * * This separation allows: * - Multiple adapter implementations without coupling * - Easy testing with mock adapters * - Library migration without changing consumer code */ import type { ASTLanguage } from '../ast.types.js'; /** * Opaque handle to a loaded language grammar */ export type TreeSitterLanguage = unknown; /** * A syntax tree node returned by parsing */ export type TreeSitterNode = unknown; /** * A parsed syntax tree */ export interface TreeSitterTree { readonly rootNode: TreeSitterNode; } /** * A configured parser instance that can parse source code */ export interface TreeSitterParser { parse(content: string): null | TreeSitterTree; setLanguage(language: TreeSitterLanguage): void; } /** * Tree-Sitter Adapter Interface * * Defines the contract for tree-sitter parsing implementations. * All parsing operations should go through this interface. */ export interface TreeSitterAdapter { /** * Clear all cached grammars and reset parser state (for testing) */ clearCache(): void; /** * Create a new parser instance configured for a language * * @param language - The language to configure the parser for * @returns A configured parser instance */ createParser(language: ASTLanguage): Promise; /** * Load a language grammar (cached after first load) * * @param language - The language to load * @returns The loaded language grammar handle */ loadLanguage(language: ASTLanguage): Promise; } /** * Get the singleton TreeSitterAdapter instance * * @returns TreeSitterAdapter instance * * @example * import { getTreeSitterAdapter } from '../grammars/tree-sitter-adapter.interface.js'; * * const adapter = getTreeSitterAdapter(); * const parser = await adapter.createParser('typescript'); * const tree = parser.parse(sourceCode); */ export declare function getTreeSitterAdapter(): TreeSitterAdapter; /** * Set a custom TreeSitterAdapter implementation * Useful for testing or switching to different parsing libraries * * @param adapter - The adapter instance to use */ export declare function setTreeSitterAdapter(adapter: TreeSitterAdapter): void; /** * Reset the singleton instance (for testing) */ export declare function resetTreeSitterAdapter(): void; //# sourceMappingURL=tree-sitter-adapter.interface.d.ts.map