import * as React from "react";
import { ComponentPropsWithRef, ComponentPropsWithoutRef, Context } from "react";
import { ActionProps, ControlElementsProp, DragHandleProps, FullField, NotToggleProps, QueryBuilderContextProvider, ShiftActionsProps, Translations, ValueEditorProps, VersatileSelectorProps } from "react-querybuilder";
import CloseIcon from "@mui/icons-material/Close";
import ContentCopyIcon from "@mui/icons-material/ContentCopy";
import DragIndicator from "@mui/icons-material/DragIndicator";
import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
import LockIcon from "@mui/icons-material/Lock";
import LockOpenIcon from "@mui/icons-material/LockOpen";
import Button from "@mui/material/Button";
import Checkbox from "@mui/material/Checkbox";
import FormControl from "@mui/material/FormControl";
import FormControlLabel from "@mui/material/FormControlLabel";
import InputLabel from "@mui/material/InputLabel";
import ListSubheader from "@mui/material/ListSubheader";
import MenuItem from "@mui/material/MenuItem";
import Radio from "@mui/material/Radio";
import RadioGroup from "@mui/material/RadioGroup";
import Select from "@mui/material/Select";
import Switch from "@mui/material/Switch";
import TextareaAutosize from "@mui/material/TextareaAutosize";
import TextField from "@mui/material/TextField";
import { Button as Button$1, Select as Select$1, Switch as Switch$1 } from "@mui/material";

//#region src/translations.d.ts
declare const materialTranslations: Pick<Translations, "removeGroup" | "removeRule" | "cloneRule" | "cloneRuleGroup" | "lockGroup" | "lockRule" | "lockGroupDisabled" | "lockRuleDisabled" | "shiftActionDown" | "shiftActionUp">;
//#endregion
//#region src/types.d.ts
/**
* @group Props
*/
interface RQBMaterialComponents {
  Button: typeof Button;
  Checkbox: typeof Checkbox;
  CloseIcon: typeof CloseIcon;
  ContentCopyIcon: typeof ContentCopyIcon;
  DragIndicator: typeof DragIndicator;
  FormControl: typeof FormControl;
  FormControlLabel: typeof FormControlLabel;
  InputLabel: typeof InputLabel;
  KeyboardArrowDownIcon: typeof KeyboardArrowDownIcon;
  KeyboardArrowUpIcon: typeof KeyboardArrowUpIcon;
  ListSubheader: typeof ListSubheader;
  LockIcon: typeof LockIcon;
  LockOpenIcon: typeof LockOpenIcon;
  MenuItem: typeof MenuItem;
  Radio: typeof Radio;
  RadioGroup: typeof RadioGroup;
  Select: typeof Select;
  Switch: typeof Switch;
  TextareaAutosize: typeof TextareaAutosize;
  TextField: typeof TextField;
}
/**
* @group Props
*/
type MuiComponentName = keyof RQBMaterialComponents;
interface MuiAugmentation {
  muiComponents?: RQBMaterialComponents;
  showInputLabels?: boolean;
}
//#endregion
//#region src/MaterialActionElement.d.ts
/**
* @group Props
*/
interface MaterialActionProps extends ActionProps, ComponentPropsWithoutRef<typeof Button$1>, MuiAugmentation {}
/**
* @group Components
*/
declare const MaterialActionElement: ({
  className,
  handleOnClick,
  label,
  title,
  disabled,
  disabledTranslation,
  testID,
  path,
  level,
  rules,
  context,
  validation,
  ruleOrGroup,
  schema,
  muiComponents: muiComponentsProp,
  ...otherProps
}: MaterialActionProps) => React.JSX.Element;
//#endregion
//#region src/MaterialDragHandle.d.ts
/**
* @group Props
*/
interface MaterialDragHandleProps extends DragHandleProps, Omit<ComponentPropsWithRef<typeof DragIndicator>, "path">, MuiAugmentation {}
/**
* @group Components
*/
declare const MaterialDragHandle: React.ForwardRefExoticComponent<Omit<MaterialDragHandleProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
//#endregion
//#region src/MaterialNotToggle.d.ts
/**
* @group Props
*/
type MaterialNotToggleProps = NotToggleProps & ComponentPropsWithoutRef<typeof Switch$1> & MuiAugmentation;
/**
* @group Components
*/
declare const MaterialNotToggle: ({
  className,
  handleOnChange,
  label,
  checked,
  title,
  disabled,
  level,
  path,
  context,
  validation,
  testID,
  schema,
  ruleGroup,
  muiComponents: muiComponentsProp,
  ...otherProps
}: MaterialNotToggleProps) => React.JSX.Element;
//#endregion
//#region src/MaterialShiftActions.d.ts
/**
* @group Props
*/
interface MaterialShiftActionsProps extends ShiftActionsProps, React.ComponentPropsWithoutRef<typeof Button$1>, MuiAugmentation {}
/**
* @group Components
*/
declare const MaterialShiftActions: ({
  path,
  shiftUp,
  shiftDown,
  shiftUpDisabled,
  shiftDownDisabled,
  disabled,
  className,
  labels,
  titles,
  testID,
  muiComponents: muiComponentsProp,
  ...otherProps
}: MaterialShiftActionsProps) => React.JSX.Element;
//#endregion
//#region src/MaterialValueEditor.d.ts
/**
* @group Props
*/
interface MaterialValueEditorProps extends ValueEditorProps, MuiAugmentation {
  extraProps?: Record<string, unknown>;
}
/**
* @group Components
*/
declare const MaterialValueEditor: (props: MaterialValueEditorProps) => React.JSX.Element | null;
//#endregion
//#region src/MaterialValueSelector.d.ts
/**
* @group Props
*/
type MaterialValueSelectorProps = VersatileSelectorProps & ComponentPropsWithoutRef<typeof Select$1> & MuiAugmentation;
/**
* @group Components
*/
declare const MaterialValueSelector: ({
  className,
  handleOnChange,
  options,
  value,
  disabled,
  title,
  multiple,
  listsAsArrays,
  testID,
  rule,
  ruleGroup,
  rules,
  level,
  path,
  context,
  validation,
  operator,
  field,
  fieldData,
  schema,
  muiComponents: muiComponentsProp,
  showInputLabels: silProp,
  defaultValue: _defaultValue,
  ...otherProps
}: MaterialValueSelectorProps) => React.JSX.Element;
//#endregion
//#region src/RQBMaterialContext.d.ts
interface RQBMaterialContextValue extends RQBMaterialComponents {
  showInputLabels?: boolean;
}
/**
* @group Components
*/
declare const RQBMaterialContext: Context<RQBMaterialContextValue | null>;
//#endregion
//#region src/useMuiComponents.d.ts
declare const defaultMuiComponents: RQBMaterialComponents;
/**
* @group Hooks
*/
declare const useMuiComponents: (preloadedComponents?: RQBMaterialComponents) => RQBMaterialComponents;
//#endregion
//#region src/index.d.ts
/**
* @group Props
*/
declare const materialControlElements: ControlElementsProp<FullField, string>;
/**
* @group Components
*/
declare const QueryBuilderMaterial: QueryBuilderContextProvider;
//#endregion
export { MaterialActionElement, MaterialActionProps, MaterialDragHandle, MaterialDragHandleProps, MaterialNotToggle, MaterialNotToggleProps, MaterialShiftActions, MaterialShiftActionsProps, MaterialValueEditor, MaterialValueEditorProps, MaterialValueSelector, MaterialValueSelectorProps, MuiAugmentation, MuiComponentName, QueryBuilderMaterial, RQBMaterialComponents, RQBMaterialContext, RQBMaterialContextValue, defaultMuiComponents, materialControlElements, materialTranslations, useMuiComponents };
//# sourceMappingURL=react-querybuilder_material.legacy-esm.d.ts.map