import React, { HTMLAttributes } from 'react';
import { FormStatusProps } from '../Form/FormStatus/FormStatus';
export declare type SelectOption = {
    text: string;
    value: string;
    expansion?: React.ReactNode;
};
export declare type SelectProps = {
    id: string;
    label: string | React.ReactNode;
    hint?: string;
    name?: string;
    defaultValue?: string;
    options: SelectOption[];
    optional?: boolean;
    unselectedText?: string;
    disabled?: boolean;
    onChange: React.ChangeEventHandler<HTMLSelectElement>;
    status?: FormStatusProps;
} & Omit<HTMLAttributes<HTMLSelectElement>, 'defaultValue' | 'onChange'>;
/**
 * Component that wraps a native select element.
 * It also provides for expansion support by showing the expansion below the entire
 * select element.
 */
export declare const Select: React.FC<SelectProps>;
/**
 * Props for an other option text input wrapped component of type TWrapped,
 * including props for TWrapped
 */
declare type OtherOptionTextInputWrapperProps<TWrapped> = {
    legend: string;
    showLegend?: boolean;
    optional?: boolean;
    otherInputLabel: string;
    otherInputOnChange: React.ChangeEventHandler;
    otherOptionDisplay: string;
    horizontal?: boolean;
    labelForSelect: string | React.ReactNode;
} & Omit<TWrapped, 'label' | 'legend'>;
/**
 * Wraps a Select element in a FieldSet and provides a text input when the user
 * selects "Other"
 */
export declare const SelectWithOther: React.FC<OtherOptionTextInputWrapperProps<SelectProps>>;
export {};
