import * as react from 'react';
import { PropsWithChildren, ReactNode } from 'react';

type IconBuilder = (expanded: boolean) => ReactNode;
type ExpandableProps = PropsWithChildren<{
    label: ReactNode;
    icon?: IconBuilder;
    isExpanded?: boolean;
    onChange?: (isExpanded: boolean) => void;
    /**
     * Whether the expansion should only happen when the header is clicked or on the entire component
     */
    clickOnlyOnHeader?: boolean;
    disabled?: boolean;
    className?: string;
    headerClassName?: string;
    contentClassName?: string;
}>;
/**
 * A Component for showing and hiding content
 */
declare const Expandable: react.ForwardRefExoticComponent<{
    label: ReactNode;
    icon?: IconBuilder;
    isExpanded?: boolean;
    onChange?: (isExpanded: boolean) => void;
    /**
     * Whether the expansion should only happen when the header is clicked or on the entire component
     */
    clickOnlyOnHeader?: boolean;
    disabled?: boolean;
    className?: string;
    headerClassName?: string;
    contentClassName?: string;
} & {
    children?: ReactNode | undefined;
} & react.RefAttributes<HTMLDivElement>>;
declare const ExpandableUncontrolled: react.ForwardRefExoticComponent<{
    label: ReactNode;
    icon?: IconBuilder;
    isExpanded?: boolean;
    onChange?: (isExpanded: boolean) => void;
    /**
     * Whether the expansion should only happen when the header is clicked or on the entire component
     */
    clickOnlyOnHeader?: boolean;
    disabled?: boolean;
    className?: string;
    headerClassName?: string;
    contentClassName?: string;
} & {
    children?: ReactNode | undefined;
} & react.RefAttributes<HTMLDivElement>>;

export { Expandable, type ExpandableProps, ExpandableUncontrolled };
