import { InboxAction, InboxMessage } from '@trycourier/courier-js';
import { CourierBaseElement } from '@trycourier/courier-ui-core';
import { InboxDataSet } from '../types/inbox-data-set';
import { CourierInboxStateErrorFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxListItemFactoryProps, CourierInboxPaginationItemFactoryProps } from '../types/factories';
import { CourierInboxTheme } from '../types/courier-inbox-theme';
import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
import { CourierInboxListItemAction } from '../types/inbox-defaults';
export declare class CourierInboxList extends CourierBaseElement {
    static get id(): string;
    private _themeSubscription;
    private _messages;
    private _datasetId;
    private _isLoading;
    private _error;
    private _canPaginate;
    private _canClickListItems;
    private _canLongPressListItems;
    private _listItemActions;
    private _onMessageClick;
    private _onMessageActionClick;
    private _onMessageLongPress;
    private _onRefresh;
    private _onPaginationTrigger?;
    private _listItemFactory?;
    private _paginationItemFactory?;
    private _loadingStateFactory?;
    private _emptyStateFactory?;
    private _errorStateFactory?;
    get messages(): InboxMessage[];
    private get theme();
    private _listStyles?;
    private _listItemStyles?;
    private _listItemMenuStyles?;
    private _errorContainer?;
    private _emptyContainer?;
    constructor(props: {
        themeManager: CourierInboxThemeManager;
        listItemActions?: CourierInboxListItemAction[];
        canClickListItems: boolean;
        canLongPressListItems: boolean;
        onRefresh: () => void;
        onPaginationTrigger: (datasetId: string) => void;
        onMessageClick: (message: InboxMessage, index: number) => void;
        onMessageActionClick: (message: InboxMessage, action: InboxAction, index: number) => void;
        onMessageLongPress: (message: InboxMessage, index: number) => void;
    });
    onComponentMounted(): void;
    onComponentUnmounted(): void;
    setCanClickListItems(canClick: boolean): void;
    setCanLongPressListItems(canLongPress: boolean): void;
    setListItemActions(actions: CourierInboxListItemAction[]): void;
    static getStyles(theme: CourierInboxTheme): string;
    setDataSet(dataSet: InboxDataSet): void;
    addPage(dataSet: InboxDataSet): void;
    addMessage(message: InboxMessage, index?: number): void;
    removeMessage(index?: number): void;
    updateMessage(message: InboxMessage, index?: number): void;
    selectDataset(datasetId: string): void;
    setLoading(isLoading: boolean): void;
    setError(error: Error | null): void;
    setErrorNoClient(): void;
    private handleRetry;
    private handleRefresh;
    private refreshTheme;
    refreshInfoStateThemes(): void;
    get errorProps(): any;
    get emptyProps(): any;
    private render;
    private openVisibleMessage;
    setLoadingStateFactory(factory: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => HTMLElement): void;
    setEmptyStateFactory(factory: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => HTMLElement): void;
    setErrorStateFactory(factory: (props: CourierInboxStateErrorFactoryProps | undefined | null) => HTMLElement): void;
    setListItemFactory(factory: (props: CourierInboxListItemFactoryProps | undefined | null) => HTMLElement): void;
    setPaginationItemFactory(factory: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => HTMLElement): void;
    scrollToTop(animate?: boolean): void;
}
