///
import events from "events";
import * as api from "./interfaces/api/api";
import { Contact as _Contact } from "./interfaces/api/contact";
import { Context as ApiContext } from "./interfaces/api/context";
import { Conversation } from "./interfaces/api/conversation";
import * as apiEvents from "./interfaces/api/events";
import { HttpIo } from "./interfaces/http-io";
import { AllUsers } from "./interfaces/native-api/conversation";
import { MessagesPoller } from "./polling/messages-poller";
import { Contact } from "./types/contact";
import { Invite } from "./types/invite";
export interface ApiEvents extends NodeJS.EventEmitter {
}
export declare class Api extends events.EventEmitter implements ApiEvents {
io: HttpIo;
context: ApiContext;
messagesPoller: MessagesPoller;
private readonly contactsService;
constructor(context: ApiContext, io: HttpIo);
acceptContactRequest(contactUsername: string): Promise;
declineContactRequest(contactUsername: string): Promise;
getContactInvites(): Promise;
getContact(contactId: string): Promise<_Contact>;
getContacts(): Promise;
getConversation(conversationId: string): Promise;
getConversations(): Promise;
sendMessage(message: api.NewMessage, conversationId: string): Promise;
setConversationTopic(conversationId: string, topic: string): Promise;
getJoinUrl(conversationId: string): Promise;
addMemberToConversation(conversationId: string, memberId: string): Promise;
createConversation(allUsers: AllUsers): Promise;
sendImage(message: api.NewImage, conversationId: string): Promise;
getState(): ApiContext.Json;
setStatus(status: api.Status): Promise;
/**
* Start polling and emitting events
*/
listen(): Promise;
/**
* Stop polling and emitting events
*/
stopListening(): Promise;
protected handlePollingEvent(ev: apiEvents.EventMessage): void;
}