import { ActiveSlot, CollectibleType } from "isaac-typescript-definitions";
/**
 * Helper function to add a charge to the player's active item. Will flash the HUD and play the
 * appropriate sound effect, depending on whether the charge is partially full or completely full.
 *
 * If the player's active item is already fully charged, then this function will return 0 and not
 * flash the HUD or play a sound effect.
 *
 * This function will take the following things into account:
 * - The Battery
 * - AAA Battery
 *
 * @param player The player to grant the charges to.
 * @param activeSlot Optional. The slot to grant the charges to. Default is `ActiveSlot.PRIMARY`.
 * @param numCharges Optional. The amount of charges to grant. Default is 1.
 * @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
 * @returns The amount of charges that were actually granted. For example, if the active item was
 *          only one away from a full charge, but the `numCharges` provided to this function was 2,
 *          then this function would return 1.
 */
export declare function addCharge(player: EntityPlayer, activeSlot?: ActiveSlot, numCharges?: number, playSoundEffect?: boolean): int;
/**
 * Helper function to add a charge to a player's active item(s), emulating what happens when a room
 * is cleared.
 *
 * This function will take the following things into account:
 * - 2x2 rooms and L rooms granting a double charge
 * - The Battery
 * - AAA Battery
 * - Not charging active items with `chargetype="special"`
 *
 * @param player The player to grant the charges to.
 * @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
 *                            room for the purposes of calculating how much charge to grant. Default
 *                            is true.
 * @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
 */
export declare function addRoomClearCharge(player: EntityPlayer, bigRoomDoubleCharge?: boolean, playSoundEffect?: boolean): void;
/**
 * Helper function to add a charge to one of a player's active items, emulating what happens when a
 * room is cleared.
 *
 * This function will take the following things into account:
 * - L rooms and 2x2 rooms granting a double charge
 * - The Battery
 * - AAA Battery
 * - Not charging active items with `chargetype="special"`
 *
 * @param player The player to grant the charges to.
 * @param activeSlot Optional. The active item slot to grant the charges to. Default is
 *                   `ActiveSlot.PRIMARY`.
 * @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
 *                            room for the purposes of calculating how much charge to grant. Default
 *                            is true.
 * @param playSoundEffect Optional. Whether to play a charge-related sound effect. Default is true.
 */
export declare function addRoomClearChargeToSlot(player: EntityPlayer, activeSlot?: ActiveSlot, bigRoomDoubleCharge?: boolean, playSoundEffect?: boolean): void;
/**
 * Helper function to add a charge to every player's active item, emulating what happens when a room
 * is cleared.
 *
 * This function will take the following things into account:
 * - L rooms and 2x2 rooms granting a double charge
 * - The Battery
 * - AAA Battery
 *
 * @param bigRoomDoubleCharge Optional. If set to false, it will treat the current room as a 1x1
 *                            room for the purposes of calculating how much charge to grant. Default
 *                            is true.
 */
export declare function addRoomClearCharges(bigRoomDoubleCharge?: boolean): void;
/**
 * Helper function to get the amount of charges away from the maximum charge that a particular
 * player is.
 *
 * This function accounts for The Battery. For example, if the player has 2/6 charges on a D6, this
 * function will return 10 (because there are 4 charges remaining on the base charge and 6 charges
 * remaining on The Battery charge).
 *
 * @param player The player to get the charges from.
 * @param activeSlot Optional. The slot to get the charges from. Default is `ActiveSlot.PRIMARY`.
 */
export declare function getChargesAwayFromMax(player: EntityPlayer, activeSlot?: ActiveSlot): int;
/**
 * Helper function to get the combined normal charge and the battery charge for the player's active
 * item. This is useful because you have to add these two values together when setting the active
 * charge.
 *
 * @param player The player to get the charges from.
 * @param activeSlot Optional. The slot to get the charges from. Default is `ActiveSlot.PRIMARY`.
 */
export declare function getTotalCharge(player: EntityPlayer, activeSlot?: ActiveSlot): int;
/**
 * Helper function to find the active slots that the player has the corresponding collectible type
 * in and have enough charge to be used. Returns an empty array if the player does not have the
 * collectible in any active slot or does not have enough charges.
 */
export declare function getUsableActiveItemSlots(player: EntityPlayer, collectibleType: CollectibleType): ActiveSlot[];
/**
 * Helper function to check if a player's active item is "double charged", meaning that it has both
 * a full normal charge and a full charge from The Battery.
 *
 * @param player The player to check.
 * @param activeSlot Optional. The slot to check. Default is `ActiveSlot.PRIMARY`.
 */
export declare function isActiveSlotDoubleCharged(player: EntityPlayer, activeSlot?: ActiveSlot): boolean;
/**
 * Helper function to play the appropriate sound effect for a player after getting one or more
 * charges on their active item. (There is a different sound depending on whether the item is fully
 * charged.)
 *
 * @param player The player to play the sound effect for.
 * @param activeSlot Optional. The slot that was just charged. Default is `ActiveSlot.PRIMARY`.
 */
export declare function playChargeSoundEffect(player: EntityPlayer, activeSlot?: ActiveSlot): void;
//# sourceMappingURL=charge.d.ts.map