import { EventEmitter, h } from '../../stencil-public-runtime';
import { Euler, Matrix4, Quaternion, Vector3 } from '@vertexvis/geometry';
import { HTMLDomRendererPositionableElement } from '../../interfaces';
export declare class ViewerDomGroup implements HTMLDomRendererPositionableElement {
    /**
     * The local 3D position of where this element is located.
     */
    position: Vector3.Vector3;
    /**
     * @ignore
     */
    protected handlePositionChange(): void;
    /**
     * The local 3D position of where this element is located, as a JSON string.
     * JSON representation can either be in the format of `[x, y, z]` or `{"x": 0,
     * "y": 0, "z": 0}`.
     */
    positionJson: string;
    /**
     * @ignore
     */
    protected handlePositionJsonChanged(): void;
    /**
     * An event that is emitted when any property on the dom group changes
     */
    propertyChange: EventEmitter<void>;
    /**
     * The local rotation of this element in Euler angles.
     */
    rotation?: Euler.Euler;
    /**
     * @ignore
     */
    protected handleRotationChanged(): void;
    /**
     * The local rotation of this element in Euler angles, as a JSON string. JSON
     * representation can either be `[x, y, z, order]` or `{"x": 0, "y": 0, "z":
     * 0, "order": "xyz"}`.
     */
    rotationJson?: string;
    /**
     * @ignore
     */
    protected handleRotationJsonChanged(): void;
    /**
     * The local rotation of this element.
     */
    quaternion: Quaternion.Quaternion;
    /**
     * @ignore
     */
    protected handleQuaternionChange(): void;
    /**
     * The local rotation of this element, as a JSON string. JSON
     * representation can either be `[x, y, z, w]` or `{"x": 0, "y": 0, "z":
     * 0, "w": 1}`.
     */
    quaternionJson: string;
    /**
     * @ignore
     */
    protected handleQuaternionJsonChanged(): void;
    /**
     * The local scale of this element.
     */
    scale: Vector3.Vector3;
    /**
     * @ignore
     */
    protected handleScaleChange(): void;
    /**
     * The local scale of this element, as a JSON string. JSON string
     * representation can either be in the format of `[x, y, z]` or `{"x": 0, "y":
     * 0, "z": 0}`.
     */
    scaleJson: string;
    /**
     * @ignore
     */
    protected handleScaleJsonChanged(): void;
    /**
     * @ignore
     */
    protected handleMatrixChanged(newMatrix: Matrix4.Matrix4, oldMatrix: Matrix4.Matrix4): void;
    /**
     * The local matrix of this element.
     */
    matrix: Matrix4.Matrix4;
    /**
     * @ignore
     */
    protected componentWillLoad(): void;
    /**
     * @ignore
     */
    protected componentShouldUpdate(): boolean;
    private syncProperties;
    private syncPosition;
    private syncRotation;
    private syncQuaternionWithRotation;
    private syncQuaternion;
    private syncScale;
    private syncMatrix;
    private parseJson;
    /**
     * @ignore
     */
    protected render(): h.JSX.IntrinsicElements;
}
