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 { BaseStructurerProvider } from "../base/StructurerProvider";
import { LanguageIdentifier } from "../../base/common/languages/languages";
import { LanguageProfile } from "../base/LanguageProfile";
import { CodeFile } from "../../codemodel/CodeElement";
export declare class GoStructurerProvider 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.
     */
    retrieveMethodIOImports(graph: ScopeGraph, node: SyntaxNode, range: TextRange, src: string): Promise<string[] | undefined>;
}
