/*!
 *
 * carbon-angular v0.0.5 | datepicker.component.d.ts
 *
 * Copyright 2014, 2019 IBM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0

 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


import { EventEmitter, ElementRef, OnDestroy, TemplateRef, OnChanges, SimpleChanges, AfterViewChecked } from "@angular/core";
/**
 * [See demo](../../?path=/story/date-picker--single)
 *
 * <example-url>../../iframe.html?id=date-picker--single</example-url>
 *
 * @export
 * @class DatePicker
 * @implements {OnDestroy}
 */
export declare class DatePicker implements OnDestroy, OnChanges, AfterViewChecked {
    protected elementRef: ElementRef;
    private static datePickerCount;
    /**
     * Select calendar range mode
     */
    range: boolean;
    /**
     * Format of date
     *
     * For reference: https://flatpickr.js.org/formatting/
     */
    dateFormat: string;
    label: string | TemplateRef<any>;
    rangeLabel: string;
    placeholder: string;
    pattern: string;
    id: string;
    value: (Date | string)[];
    theme: "light" | "dark";
    disabled: boolean;
    invalid: boolean;
    invalidText: string | TemplateRef<any>;
    skeleton: boolean;
    plugins: any[];
    flatpickrOptions: any;
    flatpickrOptionsRange: any;
    valueChange: EventEmitter<any>;
    protected _value: any[];
    protected _flatpickrOptions: {
        allowInput: boolean;
    };
    protected flatpickrBaseOptions: {
        mode: string;
        dateFormat: string;
        plugins: any[];
        onOpen: () => void;
        value: (string | Date)[];
    };
    protected flatpickrInstance: any;
    constructor(elementRef: ElementRef);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewChecked(): void;
    onFocus(): void;
    /**
     * Writes a value from the model to the component. Expects the value to be `null` or `(Date | string)[]`
     * @param value value received from the model
     */
    writeValue(value: (Date | string)[]): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    onTouched: () => any;
    propagateChange: (_: any) => void;
    /**
     * Cleans up our flatpickr instance
     */
    ngOnDestroy(): void;
    /**
     * Handles the `valueChange` event from the primary/single input
     */
    onValueChange(event: string): void;
    /**
     * Handles the `valueChange` event from the range input
     */
    onRangeValueChange(event: string): void;
    /**
     * Carbon uses a number of specific classnames for parts of the flatpickr - this idempotent method applies them if needed.
     */
    protected updateClassNames(): void;
    /**
     * Applies the given date value array to both the flatpickr instance and the `input`(s)
     * @param dates the date values to apply
     */
    protected setDateValues(dates: (Date | string)[]): void;
    protected doSelect(selectedValue: (Date | string)[]): void;
    protected didDateValueChange(currentValue: any, previousValue: any): boolean;
    /**
     * More advanced checking of the loaded state of flatpickr
     */
    protected isFlatpickrLoaded(): boolean;
}
