import type { Effect, EffectEnvironment } from '../../effects/types.js';
import type { FarmingPlayer } from '../../player/player.js';
import { FortuneSource, type FortuneSourceActiveState } from './base.js';
export declare class CropeetleShard extends FortuneSource {
    readonly id = "cropeetle";
    readonly name: string;
    getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
 * Warty Bug Shard - adds Warty drops while farming Nether Wart.
 *
 * Emits an `add-drop` effect crop-scoped to Nether Wart. Drops are tagged
 * `['overbloom','rare-crop']` so Overbloom (and any future global rare-crop
 * multipliers) buff them by default. The drop kind is `'rare'`.
 */
export declare class WartyBugShard extends FortuneSource {
    readonly id = "wart_eater";
    readonly name: string;
    getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
 * Dragonfly Shard - `+0.5` Farming Wisdom per level. Always active.
 */
export declare class DragonflyShard extends FortuneSource {
    readonly id = "dragonfly";
    readonly name: string;
    getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
 * Firefly Shard - `+5` Farming Fortune per level during the day.
 *
 * Active rules (preserved from the existing implementation, which assumes the
 * world is during the day unless overridden):
 *  - If the player has selected Sunflower, force active.
 *  - If the player has selected Moonflower, force inactive.
 *  - If Lunar Moth shard is at an equal-or-higher level, defer to it (inactive).
 *  - Otherwise active.
 */
export declare class FireflyShard extends FortuneSource {
    readonly id = "firefly";
    readonly name: string;
    private resolve;
    getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
    getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
 * Lunar Moth Shard - `+5` Farming Fortune per level during the night.
 *
 * Active rules mirror Firefly (Moonflower forces active, Sunflower forces
 * inactive, otherwise the higher-level shard wins ties going to Lunar Moth).
 */
export declare class LunarMothShard extends FortuneSource {
    readonly id = "lunar_moth";
    readonly name: string;
    private resolve;
    getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
    getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
 * Termite Shard - `+3` Farming Fortune per level while on an infested plot.
 */
export declare class TermiteShard extends FortuneSource {
    readonly id = "termite";
    readonly name: string;
    getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
    getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
 * Galaxy Fish Shard - `+1` Farming/Mining/Foraging Fortune per level.
 */
export declare class GalaxyFishShard extends FortuneSource {
    readonly id = "galaxy_fish";
    readonly name: string;
    getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class LadybugShard extends FortuneSource {
    readonly id = "ladybug";
    readonly name: string;
    getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class InvisibugShard extends FortuneSource {
    readonly id = "invisibug";
    readonly name: string;
    getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class PrayingMantisShard extends FortuneSource {
    readonly id = "praying_mantis";
    readonly name: string;
    getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class PestShard extends FortuneSource {
    readonly id = "pest";
    readonly name: string;
    getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class MudwormShard extends FortuneSource {
    readonly id = "mudworm";
    readonly name: string;
    getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
 * Class registry of every farming attribute shard, keyed by the SkyBlock
 * attribute key (matching `FARMING_ATTRIBUTE_SHARDS`). Use this to enumerate
 * sources during effect collection.
 */
export declare const FARMING_ATTRIBUTE_SHARD_CLASSES: {
    readonly wart_eater: WartyBugShard;
    readonly garden_wisdom: DragonflyShard;
    readonly solar_power: FireflyShard;
    readonly lunar_power: LunarMothShard;
    readonly pretty_clothes: LadybugShard;
    readonly crop_bug: CropeetleShard;
    readonly fancy_visit: InvisibugShard;
    readonly infiltration: TermiteShard;
    readonly insect_power: PrayingMantisShard;
    readonly pest_luck: PestShard;
    readonly visitor_bait: MudwormShard;
    readonly ultimate_dna: GalaxyFishShard;
};
