import type { PowerName } from '../Power/PowerName'; import type { RaceAbilityName } from '../Race/RaceAbilityName'; import type { RoleAbilityName } from '../Role/RoleAbilityName'; import { type TransactionInterface } from '../Sheet/TransactionInterface'; import type { SpellName } from '../Spell/SpellName'; import { type TranslatableName } from '../Translator'; import type { AbilityEffectsInterface } from './AbilityEffects'; export type AbilityType = 'role' | 'race' | 'spell' | 'power'; export type AbilityInterface = { name: string; effects: AbilityEffectsInterface; abilityType: AbilityType; addToSheet(transaction: TransactionInterface, source: TranslatableName): void; }; export type AbilityName = RoleAbilityName | PowerName | RaceAbilityName | SpellName; export declare abstract class Ability implements AbilityInterface { readonly name: AbilityName; readonly abilityType: AbilityType; abstract readonly effects: AbilityEffectsInterface; constructor(name: AbilityName, abilityType: AbilityType); addToSheet(transaction: TransactionInterface): void; private applyPassiveEffects; private registerTriggeredEffects; private registerActivateableEffects; }