/**
 *
 * carbon-angular v0.0.0 | datepicker.component.d.ts
 *
 * Copyright 2014, 2026 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, AfterViewInit, OnInit, SimpleChange } from "@angular/core";
import { Options } from "flatpickr/dist/types/options";
import { DatePickerInput } from "carbon-components-angular/datepicker-input";
import { I18n } from "carbon-components-angular/i18n";
import * as i0 from "@angular/core";
/**
 * Get started with importing the module:
 *
 * ```typescript
 * import { DatePickerModule } from 'carbon-components-angular';
 * ```
 *
 * [See demo](../../?path=/story/components-date-picker--single)
 */
export declare class DatePicker implements OnInit, OnDestroy, OnChanges, AfterViewChecked, AfterViewInit {
    protected elementRef: ElementRef;
    protected i18n: I18n;
    private static datePickerCount;
    /**
     * Select calendar range mode
     */
    range: boolean;
    /**
     * Format of date
     *
     * For reference: https://flatpickr.js.org/formatting/
     */
    dateFormat: string;
    /**
     * Language of the flatpickr calendar.
     *
     * For reference of the possible locales:
     * https://github.com/flatpickr/flatpickr/blob/master/src/l10n/index.ts
     */
    language: string;
    label: string | TemplateRef<any>;
    helperText: string | TemplateRef<any>;
    rangeHelperText: string | TemplateRef<any>;
    rangeLabel: string;
    placeholder: string;
    /**
     * Aria label added to datepicker's calendar container.
     */
    ariaLabel: string;
    /**
     * The pattern for the underlying input element
     */
    inputPattern: string;
    id: string;
    set value(v: (Date | string)[]);
    get value(): (Date | string)[];
    /**
     * @deprecated since v5 - Use `cdsLayer` directive instead
     * Set to `"light"` to apply the light style
     */
    theme: "light" | "dark";
    disabled: boolean;
    readonly: boolean;
    /**
     * Set to `true` to display the invalid state.
     */
    invalid: boolean;
    /**
     * Value displayed if datepicker is in an invalid state.
     */
    invalidText: string | TemplateRef<any>;
    /**
      * Set to `true` to show a warning (contents set by warningText)
      */
    warn: boolean;
    /**
     * Sets the warning text
     */
    warnText: string | TemplateRef<any>;
    size: "sm" | "md" | "lg";
    /**
     * Set to `true` to display the invalid state for the second datepicker input.
     */
    rangeInvalid: boolean;
    /**
     * Value displayed if the second datepicker input is in an invalid state.
     */
    rangeInvalidText: string | TemplateRef<any>;
    /**
      * Set to `true` to show a warning in the second datepicker input (contents set by rangeWarningText)
      */
    rangeWarn: boolean;
    /**
     * Sets the warning text for the second datepicker input
     */
    rangeWarnText: string | TemplateRef<any>;
    skeleton: boolean;
    plugins: any[];
    set flatpickrOptions(options: Partial<Options>);
    get flatpickrOptions(): Partial<Options>;
    input: DatePickerInput;
    rangeInput: DatePickerInput;
    valueChange: EventEmitter<any>;
    /**
     * We are overriding onClose event even if users pass it via flatpickr options
     * Emits an event when date picker closes
     */
    onClose: EventEmitter<any>;
    protected _value: any[];
    protected _flatpickrOptions: Partial<Options>;
    protected flatpickrBaseOptions: {
        mode: string;
        dateFormat: string;
        plugins: any[];
        onOpen: () => void;
        onClose: (date: any) => void;
        onDayCreate: (_dObj: any, _dStr: any, _fp: any, dayElem: any) => void;
        nextArrow: string;
        prevArrow: string;
        value: (string | Date)[];
    };
    protected flatpickrInstance: any;
    constructor(elementRef: ElementRef, i18n: I18n);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    ngAfterViewChecked(): void;
    onFocus(): void;
    onFocusOut(): 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;
    /**
     * `ControlValueAccessor` method to programmatically disable the DatePicker.
     *
     * ex: `this.formGroup.get("myDatePicker").disable();`
     *
     * @param isDisabled `true` to disable the DatePicker
     */
    setDisabledState(isDisabled: boolean): 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;
    /**
     * Handles opening the calendar "properly" when the calendar icon is clicked.
     */
    openCalendar(datepickerInput: DatePickerInput): void;
    protected updateCalendarListeners(): void;
    /**
     * Handles the initialization of event listeners for the datepicker input and range input fields.
     */
    protected addInputListeners(): void;
    /**
     * Resets the flatpickr instance while keeping the date values (or updating them if newDates is provided)
     *
     * Used to pick up input changes or locale changes.
     *
     * @param newDates An optional SimpleChange of date values
     */
    protected resetFlatpickrInstance(newDates?: SimpleChange): void;
    /**
     * Carbon uses a number of specific classnames for parts of the flatpickr - this idempotent method applies them if needed.
     */
    protected updateClassNames(): void;
    protected updateAttributes(): 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 preventCalendarClose: (event: any) => any;
    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;
    /**
     * Right arrow HTML passed to flatpickr
     */
    protected rightArrowHTML(): string;
    /**
     * Left arrow HTML passed to flatpickr
     */
    protected leftArrowHTML(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatePicker, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DatePicker, "cds-date-picker, ibm-date-picker", never, { "range": "range"; "dateFormat": "dateFormat"; "language": "language"; "label": "label"; "helperText": "helperText"; "rangeHelperText": "rangeHelperText"; "rangeLabel": "rangeLabel"; "placeholder": "placeholder"; "ariaLabel": "ariaLabel"; "inputPattern": "inputPattern"; "id": "id"; "value": "value"; "theme": "theme"; "disabled": "disabled"; "readonly": "readonly"; "invalid": "invalid"; "invalidText": "invalidText"; "warn": "warn"; "warnText": "warnText"; "size": "size"; "rangeInvalid": "rangeInvalid"; "rangeInvalidText": "rangeInvalidText"; "rangeWarn": "rangeWarn"; "rangeWarnText": "rangeWarnText"; "skeleton": "skeleton"; "plugins": "plugins"; "flatpickrOptions": "flatpickrOptions"; }, { "valueChange": "valueChange"; "onClose": "onClose"; }, never, never, false>;
}
