import * as React from 'react';
import { FieldRoot } from "../root/FieldRoot.js";
import { BaseUIComponentProps } from "../../utils/types.js";
import { REASONS } from "../../utils/reasons.js";
import type { BaseUIChangeEventDetails } from "../../utils/createBaseUIEventDetails.js";
/**
* The form control to label and validate.
* Renders an `` element.
*
* You can omit this part and use any Base UI input component instead. For example,
* [Input](https://base-ui.com/react/components/input), [Checkbox](https://base-ui.com/react/components/checkbox),
* or [Select](https://base-ui.com/react/components/select), among others, will work with Field out of the box.
*
* Documentation: [Base UI Field](https://base-ui.com/react/components/field)
*/
export declare const FieldControl: React.ForwardRefExoticComponent>;
export type FieldControlState = FieldRoot.State;
export interface FieldControlProps extends BaseUIComponentProps<'input', FieldControl.State> {
/**
* Callback fired when the `value` changes. Use when controlled.
*/
onValueChange?: (value: string, eventDetails: FieldControl.ChangeEventDetails) => void;
defaultValue?: React.ComponentProps<'input'>['defaultValue'];
}
export type FieldControlChangeEventReason = typeof REASONS.none;
export type FieldControlChangeEventDetails = BaseUIChangeEventDetails;
export declare namespace FieldControl {
type State = FieldControlState;
type Props = FieldControlProps;
type ChangeEventReason = FieldControlChangeEventReason;
type ChangeEventDetails = FieldControlChangeEventDetails;
}