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 } /** * 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[]; getResourceData(): ResourceData | null; 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[]; setResourceData(resourceData: import('./CalendarTypes').ResourceCalendarData | null): void; } 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; getInitializationReport(): InitializationReport; } 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 } export interface ResourceData { resources: Resource[]; assignments?: ResourceAssignment[]; } export interface Resource { id: string; name: string; type?: string; color?: string; } export interface ResourceAssignment { resourceId: string; eventId: string; } export interface InitializationReport { initialized: boolean; timestamp: number; managers: { [key: string]: { initialized: boolean; error?: string; }; }; }