import Parser, { SyntaxNode } from 'web-tree-sitter';
import { TextRange } from '../../code-search/scope-graph/model/TextRange';
import { ScopeGraph } from '../../code-search/scope-graph/ScopeGraph';
import { CodeFile, CodeVariable } from '../../codemodel/CodeElement';
import { LanguageProfile } from '../base/LanguageProfile';
import { BaseStructurerProvider } from "../base/StructurerProvider";
import { LanguageIdentifier } from "../../base/common/languages/languages";
export declare class CsharpStructurerProvider extends BaseStructurerProvider {
    protected langId: LanguageIdentifier;
    protected config: LanguageProfile;
    protected parser: Parser | undefined;
    protected language: Parser.Language | undefined;
    constructor();
    isApplicable(lang: string): boolean;
    parseFile(code: string, filepath: string): Promise<CodeFile | undefined>;
    /**
     * `extractMethodIOImports` is an asynchronous method that extracts the import statements related to the input and output
     * types of a given method from the source code.
     *
     * @param {ScopeGraph} graph - The node graph of the source code.
     * @param {SyntaxNode} node - The syntax node representing the method in the source code.
     * @param {TextRange} range - The range of the method in the source code.
     * @param {string} src - The source code as a string.
     *
     * @returns {Promise<string[] | undefined>} A promise that resolves to an array of import statements or undefined if no import statements are found.
     *
     * The method works by first finding the syntax node that corresponds to the given range in the source code. It then uses a query to capture the return type and parameter types of the method. For each captured element, it fetches the corresponding import statements from the source code and adds them to an array. Finally, it removes any duplicate import statements from the array before returning it.
     *
     * The method uses the `fetchImportsWithinScope` method to fetch the import statements for a given syntax node from the source code.
     *
     * Note: The method assumes that the `methodIOQuery` and `language` properties of the `config` object are defined.
     */
    /**
    *`extractMethodIOImports`是一个异步方法，用于提取与输入和输出相关的导入语句
    *源代码中给定方法的类型。
    *
    * @param ｛ScopeGraph｝ graph -源代码的节点图。
    * @param {SyntaxNode} 节点 -表示源代码中方法的语法节点。
    * @param ｛TextRange｝ range -源代码中方法的范围。
    * @param {string} src-源代码为字符串。
    *
    * @returns {Promise<string[] | undefined>} 一个promise，解析为一个import语句数组，如果找不到import语句，则解析为undefined。
    *
    * 该方法的工作原理是首先在源代码中找到与给定范围对应的语法节点。然后，它使用查询来捕获方法的返回类型和参数类型。对于每个捕获的元素，它从源代码中获取相应的导入语句并将其添加到数组中。最后，在返回数组之前，它会从数组中删除任何重复的导入语句。
    *
    * 该方法使用“fetchImportsWithinScope”方法从源代码中获取给定语法节点的导入语句。
    *
    * 注意：该方法假定定义了`config`对象的`methodIOQuery`和`language`属性。
    */
    retrieveMethodIOImports(graph: ScopeGraph, node: SyntaxNode, range: TextRange, src: string): Promise<string[] | undefined>;
    extractFields(node: SyntaxNode): Promise<CodeVariable[]>;
}
