Returned to the WebSocket route by getChatReadState and
markChatRead. The route sends it in welcome and in
chat_read_update, and the client shows unread on the chat's badge.
Usage
import { type ChatReadState } from "api/services/chat-service.ts";