import { IEventBus, CalendarEvent, CalendarView } from './CalendarTypes'; /** * Complete type definition for all managers returned by ManagerFactory */ export interface CalendarManagers { eventManager: EventManager; eventRenderer: EventRenderingService; gridManager: GridManager; scrollManager: ScrollManager; navigationManager: unknown; // Avoid interface conflicts viewManager: ViewManager; calendarManager: CalendarManager; dragDropManager: unknown; // Avoid interface conflicts allDayManager: unknown; // Avoid interface conflicts resizeHandleManager: ResizeHandleManager; 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 EventManager extends IManager { loadData(): Promise; getEvents(): CalendarEvent[]; getEventsForPeriod(startDate: Date, endDate: Date): CalendarEvent[]; navigateToEvent(eventId: string): boolean; } export interface EventRenderingService extends IManager { // EventRenderingService doesn't have a render method in current implementation } export interface GridManager extends IManager { render(): Promise; getDisplayDates(): Date[]; } export interface ScrollManager extends IManager { scrollTo(scrollTop: number): void; scrollToHour(hour: number): void; } // Use a more flexible interface that matches actual implementation export interface NavigationManager extends IManager { [key: string]: unknown; // Allow any properties from actual implementation } export interface ViewManager extends IManager { // ViewManager doesn't have setView in current implementation getCurrentView?(): CalendarView; } export interface CalendarManager extends IManager { setView(view: CalendarView): void; setCurrentDate(date: Date): void; } export interface DragDropManager extends IManager { // DragDropManager has different interface in current implementation } export interface AllDayManager extends IManager { [key: string]: unknown; // Allow any properties from actual implementation } export interface ResizeHandleManager extends IManager { // ResizeHandleManager handles hover effects for resize handles }