import { DataTypes, IdDefaultType, LabelDefaultType } from "@etsoo/shared";
import React from "react";
import { ResponsiveStyleValue } from "./ResponsiveStyleValue";
import { GridSize } from "@mui/material/Grid";
import { SelectChangeEvent } from "@mui/material/Select";
/**
 * Hierarchy selector props
 */
export type HiSelectorProps<T extends object, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>> = {
    /**
     * Break points
     */
    breakPoints?: ResponsiveStyleValue<GridSize>;
    /**
     * Id field
     */
    idField?: D;
    /**
     * Error
     */
    error?: boolean;
    /**
     * The helper text content.
     */
    helperText?: React.ReactNode;
    /**
     * Name, also hidden input field name
     */
    name: string;
    /**
     * Label
     */
    label?: string;
    /**
     * Labels for each select
     */
    labels?: string[];
    /**
     * Label field
     */
    labelField?: L;
    /**
     * Load data callback
     */
    loadData: (parent?: T[D]) => PromiseLike<T[] | null | undefined>;
    /**
     * On value change event
     */
    onChange?: (value: unknown) => void;
    /**
     * On select change event
     */
    onSelectChange?: (e: SelectChangeEvent<unknown>) => void;
    /**
     * Item change callback
     */
    onItemChange?: (option: T | undefined, userAction: boolean) => void;
    /**
     * Required
     */
    required?: boolean;
    /**
     * Search mode
     */
    search?: boolean;
    /**
     * Values
     */
    values?: T[D][];
    /**
     * Variant
     */
    variant?: "outlined" | "standard" | "filled";
};
/**
 * Hierarchy selector
 * @param props Prop
 * @returns Component
 */
export declare function HiSelector<T extends object, D extends DataTypes.Keys<T> = IdDefaultType<T>, L extends DataTypes.Keys<T, string> = LabelDefaultType<T>>(props: HiSelectorProps<T, D, L>): import("react/jsx-runtime").JSX.Element;
