import { InboxAction, InboxMessage } from '../../@trycourier/courier-js/src';
import { InboxDataSet } from '../types/inbox-data-set';
import { CourierInboxFeedType } from '../types/feed-type';
import { CourierInboxStateErrorFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxListItemFactoryProps, CourierInboxPaginationItemFactoryProps } from '../types/factories';
import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
export declare class CourierInboxList extends HTMLElement {
    private _themeSubscription;
    private _messages;
    private _feedType;
    private _isLoading;
    private _error;
    private _canPaginate;
    private _onMessageClick;
    private _onMessageActionClick;
    private _onMessageLongPress;
    private _onRefresh;
    private _onPaginationTrigger?;
    private _listItemFactory?;
    private _paginationItemFactory?;
    private _loadingStateFactory?;
    private _emptyStateFactory?;
    private _errorStateFactory?;
    get messages(): InboxMessage[];
    constructor(props: {
        themeManager: CourierInboxThemeManager;
        onRefresh: () => void;
        onPaginationTrigger: (feedType: CourierInboxFeedType) => void;
        onMessageClick: (message: InboxMessage, index: number) => void;
        onMessageActionClick: (message: InboxMessage, action: InboxAction, index: number) => void;
        onMessageLongPress: (message: InboxMessage, index: number) => void;
    });
    private getStyles;
    private reset;
    setDataSet(dataSet: InboxDataSet): void;
    addPage(dataSet: InboxDataSet): void;
    addMessage(message: InboxMessage, index?: number): void;
    removeMessage(index?: number): void;
    updateMessage(message: InboxMessage, index?: number): void;
    setFeedType(feedType: CourierInboxFeedType): void;
    setLoading(isLoading: boolean): void;
    setError(error: Error | null): void;
    setErrorNoClient(): void;
    private handleRetry;
    private handleRefresh;
    private render;
    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;
    refreshTheme(): void;
    disconnectedCallback(): void;
}
