Xivgear Types Documentation
    Preparing search index...

    CycleProcessor is a rotation-based simulation backend that requires actual ability uses to be specified. The 'Cycle' part of the name refers to the fact that it supports loops/cycles.

    Note about times:

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _canUseCdCount: number = 0
    additionalActionsQueue: ActionQueueItem[] = []

    Queue of non-locking actions to execute (Wildfire's detonation and Automaton Queen actions)

    allRecords: PreDmgDisplayRecordUnf<unknown>[] = []

    Contains records of abilities and other events. Should generally not be accessed externally.

    To retrieve records after a simulation finishes, see finalizedRecords.

    batteryOnNextBurst: number = 0

    How much battery we would have on next burst as of right now

    buffHistory: BuffUsage[] = []

    Log of when all status effects were activated.

    cdTracker: CooldownTracker

    Cooldown tracker.

    combatStarted: boolean = false

    Whether combat has started

    comboState: number = 0
    constants: RotationConstants
    currentCycle: number = -1

    The current cycle number. -1 is pre-pull, 0 is the first cycle, etc

    currentTime: number = 0

    The current time in seconds. This should not normally be written to, as it will be automatically updated internally as actions are used.

    If combat has not started, this represents time since the first action usage. Once combat begins, this is rebased such that the start of combat is zero.

    cutoffMode: CutoffMode

    The end-of-fight cutoff mode

    cycleLengthMode: CycleLengthMode = 'align-absolute'

    Controls the logic used to re-align cycles. Since cycles typically do not last exactly their desired time (i.e. there is drift), you can control how it should re-align cycles when this happens.

    See the docs on CycleLengthMode for more information on each mode.

    cycleTime: number

    The length of a cycle. Commonly 120 seconds.

    dotMap: Map<number, PreDmgUsedAbility> = ...

    Map from DoT effect ID to an object which tracks, among other things, when it was used.

    gauge: MchGauge = ...
    gaugeEnforcementMode: GaugeEnforcementMode
    gaugeManager: GaugeManager
    gcdBase: number = NORMAL_GCD

    The "default" GCD time - typically 2.5 seconds.

    gcdCalculated: number
    hideCycleDividers: boolean

    Whether to show dividers indicating the start and end of a cycle

    hyperchargeUses: number = 0

    How many times Hypercharge can be used before next burst

    nextAutoAttackTime: number = 0

    When the next auto-attack would occur, assuming no cast locks happen between now and then.

    nextGcdTime: number = 0

    Like currentTime, but indicates when the next GCD can start, taking into account the current GCD timer.

    ogcdsRemaining: number = 0
    potAbility:
        | Readonly<
            {
                _idForCooldown?: number;
                activatesBuffs?: readonly Buff[];
                alternativeScalings?: AlternativeScaling[];
                animationLock?: number;
                appDelay?: number;
                attackType: | "Unknown"
                | "Auto-attack"
                | "Spell"
                | "Weaponskill"
                | "Ability"
                | "Item";
                buffApplicationDelay?: number;
                cast?: number;
                combos?: readonly ComboData[];
                cooldown?: Cooldown;
                fixedGcd?: boolean;
                id: number;
                itemId?: number;
                name: string;
                noIcon?: boolean;
                translate?: boolean;
            } & {
                levelModifiers?: LevelModifier<
                    {
                        _idForCooldown?: number;
                        activatesBuffs?: readonly Buff[];
                        alternativeScalings?: AlternativeScaling[];
                        animationLock?: number;
                        appDelay?: number;
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        buffApplicationDelay?: number;
                        cast?: number;
                        combos?: readonly ComboData[];
                        cooldown?: Cooldown;
                        fixedGcd?: boolean;
                        id: number;
                        itemId?: number;
                        name: string;
                        noIcon?: boolean;
                        translate?: boolean;
                    },
                >[];
            } & Readonly<{ potency: null }> & {
                levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
            },
        > & Readonly<LevelModifiable<{ type: "ogcd" }>> & MchSpecificFields
        | Readonly<
            {
                _idForCooldown?: number;
                activatesBuffs?: readonly Buff[];
                alternativeScalings?: AlternativeScaling[];
                animationLock?: number;
                appDelay?: number;
                attackType: | "Unknown"
                | "Auto-attack"
                | "Spell"
                | "Weaponskill"
                | "Ability"
                | "Item";
                buffApplicationDelay?: number;
                cast?: number;
                combos?: readonly ComboData[];
                cooldown?: Cooldown;
                fixedGcd?: boolean;
                id: number;
                itemId?: number;
                name: string;
                noIcon?: boolean;
                translate?: boolean;
            } & {
                levelModifiers?: LevelModifier<
                    {
                        _idForCooldown?: number;
                        activatesBuffs?: readonly Buff[];
                        alternativeScalings?: AlternativeScaling[];
                        animationLock?: number;
                        appDelay?: number;
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        buffApplicationDelay?: number;
                        cast?: number;
                        combos?: readonly ComboData[];
                        cooldown?: Cooldown;
                        fixedGcd?: boolean;
                        id: number;
                        itemId?: number;
                        name: string;
                        noIcon?: boolean;
                        translate?: boolean;
                    },
                >[];
            } & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & {
                levelModifiers?: LevelModifier<
                    Readonly<
                        {
                            alternativeScalings?: AlternativeScaling[];
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            autoCrit?: boolean;
                            autoDh?: boolean;
                            dot?: DotInfo;
                            potency: number;
                        },
                    >,
                >[];
            },
        > & Readonly<LevelModifiable<{ type: "ogcd" }>> & MchSpecificFields
        | never
        | never
        | never
        | never
        | never
        | never
        | never
        | never
        | never
        | never

    The stats of the set currently being simulated

    totalPrePullOffset: number = 0

    The total adjustment (in seconds) that was performed to rebase the timer such that start-of-combat is zero.

    e.g. if you used 5 seconds worth of pre-pull actions, this would be -5.

    totalTime: number

    The total maximum fight time

    useAutos: boolean

    Whether auto-attacks are enabled

    Accessors

    • get cdEnforcementMode(): CooldownMode

      Returns CooldownMode

    • set cdEnforcementMode(value: CooldownMode): void

      The cooldown enforcement mode affects behavior when an ability with a cooldown is used while it is still on cooldown.

      Options are:

      'none' - cooldown tracker will happily allow the cooldown to be used at an invalid time. 'warn' - cooldown tracker will log a warning to console, but will continue 'delay' - cycle processor will fast-forward the time to when the cooldown would be ready. This is ideal for classes such as DNC where the optimal rotation may involve waiting a fraction of a second for a long CD to be ready, rather than trying to use another GCD and thus drifting. 'reject' - cooldown tracker will throw an error if you attempt to use an invalid CD. It is not recommended to use this for logic (i.e. don't try/catch). Instead, just query whether the cooldown is ready or not.

      Parameters

      Returns void

    • get finalizedTimeBasis(): number

      Returns number

    • get maxUses(): number

      An amount of action usages that should be far beyond what would be needed for a reasonable sim. Acts as a circuit breaker for infinite loops.

      Returns number

    • get remainingGcdTime(): number

      The remaining time in the fight, minus the time remaining on the current GCD.

      Returns number

    • get remainingTime(): number

      The remaining time in the fight.

      Returns number

    Methods

    • Add a special text row to the output records.

      Parameters

      • message: string

        The text

      • Optionaltime: number

        The time of the record. Current time will be used if not specified.

      Returns void

    • Fast-forward (i.e. do nothing until) the given time.

      Parameters

      • advanceTo: number

        The time to fast-forward to.

      • pauseAutos: boolean = false

        Whether auto-attacks should be paused during this time.

      Returns void

    • Modifies an ability for the level that is being processed by the cycle sim.

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

        the ability to modify

      Returns
          | Readonly<
              {
                  _idForCooldown?: number;
                  activatesBuffs?: readonly Buff[];
                  alternativeScalings?: AlternativeScaling[];
                  animationLock?: number;
                  appDelay?: number;
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  buffApplicationDelay?: number;
                  cast?: number;
                  combos?: readonly ComboData[];
                  cooldown?: Cooldown;
                  fixedGcd?: boolean;
                  id: number;
                  itemId?: number;
                  name: string;
                  noIcon?: boolean;
                  translate?: boolean;
              } & {
                  levelModifiers?: LevelModifier<
                      {
                          _idForCooldown?: number;
                          activatesBuffs?: readonly Buff[];
                          alternativeScalings?: AlternativeScaling[];
                          animationLock?: number;
                          appDelay?: number;
                          attackType: | "Unknown"
                          | "Auto-attack"
                          | "Spell"
                          | "Weaponskill"
                          | "Ability"
                          | "Item";
                          buffApplicationDelay?: number;
                          cast?: number;
                          combos?: readonly ComboData[];
                          cooldown?: Cooldown;
                          fixedGcd?: boolean;
                          id: number;
                          itemId?: number;
                          name: string;
                          noIcon?: boolean;
                          translate?: boolean;
                      },
                  >[];
              } & Readonly<{ potency: null }> & {
                  levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
              },
          > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
          | Readonly<
              {
                  _idForCooldown?: number;
                  activatesBuffs?: readonly Buff[];
                  alternativeScalings?: AlternativeScaling[];
                  animationLock?: number;
                  appDelay?: number;
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  buffApplicationDelay?: number;
                  cast?: number;
                  combos?: readonly ComboData[];
                  cooldown?: Cooldown;
                  fixedGcd?: boolean;
                  id: number;
                  itemId?: number;
                  name: string;
                  noIcon?: boolean;
                  translate?: boolean;
              } & {
                  levelModifiers?: LevelModifier<
                      {
                          _idForCooldown?: number;
                          activatesBuffs?: readonly Buff[];
                          alternativeScalings?: AlternativeScaling[];
                          animationLock?: number;
                          appDelay?: number;
                          attackType: | "Unknown"
                          | "Auto-attack"
                          | "Spell"
                          | "Weaponskill"
                          | "Ability"
                          | "Item";
                          buffApplicationDelay?: number;
                          cast?: number;
                          combos?: readonly ComboData[];
                          cooldown?: Cooldown;
                          fixedGcd?: boolean;
                          id: number;
                          itemId?: number;
                          name: string;
                          noIcon?: boolean;
                          translate?: boolean;
                      },
                  >[];
              } & Readonly<
                  {
                      alternativeScalings?: AlternativeScaling[];
                      attackType: | "Unknown"
                      | "Auto-attack"
                      | "Spell"
                      | "Weaponskill"
                      | "Ability"
                      | "Item";
                      autoCrit?: boolean;
                      autoDh?: boolean;
                      dot?: DotInfo;
                      potency: number;
                  },
              > & {
                  levelModifiers?: LevelModifier<
                      Readonly<
                          {
                              alternativeScalings?: AlternativeScaling[];
                              attackType: | "Unknown"
                              | "Auto-attack"
                              | "Spell"
                              | "Weaponskill"
                              | "Ability"
                              | "Item";
                              autoCrit?: boolean;
                              autoDh?: boolean;
                              dot?: DotInfo;
                              potency: number;
                          },
                      >,
                  >[];
              },
          > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
          | Readonly<
              {
                  _idForCooldown?: number;
                  activatesBuffs?: readonly Buff[];
                  alternativeScalings?: AlternativeScaling[];
                  animationLock?: number;
                  appDelay?: number;
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  buffApplicationDelay?: number;
                  cast?: number;
                  combos?: readonly ComboData[];
                  cooldown?: Cooldown;
                  fixedGcd?: boolean;
                  id: number;
                  itemId?: number;
                  name: string;
                  noIcon?: boolean;
                  translate?: boolean;
              } & {
                  levelModifiers?: LevelModifier<
                      {
                          _idForCooldown?: number;
                          activatesBuffs?: readonly Buff[];
                          alternativeScalings?: AlternativeScaling[];
                          animationLock?: number;
                          appDelay?: number;
                          attackType: | "Unknown"
                          | "Auto-attack"
                          | "Spell"
                          | "Weaponskill"
                          | "Ability"
                          | "Item";
                          buffApplicationDelay?: number;
                          cast?: number;
                          combos?: readonly ComboData[];
                          cooldown?: Cooldown;
                          fixedGcd?: boolean;
                          id: number;
                          itemId?: number;
                          name: string;
                          noIcon?: boolean;
                          translate?: boolean;
                      },
                  >[];
              } & Readonly<{ potency: null }> & {
                  levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
              },
          > & Readonly<LevelModifiable<{ type: "ogcd" }>>
          | Readonly<
              {
                  _idForCooldown?: number;
                  activatesBuffs?: readonly Buff[];
                  alternativeScalings?: AlternativeScaling[];
                  animationLock?: number;
                  appDelay?: number;
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  buffApplicationDelay?: number;
                  cast?: number;
                  combos?: readonly ComboData[];
                  cooldown?: Cooldown;
                  fixedGcd?: boolean;
                  id: number;
                  itemId?: number;
                  name: string;
                  noIcon?: boolean;
                  translate?: boolean;
              } & {
                  levelModifiers?: LevelModifier<
                      {
                          _idForCooldown?: number;
                          activatesBuffs?: readonly Buff[];
                          alternativeScalings?: AlternativeScaling[];
                          animationLock?: number;
                          appDelay?: number;
                          attackType: | "Unknown"
                          | "Auto-attack"
                          | "Spell"
                          | "Weaponskill"
                          | "Ability"
                          | "Item";
                          buffApplicationDelay?: number;
                          cast?: number;
                          combos?: readonly ComboData[];
                          cooldown?: Cooldown;
                          fixedGcd?: boolean;
                          id: number;
                          itemId?: number;
                          name: string;
                          noIcon?: boolean;
                          translate?: boolean;
                      },
                  >[];
              } & Readonly<
                  {
                      alternativeScalings?: AlternativeScaling[];
                      attackType: | "Unknown"
                      | "Auto-attack"
                      | "Spell"
                      | "Weaponskill"
                      | "Ability"
                      | "Item";
                      autoCrit?: boolean;
                      autoDh?: boolean;
                      dot?: DotInfo;
                      potency: number;
                  },
              > & {
                  levelModifiers?: LevelModifier<
                      Readonly<
                          {
                              alternativeScalings?: AlternativeScaling[];
                              attackType: | "Unknown"
                              | "Auto-attack"
                              | "Spell"
                              | "Weaponskill"
                              | "Ability"
                              | "Item";
                              autoCrit?: boolean;
                              autoDh?: boolean;
                              dot?: DotInfo;
                              potency: number;
                          },
                      >,
                  >[];
              },
          > & Readonly<LevelModifiable<{ type: "ogcd" }>>
          | never
          | Readonly<
              {
                  _idForCooldown?: number;
                  activatesBuffs?: readonly Buff[];
                  alternativeScalings?: AlternativeScaling[];
                  animationLock?: number;
                  appDelay?: number;
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  buffApplicationDelay?: number;
                  cast?: number;
                  combos?: readonly ComboData[];
                  cooldown?: Cooldown;
                  fixedGcd?: boolean;
                  id: number;
                  itemId?: number;
                  name: string;
                  noIcon?: boolean;
                  translate?: boolean;
              } & {
                  levelModifiers?: LevelModifier<
                      {
                          _idForCooldown?: number;
                          activatesBuffs?: readonly Buff[];
                          alternativeScalings?: AlternativeScaling[];
                          animationLock?: number;
                          appDelay?: number;
                          attackType: | "Unknown"
                          | "Auto-attack"
                          | "Spell"
                          | "Weaponskill"
                          | "Ability"
                          | "Item";
                          buffApplicationDelay?: number;
                          cast?: number;
                          combos?: readonly ComboData[];
                          cooldown?: Cooldown;
                          fixedGcd?: boolean;
                          id: number;
                          itemId?: number;
                          name: string;
                          noIcon?: boolean;
                          translate?: boolean;
                      },
                  >[];
              } & Readonly<
                  {
                      alternativeScalings?: AlternativeScaling[];
                      attackType: | "Unknown"
                      | "Auto-attack"
                      | "Spell"
                      | "Weaponskill"
                      | "Ability"
                      | "Item";
                      autoCrit?: boolean;
                      autoDh?: boolean;
                      dot?: DotInfo;
                      potency: number;
                  },
              > & {
                  levelModifiers?: LevelModifier<
                      Readonly<
                          {
                              alternativeScalings?: AlternativeScaling[];
                              attackType: | "Unknown"
                              | "Auto-attack"
                              | "Spell"
                              | "Weaponskill"
                              | "Ability"
                              | "Item";
                              autoCrit?: boolean;
                              autoDh?: boolean;
                              dot?: DotInfo;
                              potency: number;
                          },
                      >,
                  >[];
              },
          > & Readonly<
              {
                  alternativeScalings?: AlternativeScaling[];
                  attackType: | "Unknown"
                  | "Auto-attack"
                  | "Spell"
                  | "Weaponskill"
                  | "Ability"
                  | "Item";
                  autoCrit?: boolean;
                  autoDh?: boolean;
                  dot?: DotInfo;
                  potency: number;
              },
          > & Readonly<LevelModifiable<{ type: "autoattack" }>>

      the modified ability

    • Applies beforeAbility calls to a given ability.

      Type Parameters

      • X extends
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

      Parameters

      • originalAbility: X

        the ability to modify

      • buffs: Buff[]

        the buffs to apply

      Returns X

      a modified ability

    • Determines whether or not a GCD plus zero or more oGCDs can be used without violating cooldowns and without clipping.

      Known issue: does not properly handle specifying the same oGCD (or something with a linked CD) multiple times in the oGCDs array.

      Parameters

      Returns "yes" | "no" | "not-enough-time"

    • Determine the effective cast time of an ability, assuming it is cast at the current time with the given set of buffs.

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>
      • effects: CombinedBuffEffect

      Returns number

    • Get the buffs that would be active right now, which affect a specific ability.

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

        The ability in question

      • time: number = ...

        The time to query. Defaults to current time.

      Returns Buff[]

    • Whether or not the given ability is off cooldown/has charges. "Now" is considered to be literal if the argument is an oGCD. If the argument is a GCD, then "now" is when the next GCD would come up.

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

      Returns boolean

    • Modifies the stack value for a given buff. The stack value provided should be the modified amount and not the final amount

      Parameters

      • buff: Buff

        The Buff

      • stacksDelta: number

        +/- change in stacks

      Returns void

    • The number of remaining GCDs at the given GCD speed, assuming current stats (for things like haste). Does not perform any rounding, so 0.5 indicates that half of a GCD will fit into the remaining time.

      Parameters

      • ability: GcdAbility

        The ability to use as a basis for calculating GCD time and applicable buffs.

      Returns number

    • Time until the given ability is off cooldown/has charges. "Now" is considered to be literal if the argument is an oGCD. If the argument is a GCD, then "now" is when the next GCD would come up.

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

      Returns number

    • Use an ability

      Parameters

      • ability:
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ gcd: number; type: "gcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<{ potency: null }> & {
                    levelModifiers?: LevelModifier<Readonly<{ potency: null }>>[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<LevelModifiable<{ type: "ogcd" }>>
            | never
            | Readonly<
                {
                    _idForCooldown?: number;
                    activatesBuffs?: readonly Buff[];
                    alternativeScalings?: AlternativeScaling[];
                    animationLock?: number;
                    appDelay?: number;
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    buffApplicationDelay?: number;
                    cast?: number;
                    combos?: readonly ComboData[];
                    cooldown?: Cooldown;
                    fixedGcd?: boolean;
                    id: number;
                    itemId?: number;
                    name: string;
                    noIcon?: boolean;
                    translate?: boolean;
                } & {
                    levelModifiers?: LevelModifier<
                        {
                            _idForCooldown?: number;
                            activatesBuffs?: readonly Buff[];
                            alternativeScalings?: AlternativeScaling[];
                            animationLock?: number;
                            appDelay?: number;
                            attackType: | "Unknown"
                            | "Auto-attack"
                            | "Spell"
                            | "Weaponskill"
                            | "Ability"
                            | "Item";
                            buffApplicationDelay?: number;
                            cast?: number;
                            combos?: readonly ComboData[];
                            cooldown?: Cooldown;
                            fixedGcd?: boolean;
                            id: number;
                            itemId?: number;
                            name: string;
                            noIcon?: boolean;
                            translate?: boolean;
                        },
                    >[];
                } & Readonly<
                    {
                        alternativeScalings?: AlternativeScaling[];
                        attackType: | "Unknown"
                        | "Auto-attack"
                        | "Spell"
                        | "Weaponskill"
                        | "Ability"
                        | "Item";
                        autoCrit?: boolean;
                        autoDh?: boolean;
                        dot?: DotInfo;
                        potency: number;
                    },
                > & {
                    levelModifiers?: LevelModifier<
                        Readonly<
                            {
                                alternativeScalings?: AlternativeScaling[];
                                attackType: | "Unknown"
                                | "Auto-attack"
                                | "Spell"
                                | "Weaponskill"
                                | "Ability"
                                | "Item";
                                autoCrit?: boolean;
                                autoDh?: boolean;
                                dot?: DotInfo;
                                potency: number;
                            },
                        >,
                    >[];
                },
            > & Readonly<
                {
                    alternativeScalings?: AlternativeScaling[];
                    attackType: | "Unknown"
                    | "Auto-attack"
                    | "Spell"
                    | "Weaponskill"
                    | "Ability"
                    | "Item";
                    autoCrit?: boolean;
                    autoDh?: boolean;
                    dot?: DotInfo;
                    potency: number;
                },
            > & Readonly<LevelModifiable<{ type: "autoattack" }>>

        The ability to use

      Returns AbilityUseResult