import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalAnimationObserver } from '../../utils/animation';
import { BalBreakpointObserver, BalBreakpoints } from '../../utils/breakpoints';
import { BalFocusObserver } from '../../utils/focus';
import { BalAriaForm } from '../../utils/form';
import { LogInstance } from '../../utils/log';
import { BalWindowResizeObserver } from '../../utils/resize';
import { BalVisibilityObserver } from '../../utils/visibility';
import { SegmentValue } from './bal-segment.types';
export declare class Segment implements ComponentInterface, BalWindowResizeObserver, BalBreakpointObserver, BalFocusObserver, BalVisibilityObserver, BalAnimationObserver {
    el: HTMLStencilElement;
    log: LogInstance;
    createLogger(log: LogInstance): void;
    focusedValue?: SegmentValue;
    keyboardMode: boolean;
    isVertical: boolean;
    isMobile: boolean;
    maxWidth: number;
    ariaForm: BalAriaForm;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * If `true`, the segment is shown red.
     */
    invalid: boolean;
    protected invalidChanged(): void;
    /**
     * If `true`, in Angular reactive forms the control will not be set invalid
     */
    autoInvalidOff: boolean;
    /**
     * If `true`, the user cannot interact with the segment.
     */
    disabled: boolean;
    protected disabledChanged(): void;
    /**
     * If `true`, the segment items are presented vertical as a list.
     */
    vertical: boolean;
    /**
     * If `true`, and is vertical then the list height is limited and scrollable.
     */
    scrollable: boolean;
    /**
     * If `true`, the element uses the whole width
     */
    expanded: boolean;
    /**
     * the value of the segment.
     */
    value?: BalProps.BalSegmentValue;
    protected valueChanged(value: BalProps.BalSegmentValue | undefined): void;
    /**
     * Emitted when the toggle has focus.
     */
    balFocus: EventEmitter<BalEvents.BalSegmentFocusDetail>;
    /**
     * Emitted when the component was touched
     */
    balBlur: EventEmitter<BalEvents.BalSegmentBlurDetail>;
    /**
     * Emitted when the value property has changed and any dragging pointer has been released from `bal-segment`.
     *
     * This event will not emit when programmatically setting the `value` property.
     */
    balChange: EventEmitter<BalEvents.BalSegmentChangeDetail>;
    /**
     * Emitted when the value of the segment changes from user committed actions
     * or from externally assigning a value.
     *
     * @internal
     */
    balSelect: EventEmitter<BalEvents.BalSegmentChangeDetail>;
    /**
     * Emitted when the vertical style changes
     *
     * @internal
     */
    balVertical: EventEmitter<BalEvents.BalSegmentVerticalDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentDidLoad(): Promise<void>;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    hasFocus: boolean;
    focusInListener(ev: any): void;
    focusOutListener(ev: any): void;
    animationListener(): void;
    visibilityListener(): void;
    breakpointListener(breakpoints: BalBreakpoints): void;
    windowResizeListener(): void;
    listenOnKeyDownOutside(): void;
    listenOnKeyDown(ev: KeyboardEvent): void;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    /**
     * @internal
     */
    setAriaForm(ariaForm: BalAriaForm): Promise<void>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    private get allItems();
    private get checked();
    private getSegmentItem;
    /**
     * PRIVATE METHODS
     * ------------------------------------------------------
     */
    private emitValueChange;
    private emitVerticalChange;
    private defineWidth;
    /**
     * PRIVATE EVENT HANDLERS
     * ------------------------------------------------------
     */
    private onPointerDown;
    private onSlottedItemsChange;
    private onClick;
    private getIndicator;
    private checkButton;
    private setCheckedClasses;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
