import { Crop } from '../constants/crops.js';
export declare function createFarmingWeightCalculator(info?: FarmingWeightInfo): FarmingWeight;
export interface FarmingWeightInfo {
    collection?: Record<string, number>;
    farmingXp?: number;
    levelCapUpgrade?: number;
    anitaBonusFarmingFortuneLevel?: number;
    minions?: string[];
    contests?: {
        collected: number;
        claimed_position?: number;
        claimed_participants?: number;
        claimed_medal?: 'bronze' | 'silver' | 'gold' | 'platinum' | 'diamond' | string;
    }[];
    pests?: Record<string, number>;
}
declare class FarmingWeight {
    collection: Record<Crop, number>;
    levelCapUpgrade: number;
    farmingXp: number;
    anitaBonusFarmingFortuneLevel: number;
    tier12MinionCount: number;
    earnedMedals: Record<'diamond' | 'platinum' | 'gold', number>;
    cropWeights: Record<Crop, number>;
    bonusSources: Record<string, number>;
    uncountedCrops: Partial<Record<Crop, number>>;
    readonly info?: FarmingWeightInfo;
    constructor(info?: FarmingWeightInfo);
    /**
     * Expects a dictionary of collections and amounts with the default Hypixel SkyBlock IDs
     * @param {Record<string, number>} collections
     * @returns {FarmingWeight}
     */
    setCropsFromCollections(collections: Record<string, number>): FarmingWeight;
    setCrop: (crop: Crop, collection: number) => this;
    setLevelCap: (levelCap: number) => this;
    setFarmingXp: (farmingXp: number) => this;
    setAnitaBonusLevel: (anitaBonusFarmingFortuneLevel: number) => this;
    addMinions: (minions: string[]) => this;
    setEarnedMedals: ({ diamond, platinum, gold }: {
        diamond?: number;
        platinum?: number;
        gold?: number;
    }) => this;
    setTier12MinionCount: (count: number) => this;
    setContests: (contests: FarmingWeightInfo["contests"]) => this;
    getWeightInfo: () => {
        totalWeight: number;
        bonusWeight: number;
        cropWeight: number;
        bonusSources: Record<string, number>;
        uncountedCrops: Partial<Record<Crop, number>>;
    };
    getBonusWeights: () => Record<string, number>;
    getCropWeights: () => Record<Crop, number>;
    calcUncountedCrops: (bestiary: Record<string, number>) => this;
    getCropWeight: (crop: Crop) => void;
}
/**
 * Get the weight of a single crop based on the collection amount.
 * Use `createFarmingWeightCalculator` to calculate accurate weight of multiple crops
 * @param {Crop} crop
 * @param {number} collection
 * @returns {number}
 */
export declare function calcWeightForCrop(crop: Crop, collection: number): number;
export {};
