import type { AriaButtonProps } from '@react-aria/button';
import type React from 'react';
import type { Polymorphic } from '../_utils/polymorphic';
import type { AriaLabelled, Props, Size } from '../_utils/types';
export declare type AvatarSize = Extract<Size, 'md' | 'lg' | 'xl'>;
export declare type AvatarRoleType = 'link' | 'button' | 'img';
export interface AvatarPolyMap extends Record<AvatarRoleType, React.ElementType> {
    button: 'div';
    img: 'div';
    link: 'a';
}
export declare type AvatarRoles = AvatarRoleType | undefined;
export declare type AvatarRef<Role extends AvatarRoles = undefined> = Role extends AvatarRoleType ? Polymorphic.Ref<AvatarPolyMap, Role> : React.ComponentPropsWithRef<'div'>['ref'];
export interface BaseAvatarProps extends Props {
    /**
     * Sets the Avatar's clickable UI state. For accessibility, see `role`
     * @ally This prop is around UI and has 0 UX or JS for interaction, try `role` instead.
     * @defaultValue false
     * @deprecated Reviewing for removal from system, prefer accessible `role="link"` or `role="button"` for interactive UI.
     * @deprecatedSince TBD
     * @since 10.19.0
     */
    clickable?: boolean;
    /**
     * Sets the Avatar's disabled state
     *
     * @defaultValue false
     */
    disabled?: boolean;
    /**
     * Sets the Avatar's size
     *
     * @defaultValue md
     *
     * @deprecated
     *
     * Size "xl" has been deprecated and will be removed in a future version.
     * Please use "lg" instead of "xl".
     *
     * **Before**
     *
     * `<Avatar size="xl" />`
     *
     * **After**
     *
     * `<Avatar size="lg" />`
     *
     * @deprecatedSince 10.20.0
     * @since 10.19.0
     */
    size?: AvatarSize;
}
declare type DecorativeAvatarProps<Role extends AvatarRoles = undefined> = {
    'aria-hidden': true;
    role?: Role;
} & BaseAvatarProps;
export declare type AvatarProps<Role extends AvatarRoles = undefined> = Role extends 'link' ? Polymorphic.ComponentPropsWithRef<AvatarPolyMap, 'link', 'href', AriaLabelled<BaseAvatarProps>> : Role extends 'button' ? Polymorphic.ComponentPropsWithRef<AvatarPolyMap, 'button', never, AriaLabelled<{
    onPress: AriaButtonProps['onPress'];
} & BaseAvatarProps>> : Role extends 'img' ? Polymorphic.ComponentPropsWithRef<AvatarPolyMap, 'img', never, AriaLabelled<BaseAvatarProps>> : DecorativeAvatarProps & {
    ref?: AvatarRef<undefined>;
};
export interface AvatarIconProps extends Props {
    /**
     * The icon to display
     *
     * @since 10.19.0
     */
    icon: React.ReactNode;
}
export interface AvatarPortraitProps extends Props {
    /**
     * The Avatar rich media url
     * @since 10.19.0
     */
    imageUrl: string;
}
export interface AvatarLabelProps extends Props {
}
export {};
