import { GdsElement } from '../../gds-element';
/**
 * Used to customize the appearance of a date in the calendar.
 */
export type CustomizedDate = {
    /**
     * The date to customize.
     */
    date: Date;
    /**
     * The color of the indicator.
     */
    color?: string;
    /**
     * The type of indicator - `dot` is default.
     */
    indicator?: 'dot';
    /**
     * Whether the date is disabled or not.
     */
    disabled: boolean;
};
/**
 * @element gds-calendar
 *
 * A calendar is a widget that allows the user to select a date.
 *
 * @event change - Fired when a date is selected.
 * @event gds-date-focused - Fired when focus is changed. Can be cancelled using `event.preventDefault()`.
 */
export declare class GdsCalendar extends GdsElement {
    #private;
    static styles: (import("lit").CSSResult | import("lit").CSSResult[])[];
    static shadowRootOptions: ShadowRootInit;
    /**
     * The currently selected date.
     */
    value?: Date;
    /**
     * The minimum date that can be selected.
     */
    min: Date;
    /**
     * The maximum date that can be selected.
     */
    max: Date;
    /**
     * The date that is currently focused.
     */
    focusedDate: Date;
    /**
     * Whether to disable weekends or not.
     */
    disabledWeekends: boolean;
    /**
     * An array of dates that should be disabled in the calendar.
     */
    disabledDates?: Date[];
    /**
     * The month that is currently focused.
     */
    get focusedMonth(): number;
    set focusedMonth(month: number);
    /**
     * The year that is currently focused.
     */
    get focusedYear(): number;
    set focusedYear(year: number);
    /**
     * Sets the size of the grid. Defaults to "large".
     */
    size: 'small' | 'large';
    /**
     * Whether to show week numbers or not.
     */
    showWeekNumbers: boolean;
    /**
     * Whether to hide extraneous days (that fall ouside of current month)
     */
    hideExtraneousDays: boolean;
    /**
     * Whether to hide the day names shown above the calendar.
     */
    hideDayNames: boolean;
    /**
     * An array of `CustomizedDate` objects that can be used customize the appearance of dates.
     * This can only be set through the property, not through an attribute.
     */
    customizedDates?: CustomizedDate[];
    /**
     * The accessible label for the calendar.
     */
    label?: string;
    /**
     * A template function to customize the accessible date label.
     */
    dateLabelTemplate: (date: Date) => string;
    /**
     * Returns the date cell element for the given day number.
     */
    getDateCell(dayNumber: number): Element | null | undefined;
    private _currentLocale;
    private _elFocusedCell?;
    connectedCallback(): void;
    focus(): void;
    render(): import("lit-html").TemplateResult<1>;
    private _valueChanged;
}
