/**
 * TimeSegment - Interface for time segment objects (hours, minutes, seconds)
 */
export interface TimeSegment {
    value: number;
    display: string;
    isSelected: boolean;
    isDisabled: boolean;
    isFocused?: boolean;
}
/**
 * TimeOptions - Interface for time picker configuration options
 */
export interface TimeOptions {
    /** Minimum selectable time */
    minTime?: Date;
    /** Maximum selectable time */
    maxTime?: Date;
    /** List of disabled times */
    disabledTimes?: Date[];
    /** List of disabled hours (0-23) */
    disabledHours?: number[];
    /** List of disabled minutes (0-59) */
    disabledMinutes?: number[];
    /** List of disabled seconds (0-59) */
    disabledSeconds?: number[];
    /** Start with a specific time selected */
    initialSelectedTime?: Date;
    /** Time format for output (defaults to HH:mm:ss) */
    timeFormat?: string;
    /** Locale for internationalization (defaults to 'en-US') */
    locale?: string;
    /** Time format options for Intl.DateTimeFormat */
    timeFormatOptions?: Intl.DateTimeFormatOptions;
    /** Use 12-hour format instead of 24-hour */
    use12HourFormat?: boolean;
    /** Show seconds in time picker */
    showSeconds?: boolean;
    /** Show milliseconds in time picker */
    showMilliseconds?: boolean;
    /** Step interval for minutes (1, 5, 10, 15, 30) */
    minuteStep?: number;
    /** Step interval for seconds (1, 5, 10, 15, 30) */
    secondStep?: number;
    /** Enable time range selection mode */
    isRangeSelection?: boolean;
}
/**
 * TimeRange - Interface for time range selection
 */
export interface TimeRange {
    startTime: Date | null;
    endTime: Date | null;
}
/**
 * TimePeriod - Interface for AM/PM periods
 */
export interface TimePeriod {
    value: 'AM' | 'PM';
    display: string;
    isSelected: boolean;
    isDisabled: boolean;
}
/**
 * TimeView - Interface for complete time view
 */
export interface TimeView {
    hours: TimeSegment[];
    minutes: TimeSegment[];
    seconds: TimeSegment[];
    milliseconds?: TimeSegment[];
    period: TimePeriod | null;
    use12Hour: boolean;
}
/**
 * TimeState - Interface for time picker state
 */
export interface TimeState {
    selectedTime: Date | null;
    selectedTimeRange: TimeRange;
    focusedSegment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null;
    use12HourFormat: boolean;
    showSeconds: boolean;
    showMilliseconds: boolean;
    minuteStep: number;
    secondStep: number;
    locale: string;
}
/**
 * TimeGenerationOptions - Options for generating time segments
 */
export interface TimeGenerationOptions {
    selectedTime: Date | null;
    selectedTimeRange: TimeRange;
    focusedSegment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null;
    minTime: Date | null;
    maxTime: Date | null;
    disabledTimes: Date[];
    disabledHours: number[];
    disabledMinutes: number[];
    disabledSeconds: number[];
    use12HourFormat: boolean;
    showSeconds: boolean;
    showMilliseconds: boolean;
    minuteStep: number;
    secondStep: number;
    locale: string;
    isTimeDisabledFn?: (time: Date) => boolean;
}
