import type { IconSize } from '../icon/icon.types';
import { ListItem } from './list-item.types';
import { Languages } from '../date-picker/date.types';
/**
 * This components displays the list item.
 * This centralizes styles and functionality, and helps reduce redundant code
 * in consumer components such as `limel-list` and `limel-menu-list`.
 *
 * :::note
 * The component has `shadow: false`. There are a few reasons for it:
 * 1. This is to improve performance, and ensure that its internal elements are
 * considered as internal parts of the consumer's DOM.
 * 2. The consumer does not need to implement the interactive styles
 * (such as `visualize-keyboard-focus` mixin) on their own. Since there is no
 * shadow DOM, our mixins can be applied directly to the `limel-list-item` elements,
 * within the component's own styles.
 * 3. Most importantly, the MDCList checks the light DOM of each list item
 * to find native inputs to decide the list mode (checkbox/radio).
 * With `shadow: true`, those inputs would be hidden inside the `limel-list-items`’s
 * shadow DOM, so MDC wouldn’t detect them and therefore throw errors, when given
 * an array index (for the items).
 * With `shadow: false`, the native `<input type="checkbox/radio">` from this template
 * would be visible to MDC.
 * :::
 * @exampleComponent limel-example-list-item-basic
 * @exampleComponent limel-example-list-item-icon
 * @exampleComponent limel-example-list-item-icon-size
 * @exampleComponent limel-example-list-item-pictures
 * @exampleComponent limel-example-list-item-multiple-lines
 * @exampleComponent limel-example-list-item-interactive
 * @exampleComponent limel-example-list-item-radio
 * @exampleComponent limel-example-list-item-checkbox
 * @exampleComponent limel-example-list-item-actions
 * @exampleComponent limel-example-list-item-primary-component
 * @exampleComponent limel-example-list-item-command-text
 * @private
 */
export declare class ListItemComponent implements ListItem {
    /**
     * Defines the language for translations.
     * Will translate the translatable strings on the components.
     */
    language: Languages;
    /**
     * {@inheritdoc ListItem.value}
     */
    value?: any;
    /**
     * {@inheritdoc ListItem.text}
     */
    text: string;
    /**
     * {@inheritdoc ListItem.secondaryText}
     */
    secondaryText?: string;
    /**
     * {@inheritdoc ListItem.disabled}
     */
    disabled: boolean;
    /**
     * {@inheritdoc ListItem.icon}
     */
    icon?: string | ListItem['icon'];
    /**
     * Size of the icon displayed for this item.
     */
    iconSize: IconSize;
    /**
     * Set to `true` if the list should display larger icons with a background
     */
    badgeIcon: boolean;
    /**
     * {@inheritdoc ListItem.selected}
     */
    selected: boolean;
    /**
     * {@inheritdoc ListItem.selected}
     */
    actions?: ListItem['actions'];
    /**
     * {@inheritdoc ListItem.selected}
     */
    primaryComponent?: ListItem['primaryComponent'];
    /**
     * {@inheritdoc ListItem.image}
     */
    image?: ListItem['image'];
    /**
     * The semantic role of the list item. This affects the ARIA role
     * and the interaction behavior.
     *
     * - 'option' → selectable via click/Enter/Space, aria-selected
     * - 'radio'/'checkbox' → selectable, aria-checked
     * - 'menuitem'/'listitem' → activation only, no selection toggle
     */
    type: 'listitem' | 'menuitem' | 'option' | 'radio' | 'checkbox';
    /**
     * Used to describe the list item for assistive technology.
     */
    private readonly descriptionId;
    /**
     * Used to label the list item for assistive technology.
     */
    private readonly labelId;
    private memoizedActions?;
    constructor();
    render(): any;
    private renderLabel;
    private renderDescription;
    private renderIcon;
    private renderPrimaryComponent;
    private renderImage;
    private renderActionMenu;
    /**
     * Returns a stable reference for the provided actions array to avoid
     * unnecessary re-renders of the action menu when the reference is unchanged.
     *
     * @param actions The actions (and separators) to display in the menu
     * @returns The same array instance that was previously seen, if unchanged
     */
    private getStableActions;
    private renderRadioButton;
    private renderCheckbox;
    private getHostRole;
    private actionMenuLabel;
}
//# sourceMappingURL=list-item.d.ts.map