import { chatEvents } from '../protocol/events/chat-events'; import { roomEvents } from '../protocol/events/room-events'; import * as proto from '../protocol/protocol'; import * as wireEntities from '../protocol/wire-entities'; import { ArtichokeApi } from '../artichoke/artichoke-api'; import { RoomType } from './room-type'; import { Observable } from 'rxjs'; import { LoggerService } from '../logger/logger-service'; export declare abstract class Room implements wireEntities.Room { protected artichokeAPI: ArtichokeApi; static readonly defaultRoomCount = 20; abstract readonly roomType: RoomType; readonly id: proto.ID; readonly name: string; readonly created: proto.Timestamp; readonly direct: boolean; users: ReadonlyArray; readonly orgId?: proto.ID; marks: { [type: string]: proto.Timestamp; }; getLatestMessages(count?: number, historyFilter?: proto.HistoryFilter): Promise>; getMessages(limit: number, timestamp?: number, historyFilter?: proto.HistoryFilter): Promise>; getUsers(): Promise>; getCachedMark(user: proto.ID): number; setMark(timestamp: proto.Timestamp): void; setDelivered(messageId: proto.ID): void; send(message: string, context?: proto.Context): Observable; sendCustom(message: string, subtag: string, context: proto.Context): Observable; indicateTyping(preview?: string): void; get marked$(): Observable; get message$(): Observable; get messageUpdated$(): Observable; get messageDelivered$(): Observable; get customMessage$(): Observable; get typing$(): Observable; customSubtagMessage$(subtag: string): Observable; protected get roomEvent$(): Observable; protected constructor(room: wireEntities.Room, logger: LoggerService, artichokeAPI: ArtichokeApi); }