import { Crop } from '../constants/crops';
import { FarmingPetType } from '../constants/pets';
import { FarmingAccessory } from './farmingaccessory';
import { ArmorSet, FarmingArmor } from './farmingarmor';
import { FarmingEquipment } from './farmingequipment';
import { FarmingPet } from './farmingpet';
import { FarmingTool } from './farmingtool';
import { EliteItemDto } from './item';
export interface FortuneMissingFromAPI {
	cropUpgrades?: Record<Crop, number>;
	gardenLevel?: number;
	plotsUnlocked?: number;
	uniqueVisitors?: number;
	communityCenter?: number;
	milestones?: Partial<Record<Crop, number>>;
	exportableCrops?: Partial<Record<Crop, boolean>>;
	refinedTruffles?: number;
}
export interface ExtraFarmingFortune {
	crop?: Crop;
	name?: string;
	fortune: number;
}
export interface PlayerOptions extends FortuneMissingFromAPI {
	collection?: Record<string, number>;
	farmingXp?: number;
	farmingLevel?: number;
	strength?: number;
	tools?: EliteItemDto[] | FarmingTool[];
	armor?: EliteItemDto[] | FarmingArmor[] | ArmorSet;
	equipment?: EliteItemDto[] | FarmingEquipment[];
	accessories?: EliteItemDto[] | FarmingAccessory[];
	pets?: FarmingPetType[] | FarmingPet[];
	selectedTool?: FarmingTool;
	selectedPet?: FarmingPet;
	personalBests?: Record<string, number>;
	bestiaryKills?: Record<string, number>;
	anitaBonus?: number;
	extraFortune?: ExtraFarmingFortune[];
	zorro?: boolean;
}
export declare function createFarmingPlayer(options: PlayerOptions): FarmingPlayer;
export declare class FarmingPlayer {
	options: PlayerOptions;
	fortune: number;
	breakdown: Record<string, number>;
	tools: FarmingTool[];
	armor: FarmingArmor[];
	armorSet: ArmorSet;
	equipment: FarmingEquipment[];
	accessories: FarmingAccessory[];
	pets: FarmingPet[];
	selectedTool?: FarmingTool;
	selectedPet?: FarmingPet;
	constructor(options: PlayerOptions);
	changeArmor(armor: FarmingArmor[]): void;
	selectTool(tool: FarmingTool): void;
	selectPet(pet: FarmingPet): void;
	setStrength(strength: number): void;
	getGeneralFortune(): number;
	getCropFortune(
		crop: Crop,
		tool?: FarmingTool | undefined
	): {
		fortune: number;
		breakdown: Record<string, number>;
	};
}
export interface JacobFarmingContest {
	crop: Crop;
	timestamp: number;
	collected: number;
	position?: number;
	participants?: number;
	medal?: number;
}
