import { PropertyValues, TemplateResult } from 'lit';
import { ClassInfo } from 'lit/directives/class-map.js';
import { UiElement } from '../../UiElement.js';
import { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js';
import UiRipple from '../../ripple/internals/ripple.js';
import '../../focus-ring/ui-focus-ring.js';
import '../../ripple/ui-ripple.js';
export declare enum ListItemLines {
    one = "one",
    two = "two",
    three = "three",
    auto = "auto"
}
export declare enum ListItemImage {
    icon = "icon",
    avatar = "avatar",
    image = "image",
    video = "video",
    auto = "auto"
}
/**
 * @slot - The main content of the list item, typically a label or title.
 * @slot overline - The text displayed above the main content.
 * @slot start - The content displayed at the start of the list item.
 * @slot end - The content displayed at the end of the list item.
 * @slot end-text - The text displayed at the end of the list item.
 * @slot supporting-text - The supporting text displayed below the main content.
 */
export default class UiListItem extends UiElement {
    #private;
    accessor ripple: UiRipple;
    get lines(): ListItemLines;
    /**
     * The number of lines to render the list template for.
     * @default ListItemLines.one
     * @attribute
     */
    set lines(value: ListItemLines);
    /**
     * Whether the list item is disabled. The user can't interact with the list item when `true`.
     * @attribute
     */
    accessor disabled: boolean;
    /**
     * The type of the list image.
     * @default ListItemImage.icon
     * @attribute
     */
    accessor image: ListItemImage;
    /**
     * Whether the list item is static and should not be focusable.
     * The ripple effect will not be applied when `true`.
     * @default false
     * @attribute
     */
    accessor static: boolean;
    accessor tabIndex: number;
    accessor hasStartItem: boolean;
    accessor hasEndItem: boolean;
    accessor hasEndTextItem: boolean;
    accessor hasOverline: boolean;
    accessor hasSupportingText: boolean;
    constructor();
    protected updated(changedProperties: PropertyValues<this>): void;
    connectedCallback(): void;
    protected willUpdate(cp: PropertyValues<this>): void;
    handleKeyDown(e: KeyboardEvent): void;
    handleKeyUp(e: KeyboardEvent): void;
    beginPress(options: BeginPressConfig): void;
    endPress(options: EndPressConfig): void;
    handlePointerEnter(e: PointerEvent): void;
    handlePointerLeave(e: PointerEvent): void;
    /**
     * Focuses list item and makes list item focusable via keyboard.
     */
    activate(): void;
    /**
     * Returns true if list item is currently focused and is focusable.
     */
    isActive(): boolean;
    /**
     * Removes list item from sequential keyboard navigation.
     */
    deactivate(): void;
    private _handleSlotChange;
    protected handleOverlineSlotChange(event: Event): void;
    protected handleSupportingTextSlotChange(event: Event): void;
    protected handleStartSlotChange(event: Event): void;
    protected handleEndSlotChange(event: Event): void;
    protected handleEndTextSlotChange(event: Event): void;
    getSurfaceClasses(): ClassInfo;
    protected render(): TemplateResult;
    protected renderRipple(): TemplateResult;
    protected renderFocusRing(): TemplateResult;
    protected getStartClasses(): ClassInfo;
    protected renderStart(): TemplateResult;
    protected getEndClasses(): ClassInfo;
    protected renderEnd(): TemplateResult;
    protected renderBody(): TemplateResult;
}
//# sourceMappingURL=ListItem.d.ts.map