/**
 * Time Picker Component
 * A customizable time picker that supports 12/24 hour formats, seconds, and multiple locales.
 *
 * Features:
 * - 12/24 hour format
 * - Optional seconds
 * - Localization support
 * - String or Date value types
 * - Min/Max time validation
 * - Custom styling
 */
import { ElementRef, OnInit, EventEmitter, OnDestroy, ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormBuilder, FormGroup } from '@angular/forms';
import { CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
import { Lang_Locale } from '../utils/models';
import { QeydarDatePickerService } from '../date-picker.service';
import { DateAdapter, GregorianDateAdapter, JalaliDateAdapter } from '../date-adapter';
import { TimeConfig, TimeFormat, TimeValueType } from '../utils/types';
import * as i0 from "@angular/core";
export declare class TimePickerComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {
    fb: FormBuilder;
    elementRef: ElementRef;
    cdref: ChangeDetectorRef;
    datePickerService: QeydarDatePickerService;
    jalaliAdapter: JalaliDateAdapter;
    gregorianAdapter: GregorianDateAdapter;
    placeholder?: string;
    rtl: boolean;
    placement: 'left' | 'right';
    minTime?: string;
    maxTime?: string;
    lang: Lang_Locale;
    valueType: TimeValueType;
    cssClass: string;
    showIcon: boolean;
    dateAdapter: DateAdapter<Date>;
    inline: boolean;
    disableInputMask: boolean;
    disabled: boolean;
    disabledTimesFilter: (date: Date) => boolean;
    allowEmpty: boolean;
    readOnly: boolean;
    readOnlyInput: boolean;
    set displayFormat(value: string);
    get displayFormat(): string;
    set selectedDate(date: Date);
    get selectedDate(): Date;
    timeChange: EventEmitter<string | Date>;
    openChange: EventEmitter<boolean>;
    timePickerInput: ElementRef<HTMLInputElement>;
    popupWrapper: ElementRef<HTMLDivElement>;
    timeFormat: TimeFormat;
    private _displayFormat;
    private _value;
    private _selectedDate;
    private onChange;
    private onTouched;
    private timeoutId;
    showSeconds: boolean;
    hours: number[];
    minutes: number[];
    seconds: number[];
    periods: string[];
    selectedTime: TimeConfig;
    isOpen: boolean;
    form: FormGroup;
    origin: CdkOverlayOrigin;
    overlayPositions: import("@angular/cdk/overlay").ConnectionPositionPair[];
    constructor(fb: FormBuilder, elementRef: ElementRef, cdref: ChangeDetectorRef, datePickerService: QeydarDatePickerService, jalaliAdapter: JalaliDateAdapter, gregorianAdapter: GregorianDateAdapter);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    initializeForm(): void;
    initializeLocale(): void;
    updateLocale(): void;
    setupInputSubscription(): void;
    updateHourRange(): void;
    formatTime(date?: Date): string;
    parseTimeString(value: string | Date): void;
    get value(): Date | string | null;
    set value(val: Date | string | null);
    updateFromValue(value: Date | string | null): void;
    updateFromDate(date: Date | null): void;
    resetSelection(): void;
    writeValue(value: Date | string | null): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    handleKeydown(event: KeyboardEvent): void;
    handleTimeInput(): void;
    handleDocumentClick: (event: MouseEvent) => void;
    onFocusInput(): void;
    toggleTimePicker(event: Event): void;
    open(): void;
    close(): void;
    selectHour(hour: number): void;
    selectMinute(minute: number): void;
    selectSecond(second: number): void;
    selectPeriod(period: string): void;
    selectNow(): void;
    save(close?: boolean): void;
    validateAndUpdateTime(value: string): void;
    isHourDisabled(hour: number): boolean;
    isMinuteDisabled(minute: number): boolean;
    isSecondDisabled(second: number): boolean;
    isTimeDisabled(testDate: Date): boolean;
    validateAndNormalizeTime(date: Date): {
        isValid: boolean;
        normalizedDate: Date | null;
    };
    private isFullHourDisabled;
    private isFullMinuteDisabled;
    createDateWithTime(config: TimeConfig): Date;
    updateDateFromSelection(): Date;
    updateTimeDisplay(): void;
    getTimeFormatFromDisplayFormat(format: string): '12' | '24';
    scrollToTime(): Promise<void>;
    scrollToSelectedItem(id: string, behavior?: ScrollBehavior): Promise<boolean>;
    cleanupTimeouts(): void;
    onPositionChange(position: ConnectedOverlayPositionChange): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "qeydar-time-picker", never, { "placeholder": "placeholder"; "rtl": "rtl"; "placement": "placement"; "minTime": "minTime"; "maxTime": "maxTime"; "lang": "lang"; "valueType": "valueType"; "cssClass": "cssClass"; "showIcon": "showIcon"; "dateAdapter": "dateAdapter"; "inline": "inline"; "disableInputMask": "disableInputMask"; "disabled": "disabled"; "disabledTimesFilter": "disabledTimesFilter"; "allowEmpty": "allowEmpty"; "readOnly": "readOnly"; "readOnlyInput": "readOnlyInput"; "displayFormat": "displayFormat"; "selectedDate": "selectedDate"; }, { "timeChange": "timeChange"; "openChange": "openChange"; }, never, never, true>;
}
