import { ControllerAdapter } from "@uplink-protocol/core"; import { ControllerMetadata } from "@uplink-protocol/core/dist/uplink/interfaces/metadata/controller-metadata.interface"; import { TimeOptions, TimeRange, TimeView } from "./interfaces"; import { TypedTimeController, TimeControllerBindings, TimeControllerMethods, TimeControllerEvents } from "./types"; /** * TimeControllerClass - A full featured time picker controller class. * Provides functionality for time picking and time display. * * This controller uses a service-oriented architecture where all the core * functionality is delegated to specialized services. */ export interface TimeControllerInterface extends TypedTimeController { _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; _timeFormat: string | null; _timeFormatOptions: Intl.DateTimeFormatOptions | null; _isRangeSelection: boolean; } export declare class TimeControllerClass implements TimeControllerInterface { bindings: TimeControllerBindings; methods: TimeControllerMethods; events: TimeControllerEvents; meta?: ControllerMetadata; __adapter?: ControllerAdapter; options?: TimeOptions; _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; _timeFormat: string | null; _timeFormatOptions: Intl.DateTimeFormatOptions | null; _isRangeSelection: boolean; private _timeService; private _timeFormattingService; private _timeSelectionService; private _timeViewStateService; private _timeEventManagerService; private _timeNavigationService; private _timeConstraintsService; private _timeGeneratorService; private _timeConfigurationService; private _timeValidationService; /** * Constructor - initializes the controller with optional configuration * @param options Time configuration options */ constructor(options?: TimeOptions); selectTime(time: Date): void; goToNextHour(): void; goToPreviousHour(): void; goToNextMinute(): void; goToPreviousMinute(): void; goToNextSecond(): void; goToPreviousSecond(): void; clearSelection(): void; setRangeSelectionMode(isRange: boolean): void; get selectedTimeRange(): { start: Date | null; end: Date | null; startTime: Date | null; endTime: Date | null; }; setHour(hour: number, period?: 'AM' | 'PM'): void; setMinute(minute: number): void; setSecond(second: number): void; setMillisecond(millisecond: number): void; goToCurrentTime(): void; togglePeriod(): void; setFocusedSegment(segment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null): void; clearFocusedSegment(): void; focusSegment(segment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period'): void; setMinTime(time: Date | null): void; setMaxTime(time: Date | null): void; setDisabledTimes(times: Date[]): void; addDisabledTime(time: Date): Date[]; removeDisabledTime(time: Date): Date[]; getDisabledTimes(): Date[]; setDisabledHours(hours: number[]): number[]; addDisabledHour(hour: number): number[]; removeDisabledHour(hour: number): number[]; getDisabledHours(): number[]; setDisabledMinutes(minutes: number[]): number[]; setDisabledSeconds(seconds: number[]): number[]; setLocale(locale: string): void; getLocale(): string; setTimeFormatOptions(options: Intl.DateTimeFormatOptions | null): void; getTimeFormatOptions(): Intl.DateTimeFormatOptions | null; getFormattedTime(): string | null; formatTime(time: Date, options?: Intl.DateTimeFormatOptions | string): string; setUse12HourFormat(use12Hour: boolean): void; setShowSeconds(show: boolean): void; setShowMilliseconds(show: boolean): void; setMinuteStep(step: number): void; setSecondStep(step: number): void; isCurrentTime(time: Date): boolean; generateTimeView(): TimeView; isTimeValid(time: Date): boolean; roundToStep(time: Date): Date; moveFocusToNextSegment(): void; moveFocusToPreviousSegment(): void; moveFocusToHours(): void; moveFocusToMinutes(): void; moveFocusToSeconds(): void; moveFocusToMilliseconds(): void; moveFocusToPeriod(): void; selectFocusedSegment(): void; /** * Generate time segments for binding * @returns Time segments object */ private generateTimeSegments; /** * Create generation options from current state * @returns Time generation options */ private createGenerationOptions; /** * Update all reactive bindings */ private updateAllBindings; } /** * TimeController - Factory function that creates and returns a new TimeControllerClass instance. * * @param options Optional time configuration options * @returns A TimeControllerClass instance */ export declare const TimeController: (options?: TimeOptions) => TimeControllerClass;