import { Familiar, Item } from "kolmafia"; import { NumericModifier } from "../../modifierTypes.js"; export type FamiliarRider = { familiar: Familiar; drops: number | Item[] | Map; probability: number; dropPredicate?: () => boolean; }; export declare const ridingFamiliars: readonly FamiliarRider[]; /** * Value a specified familiar Crown rider * * @param rider Familiar to value * @param modifierValueFunction Value of the extra modifiers the familiar provides, * @param dropsValueFunction Value to assign the drops of the familiar gives * @param ignoreLimitedDrops Whether to ignore drops that are daily or otherwise limited * @returns Rider value (in meat) */ export declare function valueRider(rider: FamiliarRider, modifierValueFunction: (familiar: Familiar) => number, dropsValueFunction: (drops: Item[] | Map) => number, ignoreLimitedDrops?: boolean): number; type RiderMode = { modifierValueFunction: (familiar: Familiar) => number; dropsValueFunction: (drops: Item[] | Map) => number; ignoreLimitedDrops: boolean; excludeCurrentFamiliar: boolean; }; /** * Creates a rider mode for this session * * @param name Rider mode name * @param details An object consisting of various settings for the RiderMode: * @param details.modifierValueFunction Function to value a familiar itself, often using modifiers, * @param details.dropsValueFunction Function to value the drops of a familiar, which are stored as an `Item[]` or `Map` * @param details.ignoreLimitedDrops Whether to ignore daily or otherwise limited drops * @param details.excludeCurrentFamiliar Whether to exclude the player's current familiar * @returns Map of all rider modes created this session, including the one that was just made */ export declare function createRiderMode(name: string, details: Partial): Map; /** * @param name The name of the `RiderMode` to check * @returns Whether or not said `RiderMode` exists */ export declare function hasRiderMode(name: string): boolean; /** * Pick a rider * * @param mode Mode by which to select possible riders * @returns Picked faimiliar rider or null if no rider could be selected */ export declare function pickRider(mode: string): FamiliarRider | null; /** * Find the associated NumericModifier for a given familiar when enthroned or bjornified * * @param modifier The NumericModifier in question * @param familiar The Familiar in question * @returns The value of the given numeric modifier for the Crown of Thrones (or buddy bjorn) when the given familiar is encromulated */ export declare function getModifier(modifier: NumericModifier, familiar: Familiar): number; /** * Create a `modifierValueFunction` for a familiar. * * @param modifiers An array consisting of the `NumericModifier`s relevant to your valuation * @param functions An object keyed by `NumericModifier`s whose values are functions that map the the result of a modifier to its corresponding valuation * @returns A function that maps a familiar to the value of its modifiers in the crown of thrones or buddy bjorn. */ export declare function createModifierValueFunction(modifiers: T[], functions: { [x in T]: (mod: number) => number; }): (familiar: Familiar) => number; export {};