import { GdsElement } from '../../gds-element';
import { GdsSegment } from './segment/segment.component';
declare const GdsSegmentedControl_base: (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").LayoutChildProps) & (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").SizeXProps) & (new (...args: any[]) => import("../../utils/mixins/declarative-layout-mixins").MarginProps) & typeof GdsElement;
/**
 * @element gds-segmented-control
 *
 * A segmented control is a group of 2-5 buttons that lets the user switch views or sort elements.
 *
 * @slot - Segments to display in the control
 *
 * @subcomponent gds-segment - Defines a segment in the segmented control
 *
 * @event change - Fires when the selected segment is changed
 */
export declare class GdsSegmentedControl<ValueT = any> extends GdsSegmentedControl_base {
    #private;
    static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
    /**
     * Size of the segmented control
     * @attr size
     */
    size: 'small' | 'medium';
    /**
     * The value of the currently selected segment. Setting this property will
     * select the segment with the matching value.
     * @attr value
     */
    get value(): ValueT | undefined;
    set value(val: ValueT | undefined);
    /**
     * Returns the segments in the control
     * @readonly
     */
    get segments(): GdsSegment<any>[];
    private _elSlot;
    private _elIndicator;
    private _elTrack;
    private _showPrevButton;
    private _showNextButton;
    intersectionObserver: IntersectionObserver | null;
    connectedCallback(): void;
    render(): any;
    private _recalculateMinWidth;
}
export {};
