import { AriaLabelingProps, DOMProps, DOMRefValue, Key } from '@react-types/shared';
import { ContextValue, SlotProps } from 'react-aria-components/slots';
import { StyleProps, StylesPropWithHeight, UnsafeStyles } from './style-utils';
import React, { ReactNode } from 'react';
import { RenderProps } from 'react-aria-components/useRenderProps';
export interface AccordionProps extends UnsafeStyles, DOMProps, SlotProps {
    /** The accordion item elements in the accordion. */
    children: React.ReactNode;
    /** Spectrum-defined styles, returned by the `style()` macro. */
    styles?: StylesPropWithHeight;
    /**
     * The size of the accordion.
     * @default 'M'
     */
    size?: 'S' | 'M' | 'L' | 'XL';
    /**
     * The amount of space between the accordion items.
     * @default 'regular'
     */
    density?: 'compact' | 'regular' | 'spacious';
    /** Whether the accordion should be displayed with a quiet style. */
    isQuiet?: boolean;
    /** Whether multiple accordion items can be expanded at the same time. */
    allowsMultipleExpanded?: boolean;
    /** Whether all accordion items are disabled. */
    isDisabled?: boolean;
    /** The currently expanded keys in the accordion (controlled). */
    expandedKeys?: Iterable<Key>;
    /** The initial expanded keys in the accordion (uncontrolled). */
    defaultExpandedKeys?: Iterable<Key>;
    /** Handler that is called when accordion items are expanded or collapsed. */
    onExpandedChange?: (keys: Set<Key>) => any;
}
export declare const AccordionContext: React.Context<ContextValue<Partial<AccordionProps>, DOMRefValue<HTMLDivElement>>>;
/**
 * An accordion is a container for multiple accordion items.
 */
export declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<DOMRefValue<HTMLDivElement>>>;
export interface AccordionItemState {
    /** Whether the accordion item is currently expanded. */
    readonly isExpanded: boolean;
    /** Sets whether the accordion item is expanded. */
    setExpanded(isExpanded: boolean): void;
    /** Expand the accordion item. */
    expand(): void;
    /** Collapse the accordion item. */
    collapse(): void;
    /** Toggles the accordion item's visibility. */
    toggle(): void;
}
export interface AccordionItemRenderProps {
    /**
     * Whether the accordion item is expanded.
     * @selector [data-expanded]
     */
    isExpanded: boolean;
    /**
     * Whether the accordion item has keyboard focus.
     * @selector [data-focus-visible-within]
     */
    isFocusVisibleWithin: boolean;
    /**
     * Whether the accordion item is disabled.
     * @selector [data-disabled]
     */
    isDisabled: boolean;
    /**
     * State of the accordion item.
     */
    state: AccordionItemState;
}
export interface AccordionItemProps extends Omit<RenderProps<AccordionItemRenderProps>, 'className' | 'style' | 'render'>, SlotProps, StyleProps {
    /**
     * The size of the accordion item.
     * @default 'M'
     */
    size?: 'S' | 'M' | 'L' | 'XL';
    /**
     * The amount of space between the accordion item.
     * @default 'regular'
     */
    density?: 'compact' | 'regular' | 'spacious';
    /** Whether the accordion item should be displayed with a quiet style. */
    isQuiet?: boolean;
    /** The contents of the accordion item, consisting of a accordion item title and accordion item panel. */
    children: ReactNode;
    /** An id for the accordion item, matching the id used in `expandedKeys`. */
    id?: Key;
    /** Whether the accordion item is disabled. */
    isDisabled?: boolean;
    /** Handler that is called when the accordion item's expanded state changes. */
    onExpandedChange?: (isExpanded: boolean) => void;
    /** Whether the accordion item is expanded (controlled). */
    isExpanded?: boolean;
    /** Whether the accordion item is expanded by default (uncontrolled). */
    defaultExpanded?: boolean;
}
/**
 * A accordion item is a collapsible section of content. It is composed of a header with a heading and trigger button, and a panel that contains the content.
 */
export declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<DOMRefValue<HTMLDivElement>>>;
export interface AccordionItemTitleProps extends UnsafeStyles, DOMProps {
    /** The heading level of the accordion item title.
     *
     * @default 3
     */
    level?: number;
    /** The contents of the accordion item title. */
    children: React.ReactNode;
}
/**
 * An accordion item title consisting of a heading and a trigger button to expand/collapse the panel.
 */
export declare const AccordionItemTitle: React.ForwardRefExoticComponent<AccordionItemTitleProps & React.RefAttributes<DOMRefValue<HTMLDivElement>>>;
export interface AccordionItemHeaderProps extends UnsafeStyles, DOMProps {
    /** The contents of the accordion item header. */
    children: React.ReactNode;
}
/**
 * A wrapper element for the accordion item title that can contain other elements not part of the trigger.
 */
export declare const AccordionItemHeader: React.ForwardRefExoticComponent<AccordionItemHeaderProps & React.RefAttributes<DOMRefValue<HTMLDivElement>>>;
export interface AccordionItemPanelProps extends UnsafeStyles, DOMProps, AriaLabelingProps {
    /** The contents of the accordion item panel. */
    children: React.ReactNode;
    /**
     * The accessibility role for the accordion item panel.
     * @default 'group'
     */
    role?: 'group' | 'region';
}
/**
 * An accordion item panel is a collapsible section of content that is hidden until the accordion item is expanded.
 */
export declare const AccordionItemPanel: React.ForwardRefExoticComponent<AccordionItemPanelProps & React.RefAttributes<DOMRefValue<HTMLDivElement>>>;
