import cosmeticsData from '../../data/cosmetics.json';
import { CosmeticEffect, PlayerAppearanceType, PlayerOutfitType, ShipCosmeticType } from '../types/CosmeticProperties';
import { Rarity } from '../types/Rarity';
import { Contract } from './contracts';
import { Event } from './events';
import { Faction } from './factions';
import { Item } from './items';
import { Material } from './materials';
import { Season } from './seasons';
import { Set } from './sets';
import { Ship } from './ships';
import { WorldEvent } from './worldEvents';
export declare class Cosmetic {
    readonly id: string;
    readonly type: ShipCosmeticType | PlayerOutfitType | PlayerAppearanceType;
    readonly dateAdded: Date;
    readonly lastUpdated: Date;
    readonly rarity?: Rarity | undefined;
    readonly tier?: number | undefined;
    readonly set?: Set | undefined;
    readonly obtainable?: (string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string>) | undefined;
    readonly pieces?: Array<ShipCosmeticType> | undefined;
    readonly effect?: (CosmeticEffect | CosmeticEffect[]) | undefined;
    readonly season?: Season | undefined;
    readonly faction?: Faction | undefined;
    readonly ship?: Ship | undefined;
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    readonly contract?: Contract | undefined;
    basic?: Cosmetic | undefined;
    upgrades?: Cosmetic[] | undefined;
    readonly required?: Map<Material, number> | undefined;
    readonly requiredRank?: string | undefined;
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    readonly bounty?: string | undefined;
    readonly event?: Event | undefined;
    readonly worldEvent?: (WorldEvent | WorldEvent[]) | undefined;
    /**
     * Timestamp of when the cosmetic was removed from the game. Use only for completely removed pieces.
     */
    readonly removed?: Date | undefined;
    constructor(id: string, type: ShipCosmeticType | PlayerOutfitType | PlayerAppearanceType, dateAdded: Date, lastUpdated: Date, rarity?: Rarity | undefined, tier?: number | undefined, set?: Set | undefined, obtainable?: (string | Item | Array<string | Item> | Array<Array<string | Item> | Item | string>) | undefined, pieces?: Array<ShipCosmeticType> | undefined, effect?: (CosmeticEffect | CosmeticEffect[]) | undefined, season?: Season | undefined, faction?: Faction | undefined, ship?: Ship | undefined, 
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    contract?: Contract | undefined, basic?: Cosmetic | undefined, upgrades?: Cosmetic[] | undefined, required?: Map<Material, number> | undefined, requiredRank?: string | undefined, 
    /**
    * @deprecated Not actively maintained anymore and may be removed in the future, obtainable field is used in favor
    */
    bounty?: string | undefined, event?: Event | undefined, worldEvent?: (WorldEvent | WorldEvent[]) | undefined, 
    /**
     * Timestamp of when the cosmetic was removed from the game. Use only for completely removed pieces.
     */
    removed?: Date | undefined);
    static fromRawData(rawData: any): Cosmetic;
    static updateCosmeticWithUpgrades(key: string, rawData: any, cosmetics: Record<string, Cosmetic>): void;
    static loadCosmetics(): Record<string, Cosmetic>;
}
type Cosmetics = {
    [K in keyof typeof cosmeticsData]: Cosmetic;
};
export declare const Cosmetics: Cosmetics;
export {};
//# sourceMappingURL=cosmetics.d.ts.map