import EventEmitter from 'eventemitter3'; import ZoneInfo from '../../resources/zone_info'; import { EventResponses as OverlayEventResponses, Party } from '../../types/event'; import { NetFields } from '../../types/net_fields'; import { ToMatches } from '../../types/net_matches'; import { Player } from './player'; export type PartialFieldMatches = Partial>; export interface EventMap { 'player': (data: OverlayEventResponses['onPlayerChangedEvent']) => void; 'party': (party: Party[]) => void; 'zone/change': (id: number, name: string, info?: typeof ZoneInfo[number]) => void; 'battle/in-combat': (info: { game: boolean; act: boolean; }) => void; 'battle/wipe': () => void; 'battle/target': (target?: { name: string; distance: number; effectiveDistance: number; }) => void; 'effect/gain': (effectId: string, info: PartialFieldMatches<'GainsEffect'>) => void; 'effect/lose': (effectId: string, info: PartialFieldMatches<'LosesEffect'>) => void; 'tick/dot': (damage: number, info: PartialFieldMatches<'NetworkDoT'>) => void; 'tick/hot': (heal: number, info: PartialFieldMatches<'NetworkDoT'>) => void; 'log': (line: string[], rawLine: string) => void; 'log/game': (log: PartialFieldMatches<'GameLog'>, line: string[], rawLine: string) => void; } export declare class JobsEventEmitter extends EventEmitter { constructor(); registerOverlayListeners(): void; private processLogLine; processEnmityTargetData({ Target: target }: OverlayEventResponses['EnmityTargetData']): void; } /** * Track DoTs that was applied to mobs. * * Emit events when DoT ticks on your main target. * * The mechanism of this tracker is to find out the target that player * has applied DoT to and attacked with some actions. * (Which we call it the "last attacked DoTed target", is the boss in most cases.) * For a Bard, if there are a boss and some adds, the Bard would likely * keep the DoT on the boss while attacking the adds without any DoT. * * @example * * const tracker = new DoTTracker({ emitter: emitter, player: player}); * tracker.onTick([EffectId.Stormbite, EffectId.CausticBite], (targetId) => { * // do something like update repertoire timer. * }); */ export declare class DotTracker extends EventEmitter<{ tick: (targetId?: string) => void; }, DotTracker> { ee: JobsEventEmitter; player: Player; trackedDoTs: string[]; targets: string[]; lastAttackedTarget?: string; constructor(o: { emitter: JobsEventEmitter; player: Player; }); private registerListeners; onTick(trackedDoTs: string[], cb: (targetId?: string) => void): void; reset(): void; }