import { Crop } from '../constants/crops.js';
import { Rarity, RarityRecord, Reforge, ReforgeTarget, ReforgeTier } from '../constants/reforges.js';
import { Stat, StatsRecord } from '../constants/stats.js';
import { FortuneSourceProgress, FortuneUpgrade, Upgrade } from '../constants/upgrades.js';
import { PlayerOptions } from '../player/playeroptions.js';
import { EliteItemDto } from './item.js';
export interface UpgradeableInfo {
    name: string;
    skyblockId: string;
    upgrade?: Upgrade;
    wiki?: string;
    gemSlots?: {
        peridot: number;
    };
    maxRarity: Rarity;
    stats?: RarityRecord<StatsRecord>;
    baseStats?: Partial<Record<Stat, number>>;
    computedStats?: (opt: PlayerOptions) => Partial<Record<Stat, number>>;
}
export interface Upgradeable {
    item: EliteItemDto;
    info: UpgradeableInfo;
    type?: ReforgeTarget;
    crop?: Crop;
    options?: PlayerOptions;
    recombobulated: boolean;
    rarity: Rarity;
    reforge?: Reforge | undefined;
    reforgeStats?: ReforgeTier | undefined;
    fortune: number;
    getFortune(): number;
    getUpgrades(): FortuneUpgrade[];
    getItemUpgrade(): Upgrade | undefined;
    getLastItemUpgrade(): {
        upgrade: Upgrade;
        info: UpgradeableInfo;
    } | undefined;
    getProgress(zeroed: boolean): FortuneSourceProgress[];
}
export declare class UpgradeableBase implements Upgradeable {
    item: EliteItemDto;
    info: UpgradeableInfo;
    private _type?;
    get type(): ReforgeTarget | undefined;
    set type(value: ReforgeTarget | undefined);
    crop?: Crop;
    options?: PlayerOptions;
    recombobulated: boolean;
    rarity: Rarity;
    reforge?: Reforge | undefined;
    reforgeStats?: ReforgeTier | undefined;
    fortune: number;
    private items;
    constructor(options: {
        item: EliteItemDto;
        options?: PlayerOptions;
        items: Partial<Record<string, UpgradeableInfo>>;
    });
    getFortune(): number;
    getCalculatedStats(): Partial<Record<Stat, number>>;
    getUpgrades(): FortuneUpgrade[];
    getProgress(): FortuneSourceProgress[];
    getItemUpgrade(): Upgrade | undefined;
    getNextItemUpgrade(): {
        upgrade: Upgrade;
        info: UpgradeableInfo;
    } | undefined;
    getLastItemUpgrade(): {
        upgrade: Upgrade;
        info: UpgradeableInfo;
    } | undefined;
}
