export declare type TimeStringFormat = 'hh:mm' | 'hh:m' | 'h:m' | 'h:mm' | '12-hour' | '24-hour';
/**
 * CalendarTime represents hours/minutes in 24-hour format and centralizes parsing/formatting logic.
 */
export declare class CalendarTime {
  private readonly _hours;
  private readonly _minutes;
  constructor(hours: number, minutes: number);
  /**
   * Parse a raw time string into a CalendarTime instance.
   *
   * @param {string} rawTime - Source time value such as "9:00" or "9am".
   * @returns {CalendarTime} Parsed time.
   */
  static fromString(rawTime: string): CalendarTime;
  /**
   * Build a CalendarTime from a Date instance while preserving hours/minutes.
   *
   * @param {Date} date - The source date.
   * @returns {CalendarTime} Time representation extracted from the date.
   */
  static fromDate(date: Date): CalendarTime;
  /**
   * Calculate the duration in the requested precision between two CalendarTime values, accounting for overnight spans.
   *
   * @param {CalendarTime} start - Start time of the interval.
   * @param {CalendarTime} end - End time of the interval.
   * @param {'minutes' | 'hours'} precision - Desired unit of measure for the result (defaults to minutes).
   * @returns {number} Duration expressed in the requested precision.
   */
  static calculateDuration(start: CalendarTime, end: CalendarTime, precision?: 'minutes' | 'hours'): number;
  /**
   * Normalize various time inputs (e.g. 9am, 9:30 PM) to a 24-hour HH:mm string.
   *
   * @param {string} timeString - User supplied time value.
   * @returns {string} 24-hour formatted string.
   */
  private static convertTimeTo24Hour;
  /**
   * Hour component in 24-hour clock.
   *
   * @returns {number} Hours between 0-23.
   */
  get hours(): number;
  /**
   * Minute component.
   *
   * @returns {number} Minutes between 0-59.
   */
  get minutes(): number;
  /**
   * Total minutes elapsed since midnight for this time value.
   *
   * @returns {number} Minutes from 00:00.
   */
  get totalMinutes(): number;
  /**
   * Format the time into a string using a simple formatter.
   *
   * @param {TimeStringFormat} format - time string Format. Defaults to 'hh:mm'.
   * @returns {string} Formatted time string.
   */
  toString(format?: TimeStringFormat): string;
}
