import { TemplateResult, PropertyValues, SVGTemplateResult } from 'lit';
import { UiElement } from '../../../md/UiElement.js';
import type UiRipple from '../../../md/ripple/internals/ripple.js';
import type { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js';
import { type IUser } from '../../../providers/user.js';
import '../../../md/focus-ring/ui-focus-ring.js';
import '../../../md/ripple/ui-ripple.js';
export type AvatarType = 'button' | 'icon';
export default class UserAvatar extends UiElement {
    accessor ripple: UiRipple | null;
    /**
     * Whether the avatar is disabled.
     * @attribute
     */
    accessor disabled: boolean;
    /**
     * Set with the user. The computed user initials.
     * @attribute
     */
    protected accessor userInitials: string | undefined;
    /**
     * The URL to the user picture.
     * @attribute
     */
    protected accessor userPicture: string | undefined;
    /**
     * The user object to display the avatar for.
     *
     * This property consumes the `userContext`.
     */
    accessor user: IUser | undefined;
    /**
     * The type of avatar to render, either 'button' or 'icon'.
     * @attribute
     */
    accessor type: AvatarType;
    constructor();
    protected willUpdate(cp: PropertyValues<this>): void;
    beginPress(options: BeginPressConfig): void;
    endPress(options: EndPressConfig): void;
    handleKeyDown(e: KeyboardEvent): void;
    handleKeyUp(e: KeyboardEvent): void;
    handlePointerEnter(e: PointerEvent): void;
    handlePointerLeave(e: PointerEvent): void;
    handleClick(e: MouseEvent): void;
    protected shouldHandleInteraction(): boolean;
    /**
     * Handles changes to the user property.
     * @param user The user object
     */
    protected handleUserChange(user?: IUser): void;
    protected readUserInitials(user: IUser): string | undefined;
    protected handlePictureError(): void;
    /**
     * @return Template result for an icon
     */
    render(): TemplateResult;
    protected renderButton(content: TemplateResult): TemplateResult;
    protected renderIcon(content: TemplateResult): TemplateResult;
    protected pictureTemplate(url: string): TemplateResult;
    /**
     * Renders a bubble with user initials
     * @param initials The user initials
     */
    protected nameTemplate(initials: string): TemplateResult;
    protected renderDefaultAvatar(): TemplateResult;
    protected defaultIcon(): SVGTemplateResult;
    protected renderRipple(): TemplateResult;
    protected renderFocusRing(): TemplateResult;
}
//# sourceMappingURL=UserAvatar.d.ts.map