// Copyright (c) 2025 Tencent. All rights reserved.
// Author: felixyyan

#pragma once

#include <string>
#include "../include/av_room.h"
#include "../include/av_type.h"
#include "tmg_context_bindings.h"

class TMGRoomBindings {
 public:
  explicit TMGRoomBindings(std::shared_ptr<TMGContextBindings> context_bindings);

  std::string getRoomID();
  int changeRoomType(ITMG_ROOM_TYPE room_type);
  int getRoomType();
  int startRoomSharing(const std::string& target_room_id,
                       const std::string& target_user_id,
                       const std::string& user_sig,
                       int user_sig_len);
  int stopRoomSharing();
  int switchRoom(const std::string& target_room_id, const std::string& user_sig);
  int sendCustomData(unsigned char* data, int length, int repeat_count);
  int stopSendCustomData();
  int updateAudioRecvRange(float range);
  int updateSpatializerRecvRange(float range);
  int updateSelfPosition(const float* position,
                         const int position_len,
                         const float* axis_forward,
                         const int axis_forward_len,
                         const float* axis_right,
                         const int axis_right_len,
                         const float* axis_up,
                         const int axis_up_len);
  int updateOtherPosition(const std::string& user_id, const float* position, int position_len);
  int sendSEIMsg(unsigned char* message, int length, int repeat_count);

 private:
  ITMGRoom* room_ = nullptr;
};
