import { Effect, Item, Skill } from "kolmafia"; export declare abstract class MpSource { usesRemaining(): number; abstract availableMpMin(): number; availableMpMax(): number; abstract execute(): void; } export declare class OscusSoda extends MpSource { static instance: OscusSoda; available(): boolean; usesRemaining(): number; availableMpMin(): number; availableMpMax(): number; execute(): void; } export declare class MagicalSausages extends MpSource { static instance: MagicalSausages; available(): boolean; usesRemaining(): number; availableMpMin(): number; execute(): void; } type MoodOptions = { songSlots: Effect[][]; mpSources: MpSource[]; reserveMp: number; useNativeRestores: boolean; }; declare abstract class MoodElement { mpCostPerTurn(): number; turnIncrement(): number; abstract execute(mood: Mood, ensureTurns: number): boolean; } interface SkillEffectOptions { requireAprilShield?: boolean; } /** * Class representing a mood object. Add mood elements using the instance methods, which can be chained. */ export declare class Mood { static defaultOptions: MoodOptions; /** * Set default options for new Mood instances. * * @param options Default options for new Mood instances. */ static setDefaultOptions(options: Partial): void; options: MoodOptions; elements: MoodElement[]; /** * Construct a new Mood instance. * * @param options Options for mood. */ constructor(options?: Partial); /** * Get the MP available for casting skills. * * @returns Available MP */ availableMp(): number; moreMp(minimumTarget: number): void; /** * Add a skill to the mood. * * @param skill Skill to add. * @param options Additional `SkillEffectOptions` to pass to new `SkillMoodElement` * @returns This mood to enable chaining */ skill(skill: Skill, options?: SkillEffectOptions): Mood; /** * Add an effect to the mood, with casting based on {effect.default}. * * @param effect Effect to add. * @param gainEffect How to gain the effect. Only runs if we don't have the effect. * @returns This mood to enable chaining */ effect(effect: Effect, gainEffect?: () => void): Mood; /** * Add a potion to the mood. * * @param potion Potion to add. * @param maxPricePerTurn Maximum price to pay per turn of the effect. * @returns This mood to enable chaining */ potion(potion: Item, maxPricePerTurn: number): Mood; /** * Add an effect to acquire via pocket wishes to the mood. * * @param effect Effect to wish for in the mood. * @returns This mood to enable chaining */ genie(effect: Effect): Mood; /** * Add an Asdon Martin driving style to the mood. * * @param effect Driving style to add to the mood. * @returns This mood to enable chaining */ drive(effect: Effect): Mood; /** * Execute the mood, trying to ensure {ensureTurns} of each effect. * * @param ensureTurns Turns of each effect to try and achieve. * @returns Whether or not we successfully got this many turns of every effect in the mood. */ execute(ensureTurns?: number): boolean; } export {};