import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { AccordionState } from '../../interfaces';
import { BalConfigObserver, BalConfigState } from '../../utils/config';
import { Loggable, LogInstance } from '../../utils/log';
export declare class Accordion implements ComponentInterface, BalConfigObserver, Loggable {
    private componentId;
    private contentEl;
    private contentElWrapper;
    private currentRaf;
    private currentRafInner;
    private animationGeneration;
    el: HTMLStencilElement;
    state: AccordionState;
    animated: boolean;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * If `true` the accordion is open.
     */
    active: boolean;
    protected activeChanged(newActive: boolean, oldActive: boolean): Promise<void>;
    /**
     * Set the amount of time, in milliseconds, to wait to trigger the `balChange` event after each keystroke. This also impacts form bindings such as `ngModel` or `v-model`.
     */
    debounce: number;
    protected debounceChanged(): void;
    /**
     * Label of the open trigger button
     */
    openLabel: string;
    /**
     * BalIcon of the open trigger button
     */
    openIcon: string;
    /**
     * Label of the close trigger button
     */
    closeLabel: string;
    /**
     * BalIcon of the close trigger button
     */
    closeIcon: string;
    /**
     * If `true` the accordion is used on the bottom of a card
     */
    card: boolean;
    /**
     * defines the version of the component
     */
    version: number;
    /**
     * Emitted when the accordion has opened or closed
     */
    balChange: EventEmitter<BalEvents.BalAccordionChangeDetail>;
    /**
     * Emitted before the animation starts
     */
    balWillAnimate: EventEmitter<BalEvents.BalAccordionWillAnimateDetail>;
    /**
     * Emitted after the animation has finished
     */
    balDidAnimate: EventEmitter<BalEvents.BalAccordionDidAnimateDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): Promise<void>;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * Opens the accordion
     */
    present(): Promise<boolean>;
    /**
     * Closes the accordion
     */
    dismiss(): Promise<boolean>;
    /**
     * Triggers the accordion
     */
    toggle(): Promise<boolean>;
    /**
     * @internal
     */
    humanToggle(): Promise<boolean>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private get summaryElement();
    private get triggerElement();
    private get detailsElement();
    private get detailsWrapperElement();
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private updateState;
    private setState;
    private updateDetailsElement;
    private updateTriggerElement;
    private updateSummaryElement;
    private cancelAnimation;
    private expand;
    private collapse;
    private shouldAnimate;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onTriggerClickV1;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
    renderVersion2(): any;
    renderVersion1(): any;
}
