import { EventEmitter } from 'events';
import { IWhatsAppEngine, EngineStatus, EngineEventCallbacks, MessageResult, MediaInput, Contact, Group, GroupInfo, LocationInput, ContactCard, MessageReaction, Label, Channel, ChannelMessage, Status, TextStatusOptions, StatusResult, Catalog, Product, ProductQueryOptions, PaginatedProducts } from '../interfaces/whatsapp-engine.interface';
export interface WhatsAppWebJsConfig {
    sessionId: string;
    sessionDataPath: string;
    puppeteer?: {
        headless?: boolean;
        args?: string[];
    };
    proxy?: {
        url: string;
        type: 'http' | 'https' | 'socks4' | 'socks5';
    };
}
export declare class WhatsAppWebJsAdapter extends EventEmitter implements IWhatsAppEngine {
    private readonly config;
    private client;
    private status;
    private qrCode;
    private phoneNumber;
    private pushName;
    private callbacks;
    constructor(config: WhatsAppWebJsConfig);
    private readonly logger;
    initialize(callbacks: EngineEventCallbacks): Promise<void>;
    private setupEventHandlers;
    private setStatus;
    disconnect(): Promise<void>;
    logout(): Promise<void>;
    destroy(): Promise<void>;
    getStatus(): EngineStatus;
    getQRCode(): string | null;
    getPhoneNumber(): string | null;
    getPushName(): string | null;
    sendTextMessage(chatId: string, text: string): Promise<MessageResult>;
    sendImageMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    sendVideoMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    sendAudioMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    sendDocumentMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    private sendMediaMessage;
    getContacts(): Promise<Contact[]>;
    getContactById(contactId: string): Promise<Contact | null>;
    checkNumberExists(number: string): Promise<boolean>;
    getGroups(): Promise<Group[]>;
    sendLocationMessage(chatId: string, location: LocationInput): Promise<MessageResult>;
    sendContactMessage(chatId: string, contact: ContactCard): Promise<MessageResult>;
    sendStickerMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    replyToMessage(chatId: string, quotedMsgId: string, text: string): Promise<MessageResult>;
    forwardMessage(fromChatId: string, toChatId: string, messageId: string): Promise<MessageResult>;
    getGroupInfo(groupId: string): Promise<GroupInfo | null>;
    createGroup(name: string, participants: string[]): Promise<Group>;
    addParticipants(groupId: string, participants: string[]): Promise<void>;
    removeParticipants(groupId: string, participants: string[]): Promise<void>;
    promoteParticipants(groupId: string, participants: string[]): Promise<void>;
    demoteParticipants(groupId: string, participants: string[]): Promise<void>;
    leaveGroup(groupId: string): Promise<void>;
    setGroupSubject(groupId: string, subject: string): Promise<void>;
    setGroupDescription(groupId: string, description: string): Promise<void>;
    reactToMessage(chatId: string, messageId: string, emoji: string): Promise<void>;
    getMessageReactions(chatId: string, messageId: string): Promise<MessageReaction[]>;
    getLabels(): Promise<Label[]>;
    getLabelById(labelId: string): Promise<Label | null>;
    getChatLabels(chatId: string): Promise<Label[]>;
    addLabelToChat(chatId: string, labelId: string): Promise<void>;
    removeLabelFromChat(chatId: string, labelId: string): Promise<void>;
    getSubscribedChannels(): Promise<Channel[]>;
    getChannelById(channelId: string): Promise<Channel | null>;
    subscribeToChannel(inviteCode: string): Promise<Channel>;
    unsubscribeFromChannel(channelId: string): Promise<void>;
    getChannelMessages(channelId: string, limit?: number): Promise<ChannelMessage[]>;
    deleteMessage(chatId: string, messageId: string, forEveryone?: boolean): Promise<void>;
    getProfilePicture(contactId: string): Promise<string | null>;
    blockContact(contactId: string): Promise<void>;
    unblockContact(contactId: string): Promise<void>;
    getGroupInviteCode(groupId: string): Promise<string>;
    revokeGroupInviteCode(groupId: string): Promise<string>;
    getContactStatuses(): Promise<Status[]>;
    getContactStatus(_contactId: string): Promise<Status[]>;
    postTextStatus(_text: string, _options?: TextStatusOptions): Promise<StatusResult>;
    postImageStatus(_media: MediaInput, _caption?: string): Promise<StatusResult>;
    postVideoStatus(_media: MediaInput, _caption?: string): Promise<StatusResult>;
    deleteStatus(_statusId: string): Promise<void>;
    getCatalog(): Promise<Catalog | null>;
    getProducts(_options?: ProductQueryOptions): Promise<PaginatedProducts>;
    getProduct(_productId: string): Promise<Product | null>;
    sendProduct(_chatId: string, _productId: string, _body?: string): Promise<MessageResult>;
    sendCatalog(_chatId: string, _body?: string): Promise<MessageResult>;
    private ensureReady;
}
