import Box from "awayjs-core/lib/geom/Box";
import Vector3D from "awayjs-core/lib/geom/Vector3D";
import Sphere from "awayjs-core/lib/geom/Sphere";
import Matrix3D from "awayjs-core/lib/geom/Matrix3D";
import AssetBase from "awayjs-core/lib/library/AssetBase";
import ElementsBase from "../graphics/ElementsBase";
import Graphic from "../graphics/Graphic";
import Style from "../base/Style";
import MaterialBase from "../materials/MaterialBase";
import IAnimator from "../animators/IAnimator";
import ITraverser from "../ITraverser";
import ParticleData from "../animators/data/ParticleData";
/**
 *
 * Graphics is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices,
 * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.
 * A Graphics object is assigned to a Sprite, a scene graph occurence of the geometry, which in turn assigns
 * the SubGeometries to its respective TriangleGraphic objects.
 *
 *
 *
 * @see away.core.base.SubGraphics
 * @see away.entities.Sprite
 *
 * @class Graphics
 */
declare class Graphics extends AssetBase {
    static assetType: string;
    private _onInvalidatePropertiesDelegate;
    private _onInvalidateVerticesDelegate;
    private _boxBounds;
    private _boxBoundsInvalid;
    private _sphereBounds;
    private _sphereBoundsInvalid;
    private _material;
    private _graphics;
    private _animator;
    private _style;
    readonly assetType: string;
    particles: Array<ParticleData>;
    numParticles: number;
    readonly count: number;
    /**
     * Defines the animator of the graphics object.  Default value is <code>null</code>.
     */
    animator: IAnimator;
    /**
     *
     */
    style: Style;
    /**
     * The material with which to render the Graphics.
     */
    material: MaterialBase;
    /**
     * Creates a new Graphics object.
     */
    constructor();
    /**
     * Adds a GraphicBase wrapping a Elements.
     *
     * @param elements
     */
    addGraphic(elements: ElementsBase, material?: MaterialBase, style?: Style): Graphic;
    removeGraphic(graphic: Graphic): void;
    getGraphicAt(index: number): Graphic;
    applyTransformation(transform: Matrix3D): void;
    copyTo(graphics: Graphics): void;
    /**
     * Scales the geometry.
     * @param scale The amount by which to scale.
     */
    scale(scale: number): void;
    clear(): void;
    /**
     * Clears all resources used by the Graphics object, including SubGeometries.
     */
    dispose(): void;
    /**
     * Scales the uv coordinates (tiling)
     * @param scaleU The amount by which to scale on the u axis. Default is 1;
     * @param scaleV The amount by which to scale on the v axis. Default is 1;
     */
    scaleUV(scaleU?: number, scaleV?: number): void;
    getBoxBounds(): Box;
    getSphereBounds(center: Vector3D, target?: Sphere): Sphere;
    invalidate(): void;
    _iInvalidateSurfaces(): void;
    invalidateElements(): void;
    _hitTestPointInternal(x: number, y: number): boolean;
    acceptTraverser(traverser: ITraverser): void;
    private _onInvalidateProperties(event);
    private _onInvalidateVertices(event);
}
export default Graphics;
