import { Messenger } from "./messenger.js";
import type { Message, MessageFilter, MessengerConfig, DecryptedMessage, SendMessageResult, ContactLists, ContactListsSyncResult, MessageListResult, ConversationInfo, WtsFileResult, ListOperationResponse, WtsRange, GetSettingsResponse, UpdateSettingsRequest } from "./types.js";
interface AccountInfo {
    address: string;
    messenger: Messenger;
    initialized: boolean;
    initializing?: Promise<void>;
    contactLists: ContactLists;
}
export interface MessengerManagerOptions {
    messengerConfig?: Partial<MessengerConfig>;
    enablePersistence?: boolean;
    instanceId?: string;
}
export declare class MessengerManager {
    private accounts;
    private config;
    private messageListeners;
    private isWatching;
    private persistStorage;
    private instanceId;
    private accountRefreshTimer;
    private pollingLockedAccounts;
    constructor(options?: MessengerManagerOptions);
    private findAccount;
    getConfig(): MessengerConfig;
    get_accounts(): string[];
    refresh_accounts(): Promise<void>;
    start(): Promise<void>;
    stop(): void;
    ensureAccountReady(address: string): Promise<AccountInfo>;
    private initializeAccount;
    private doInitialize;
    private add_account_internal;
    private remove_account_internal;
    clear_accounts(): void;
    send(from: string, to: string, content: string, options?: {
        guardAddress?: string;
        passportAddress?: string;
        force?: boolean;
        new_messenger_name?: string;
    }): Promise<SendMessageResult>;
    send_file(from: string, to: string, filePath: string, options?: {
        fileName?: string;
        contentType?: "wts" | "wip" | "zip";
        guardAddress?: string;
        passportAddress?: string;
        force?: boolean;
        new_messenger_name?: string;
    }): Promise<SendMessageResult>;
    watch(filter?: MessageFilter): Promise<Message[]>;
    private startPolling;
    private stopPolling;
    onMessage(listener: (messages: DecryptedMessage[]) => void): void;
    offMessage(listener: (messages: DecryptedMessage[]) => void): void;
    destroy(): void;
    syncContactLists(account: string): Promise<ContactListsSyncResult>;
    syncAllContactLists(): Promise<Map<string, ContactListsSyncResult>>;
    getContactLists(account: string): ContactLists | undefined;
    setContactLists(account: string, lists: Partial<ContactLists>): boolean;
    isStranger(account: string, senderAddress: string): boolean;
    recordGuardSender(account: string, guardAddress: string): boolean;
    private generateNonce;
    watch_paginated(filter?: MessageFilter & {
        account?: string;
    }): Promise<MessageListResult>;
    get_conversations(account?: string): Promise<ConversationInfo[]>;
    generate_wts(outputDir: string, myAccount: string, peerAccount: string, range?: WtsRange, excludePlaintext?: boolean): Promise<WtsFileResult>;
    addToBlacklist(account: string, addresses: string[]): Promise<ListOperationResponse>;
    removeFromBlacklist(account: string, addresses: string[]): Promise<ListOperationResponse>;
    clearBlacklist(account: string): Promise<ListOperationResponse>;
    getBlacklist(account: string): Promise<string[]>;
    existInBlacklist(account: string, addresses: string[]): Promise<ListOperationResponse>;
    addToFriendsList(account: string, addresses: string[]): Promise<ListOperationResponse>;
    removeFromFriendsList(account: string, addresses: string[]): Promise<ListOperationResponse>;
    clearFriendsList(account: string): Promise<ListOperationResponse>;
    getFriendsList(account: string): Promise<string[]>;
    existInFriendsList(account: string, addresses: string[]): Promise<ListOperationResponse>;
    addToGuardList(account: string, guards: any[]): Promise<any>;
    removeFromGuardList(account: string, addresses: string[]): Promise<any>;
    getGuardList(account: string): Promise<any>;
    getSettings(account: string): Promise<GetSettingsResponse>;
    setSettings(account: string, settings: Partial<UpdateSettingsRequest>): Promise<boolean>;
}
export {};
