import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { BalOption } from '../../utils/dropdown';
import { BalElementStateInfo, BalElementStateObserver } from '../../utils/element-states';
import { Loggable, LogInstance } from '../../utils/log';
import { HTMLStencilElement } from '../../stencil-public-runtime';
export declare class Option implements ComponentInterface, Loggable, BalElementStateObserver, BalOption {
    private inputId;
    el: HTMLStencilElement;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    checkbox: boolean;
    interactionState: BalElementStateInfo;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * Label will be shown in the input element when it got selected
     */
    label: string;
    /**
     * The value of the select option. This value will be returned by the parent `<bal-select>` element.
     */
    value: string;
    /**
     * If `true`, the user cannot interact with the option.
     */
    disabled: boolean;
    /**
     * If `true`, the option can present in more than one line.
     */
    multiline: boolean;
    /**
     * If `true`, the option is shown in red.
     */
    invalid: boolean;
    /**
     * If `true`, the option is selected.
     */
    selected: boolean;
    /**
     * If `true`, the option is focused.
     */
    focused: boolean;
    /**
     * If `true`, the option is hidden.
     */
    hidden: boolean;
    /**
     * Emitted when the option gets selected or unselected
     */
    balOptionChange: EventEmitter<BalEvents.BalOptionChangeDetail>;
    /**
     * @internal
     * Emitted when a option gets focused.
     */
    balOptionFocus: EventEmitter<BalEvents.BalOptionFocusDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    componentWillRender(): void | Promise<void>;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    listenToMouseEnter(): void;
    elementStateListener(info: BalElementStateInfo): void;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * Selects or deselects the option and informs other components
     */
    select(selected?: boolean): Promise<void>;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private get interactionChildElements();
    /**
     * EVENT BINDING
     * ------------------------------------------------------
     */
    private onClick;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
