import React from "react";
import { DataTypes, IdDefaultType, LabelDefaultType, ListType } from "@etsoo/shared";
import { SelectProps, SelectVariants } from "@mui/material/Select";
export type SelectExMethods = {
    /**
     * Set open state
     * @param isOpen Open state
     */
    setOpen: (isOpen: boolean) => void;
};
/**
 * Extended select component props
 */
export type SelectExProps<T extends object, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>> = Omit<SelectProps, "labelId" | "input" | "native" | "variant"> & {
    /**
     * Auto add blank item
     */
    autoAddBlankItem?: boolean;
    /**
     * The helper text content.
     */
    helperText?: React.ReactNode;
    /**
     * Id field
     */
    idField?: D;
    /**
     * Set 'data-reset'
     */
    inputReset?: boolean;
    /**
     * Item icon renderer
     */
    itemIconRenderer?: (id: T[D]) => React.ReactNode;
    /**
     * Item style
     */
    itemStyle?: (option: T) => React.CSSProperties;
    /**
     * Label field
     */
    labelField?: L | ((option: T) => string);
    /**
     * Load data callback
     */
    loadData?: () => PromiseLike<T[] | null | undefined>;
    /**
     * Methods
     */
    mRef?: React.Ref<SelectExMethods>;
    /**
     * Item change callback
     */
    onItemChange?: (option: T | undefined, userAction: boolean) => void;
    /**
     * Item click handler
     */
    onItemClick?: (event: React.MouseEvent, option: T) => void;
    /**
     * On load data handler
     */
    onLoadData?: (options: T[]) => void;
    /**
     * Array of options.
     */
    options?: ReadonlyArray<T>;
    /**
     * Supports refresh label or component
     */
    refresh?: string | React.ReactNode;
    /**
     * Is search case?
     */
    search?: boolean;
    /**
     * Variant
     */
    variant?: SelectVariants;
};
/**
 * Extended select component
 * @param props Props
 * @returns Component
 */
export declare function SelectEx<T extends object = ListType, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>>(props: SelectExProps<T, D, L>): import("react/jsx-runtime").JSX.Element;
