import PartyTracker from '../../resources/party'; import WidgetList from '../../resources/widget_list'; import { NetMatches } from '../../types/net_matches'; import { FfxivVersion } from './jobs'; import { JobsOptions } from './jobs_options'; export interface BuffInfo { name: string; cooldownAbility?: string[]; gainEffect?: string[]; loseEffect?: string[]; mobGainsEffect?: string; mobLosesEffect?: string; durationSeconds?: number; useEffectDuration?: boolean; icon: string; side?: 'left' | 'right'; borderColor: string; sortKey: number; cooldown?: number; sharesCooldownWith?: string[]; hide?: boolean; stack?: number; partyOnly?: boolean; } export interface Aura { addCallback: () => void; removeCallback: () => void; addTimeout: number | null; /** id in `window.clearTimeout(id)` */ removeTimeout: number | null; } export declare class Buff { name: string; info: BuffInfo; options: JobsOptions; activeList: WidgetList; cooldownList: WidgetList; readyList: WidgetList; active: Aura | null; cooldown: { [s: string]: Aura; }; ready: { [s: string]: Aura; }; readySortKeyBase: number; cooldownSortKeyBase: number; constructor(name: string, info: BuffInfo, list: WidgetList, options: JobsOptions); addCooldown(source: string, effectSeconds: number): void; addReady(source: string): void; makeAura(key: string, list: WidgetList, seconds: number, secondsUntilShow: number, adjustSort: number, textColor: string, txt: string, opacity: number, expireCallback?: () => void): Aura; clear(): void; clearCooldown(source: string): void; onGain(seconds: number): void; onLose(): void; onCooldown(seconds: number, source: string): void; } export declare class BuffTracker { private options; private playerName; private leftBuffDiv; private rightBuffDiv; private partyTracker; private ffxivVersion; buffInfo: { [s: string]: Omit; }; buffs: { [s: string]: Buff; }; gainEffectMap: { [s: string]: BuffInfo[]; }; loseEffectMap: { [s: string]: BuffInfo[]; }; cooldownAbilityMap: { [s: string]: BuffInfo[]; }; mobGainsEffectMap: { [s: string]: BuffInfo[]; }; mobLosesEffectMap: { [s: string]: BuffInfo[]; }; constructor(options: JobsOptions, playerName: string, leftBuffDiv: WidgetList, rightBuffDiv: WidgetList, partyTracker: PartyTracker, ffxivVersion: FfxivVersion); onUseAbility(id: string, matches: Partial): void; onGainEffect(buffs: BuffInfo[] | undefined, matches: Partial): void; onLoseEffect(buffs: BuffInfo[] | undefined, _matches: Partial): void; onYouGainEffect(name: string, matches: Partial): void; onYouLoseEffect(name: string, matches: Partial): void; onMobGainsEffect(name: string, matches: Partial): void; onMobLosesEffect(name: string, matches: Partial): void; onBigBuff(name: string, seconds: number | undefined, info: BuffInfo, source: string | undefined, option: 'active' | 'cooldown'): void; onLoseBigBuff(name: string): void; clear(): void; }