import type { LateCalculationContext, LateCalculationResult } from '../constants/latecalc.js';
import { Rarity } from '../constants/reforges.js';
import { Stat, type StatBreakdown } from '../constants/stats.js';
import { type FortuneSourceProgress, type FortuneUpgrade, type StatQueryOptions } from '../constants/upgrades.js';
import type { Effect, EffectEnvironment } from '../effects/types.js';
import { type FarmingPetInfo, type FarmingPetItemInfo, type FarmingPets, type FarmingPetType } from '../items/pets.js';
import type { FarmingPlayer } from '../player/player.js';
import type { PlayerOptions } from '../player/playeroptions.js';
import type { EliteItemDto } from './item.js';
export declare function createFarmingPet(pet: FarmingPetType): FarmingPet;
export declare class FarmingPet {
    readonly pet: FarmingPetType;
    readonly type: FarmingPets;
    readonly info: FarmingPetInfo;
    readonly rarity: Rarity;
    readonly level: number;
    readonly item: FarmingPetItemInfo | undefined;
    fortune: number;
    breakdown: Record<string, number>;
    options?: PlayerOptions;
    constructor(pet: FarmingPetType, options?: PlayerOptions);
    setOptions(options: PlayerOptions): void;
    private computeFortune;
    getFortune(stat?: Stat, player?: FarmingPlayer): number;
    /**
     * Returns the declarative `Effect[]` representation of every per-stat
     * contribution this pet makes (base, per-level, per-rarity-level, abilities,
     * pet item)
     */
    getEffects(_env: EffectEnvironment, player?: FarmingPlayer): Effect[];
    getFullBreakdown(player?: FarmingPlayer): StatBreakdown;
    /**
     * Get late-phase stats for abilities that depend on total fortune.
     * Called after all base stats have been computed.
     */
    getLateStats(ctx: LateCalculationContext): LateCalculationResult;
    getFormattedName(): string;
    getLevel(): number;
    getXpForLevel(level: number): number;
    private withChanges;
    private getStatTotals;
    private getBreakdownProgress;
    private getDeltaStats;
    private getProgressItem;
    getProgress(stats?: Stat[], player?: FarmingPlayer): FortuneSourceProgress[];
    getUpgrades(options?: StatQueryOptions, player?: FarmingPlayer): FortuneUpgrade[];
    getChimeraAffectedStats(multiplier: number): Record<Stat, number>;
    static isValid(pet: FarmingPetType): boolean | "" | undefined;
    static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingPet[];
}
