import { Image } from "./image";
export declare class SpriteSheetImage extends Image {
    private speedTimer;
    private _animations;
    private _currentAnimation;
    protected _currentAnimationFrameIndex: number;
    private _pause;
    private _spriteSheetWidth;
    private _spriteSheetHeight;
    private _spritesCountX;
    private _spritesCountY;
    private _spriteX;
    private _spriteY;
    private _spritePaddingX;
    private _spritePaddingY;
    constructor(src: string, spritesCountX: number, spritesCountY: number, x: number, y: number, width: number, height: number, defaultSpritePosition?: {
        x: number;
        y: number;
    });
    update(delta: number): void;
    private nextFrame;
    /**
     * Animate the spritesheet with the registered animation
     * To register an animation see {@link SpriteSheetImage.addAnimation}
     * @param name
     * @param speed
     */
    animate(name: string, speed?: number | null): Animation | null;
    /**
     * Register a new animation
     * Animation can be started by calling {@link SpriteSheetImage.animate} with the animation name
     *
     * @param name
     * @param fromSpriteY
     * @param fromSpriteX
     * @param toSpriteY
     * @param toSpriteX
     * @param speed
     */
    addAnimation(name: string, fromSpriteY: number, fromSpriteX: number, toSpriteY: number, toSpriteX: number, speed: number): void;
    /**
     * @param name Name of the animation to remove
     * @return Index of removed animation
     */
    removeAnimation(name: string): number;
    get animations(): Animation[];
    get currentAnimation(): Animation | null;
    stopAnimation(): void;
    get pause(): boolean;
    set pause(value: boolean);
    get spritePaddingX(): number;
    set spritePaddingX(value: number);
    get spritePaddingY(): number;
    set spritePaddingY(value: number);
    get spriteX(): number;
    set spriteX(value: number);
    get spriteY(): number;
    set spriteY(value: number);
}
export interface Animation {
    name: string;
    frames: Frame[];
    speed: number;
}
export interface Frame {
    x: number;
    y: number;
}
