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 ListItem implements ComponentInterface, BalConfigObserver, Loggable {
    static selectors: {
        accordionHead: string;
        accordionBody: string;
        accordionBodyWrapper: string;
    };
    private currentRaf;
    private accordionOpen;
    private animated;
    el: HTMLStencilElement;
    state: AccordionState;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * If `true` the list item can be hovered
     */
    disabled: boolean;
    /**
     * If `true` the list item shows that it is clickable
     */
    clickable: boolean;
    /**
     * If `true` the list item has a selected theme
     */
    selected: boolean;
    /**
     * If `true` the list item can be used as a accordion
     */
    accordion: boolean;
    /**
     * If `true` the list item can be used as an accordion inside another accordion
     */
    subAccordionItem: boolean;
    /**
     * Specifies the URL of the page the link goes to
     */
    href: string;
    /**
     * Specifies the relationship of the target object to the link object.
     * The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).
     */
    rel: string | undefined;
    /**
     * Specifies where to open the linked document
     */
    target: BalProps.BalListItemTarget;
    /**
     * This attribute instructs browsers to download a URL instead of navigating to
     * it, so the user will be prompted to save it as a local file. If the attribute
     * has a value, it is used as the pre-filled file name in the Save prompt
     * (the user can still change the file name if they want).
     */
    download?: string;
    /**
     * Emitted when the link element has clicked
     */
    balNavigate: EventEmitter<BalEvents.BalListItemNavigateDetail>;
    /**
     * Emitted when the state of the group is changing
     */
    balGroupStateChanged: EventEmitter<BalEvents.BalListItemGroupStateChangedDetail>;
    /**
     * Emitted before the animation starts
     */
    balWillAnimate: EventEmitter<BalEvents.BalListItemWillAnimateDetail>;
    /**
     * Emitted after the animation has finished
     */
    balDidAnimate: EventEmitter<BalEvents.BalListItemDidAnimateDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    private accordionChanged;
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * Opens the accordion
     */
    present(): Promise<void>;
    /**
     * Closes the accordion
     */
    dismiss(ignoreNested?: boolean): Promise<void>;
    /**
     * Triggers the accordion
     */
    toggle(): Promise<void>;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private addEventListenerAccordionChange;
    private removeEventListenerAccordionChange;
    private updateHead;
    private updateState;
    private expandAccordion;
    private collapseAccordion;
    private shouldAnimate;
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onClickTrigger;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
