import { type IGraphicsManager, type ILoopedParticleFxAtCoordOptions, type IParticleFxAtCoordOptions, type IScreenTextOptions } from "../../common/graphics/IGraphicsManager";
import { type IVector2D, type IVector3D } from "../../../../shared/common/utils";
/**
 * Реализация `IGraphicsManager` под CCMP.
 *
 * RageMP даёт высокоуровневые обёртки `mp.game.graphics.drawText` /
 * `world3dToScreen2d` / etc. У CCMP таких помощников нет — есть только
 * сырые GTA V натив-биндинги в `ccmp.natives.{hud,graphics}.*`. Этот класс
 * собирает их в эквивалент RageMP API.
 *
 * ### `drawText` — мульти-нативная цепочка
 *
 * Стандартная GTA V последовательность:
 *  1. `SET_TEXT_FONT/SCALE/COLOUR/OUTLINE/CENTRE` — стиль текста
 *  2. `BEGIN_TEXT_COMMAND_DISPLAY_TEXT('STRING')` — открыть text command
 *  3. `ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text)` — добавить содержимое
 *  4. `END_TEXT_COMMAND_DISPLAY_TEXT(x, y, 0)` — отрисовать
 *
 * **Hot path:** вызывается каждый render-tick из `HudController.onRender`
 * (ammo, nametags, etc). Все вызовы синхронны (V8-ops), общая стоимость —
 * единицы микросекунд на текст.
 *
 * **Ограничение длины:** `ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME` усекает
 * вход на 99 символов. Для типичных HUD-меток (ammo "30/120", имена игроков)
 * не критично; для длинных строк нужно разбивать на чанки последовательными
 * `ADD_*` вызовами. Сейчас не реализовано — добавим если понадобится.
 *
 * ### `world3dToScreen2d`
 *
 * `getScreenCoordFromWorldCoord` возвращает `{return, screenx, screeny}` —
 * `return=false` означает, что точка вне frustum'а; маппим в `null` для
 * совпадения с RageMP-семантикой.
 *
 * ### `getActiveScreenResolution`
 *
 * Маппится на `getActualScreenResolution` (GTA native `0x873C9F3104101DD3`),
 * который возвращает физическое разрешение рендера — то же, что RageMP'шный
 * `getActiveScreenResolution` (это один и тот же натив, переименованный по-
 * разному в разных биндингах).
 *
 * ### `startScreenEffect` / `stopScreenEffect`
 *
 * Маппятся на `animpostfxPlay` / `animpostfxStop` (`ANIMPOSTFX_PLAY`/`STOP`) —
 * это и есть GTA V натив для screen effect'ов (по-старому называвшийся
 * `START_SCREEN_EFFECT`).
 */
export declare class CCMPGraphicsManager implements IGraphicsManager {
    drawText(text: string, position: IVector2D, options?: IScreenTextOptions): void;
    world3dToScreen2d(position: IVector3D): IVector2D | null;
    startScreenEffect(effectName: string, duration: number, looped: boolean): void;
    stopScreenEffect(effectName: string): void;
    setPtfxAssetNextCall(assetName: string): void;
    startParticleFxNonLoopedAtCoord(options: IParticleFxAtCoordOptions): boolean;
    startParticleFxLoopedAtCoord(options: ILoopedParticleFxAtCoordOptions): number;
    stopParticleFxLooped(handle: number, p1: boolean): void;
    getSafeZoneSize(): number;
    getActiveScreenResolution(): IVector2D;
}
