import { ParserResult, ScopeData, SuccessfulParserResult } from "./attributes"; import { Either } from "monet"; import { AttributeParserError, TcatError } from "../core"; import { HasChildrenAstNode, TemplateRootNode } from "../generator/ast"; import { DirectiveAttribute, DirectiveData, DirectiveMap } from "../directives"; import { AST } from "parse5"; import Default = AST.Default; import Node = Default.Node; import TextNode = Default.TextNode; import Element = Default.Element; import ParentNode = Default.ParentNode; export declare type ElementDirectiveParserResult = Either; export declare type ElementDirectiveParser = (element: Element, directives: DirectiveMap) => ElementDirectiveParserResult; export interface ElementParserContext { readonly node: Node; readonly errors: AttributeParserError[]; readonly parsedAttributes: string[]; scopeData: ScopeData | undefined; isScopeEnd: boolean; terminated: boolean; } export interface ScopeStackEntry { element: Node; astNode: HasChildrenAstNode; } export declare function parseElement(element: Node, directives: DirectiveMap, scopeInterfaceName: string): Either; export declare class ElementWalker { protected readonly directives: DirectiveMap; protected root: TemplateRootNode; protected readonly scopeStack: ScopeStackEntry[]; protected readonly htmlElementNames: Set; protected shouldSkipHtmlValidation: boolean; constructor(directives: DirectiveMap); protected getCurrentScope(): ScopeStackEntry; protected addParseResult(context: ElementParserContext, result: SuccessfulParserResult): void; protected handleElementDirectiveParseResult(context: ElementParserContext, either: ElementDirectiveParserResult): void; protected handleAttributeDirectiveParseResult(context: ElementParserContext, either: ParserResult): void; protected parseChildren(node: Node | ParentNode, context: ElementParserContext): void; protected identifyDirectives(node: Element): DirectiveData[]; protected validateElement(node: Node | Element, context: ElementParserContext, directives: DirectiveData[]): void; protected parseElementDirective(node: Element, context: ElementParserContext, elementDirective: DirectiveData): void; protected findAttributeValue(node: Element, directiveAttributeName: string): string | undefined; protected parseDirectiveSubAttribute(node: Element, subAttribEntry: DirectiveAttribute, context: ElementParserContext): void; protected parseAttributeDirective(node: Element, context: ElementParserContext, attributeDirective: DirectiveData): void; protected parseNonDirectiveAttributes(node: Element, context: ElementParserContext): void; protected parseInterpolatedText(node: TextNode, context: ElementParserContext): void; protected parseDirectives(node: Element, context: ElementParserContext, directiveData: DirectiveData[]): void; protected parseElement(node: Node): Either; walkTemplate(element: Node, scopeInterfaceName: string): Either; } export declare function templateIdToInterfaceName(templateId: string): string; export declare function parseNgTemplateElement(element: Element, directives: DirectiveMap): ElementDirectiveParserResult; export declare function parseFormElement(element: Element, _directives: DirectiveMap): ElementDirectiveParserResult; export declare function parseInputElement(element: Element, _directives: DirectiveMap): ElementDirectiveParserResult;