import { Agent } from '../'; import { MUCAffiliation, MUCRole } from '../Constants'; import { DataForm, IQ, MUCBookmark, MUCConfigure, MUCDestroy, MUCDirectInvite, MUCInvite, MUCUserItem, MUCUserList, Presence, ReceivedMessage, ReceivedMUCPresence, ReceivedPresence } from '../protocol'; declare module '../' { interface Agent { joinedRooms: Map; joiningRooms: Map; leavingRooms: Map; joinRoom(jid: string, nick: string, opts?: Presence): Promise; leaveRoom(jid: string, nick?: string, opts?: Presence): Promise; ban(jid: string, occupant: string, reason?: string): Promise; kick(jid: string, nick: string, reason?: string): Promise; invite(room: string, invites: MUCInvite | MUCInvite[]): void; directInvite(room: string, to: string, opts?: Partial): void; declineInvite(room: string, sender: string, reason?: string): void; changeNick(room: string, nick: string): Promise; setSubject(room: string, subject: string): void; getReservedNick(room: string): Promise; requestRoomVoice(room: string): void; setRoomAffiliation(room: string, jid: string, affiliation: MUCAffiliation, reason?: string): Promise; setRoomRole(room: string, nick: string, role: MUCRole, reason?: string): Promise; getRoomMembers(room: string, opts?: MUCUserItem): Promise; getRoomConfig(room: string): Promise; configureRoom(room: string, form: Partial): Promise; destroyRoom(room: string, opts?: MUCDestroy): Promise; getUniqueRoomName(mucHost: string): Promise; getBookmarks(): Promise; setBookmarks(bookmarks: MUCBookmark[]): Promise; addBookmark(bookmark: MUCBookmark): Promise; removeBookmark(jid: string): Promise; } interface AgentEvents { 'muc:topic': MUCTopicEvent; 'muc:invite': MUCInviteEvent; 'muc:other': ReceivedMessage; 'muc:declined': MUCDeclinedEvent; 'muc:failed': Presence; 'muc:error': Presence; 'muc:available': ReceivedMUCPresence; 'muc:unavailable': ReceivedMUCPresence; 'muc:destroyed': MUCDestroyedEvent; 'muc:leave': ReceivedMUCPresence; 'muc:join': ReceivedMUCPresence; } } export interface MUCTopicEvent { topic?: string; room: string; from: string; } export interface MUCInviteEvent { from: string; password?: string; reason?: string; room: string; thread?: string; type: 'direct' | 'mediated'; } export interface MUCDeclinedEvent { from: string; reason?: string; room: string; } export interface MUCDestroyedEvent { newRoom?: string; password?: string; reason?: string; room: string; } export default function (client: Agent): void;