import type { Emitter } from "../../../core/emitter"; import type { EntityID } from "../../../core/Entity"; import type { Action } from "../../actions/types"; import type { MeshBuilderComponentProps } from "../../components/graphics/MeshBuilderComponent"; import type { Player } from "../../players/Player"; import type { WidgetProps } from "../Widget"; import { Widget } from "../Widget"; export declare type SpriteElement = HTMLDivElement & { sprite: Sprite; }; export declare type SpriteProps = Omit & { armor?: number; blocksPathing?: number; color?: string; facing?: number; health?: number; id?: EntityID; maxHealth?: number; meshBuilder?: MeshBuilderComponentProps; owner?: Player; priority?: number; collisionRadius?: number; requiresPathing?: number; selectable?: boolean; x: number; y: number; }; export declare type Effect = { type: "slow"; oldSpeed: number; timeout: number; }; export declare type SpriteEvents = { change: (prop: K, oldValue: Sprite[K]) => void; death: () => void; remove: () => void; }; export declare type SpriteDefaultProps = Required>; declare class Sprite extends Widget { static readonly isSprite = true; static defaults: SpriteDefaultProps; static get clonedDefaults(): Required>; armor: number; blocksPathing: number; color?: string; effects: Effect[]; facing: number; invulnerable: boolean; isAlive: boolean; maxHealth: number; owner?: Player; priority: number; collisionRadius: number; requiresPathing: number; selectable: boolean; private _x; private _y; private _health; constructor({ armor, blocksPathing, color, facing, maxHealth, health, meshBuilder, owner, priority, collisionRadius, requiresPathing, selectable, ...props }: SpriteProps); damage(amount: number): number; kill({ removeImmediately }?: { removeImmediately?: boolean | undefined; }): void; set health(value: number); get health(): number; _death({ removeImmediately }?: { removeImmediately?: boolean | undefined; }): void; remove(callInitializedFromApp?: boolean): void; get actions(): Action[]; get idle(): boolean; toJSON(): ReturnType & { type: string; health: number; owner?: number; }; static fromJSON({ components, type, owner: ownerId, ...data }: ReturnType): Sprite; } interface Sprite extends Emitter { } export { Sprite };