import { InboxMessage } from '../../@trycourier/courier-js/src';
import { InboxDataSet } from '../types/inbox-data-set';
import { CourierInboxDataStoreListener } from './datastore-listener';
import { CourierInboxFeedType } from '../types/feed-type';
export declare class CourierInboxDatastore {
    private static instance;
    private _inboxDataSet?;
    private _archiveDataSet?;
    private _dataStoreListeners;
    private _unreadCount?;
    private isPaginatingInbox;
    private isPaginatingArchive;
    static get shared(): CourierInboxDatastore;
    get unreadCount(): number;
    get inboxDataSet(): InboxDataSet;
    get archiveDataSet(): InboxDataSet;
    addDataStoreListener(listener: CourierInboxDataStoreListener): void;
    removeDataStoreListener(listener: CourierInboxDataStoreListener): void;
    private fetchDataSet;
    private fetchUnreadCount;
    load(props?: {
        feedType: CourierInboxFeedType;
        canUseCache: boolean;
    }): Promise<void>;
    private connectSocket;
    private getMessage;
    fetchNextPageOfMessages(props: {
        feedType: CourierInboxFeedType;
    }): Promise<InboxDataSet | null>;
    private applyLocalMessageChange;
    readMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
    unreadMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
    openMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
    clickMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
    archiveMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
    readAllMessages(canCallApi?: boolean): Promise<void>;
    private findInsertIndex;
    private addPage;
    private addMessage;
    private removeMessage;
    private updateMessage;
}
