import { IEventBus, ICalendarEvent, CalendarView } from './CalendarTypes'; /** * Complete type definition for all managers returned by ManagerFactory */ export interface ICalendarManagers { eventManager: IEventManager; eventRenderer: IEventRenderingService; gridManager: IGridManager; scrollManager: IScrollManager; navigationManager: unknown; // Avoid interface conflicts viewManager: IViewManager; calendarManager: ICalendarManager; dragDropManager: unknown; // Avoid interface conflicts allDayManager: unknown; // Avoid interface conflicts resizeHandleManager: IResizeHandleManager; edgeScrollManager: unknown; // Avoid interface conflicts dragHoverManager: unknown; // Avoid interface conflicts headerManager: unknown; // Avoid interface conflicts } /** * Base interface for managers with optional initialization and refresh */ interface IManager { initialize?(): Promise | void; refresh?(): void; } export interface IEventManager extends IManager { loadData(): Promise; getEvents(): ICalendarEvent[]; getEventsForPeriod(startDate: Date, endDate: Date): ICalendarEvent[]; navigateToEvent(eventId: string): boolean; } export interface IEventRenderingService extends IManager { // EventRenderingService doesn't have a render method in current implementation } export interface IGridManager extends IManager { render(): Promise; } export interface IScrollManager extends IManager { scrollTo(scrollTop: number): void; scrollToHour(hour: number): void; } // Use a more flexible interface that matches actual implementation export interface INavigationManager extends IManager { [key: string]: unknown; // Allow any properties from actual implementation } export interface IViewManager extends IManager { // ViewManager doesn't have setView in current implementation getCurrentView?(): CalendarView; } export interface ICalendarManager extends IManager { setView(view: CalendarView): void; setCurrentDate(date: Date): void; } export interface IDragDropManager extends IManager { // DragDropManager has different interface in current implementation } export interface IAllDayManager extends IManager { [key: string]: unknown; // Allow any properties from actual implementation } export interface IResizeHandleManager extends IManager { // ResizeHandleManager handles hover effects for resize handles }