import React from 'react';
import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
type CheckboxGroupPropAttributes = Omit<JSX.IntrinsicElements['label'], 'ref' | 'onChange' | 'onFocus' | 'children' | 'onBlur'>;
export type CheckboxGroupDefaultItem = {
    key?: string | number;
    label: string;
    disabled?: boolean;
    attributes?: CheckboxGroupPropAttributes;
    ref?: React.RefObject<HTMLLabelElement>;
};
export declare const checkboxGroupPropDirections: readonly ["column", "row"];
export type CheckboxGroupPropDirection = typeof checkboxGroupPropDirections[number];
export declare const checkboxGroupDefaultDirection: CheckboxGroupPropDirection;
export declare const checkboxGroupPropSizes: readonly ["m", "xs", "s", "l"];
export type CheckboxGroupPropSize = typeof checkboxGroupPropSizes[number];
export declare const checkboxGroupDefaultSize: CheckboxGroupPropSize;
export declare const checkboxGroupPropViews: readonly ["primary", "ghost"];
export type CheckboxGroupPropView = typeof checkboxGroupPropViews[number];
export declare const checkboxGroupDefaultView: CheckboxGroupPropView;
export declare const checkboxGroupPropAlign: readonly ["center", "top"];
export type CheckboxGroupPropAlign = typeof checkboxGroupPropAlign[number];
export declare const checkboxGroupDefaultAlign: CheckboxGroupPropAlign;
export type CheckboxGroupPropGetItemKey<ITEM> = (item: ITEM) => string | number | undefined;
export type CheckboxGroupPropGetItemLabel<ITEM> = (item: ITEM) => string;
export type CheckboxGroupPropGetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;
export type CheckboxGroupPropGetItemAttributes<ITEM> = (item: ITEM) => CheckboxGroupPropAttributes | undefined;
export type CheckboxGroupPropGetItemRef<ITEM> = (item: ITEM) => React.RefObject<HTMLLabelElement> | undefined;
export type CheckboxGroupPropOnChange<ITEM> = (value: ITEM[] | null, props: {
    e: React.ChangeEvent<HTMLInputElement>;
}) => void;
export type CheckboxGroupProps<ITEM = CheckboxGroupDefaultItem> = PropsWithHTMLAttributesAndRef<{
    value?: ITEM[] | null;
    items: ITEM[];
    getItemKey?: CheckboxGroupPropGetItemKey<ITEM>;
    getItemLabel?: CheckboxGroupPropGetItemLabel<ITEM>;
    getItemDisabled?: CheckboxGroupPropGetItemDisabled<ITEM>;
    getItemAttributes?: CheckboxGroupPropGetItemAttributes<ITEM>;
    getItemRef?: CheckboxGroupPropGetItemRef<ITEM>;
    onChange?: CheckboxGroupPropOnChange<ITEM>;
    name?: string;
    direction?: CheckboxGroupPropDirection;
    align?: CheckboxGroupPropAlign;
    size?: CheckboxGroupPropSize;
    view?: CheckboxGroupPropView;
    disabled?: boolean;
    className?: string;
}, HTMLDivElement> & (ITEM extends {
    label: CheckboxGroupDefaultItem['label'];
} ? {} : {
    getItemLabel: CheckboxGroupPropGetItemLabel<ITEM>;
});
export type CheckboxGroupComponent = <ITEM = CheckboxGroupDefaultItem>(props: CheckboxGroupProps<ITEM>) => React.ReactElement | null;
export {};
