import { IAsset } from '../interface/asset.interface';
import { GameService } from '../service/game.service';
import { AssetAlignEnum } from './enum/asset-align.enum';
import { AssetAlignVerticalEnum } from './enum/asset-align-vertical.enum';
import { ObservableModel } from '../model/observable.model';
import { TimerModel } from '../model/timer.model';
import { BoundaryModel } from '../model/boundary.model';
import { BoundarySetupModel } from '../model/boundary-set.model';
export declare abstract class AssetClass implements IAsset {
    protected gameService: GameService;
    protected ctx: CanvasRenderingContext2D;
    protected boundarySetup: BoundarySetupModel;
    protected uid: number;
    shape: number[][];
    x: number;
    y: number;
    isAnimateOnce: boolean;
    protected assetAnimation: number[][];
    protected destructionAnimation: number[][];
    protected engineAnimation: number[][];
    protected requestId: number;
    protected destructionRequestId: number;
    protected assetTimer: TimerModel;
    protected destructionTimer: TimerModel;
    protected engineTimer: TimerModel;
    protected engineXOffset: number;
    protected engineYOffset: number;
    protected animationCounter: number;
    protected destructionAnimationCounter: number;
    protected engineAnimationCounter: number;
    protected boundary: BoundaryModel;
    isDestroyed: boolean;
    protected isGameOver: boolean;
    protected isGamePaused: boolean;
    protected assetAnimations: number[][][];
    protected engineAnimations: number[][][];
    protected destructionAnimations: number[][][];
    constructor(gameService: GameService, ctx: CanvasRenderingContext2D, boundarySetup: BoundarySetupModel, uid: number);
    init(): void;
    getAssetHeight(): number;
    getAssetWidth(): number;
    positionAsset(alignPosition: AssetAlignEnum, justifyPosition: AssetAlignVerticalEnum): IAsset;
    protected processKeyStroke(event: ObservableModel): void;
    protected spawn(): void;
    restore(): void;
    move(asset: IAsset): void;
    protected stopAnimation(): boolean;
}
