import { ReactNode } from "react";
import { Props as SelectProps } from "react-select";
export declare enum SelectSizes {
    MD = "md",
    LG = "lg"
}
export type SelectSize = `${SelectSizes}`;
export type Option = {
    label: ReactNode;
    value: any;
    isFixed?: boolean;
};
export interface Props extends Omit<SelectProps, "options" | "value" | "isDisabled"> {
    /**
     * Accepts id for the select
     */
    id?: string;
    /**
     * Overwrite the style by passing space separated class names
     */
    className?: string;
    /**
     * Sets the Label for the select field
     */
    label?: ReactNode;
    /**
     * Size of the Selct field.
     * @default md
     */
    size?: SelectSize;
    /**
     * Selction option for the select field
     */
    options?: readonly (Option | {
        label: ReactNode;
        options: Option[];
    })[];
    /**
     * Set the selected values of the field
     */
    value?: {
        label: ReactNode | string;
        value: string;
        isFixed?: boolean;
    } | readonly {
        label: ReactNode | string;
        value: string;
        isFixed?: boolean;
    }[] | null;
    /**
     *  Additional information or guidance displayed below the text field.
     */
    helperText?: string;
    /**
     *  Error state for showing error message.
     */
    error?: boolean;
    /**
     *  Disable.
     */
    disabled?: boolean;
    /**
     * Enables users to create new options along with choosing existing options.
     */
    creatable?: boolean;
    /**
     * Enables multi-select
     */
    multiSelect?: boolean;
    touched?: boolean;
}
export declare function Select({ id, className, label, size, options, value, helperText, error, multiSelect, creatable, disabled, ...restProps }: Props): JSX.Element;
