import { CourierBaseElement, CourierComponentThemeMode } from '@trycourier/courier-ui-core';
import { CourierInboxFeedType } from '../types/feed-type';
import { CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxPaginationItemFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps } from '../types/factories';
import { CourierInboxTheme } from '../types/courier-inbox-theme';
import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
export declare class CourierInbox extends CourierBaseElement {
    static get id(): string;
    private _currentFeed;
    /** Returns the current feed type. */
    get currentFeed(): CourierInboxFeedType;
    private _themeManager;
    /** Returns the current theme object. */
    get theme(): CourierInboxTheme;
    /**
     * Set the light theme for the inbox.
     * @param theme The light theme object to set.
     */
    setLightTheme(theme: CourierInboxTheme): void;
    /**
     * Set the dark theme for the inbox.
     * @param theme The dark theme object to set.
     */
    setDarkTheme(theme: CourierInboxTheme): void;
    /**
     * Set the theme mode (light/dark/system).
     * @param mode The theme mode to set.
     */
    setMode(mode: CourierComponentThemeMode): void;
    private _inboxStyle?;
    private _unreadIndicatorStyle?;
    private _list?;
    private _datastoreListener;
    private _authListener;
    private _header?;
    private _headerFactory;
    private _onMessageClick?;
    private _onMessageActionClick?;
    private _onMessageLongPress?;
    private _defaultProps;
    static get observedAttributes(): string[];
    constructor(themeManager?: CourierInboxThemeManager);
    onComponentMounted(): void;
    onComponentUnmounted(): void;
    private refreshTheme;
    private getStyles;
    /**
     * Sets a custom header factory for the inbox.
     * @param factory - A function that returns an HTMLElement to render as the header.
     */
    setHeader(factory: (props: CourierInboxHeaderFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Removes the custom header factory from the inbox, reverting to the default header.
     */
    removeHeader(): void;
    /**
     * Sets a custom loading state factory for the inbox list.
     * @param factory - A function that returns an HTMLElement to render as the loading state.
     */
    setLoadingState(factory: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Sets a custom empty state factory for the inbox list.
     * @param factory - A function that returns an HTMLElement to render as the empty state.
     */
    setEmptyState(factory: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Sets a custom error state factory for the inbox list.
     * @param factory - A function that returns an HTMLElement to render as the error state.
     */
    setErrorState(factory: (props: CourierInboxStateErrorFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Sets a custom list item factory for the inbox list.
     * @param factory - A function that returns an HTMLElement to render as a list item.
     */
    setListItem(factory: (props: CourierInboxListItemFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Sets a custom pagination item factory for the inbox list.
     * @param factory - A function that returns an HTMLElement to render as a pagination item.
     */
    setPaginationItem(factory: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => HTMLElement): void;
    /**
     * Registers a handler for message click events.
     * @param handler - A function to be called when a message is clicked.
     */
    onMessageClick(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
    /**
     * Registers a handler for message action click events.
     * @param handler - A function to be called when a message action is clicked.
     */
    onMessageActionClick(handler?: (props: CourierInboxListItemActionFactoryProps) => void): void;
    /**
     * Registers a handler for message long press events.
     * @param handler - A function to be called when a message is long-pressed.
     */
    onMessageLongPress(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
    /**
     * Sets the feed type for the inbox (e.g., "inbox" or "archive").
     * @param feedType - The feed type to display.
     */
    setFeedType(feedType: CourierInboxFeedType): void;
    private updateHeader;
    private load;
    /**
     * Forces a reload of the inbox data, bypassing the cache.
     */
    refresh(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
}
