import 'package:fis_jsonrpc/services/index.dart';

import 'entities/device_entities.dart';

/// 设备管理器
abstract class IDeviceManager {
  /// 获取用户设备分页列表
  ///
  /// [pageIndex] 页码
  ///
  /// [pageSize] 每页数量
  ///
  /// [keyword] 关键字
  Future<PageCollection<DeviceExtendInfoDTO>?> getUserDevicePagedList(
    int pageIndex,
    int pageSize, {
    String? keyword,
    bool? isOnline,
  });

  /// 获取设备信息
  ///
  /// [deviceCode] 设备编号
  Future<DeviceExtendInfoDTO?> getDeviceInfo(String deviceCode);

  ///根据设备短码获取设备信息
  ///
  ///[shortCode] 设备短码
  Future<DeviceExtendInfoDTO?> getDeviceByShortCode(String shortCode);

  /// 分享设备直播
  Future<String?> shareDeviceLive(String deviceCode);

  // 进入直播房间
  /// [deviceCode] 设备编号
  ///
  /// remark: 返回列表表示成功，返回null表示失败
  Future<DeviceLiveDisplayInfoModel?> enterLiveRoom(String deviceCode);

  /// 退出直播房间
  ///
  /// [deviceCode] 设备编号
  Future<bool> exitLiveRoom(String deviceCode);

  /// 发送心跳
  Future<void> sendHeartbeat(String deviceCode);

  ///打开远程控制页面
  Future<void> openRemoteControllerPage(
    String deviceCode, {
    bool isLiveConsultationController = false,
    String consultationCode = '',
  });
}
