import { Tier } from "./Tiers"; export type Unit = '%' | '' | 'm/s' | 'm' | 's' | '%/sec'; type ShorthandTier = 1 | 2 | 3 | 4; export declare class Item { description: ItemDescription; name: string; type: string; id: number; tier: Tier; passive?: Ability; active?: Ability; stats: StatChange[]; constructor(description: ItemDescription); get preReq(): Item | undefined; get buildsInto(): Item | undefined; get price(): number; } export declare function item(description: ItemDescription): Item; export interface AbilityDescription { description: string; cooldown?: number; details?: AffectTuple[]; } export interface Ability { description: string; cooldown?: number; details?: Affect[]; } export type Ordinal = "+" | "-" | ""; export declare const NEGATIVE: unique symbol; type FullStatChangeTuple = [number, Unit, string]; type NegativeStatChangeTuple = [number, Unit, string, typeof NEGATIVE]; type StatChangeTupleWithoutUnit = [number, string]; type StatChangeTupleWithoutUnitButNegative = [number, string, typeof NEGATIVE]; export type StatChangeTuple = FullStatChangeTuple | NegativeStatChangeTuple | StatChangeTupleWithoutUnit | StatChangeTupleWithoutUnitButNegative; export type StatChange = { unit: Unit; amount: Number; isBad: boolean; stat: string; }; export declare function convertStatTupleToStruct(tuple: StatChangeTuple): StatChange; export interface Affect { amount: number; unit: Unit; ordinal: Ordinal; stat: string; } type FullAffectTuple = [Ordinal, number, Unit, string]; type AffectTupleWithoutOrdinal = [number, Unit, string]; type AffectTupleWithoutUnit = [Ordinal, number, string]; type AffectTupleWithoutUnitNorOrdinal = [number, string]; export type AffectTuple = FullAffectTuple | AffectTupleWithoutOrdinal | AffectTupleWithoutUnit | AffectTupleWithoutUnitNorOrdinal; export type DeferredItemReference = () => ItemDescription; export interface ItemDescription { type: "weapon" | "spirit" | "vitality"; id: number; name: string; tier: ShorthandTier; stats?: StatChangeTuple[]; buildsInto?: DeferredItemReference; preReq?: DeferredItemReference; passive?: AbilityDescription; active?: AbilityDescription; } export declare function converAbilityTupleToStruct(tuple: AffectTuple): Affect; export declare function convertAbility(description?: AbilityDescription): Ability | undefined; export {}; //# sourceMappingURL=Item.d.ts.map