import type { SlotInfo, StatusInfo } from "./definitions/adventureland.js";
import type { Attribute, ConditionName, DamageType, GData, GMonster, GMonsterAbilities, MapName, MonsterName, SkillName } from "./definitions/adventureland-data.js";
import type { ActionData, MonsterData } from "./definitions/adventureland-server.js";
import type { Character } from "./Character.js";
import type { Player } from "./Player.js";
export declare class Entity implements MonsterData, Partial<GMonster> {
    protected G: GData;
    abs?: false;
    angle: number;
    cid: number;
    focus?: string;
    going_x: number;
    going_y: number;
    in: string;
    map: MapName;
    move_num: number;
    moving: boolean;
    x: number;
    y: number;
    target: string;
    abilities: GMonsterAbilities;
    charge: number;
    cooperative: boolean;
    damage_type: DamageType;
    attack: number;
    frequency: number;
    hp: number;
    mp: number;
    range: number;
    speed: number;
    apiercing: number;
    armor: number;
    avoidance: number;
    blast: number;
    breaks: number;
    crit: number;
    critdamage: number;
    evasion: number;
    lifesteal: number;
    mcourage: number;
    reflection: number;
    resistance: number;
    rpiercing: number;
    aggro: number;
    name: string;
    rage: number;
    respawn: number;
    skin: string;
    "1hp": boolean;
    aa: number;
    achievements: [number, "stat", Attribute, number][];
    announce?: string;
    article?: string;
    balance?: string;
    cute: boolean;
    difficulty?: number;
    drop_on_hit: boolean;
    escapist: boolean;
    explanation?: string;
    global: boolean;
    goldsteal: number;
    hit?: string;
    humanoid: boolean;
    immune: boolean;
    lucrativeness?: number;
    operator: boolean;
    orientation?: number;
    passive: boolean;
    peaceful: boolean;
    pet?: {
        aggression: [number, number];
        brightness: number;
        chatter: [number, number];
        courage: [number, number];
        exponential: boolean;
        level: {
            [T in Attribute]?: number;
        };
        obedience: [number, number];
        passion: [number, number];
        xp: number;
    };
    poisonous: boolean;
    prefix: string;
    projectile?: string;
    rbuff: ConditionName;
    roam: boolean;
    size?: number;
    slots?: Partial<SlotInfo>;
    spawns?: [number, MonsterName][];
    special: boolean;
    stationary: boolean;
    supporter: boolean;
    trap: boolean;
    unlist: boolean;
    id: string;
    level: number;
    max_hp: number;
    max_mp: number;
    s: StatusInfo & {
        [T in SkillName]?: {
            ms: number;
            ability: true;
        };
    };
    type: MonsterName;
    xp: number;
    width: number;
    height: number;
    constructor(data: MonsterData, map: MapName, instance: string, G: GData);
    updateData(data: MonsterData): void;
    calculateDamageRange(defender: Character | Entity | Player): [number, number];
    /**
     * Returns true if the entity has a >0% chance to die from projectiles already cast.
     *
     * TODO: Consider `blast` and `explosion`
     *
     * @param {Map<string, ActionData>} projectiles (e.g.: bot.projectiles)
     * @param {Map<string, Player>} players (e.g.: bot.players)
     * @param {Map<string, Player>} entities (e.g.: bot.entities)
     * @return {*}  {boolean}
     * @memberof Entity
     */
    couldDieToProjectiles(character: Character, projectiles: Map<string, ActionData>, players: Map<string, Player>, entities: Map<string, Entity>): boolean;
    /**
     * Returns true if killing this monster could drop gold/loot, or give us tracker credit.
     *
     * @param {Character} player
     * @return {*}  {boolean}
     * @memberof Entity
     */
    couldGiveCreditForKill(player: Character): boolean;
    /**
     * Returns true if the monster is attacking the player, or one of its party members
     * @param player The player whose party to check if the monster is attacking
     */
    isAttackingPartyMember(player: Character): boolean;
    /**
     * Returns true if the monster is attacking us specifically, false otherwise
     * @param player The player to check if the monster is attacking
     */
    isAttackingUs(player: Character): boolean;
    /**
     * If the entity is disabled, they cannot move or attack
     * @returns If the entity is disabled
     */
    isDisabled(): boolean;
    /**
     * Returns whether or not the Warrior could taunt this monster
     * @param by The player that will perform the taunt
     */
    isTauntable(by: Character): boolean;
    /**
     * Returns true if the entity will burn to death without taking any additional damage
     * @return {*}  {boolean}
     * @memberof Entity
     */
    willBurnToDeath(): boolean;
    /**
     * Returns true if the entity has a 100% chance to die from projectiles already cast.
     *
     * @param {Map<string, ActionData>} projectiles (e.g.: bot.projectiles)
     * @param {Map<string, Player>} players (e.g.: bot.players)
     * @param {Map<string, Player>} entities (e.g.: bot.entities)
     * @return {*}  {boolean}
     * @memberof Entity
     */
    willDieToProjectiles(character: Character, projectiles: Map<string, ActionData>, players: Map<string, Player>, entities: Map<string, Entity>): boolean;
}
