import { Long } from 'bson'; import { ChatLogged } from '../chat'; import { ChannelUser } from '../user'; import { ChannelData } from './channel-info'; import { ChannelDataUpdater } from './updater'; /** * Store channel data */ export interface ChannelDataStore extends ChannelData { /** * Get total user count */ readonly userCount: number; /** * Get channel user info * * @param user User to find */ getUserInfo(user: ChannelUser): Readonly | undefined; /** * Get user info iterator */ getAllUserInfo(): IterableIterator; /** * Get readers in this channel. * This may not work correctly on channel with many users. (99+) * * @param chat */ getReaders(chat: ChatLogged): Readonly[]; /** * Get reader count. * This may not work correctly on channel with many users. (99+) * * @param chat */ getReadCount(chat: ChatLogged): number; } export interface UpdatableChannelDataStore extends ChannelDataStore, ChannelDataUpdater { } export interface ChannelStore { /** * Try to get channel instance with channel id * * @param channelId */ get(channelId: Long): T | undefined; /** * Iterate every channel list */ all(): IterableIterator; /** * Total channel count */ readonly size: number; }