import itemsData from '../../data/items.json';
import { FurnitureType, GeneralType, Tier, WeaponType } from '../types/ItemProperties';
import { Rarity } from '../types/Rarity';
import { Contract } from './contracts';
import { Event } from './events';
import { Faction } from './factions';
import { Material } from './materials';
import { Season } from './seasons';
import { WorldEvent } from './worldEvents';
export declare class Item {
    readonly id: string;
    readonly type: GeneralType | WeaponType | FurnitureType;
    readonly season: Season;
    readonly dateAdded: Date;
    readonly lastUpdated: Date;
    readonly tier?: Tier | undefined;
    readonly blueprint?: string | undefined;
    readonly value?: number | undefined;
    readonly weight?: number | undefined;
    readonly gearScore?: number | undefined;
    readonly projectilesPerShot?: number | undefined;
    readonly damagePerShot?: number | undefined;
    readonly rateOfFire?: number | undefined;
    readonly chargeTime?: number | undefined;
    readonly reloadSpeed?: number | undefined;
    readonly optimalRange?: number | undefined;
    readonly projectileSpeed?: number | undefined;
    readonly timeToTarget?: number | undefined;
    readonly blastRadius?: number | undefined;
    readonly required?: Map<Material, number> | undefined;
    readonly requiredRank?: string | undefined;
    readonly perks?: string[] | undefined;
    readonly rarity?: Rarity | undefined;
    obtainable?: (string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string>) | undefined;
    readonly event?: (Event | Event[]) | undefined;
    readonly worldEvent?: (WorldEvent | WorldEvent[]) | undefined;
    readonly armor?: number | undefined;
    readonly damageMitigation?: Record<string, number> | undefined;
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    readonly contract?: Contract | undefined;
    readonly faction?: Faction | undefined;
    readonly unobtainable?: boolean | undefined;
    constructor(id: string, type: GeneralType | WeaponType | FurnitureType, season: Season, dateAdded: Date, lastUpdated: Date, tier?: Tier | undefined, blueprint?: string | undefined, value?: number | undefined, weight?: number | undefined, gearScore?: number | undefined, projectilesPerShot?: number | undefined, damagePerShot?: number | undefined, rateOfFire?: number | undefined, chargeTime?: number | undefined, reloadSpeed?: number | undefined, optimalRange?: number | undefined, projectileSpeed?: number | undefined, timeToTarget?: number | undefined, blastRadius?: number | undefined, required?: Map<Material, number> | undefined, requiredRank?: string | undefined, perks?: string[] | undefined, rarity?: Rarity | undefined, obtainable?: (string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string>) | undefined, event?: (Event | Event[]) | undefined, worldEvent?: (WorldEvent | WorldEvent[]) | undefined, armor?: number | undefined, damageMitigation?: Record<string, number> | undefined, 
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    contract?: Contract | undefined, faction?: Faction | undefined, unobtainable?: boolean | undefined);
    static fromRawData(rawData: any): Item;
    static updateObtainableWithItems(key: string, rawData: any, items: Record<string, Item>): void;
    static loadItems(): Record<string, Item>;
}
type Items = {
    [K in keyof typeof itemsData]: Item;
};
export declare const Items: Items;
export {};
//# sourceMappingURL=items.d.ts.map