import { CharacterEvent, CharacterEventPayload } from './character.event';
import { Faction, Loadout } from '../../constants';
export type AttackerEventPayload = Extract<CharacterEventPayload, {
    attacker_character_id: string;
    attacker_team_id: string;
    attacker_loadout_id: string;
    attacker_vehicle_id: string;
    attacker_weapon_id: string;
    team_id: string;
}>;
export declare abstract class AttackerEvent<T extends AttackerEventPayload> extends CharacterEvent<T> {
    /**
     * Can be overwritten if necessary
     */
    static loadoutFactionMap: Map<string, Faction>;
    static loadoutTypeMap: Map<string, Loadout>;
    readonly attacker_character_id: string;
    readonly attacker_team_id: Faction;
    readonly attacker_loadout_id: string;
    readonly attacker_vehicle_id: string;
    readonly attacker_weapon_id: string;
    readonly team_id: Faction;
    /**
     * Fetch the character data from the attacker
     *
     * @return {Promise<any>}
     */
    attacker<T = any>(): Promise<T | undefined>;
    /**
     * Faction of the attacker
     *
     * @return {Faction}
     */
    get attacker_faction(): Faction;
    /**
     * Attacker was playing as
     *
     * @return {Loadout}
     */
    get attacker_loadout(): Loadout;
}
