import { AfterViewInit, ChangeDetectorRef, ComponentRef, ElementRef, Renderer2 } from '@angular/core';
import { Subject } from 'rxjs';
import { ControlValueAccessor } from '@angular/forms';
import { Overlay, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';
import { RCalendarTimeModelService, RDateService } from '../../extra/calendar-kit';
import { RTriggerStrategy, RTriggerStrategyBuilderService } from '../../../cdk/overlay/overlay-trigger';
import { RAdjustableConnectedPositionStrategy, RPositionBuilderService } from '../../../cdk/overlay/overlay-position';
import { RTimePickerComponent } from './timepicker.component';
export declare class RTimePickerDirective<D> implements AfterViewInit, ControlValueAccessor {
    protected document: any;
    protected positionBuilder: RPositionBuilderService;
    protected hostRef: ElementRef;
    protected triggerStrategyBuilder: RTriggerStrategyBuilderService;
    protected overlay: Overlay;
    protected cd: ChangeDetectorRef;
    protected calendarTimeModelService: RCalendarTimeModelService<D>;
    protected dateService: RDateService<D>;
    protected renderer: Renderer2;
    protected placeholder: string;
    /**
     * Provides timepicker component.
     * */
    get timepicker(): RTimePickerComponent<D>;
    set timepicker(timePicker: RTimePickerComponent<D>);
    protected _timePickerComponent: RTimePickerComponent<D>;
    /**
     * Time picker overlay offset.
     * */
    overlayOffset: number;
    protected lastInputValue: string;
    /**
     * Positioning strategy used by overlay.
     * @docs-private
     * */
    protected positionStrategy: RAdjustableConnectedPositionStrategy;
    protected overlayRef: OverlayRef;
    protected destroy$: Subject<void>;
    protected onChange: (value: D) => void;
    protected onTouched: () => void;
    /**
     * Trigger strategy used by overlay.
     * @docs-private
     * */
    protected triggerStrategy: RTriggerStrategy;
    /**
     * Returns html input element.
     * @docs-private
     * */
    get input(): HTMLInputElement;
    /**
     * Determines is timepicker overlay opened.
     * @docs-private
     * */
    get isOpen(): boolean;
    /**
     * Determines is timepicker overlay closed.
     * @docs-private
     * */
    get isClosed(): boolean;
    constructor(document: any, positionBuilder: RPositionBuilderService, hostRef: ElementRef, triggerStrategyBuilder: RTriggerStrategyBuilderService, overlay: Overlay, cd: ChangeDetectorRef, calendarTimeModelService: RCalendarTimeModelService<D>, dateService: RDateService<D>, renderer: Renderer2, placeholder: string);
    /**
     * Returns host input value.
     * @docs-private
     * */
    get inputValue(): string;
    set inputValue(value: string);
    ngAfterViewInit(): void;
    show(): void;
    hide(): void;
    /**
     * Attaches picker to the timepicker portal.
     * @docs-private
     * */
    protected attachToOverlay(): void;
    setupTimepicker(): void;
    protected initOverlay(): void;
    protected subscribeOnApplyClick(): void;
    protected createOverlay(): void;
    protected subscribeOnTriggers(): void;
    protected createTriggerStrategy(): RTriggerStrategy;
    protected createPositionStrategy(): RAdjustableConnectedPositionStrategy;
    protected getContainer(): ComponentRef<any>;
    protected createScrollStrategy(): ScrollStrategy;
    protected subscribeOnInputChange(): void;
    protected subscribeToBlur(): void;
    /**
     * Parses input value and write if it isn't null.
     * @docs-private
     * */
    protected handleInputChange(value: string): void;
    protected updateValue(value: D): void;
    writeValue(value: D): void;
    registerOnChange(fn: (value: any) => {}): void;
    registerOnTouched(fn: any): void;
    protected parseNativeDateString(value: string): string;
}
