import { EliteItemDto } from '../fortune/item.js';
import { UpgradeableInfo } from '../fortune/upgradeable.js';
import type { GearSlot } from '../items/armor.js';
import type { FARMING_TOOLS } from '../items/tools.js';
import { Crop } from './crops.js';
import { Stat } from './stats.js';
export declare enum UpgradeReason {
    NextTier = "next",
    DeadEnd = "dead",
    Situational = "situational"
}
export interface FortuneSource {
    name: string;
    fortunePerLevel: number;
    cropSpecific?: boolean;
    maxLevel: number;
    wiki: string;
    statsPerLevel?: Partial<Record<Stat, number>>;
}
export interface FortuneSourceProgress {
    name: string;
    fortune: number;
    ratio: number;
    maxLevel?: number;
    fortunePerLevel?: number;
    maxFortune: number;
    wiki?: string;
    upgrades?: FortuneUpgrade[];
    progress?: FortuneSourceProgress[];
    item?: EliteItemDto;
    info?: UpgradeableInfo;
    nextInfo?: UpgradeableInfo;
    maxInfo?: UpgradeableInfo;
    api?: boolean;
}
export interface UpgradeCost {
    items: Record<string, number>;
    coins?: number;
    copper?: number;
}
export declare enum UpgradeCategory {
    Enchant = "enchant",
    Rarity = "rarity",
    Item = "item",
    Gem = "gem"
}
export declare enum UpgradeAction {
    Apply = "apply",
    Recombobulate = "recombobulate",
    LevelUp = "levelup"
}
export interface FortuneUpgradeImprovement {
    name: string;
    fortune: number;
}
export interface FortuneUpgrade {
    title: string;
    increase: number;
    action: UpgradeAction;
    category: UpgradeCategory;
    cost?: UpgradeCost;
    wiki?: string;
    improvements?: FortuneUpgradeImprovement[];
}
export interface Upgrade {
    id: string;
    reason: UpgradeReason;
    cost?: UpgradeCost;
    why?: string;
    preffered?: boolean;
}
export interface InitialItems {
    tools: Partial<Record<Crop, keyof typeof FARMING_TOOLS>>;
    armor: Record<GearSlot, string | string[]>;
    pets: string[];
}
