import { Key, ReactNode } from 'react';
import { BaseProps, BasePropsWithoutChildren, OuterStyleProps, Styles } from '../../../tasty';
import { CubeItemButtonProps } from '../../actions/ItemButton';
export interface DisclosureStateContext {
    isExpanded: boolean;
    toggle: () => void;
    expand: () => void;
    collapse: () => void;
}
export interface CubeDisclosureProps extends BasePropsWithoutChildren, OuterStyleProps {
    /** Controls expanded state in controlled mode */
    isExpanded?: boolean;
    /** Initial expanded state in uncontrolled mode */
    defaultExpanded?: boolean;
    /** Callback fired when expanded state changes */
    onExpandedChange?: (isExpanded: boolean) => void;
    /** Disables trigger interactions and force-closes the content */
    isDisabled?: boolean;
    /** Render-prop alternative to achieve custom trigger markup */
    children?: ReactNode | ((state: DisclosureStateContext) => ReactNode);
    /** Visual shape variant */
    shape?: 'default' | 'card' | 'sharp';
    /** Duration for DisplayTransition animation in milliseconds */
    transitionDuration?: number;
}
export interface CubeDisclosureTriggerProps extends Omit<CubeItemButtonProps, 'onPress' | 'isDisabled'> {
    /** Children content for the trigger */
    children?: ReactNode;
}
export interface CubeDisclosureContentProps extends BaseProps {
    /** Children content for the panel */
    children?: ReactNode;
}
export interface CubeDisclosureGroupProps extends BaseProps, OuterStyleProps {
    /** Allow more than one disclosure to be open */
    allowsMultipleExpanded?: boolean;
    /** Controlled expanded keys */
    expandedKeys?: Iterable<Key>;
    /** Uncontrolled default expanded keys */
    defaultExpandedKeys?: Iterable<Key>;
    /** Change handler providing the full expanded keys Set */
    onExpandedChange?: (keys: Set<Key>) => void;
    /** Disable all disclosures within group and force-close their content */
    isDisabled?: boolean;
    /** Props forwarded to all ItemButton triggers in the group */
    triggerProps?: Partial<CubeItemButtonProps>;
    /** Optional panel styles applied to all Content panels in the group */
    contentStyles?: Styles;
    children: ReactNode;
}
export interface CubeDisclosureItemProps extends Omit<BasePropsWithoutChildren, 'id'>, OuterStyleProps {
    /** Unique identifier for the disclosure item in a group */
    id?: Key;
    /** Children content */
    children?: ReactNode;
    /** Disables trigger interactions and force-closes the content */
    isDisabled?: boolean;
    /** Controls expanded state in controlled mode */
    isExpanded?: boolean;
    /** Initial expanded state in uncontrolled mode */
    defaultExpanded?: boolean;
    /** Callback fired when expanded state changes */
    onExpandedChange?: (isExpanded: boolean) => void;
    /** Visual shape variant */
    shape?: 'default' | 'card' | 'sharp';
}
declare const _Disclosure: import("react").ForwardRefExoticComponent<CubeDisclosureProps & import("react").RefAttributes<HTMLDivElement>> & {
    Trigger: import("react").ForwardRefExoticComponent<Omit<CubeDisclosureTriggerProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
    Content: import("react").ForwardRefExoticComponent<CubeDisclosureContentProps & import("react").RefAttributes<HTMLDivElement>>;
    Group: import("react").ForwardRefExoticComponent<CubeDisclosureGroupProps & import("react").RefAttributes<HTMLDivElement>>;
    Item: import("react").ForwardRefExoticComponent<CubeDisclosureItemProps & import("react").RefAttributes<HTMLDivElement>>;
};
export { _Disclosure as Disclosure };
export type { CubeDisclosureProps as DisclosureProps, CubeDisclosureTriggerProps as DisclosureTriggerProps, CubeDisclosureContentProps as DisclosureContentProps, CubeDisclosureGroupProps as DisclosureGroupProps, CubeDisclosureItemProps as DisclosureItemProps, };
