import * as TSU from "@panyam/tsutils";
import { Atom } from "../core";
import { LeafAtomView as LeafAtomViewBase, GroupView as GroupViewBase, AtomView, Embelishment, ElementShape } from "../shapes";
export declare class GroupView extends GroupViewBase {
    createAtomView(atom: Atom): AtomView;
}
export declare abstract class LeafAtomView extends LeafAtomViewBase {
    leftSlot: Embelishment[];
    topSlot: Embelishment[];
    rightSlot: Embelishment[];
    bottomSlot: Embelishment[];
    glyph: ElementShape;
    protected postSpacingSpan: SVGTSpanElement;
    protected rootGroup: ElementShape;
    protected rootText: ElementShape;
    abstract get glyphLabel(): string;
    protected refreshBBox(): TSU.Geom.Rect;
    protected refreshMinSize(): TSU.Geom.Size;
    protected updateBounds(x: null | number, y: null | number, w: null | number, h: null | number): [number | null, number | null, number | null, number | null];
    protected layoutElements(): void;
    refreshLayout(): void;
    protected addEmbelishment(slot: Embelishment[], emb: Embelishment): void;
    orderEmbelishments(): void;
    embRoot(): SVGGraphicsElement;
    needsRootElement(): boolean;
    createElements(parent: SVGGraphicsElement): void;
    protected createGlyphRoot(parent: SVGGraphicsElement): void;
    protected createGlyphElement(): void;
    protected createPostSpacingElement(): void;
}
export declare function createAtomView(parent: SVGGraphicsElement, atom: Atom, litDefaultsToNote?: boolean, groupViewScale?: number): AtomView;
