import { invariant } from '@likec4/core';
import { type LangiumDocument } from 'langium';
import type { ParsedLikeC4LangiumDocument } from '../ast';
import type { LikeC4Services } from '../module';
import { BaseParser } from './parser/Base';
export type ModelParsedListener = () => void;
declare const DocumentParserFromMixins: {
    new (...args: any[]): {
        parseGlobals(): void;
        parseAndStoreGlobalPredicateGroupOrDynamic(astRule: import("../generated/ast").GlobalPredicateGroup | import("../generated/ast").GlobalDynamicPredicateGroup, id: invariant, c4Globals: import("../ast").ParsedAstGlobals): void;
        parseGlobalPredicateGroup(astRule: import("../generated/ast").GlobalPredicateGroup): invariant[];
        parseGlobalDynamicPredicateGroup(astRule: import("../generated/ast").GlobalDynamicPredicateGroup): invariant[];
        parseGlobalStyleOrGroup(astRule: import("../generated/ast").GlobalStyle | import("../generated/ast").GlobalStyleGroup): invariant[];
        parseViews(): void;
        parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: invariant[]): import("../ast").ParsedAstElementView;
        parseViewRule(astRule: import("../generated/ast").ViewRule): invariant;
        parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): invariant;
        parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): invariant;
        parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): invariant;
        parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): invariant;
        parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): invariant;
        parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): invariant;
        parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): invariant;
        parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: invariant[]): import("../ast").ParsedAstDynamicView;
        parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): invariant;
        parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): invariant;
        parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): invariant;
        parseDynamicStep(node: import("../generated/ast").DynamicViewStep): invariant;
        parsePredicate(astNode: import("../generated/ast").Predicate): invariant;
        parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): invariant;
        parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): invariant[];
        parseElementExpression(astNode: import("../generated/ast").ElementExpression): invariant;
        parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): invariant;
        parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): invariant;
        parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): invariant;
        parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): invariant;
        parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: invariant | invariant): invariant;
        parseRelationExpression(astNode: import("../generated/ast").RelationExpression): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
        parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): invariant;
        parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): invariant;
        parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): invariant;
        parseFqnRef(astNode: import("../generated/ast").FqnRef): invariant;
        parseFqnExpr(astNode: import("../generated/ast").FqnExpr): invariant;
        parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): invariant;
        parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): invariant[];
        parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): invariant;
        parseRelationExpr(astNode: import("../generated/ast").RelationExpr): invariant;
        parseDeployment(): void;
        parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
        parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
        parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
    };
} & {
    new (...args: any[]): {
        parseViews(): void;
        parseElementView(astNode: import("../generated/ast").ElementView, additionalStyles: invariant[]): import("../ast").ParsedAstElementView;
        parseViewRule(astRule: import("../generated/ast").ViewRule): invariant;
        parseViewRulePredicate(astNode: import("../generated/ast").ViewRulePredicate): invariant;
        parseViewRuleGlobalPredicateRef(astRule: import("../generated/ast").ViewRuleGlobalPredicateRef | import("../generated/ast").DynamicViewGlobalPredicateRef): invariant;
        parseViewRuleStyleOrGlobalRef(astRule: import("../generated/ast").ViewRuleStyleOrGlobalRef): invariant;
        parseViewRuleGroup(astNode: import("../generated/ast").ViewRuleGroup): invariant;
        parseViewRuleStyle(astRule: import("../generated/ast").ViewRuleStyle | import("../generated/ast").GlobalStyle): invariant;
        parseRuleStyle(styleProperties: import("../generated/ast").StyleProperty[], elementExpressionsIterator: import("../generated/ast").ElementExpressionsIterator, notationProperty?: import("../generated/ast").NotationProperty): invariant;
        parseViewRuleGlobalStyle(astRule: import("../generated/ast").ViewRuleGlobalStyle): invariant;
        parseDynamicElementView(astNode: import("../generated/ast").DynamicView, additionalStyles: invariant[]): import("../ast").ParsedAstDynamicView;
        parseDynamicViewRule(astRule: import("../generated/ast").DynamicViewRule): invariant;
        parseDynamicViewIncludePredicate(astRule: import("../generated/ast").DynamicViewIncludePredicate): invariant;
        parseDynamicParallelSteps(node: import("../generated/ast").DynamicViewParallelSteps): invariant;
        parseDynamicStep(node: import("../generated/ast").DynamicViewStep): invariant;
        parsePredicate(astNode: import("../generated/ast").Predicate): invariant;
        parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): invariant;
        parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): invariant[];
        parseElementExpression(astNode: import("../generated/ast").ElementExpression): invariant;
        parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): invariant;
        parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): invariant;
        parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): invariant;
        parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): invariant;
        parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: invariant | invariant): invariant;
        parseRelationExpression(astNode: import("../generated/ast").RelationExpression): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
        parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): invariant;
        parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): invariant;
        parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): invariant;
        parseFqnRef(astNode: import("../generated/ast").FqnRef): invariant;
        parseFqnExpr(astNode: import("../generated/ast").FqnExpr): invariant;
        parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): invariant;
        parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): invariant[];
        parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): invariant;
        parseRelationExpr(astNode: import("../generated/ast").RelationExpr): invariant;
        parseDeployment(): void;
        parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
        parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
        parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
    };
} & {
    new (...args: any[]): {
        parseSpecification(): void;
        parseSpecificationDeploymentNodeKind({ kind, props }: import("../generated/ast").SpecificationDeploymentNodeKind): {};
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
    };
} & {
    new (...args: any[]): {
        parsePredicate(astNode: import("../generated/ast").Predicate): invariant;
        parseElementPredicate(astNode: import("../generated/ast").ElementPredicate): invariant;
        parseElementExpressionsIterator(astNode: import("../generated/ast").ElementExpressionsIterator): invariant[];
        parseElementExpression(astNode: import("../generated/ast").ElementExpression): invariant;
        parseElementPredicateWhere(astNode: import("../generated/ast").ElementPredicateWhere): invariant;
        parseElementPredicateWith(astNode: import("../generated/ast").ElementPredicateWith): invariant;
        parseRelationPredicate(astNode: import("../generated/ast").RelationPredicate): invariant;
        parseRelationPredicateWhere(astNode: import("../generated/ast").RelationPredicateWhere): invariant;
        parseRelationPredicateWith(astNode: import("../generated/ast").RelationPredicateWith, relation: invariant | invariant): invariant;
        parseRelationExpression(astNode: import("../generated/ast").RelationExpression): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
    };
} & {
    new (...args: any[]): {
        parseDeploymentView(astNode: import("../generated/ast").DeploymentView): import("../ast").ParsedAstDeploymentView;
        parseDeploymentViewRule(astRule: import("../generated/ast").DeploymentViewRule): invariant;
        parseDeploymentViewRulePredicate(astRule: import("../generated/ast").DeploymentViewRulePredicate): invariant;
        parseDeploymentViewRuleStyle(astRule: import("../generated/ast").DeploymentViewRuleStyle): invariant;
        parseFqnRef(astNode: import("../generated/ast").FqnRef): invariant;
        parseFqnExpr(astNode: import("../generated/ast").FqnExpr): invariant;
        parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): invariant;
        parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): invariant[];
        parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): invariant;
        parseRelationExpr(astNode: import("../generated/ast").RelationExpr): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseDeployment(): void;
        parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
        parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
        parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
    };
} & {
    new (...args: any[]): {
        parseDeployment(): void;
        parseDeploymentNode(astNode: import("../generated/ast").DeploymentNode): import("../ast").ParsedAstDeployment.Node;
        parseDeployedInstance(astNode: import("../generated/ast").DeployedInstance): import("../ast").ParsedAstDeployment.Instance;
        parseDeploymentRelation(astNode: import("../generated/ast").DeploymentRelation): import("../ast").ParsedAstDeploymentRelation;
        parseFqnRef(astNode: import("../generated/ast").FqnRef): invariant;
        parseFqnExpr(astNode: import("../generated/ast").FqnExpr): invariant;
        parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): invariant;
        parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): invariant[];
        parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): invariant;
        parseRelationExpr(astNode: import("../generated/ast").RelationExpr): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
    };
} & {
    new (...args: any[]): {
        parseModel(): void;
        parseElement(astNode: import("../generated/ast").Element): import("../ast").ParsedAstElement;
        parseRelation(astNode: import("../generated/ast").Relation): import("../ast").ParsedAstRelation;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
    };
} & {
    new (...args: any[]): {
        parseFqnRef(astNode: import("../generated/ast").FqnRef): invariant;
        parseFqnExpr(astNode: import("../generated/ast").FqnExpr): invariant;
        parseFqnRefExpr(astNode: import("../generated/ast").FqnRefExpr): invariant;
        parseFqnExpressions(astNode: import("../generated/ast").FqnExpressions): invariant[];
        parseRelationWhereExpr(astNode: import("../generated/ast").RelationPredicateWhereV2): invariant;
        parseRelationExpr(astNode: import("../generated/ast").RelationExpr): invariant;
        isValid: import("../validation").IsValidFn;
        readonly services: LikeC4Services;
        readonly doc: ParsedLikeC4LangiumDocument;
        resolveFqn(node: import("../generated/ast").FqnReferenceable): invariant;
        getAstNodePath(node: invariant): any;
        getMetadata(metadataAstNode: import("../generated/ast").MetadataProperty | undefined): {
            [key: string]: string;
        } | undefined;
        convertTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E | undefined): any;
        parseTags<E extends {
            tags?: import("../generated/ast").Tags;
        }>(withTags?: E): invariant<invariant> | null;
        convertLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
        parseLinks(source?: import("../generated/ast").LinkProperty["$container"]): import("../ast").ParsedLink[] | undefined;
    };
} & typeof BaseParser;
export declare class DocumentParser extends DocumentParserFromMixins {
}
export declare class LikeC4ModelParser {
    private services;
    private cachedParsers;
    constructor(services: LikeC4Services);
    parse(doc: LangiumDocument): ParsedLikeC4LangiumDocument;
    forDocument(doc: LangiumDocument): DocumentParser;
}
export {};
