import { SelectProps as MuiSelectProps, TypographyProps } from '@mui/material';
import * as React from 'react';
/**
 * *Interface used exclusively for creating the select menu within Select*
 *
 * SelectOption is an interface that defines the label and value of a select option.
 * An array of this interface (`SelectOption<T>[]`) is used in the `<Select>` component as the `options` prop to
 * define and create the select menu.
 */
export interface SelectOption<T> {
    /**
     * The ID for the option. This is the value that is returned to the form.
     * @required
     */
    value: T;
    /**
     * The label that is displayed in the select menu.
     * @required
     */
    label: string;
    /**
     * If true, the option will be disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * If `true`, the component becomes readonly.
     * @default false
     */
    readOnly?: boolean;
    /**
     * Margin for the FormControl
     */
    margin?: 'dense' | 'none' | 'normal';
    /**
     * If true, an asterisk will be displayed next to the label
     * Most browsers will automatically validate this, but it's recommended to also
     * have Formik also validate as well so that `Error` displays for consistency.
     * @default false
     */
    required?: boolean;
}
type BaseSelectProps<T> = {
    /**
     * Must match the initialValue name in BForm.
     * @required
     */
    name: string;
    /**
     * Label for the select component
     */
    label?: string;
    /**
     * A list of options for the select component.
     */
    options?: SelectOption<T>[];
    /**
     * Displays an icon or text next to selected options
     * @default undefined
     */
    selectedOptionIcon?: React.ReactNode | string;
    /**
     * Specifies the visual input style.
     * @default 'standard'
     */
    variant?: 'filled' | 'outlined' | 'standard';
    /**
     * If true, the prepackaged dynamic input label that comes with Material UI's input components
     * will be replaced with a static typography label above the input.
     * @default false
     */
    staticLabel?: boolean;
    /**
     * Props from MUI-Bueno's Typography component.
     * Used to customize the label when the static label option is selected.
     */
    staticLabelProps?: TypographyProps;
    /**
     * If true, the component will be read only.
     * @default false
     */
    readOnly?: boolean;
};
export type SelectProps<T> = BaseSelectProps<T> & Omit<MuiSelectProps, 'native' | 'onChange' | 'readOnly' | 'fullWidth'>;
/**
 * *Must be a child of BForm*
 *
 * `Select` provides a Material-UI Select Component.
 */
export declare const Select: <T = string>(props: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
export {};
