import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnInit, QueryList, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
import { DateTimeFormatOptions, DayPeriod, ITimeValue } from './time.utils';
import { TemplateIdDirective } from '../shared';
import * as i0 from "@angular/core";
export declare class TimePickerComponent implements OnChanges, OnInit, ControlValueAccessor, AfterViewInit {
    #private;
    constructor();
    /**
     * Toggle visibility or set the content of the cleaner button.
     * @type boolean
     * @default true
     */
    cleaner: boolean;
    /**
     * Sets DateTime format options including timeZone
     * @type DateTimeFormatOptions
     * @default {}
     * @note The date object doesn't store timeZone, it keeps the local timezone of the browser, regardless if you parsed UTC dates.
     */
    dateTimeFormatOptions: DateTimeFormatOptions;
    /**
     * Toggle the disabled state for the component.
     * @type boolean
     * @default false
     */
    disabled: boolean;
    /**
     * Filter available hours to pick.
     * @type (value: number) => boolean;
     * @default undefined
     */
    filterHours?: (value: number) => boolean;
    /**
     * Filter available minutes to pick.
     * @type (value: number) => boolean;
     * @default undefined
     */
    filterMinutes?: (value: number) => boolean;
    /**
     * Filter available seconds to pick.
     * @type (value: number) => boolean;
     * @default undefined
     */
    filterSeconds?: (value: number) => boolean;
    /**
     * Toggle visibility or set the content of the input indicator.
     * @type boolean
     * @default true
     */
    indicator: boolean;
    /**
     * Toggle the readonly state for the component.
     * @type boolean
     * @default false
     */
    inputReadOnly: boolean;
    /**
     * Sets the default locale for components. If not set, it is inherited from the browser.
     * @type string
     * @default default
     */
    locale: string;
    /**
     * Specifies short hint visible in time input.
     * @type string
     * @default 'Select time'
     */
    placeholder: string;
    /**
     * Toggle seconds visibility.
     * @type boolean
     * @default false
     */
    seconds: boolean;
    /**
     * Size the component small or large.
     * @type 'sm' | 'lg' | undefined
     * @default undefined
     */
    size?: 'sm' | 'lg';
    /**
     * Initial selected time.
     * @type Date | string | null | number
     * @default undefined
     */
    set time(value: Date | string | undefined);
    get time(): Date | undefined;
    private _time?;
    private _timeInternal?;
    /**
     * Set the time picker variant to a roll or select.
     * @type 'roll' | 'select'
     * @default 'roll'
     */
    variant: 'roll' | 'select';
    /**
     * Toggle visual validation feedback.
     * @type boolean | undefined
     * @default undefined
     */
    valid?: boolean;
    /**
     * Toggle the visibility of dropdown timepicker menu component.
     * @type boolean
     * @default false
     */
    visible: boolean;
    timeChange: EventEmitter<Date | undefined>;
    onBlur(): void;
    dropdownRef: ElementRef;
    templates: any;
    contentTemplates: QueryList<TemplateIdDirective>;
    listOfHours: ITimeValue[];
    listOfHours12: ITimeValue[];
    listOfMinutes: ITimeValue[];
    listOfSeconds: ITimeValue[];
    hour12: boolean;
    dayPeriods: {
        value: string;
        label: string;
    }[];
    getListOfHours12(): ITimeValue[];
    set timeInputValue(value: string);
    get timeInputValue(): string;
    private _timeInputValue;
    get timePickerClasses(): {
        [x: string]: boolean;
        'time-picker': boolean;
        'form-control': boolean;
        'is-valid': boolean;
        'is-invalid': boolean;
        disabled: boolean;
    };
    selectTime: FormGroup<{
        selectHours: FormControl<number | null>;
        selectMinutes: FormControl<number | null>;
        selectSeconds?: FormControl<number | null> | undefined;
        selectDayPeriod?: FormControl<"am" | "pm" | null> | undefined;
    }>;
    timeInput: FormControl<string | null>;
    set hour(value: number);
    get hour(): number;
    private _hour;
    set minute(value: number);
    get minute(): number;
    private _minute;
    set second(value: number);
    get second(): number;
    private _second;
    set dayPeriod(value: DayPeriod);
    get dayPeriod(): DayPeriod;
    private _dayPeriod;
    setTime(): void;
    clearTime(): void;
    emitTime(time: Date | undefined): void;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    setTimeLists(): void;
    updateSelectTime(time?: Date | undefined): void;
    closestTime(timeArray: ITimeValue[], timeSegment: number): ITimeValue;
    listOfTimeSegments(getListOfTimeSegments: (locale: string, dateTimeFormatOptions: DateTimeFormatOptions) => ITimeValue[], filterTimeSegments: ((timeSegmentValue: number) => boolean) | undefined): ITimeValue[];
    handleSelectDayPeriodChange(dayPeriod: DayPeriod): void;
    handleSelectTimeChange(value: number, segment: 'hour' | 'minute' | 'second'): void;
    patchSelectTimeValues(): void;
    trackByHour(index: number, hour: ITimeValue): ITimeValue;
    onChange: (value: Date | undefined) => void;
    onTouched: () => void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    handleTimeInputChange($event: any): void;
    handleClear($event: MouseEvent): void;
    handleBlur($event: FocusEvent): void;
    handleFocus($event: FocusEvent): void;
    setChangeHandlers(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerComponent, "c-time-picker", ["cTimePicker"], { "cleaner": { "alias": "cleaner"; "required": false; }; "dateTimeFormatOptions": { "alias": "dateTimeFormatOptions"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "filterHours": { "alias": "filterHours"; "required": false; }; "filterMinutes": { "alias": "filterMinutes"; "required": false; }; "filterSeconds": { "alias": "filterSeconds"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "inputReadOnly": { "alias": "inputReadOnly"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "seconds": { "alias": "seconds"; "required": false; }; "size": { "alias": "size"; "required": false; }; "time": { "alias": "time"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "timeChange": "timeChange"; }, ["contentTemplates"], never, true, never>;
    static ngAcceptInputType_cleaner: unknown;
    static ngAcceptInputType_disabled: unknown;
    static ngAcceptInputType_indicator: unknown;
    static ngAcceptInputType_inputReadOnly: unknown;
    static ngAcceptInputType_seconds: unknown;
    static ngAcceptInputType_visible: unknown;
}
