/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { Observable, Subject } from 'rxjs';
import { SlotDragStartEvent } from '../events/slot-drag-start-event';
import { DateRange, SchedulerView } from '../types';
import { ExtendedSlotRange, slotDragEventName, SlotRange } from '../types/slot-selection';
import * as i0 from "@angular/core";
/**
 * A service for publishing the view state and actions to the Scheduler.
 */
export declare class ViewStateService {
    /**
     * A stream for publishing the visible date range of the current view to the Scheduler.
     */
    readonly dateRange: Observable<DateRange>;
    /**
     * A stream for publishing the changes to the selected date that are initiated from the view.
     */
    readonly nextDate: Observable<Date>;
    /**
     * A stream fro navigating from the current to another view.
     */
    readonly navigate: Observable<any>;
    /**
     * A stream for navigating from the current to another view.
     */
    readonly viewEvent: Observable<any>;
    /**
     * A stream for indicating that the view layout finished.
     */
    readonly layoutEnd: Observable<any>;
    /**
     * A stream for indicating that the view options has changed.
     */
    readonly optionsChange: Observable<any>;
    /**
     * A stream indicating that the user has started making a new slot selection.
     */
    readonly slotSelectionStart: Observable<SlotRange>;
    /**
     * A stream indicating that the user has dragged over a different slot while making a selection.
     */
    readonly slotSelectionDrag: Observable<SlotRange>;
    /**
     * A stream indicating that the user has finished making a slot selection.
     */
    readonly slotSelectionEnd: Observable<SlotRange>;
    /**
     * @hidden
     */
    toggleWorkHours: Subject<any>;
    /**
     * @hidden
     */
    toolbarVisibilityByView: Map<SchedulerView, boolean>;
    private dateRangeSource;
    private nextDateSource;
    private navigateSource;
    private viewEventSource;
    private layoutEndSource;
    private optionsChangeSource;
    private slotSelectionStartSource;
    private slotSelectionStartDragSource;
    private slotSelectionStartEndSource;
    constructor();
    /**
     * Publishes the date that will be displayed by the Scheduler
     * typically as a result from processing a navigation action.
     */
    notifyNextDate(date: Date): void;
    /**
     * Publishes the visible date range of the view.
     * The view will calculate and set the new data range when
     * the selected date changes.
     */
    notifyDateRange(range: DateRange): void;
    /**
     * Notifies the Scheduler that the view has completed its layout.
     */
    notifyLayoutEnd(): void;
    /**
     * Navigates to another view.
     */
    navigateTo(args: any): void;
    /**
     * Notifies the Scheduler that the view options have been changed.
     */
    notifyOptionsChange(changes?: any): void;
    /**
     * Emits a DOM event to the Scheduler.
     */
    emitEvent(name: string | slotDragEventName, args?: any): void;
    /** @hidden */
    notifySlotSelectionStart(selection: SlotDragStartEvent): void;
    /** @hidden */
    notifySlotSelectionDrag(selection: ExtendedSlotRange): void;
    /** @hidden */
    notifySlotSelectionEnd(selection: ExtendedSlotRange): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ViewStateService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ViewStateService>;
}
