import { TemplateRef } from '@angular/core';
import { EuiCalendarNavigationEvent, EuiCalendarHeaderContext, EuiCalendarMode } from './models';
import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
import * as i0 from "@angular/core";
export declare class EuiCalendarHeaderComponent {
    /**
     * Determines whether weekends are included in the week view.
     */
    containWeekends: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
    /**
     * Format options for displaying the date.
     * If not provided, defaults will be used based on the current mode.
     * See {@link `getFormattedOptions`} method for details.
     */
    dateFormatOptions: import("@angular/core").InputSignal<Intl.DateTimeFormatOptions>;
    /**
     * The mode of the calendar header. This can be 'monthly', 'weekly', or 'daily'.
     * Defaults to 'monthly'.
     */
    mode: import("@angular/core").InputSignal<EuiCalendarMode>;
    /**
     * The currently selected date. This is a required input signal.
     * It should be a `Date` object representing the current month, week, or day, depending on the mode.
     *
     * Important: For weekly mode, ensure the date represents the first day of the week.
     */
    currentDate: import("@angular/core").ModelSignal<Date>;
    /**
     * An optional sub-label to display below the main date label.
     * Defaults to an empty string.
     */
    subLabel: import("@angular/core").InputSignal<string>;
    /**
     * Determines whether the "Today" button is displayed.
     * Defaults to `true`.
     */
    showTodayButton: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
    /**
     * Determines whether the navigation buttons (previous/next) are displayed.
     * Defaults to `true`.
     */
    showNavigationButtons: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
    /**
     * Starting day of the week (0=Monday, 1=Tuesday, ..., 6=Sunday or 'monday', 'tue', 'wed', etc.)
     */
    startingDay: import("@angular/core").InputSignalWithTransform<number, NumberInput>;
    /**
     * The format used to display the current month.
     * Defaults to `'MMMM yyyy'` (e.g., "October 2023").
     */
    dateFormat: import("@angular/core").InputSignal<string>;
    /**
     * A custom template for the header. If provided, it will replace the default header layout.
     * The template context is of type `HeaderContext`.
     * Defaults to `null`.
     */
    customTemplate: import("@angular/core").InputSignal<TemplateRef<EuiCalendarHeaderContext>>;
    /**
     * Emits when the navigation buttons are clicked (previous/next).
     */
    navigationClicked: import("@angular/core").OutputEmitterRef<EuiCalendarNavigationEvent>;
    /**
     * Emits when the "Today" button is clicked.
     */
    todayClicked: import("@angular/core").OutputEmitterRef<Date>;
    /**
     * True if the current date is today.
     * For weekly mode, checks if today falls within the week that contains the current date.
     */
    isCurrentDateToday: import("@angular/core").Signal<boolean>;
    /**
     * Formatted date string for display in the header (e.g., "September 2023" or "Week 36, 2023").
     * It is formatted based on the current mode.
     */
    formattedDate: import("@angular/core").Signal<string>;
    /**
     * Context object passed to the custom header template.
     */
    headerContext: import("@angular/core").Signal<EuiCalendarHeaderContext>;
    /**
     * Calculates the maximum width required to display the longest month name
     * in the current locale. This helps to prevent layout shifts when navigating
     * between months with varying name lengths.
     *
     * The width is estimated in 'ch' units (character width) based on the length
     * of the longest month name.
     */
    maxMonthWidth: import("@angular/core").Signal<string>;
    private formattedOptions;
    private locale;
    /**
     * Navigates to the previous month, week, or day based on the current mode.
     * Emits a `navigationClicked` event with details of the navigation action.
     */
    navigatePrevious(): void;
    /**
     * Navigates to the next month, week, or day based on the current mode.
     * Emits a `navigationClicked` event with details of the navigation action.
     */
    navigateNext(): void;
    /**
     * Navigates to today's date.
     * Emits a `todayClicked` event with today's date.
     */
    goToToday(): void;
    /**
     * Determines the appropriate date formatting options based on the current mode.
     * - Monthly: Displays full month name and year (e.g., "October 2023").
     * - Weekly: Displays short month name, day, and year (e.g., "Oct 1, 2023").
     * - Daily: Displays full weekday name, month name, day, and year (e.g., "Monday, October 2, 2023").
     */
    private getFormattedOptions;
    /**
     * Calculates the start and end dates of the week that contains the given date.
     * The week always includes the current date and starts on the specified startingDay.
     * For example:
     * - If date is Monday 20/10/2025 and startingDay is Tuesday (1), week is Tue 14/10 - Mon 20/10
     * - If date is Monday 20/10/2025 and startingDay is Monday (0), week is Mon 20/10 - Sun 26/10
     * - If date is Thursday 23/10/2025 and startingDay is Tuesday (1), week is Tue 21/10 - Mon 27/10
     * - If containWeekends is false, the week spans 5 days instead of 7 (e.g., Mon-Fri)
     * @param date The reference date (must be included in the returned week range)
     * @param startDay The day the week starts on (0=Monday, 1=Tuesday, ..., 6=Sunday)
     * @returns An object containing the start and end dates of the week
     */
    private getWeekRange;
    /**
     * Normalizes the starting day input to a DayOfWeek enum value
     * @param {string|number} startingDay - Day name, abbreviation, or number
     * @returns {number} Normalized day index (0-6)
     * @throws {Error} If the starting day is invalid
     */
    private startingDayTransformer;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiCalendarHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiCalendarHeaderComponent, "eui-calendar-header", never, { "containWeekends": { "alias": "containWeekends"; "required": false; "isSignal": true; }; "dateFormatOptions": { "alias": "dateFormatOptions"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "currentDate": { "alias": "currentDate"; "required": true; "isSignal": true; }; "subLabel": { "alias": "subLabel"; "required": false; "isSignal": true; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; "isSignal": true; }; "showNavigationButtons": { "alias": "showNavigationButtons"; "required": false; "isSignal": true; }; "startingDay": { "alias": "startingDay"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "customTemplate": { "alias": "customTemplate"; "required": false; "isSignal": true; }; }, { "currentDate": "currentDateChange"; "navigationClicked": "navigationClicked"; "todayClicked": "todayClicked"; }, never, never, true, never>;
}
//# sourceMappingURL=eui-calendar-header.component.d.ts.map