import { OnInit, DoCheck, OnDestroy, SimpleChanges, OnChanges } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { EuiTimePicker } from './models/eui-timepicker.model';
import * as i0 from "@angular/core";
/**
 * @description
 * A timepicker component that allows the user to select a time. The component
 * can be used in two modes: one input field or three separate input fields
 * for hours, minutes, and seconds. The component also supports incremental and
 * decremental buttons for each input field.
 *
 */
export declare class EuiTimepickerComponent implements ControlValueAccessor, OnInit, OnChanges, DoCheck, OnDestroy {
    hours: number;
    mins: number;
    secs: number;
    isDatetimepicker: boolean;
    oneInputFormControl: FormControl<any>;
    oneInputHours: string;
    oneInputMins: string;
    oneInputSecs: string;
    hoursUpDisabled: boolean;
    hoursDownDisabled: boolean;
    minutesUpDisabled: boolean;
    minutesDownDisabled: boolean;
    secondsUpDisabled: boolean;
    secondsDownDisabled: boolean;
    e2eAttr: string;
    /**
     * The id of the input element when isOneInputField attribute is used. If not provided, a unique id will be generated.
     * @default 'eui-timepicker-<unique-id>'
     */
    inputId: string;
    /**
     * The mask for the input field when isOneInputField attribute is used.
     * @default 'Hh:m0'
     */
    timeMask: string;
    /**
     * The placeholder of the input field when isOneInputField attribute is used.
     * @default 'Hh:m0'
     */
    placeholder: string;
    /**
     * The step used for changing hours.
     * @default 1
     */
    stepHours: number;
    /**
     * The step used for changing minutes.
     * @default 1
     */
    stepMinutes: number;
    /**
     * The step used for changing seconds.
     * @default 1
     */
    stepSeconds: number;
    /**
     * The size of the icon used for changing hours, minutes and seconds.
     * @default 'l'
     */
    iconSize: string;
    /**
     * Sets the readonly attribute of the input field.
     * @default false
     */
    isreadOnly: boolean;
    /**
     * Sets the disabled attribute for the buttons.
     * @default false
     */
    isDisabled: boolean;
    /**
     * Attribute that transforms the 3 separate inputs into one input field.
     * @default false
     */
    isOneInputField: boolean;
    /**
     * Option for enabling seconds.
     * @default false
     */
    hasSeconds: boolean;
    protected hasAriaRequiredAttribute: boolean;
    private propagatedValues;
    private destroy$;
    private control;
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    /**
     * Increments or decrements hours according to the step param being passed
     *
     * @param step The step number that hours will increase or decrease
     */
    changeHours(step: number): void;
    /**
     * Increments or decrements minutes according to the step param being passed
     *
     * @param step The step number that minutes will increase or decrease
     */
    changeMinutes(step: number): void;
    /**
     * Increments or decrements seconds according to the step param being passed
     *
     * @param step The step number that seconds will increase or decrease
     */
    changeSeconds(step: number): void;
    /**
     * Updates the input field when hours change and adds 24hour validation + propagates the value back to the form
     *
     * @param newVal The new value that hours will have
     */
    updateHours(newVal: string): void;
    /**
     * Updates the input field when minutes change and adds 60mins validation + propagates the value back to the form
     *
     * @param newVal The new value that minutes will have
     */
    updateMinutes(newVal: string): void;
    /**
     * Updates the input field when seconds change and adds 60secs validation + propagates the value back to the form
     *
     * @param newVal The new value that seconds will have
     */
    updateSeconds(newVal: string): void;
    /**
     * Autofills mins and secs with 00s if the user tabs after entering hours and marks the input as touched
     */
    onFocusOut(): void;
    writeValue(values: EuiTimePicker): void;
    /**
     * Disables the hour up incremental when max time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    hoursUpDisable(state: boolean): void;
    /**
     * Disables the hour down decremental when min time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    hoursDownDisable(state: boolean): void;
    /**
     * Disables the minutes up incremental when max time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    minutesUpDisable(state: boolean): void;
    /**
     * Disables the minutes down decremental when min time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    minutesDownDisable(state: boolean): void;
    /**
     * Disables the seconds up incremental when max time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    secondsUpDisable(state: boolean): void;
    /**
     * Disables the seconds down decremental when min time range is reached
     *
     * @param state The boolean value that enables the feature
     */
    secondsDownDisable(state: boolean): void;
    registerOnChange(fn: () => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    /**
     * A callback function that is called when the time is changed. It is used to propagate the value back to the form.
     * @param hours The hours value
     * @param mins The minutes value
     * @param secs The seconds value
     */
    private callbackFn;
    /**
     * Converts the provided value to an integer.
     *
     * @param value The value to convert
     * @private
     */
    private toInteger;
    /**
     * Pads leading zero to the provided number when isOneInputField
     *
     * @param value The value to add leading zero to
     * @private
     */
    private padNumber;
    private propagateChange;
    private propagateTouched;
    /**
     * Updates the `aria-required` attribute on the input element.
     * @param control The NgControl instance to check for required validator
     * @private
     */
    private updateInputAriaRequiredAttribute;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiTimepickerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiTimepickerComponent, "eui-timepicker", never, { "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "timeMask": { "alias": "timeMask"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "stepHours": { "alias": "stepHours"; "required": false; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; }; "stepSeconds": { "alias": "stepSeconds"; "required": false; }; "iconSize": { "alias": "iconSize"; "required": false; }; "isreadOnly": { "alias": "isreadOnly"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "isOneInputField": { "alias": "isOneInputField"; "required": false; }; "hasSeconds": { "alias": "hasSeconds"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_isreadOnly: unknown;
    static ngAcceptInputType_isDisabled: unknown;
    static ngAcceptInputType_isOneInputField: unknown;
    static ngAcceptInputType_hasSeconds: unknown;
}
//# sourceMappingURL=eui-timepicker.component.d.ts.map