import Parser, { SyntaxNode } from 'web-tree-sitter';
import { RestApiAnalyser } from '../base/RestApiAnalyser';
import { LanguageProfile, MemoizedQuery } from '../base/LanguageProfile';
import { CodeFile, CodeFunction, CodeStructure } from '../../codemodel/CodeElement';
import { LanguageIdentifier } from '../../base/common/languages/languages';
import { ILanguageServiceProvider } from '../../base/common/languages/languageService';
import { StructurerProvider } from "../base/StructurerProvider";
import { ApiResource } from "@autodev/worker-core";
export interface Annotation {
    name: string;
    keyValues: {
        key: string;
        value: string;
    }[];
}
export declare abstract class JVMRestApiAnalyser extends RestApiAnalyser {
    protected parser: Parser | undefined;
    protected language: Parser.Language | undefined;
    protected abstract config: LanguageProfile;
    protected abstract structurer: StructurerProvider;
    protected abstract get restTemplateQuery(): MemoizedQuery;
    abstract readonly langId: LanguageIdentifier;
    init(langService: ILanguageServiceProvider): Promise<void>;
    analyse(sourceCode: string, filePath: string, workspacePath: string): Promise<ApiResource[]>;
    analysis(codeFile: CodeFile): Promise<ApiResource[]>;
    protected cleanStringLiteral(text: string): string;
    protected isSpringController(annotations: Annotation[]): boolean;
    protected getBaseUrl(annotations: Annotation[]): string;
    protected processControllerMethod(method: CodeFunction, annotations: Annotation[], baseUrl: string, node: CodeStructure): void;
    protected getPathFromAnnotation(annotation: Annotation): string;
    protected findRestTemplateUsages(rootNode: SyntaxNode, node: CodeStructure): void;
    protected combinePaths(basePath: string, subPath: string): string;
}
