import { OsrsAccount } from "../account/OsrsAccount";
import { Quest } from "./Quest";
/**
 * OSRS Quest utility tool
 *
 * @description A tool to help with quest-related operations, such as checking if an account can complete a quest.
 * @author James Cerniglia
 */
declare class QuestTool {
    private osrsAccount;
    constructor(account?: OsrsAccount);
    /**
     * Set the account to be used in this quest tool
     * @param  {OsrsAccount} acc1 The osrs Account to be associated with this class object.
     */
    setOsrsAccount(acc1: OsrsAccount): boolean;
    /**
     * Get the osrs account associated with this quest tool
     * @return  {OsrsAccount | undefined} The osrs Account associated with this class object.
     */
    getOsrsAccount(): OsrsAccount | undefined;
    /**
     * Determine if the account can complete a quest, including recursively checking quest requirements.
     * @param quest The quest to check (must be a Quest instance)
     * @param visited (internal) Set of quest names already checked to prevent infinite recursion
     */
    canCompleteQuest(quest: Quest | undefined, visited?: Set<string>): boolean;
    static getAllQuests(): Quest[];
    static getAllMiniQuests(): Quest[];
    /**
     * Build the quest registry mapping canonical names to quest objects.
     * Uses QuestList as the source of truth for quest names.
     * @returns Map of normalized quest names to Quest objects
     */
    private static buildQuestRegistry;
    /**
     * Find the quest object matching a canonical quest name from QuestList.
     * Uses the quest's name property to match against the canonical name.
     * @param canonicalName The canonical name from QuestList
     * @param questMap Map of available quest objects
     * @returns The matching Quest object or undefined
     */
    private static findQuestByCanonicalName;
    /**
     * Normalize a quest name for comparison purposes.
     * Removes punctuation, extra spaces, and converts to lowercase.
     * @param questName The quest name to normalize
     * @returns Normalized quest name
     */
    private static normalizeQuestName;
    /**
     * Calculate Levenshtein distance between two strings for fuzzy matching.
     * @param str1 First string
     * @param str2 Second string
     * @returns Levenshtein distance
     */
    private static levenshteinDistance;
    /**
     * Get a quest by name with support for fuzzy matching and common variations.
     * Supports exact matches, case-insensitive matches, and approximate matches.
     * @param questName The name of the quest to retrieve
     * @returns Quest instance or undefined if not found
     */
    static getQuestByName(questName: string): Quest | undefined;
    private static questCache;
    /**
     * Get the maximum boost for a given skill, based on OSRS Wiki data.
     * @param skillName The name of the skill (case-insensitive, e.g. 'Attack', 'Herblore')
     * @returns The maximum boost amount for the skill (positive integer, or 0 if unboostable)
     */
    static getMaxSkillBoost(skillName: string): number;
}
export { QuestTool };
//# sourceMappingURL=QuestTool.d.ts.map