import { ReactNode } from 'react';
import { SegmentedControlButton } from './types';
import '../../helpers/base.less';
import './SegmentedControl.less';
type SingleProps<T> = {
    multiple?: false;
    /**
     * Selected value or an array of values (for multiple version).
     * Used in controlled version or as default value in uncontrolled version (with onChange property)
     * @since 0.0.68
     */
    selected?: T;
    /**
     * On change selection callback for uncontrolled mode.
     * @since 0.0.68
     */
    onChange?: (newSelection: T) => void;
};
type MultipleProps<T> = {
    multiple: true;
    selected?: T[];
    onChange?: (newSelection: T[]) => void;
};
type MultipleBaseProps<T> = MultipleProps<T> | SingleProps<T>;
export type SegmentedControlProps<T> = {
    /**
     * Label
     * @since 0.0.68
     */
    label?: ReactNode;
    /**
     * Where to place label
     * @since 0.0.68
     */
    labelPlacement?: 'top' | 'left';
    /**
     * Array of buttons to display (every array item must contain an unique "value" property)
     * @since 0.0.68
     */
    buttons: SegmentedControlButton<T>[];
    /**
     * Monospaced version of buttons (all button would have the same width).
     * Attention: using it with buttons dynamic update may cause to wrong behavior!
     * @since 0.0.68
     */
    monospaced?: boolean;
    /**
     * Should component displays as inline element?
     * @since 0.0.68
     */
    inline?: boolean;
    /**
     * Use buttons with transparent background (ghost buttons)
     * @since 2.3.0
     */
    ghost?: boolean;
    /**
     * @ignore
     */
    className?: string;
    /**
     * @ignore
     */
    baseClassName?: string;
} & MultipleBaseProps<T>;
export declare const SEGMENTED_CONTROL_BASE_CLASS_NAME: string;
/**
 * `Segmented Control` is a group of several [Buttons](#!/Button)
 * each of which functions as a mutually exclusive option.
 * @since 0.0.68
 */
declare const SegmentedControl: <T>({ label, labelPlacement, buttons, monospaced, multiple, selected: externalSelected, onChange, inline, ghost, className, baseClassName, ...props }: SegmentedControlProps<T>) => import("react/jsx-runtime").JSX.Element;
export default SegmentedControl;
