import React from "react";
import * as PropTypes from "prop-types";
import { SelectOption, SelectOptionValue } from "./select_and_select_buttons_helpers";
import { MaxWidthProps, MinWidthProps, WidthProps, FlexItemSetProps, PositionSetProps, MarginProps } from "./system";
import { TooltipAnchorProps } from "./types/tooltip_anchor_props";
import { ControlSizeProp } from "./control_sizes";
/**
 * Style props shared between the {@link SelectButtons} and {@link SelectButtonsSynced} components. Accepts:
 * * {@link FlexItemSetProps}
 * * {@link MarginProps}
 * * {@link MaxWidthProps}
 * * {@link MinWidthProps}
 * * {@link PositionSetProps}
 * * {@link WidthProps}
 *
 * @noInheritDoc
 */
export interface SelectButtonsStyleProps extends MaxWidthProps, MinWidthProps, WidthProps, FlexItemSetProps, PositionSetProps, MarginProps {
}
export declare const selectButtonsStylePropTypes: {
    [x: string]: PropTypes.Validator<any>;
};
/**
 * Props shared between the {@link SelectButtons} and {@link SelectButtonsSynced} components.
 *
 * @noInheritDoc
 */
export interface SharedSelectButtonsProps extends SelectButtonsStyleProps, TooltipAnchorProps {
    /** The list of select options. */
    options: Array<SelectOption>;
    /** A function to be called when the selected option changes. */
    onChange?: (value: SelectOptionValue) => void;
    /** If set to `true`, the user cannot interact with the select. */
    disabled?: boolean;
    /** Additional class names to apply to the select. */
    className?: string;
    /** The size of the select buttons. */
    size?: ControlSizeProp;
    /** Additional styles to apply to the select. */
    style?: React.CSSProperties;
    /** The `aria-label` attribute. Use this if the select is not referenced by a label element. */
    ["aria-label"]?: string;
    /** A space separated list of label element IDs. */
    ["aria-labelledby"]?: string;
    /** A space separated list of description element IDs. */
    ["aria-describedby"]?: string;
}
export declare const sharedSelectButtonsPropTypes: {
    onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
    onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
    onClick: PropTypes.Requireable<(...args: any[]) => any>;
    hasOnClick: PropTypes.Requireable<boolean>;
    options: PropTypes.Validator<PropTypes.InferProps<{
        value: PropTypes.Validator<string | number | boolean>;
        label: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        disabled: PropTypes.Requireable<boolean>;
    }>[]>;
    onChange: PropTypes.Requireable<(...args: any[]) => any>;
    disabled: PropTypes.Requireable<boolean>;
    size: PropTypes.Validator<any>;
    className: PropTypes.Requireable<string>;
    style: PropTypes.Requireable<object>;
    "aria-labelledby": PropTypes.Requireable<string>;
    "aria-describedby": PropTypes.Requireable<string>;
};
/**
 * Props for the {@link SelectButtons} component. Also accepts:
 * * {@link SelectButtonsStyleProps}
 *
 * @docsPath UI/components/SelectButtons
 */
interface SelectButtonsProps extends SharedSelectButtonsProps {
    /** The value of the selected option. */
    value: SelectOptionValue;
}
declare const ForwardedRefSelectButtons: React.ForwardRefExoticComponent<SelectButtonsProps & React.RefAttributes<HTMLDivElement>>;
export default ForwardedRefSelectButtons;
