import { nothing, PropertyValues, TemplateResult } from 'lit';
import { UiElement } from '../../UiElement.js';
import UiRipple from '../../ripple/internals/ripple.js';
import { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js';
import '../../ripple/ui-ripple.js';
export declare enum ChipType {
    assist = "assist",
    filter = "filter",
    input = "input",
    suggestion = "suggestion"
}
/**
 * @slot The content of the chip.
 * @slot icon - The leading icon, sized 18x18 px
 * @slot avatar - The leading image, sized 24x24 px
 * @fires select - When the checked state changed through a user interaction. This only related to
 *                 `filter` chips. Note, `select` is dispatched just before the `click` event.
 * @fires remove - When the user clicks the "remove" icon on the chip.
 */
export default class UiChip extends UiElement {
    /**
     * Whether the chip is disabled. The user can't interact with the chip when `true`.
     * @attribute
     */
    accessor disabled: boolean;
    /**
     * The type of the rendered chip.
     * @attribute
     *
     * @see https://m3.material.io/components/chips/guidelines
     */
    accessor type: ChipType;
    /**
     * Whether the chip should be rendered as elevated.
     * @attribute
     */
    accessor elevated: boolean | undefined;
    /**
     * Whether the chip renders the "close" icon at the end.
     * @attribute
     */
    accessor removable: boolean | undefined;
    /**
     * Whether the chip is currently checked.
     * Note, this controls the presentation layer only. It has no meaning when it comes to forms and inputs.
     * @attribute
     */
    accessor checked: boolean | undefined;
    /**
     * When set, the chip will render a trailing icon that indicates that the chip is associated
     * with a list. It does not do anything.
     *
     * @attribute
     */
    accessor list: boolean | undefined;
    protected accessor ripple: UiRipple | null;
    /**
     * Determines when the element has an icon in the "icon" slot.
     */
    protected accessor hasIcon: boolean;
    /**
     * Determines when the element has an image in the "avatar" slot.
     */
    protected accessor hasAvatar: boolean;
    constructor();
    connectedCallback(): void;
    protected willUpdate(cp: PropertyValues<this>): void;
    beginPress(options: BeginPressConfig): void;
    handleKeyDown(e: KeyboardEvent): Promise<void>;
    protected handleFocus(): Promise<void>;
    protected handleBlur(): Promise<void>;
    endPress(info: EndPressConfig): void;
    handleClick(e: MouseEvent): void;
    handlePointerEnter(e: PointerEvent): void;
    handlePointerLeave(e: PointerEvent): void;
    /**
     * Toggles the "filter" type of the chip.
     */
    toggleChecked(): void;
    /**
     * Sets the `hasIcon` state property when the "icon" slot change event is dispatched.
     */
    protected handleIconSlotChange(e: Event): void;
    /**
     * Sets the `_hasAvatar` state property when the "avatar" slot change event is dispatched.
     */
    protected handleAvatarSlotChange(e: Event): void;
    protected handleClose(e: Event): void;
    protected removeAction(): Promise<void>;
    protected render(): TemplateResult;
    protected renderRipple(): TemplateResult;
    protected renderLeadingIcon(): TemplateResult | typeof nothing;
    protected renderAvatar(): TemplateResult | typeof nothing;
    protected renderTrailingIcon(): TemplateResult | typeof nothing;
    get hasTrailingIcon(): boolean;
}
//# sourceMappingURL=Chip.d.ts.map