///
import type { PromiseMessageConfig } from "../../types/client";
import type { ConnectionConfig } from "../../types/connection";
import type { ChatStatus } from "../../types/chat/ChatStatus";
import type { BotStatus } from "../../types/bot/BotStatus";
import ICommandController from "../command/ICommandController";
import IMediaMessage from "../message/IMediaMessage";
import IMessage from "../message/IMessage";
import IAuth from "../bot/IAuth";
import ICommand from "../command/ICommand";
import IChat from "../chat/IChat";
import IUser from "../user/IUser";
import IBot from "../bot/IBot";
import IPromiseMessages from "./IPromiseMessage";
import IClientEvents from "./IClientEvents";
export default interface IClient extends IClientEvents {
/** Bot */
bot: IBot;
/** Configuração */
config: ConnectionConfig;
/** * Vezes que o bot reconectou */
reconnectTimes: number;
/** Espera de mensagens */
promiseMessages: IPromiseMessages;
/** Controlador de comandos */
commandController: ICommandController;
get id(): string;
set id(id: string);
get status(): BotStatus;
set status(status: BotStatus);
/** Configura os eventos do cliente */
configEvents(): void;
/** @returns Controlador de comando do cliente */
getCommandController(): ICommandController;
/** Define o controlador de comando do cliente */
setCommandController(controller: ICommandController): void;
/** Define os comandos do bot
* @param commands Comandos que será injetado
*/
setCommands(commands: ICommand[]): void;
/** @returns Retorna os comandos do bot */
getCommands(): ICommand[];
/** Adiciona um comando na lista de comandos
* @param command Comando que será adicionado
*/
addCommand(command: ICommand): void;
/** Remove um comando na lista de comandos
* @param command Comando que será removido
*/
removeCommand(command: ICommand): boolean;
/** Procura um comando no texto */
searchCommand(text: string): ICommand | null;
/** Execução do comando */
runCommand(command: ICommand, message: IMessage, type?: string): any;
/** Conectar bot
* @param auth Autenticação do bot
*/
connect(auth: IAuth | string): Promise;
/**
* * Conectar bot pelo código
* @param phoneNumber Número do bot
* @param auth Autenticação do bot
*/
connectByCode(phoneNumber: number | string, auth: IAuth | string): Promise;
/** Reconectar bot
* @param alert Alerta que está reconectando
*/
reconnect(alert?: boolean): Promise;
/** Parar bot
* @param reason Razão por parar bot
*/
stop(reason?: any): Promise;
/** Adiciona uma reação na mensagem
* @param message Mensagem
* @param reaction Reação
*/
addReaction(message: IMessage, reaction?: string): Promise;
/** Remove a reação da mensagem
* @param message Mensagem que terá sua reação removida
*/
removeReaction(message: IMessage): Promise;
/** Adiciona animações na reação da mensagem
* @param message Mensagem que receberá a animação
* @param reactions Reações em sequência
* @param interval Intervalo entre cada reação
* @param maxTimeout Maximo de tempo reagindo
*/
addAnimatedReaction(message: IMessage, reactions: string[], interval?: number, maxTimeout?: number): (reactionStop?: string) => Promise;
/** Marca uma mensagem como visualizada
* @param message Mensagem que será visualizada
*/
readMessage(message: IMessage): Promise;
/** Edita o texto de uma mensagem enviada
* @param message Mensagem que será editada
* @param text Novo texto da mensagem
*/
editMessage(message: IMessage, text: string): Promise;
/** Envia uma mensagem
* @param message Menssagem que será enviada
* @returns Retorna o conteudo enviado
*/
send(message: IMessage): Promise;
/** Envia uma mensagem
* @param chat Sala de bate-papo onde irá ser enviado a mensagem
* @param message Mensagem que será enviada
* @param mention Mensagem que será mencionada
*/
sendMessage(chat: IChat | string, message: string | IMessage, mention?: IMessage): Promise;
/** Aguarda uma mensagem ser recebida em uma sala de bate-papo
* @param chatId Sala de bate-papo que irá receber a mensagem
* @param config Configuração do aguardo da mensagem
*/
awaitMessage(chat: IChat | string, config: Partial): Promise;
/** Remover mensagem
* @param message Mensagem que será removida da sala de bate-papo
*/
removeMessage(message: IMessage): Promise;
/**
* * Deletar mensagem
* @param message Mensagem que será deletada da sala de bate-papos
*/
deleteMessage(message: IMessage): Promise;
/** Retorna a stream da mídia
* @param message Mídia que será baixada
* @returns Stream da mídia
*/
downloadStreamMessage(message: IMediaMessage): Promise;
/** @returns Retorna o nome do bot */
getBotName(): Promise;
/** Define o nome do bot
* @param name Nome do bot
*/
setBotName(name: string): Promise;
/** @returns Retorna a descrição do bot */
getBotDescription(): Promise;
/** Define a descrição do bot
* @param description Descrição do bot
*/
setBotDescription(description: string): Promise;
/** @returns Retorna foto de perfil do bot */
getBotProfile(): Promise;
/** Define a imagem de perfil do bot
* @param image Imagem de perfil do bot
*/
setBotProfile(image: Buffer): Promise;
/** Adiciona uma sala de bate-papo
* @param chat Sala de bate-papo
*/
addChat(chat: IChat | string): Promise;
/** Remove uma sala de bate-papo
* @param chat Sala de bate-papo
*/
removeChat(chat: IChat | string): Promise;
/** Adiciona um novo usuário a uma sala de bate-papo
* @param chat Sala de bate-papo
* @param user Usuário
*/
addUserInChat(chat: IChat | string, user: IUser | string): Promise;
/** Adiciona um novo usuário a uma sala de bate-papo
* @param chat Sala de bate-papo
* @param user Usuário
*/
removeUserInChat(chat: IChat | string, user: IUser | string): Promise;
/** Promove há administrador um usuário da sala de bate-papo
* @param chat Sala de bate-papo
* @param user Usuário
*/
promoteUserInChat(chat: IChat | string, user: IUser | string): Promise;
/** Remove a administração um usuário da sala de bate-papo
* @param chat Sala de bate-papo
* @param user Usuário
*/
demoteUserInChat(chat: IChat | string, user: IUser | string): Promise;
/** Altera o status da sala de bate-papo
* @param chat Sala de bate-papo
* @param status Status da sala de bate-papo
*/
changeChatStatus(chat: IChat | string, status: ChatStatus): Promise;
/** Cria uma sala de bate-papo
* @param chat Sala de bate-papo
*/
createChat(chat: IChat): Promise;
/** Sai de uma sala de bate-papo
* @param chat Sala de bate-papo
*/
leaveChat(chat: IChat | string): Promise;
/**
* @param chat Sala de bate-papo
* @returns Retorna uma sala de bate-papo
*/
getChat(chat: IChat | string): Promise;
/** Define uma sala de bate-papo
* @param chat Sala de bate-papo
*/
setChat(chat: IChat): Promise;
/**
* @param chat Sala de bate-papo
* @returns Retorna o nome da sala de bate-papo
*/
getChatName(chat: IChat | string): Promise;
/** Define o nome da sala de bate-papo
* @param chat Sala de bate-papo
* @param name Nome da sala de bate-papo
*/
setChatName(chat: IChat | string, name: string): Promise;
/**
* @param chat Sala de bate-papo
* @returns Retorna a descrição da sala de bate-papo
*/
getChatDescription(chat: IChat | string): Promise;
/** Define a descrição da sala de bate-papo
* @param chat Sala de bate-papo
* @param description Descrição da sala de bate-papo
*/
setChatDescription(chat: IChat | string, description: string): Promise;
/**
* @param chat Sala de bate-papo
* @returns Retorna a imagem de perfil da sala de bate-papo
*/
getChatProfile(chat: IChat | string): Promise;
/** Define a imagem de perfil da sala de bate-papo
* @param chat Sala de bate-papo
* @param profile Imagem de perfil da sala de bate-papo
*/
setChatProfile(chat: IChat | string, profile: Buffer): Promise;
/**
* @param chat Sala de bate-papo
* @returns Retorna os usuários de uma sala de bate-papo
*/
getChatUsers(chat: IChat | string): Promise>;
/**
* @param chat Sala de bate-papo
* @returns Retorna os administradores de uma sala de bate-papo
*/
getChatAdmins(chat: IChat | string): Promise>;
/**
* @param chat Sala de bate-papo
* @returns Retorna o lider da sala de bate-papo
*/
getChatLeader(chat: IChat | string): Promise;
/** @returns Retorna as sala de bate-papo que o bot está */
getChats(): Promise>;
/** Define as salas de bate-papo que o bot está
* @param chats Salas de bate-papo
*/
setChats(chats: Record): Promise;
/** Adiciona um novo usuário
* @param user Usuário
*/
addUser(user: IUser | string): Promise;
/** Remove um usuário
* @param user Usuário
*/
removeUser(user: IUser | string): Promise;
/**
* @param user Usuário
* @returns Retorna um usuário
*/
getUser(user: IUser | string): Promise;
/** Define um usuário
* @param user Usuário
*/
setUser(user: IUser | string): Promise;
/**
* @param user Usuário
* @returns Retorna o nome do usuário
*/
getUserName(user: IUser | string): Promise;
/** Define o nome do usuário
* @param user Usuário
* @param name Nome do usuário
*/
setUserName(user: IUser | string, name: string): Promise;
/**
* @param user Usuário
* @returns Retorna a descrição do usuário
*/
getUserDescription(user: IUser | string): Promise;
/** Define a descrição do usuário
* @param user Usuário
* @param description Descrição do usuário
*/
setUserDescription(user: IUser | string, description: string): Promise;
/**
* @param user Usuário
* @returns Retorna a foto de perfil do usuário
*/
getUserProfile(user: IUser | string): Promise;
/** Define a imagem de perfil do usuário
* @param user Usuário
* @param profile Imagem de perfil do usuário
*/
setUserProfile(user: IUser | string, profile: Buffer): Promise;
/** Desbloqueia um usuário
* @param user Usuário
*/
unblockUser(user: IUser | string): Promise;
/** Bloqueia um usuário
* @param user Usuário
*/
blockUser(user: IUser | string): Promise;
/** @returns Retorna a lista de usuários do bot */
getUsers(): Promise>;
/** Define a lista de usuários do bot
* @param users Usuários
*/
setUsers(users: Record): Promise;
}