import type * as c4 from '@likec4/core';
import type { AstNode } from 'langium';
import { type ParsedLikeC4LangiumDocument, type ParsedLink, ast } from '../../ast';
import type { LikeC4Services } from '../../module';
import { type IsValidFn } from '../../validation';
export type GConstructor<T = {}> = new (...args: any[]) => T;
export declare function toSingleLine<T extends string | undefined | null>(str: T): T;
export declare function removeIndent<T extends string | undefined | null>(str: T): T;
export type Base = GConstructor<BaseParser>;
export declare class BaseParser {
    readonly services: LikeC4Services;
    readonly doc: ParsedLikeC4LangiumDocument;
    isValid: IsValidFn;
    constructor(services: LikeC4Services, doc: ParsedLikeC4LangiumDocument);
    resolveFqn(node: ast.FqnReferenceable): c4.Fqn;
    getAstNodePath(node: AstNode): any;
    getMetadata(metadataAstNode: ast.MetadataProperty | undefined): {
        [key: string]: string;
    } | undefined;
    convertTags<E extends {
        tags?: ast.Tags;
    }>(withTags?: E): any;
    parseTags<E extends {
        tags?: ast.Tags;
    }>(withTags?: E): c4.NonEmptyArray<c4.Tag> | null;
    convertLinks(source?: ast.LinkProperty['$container']): ParsedLink[] | undefined;
    parseLinks(source?: ast.LinkProperty['$container']): ParsedLink[] | undefined;
}
