/**
 * NPC API — программно создаваемые персонажи (дружественные и враги).
 */
declare namespace game {
    /**
     * Прокси на созданного NPC. Получается из game.scene.spawnNpc().
     */
    interface NpcRef {
        readonly ref: string;
        readonly name: string;
        readonly position: game.Vector3;
        readonly hp: number;
        readonly alive: boolean;

        /** Идти в точку (с pathfinding). */
        moveTo(x: number, z: number): void;

        /** Следовать за объектом/игроком. */
        follow(target: game.Ref | 'player'): void;

        /** Остановить движение. */
        stop(): void;

        /** Реплика над головой. */
        say(text: string, seconds?: number): void;

        /** Нанести урон. */
        damage(amount: number): void;

        /** Удалить NPC. */
        remove(): void;

        /** Подписка на смерть NPC. */
        onDeath(fn: () => void): void;
    }

    /** Подписка на смерть любого NPC. */
    function onNpcDeath(fn: (npc: NpcRef) => void): void;

    /** Подписка на убийство моба (zombie). */
    function onMobKilled(fn: (event: { ref: game.Ref; type: string }) => void): void;

    /** Изменение HP игрока (любой источник). */
    function onHpChange(fn: (event: { delta: number; source?: string }) => void): void;
}
