import { ManagedElement } from "../node/element"; import type { Node } from "../node/node"; import { LocationContext } from "./location"; export * from "./location"; export declare const ConstructionFailure: unique symbol; export type ConstructorFn = (attributes: Record, children: Node[], ctx?: LocationContext) => ManagedElement | typeof ConstructionFailure; export type ElementClass = { name: string; new: ConstructorFn; prototype: any; } | { name: string; prototype: any; new (name: string, attributes: Record, children: Node[]): ManagedElement; }; export declare class ParseContext { protected readonly constructors: Map; registerConstructor(klass: ElementClass): void; registerCustomNamedConstructor(name: string, klass: ElementClass): void; getConstructor(name: string): ConstructorFn | undefined; }