/**
 * Общие типы для game.* API.
 * Никаких функций здесь — только формы данных, которые встречаются по всем модулям.
 */
declare namespace game {
    /**
     * Точка/вектор в 3D-пространстве.
     * Y — высота (вверх), X и Z — горизонтальная плоскость.
     */
    interface Vector3 {
        x: number;
        y: number;
        z: number;
    }

    /**
     * Цвет в HEX-формате: '#ff0000' (красный), '#0080ff' (голубой), '#fff' (белый).
     * Можно также именами: 'red', 'blue', 'green', 'white', 'black'.
     */
    type Color = string;

    /**
     * Ref — строковый идентификатор объекта на сцене.
     * Возвращается из spawn(), findOne(), all() и используется в setColor, move, delete и пр.
     */
    type Ref = string;

    /**
     * Кривая сглаживания для tween-анимаций.
     *   linear  — без замедления (равномерно)
     *   ease    — ускорение + замедление (плавный старт и финиш) — самое естественное
     *   bounce  — отскок в конце (как мячик на полу)
     *   elastic — пружинистый перелёт через цель
     *   back    — лёгкий откат назад перед движением (как замах)
     */
    type Easing = 'linear' | 'ease' | 'bounce' | 'elastic' | 'back';

    /** Состояние игрока: 'ground' — на земле, 'air' — в воздухе/прыжке, 'water' — в воде. */
    type PlayerState = 'ground' | 'air' | 'water';

    /** Тип прицела игрока. */
    type Crosshair = 'none' | 'dot' | 'cross' | 'circle';

    /** Режим камеры. sideview — вид сбоку для GD-уровней. */
    type CameraMode = 'first' | 'third' | 'front' | 'sideview';

    /** Тип материала примитива (визуально). */
    type Material = 'default' | 'matte' | 'metal' | 'glass' | 'neon';

    /** Тип GUI-элемента. */
    type GuiType = 'frame' | 'text' | 'button' | 'image' | 'textbox' | 'scroll';

    /** Якорь GUI-элемента. */
    type GuiAnchor = 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'
        | 'top' | 'bottom' | 'left' | 'right';
}
