import type { PlayerIndex } from "../../../types/PlayerIndex";
import type { PostCustomRevive } from "../../callbacks/PostCustomRevive";
import type { PreCustomRevive } from "../../callbacks/PreCustomRevive";
import { Feature } from "../../private/Feature";
import type { RunInNFrames } from "../other/RunInNFrames";
declare enum CustomReviveState {
    DISABLED = 0,
    /**
     * We can't immediately jump to waiting for an item animation because it is possible for a player
     * to be holding an item above their head as they are dying (e.g. with Razor Blade).
     */
    WAITING_FOR_ROOM_TRANSITION = 1,
    WAITING_FOR_ITEM_ANIMATION = 2
}
export declare class CustomRevive extends Feature {
    v: {
        run: {
            state: CustomReviveState;
            revivalType: int | null;
            dyingPlayerIndex: PlayerIndex | null;
        };
    };
    private readonly preCustomRevive;
    private readonly postCustomRevive;
    private readonly runInNFrames;
    constructor(preCustomRevive: PreCustomRevive, postCustomRevive: PostCustomRevive, runInNFrames: RunInNFrames);
    private readonly postRender;
    private readonly postFamiliarInitOneUp;
    private readonly postNewRoomReordered;
    private readonly postPEffectUpdateReordered;
    private checkWaitingForItemAnimation;
    private readonly postPlayerFatalDamage;
    private readonly preBerserkDeath;
    /**
     * The player is about to die, which will immediately delete the save data for the run. To prevent
     * this from happening, we grant the 1-Up item.
     */
    private playerIsAboutToDie;
    private logStateChanged;
}
export {};
//# sourceMappingURL=CustomRevive.d.ts.map