import * as React from 'react';
import { SlotComponentProps } from '@mui/base/utils';
import IconButton from '@mui/material/IconButton';
import SvgIcon from '@mui/material/SvgIcon';
import { SlideDirection } from './PickersSlideTransition';
import { DateComponentValidationProps } from '../internals/utils/validation/validateDate';
import { ExportedPickersArrowSwitcherProps, PickersArrowSwitcherSlotsComponent, PickersArrowSwitcherSlotsComponentsProps } from '../internals/components/PickersArrowSwitcher';
import { DateView } from '../models';
import { PickersCalendarHeaderClasses } from './pickersCalendarHeaderClasses';
import { UncapitalizeObjectKeys } from '../internals/utils/slots-migration';
export type ExportedCalendarHeaderProps<TDate> = Pick<PickersCalendarHeaderProps<TDate>, 'classes'>;
export interface PickersCalendarHeaderSlotsComponent extends PickersArrowSwitcherSlotsComponent {
    /**
     * Button displayed to switch between different calendar views.
     * @default IconButton
     */
    SwitchViewButton?: React.ElementType;
    /**
     * Icon displayed in the SwitchViewButton. Rotated by 180° when the open view is 'year'.
     * @default ArrowDropDown
     */
    SwitchViewIcon?: React.ElementType;
}
export interface PickersCalendarHeaderComponentsPropsOverrides {
}
type PickersCalendarHeaderOwnerState<TDate> = PickersCalendarHeaderProps<TDate>;
export interface PickersCalendarHeaderSlotsComponentsProps<TDate> extends PickersArrowSwitcherSlotsComponentsProps {
    switchViewButton?: SlotComponentProps<typeof IconButton, PickersCalendarHeaderComponentsPropsOverrides, PickersCalendarHeaderOwnerState<TDate>>;
    switchViewIcon?: SlotComponentProps<typeof SvgIcon, PickersCalendarHeaderComponentsPropsOverrides, undefined>;
}
export interface PickersCalendarHeaderProps<TDate> extends ExportedPickersArrowSwitcherProps, DateComponentValidationProps<TDate> {
    /**
     * Overridable component slots.
     * @default {}
     */
    slots?: UncapitalizeObjectKeys<PickersCalendarHeaderSlotsComponent>;
    /**
     * The props used for each component slot.
     * @default {}
     */
    slotProps?: PickersCalendarHeaderSlotsComponentsProps<TDate>;
    currentMonth: TDate;
    disabled?: boolean;
    views: readonly DateView[];
    onMonthChange: (date: TDate, slideDirection: SlideDirection) => void;
    view: DateView;
    reduceAnimations: boolean;
    onViewChange?: (view: DateView) => void;
    labelId?: string;
    classes?: Partial<PickersCalendarHeaderClasses>;
}
/**
 * @ignore - do not document.
 */
export declare function PickersCalendarHeader<TDate>(inProps: PickersCalendarHeaderProps<TDate>): React.JSX.Element | null;
export {};
