import { EventEmitter } from 'events';
import { CallLinkType, IWhatsAppEngine, EngineStatus, EngineEventCallbacks, MessageResult, MediaInput, IncomingMessage, Contact, Group, GroupInfo, GroupMemberAddMode, GroupMembershipRequest, ParticipantOperationResult, LocationInput, PollInput, ContactCard, MessageReaction, Label, Channel, ChannelMessage, Status, StatusPostOptions, StatusResult, Catalog, Product, ProductQueryOptions, PaginatedProducts, ChatSummary, ChatState, LabelInput, CustomLinkPreview, GroupJoinInfo } from '../interfaces/whatsapp-engine.interface';
import { resolveAuthTimeoutMs } from '../engine-init-timeout';
import { LidMappingStore } from '../identity/lid-mapping-store.service';
export interface WhatsAppWebJsConfig {
    sessionId: string;
    sessionDataPath: string;
    puppeteer?: {
        headless?: boolean;
        args?: string[];
        executablePath?: string;
    };
    proxy?: {
        url: string;
        type: 'http' | 'https' | 'socks4' | 'socks5';
    };
    lidMappingStore?: LidMappingStore;
}
export { resolveAuthTimeoutMs };
export { extractLinkedParentJID } from './wwebjs-groups';
export { isHttpUrl, loadRemoteMedia, extractWwebjsCall, wwebjsAckToDeliveryStatus } from './wwebjs-messaging';
export { isSupportedProxyUrl, buildProxyLaunchConfig } from './wwebjs-proxy';
export { probeOnboardingModal, collectDialogDiagnostics } from './wwebjs-onboarding';
export { isExecutionContextDestroyedError, NAVIGATION_REINJECT_GRACE_MS, NAVIGATION_EPISODE_CAP_MS, } from './wwebjs-lifecycle';
export { READY_RECONCILE_TIMEOUT_MS, READY_RECONCILE_BRIDGE_RELOAD_GRACE_MS } from './wwebjs-reconcile';
export declare class WhatsAppWebJsAdapter extends EventEmitter implements IWhatsAppEngine {
    private readonly config;
    private readonly logger;
    private readonly inboundLimiter;
    private callbacks;
    private readonly host;
    private readonly groups;
    private readonly messaging;
    private readonly contacts;
    private readonly profile;
    private readonly labels;
    private readonly channels;
    private readonly statuses;
    private readonly chats;
    private readonly catalog;
    private readonly lifecycle;
    private readonly reconcile;
    private readonly stuckAuth;
    private readonly calls;
    private readonly onboardingWatcher;
    private get client();
    private set client(value);
    private get status();
    private set status(value);
    private get qrCode();
    private get tearingDown();
    private set tearingDown(value);
    private get logoutInitiated();
    private set logoutInitiated(value);
    private get disconnectReported();
    private set disconnectReported(value);
    private get liveCalls();
    constructor(config: WhatsAppWebJsConfig);
    private capInboundMediaFor;
    initialize(callbacks: EngineEventCallbacks): Promise<void>;
    private setupEventHandlers;
    private attachPuppeteerLifecycleListeners;
    private isPageTransportError;
    private reportIfPageTransportError;
    disconnect(): Promise<void>;
    logout(): Promise<void>;
    destroy(): Promise<void>;
    forceDestroy(): Promise<void>;
    getStatus(): EngineStatus;
    probeLiveness(): Promise<boolean>;
    getQRCode(): string | null;
    requestPairingCode(phoneNumber: string): Promise<string>;
    getPhoneNumber(): string | null;
    getPushName(): string | null;
    private recoverFromStuckAuth;
    private clearLocalAuth;
    private reportActionRequired;
    private attachDomainEvents;
    createChannel(name: string, description?: string): Promise<Channel>;
    deleteChannel(channelId: string): Promise<void>;
    muteChannel(channelId: string, mute: boolean): Promise<void>;
    demoteChannelAdmin(channelId: string, userId: string): Promise<void>;
    transferChannelOwnership(channelId: string, newOwnerId: string): Promise<void>;
    getChatsByLabel(labelId: string): Promise<ChatSummary[]>;
    upsertLabel(_label: LabelInput): Promise<void>;
    deleteLabel(_labelId: string): Promise<void>;
    subscribeToPresence(_chatId: string): Promise<void>;
    createCallLink(type: CallLinkType, startTime: number): Promise<string>;
    rejectCall(callId: string): Promise<void>;
    sendTextMessage(chatId: string, text: string, mentions?: string[], options?: {
        linkPreview?: boolean;
        customPreview?: CustomLinkPreview;
    }): 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>;
    getContacts(): Promise<Contact[]>;
    getContactById(contactId: string): Promise<Contact | null>;
    getNumberId(number: string): Promise<string | null>;
    checkNumberExists(number: string): Promise<boolean>;
    resolveContactPhone(contactId: string): Promise<string | null>;
    getGroups(): Promise<Group[]>;
    sendLocationMessage(chatId: string, location: LocationInput): Promise<MessageResult>;
    sendContactMessage(chatId: string, contact: ContactCard): Promise<MessageResult>;
    sendStickerMessage(chatId: string, media: MediaInput): Promise<MessageResult>;
    sendPollMessage(chatId: string, poll: PollInput): Promise<MessageResult>;
    replyToMessage(chatId: string, quotedMsgId: string, text: string, mentions?: 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<ParticipantOperationResult[]>;
    removeParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    promoteParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    demoteParticipants(groupId: string, participants: string[]): Promise<ParticipantOperationResult[]>;
    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[]>;
    getChatHistory(chatId: string, limit?: number, includeMedia?: boolean, mediaMaxBytes?: number, signal?: AbortSignal): Promise<IncomingMessage[]>;
    starMessage(chatId: string, messageId: string, star: boolean): Promise<void>;
    pinMessage(chatId: string, messageId: string, durationSeconds: number): Promise<void>;
    votePoll(chatId: string, pollMessageId: string, options: string[]): Promise<void>;
    unpinMessage(chatId: string, messageId: string): Promise<void>;
    deleteMessage(chatId: string, messageId: string, forEveryone?: boolean): Promise<void>;
    editMessage(chatId: string, messageId: string, body: string, mentions?: string[]): Promise<MessageResult>;
    getProfilePicture(contactId: string): Promise<string | null>;
    blockContact(contactId: string): Promise<void>;
    upsertContact(contactId: string, firstName: string, lastName?: string): Promise<void>;
    deleteContact(contactId: string): Promise<void>;
    unblockContact(contactId: string): Promise<void>;
    getBlockedContacts(): Promise<string[]>;
    setProfileName(name: string): Promise<void>;
    setProfileStatus(status: string): Promise<void>;
    deleteProfilePicture(): Promise<void>;
    setProfilePicture(media: MediaInput): Promise<void>;
    getGroupInviteCode(groupId: string): Promise<string>;
    revokeGroupInviteCode(groupId: string): Promise<string>;
    getGroupJoinInfo(inviteCode: string): Promise<GroupJoinInfo>;
    joinGroupViaInviteCode(inviteCode: string): Promise<string>;
    setGroupMessagesAdminsOnly(groupId: string, adminsOnly: boolean): Promise<void>;
    setGroupInfoAdminsOnly(groupId: string, adminsOnly: boolean): Promise<void>;
    setGroupMemberAddMode(groupId: string, mode: GroupMemberAddMode): Promise<void>;
    setGroupPicture(groupId: string, media: MediaInput): Promise<void>;
    deleteGroupPicture(groupId: string): Promise<void>;
    setGroupEphemeral(groupId: string, durationSec: number): Promise<void>;
    getGroupMembershipRequests(groupId: string): Promise<GroupMembershipRequest[]>;
    approveGroupMembershipRequests(groupId: string, participants?: string[]): Promise<ParticipantOperationResult[]>;
    rejectGroupMembershipRequests(groupId: string, participants?: string[]): Promise<ParticipantOperationResult[]>;
    getContactStatuses(): Promise<Status[]>;
    getContactStatus(contactId: string): Promise<Status[]>;
    postTextStatus(text: string, options: StatusPostOptions): Promise<StatusResult>;
    postImageStatus(media: MediaInput, options: StatusPostOptions): Promise<StatusResult>;
    postVideoStatus(media: MediaInput, options: StatusPostOptions): Promise<StatusResult>;
    postVoiceStatus(media: MediaInput, options: StatusPostOptions): 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>;
    getChats(): Promise<ChatSummary[]>;
    sendSeen(chatId: string): Promise<boolean>;
    muteChat(chatId: string, muteUntil: number | null): Promise<void>;
    pinChat(chatId: string, pin: boolean): Promise<boolean>;
    archiveChat(chatId: string, archive: boolean): Promise<boolean>;
    clearChatMessages(chatId: string): Promise<boolean>;
    markUnread(chatId: string): Promise<boolean>;
    deleteChat(chatId: string): Promise<boolean>;
    sendChatState(chatId: string, state: ChatState): Promise<void>;
    setOnlinePresence(available: boolean): Promise<void>;
    private ensureReady;
    private ensureNotChannelRecipient;
}
