import { AnyObject, Battle, ConditionData, Field, ID, ModdedDex, Pokemon, Side } from './exported-global-types'; import { PokemonEventMethods } from './dex-conditions'; import { BasicEffect } from './dex-data'; interface AbilityEventMethods { onCheckShow?: (this: Battle, pokemon: Pokemon) => void; onEnd?: (this: Battle, target: Pokemon & Side & Field) => void; onPreStart?: (this: Battle, pokemon: Pokemon) => void; onStart?: (this: Battle, target: Pokemon) => void; } export interface AbilityData extends Partial, AbilityEventMethods, PokemonEventMethods { name: string; } export declare type ModdedAbilityData = AbilityData | Partial & { inherit: true; }; export declare class Ability extends BasicEffect implements Readonly { readonly effectType: 'Ability'; /** Rating from -1 Detrimental to +5 Essential; see `data/abilities.ts` for details. */ readonly rating: number; readonly suppressWeather: boolean; readonly condition?: ConditionData; readonly isPermanent?: boolean; readonly isBreakable?: boolean; constructor(data: AnyObject); } export declare class DexAbilities { readonly dex: ModdedDex; readonly abilityCache: Map; allCache: readonly Ability[] | null; constructor(dex: ModdedDex); get(name?: string | Ability): Ability; getByID(id: ID): Ability; all(): readonly Ability[]; } export {};