import * as _angular_core from '@angular/core';
import { AfterViewInit, ElementRef, Injector } from '@angular/core';
import _Calendar from '@ui5/webcomponents/dist/Calendar.js';
import { UI5CustomEvent } from '@ui5/webcomponents-base';

declare class Calendar implements AfterViewInit {
    /**
     * Defines the type of selection used in the calendar component.
  Accepted property values are:
  
  - `CalendarSelectionMode.Single` - enables a single date selection.(default value)
  - `CalendarSelectionMode.Range` - enables selection of a date range.
  - `CalendarSelectionMode.Multiple` - enables selection of multiple dates.
     */
    selectionMode: _angular_core.InputSignal<"Single" | "Multiple" | "Range" | undefined>;
    /**
     * Defines the visibility of the week numbers column.
  
  **Note:** For calendars other than Gregorian,
  the week numbers are not displayed regardless of what is set.
     */
    hideWeekNumbers: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Sets a calendar type used for display.
  If not set, the calendar type of the global configuration is used.
     */
    primaryCalendarType: _angular_core.InputSignal<"Gregorian" | "Islamic" | "Japanese" | "Buddhist" | "Persian" | undefined>;
    /**
     * Defines the secondary calendar type.
  If not set, the calendar will only show the primary calendar type.
     */
    secondaryCalendarType: _angular_core.InputSignal<"Gregorian" | "Islamic" | "Japanese" | "Buddhist" | "Persian" | undefined>;
    /**
     * Determines the format, displayed in the input field.
     */
    formatPattern: _angular_core.InputSignal<string | undefined>;
    /**
     * Determines the format, displayed in the input field.
     */
    displayFormat: _angular_core.InputSignal<string | undefined>;
    /**
     * Determines the format, used for the value attribute.
     */
    valueFormat: _angular_core.InputSignal<string | undefined>;
    /**
     * Determines the minimum date available for selection.
  
  **Note:** If the formatPattern property is not set, the minDate value must be provided in the ISO date format (yyyy-MM-dd).
     */
    minDate: _angular_core.InputSignal<string | undefined>;
    /**
     * Determines the maximum date available for selection.
  
  **Note:** If the formatPattern property is not set, the maxDate value must be provided in the ISO date format (yyyy-MM-dd).
     */
    maxDate: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines how to calculate calendar weeks and first day of the week.
  If not set, the calendar will be displayed according to the currently set global configuration.
     */
    calendarWeekNumbering: _angular_core.InputSignal<"Default" | "ISO_8601" | "MiddleEastern" | "WesternTraditional" | undefined>;
    /**
     * Fired when the selected dates change.
  
  **Note:** If you call `preventDefault()` for this event, the component will not
  create instances of `ui5-date` for the newly selected dates. In that case you should do this manually.
     */
    ui5SelectionChange: _angular_core.OutputEmitterRef<UI5CustomEvent<_Calendar, "selection-change">>;
    /**
     * Available slots for content projection in this component.
     *
     * Slots allow you to insert custom content into predefined areas of the web component.
     * Use the `slot` attribute on child elements to target specific slots.
     *
     * - **calendarLegend**: Defines the calendar legend of the component.
     * - **(default)**: Defines the selected date or dates (depending on the `selectionMode` property)
  for this calendar as instances of `ui5-date` or `ui5-date-range`.
  Use `ui5-date` for single or multiple selection, and `ui5-date-range` for range selection.
     * - **specialDates**: Defines the special dates, visually emphasized in the calendar.
     * - **disabledDates**: Defines the disabled date ranges that cannot be selected in the calendar.
  Use `ui5-date-range` elements to specify ranges of disabled dates.
  Each range can define a start date, an end date, or both.
     *
     * @example
     * ```html
     * <ui5-calendar>
     *   <div slot="header">Custom header content</div>
     *   <p>Default slot content</p>
     * </ui5-calendar>
     * ```
     *
     * @readonly
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}
     */
    readonly slots: ({
        name: string;
        description: string;
        since: string;
    } | {
        name: string;
        description: string;
        since?: undefined;
    })[];
    elementRef: ElementRef<_Calendar>;
    injector: Injector;
    get element(): _Calendar;
    ngAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Calendar, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Calendar, "ui5-calendar, [ui5-calendar]", ["ui5Calendar"], { "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "hideWeekNumbers": { "alias": "hideWeekNumbers"; "required": false; "isSignal": true; }; "primaryCalendarType": { "alias": "primaryCalendarType"; "required": false; "isSignal": true; }; "secondaryCalendarType": { "alias": "secondaryCalendarType"; "required": false; "isSignal": true; }; "formatPattern": { "alias": "formatPattern"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "calendarWeekNumbering": { "alias": "calendarWeekNumbering"; "required": false; "isSignal": true; }; }, { "ui5SelectionChange": "ui5SelectionChange"; }, never, ["*"], true, never>;
}

export { Calendar };
