import { AfterViewInit, ElementRef, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { PoButtonComponent } from '../../po-button/po-button.component';
import { PoTimerComponent } from '../../po-timer/po-timer.component';
import { PoTimepickerBaseComponent } from './po-timepicker-base.component';
import { PoHelperComponent } from '../../po-helper';
type PoTimepickerSegment = 'hour' | 'minute' | 'second';
/**
 * @docsExtends PoTimepickerBaseComponent
 *
 * @example
 *
 * <example name="po-timepicker-basic" title="PO Timepicker Basic">
 *  <file name="sample-po-timepicker-basic/sample-po-timepicker-basic.component.html"> </file>
 *  <file name="sample-po-timepicker-basic/sample-po-timepicker-basic.component.ts"> </file>
 * </example>
 *
 * <example name="po-timepicker-labs" title="PO Timepicker Labs">
 *  <file name="sample-po-timepicker-labs/sample-po-timepicker-labs.component.html"> </file>
 *  <file name="sample-po-timepicker-labs/sample-po-timepicker-labs.component.ts"> </file>
 * </example>
 *
 * <example name="po-timepicker-scheduling" title="PO Timepicker - Scheduling">
 *  <file name="sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.html"> </file>
 *  <file name="sample-po-timepicker-scheduling/sample-po-timepicker-scheduling.component.ts"> </file>
 * </example>
 *
 * <example name="po-timepicker-business-hours" title="PO Timepicker - Business Hours">
 *  <file name="sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.html"> </file>
 *  <file name="sample-po-timepicker-business-hours/sample-po-timepicker-business-hours.component.ts"> </file>
 * </example>
 */
export declare class PoTimepickerComponent extends PoTimepickerBaseComponent implements AfterViewInit, OnDestroy, OnChanges {
    private readonly controlPosition;
    private readonly renderer;
    dialogPicker: ElementRef;
    iconTimepicker: PoButtonComponent;
    inputEl: ElementRef;
    minuteInputEl: ElementRef;
    secondInputEl: ElementRef;
    timepickerFieldEl: ElementRef;
    iconClean: ElementRef<HTMLElement>;
    helperEl?: PoHelperComponent;
    timerComponent?: PoTimerComponent;
    periodInputEl: ElementRef;
    /** Rótulo do campo. */
    label?: string;
    /** Texto de apoio do campo. */
    help?: string;
    displayAdditionalHelp: boolean;
    el: ElementRef;
    id: string;
    visible: boolean;
    literals: any;
    hourDisplay: string;
    minuteDisplay: string;
    secondDisplay: string;
    periodDisplay: string;
    isSegmentFocused: boolean;
    ariaLiveMessage: string;
    eventListenerFunction: () => void;
    eventResizeListener: () => void;
    get cleanElementRef(): {
        nativeElement: {
            value: string;
        };
    };
    private clickListener;
    private timeoutChange;
    private valueBeforeChange;
    constructor();
    get hourPlaceholder(): string;
    get minutePlaceholder(): string;
    get secondPlaceholder(): string;
    get isPlaceholder(): boolean;
    private get customPlaceholderSegments();
    private getCustomPlaceholderSegment;
    onHostFocusOut(event: FocusEvent): void;
    onKeydown($event?: any): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    protected onLocaleChange(): void;
    emitAdditionalHelp(): void;
    /**
     * Função que atribui foco ao componente.
     *
     * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:
     *
     * ```
     * import { PoTimepickerComponent } from '@po-ui/ng-components';
     *
     * ...
     *
     * @ViewChild(PoTimepickerComponent, { static: true }) timepicker: PoTimepickerComponent;
     *
     * focusTimepicker() {
     *   this.timepicker.focus();
     * }
     * ```
     */
    focus(): void;
    getAdditionalHelpTooltip(): any;
    togglePicker(focusInput?: boolean): void;
    closeTimer(focusInput?: boolean, skipRefocus?: boolean): void;
    timerSelected(time: string): void;
    wasClickedOnPicker(event: any): void;
    hasInvalidClass(): boolean;
    hasValue(): boolean;
    getErrorPattern(): string;
    clear(): void;
    clearAndFocus(): void;
    eventOnBlur($event: any): void;
    eventOnClick($event: any): void;
    onKeyDown(event: KeyboardEvent): void;
    onKeyPress(event: any): void;
    onSegmentInput(event: Event, segment: PoTimepickerSegment): void;
    onSegmentKeydown(event: KeyboardEvent, segment: PoTimepickerSegment): void;
    private handleSegmentNavigation;
    private handleSegmentArrowKeys;
    private handleSegmentNonNumericBlock;
    onSegmentBlur(event: FocusEvent): void;
    onFieldClick(event: MouseEvent): void;
    onSegmentFocus(): void;
    onPeriodSegmentKeydown(event: KeyboardEvent): void;
    onPeriodSegmentClick(event: MouseEvent): void;
    refreshValue(value: string): void;
    /**
     * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.
     */
    showAdditionalHelp(): boolean;
    writeValue(value: any): void;
    verifyMobile(): RegExpMatchArray;
    handleCleanKeyboardTab(event: KeyboardEvent): void;
    handleTimepickerButtonKeyboardTab(event: KeyboardEvent): void;
    onTimerKeyDown(event: KeyboardEvent): void;
    onTimerBoundaryTab(payload: {
        direction: 'forward' | 'backward';
        event: KeyboardEvent;
    }): void;
    onTimerFocusOut(event: FocusEvent): void;
    setHelper(label?: string): {
        hideAdditionalHelp: boolean;
        helperSettings?: any;
    };
    /**
     * Atualiza os valores exibidos nos inputs de segmento, convertendo para formato 12h com AM/PM quando necessário.
     * O timeValue interno sempre armazena em formato 24h (ISO), mas a exibição pode ser 12h.
     */
    private updateInputDisplay;
    /** Atualiza a mensagem aria-live com o valor do horario para anuncio por leitores de tela. */
    private updateAriaLiveMessage;
    /** Constroi a string de horario no formato de exibicao atual (12h ou 24h). */
    private buildDisplayTime;
    /** Normaliza valores `HH:mm` para `HH:mm:00` quando segundos estão habilitados. */
    private normalizeTimeValueForDisplay;
    /** Limpa todos os valores de exibicao dos segmentos e seus respectivos elementos input. */
    private clearSegmentDisplays;
    private getDefaultPeriodDisplay;
    /** Sincroniza os valores dos elementos input nativos com as propriedades de exibicao. */
    private syncSegmentInputElements;
    /**
     * Avança o foco para o próximo input de segmento ou elemento focável interno.
     * Retorna `true` se o foco foi movido, `false` se não há próximo elemento focável.
     */
    private advanceToNextSegment;
    /**
     * Tenta focar o botão de limpar ou o botão do timer.
     * Retorna `true` se o foco foi movido, `false` se nenhum elemento está focável.
     */
    private focusCleanOrButton;
    private focusPreviousPeriodSegment;
    private focusNextPeriodSegment;
    /**
     * Retorna o foco para o input de segmento anterior.
     * Retorna `true` se o foco foi movido, `false` se não há segmento anterior focável.
     */
    private advanceToPreviousSegment;
    /** Foca o ultimo input de segmento visivel. */
    private focusLastSegment;
    /** Verifica se o segmento informado e o ultimo visivel. */
    private isLastSegment;
    /** Alterna entre AM e PM no display de periodo e atualiza o modelo. */
    private togglePeriod;
    /**
     * Verifica se um período (AM/PM) está completamente fora do range min/max.
     * AM corresponde às horas 0-11 em 24h, PM às horas 12-23.
     */
    private isPeriodBlocked;
    /** Incrementa ou decrementa o valor de um segmento na direcao indicada (+1 ou -1), respeitando limites e intervalos. */
    private incrementSegment;
    private incrementHourSegment;
    private incrementIntervalSegment;
    private normalizeSingleDigitSegment;
    private shouldCommitForInternalFocusTarget;
    /** Combina os valores dos segmentos em uma string de horario e atualiza o modelo. */
    private updateCombinedValue;
    /** Monta a string parcial combinando os segmentos preenchidos e vazios. */
    private buildPartialCombined;
    private areSegmentsComplete;
    private buildDisplayCombined;
    private convertDisplayTo24h;
    /** Completa valores de segmento incompletos e atualiza o modelo no blur. */
    private validateAndUpdateModel;
    private updateTimeFromInput;
    private applyInputValidationError;
    private controlChangeEmitter;
    /**
     * Completa automaticamente os segundos com `:00` ao fechar o timer
     * quando `showSeconds=true` e o usuario preencheu apenas hora e minuto (HH:mm).
     *
     * Esse comportamento emite `callOnChange` e `controlChangeEmitter`, o que
     * significa que formularios reativos observando `valueChanges` receberao
     * uma emissao adicional no momento do fechamento do timer.
     */
    private completeSecondsOnClose;
    private initializeListeners;
    private isAdditionalHelpEventTriggered;
    private readonly onScroll;
    private removeListeners;
    private setDialogPickerStyleDisplay;
    private setTimerPosition;
    protected adjustTimerPosition(): void;
    private shouldHandleTab;
    private focusTimer;
}
export {};
