import { LanguageIdentifier } from "../base/common/languages/languages";
import { ILanguageServiceProvider } from "../base/common/languages/languageService";
import { RelevantCodeProvider } from "./base/RelevantCodeProvider";
import { CodeFile } from "../codemodel/CodeElement";
import { TreeSitterFile } from "../ast/TreeSitterFile";
import { NamedElement } from "../ast/NamedElement";
export declare class RelevantCodeProviderManager {
    private lsp;
    private relatedMap;
    /**
     * @param lsp - An instance of `LanguageServiceProvider` which is used to provide language-specific services. If not provided, a new instance of `DefaultLanguageServiceProvider` is used.
     */
    constructor(lsp: ILanguageServiceProvider);
    provider(lang: LanguageIdentifier, langService: ILanguageServiceProvider): RelevantCodeProvider | undefined;
    /**
     * `relatedClassesContext` is an asynchronous method that retrieves the context of related classes for a given named element in a file.
     *
     * @param languageId - The ID of the supported language. This is used to get the relevant code provider.
     * @param file - An instance of `TreeSitterFile` which represents the file where the named element is located.
     * @param namedElement - An instance of `NamedElement` which represents the element for which related classes are to be found.
     *
     * The method first gets the relevant code provider for the given language ID and language service. If a relevant provider is found, it retrieves the related files using the `getMethodFanInAndFanOut` method of the provider.
     *
     * The method then renders the related files and returns the result.
     *
     * @returns A promise that resolves with the rendered related files.
     *
     * @throws Will throw an error if the relevant code provider is not found.
     */
    relatedClassesContext(languageId: LanguageIdentifier, file: TreeSitterFile, namedElement: NamedElement): Promise<string>;
    renderFiles(relatedFiles: CodeFile[]): string;
}
