import type { Character } from "./Character.js";
import type { SlotInfo, StatusInfo, TradeSlotType } from "./definitions/adventureland.js";
import type { CharacterType, CXData, DamageType, GData, MapName, NPCName, SkillName } from "./definitions/adventureland-data.js";
import type { ChannelInfo, PlayerData, QInfo } from "./definitions/adventureland-server.js";
import type { Entity } from "./Entity.js";
import { TradeItem } from "./TradeItem.js";
export declare class Player implements PlayerData {
    protected G: GData;
    afk?: boolean | "code";
    id: string;
    ctype: CharacterType;
    abs: boolean;
    angle?: number;
    armor: number;
    apiercing: number;
    attack: number;
    avoidance: number;
    cid: number;
    crit: number;
    critdamage: number;
    damage_type: DamageType;
    evasion: number;
    frequency: number;
    going_x?: number;
    going_y?: number;
    heal: number;
    level: number;
    move_num: number;
    moving: boolean;
    name?: string;
    party: string;
    reflection: number;
    resistance: number;
    rpiercing: number;
    target: string;
    team?: string;
    x: number;
    y: number;
    s: StatusInfo;
    c: ChannelInfo;
    cx: CXData;
    focus?: string;
    hp: number;
    max_hp: number;
    max_mp: number;
    mp: number;
    npc?: NPCName;
    owner: string;
    pdps: number;
    q: QInfo;
    range: number;
    rip: boolean;
    skin: string;
    slots: SlotInfo;
    speed: number;
    stand?: boolean | "cstand" | "stand0";
    tp?: boolean;
    in: string;
    map: MapName;
    width: number;
    height: number;
    constructor(data: PlayerData, map: MapName, instance: string, g: GData);
    updateData(data: PlayerData): void;
    calculateDamageRange(defender: Character | Entity | Player, skill?: SkillName): [number, number];
    /**
     * Returns the items that the player is selling in their trade slots.
     *
     * @see getWantedItems for items the player is buying
     */
    getItemsForSale(): Map<TradeSlotType, TradeItem>;
    /**
     * Returns the items that the player is purchasing in their trade slots
     *
     * @see getItemsForSale for items the player is selling
     */
    getWantedItems(): Map<TradeSlotType, TradeItem>;
    /**
     * Returns true if the player is attacking us, or one of our party members
     * @param player The player whose party to check if they are attacking
     */
    isAttackingPartyMember(player: Character): boolean;
    /**
     * Returns true if they are attacking us specifically, false otherwise
     * @param player The player to check if they are attacking
     */
    isAttackingUs(player: Character): boolean;
    /**
     * If the player is disabled, they cannot move or attack
     * @returns If the player is disabled
     */
    isDisabled(): boolean;
    /**
     * Returns true if the player is "friendly", for example, if it's one of our characters, in our party, or in our friends list.
     * @param character Our character (e.g.: bot.character)
     */
    isFriendly(bot: Character): boolean;
    /**
     * Returns true if this player is an NPC.
     *
     * @return {*}  {boolean}
     * @memberof Player
     */
    isNPC(): boolean;
}
