/// <reference types="react" />
import { IconComponent } from '@consta/icons/Icon';
import { badgePropStatus } from "../Badge";
import { AsAttributes, AsTags } from "../../utils/types/AsTags";
import { PropsWithHTMLAttributesAndRef } from "../../utils/types/PropsWithHTMLAttributes";
export declare const chipsPropSize: readonly ["xs", "s", "m", "l"];
export declare type ChipsPropSize = typeof chipsPropSize[number];
export declare const chipsPropSizeDefault: ChipsPropSize;
export declare const chipsPropActiveView: readonly ["primary", "secondary"];
export declare type ChipsPropActiveView = typeof chipsPropActiveView[number];
export declare const chipsPropActiveViewDefault: ChipsPropActiveView;
export declare type ChipsPropStatus = typeof badgePropStatus[number];
export declare type ChipsItemProps = {
    size?: ChipsPropSize;
    activeView?: ChipsPropActiveView;
    interactive?: boolean;
    onRightIconClick?: React.MouseEventHandler<HTMLButtonElement>;
    iconLeft?: IconComponent;
    iconRight?: IconComponent;
    status?: ChipsPropStatus;
    label: string;
    active?: boolean;
};
export declare type ChipsDefaultItem = Omit<ChipsItemProps, 'size' | 'activeView' | 'interactive' | 'onRightIconClick'> & {
    attributes?: Omit<AsAttributes, 'children' | 'ref'>;
    as?: AsTags;
    ref?: React.RefObject<HTMLElement>;
};
export declare type ChipsPropGetItemStatus<ITEM> = (item: ITEM) => ChipsDefaultItem['status'];
export declare type ChipsPropGetItemLabel<ITEM> = (item: ITEM) => ChipsDefaultItem['label'];
export declare type ChipsPropGetItemIconLeft<ITEM> = (item: ITEM) => ChipsDefaultItem['iconLeft'];
export declare type ChipsPropGetItemIconRight<ITEM> = (item: ITEM) => ChipsDefaultItem['iconRight'];
export declare type ChipsPropGetItemRef<ITEM> = (item: ITEM) => ChipsDefaultItem['ref'];
export declare type ChipsPropGetItemAs<ITEM> = (item: ITEM) => ChipsDefaultItem['as'];
export declare type ChipsPropGetItemAttributes<ITEM> = (item: ITEM) => ChipsDefaultItem['attributes'];
export declare type ChipsPropGetItemActive<ITEM> = (item: ITEM) => ChipsDefaultItem['active'];
export declare type ChipsPropOnItemClick<ITEM> = (item: ITEM, props: {
    e: React.MouseEvent;
}) => void;
export declare type ChipsPropItemOnRightIconClick<ITEM> = (item: ITEM, props: {
    e: React.MouseEvent;
}) => void;
export declare type ChipsProps<ITEM = ChipsDefaultItem> = PropsWithHTMLAttributesAndRef<{
    size?: ChipsPropSize;
    activeView?: ChipsPropActiveView;
    items: ITEM[];
    interactive?: boolean;
    getItemStatus?: ChipsPropGetItemStatus<ITEM>;
    getItemLabel?: ChipsPropGetItemLabel<ITEM>;
    getItemIconLeft?: ChipsPropGetItemIconLeft<ITEM>;
    getItemIconRight?: ChipsPropGetItemIconRight<ITEM>;
    getItemRef?: ChipsPropGetItemRef<ITEM>;
    getItemAs?: ChipsPropGetItemAs<ITEM>;
    getItemAttributes?: ChipsPropGetItemAttributes<ITEM>;
    getItemActive?: ChipsPropGetItemActive<ITEM>;
    onItemClick?: ChipsPropOnItemClick<ITEM>;
    onItemRightIconClick?: ChipsPropItemOnRightIconClick<ITEM>;
}, HTMLDivElement> & (ITEM extends {
    label: string;
} ? {} : {
    getItemLabel: ChipsPropGetItemLabel<ITEM>;
});
export declare type ChipsComponent = <ITEM = ChipsDefaultItem>(props: ChipsProps<ITEM>) => React.ReactElement | null;
