import { MuiPickersAdapter, PickerValidDate } from '@mui/x-date-pickers/models';
import { PickerRangeValue } from '@mui/x-date-pickers/internals';
import { RangePosition } from "../../models/index.js";
interface CalculateRangeChangeOptions {
  adapter: MuiPickersAdapter;
  range: PickerRangeValue;
  newDate: PickerValidDate | null;
  rangePosition: RangePosition;
  /**
   * Should allow flipping range `start` and `end` dates if the `newDate` would result in a new range creation.
   *
   * It is used to allow dragging range `start` date past `end` date essentially becoming the new `end` date and vice versa.
   */
  allowRangeFlip?: boolean;
  shouldMergeDateAndTime?: boolean;
  referenceDate?: PickerValidDate | [PickerValidDate, PickerValidDate];
}
interface CalculateRangeChangeResponse {
  nextSelection: RangePosition;
  newRange: PickerRangeValue;
}
export declare function resolveReferenceDate(referenceDate: PickerValidDate | [PickerValidDate, PickerValidDate] | undefined, rangePosition: RangePosition): PickerValidDate | undefined;
export declare function calculateRangeChange({
  adapter,
  range,
  newDate: selectedDate,
  rangePosition,
  allowRangeFlip,
  shouldMergeDateAndTime,
  referenceDate
}: CalculateRangeChangeOptions): CalculateRangeChangeResponse;
export declare function calculateRangePreview(options: CalculateRangeChangeOptions): PickerRangeValue;
export {};