import { TrinketType } from "isaac-typescript-definitions";
import type { TrinketSituation } from "../interfaces/TrinketSituation";
/**
 * Helper function to restore the player's trinkets back to the way they were before the
 * `temporarilyRemoveTrinket` function was used. It will re-smelt any smelted trinkets that were
 * removed.
 */
export declare function giveTrinketsBack(player: EntityPlayer, trinketSituation: TrinketSituation | undefined): void;
/**
 * Helper function to smelt a trinket. Before smelting, this function will automatically remove the
 * trinkets that the player is holding, if any, and then give them back after the new trinket is
 * smelted.
 *
 * @param player The player to smelt the trinkets to.
 * @param trinketType The trinket type to smelt.
 * @param numTrinkets Optional. If specified, will smelt the given number of trinkets. Use this to
 *                    avoid calling this function multiple times. Default is 1.
 */
export declare function smeltTrinket(player: EntityPlayer, trinketType: TrinketType, numTrinkets?: number): void;
/**
 * Helper function to smelt two or more different trinkets. If you want to smelt one trinket (or
 * multiple copies of one trinket), then use the `smeltTrinket` helper function instead.
 *
 * This function is variadic, meaning that you can pass as many trinket types as you want to smelt.
 *
 * Before smelting, this function will automatically remove the trinkets that the player is holding,
 * if any, and then give them back after the new trinket is smelted.
 *
 * @param player The player to smelt the trinkets to.
 * @param trinketTypes The trinket types to smelt.
 */
export declare function smeltTrinkets(player: EntityPlayer, ...trinketTypes: readonly TrinketType[]): void;
/**
 * Helper function to temporarily remove a specific kind of trinket from the player. Use this in
 * combination with the `giveTrinketsBack` function to take away and give back a trinket on the same
 * frame. This function correctly handles multiple trinket slots and ensures that all copies of the
 * trinket are removed, including smelted trinkets.
 *
 * Note that one smelted golden trinket is the same as two smelted normal trinkets.
 *
 * @returns Undefined if the player does not have the trinket, or TrinketSituation if they do.
 */
export declare function temporarilyRemoveTrinket(player: EntityPlayer, trinketType: TrinketType): TrinketSituation | undefined;
/**
 * Helper function to temporarily removes a player's held trinkets, if any. This will not remove any
 * smelted trinkets. Use this in combination with the `giveTrinketsBack` function to take away and
 * give back trinkets on the same frame.
 *
 * @returns Undefined if the player does not have any trinkets, or TrinketSituation if they do.
 */
export declare function temporarilyRemoveTrinkets(player: EntityPlayer): TrinketSituation | undefined;
//# sourceMappingURL=trinketGive.d.ts.map