import { Component } from "../../hierarchy_object/Component";
import type { ComponentConstructor } from "../../hierarchy_object/ComponentConstructor";
/**
 * simple sprite animator
 *
 * this component will switch sprite image every interval time
 *
 *
 * disallow multiple component
 *
 * require components: `CssSpriteRenderer`
 */
export declare class SpriteAnimator extends Component {
    readonly disallowMultipleComponent: boolean;
    readonly requiredComponents: ComponentConstructor[];
    private _spriteRenderer;
    private readonly _animations;
    private _playingAnimationName;
    private _playingAnimation;
    private _playingAnimationFrame;
    private _playing;
    private _frameDuration;
    private _currentFrameDuration;
    private _pendingPlayAnimation;
    awake(): void;
    update(): void;
    /**
     * play animation by name
     * @param name animation name
     * @returns
     */
    playAnimation(name: string): void;
    /**
     * stop current animation
     */
    stopAnimation(): void;
    /**
     * add animation from image array
     * @param name animation name
     * @param animationFrames animation frames
     * @returns
     */
    addAnimation(name: string, animationFrames: HTMLImageElement[]): void;
    /**
     * add animation from image url array
     * @param name animation name
     * @param animationFrames animation frames url
     */
    addAnimationFromPath(name: string, animationFrames: string[]): void;
    /**
     * frame duration (default: 2)
     *
     * larger value means slower animation
     */
    get frameDuration(): number;
    /**
     * frame duration (default: 2)
     *
     * larger value means slower animation
     */
    set frameDuration(value: number);
}
