import { type IInboxMessage } from './InboxMessages.types';
import { type EventBus } from '../core/modules/EventBus';
import { type Api } from '../modules/Api/Api';
import { type Data } from '../modules/Data/Data';
import DateModule from '../modules/DateModule';
import Storage from '../modules/storage/Storage';
import { type TInboxMessagesStoreName } from '../modules/storage/Storage.types';
export default class InboxMessages {
    eventBus: EventBus;
    data: Data;
    api: Api;
    storage: Storage;
    storeName: TInboxMessagesStoreName;
    dateModule: DateModule;
    constructor(eventBus: EventBus, data: Data, api: Api, storage?: Storage, dateModule?: DateModule);
    /**
     * Get inbox messages by api
     */
    private getInboxMessages;
    /**
     * Store parameters for next getInboxMessages request
     * @param next
     * @param newMessagesCount
     */
    private storeGetInboxMessagesRequestParams;
    /**
     * Put loaded messages. Add delete status to loaded messages if this status set locally.
     * @param messages
     */
    private putServerMessages;
    /**
     * Create or update inbox message
     */
    putMessage(message: IInboxMessage): Promise<string>;
    /**
     * Create or update messages pack
     * @param messages
     */
    putBulkMessages(messages: Array<IInboxMessage>): Promise<Array<string>>;
    /**
     * Delete messages by codes
     * @param codes
     */
    deleteMessages(codes: Array<string>): Promise<Array<void>>;
    /**
     * Delete expired by removal time messages
     */
    deleteExpiredMessages(): Promise<Array<void>>;
    /**
     * Get message by code
     * @param code - inbox_id
     */
    getMessage(code: string): Promise<IInboxMessage>;
    /**
     * Get all read messages
     */
    getReadOpenMessages(): Promise<Array<IInboxMessage>>;
    /**
     * Get all unread messages
     */
    getDeliveredMessages(): Promise<Array<IInboxMessage>>;
    /**
     * All messages count
     */
    messagesCount(): Promise<number>;
    /**
     * Get count of messages with status "Delivered"
     */
    getDeliveredMessagesCount(): Promise<number>;
    /**
     * Get count of messages with status "Read"
     */
    getReadMessagesCount(): Promise<number>;
    /**
     * Get count of messages with status "Delivered" and "Read"
     */
    getDeliveredReadMessagesCount(): Promise<number>;
    /**
     * Load messages and sync with locally
     */
    updateMessages(): Promise<void>;
}
