import { DataTypes, IdDefaultType, LabelDefaultType, ListType } from "@etsoo/shared";
import { FormControlProps } from "@mui/material/FormControl";
import React from "react";
/**
 * OptionGroup methods ref
 */
export interface OptionGroupRef {
    /**
     * Disable specific items with their ids
     * @param ids Ids
     */
    disable(ids: unknown[]): void;
}
/**
 * OptionGroup props
 */
export type OptionGroupProps<T extends object, D extends DataTypes.Keys<T>, L extends DataTypes.Keys<T, string>> = Omit<FormControlProps, "defaultValue"> & {
    /**
     * Default value
     */
    defaultValue?: T[D] | T[D][];
    /**
     * Get option label function
     */
    getOptionLabel?: (option: T) => string;
    /**
     * Id field
     */
    idField?: D;
    /**
     * Label
     */
    label?: string;
    /**
     * Label field
     */
    labelField?: L;
    /**
     * Methods
     */
    mRef?: React.Ref<OptionGroupRef>;
    /**
     * Multiple choose item
     */
    multiple?: boolean;
    /**
     * Field name
     */
    name: string;
    /**
     * On value change handler
     */
    onValueChange?: (value: T[D] | T[D][] | undefined) => void;
    /**
     * Array of options.
     */
    options: ReadonlyArray<T>;
    /**
     * Is the field read only?
     */
    readOnly?: boolean;
    /**
     * Display group of elements in a compact row
     */
    row?: boolean;
    /**
     * Item size
     */
    itemSize?: "small" | "medium";
    /**
     * Helper text
     */
    helperText?: React.ReactNode;
};
/**
 * OptionGroup
 * @param props Props
 * @returns Component
 */
export declare function OptionGroup<T extends object = ListType, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>>(props: OptionGroupProps<T, D, L>): import("react/jsx-runtime").JSX.Element;
