import { ISlottable } from '../../../Behaviors/Slottable';
import { FlowDirection } from '../../../Types/FlowDirection';
import { Variant } from '../../../Types/Variant';
import { CustomElement } from '../../Abstracts/CustomElement';
import { ISegmentElementProps } from './ISegmentElementProps';
declare const SegmentElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Segment - A group of related buttons arranged in a horizontal row, often used for toggling between different views.
 *
 * @element mosaik-segment
 *
 * @description
 * Segments display a group of related buttons, also known as segmented controls, in a horizontal row. They are designed
 * for toggling between different views or options within the content area. When one segment is selected, others are
 * automatically deselected, similar to radio buttons.
 *
 * Segments are suitable for scenarios where switching between different views within the content area is needed without
 * navigating to a new page. They are commonly used inside toolbars or as part of the main content interface.
 *
 * @category Selectors
 *
 * @keyhandle RightArrow - Selects the next segment.
 * @keyhandle LeftArrow - Selects the previous segment.
 * @keyhandle Home - Selects the first segment.
 * @keyhandle End - Selects the last segment.
 * @keyhandle Enter - Selects the current segment.
 *
 * @example
 * ```html
 * <mosaik-segment>
 *   <mosaik-segment-item>Option 1</mosaik-segment-item>
 *   <mosaik-segment-item>Option 2</mosaik-segment-item>
 *   <mosaik-segment-item>Option 3</mosaik-segment-item>
 * </mosaik-segment>
 * ```
 *
 * @public
 */
export declare class SegmentElement extends SegmentElement_base implements ISegmentElementProps, ISlottable {
    private _indicatorElement;
    private readonly _resizeController;
    private readonly _keyboardController;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    onSlotChanges(slotName?: string): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @protected
     */
    protected onClick(event: Event): void;
    /**
     * @protected
     */
    protected onChecked(event: CustomEvent): void;
    protected onResize(event: CustomEvent): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChange(prev?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onVariantPropertyChange(prev?: Variant, next?: Variant): void;
    /**
     * @protected
     */
    protected onDirPropertyChange(prev?: FlowDirection, next?: FlowDirection): void;
    /**
     * @private
     */
    private alignIndicatorTo;
    /**
     * @private
     */
    private getItems;
    /**
     * @private
     */
    private getEnabledItems;
    /**
     * @private
     */
    private getCurrent;
    /**
     * @private
     */
    private getItem;
}
/**
 * @public
 */
export declare namespace SegmentElement {
    type Props = ISegmentElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-segment': SegmentElement;
    }
}
export {};
//# sourceMappingURL=SegmentElement.d.ts.map