import { AfterContentInit, ElementRef, EventEmitter, Injector, QueryList } from '@angular/core';
import { FormControl } from '@angular/forms';
import { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';
import { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';
import { DropdownComponent } from '../../../dropdown/dropdown.component';
import { ValidationAlerts } from '../../validation-alert/validation-alert';
import { DateTimeFormFieldComponent } from '../datetime/datetime-form-field.component';
import { CheckValidationEventArgs } from '../form-field-validator.directive';
import { SmeInternalFormFieldComponent } from '../form-field.component';
import { DateTimeRangeOptionComponent } from './datetime-range-option.component';
import * as i0 from "@angular/core";
export interface TimeISOHistoryData {
    key: string;
    value: string;
}
export declare class DateTimeRangeFormFieldComponent extends SmeInternalFormFieldComponent<DateRange> implements AfterContentInit {
    static timeISOPattern: string;
    static twoDigitPattern: string;
    static timeISOHistoryLength: number;
    static startProperty: string;
    static endProperty: string;
    customText: string;
    startTimeText: string;
    endTimeText: string;
    private invalidStartTimeText;
    private invalidEndTimeText;
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    listboxElement: ElementRef;
    dropDown: DropdownComponent;
    startFormField: DateTimeFormFieldComponent;
    endFormField: DateTimeFormFieldComponent;
    /**
     * The options for this control.
     */
    options: QueryList<DateTimeRangeOptionComponent>;
    /**
     * Determine if the dropdown will use the sme-form-field to limit its max-width
     */
    dropdownApplyFormFieldOffsetWidth: boolean;
    showCustomOption: boolean;
    customDateRange: DateRange;
    showCustomDisplayText: boolean;
    get customDateRangeStart(): string;
    get customDateRangeEnd(): string;
    customLabelEmitter: EventEmitter<any>;
    private dropdownService;
    private timeISOHistory;
    private getTimeHistory;
    private setTimeHistory;
    private timeISOTranslator;
    get displayValue(): string;
    constructor(injector: Injector);
    isSelected(dateRange: DateRange): boolean;
    updateValue(value: DateRange): void;
    ngAfterContentInit(): void;
    onCustomDateRangeChanged(fieldName: string, value: string): void;
    private updateDropdownPosition;
    protected onValueChanged(value: DateRange): void;
    /**
     * Creates the idBag used by this component to store unique element ids.
     * id values will be assigned be the @see BaseComponent super class.
     */
    protected createIdBag(): MsftSme.StringMap<string>;
    /**
     * Performs validation that is internal to this control
     * @param c The form control attached to this instance
     */
    protected validate(c: FormControl): ValidationAlerts;
    onCustomValidate(event: CheckValidationEventArgs, name: string, value?: DateLike): void;
    private validateStartDate;
    private validateEndDate;
    onToggleKeydown(event: KeyboardEvent): void;
    onRadioGroupOptionKeydown(event: KeyboardEvent): void;
    onDatePickerKeydown(event: KeyboardEvent, input: string): void;
    private checkIsLastElementInDataRangePickerTrap;
    private canFocusOnStartTimeRangePicker;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateTimeRangeFormFieldComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateTimeRangeFormFieldComponent, "sme-form-field[type=\"datetimerange\"]", never, { "dropdownApplyFormFieldOffsetWidth": "dropdownApplyFormFieldOffsetWidth"; "showCustomOption": "showCustomOption"; "customDateRange": "customDateRange"; "showCustomDisplayText": "showCustomDisplayText"; }, { "customLabelEmitter": "customLabelEmitter"; }, ["options"], never, false, never>;
}
