import type { AccordionBaseState } from '@fluentui/react-accordion';
import { AccordionContextValues } from '@fluentui/react-accordion';
import type { AccordionHeaderBaseState } from '@fluentui/react-accordion';
import { AccordionHeaderContextValues } from '@fluentui/react-accordion';
import { AccordionHeaderBaseProps as AccordionHeaderProps } from '@fluentui/react-accordion';
import { AccordionHeaderSlots } from '@fluentui/react-accordion';
import { AccordionItemProps } from '@fluentui/react-accordion';
import { AccordionItemSlots } from '@fluentui/react-accordion';
import type { AccordionItemState as AccordionItemState_2 } from '@fluentui/react-accordion';
import type { AccordionPanelBaseState } from '@fluentui/react-accordion';
import { AccordionPanelBaseProps as AccordionPanelProps } from '@fluentui/react-accordion';
import { AccordionPanelSlots } from '@fluentui/react-accordion';
import { AccordionBaseProps as AccordionProps } from '@fluentui/react-accordion';
import { AccordionSlots } from '@fluentui/react-accordion';
import type { ForwardRefComponent } from '@fluentui/react-utilities';
import type { JSXElement } from '@fluentui/react-utilities';
import type * as React_2 from 'react';
import { renderAccordion_unstable as renderAccordion } from '@fluentui/react-accordion';
import { renderAccordionHeader_unstable as renderAccordionHeader } from '@fluentui/react-accordion';
import { renderAccordionItem_unstable as renderAccordionItem } from '@fluentui/react-accordion';
import { useAccordionContext_unstable as useAccordionContext } from '@fluentui/react-accordion';
import { useAccordionItemContextValues_unstable as useAccordionItemContextValues } from '@fluentui/react-accordion';

/**
 * Represents a set of collapsible panels with headings.
 */
export declare const Accordion: ForwardRefComponent<AccordionProps>;

export { AccordionContextValues }

/**
 * Represents the heading of an accordion item, containing a button that toggles the panel open or closed.
 */
export declare const AccordionHeader: ForwardRefComponent<AccordionHeaderProps>;

export { AccordionHeaderProps }

export { AccordionHeaderSlots }

export declare type AccordionHeaderState = AccordionHeaderBaseState & {
    root: {
        /**
         * Data attribute set when the accordion item is open.
         */
        'data-open'?: string;
        /**
         * Data attribute set when the accordion header is disabled.
         */
        'data-disabled'?: string;
        /**
         * Data attribute reflecting the expand icon position. Value is 'start' or 'end'.
         */
        'data-expand-icon-position'?: string;
    };
};

/**
 * Represents a single collapsible section within an Accordion, containing a header and a panel.
 */
export declare const AccordionItem: ForwardRefComponent<AccordionItemProps>;

export { AccordionItemProps }

export { AccordionItemSlots }

export declare type AccordionItemState = AccordionItemState_2 & {
    root: {
        /**
         * Data attribute set to indicate whether the accordion item is disabled.
         */
        'data-disabled'?: string;
        /**
         * Data attribute set to indicate whether the accordion item is open.
         */
        'data-open'?: string;
    };
};

/**
 * Represents the content area of an accordion item, revealed when the associated header is toggled open.
 */
export declare const AccordionPanel: ForwardRefComponent<AccordionPanelProps>;

export { AccordionPanelProps }

export { AccordionPanelSlots }

export declare type AccordionPanelState = AccordionPanelBaseState & {
    root: {
        /**
         * Data attribute set when the accordion panel is open.
         */
        'data-open'?: string;
    };
};

export { AccordionProps }

export { AccordionSlots }

export declare type AccordionState = AccordionBaseState & {
    root: {
        /**
         * Data attribute set to indicate whether the accordion allows multiple items to be expanded at once.
         */
        'data-collapsible'?: string;
        /**
         * Data attribute set to indicate whether the accordion allows multiple items to be expanded at once.
         */
        'data-multiple'?: string;
    };
};

export { renderAccordion }

export { renderAccordionHeader }

export { renderAccordionItem }

/**
 * Renders the final JSX of the AccordionPanel component, given the state.
 */
export declare const renderAccordionPanel: (state: AccordionPanelState) => JSXElement;

/**
 * Returns the state for an Accordion component, given its props and ref.
 * The returned state can be modified with hooks before being passed to `renderAccordion`.
 */
export declare const useAccordion: (props: AccordionProps, ref: React_2.Ref<HTMLElement>) => AccordionState;

export { useAccordionContext }

/**
 * Maps the state of the accordion to the values that are passed through context to its children. This is used when a child component needs to know about the state of the accordion, such as whether it is collapsible or allows multiple items to be expanded.
 */
export declare const useAccordionContextValues: (state: AccordionState) => AccordionContextValues;

/**
 * Returns the state for an AccordionHeader component, given its props and ref.
 * The returned state can be modified with hooks before being passed to `renderAccordionHeader`.
 */
export declare const useAccordionHeader: (props: AccordionHeaderProps, ref: React_2.Ref<HTMLElement>) => AccordionHeaderState;

/**
 * Maps AccordionHeader state to the context values passed down to child components.
 */
export declare const useAccordionHeaderContextValues: (state: AccordionHeaderState) => AccordionHeaderContextValues;

/**
 * Returns the state for an AccordionItem component, given its props and ref.
 * The returned state can be modified with hooks before being passed to `renderAccordionItem`.
 */
export declare const useAccordionItem: (props: AccordionItemProps, ref: React_2.Ref<HTMLElement>) => AccordionItemState;

export { useAccordionItemContextValues }

/**
 * Returns the state for an AccordionPanel component, given its props and ref.
 * The returned state can be modified with hooks before being passed to `renderAccordionPanel`.
 */
export declare const useAccordionPanel: (props: AccordionPanelProps, ref: React_2.Ref<HTMLElement>) => AccordionPanelState;

export { }
