import { type Api } from './Api/Api';
import { type Data } from './Data/Data';
import DateModule from './DateModule';
import { type default as InboxMessagesModel } from '../models/InboxMessages';
import { type IInboxMessage, type IInboxMessagePublic, type IInboxMessages } from '../models/InboxMessages.types';
export default class InboxMessages implements IInboxMessages {
    private readonly data;
    private readonly api;
    private readonly inboxModel;
    private dateModule;
    constructor(data: Data, api: Api, inboxModel: InboxMessagesModel, dateModule?: DateModule);
    /**
     * Get message type by IInboxMessageActionParams
     * @param actionParams
     */
    private messageTypeFactory;
    /**
     * Update messages status using codes from arguments
     * @param codes
     * @param messages
     * @param status
     */
    private updateMessagesStatusWithCodes;
    /**
     * Build TInboxMessagePublic by TInboxMessage
     * @param message
     */
    publicMessageBuilder({ action_type, action_params, image, title, send_date, inbox_id, text, status, }: IInboxMessage): Promise<IInboxMessagePublic>;
    /**
     * Count of messages with no action performed
     */
    messagesWithNoActionPerformedCount(): Promise<number>;
    /**
     * All unread messages
     */
    unreadMessagesCount(): Promise<number>;
    /**
     * All messages count
     */
    messagesCount(): Promise<number>;
    /**
     * Get all active messages
     */
    loadMessages(): Promise<Array<IInboxMessagePublic>>;
    /**
     * Mark messages as read
     * @param codes
     */
    readMessagesWithCodes(codes: Array<string>): Promise<void>;
    /**
     * Execute message action. Type "richmedia" and "plain" does not support
     * @param code
     */
    performActionForMessageWithCode(code: string): Promise<void>;
    /**
     * Delete messages by codes
     * @param codes
     */
    deleteMessagesWithCodes(codes: Array<string>): Promise<void>;
    /**
     * Sync inbox messages with server
     */
    syncMessages(): Promise<void>;
}
