import { MouseEvent, ChangeEvent } from 'react';
import { ListChildComponentProps } from 'react-window';
import { Sizes } from '@m4l/styles';
import { CheckableListItem, CheckableListGroup, CheckableListRenderItemParams } from '../types';
export interface CheckableListRenderGroupParams {
    group: CheckableListGroup;
    items: CheckableListItem[];
    index: number;
    expanded: boolean;
    disabled: boolean;
    size: Extract<Sizes, 'small' | 'medium'>;
    variant: 'standard' | 'outlined' | 'compact';
    checkboxState: boolean | 'indeterminate';
    onToggleExpand: (event: MouseEvent) => void;
    onToggleGroup: (event: ChangeEvent<HTMLInputElement>) => void;
    selectedCount: number;
    totalCount: number;
}
interface UseCheckableListRenderProps {
    isItemSelected: (itemId: string | number) => boolean;
    disabled?: boolean;
    size?: Extract<Sizes, 'small' | 'medium'>;
    variant?: 'standard' | 'outlined' | 'compact';
    checkboxSize?: 'small' | 'medium';
    handleItemToggle: (itemId: string | number) => void;
    renderItem?: (params: CheckableListRenderItemParams) => React.ReactNode;
    expandedGroups: Set<string | number>;
    isGroupFullySelected: (group: CheckableListGroup) => boolean;
    isGroupPartiallySelected: (group: CheckableListGroup) => boolean;
    getGroupItems: (group: CheckableListGroup) => CheckableListItem[];
    indeterminateBehavior?: 'select-all' | 'indicate-some';
    renderGroup?: (params: CheckableListRenderGroupParams) => React.ReactNode;
    groupable?: boolean;
    showCheckboxOnGroup?: boolean;
    handleGroupExpandToggle: (groupId: string | number) => void;
    handleGroupToggle: (group: CheckableListGroup) => void;
}
/**
 * Tipo de retorno del hook useCheckableListRender
 */
interface UseCheckableListRenderReturn {
    renderItemContent: (item: CheckableListItem, index: number) => React.ReactNode;
    renderGroupContent: (group: CheckableListGroup, index: number) => React.ReactNode;
    renderVirtualizedItem: (props: ListChildComponentProps) => React.ReactNode;
    urlIconSearch: string;
    urlIconNoResults: string;
}
/**
 * Hook para manejar el renderizado de items y grupos
 */
export declare const useCheckableListRender: ({ isItemSelected, disabled, size, variant, checkboxSize, handleItemToggle, renderItem, expandedGroups, isGroupFullySelected, isGroupPartiallySelected, getGroupItems, indeterminateBehavior, renderGroup, groupable, showCheckboxOnGroup, handleGroupExpandToggle, handleGroupToggle, }: UseCheckableListRenderProps) => UseCheckableListRenderReturn;
export {};
//# sourceMappingURL=useCheckableListRender.d.ts.map