import { Logger, LoggerOptions } from 'pino'; import { Observable, Subject } from 'rxjs'; import { dialog } from '@dlghq/dialog-api'; import { Token } from './Rpc'; import { UUID, Peer, User, Group, GroupMemberList, ActionEvent, FileLocation, Message, HistoryMessage, ActionGroup, MessageAttachment, FullUser, HistoryListMode, GroupType, MessagingUpdate } from './entities'; import { SSLConfig } from './utils/createCredentials'; import RetryOptions from './entities/RetryOptions'; declare type Config = { token: Token; endpoints: Array; ssl?: SSLConfig; loggerOptions?: LoggerOptions; retryOptions?: RetryOptions; }; declare class Bot { private readonly rpc; private readonly ready; private subscriptions; readonly logger: Logger; readonly updateSubject: Subject; constructor(config: Config); stop(): void; private start; private applyEntities; /** * Returns self (bot) user entity. */ getSelf(): Promise; /** * Returns user by id, if bot already seen this user before. * Returns null if user not found. */ getUser(userId: number): Promise; /** * Returns user by id, if bot already seen this user before. * Throws PeerNotFoundError if user not found. */ forceGetUser(userId: number): Promise; /** * Loads full user profile, if bot already seen this user before. */ loadFullUser(userId: number): Promise; /** * Returns group by id, if bot already seen this group before. * Returns null if group not found. */ getGroup(gid: number): Promise; /** * Returns group by id, if bot already seen this group before. * Throws PeerNotFoundError if group not found. */ forceGetGroup(groupId: number): Promise; /** * Returns existing dialogs. */ getDialogs(): Promise>; /** * Returns existing dialogs. */ getGroupMembers(groupId: number): Promise; /** * Subscribes to messages stream. */ subscribeToMessages(): Observable; /** * Subscribes to messages stream. */ subscribeToMessageUpdates(): Observable; /** * Subscribes to messages stream. */ subscribeToActions(): Observable; /** * Sends text message. */ sendText(peer: Peer, text: string, attachment?: null | MessageAttachment, actionOrActions?: ActionGroup | ActionGroup[]): Promise; private sendMessage; /** * Edits text message. * * @param id The message id. * @param editedAt The message last edit date. * @param text Updated text. * @param actionOrActions The message actions. */ editText(id: UUID, editedAt: Date, text: string, actionOrActions?: ActionGroup | ActionGroup[]): Promise; /** * Reads all messages before `since`. */ readMessages(peer: Peer, since: Message): Promise; /** * Deletes text message. * * @param id The message id. * @param editedAt The message last edit date. */ deleteMessage(id: UUID, editedAt: Date): Promise; /** * Sends document message. */ sendDocument(peer: Peer, fileName: string, attachment?: MessageAttachment): Promise; /** * Sends image message. */ sendImage(peer: Peer, fileName: string, attachment?: MessageAttachment): Promise; /** * Retrieves file url by location. */ fetchFileUrl(fileLocation: FileLocation): Promise; /** * Retrieves messages by message ids. */ fetchMessages(mids: Array): Promise>; /** * Loads chat history. */ loadHistory(peer: Peer, since?: Message | null, limit?: number, direction?: HistoryListMode): Promise>; /** * Returns the parameter from key-value synced with the server. */ getParameter(key: string): Promise; /** * Sets the parameter from key-value synced with the server. */ setParameter(key: string, value: string): Promise; /** * Creates new group or channel. */ createGroup(title: string, type: GroupType): Promise; /** * Leaves the group. */ leaveGroup(group: Group): Promise; /** * Edits a group title. */ editGroupTitle(group: Group, title: string): Promise; /** * Edits a group about (description). */ editGroupAbout(group: Group, about: string | null): Promise; /** * Invites a user to the group. */ inviteGroupMember(group: Group, user: User): Promise; /** * Kicks the member from the group. */ kickGroupMember(group: Group, user: User): Promise; /** * Fetches the group invite URL. */ fetchGroupInviteUrl(group: Group): Promise; /** * Joins the group by invite token. */ joinGroupByToken(token: string): Promise; /** * Finds peer by username or shortname. */ findPeer(nickOrShortName: string): Promise; /** * Finds group by shortname. */ findUserByNick(nick: string): Promise; /** * Finds group by shortname. */ findGroupByShortname(shortname: string): Promise; } export default Bot;