import { Effect } from "kolmafia"; import { NumericModifier } from "../../modifierTypes.js"; export type EffectValuer = Partial> | ((effect: Effect, duration: number) => number) | Effect[]; export type BuskOptions = Partial<{ uselessEffects: Effect[]; hammerTime: boolean; buyItems: boolean; }>; /** * @returns Whether or not you have the prismatic beret */ export declare function have(): boolean; /** * Calculate the optimal power-sum at which to busk, given a weighted set of modifiers. * @param wantedEffects An array of Effects we care about; maximizes the number of those effects we end up with * @param options An object containing the following optional keys: * @param options.uselessEffects An array (defaults to empty) of effects not to consider for the purposes of busk valuation * @param options.buyItems Whether or not we should consider purchasing items from NPC stores; defaults to true * @param options.hammerTime Whether or not to assume you have Hammertime--defaults to whether you currently have it * @param buskUses How many busks should we assume we've cast? Defaults to the current number. * @returns The power-sum at which you'll find the optimal busk for this situation. */ export declare function findOptimalOutfitPower(wantedEffects: Effect[], options?: BuskOptions, buskUses?: number): number; /** * Calculate the optimal power-sum at which to busk, given a weighted set of modifiers. * @param weightedModifiers An object keyed by Numeric Modifiers, with their values representing weights * @param options An object containing the following optional keys: * @param options.uselessEffects An array (defaults to empty) of effects not to consider for the purposes of busk valuation * @param options.buyItems Whether or not we should consider purchasing items from NPC stores; defaults to true * @param options.hammerTime Whether or not to assume you have Hammertime--defaults to whether you currently have it * @param buskUses How many busks should we assume we've cast? Defaults to the current number. * @returns The power-sum at which you'll find the optimal busk for this situation. */ export declare function findOptimalOutfitPower(weightedModifiers: Partial>, options?: BuskOptions, buskUses?: number): number; /** * Calculate the optimal power-sum at which to busk, given a weighted set of modifiers. * @param valueFunction A function that maps effects to values * @param options An object containing the following optional keys: * @param options.uselessEffects An array (defaults to empty) of effects not to consider for the purposes of busk valuation * @param options.buyItems Whether or not we should consider purchasing items from NPC stores; defaults to true * @param options.hammerTime Whether or not to assume you have Hammertime--defaults to whether you currently have it * @param buskUses How many busks should we assume we've cast? Defaults to the current number. * @returns The power-sum at which you'll find the optimal busk for this situation. */ export declare function findOptimalOutfitPower(valueFunction: (effect: Effect, duration: number) => number, options?: BuskOptions, buskUses?: number): number; /** * Calculate the optimal power-sum at which to busk, given a weighted set of modifiers. * @param effectValuer Either a function that maps effect-duration pairs to values, or an object keyed by numeric modifiers with weights as values, or an array of desired effects * @param options An object containing the following optional keys: * @param options.uselessEffects An array (defaults to empty) of effects not to consider for the purposes of busk valuation * @param options.buyItems Whether or not we should consider purchasing items from NPC stores; defaults to true * @param options.hammerTime Whether or not to assume you have Hammertime--defaults to whether you currently have it * @param buskUses How many busks should we assume we've cast? Defaults to the current number. * @returns The power-sum at which you'll find the optimal busk for this situation. */ export declare function findOptimalOutfitPower(effectValuer: EffectValuer, options?: BuskOptions, buskUses?: number): number; /** * Attempt to busk at a particular power * @param power The power in question * @param buyItems Whether or not we should consider purchasing items from NPC stores; defaults to true * @returns If we successfully busked at that power */ export declare function buskAt(power: number, buyItems?: boolean): boolean; export declare function buskFor(weightedModifiers: Partial>, { buyItems, uselessEffects }: BuskOptions): boolean; export declare function buskFor(effects: Effect[], { buyItems, uselessEffects }: BuskOptions): boolean; export declare function buskFor(valueFunction: (effect: Effect, duration: number) => number, { buyItems, uselessEffects }: BuskOptions): boolean;