import Component from '@glimmer/component';
import { htmlSafe } from '@ember/template';
import type { paddingMapping } from '../utils/css-mappings/eui-accordion';
import type { CommonArgs } from './common.ts';
type EuiAccordionPaddingSize = keyof typeof paddingMapping;
type AccordionArgs = {
    id?: string;
    element?: 'div' | 'fieldset';
    /**
     * Class that will apply to the trigger for the accordion.
     */
    buttonClassName?: string;
    buttonProps?: CommonArgs;
    /**
     * Applied to the main button receiving the `onToggle` event.
     * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).
     */
    buttonElement?: 'div' | 'legend' | 'button';
    /**
     * Extra props to pass to the EuiButtonIcon containing the arrow.
     */
    arrowProps?: {
        className?: string;
    };
    /**
     * Class that will apply to the trigger content for the accordion.
     */
    buttonContentClassName?: string;
    /**
     * The content of the clickable trigger
     */
    buttonContent?: Component;
    /**
     * Will appear right aligned against the button. Useful for separate actions like deletions.
     */
    extraAction?: Component | boolean;
    /**
     * The accordion will start in the open state.
     */
    initialIsOpen?: boolean;
    /**
     * Optional callback method called on open and close with a single `isOpen` parameter
     */
    onToggle?: (isOpen: boolean) => void;
    /**
     * The padding around the exposed accordion content.
     */
    paddingSize?: EuiAccordionPaddingSize;
    /**
     * Placement of the arrow indicator, or 'none' to hide it.
     */
    arrowDisplay?: 'left' | 'right' | 'none';
    /**
     * Control the opening of accordion via prop
     */
    forceState?: 'closed' | 'open';
    /**
     * Change `extraAction` and children into a loading spinner
     */
    isLoading?: boolean;
    /**
     * Choose whether the loading message replaces the content. Customize the message by passing a node
     */
    isLoadingMessage?: boolean | Component;
    isOpen?: boolean;
    childClassName?: string;
    triggerClassName?: string;
    childContentClassName?: string;
};
export interface EuiAccordionSignature {
    Element: any;
    Args: AccordionArgs;
    Blocks: {
        buttonContent: [boolean | undefined];
        content: [];
        extraAction: [boolean | undefined];
    };
}
export default class EuiAccordionAccordionComponent extends Component<EuiAccordionSignature> {
    isLoading: boolean;
    isLoadingMessage: boolean;
    initialIsOpen: boolean;
    paddingSize: EuiAccordionPaddingSize;
    arrowDisplay: AccordionArgs['arrowDisplay'];
    _opened: boolean | undefined;
    childWrapper: HTMLDivElement | null;
    childContent: HTMLDivElement | null;
    constructor(owner: unknown, args: AccordionArgs);
    get buttonElement(): "button" | "legend";
    get buttonElementIsFocusable(): boolean;
    get _arrowDisplay(): "none" | "left" | "right" | undefined;
    get isOpen(): boolean | undefined;
    get hasLoadingMessage(): boolean;
    get buttonClasses(): string;
    get buttonContentClasses(): string;
    get childContentStyle(): string | ReturnType<typeof htmlSafe>;
    setChildContentHeight: () => void;
    onToggle(): void;
}
export {};
//# sourceMappingURL=eui-accordion.d.ts.map