import { IElements, ShaderBase, _Render_RenderableBase } from '@awayjs/renderer';
import { _Render_Shape } from '../renderables/Shape';
import { IAnimationTransition } from './transitions/IAnimationTransition';
import { AnimatorBase } from './AnimatorBase';
import { VertexAnimationSet } from './VertexAnimationSet';
/**
 * Provides an interface for assigning vertex-based animation data sets to entity-based entity objects
 * and controlling the various available states of animation through an interative playhead that can be
 * automatically updated or manually triggered.
 */
export declare class VertexAnimator extends AnimatorBase {
    private _vertexAnimationSet;
    private _poses;
    private _weights;
    private _activeVertexState;
    /**
     * Creates a new <code>VertexAnimator</code> object.
     *
     * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.
     */
    constructor(vertexAnimationSet: VertexAnimationSet);
    /**
     * @inheritDoc
     */
    clone(): AnimatorBase;
    /**
     * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame.
     * @param sequenceName The name of the clip to be played.
     */
    play(name: string, transition?: IAnimationTransition, offset?: number): void;
    /**
     * @inheritDoc
     */
    _pUpdateDeltaTime(dt: number): void;
    /**
     * @inheritDoc
     */
    setRenderState(shader: ShaderBase, renderable: _Render_Shape): void;
    private setNullPose;
    /**
     * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu.
     * Needs to be called if gpu code is potentially required.
     */
    testGPUCompatibility(shader: ShaderBase): void;
    getRenderableElements(renderState: _Render_RenderableBase, sourceElements: IElements): IElements;
}
//# sourceMappingURL=VertexAnimator.d.ts.map