/// <reference types="jquery" />
import { DateTime } from 'luxon';
import { JQueryClipboardEvent, JQueryFocusEvent, JQueryKeyboardEvent, NavDirection } from '../common';
import { TemporalComponent, TemporalInputElement } from '../temporal-component';
import './time-input.component.scss';
export interface TimeInputElement extends TemporalInputElement {
}
declare global {
    interface HTMLElementTagNameMap {
        'iw-time-input': TimeInputElement;
    }
    interface JQuery {
        iwTimeInput(): JQuery<TimeInputElement>;
    }
}
declare type JQueryTimeInputPart = JQuery<HTMLInputElement>;
export declare class TimeInputComponent extends TemporalComponent<TimeInputElement> {
    static readonly COMPONENT_SELECTOR = "iw-time-input";
    static readonly TEMPLATE: string;
    static loadPlugin(): void;
    get placeholder(): string;
    set placeholder(placeholder: string);
    get disabledPlaceholder(): string | boolean;
    get hasInput(): boolean;
    private _displayPlaceholder;
    get displayPlaceholder(): [string, string, string];
    get hasDisplayPlaceholder(): boolean;
    $spacer: JQuery;
    $parts: JQueryTimeInputPart;
    parts: HTMLInputElement[];
    $hour: JQueryTimeInputPart;
    $minute: JQueryTimeInputPart;
    $meridian: JQueryTimeInputPart;
    constructor($el: JQuery<TimeInputElement>);
    /**
     * Returns a jQuery selector of all tabbable elements in the document.
     *
     * Used to determine next/previous tab navigation targets.
     */
    getTabbable(): JQuery;
    protected getDisplayInput(): JQuery;
    protected getDisplayPlaceholder(): JQuery;
    protected getValueInput(): JQuery<HTMLInputElement>;
    protected initDomRefs(): void;
    protected initEvents(): void;
    protected initDom(): void;
    protected onInput(): void;
    protected onValue(value: DateTime, isChanged: boolean, isValid: boolean): void;
    protected onInputKeyDown(e: JQueryKeyboardEvent<HTMLInputElement>): boolean;
    protected eventReturn(e: JQuery.TriggeredEvent, allowBubble: boolean): boolean;
    protected onInputKeyUp(e: JQueryKeyboardEvent<HTMLInputElement>): void;
    protected onInputFocus(e: JQueryFocusEvent<HTMLInputElement>): void;
    protected onInputBlur(): void;
    protected onComponentFocus(): void;
    validatePart($part: JQueryTimeInputPart, value?: string): boolean;
    protected getPartValue($part: JQueryTimeInputPart): string;
    protected getMaxLength($part: JQueryTimeInputPart): number;
    protected validatePartInput($part: JQueryTimeInputPart, newValue: string, inputValue: string): boolean;
    protected onCopy(e: JQueryClipboardEvent): false;
    protected onPaste(e: JQueryClipboardEvent): false;
    syncValue(value?: DateTime): DateTime;
    protected getValueFromInputParts(): DateTime;
    protected getInputParts(): [string, string, string];
    protected getInvalidValue(date: DateTime, time: DateTime): DateTime;
    protected syncSpacer(): void;
    protected setDisplay(value: string): JQuery;
    protected setInputValues(time: DateTime): void;
    protected formatInputPart(value: DateTime, format: string): string;
    protected isHour($el: JQueryTimeInputPart): boolean;
    protected isMinute($el: JQueryTimeInputPart): boolean;
    protected isMeridian($el: JQueryTimeInputPart): boolean;
    protected arrowNav($part: JQueryTimeInputPart, dir: NavDirection): boolean;
    protected focusPart(part: HTMLInputElement): void;
    protected incrementValue($part: JQueryTimeInputPart, amount: number, select?: boolean): void;
    protected validateKeyDown($part: JQueryTimeInputPart, key: string): boolean;
    protected handleKeyDown($part: JQueryTimeInputPart, key: string): boolean;
    protected tabPrev(): false;
    protected tabNext(): false;
    private getMultipartDisplayPlaceholder;
    protected syncPlaceholder(disabled: boolean): void;
}
export {};
