import React from 'react';
import { IconProps } from '../../icons/Icon/Icon';
import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
import { CollapsePropHorizontalSpace, CollapsePropSize, CollapsePropView } from '../Collapse/Collapse';
import { CollapseIconPropDirection } from '../Collapse/CollapseIcon/CollapseIcon';
export declare type DefaultItem = {
    label: string;
    content: React.ReactNode;
    rightSide?: React.ReactNode | React.ReactNode[];
};
export declare type CollapseGroupPropOnOpen<IS_ACCORDION> = (params: {
    e: React.MouseEvent<HTMLDivElement, MouseEvent>;
    value: (IS_ACCORDION extends true ? number : number[]) | null;
}) => void;
export declare type CollapseGroupPropOpened<IS_ACCORDION> = (IS_ACCORDION extends true ? number : number[]) | null | undefined;
declare type CollapseGroupPropGetItemLabel<ITEM> = (item: ITEM) => string;
declare type CollapseGroupPropGetItemContent<ITEM> = (item: ITEM) => React.ReactNode;
declare type CollapseGroupPropGetItemRightSide<ITEM> = (item: ITEM) => React.ReactNode | React.ReactNode[] | undefined;
export declare type CollapseGroupProps<ITEM, IS_ACCORDION extends boolean> = PropsWithHTMLAttributesAndRef<{
    titleGroup?: string;
    items: ITEM[];
    isAccordion?: IS_ACCORDION;
    children?: never;
    icon?: React.FC<IconProps>;
    divider?: boolean;
    isOpenFirst?: boolean;
    showCounter?: boolean;
    size?: CollapsePropSize;
    view?: CollapsePropView;
    horizontalSpace?: CollapsePropHorizontalSpace;
    hoverEffect?: boolean;
    onOpen?: CollapseGroupPropOnOpen<IS_ACCORDION>;
    opened?: CollapseGroupPropOpened<IS_ACCORDION>;
    getItemLabel?: CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent?: CollapseGroupPropGetItemContent<ITEM>;
} & ({
    closeIcon: React.FC<IconProps>;
    directionIcon?: never;
    closeDirectionIcon?: never;
} | {
    closeIcon?: never;
    directionIcon?: CollapseIconPropDirection;
    closeDirectionIcon?: CollapseIconPropDirection;
}) & ({
    iconPosition?: 'left';
    getItemRightSide?: CollapseGroupPropGetItemRightSide<ITEM>;
} | {
    iconPosition?: 'right';
    getItemRightSide?: never;
}), HTMLDivElement> & (ITEM extends {
    label: DefaultItem['label'];
} ? {} : {
    getItemLabel: CollapseGroupPropGetItemLabel<ITEM>;
}) & (ITEM extends {
    content: DefaultItem['content'];
} ? {} : {
    getItemContent: CollapseGroupPropGetItemContent<ITEM>;
});
export declare const defaultGetItemLabel: CollapseGroupPropGetItemLabel<DefaultItem>;
export declare const defaultGetItemContent: CollapseGroupPropGetItemContent<DefaultItem>;
export declare const defaultGetItemRightSide: CollapseGroupPropGetItemContent<DefaultItem>;
export declare type CollapseGroupComponent = <ITEM, IS_ACCORDION extends boolean = false>(props: CollapseGroupProps<ITEM, IS_ACCORDION>) => React.ReactElement | null;
export declare type CollapseGroupRenderFunction = <ITEM, IS_ACCORDION extends boolean = false>(props: CollapseGroupProps<ITEM, IS_ACCORDION>, ref: React.Ref<HTMLDivElement>) => React.ReactElement | null;
export declare function withDefaultGetters<ITEM, IS_ACCORDION extends boolean>(props: CollapseGroupProps<ITEM, IS_ACCORDION>): ({
    titleGroup?: string;
    items: ITEM[];
    isAccordion?: IS_ACCORDION;
    children?: never;
    icon?: React.FC<IconProps>;
    divider?: boolean;
    isOpenFirst?: boolean;
    showCounter?: boolean;
    size?: "xs" | "s" | "m" | "l" | "2xs";
    view?: "primary" | "secondary";
    horizontalSpace?: "xs" | "s" | "m" | "l" | "xl" | "2xs" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "3xs";
    hoverEffect?: boolean;
    onOpen?: CollapseGroupPropOnOpen<IS_ACCORDION>;
    opened?: IS_ACCORDION extends true ? number : number[];
    getItemLabel?: CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent?: CollapseGroupPropGetItemContent<ITEM>;
} & {
    closeIcon: React.FC<IconProps>;
    directionIcon?: never;
    closeDirectionIcon?: never;
} & {
    iconPosition?: "right";
    getItemRightSide?: never;
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "children" | "view" | "size" | "icon" | "items" | "getItemLabel" | "closeIcon" | "titleGroup" | "isAccordion" | "divider" | "isOpenFirst" | "showCounter" | "horizontalSpace" | "hoverEffect" | "onOpen" | "opened" | "getItemContent" | "directionIcon" | "closeDirectionIcon" | "iconPosition" | "getItemRightSide"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
    label: string;
} ? {} : {
    getItemLabel: CollapseGroupPropGetItemLabel<ITEM>;
}) & (ITEM extends {
    content: React.ReactNode;
} ? {} : {
    getItemContent: CollapseGroupPropGetItemContent<ITEM>;
}) & {
    getItemLabel: CollapseGroupPropGetItemLabel<DefaultItem> | CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemContent<ITEM>;
    getItemRightSide: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemRightSide<ITEM>;
}) | ({
    titleGroup?: string;
    items: ITEM[];
    isAccordion?: IS_ACCORDION;
    children?: never;
    icon?: React.FC<IconProps>;
    divider?: boolean;
    isOpenFirst?: boolean;
    showCounter?: boolean;
    size?: "xs" | "s" | "m" | "l" | "2xs";
    view?: "primary" | "secondary";
    horizontalSpace?: "xs" | "s" | "m" | "l" | "xl" | "2xs" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "3xs";
    hoverEffect?: boolean;
    onOpen?: CollapseGroupPropOnOpen<IS_ACCORDION>;
    opened?: IS_ACCORDION extends true ? number : number[];
    getItemLabel?: CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent?: CollapseGroupPropGetItemContent<ITEM>;
} & {
    closeIcon: React.FC<IconProps>;
    directionIcon?: never;
    closeDirectionIcon?: never;
} & {
    iconPosition?: "left";
    getItemRightSide?: CollapseGroupPropGetItemRightSide<ITEM>;
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "children" | "view" | "size" | "icon" | "items" | "getItemLabel" | "closeIcon" | "titleGroup" | "isAccordion" | "divider" | "isOpenFirst" | "showCounter" | "horizontalSpace" | "hoverEffect" | "onOpen" | "opened" | "getItemContent" | "directionIcon" | "closeDirectionIcon" | "iconPosition" | "getItemRightSide"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
    label: string;
} ? {} : {
    getItemLabel: CollapseGroupPropGetItemLabel<ITEM>;
}) & (ITEM extends {
    content: React.ReactNode;
} ? {} : {
    getItemContent: CollapseGroupPropGetItemContent<ITEM>;
}) & {
    getItemLabel: CollapseGroupPropGetItemLabel<DefaultItem> | CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemContent<ITEM>;
    getItemRightSide: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemRightSide<ITEM>;
}) | ({
    titleGroup?: string;
    items: ITEM[];
    isAccordion?: IS_ACCORDION;
    children?: never;
    icon?: React.FC<IconProps>;
    divider?: boolean;
    isOpenFirst?: boolean;
    showCounter?: boolean;
    size?: "xs" | "s" | "m" | "l" | "2xs";
    view?: "primary" | "secondary";
    horizontalSpace?: "xs" | "s" | "m" | "l" | "xl" | "2xs" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "3xs";
    hoverEffect?: boolean;
    onOpen?: CollapseGroupPropOnOpen<IS_ACCORDION>;
    opened?: IS_ACCORDION extends true ? number : number[];
    getItemLabel?: CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent?: CollapseGroupPropGetItemContent<ITEM>;
} & {
    closeIcon?: never;
    directionIcon?: "left" | "right" | "downRight" | "downLeft" | "upRight" | "upLeft" | "up" | "down";
    closeDirectionIcon?: "left" | "right" | "downRight" | "downLeft" | "upRight" | "upLeft" | "up" | "down";
} & {
    iconPosition?: "right";
    getItemRightSide?: never;
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "children" | "view" | "size" | "icon" | "items" | "getItemLabel" | "closeIcon" | "titleGroup" | "isAccordion" | "divider" | "isOpenFirst" | "showCounter" | "horizontalSpace" | "hoverEffect" | "onOpen" | "opened" | "getItemContent" | "directionIcon" | "closeDirectionIcon" | "iconPosition" | "getItemRightSide"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
    label: string;
} ? {} : {
    getItemLabel: CollapseGroupPropGetItemLabel<ITEM>;
}) & (ITEM extends {
    content: React.ReactNode;
} ? {} : {
    getItemContent: CollapseGroupPropGetItemContent<ITEM>;
}) & {
    getItemLabel: CollapseGroupPropGetItemLabel<DefaultItem> | CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemContent<ITEM>;
    getItemRightSide: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemRightSide<ITEM>;
}) | ({
    titleGroup?: string;
    items: ITEM[];
    isAccordion?: IS_ACCORDION;
    children?: never;
    icon?: React.FC<IconProps>;
    divider?: boolean;
    isOpenFirst?: boolean;
    showCounter?: boolean;
    size?: "xs" | "s" | "m" | "l" | "2xs";
    view?: "primary" | "secondary";
    horizontalSpace?: "xs" | "s" | "m" | "l" | "xl" | "2xs" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "3xs";
    hoverEffect?: boolean;
    onOpen?: CollapseGroupPropOnOpen<IS_ACCORDION>;
    opened?: IS_ACCORDION extends true ? number : number[];
    getItemLabel?: CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent?: CollapseGroupPropGetItemContent<ITEM>;
} & {
    closeIcon?: never;
    directionIcon?: "left" | "right" | "downRight" | "downLeft" | "upRight" | "upLeft" | "up" | "down";
    closeDirectionIcon?: "left" | "right" | "downRight" | "downLeft" | "upRight" | "upLeft" | "up" | "down";
} & {
    iconPosition?: "left";
    getItemRightSide?: CollapseGroupPropGetItemRightSide<ITEM>;
} & Omit<React.HTMLAttributes<HTMLDivElement>, "css" | "children" | "view" | "size" | "icon" | "items" | "getItemLabel" | "closeIcon" | "titleGroup" | "isAccordion" | "divider" | "isOpenFirst" | "showCounter" | "horizontalSpace" | "hoverEffect" | "onOpen" | "opened" | "getItemContent" | "directionIcon" | "closeDirectionIcon" | "iconPosition" | "getItemRightSide"> & React.RefAttributes<HTMLDivElement> & (ITEM extends {
    label: string;
} ? {} : {
    getItemLabel: CollapseGroupPropGetItemLabel<ITEM>;
}) & (ITEM extends {
    content: React.ReactNode;
} ? {} : {
    getItemContent: CollapseGroupPropGetItemContent<ITEM>;
}) & {
    getItemLabel: CollapseGroupPropGetItemLabel<DefaultItem> | CollapseGroupPropGetItemLabel<ITEM>;
    getItemContent: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemContent<ITEM>;
    getItemRightSide: CollapseGroupPropGetItemContent<DefaultItem> | CollapseGroupPropGetItemRightSide<ITEM>;
});
export {};
