import { Skill } from './account/Skill';
interface Requirement {
    description: string;
    type: RequirementType;
}
/**
 * Level requirement for a specific skill.
 * Automatically determines boostability from skill metadata.
 * Supports both Skill enum and string skill names for backwards compatibility.
 */
declare class LevelRequirement implements Requirement {
    type: RequirementType;
    skillName: string;
    level: number;
    boostable: boolean;
    constructor(skillName: string | Skill, level: number, boostable?: boolean);
    get description(): string;
    /**
     * Get the expected max level for this skill from metadata.
     * Useful for validation and display purposes.
     */
    getMaxLevel(): number;
}
declare enum RequirementType {
    SlayerLevel = "SlayerLevel",
    Level = "Level",
    CombatLevel = "CombatLevel",
    Quest = "Quest",
    Item = "Item",
    QuestPoint = "QuestPoint",
    Location = "Location",
    SlayerUnlock = "SlayerUnlock"
}
declare class SlayerUnlockRequirement implements Requirement {
    type: RequirementType;
    name: string;
    constructor(name: string);
    get description(): string;
}
declare class SlayerLevelRequirement implements Requirement {
    type: RequirementType;
    level: number;
    constructor(level: number);
    get description(): string;
}
declare class CombatLevelRequirement implements Requirement {
    type: RequirementType;
    level: number;
    constructor(level: number);
    get description(): string;
}
declare class QuestRequirement implements Requirement {
    static fromQuestName(arg0: string): Requirement;
    type: RequirementType;
    questName: string;
    constructor(questName: string);
    get description(): string;
    get completionDescription(): string;
}
declare class QuestPointRequirement implements Requirement {
    type: RequirementType;
    amount: number;
    constructor(amount: number);
    get description(): string;
}
declare class ItemRequirement implements Requirement {
    type: RequirementType;
    itemName: string;
    quantity: number;
    /** Whether the item is consumed during the quest */
    consumed: boolean;
    /** Alternative items that can be used instead */
    alternatives?: string[];
    /** Whether the item must be noted */
    noted?: boolean;
    /** Whether the item can be banked and withdrawn during the quest */
    bankable?: boolean;
    /** Any additional notes about the item requirement */
    notes?: string;
    constructor(itemName: string, quantity?: number, options?: {
        consumed?: boolean;
        alternatives?: string[];
        noted?: boolean;
        bankable?: boolean;
        notes?: string;
    });
    get description(): string;
}
declare class LocationRequirement implements Requirement {
    type: RequirementType;
    locationName: string;
    constructor(locationName: string);
    get description(): string;
}
export { CombatLevelRequirement, ItemRequirement, LevelRequirement, LocationRequirement, QuestPointRequirement, QuestRequirement, RequirementType, SlayerLevelRequirement, SlayerUnlockRequirement, };
export type { Requirement };
//# sourceMappingURL=Requirement.d.ts.map