import { ComponentProps, FC, RefObject } from 'react';
import { PolymorphicPropsWithRef } from '../../utilities/polymorphism/polymorphism.cjs';
export type ExpandablePanelContentComponent = FC<ComponentProps<"div"> & {}>;
export type ExpandablePanelProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<ElementType, {
    variant?: "fill" | "stroke";
    open?: boolean;
    defaultOpen?: boolean;
    onOpenChange?: (open: boolean) => void;
}>;
export type ExpandablePanelComponent = {
    Content: ExpandablePanelContentComponent;
    Header: ExpanderComponent;
} & (<ElementType extends React.ElementType = "div">(props: ExpandablePanelProps<ElementType>) => React.ReactElement | null);
export type ExpanderProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<ElementType, {
    icon?: React.ReactNode;
    open?: boolean;
    expandDirection?: "up" | "down";
}>;
type Expander = <ElementType extends React.ElementType = "button">(props: ExpanderProps<ElementType>) => React.ReactElement | null;
export type ExpanderComponent = Expander & {
    displayName?: string;
};
export type ExpandableContext = {
    open: boolean;
    onToggle: () => void;
    onTransitionStart: (isOpening: boolean, ref: RefObject<HTMLElement | HTMLDetailsElement | null>) => void;
    onTransitionEnd: (isOpen: boolean, ref: RefObject<HTMLElement | HTMLDetailsElement | null>) => void;
    setExpanderHeight: (height: number) => void;
};
export {};
