package com.ttstd.controller.network;

import com.ttstd.controller.network.model.BindingItem;
import com.ttstd.controller.network.model.BindingsResponse;
import com.ttstd.controller.network.model.OnlineDevicesResponse;
import com.ttstd.controller.network.model.RedeemRequest;
import com.ttstd.controller.network.model.VerifyResponse;

import io.reactivex.rxjava3.core.Single;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;

/**
 * 用户端业务接口，对应服务端 {@code /api/client}。
 *
 * <p>令牌由 {@link AuthInterceptor} 统一注入 Authorization 头，此处无需声明。
 */
public interface ClientApi {

    /** 校验当前令牌是否有效，用于启动页判断登录态。 */
    @GET("api/client/verify")
    Single<VerifyResponse> verify();

    /** 查询当前用户已绑定的被控端设备列表（含 online 在线标记）。 */
    @GET("api/client/bindings")
    Single<BindingsResponse> bindings();

    /** 查询当前用户已绑定且在线（信令网络活跃）的被控端设备列表。 */
    @GET("api/client/devices/online")
    Single<OnlineDevicesResponse> onlineDevices();

    /** 兑换配对码，建立与被控端的绑定关系。返回新建的绑定记录（结构同 BindingItem）。 */
    @POST("api/client/pairing/redeem")
    Single<BindingItem> redeemPairingCode(@Body RedeemRequest request);
}
