import { ArmorSetBonus, FarmingArmorInfo, GearSlot } from '../constants/armor';
import { Crop } from '../constants/crops';
import { Rarity, Reforge, ReforgeTier } from '../constants/reforges';
import { SpecialCrop } from '../constants/specialcrops';
import { EliteItemDto } from './item';
import { PlayerOptions } from './player';
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)[];
	pieces: FarmingArmor[];
	fortune: number;
	setBonuses: ActiveArmorSetBonus[];
	constructor(armor: FarmingArmor[]);
	getPiece(slot: GearSlot): FarmingArmor | undefined;
	setPiece(armor: FarmingArmor): void;
	private recalculateFamilies;
	getFortuneBreakdown(reloadFamilies?: boolean): Record<string, number>;
	specialDropsCalc(
		blocksBroken: number,
		crop: Crop
	): {
		type: SpecialCrop;
		amount: number;
		npc: number;
	} | null;
}
export declare class FarmingArmor {
	readonly item: EliteItemDto;
	readonly 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>;
	private options?;
	constructor(item: EliteItemDto, options?: PlayerOptions);
	setOptions(options: PlayerOptions): void;
	private sumFortune;
	static isValid(item: EliteItemDto): boolean;
	static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingArmor[];
}
