/*!
 * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.
 * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
 *
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * See the License for the specific language governing permissions and limitations under the License.
 */
import { SelectProps as MuiSelectProps } from "@mui/material";
import type { HtmlProps } from "./HtmlProps.js";
import { FieldComponentProps } from "./FieldComponentProps.js";
import { FocusHandle } from "./inputUtils.js";
export type SelectOption = {
    language?: string;
    text: string;
    type?: "heading" | "option";
    value?: string;
};
export type SelectValueType<HasMultipleChoices> = HasMultipleChoices extends true ? string[] : string;
export type SelectProps<Value extends SelectValueType<HasMultipleChoices>, HasMultipleChoices extends boolean> = {
    /**
     * The default value. Use when the component is not controlled.
     */
    defaultValue?: MuiSelectProps<Value>["defaultValue"];
    /**
     * If `true`, the Select allows multiple selections
     */
    hasMultipleChoices?: HasMultipleChoices;
    /**
     * The ref forwarded to the Select
     */
    inputRef?: React.RefObject<FocusHandle>;
    /**
     * @deprecated Use `hasMultipleChoices` instead.
     */
    /** **Deprecated:** use `hasMultipleChoices` */
    isMultiSelect?: HasMultipleChoices;
    /**
     * The label text for the Select
     */
    label: string;
    /**
     * Callback fired when the Select loses focus
     */
    onBlur?: MuiSelectProps<Value>["onBlur"];
    /**
     * Callback fired when the value of the Select changes
     */
    onChange?: MuiSelectProps<Value>["onChange"];
    /**
     * Callback fired when the Select gains focus
     */
    onFocus?: MuiSelectProps<Value>["onFocus"];
    /**
     * The options for the Select
     */
    options: (string | SelectOption)[];
    /**
     * The value or values selected in the Select
     */
    value?: Value;
} & Pick<FieldComponentProps, "errorMessage" | "errorMessageList" | "hint" | "HintLinkComponent" | "id" | "isDisabled" | "isFullWidth" | "isOptional" | "isReadOnly" | "name"> & Pick<HtmlProps, "ariaDescribedBy" | "testId" | "translate">;
declare const MemoizedSelect: import("react").MemoExoticComponent<(<Value extends SelectValueType<HasMultipleChoices>, HasMultipleChoices extends boolean>({ ariaDescribedBy, defaultValue, errorMessage, errorMessageList, hasMultipleChoices: hasMultipleChoicesProp, hint, HintLinkComponent, id: idOverride, inputRef, isDisabled, isFullWidth, isMultiSelect, isOptional, isReadOnly, label, name: nameOverride, onBlur, onChange: onChangeProp, onFocus, options, testId, translate, value, }: SelectProps<Value, HasMultipleChoices>) => import("@emotion/react/jsx-runtime").JSX.Element)>;
export { MemoizedSelect as Select };
//# sourceMappingURL=Select.d.ts.map