import { Crop } from '../constants/crops.js';
import { Rarity, Reforge, ReforgeTarget, ReforgeTier } from '../constants/reforges.js';
import { SpecialCrop } from '../constants/specialcrops.js';
import { FortuneSourceProgress } from '../constants/upgrades.js';
import { ArmorSetBonus, FarmingArmorInfo, GearSlot } from '../items/armor.js';
import { PlayerOptions } from '../player/playeroptions.js';
import { FarmingEquipment } from './farmingequipment.js';
import { EliteItemDto } from './item.js';
import { UpgradeableBase, UpgradeableInfo } from './upgradeable.js';
export interface ActiveArmorSetBonus {
    count: number;
    from: GearSlot[];
    bonus: ArmorSetBonus;
    special?: SpecialCrop[];
}
export declare class ArmorSet {
    helmet?: FarmingArmor;
    chestplate?: FarmingArmor;
    leggings?: FarmingArmor;
    boots?: FarmingArmor;
    get armor(): (FarmingArmor | null)[];
    necklace?: FarmingEquipment;
    cloak?: FarmingEquipment;
    belt?: FarmingEquipment;
    gloves?: FarmingEquipment;
    get equipment(): (FarmingEquipment | null)[];
    pieces: FarmingArmor[];
    equipmentPieces: FarmingEquipment[];
    armorFortune: number;
    equipmentFortune: number;
    get fortune(): number;
    setBonuses: ActiveArmorSetBonus[];
    equipmentSetBonuses: ActiveArmorSetBonus[];
    constructor(armor: FarmingArmor[], equipment?: FarmingEquipment[], options?: PlayerOptions);
    setArmor(armor: FarmingArmor[]): void;
    setEquipment(equipment: FarmingEquipment[]): void;
    setOptions(options: PlayerOptions): void;
    getPiece(slot: GearSlot): FarmingArmor | FarmingEquipment | undefined;
    setPiece(armor: FarmingArmor | FarmingEquipment): void;
    private recalculateFamilies;
    static getSetBonusFrom(armor: (FarmingArmor | FarmingEquipment | null)[]): {
        count: number;
        from: GearSlot[];
        bonus: ArmorSetBonus;
        special: SpecialCrop[] | undefined;
    }[];
    getFortuneBreakdown(reloadFamilies?: boolean): Record<string, number>;
    specialDropsCalc(blocksBroken: number, crop: Crop): {
        type: SpecialCrop;
        amount: number;
        npc: number;
    } | null;
    specialDropsCount(crop: Crop): 0 | 2 | 1 | 3 | 4;
    getProgress(zeroed?: boolean): FortuneSourceProgress[];
    getPieceProgress(slot: GearSlot): FortuneSourceProgress[];
    get slots(): Record<GearSlot, FarmingArmor | FarmingEquipment | undefined>;
    get slotOptions(): Record<GearSlot, (FarmingArmor | FarmingEquipment)[]>;
}
export declare class FarmingArmor extends UpgradeableBase {
    readonly item: EliteItemDto;
    readonly info: FarmingArmorInfo;
    get type(): ReforgeTarget;
    get armor(): FarmingArmorInfo;
    get slot(): GearSlot;
    readonly rarity: Rarity;
    readonly reforge: Reforge | undefined;
    readonly reforgeStats: ReforgeTier | undefined;
    readonly recombobulated: boolean;
    get potential(): number;
    fortune: number;
    fortuneBreakdown: Record<string, number>;
    options?: PlayerOptions;
    constructor(item: EliteItemDto, options?: PlayerOptions);
    setOptions(options: PlayerOptions): void;
    getFortune(): number;
    getUpgrades(): import("../constants/upgrades.js").FortuneUpgrade[];
    getItemUpgrade(): import("../constants/upgrades.js").Upgrade | undefined;
    getLastItemUpgrade(): {
        upgrade: import("../constants/upgrades.js").Upgrade;
        info: UpgradeableInfo;
    } | undefined;
    getProgress(zeroed?: boolean): FortuneSourceProgress[];
    static isValid(item: EliteItemDto): boolean;
    static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingArmor[];
    static fakeItem(info: UpgradeableInfo, options?: PlayerOptions): FarmingArmor | undefined;
}
