package com.ttstd.signaling.store;

import com.ttstd.signaling.model.DeviceAccount;
import com.ttstd.signaling.model.DeviceAllowlist;

import java.util.List;
import java.util.Optional;

/**
 * 设备身份存储抽象。生产环境由 JPA 实现，测试/演示由内存实现。
 */
public interface DeviceStore {
    Optional<DeviceAccount> findByDeviceUid(String deviceUid);
    Optional<DeviceAccount> findBySn(String sn);
    boolean existsBySn(String sn);
    DeviceAccount save(DeviceAccount account);
    List<DeviceAccount> listAll();

    /** 删除设备。设备不存在时静默返回。 */
    void delete(String deviceUid);

    boolean isSnAllowed(String sn);
    void addAllowedSn(DeviceAllowlist entry);
    List<DeviceAllowlist> listAllowed();

    /** 从 SN 白名单移除条目。 */
    void removeAllowedSn(String sn);
}
