import type { CollectibleType, TrinketType } from "isaac-typescript-definitions";
import { PlayerType } from "isaac-typescript-definitions";
import { MAIN_CHARACTERS } from "../core/constants";
type MainCharacter = (typeof MAIN_CHARACTERS)[number];
/**
 * Helper function to determine if the given character can have red heart containers. Returns true
 * for characters like Isaac, Magdalene, or Cain. Returns true for Keeper and Tainted Keeper, even
 * though coin containers are not technically the same as red heart containers. Returns false for
 * characters like Blue Baby. Returns false for The Lost and Tainted Lost.
 */
export declare function canCharacterHaveRedHearts(character: PlayerType): boolean;
/**
 * Helper function to determine if the given character can have soul hearts. Returns true for
 * characters like Isaac, Magdalene, or Cain. Returns false for characters like Bethany. Returns
 * false for The Lost and Tainted Lost.
 */
export declare function canCharacterHaveSoulHearts(character: PlayerType): boolean;
/**
 * Helper function for determining whether the given character can take free Devil Deals. (e.g. The
 * Lost, Tainted Lost, etc.)
 */
export declare function canCharacterTakeFreeDevilDeals(character: PlayerType): boolean;
/**
 * Normally, characters get a red heart container upon reaching a new floor with an eternal heart,
 * but some characters grant a black heart instead. Returns true for Dark Judas and Tainted Judas.
 * Otherwise, returns false.
 */
export declare function doesCharacterGetBlackHeartFromEternalHeart(character: PlayerType): boolean;
/**
 * Helper function to determine if the specified character starts with an active item.
 *
 * For the purposes of this function, the save file is considered to be fully unlocked (e.g. Isaac
 * is considered to starts with the D6, but this is not the case on a brand new save file).
 */
export declare function doesCharacterStartWithActiveItem(character: PlayerType): boolean;
/**
 * Helper function to get the numerical damage multiplier for a character.
 *
 * @param character The character to get.
 * @param hasWhoreOfBabylon Optional. Whether the character has the Whore of Babylon effect
 *                          currently active. Defaults to false. This is necessary because Eve's
 *                          damage multiplier changes from 0.75 to 1 when she has Whore of Babylon
 *                          active.
 */
export declare function getCharacterDamageMultiplier(character: PlayerType, hasWhoreOfBabylon?: boolean): float;
/**
 * - Most characters have a 56 frame death animation (i.e. the "Death" animation).
 * - The Lost and Tainted Lost have a 38 frame death animation (i.e. the "LostDeath" animation).
 * - Tainted Forgotten have a 20 frame death animation (i.e. the "ForgottenDeath" animation).
 */
export declare function getCharacterDeathAnimationName(character: PlayerType): string;
/**
 * Returns the maximum heart containers that the provided character can have. Normally, this is 12,
 * but with Keeper it is 3, and with Tainted Keeper it is 2. This does not account for Birthright or
 * Mother's Kiss; use the `getPlayerMaxHeartContainers` helper function for that.
 */
export declare function getCharacterMaxHeartContainers(character: PlayerType): int;
/** Helper function to get the name of a character. Returns "Unknown" for modded characters. */
export declare function getCharacterName(character: PlayerType): string;
/**
 * Helper function to get the path to the sprite for a particular character.
 *
 * For example, the file path for `PlayerType.ISAAC` is
 * "characters/costumes/character_001_isaac.png".
 */
export declare function getCharacterSpritePNGFilePath(character: PlayerType): string;
/**
 * Helper function to get the collectibles that are granted to a particular character at the
 * beginning of a run.
 *
 * Note that this will return an empty array for Eden and Tainted Eden.
 */
export declare function getCharacterStartingCollectibleTypes(character: PlayerType): readonly CollectibleType[];
/**
 * Helper function to get the trinket that is granted to a particular character at the beginning of
 * a run. Returns undefined if the character does not start with a trinket.
 *
 * Note that this will return undefined for Eden and Tainted Eden.
 */
export declare function getCharacterStartingTrinketType(character: PlayerType): TrinketType | undefined;
/**
 * Helper function to get the "main" version of the character. In other words, this is the character
 * that selectable from the main menu (and has achievements related to completing the various bosses
 * and so on).
 *
 * For example, the main character for `PlayerType.MAGDALENE` (1) is also `PlayerType.MAGDALENE`
 * (1), but the main character for `PlayerType.LAZARUS_2` (11) would be `PlayerType.LAZARUS` (8).
 *
 * For `PlayerType.POSSESSOR` (-1) and modded characters, the same character will be returned.
 */
export declare function getMainCharacter(character: PlayerType): PlayerType;
export declare function isFlyingCharacter(character: PlayerType): boolean;
/**
 * Helper function to check if the provided character is one of the characters that are selectable
 * from the main menu (and have achievements related to completing the various bosses and so on).
 */
export declare function isMainCharacter(character: PlayerType): character is MainCharacter;
export declare function isModdedCharacter(character: PlayerType): boolean;
export declare function isVanillaCharacter(character: PlayerType): boolean;
export {};
//# sourceMappingURL=characters.d.ts.map