import { ChildProperty } from '@syncfusion/ej2-base';
import { View, Orientation } from '../base/type';
import { TimeScaleModel, GroupModel, HeaderRowsModel } from '../models/models';
/**
 * A class that represents the configuration of view-specific settings on scheduler.
 */
export declare class Views extends ChildProperty<Views> {
    /**
     * It accepts the schedule view name, based on which we can define with its related properties in a single object.
     * The applicable view names are,
     * * Day - Denotes Day view of the scheduler.
     * * Week - Denotes Week view of the scheduler.
     * * WorkWeek - Denotes Work Week view of the scheduler.
     * * Month - Denotes Month view of the scheduler.
     * * Year - Denotes Year view of the scheduler.
     * * Agenda - Denotes Agenda view of the scheduler.
     * * MonthAgenda - Denotes Month Agenda view of the scheduler.
     * * TimelineDay - Denotes Timeline Day view of the scheduler.
     * * TimelineWeek - Denotes Timeline Week view of the scheduler.
     * * TimelineWorkWeek - Denotes Timeline Work Week view of the scheduler.
     * * TimelineMonth - Denotes Timeline Month view of the scheduler.
     * * TimelineYear - Denotes Timeline Year view of the scheduler.
     *
     * @default null
     */
    option: View;
    /**
     * To denote whether the view name given on the `option` is active or not.
     * It acts similar to the [`currentView`](../../schedule/#current-view/)
     * property and defines the active view of Schedule.
     *
     * @default false
     */
    isSelected: boolean;
    /**
     * By default, Schedule follows the date-format as per the default culture assigned to it. It is also possible to manually set
     *  specific date format by using the `dateFormat` property. The format of the date range label in the header bar depends on
     *  the `dateFormat` value or else based on the locale assigned to the Schedule.
     *  It gets applied only to the view objects on which it is defined.
     *
     * @default null
     */
    dateFormat: string;
    /**
     * When set to `true`, displays a quick popup with cell or event details on single clicking over the cells or on events.
     *  By default, it is set to `true`. It gets applied only to the view objects on which it is defined.
     *
     * @default false
     */
    readonly: boolean;
    /**
     * It is used to specify the starting hour, from which the Schedule starts to display.
     *  It accepts the time string in a short skeleton format and also, hides the time beyond the specified start time.
     *
     * @default '00:00'
     */
    startHour: string;
    /**
     * It is used to specify the end hour, at which the Schedule ends. It too accepts the time string in a short skeleton format.
     *
     * @default '24:00'
     */
    endHour: string;
    /**
     * It is used to allow or disallow the virtual scrolling functionality.
     *
     * @default false
     */
    allowVirtualScrolling: boolean;
    /**
     * Specifies the maximum number of events to be displayed in a single row.
     * This property is applicable when the 'rowAutoHeight' property is disabled.
     * This property is only applicable for the month view, timeline views, and timeline year view.
     *
     * @default null
     */
    maxEventsPerRow: number;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto the
     *  month date cells.
     *  This template is only applicable for month view day cells.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    cellHeaderTemplate: string | Function;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto the
     *  date header cells. The field that can be accessed via this template is `date`.
     *  It gets applied only to the view objects on which it is defined.
     *
     * @default null
     * @aspType string
     */
    dateHeaderTemplate: string | Function;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto the header date range.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    dateRangeTemplate: string | Function;
    /**
     * The template option which is used to render the customized work cells on the Schedule. Here, the
     *  template accepts either the string or HTMLElement as template design and then the parsed design is displayed onto the work cells.
     *  The field accessible via template is `date`. It gets applied only to the view objects on which it is defined.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    cellTemplate: string | Function;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto the
     *  Year view day cell header.
     *  This template is only applicable for year view header cells.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    dayHeaderTemplate: string | Function;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto the
     *  Year view day cell header.
     *  This template is only applicable for year view header cells.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    monthHeaderTemplate: string | Function;
    /**
     * It accepts either the string or HTMLElement as template design content and parse it appropriately before displaying it onto
     *  the event background. All the event fields mapped to Schedule from dataSource can be accessed within this template code.
     *  It is similar to that of the `template` option available within the `eventSettings` property,
     *  whereas it will get applied only on the events of the view to which it is currently being defined.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    eventTemplate: string | Function;
    /**
     * When set to `false`, it hides the weekend days of a week from the Schedule.
     * The days which are not defined in the working days collection are usually treated as weekend days.
     * Note: By default, this option is not applicable on `Work Week` view.
     * For example, if the working days are defined as [1, 2, 3, 4], then the remaining days of that week will be considered as the
     *  weekend days and will be hidden on all the views.
     *
     * @default true
     */
    showWeekend: boolean;
    /**
     * When set to `true`, displays the week number of the current view date range.
     *
     * @default false
     */
    showWeekNumber: boolean;
    /**
     * When the same view is customized with different intervals, this property allows the user to set different display name
     *  for those views.
     *
     * @default null
     */
    displayName: string;
    /**
     * It accepts the number value denoting to include the number of days, weeks, workweeks or months on the defined view type.
     *
     * @default 1
     */
    interval: number;
    /**
     * This option allows the user to set the first day of a week on Schedule. It should be based on the locale set to it and each culture
     *  defines its own first day of week values. If needed, the user can set it manually on his own by defining the value through
     *  this property. It usually accepts the integer values, whereby 0 is always denoted as Sunday, 1 as Monday and so on.
     *
     * @default 0
     */
    firstDayOfWeek: number;
    /**
     * This property helps render the year view customized months.
     * By default, it is set to `0`.
     *
     * @default 0
     */
    firstMonthOfYear: number;
    /**
     * This option allows the user to set the number of months count to be displayed on the Schedule.
     * {% codeBlock src='schedule/monthsCount/index.md' %}{% endcodeBlock %}
     *
     * @default 12
     * @aspType int
     */
    monthsCount: number;
    /**
     * It is used to set the working days on schedule. The only days that are defined in this collection will be rendered on the
     *  `workWeek` view whereas on other views, it will display all the usual days and simply highlights the working days with different
     *  shade.
     *
     * @default '[1, 2, 3, 4, 5]'
     * @aspType int[]
     */
    workDays: number[];
    /**
     * The template option which is used to render the customized header cells on the schedule. Here, the
     *  template accepts either the string or HTMLElement as template design and then the parsed design is displayed onto the header cells.
     *  All the resource fields mapped within resources can be accessed within this template code.
     *  It gets applied only to the view objects on which it is defined.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    resourceHeaderTemplate: string | Function;
    /**
     * The template option which is used to render the customized header indent cell on the schedule. Here, the
     *  template accepts either the string or HTMLElement as template design and then the parsed design is displayed onto the header indent cell.
     *  It gets applied only to the view objects on which it is defined.
     *
     * @default null
     * @angularType string | object
     * @reactType string | function | JSX.Element
     * @vueType string | function
     * @aspType string
     */
    headerIndentTemplate: string | Function;
    /**
     * By default, Schedule follows the time-format as per the default culture assigned to it.
     * It is also possible to manually set specific time format by using the `timeFormat` property.
     * {% codeBlock src='schedule/timeFormat/index.md' %}{% endcodeBlock %}
     *
     * @default null
     */
    timeFormat: string;
    /**
     * It is used to specify the year view rendering orientation on the schedule.
     * The applicable orientation values are,
     * * Horizontal - Denotes the horizontal orientation of Timeline Year view.
     * * Vertical - Denotes the vertical orientation of Timeline Year view.
     *
     * @default 'Horizontal'
     */
    orientation: Orientation;
    /**
     * Allows to set different timescale configuration on each applicable view modes such as day, week and work week.
     *
     * @default { enable: true, interval: 60, slotCount: 2, majorSlotTemplate: null, minorSlotTemplate: null }
     */
    timeScale: TimeScaleModel;
    /**
     * Allows to set different resource grouping options on all available schedule view modes.
     *
     * @default { byDate: false, byGroupID: true, allowGroupEdit: false, resources:[], hideNonWorkingDays: false }
     */
    group: GroupModel;
    /**
     * Allows defining the collection of custom header rows to display the year, month, week, date and hour label as an individual row
     *  on the timeline view of the scheduler.
     *
     * @default []
     */
    headerRows: HeaderRowsModel[];
    /**
     * This property customizes the number of weeks that are shown in month view. By default, it shows all weeks in the current month.
     *  Use displayDate property to customize the starting week of month.
     * {% codeBlock src='schedule/numberOfWeeks/index.md' %}{% endcodeBlock %}
     *
     * @default 0
     * @aspType int
     */
    numberOfWeeks: number;
    /**
     * Specifies the starting week date at an initial rendering of month view. This property is only applicable for month view.
     *  If this property value is not set, then the month view will be rendered from the first week of the month.
     * {% codeBlock src='schedule/displayDate/index.md' %}{% endcodeBlock %}
     *
     * @default null
     */
    displayDate: Date;
    /**
     * Enables the lazy loading of events for scrolling actions only when the resources grouping property is enabled.
     * Lazy loading allows the scheduler to fetch the appointments dynamically during scroll actions for the currently rendered resource collection.
     * New event data is fetched on-demand as the user scrolls through the schedule content.
     *
     * @default false
     */
    enableLazyLoading: boolean;
}
