package com.sikey.wa04.business.domain.adapter;

import com.sikey.wa04.business.domain.entity.ChildId;
import com.sikey.wa04.business.domain.entity.DeviceId;

/**
 * 设备绑定状态适配器
 *
 * @author luoyangwei
 */
public interface DeviceBindStateAdapter {

    /**
     * 设备是否被绑定的
     *
     * @param deviceId 设备ID
     * @return 是否被绑定
     */
    Boolean isBinding(DeviceId deviceId);

    /**
     * 是否绑定
     *
     * @param ticket Ticket
     * @return 是否绑定
     */
    Boolean isBinding(String ticket);

    /**
     * 获取绑定者
     *
     * @param ticket Ticket
     * @return 孩子ID
     */
    ChildId getBinder(String ticket);

    /**
     * 获取绑定者
     *
     * @param deviceId 设备ID
     * @return 孩子ID
     */
    ChildId getBinder(DeviceId deviceId);

    /**
     * 绑定
     *
     * @param deviceId 设备ID
     * @param childId  孩子ID
     */
    void bind(DeviceId deviceId, ChildId childId);

    /**
     * 解绑
     *
     * @param deviceId 设备ID
     */
    void unbind(DeviceId deviceId);

}
