import { NodeType } from '@dark-engine/core';
import { type AttributeValue } from '@dark-engine/platform-browser';
declare abstract class NativeElement {
  type: NodeType;
  parentElement: TagNativeElement;
  constructor(type: NodeType);
  abstract render(): string;
  abstract render(isOpening: boolean): string;
  abstract renderToString(): string;
}
declare class TagNativeElement extends NativeElement {
  name: string;
  attrs: Record<string, AttributeValue>;
  children: Array<NativeElement>;
  constructor(name: string);
  appendChild(element: NativeElement): void;
  setAttribute(name: string, value: AttributeValue): void;
  render(isOpening?: boolean): string;
  renderToString(): string;
}
declare class TextNativeElement extends NativeElement {
  private value;
  constructor(text: string);
  render(): string;
  renderToString(): string;
}
declare class CommentNativeElement extends NativeElement {
  private value;
  constructor(text: string);
  render(): string;
  renderToString(): string;
}
export { NativeElement, TagNativeElement, TextNativeElement, CommentNativeElement };
