import { LevelRequirement, Requirement } from "../Requirement";
/**
 * Hunting methods used for Hunters' Rumours.
 * Each method has its own drop rate for rare creature parts.
 * Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours
 */
export declare enum HuntingMethod {
    BirdSnare = "Bird snare",
    BoxTrap = "Box trap",
    ButterflyNet = "Butterfly net",
    Deadfall = "Deadfall",
    Falconry = "Falconry",
    NetTrap = "Net trap",
    SpikedPit = "Spiked pit",
    TrackingKebbit = "Tracking (kebbit)",
    TrackingHerbiboar = "Tracking (herbiboar)"
}
/**
 * Tier of a Hunter's Rumour.
 * Each tier has its own Hunter level requirement and reward quality.
 */
export declare enum RumourTier {
    Novice = "Novice",
    Adept = "Adept",
    Expert = "Expert",
    Master = "Master"
}
/**
 * Hunters' loot sack variants by rumour tier.
 */
export declare enum HunterLootSackType {
    Basic = "Hunters' loot sack (basic)",
    Adept = "Hunters' loot sack (adept)",
    Expert = "Hunters' loot sack (expert)",
    Master = "Hunters' loot sack (master)"
}
/**
 * Guild hunters who assign Hunters' Rumours.
 * Each hunter has a distinct list of rumours they can assign.
 */
export declare enum GuildHunterName {
    Gilman = "Huntmaster Gilman",
    Cervus = "Guild Hunter Cervus",
    Ornus = "Guild Hunter Ornus",
    Aco = "Guild Hunter Aco",
    Teco = "Guild Hunter Teco",
    Wolf = "Guild Hunter Wolf"
}
/**
 * Drop rate data for rare creature parts by hunting method.
 */
export interface DropRateInfo {
    /** Base drop rate denominator (e.g. 20 means 1/20) */
    baseRate: number;
    /** Pity threshold without guild hunter outfit */
    pityThreshold: number;
    /** Pity threshold with guild hunter outfit */
    pityThresholdWithOutfit: number;
}
/**
 * A hunter creature that can be hunted for Hunters' Rumours.
 */
export interface HunterRumour {
    /** The creature's name */
    creature: string;
    /** Hunter level requirement to hunt this creature (unboostable) */
    hunterRequirement: LevelRequirement;
    /** Hunting method used to catch this creature */
    method: HuntingMethod;
    /** Locations where this creature can be found */
    locations: string[];
    /** Additional requirements beyond Hunter level (quests, other skills, diaries) */
    requirements: Requirement[];
}
/**
 * A guild hunter who assigns Hunters' Rumours.
 */
export interface GuildHunter {
    /** The guild hunter's full name */
    name: GuildHunterName;
    /** The tier of rumours this hunter assigns */
    tier: RumourTier;
    /** Hunter level required to receive rumours from this hunter (unboostable) */
    levelRequired: LevelRequirement;
    /** Quest required to access this hunter's rumours */
    questRequired?: string;
    /** Rumours this guild hunter can assign */
    rumours: HunterRumour[];
}
/**
 * Loot sack metadata by tier.
 */
export interface HunterLootSackInfo {
    sackType: HunterLootSackType;
    estimatedGpValue: number;
    minimumHunterLevel: number;
    minimumHunterXp: number;
    maximumHunterXp: number;
}
/**
 * Milestone unlocks from total rumours completed.
 */
export interface RumourMilestoneUnlock {
    rumoursCompleted: number;
    unlock: string;
}
/**
 * Result returned when opening a hunters' loot sack.
 */
export interface OpenLootSackResult {
    sackType: HunterLootSackType;
    tier: RumourTier;
    estimatedGpValue: number;
    hunterExperience: number;
    milestonesUnlocked: RumourMilestoneUnlock[];
}
/**
 * Drop rates for rare creature parts by hunting method.
 * Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours#Drop_rates
 */
export declare const DROP_RATES: Record<HuntingMethod, DropRateInfo>;
/**
 * Experience modifier per rumour tier, used in the reward formula:
 * Experience = (HunterLevel + 5) * Modifier
 */
export declare const TIER_XP_MODIFIER: Record<RumourTier, number>;
/**
 * Loot sack metadata from the wiki's rewards table.
 */
export declare const HUNTER_LOOT_SACK_INFO: Record<RumourTier, HunterLootSackInfo>;
/**
 * Rumour completion milestone unlocks.
 */
export declare const RUMOUR_MILESTONE_UNLOCKS: readonly RumourMilestoneUnlock[];
/**
 * Calculate the Hunter experience rewarded for completing a rumour.
 * @param hunterLevel - The player's current Hunter level
 * @param tier - The tier of the completed rumour
 * @returns The experience awarded
 */
export declare function calculateRumourExperience(hunterLevel: number, tier: RumourTier): number;
/**
 * Create an unboostable Hunter level requirement helper.
 */
export declare function createHunterLevelRequirement(level: number): LevelRequirement;
/**
 * Get milestones unlocked at a total rumour completion count.
 */
export declare function getMilestoneUnlocks(rumoursCompleted: number): RumourMilestoneUnlock[];
/**
 * Open a hunters' loot sack for a completed rumour.
 * Returns deterministic reward metadata and XP calculation from official formula.
 */
export declare function openHuntersLootSack(tier: RumourTier, hunterLevel: number, rumoursCompleted?: number): OpenLootSackResult;
//# sourceMappingURL=HunterRumour.d.ts.map