using Fleet.Core;
namespace Fleet.Server;
/// Fleet 服务端需要的存储。产品可以自己实现(MoShiro 把它放进 moshiro.db)。
public interface IFleetStore
{
ValueTask FindJoinTokenAsync(ReadOnlyMemory tokenSha256, CancellationToken ct);
/// 原子地把令牌使用次数加一。令牌已吊销、过期或用完时返回 false。
ValueTask TryConsumeJoinTokenAsync(string tokenId, long nowMs, CancellationToken ct);
ValueTask> CreateNodeAsync(NewNode node, CancellationToken ct);
ValueTask GetNodeAsync(NodeId id, CancellationToken ct);
/// 按名称查找状态不是 pending 的节点(用于判断注册时的名称冲突)。
ValueTask FindEstablishedNodeByNameAsync(string name, CancellationToken ct);
ValueTask UpdatePresenceAsync(NodeId id, Presence presence, CancellationToken ct);
}