import type { UiElementKind, UiSchemaObject } from "../types.js"; import type { UiSchemaFactory } from "./factory.js"; import type { UiElementVisitor } from "./visitor.js"; import { UiCustomAttributeCollection } from "./custom-attributes.js"; import { UiRule } from "./ui-rule.js"; export type { UiElementKind }; export declare abstract class UiElement { protected readonly customAttributes: UiCustomAttributeCollection; protected _rule?: UiRule; protected _options: Record; protected _i18n?: string; protected constructor(customAttributes: UiCustomAttributeCollection); abstract readonly elementKind: UiElementKind; abstract accept(visitor: UiElementVisitor): T; abstract deepClone(): UiElement; protected abstract writeElementDefinition(json: UiSchemaObject): void; get rule(): UiRule | undefined; set rule(value: UiRule | undefined); get i18n(): string | undefined; set i18n(value: string | undefined); get options(): Readonly>; setOption(key: string, value: unknown): this; toJSON(): UiSchemaObject; clone(): UiElement; get elementType(): UiElementKind; getCustomAttribute(name: string): T | undefined; setCustomAttribute(name: string, value: unknown): void; protected cloneAttributes(): UiCustomAttributeCollection; protected applyCustomAttributes(json: UiSchemaObject): void; protected applyRuleFrom(json: UiSchemaObject): void; protected applyOptionsFrom(json: UiSchemaObject): void; protected applyI18nFrom(json: UiSchemaObject): void; protected writeRuleTo(json: UiSchemaObject): void; protected writeOptionsTo(json: UiSchemaObject): void; protected writeI18nTo(json: UiSchemaObject): void; protected copyElementStateTo(target: UiElement): void; } export declare abstract class UiLayout extends UiElement { protected readonly childElements: UiElement[]; get elements(): readonly UiElement[]; protected validateChild(_child: UiElement): void; addChild(element: UiElement): this; getChild(index: number): UiElement | undefined; setChild(index: number, element: UiElement): this; removeChild(index: number): this; insertChild(index: number, element: UiElement): this; moveChild(fromIndex: number, toIndex: number): this; protected applyLayoutMetadataFrom(json: UiSchemaObject, factory: UiSchemaFactory): void; protected cloneChildrenTo(target: UiLayout): void; protected writeChildElements(json: UiSchemaObject): void; protected readChildElements(json: UiSchemaObject, factory: UiSchemaFactory): void; } //# sourceMappingURL=node.d.ts.map