import { TypographyProps } from '@mui/material';
import { DateFieldProps as MuiDateFieldProps } from '@mui/x-date-pickers/DateField';
import { Dayjs } from 'dayjs';
import { DatePickerProps } from '@mui/x-date-pickers/DatePicker';
import { DateValidationError, PickerChangeHandlerContext } from '@mui/x-date-pickers';
import * as React from 'react';
type BaseDateFieldProps = {
    /**
     * Name and ID of the component. Must match a key from initialValues in MForm.
     * @required
     */
    name: string;
    /**
     * Label for the Date field. `name` will be used if none is provided
     */
    label?: string;
    /**
     * If true, an asterisk will be displayed next to the labels
     * Most browsers will automatically validate this, but it's recommended to also
     * have MForm also validate as well so that `Error` displays for consistency.
     * @default false
     */
    required?: boolean;
    /**
     * If `true`, the component becomes readonly.
     * @default false
     */
    readOnly?: boolean;
    /**
     * Format of the date as shown to the user (not used internally)
     */
    format?: string;
    /**
     * Customize error messages for each key (maxDate, minDate, invalidDate, etc.)
     */
    errorMessages?: {
        [key: string]: string;
    };
    /**
     * If true, field will render as a Date Picker (Date Field w/ calendar) rather than a Date Field (no calendar, just input w/ mask)
     */
    isDatePicker?: boolean;
    /**
     * Margin for the FormControl
     */
    margin?: 'dense' | 'none' | 'normal';
    /**
     * If true, the prepackaged dynamic input label that comes with Material UI's input components
     * will be replaced with a static typography label above the input.
     * @default false
     */
    staticLabel?: boolean;
    /**
     * Props from MUI-Bueno's Typography component.
     * Used to customize the label when the static label option is selected or the field is readOnly.
     */
    staticLabelProps?: TypographyProps;
    onChange?: (val: string | undefined, context: PickerChangeHandlerContext<DateValidationError>) => void;
};
interface DateFieldOnlyProps extends BaseDateFieldProps, Omit<DatePickerProps<Dayjs>, 'label' | 'name' | 'onChange'> {
    isDatePicker?: false;
}
interface DatePickerOnlyProps extends BaseDateFieldProps, Omit<MuiDateFieldProps<Dayjs>, 'label' | 'name' | 'onChange'> {
    isDatePicker: true;
}
export type DateFieldProps = DateFieldOnlyProps | DatePickerOnlyProps;
/**
 * Date Field with optional Picker
 *
 * MForm will use ISO dates (in UTC) internally as the value.
 */
export declare const DateField: React.FC<DateFieldProps>;
export {};
