/**
 * Event Controller
 *
 * Main controller for comprehensive event management functionality
 */
import { ControllerAdapter } from "@uplink-protocol/core";
import { ControllerMetadata } from "@uplink-protocol/core/dist/uplink/interfaces/metadata/controller-metadata.interface";
import { CalendarEvent, EventFilter, EventSort } from './interfaces/event.interfaces';
import { TypedEventController, EventControllerBindings, EventControllerMethods, EventControllerEvents, EventControllerOptions } from './types/event-controller.types';
/**
 * Event Controller Interface
 */
export interface EventControllerInterface extends TypedEventController {
    _selectedEvent: CalendarEvent | null;
    _allEvents: CalendarEvent[];
    _filteredEvents: CalendarEvent[];
    _currentFilter: EventFilter | null;
    _currentSort: EventSort | null;
    _searchQuery: string;
    _searchResults: CalendarEvent[];
    _isLoading: boolean;
    _error: string | null;
    _totalCount: number;
    _currentPage: number;
    _pageSize: number;
    _dateRangeEvents: CalendarEvent[];
    _currentDateRange: {
        start: Date;
        end: Date;
    } | null;
    _upcomingEvents: CalendarEvent[];
    _overdueEvents: CalendarEvent[];
    _conflicts: any[];
    _validationErrors: string[];
    _syncStatus: 'idle' | 'syncing' | 'success' | 'error';
    _lastSyncTime: Date | null;
    _categories: string[];
    _tags: string[];
    _statistics: any;
}
/**
 * Event Controller Class
 */
export declare class EventControllerClass implements EventControllerInterface {
    bindings: EventControllerBindings;
    methods: EventControllerMethods;
    events: EventControllerEvents;
    meta?: ControllerMetadata;
    __adapter?: ControllerAdapter;
    options?: EventControllerOptions;
    _selectedEvent: CalendarEvent | null;
    _allEvents: CalendarEvent[];
    _filteredEvents: CalendarEvent[];
    _currentFilter: EventFilter | null;
    _currentSort: EventSort | null;
    _searchQuery: string;
    _searchResults: CalendarEvent[];
    _isLoading: boolean;
    _error: string | null;
    _totalCount: number;
    _currentPage: number;
    _pageSize: number;
    _dateRangeEvents: CalendarEvent[];
    _currentDateRange: {
        start: Date;
        end: Date;
    } | null;
    _upcomingEvents: CalendarEvent[];
    _overdueEvents: CalendarEvent[];
    _conflicts: any[];
    _validationErrors: string[];
    _syncStatus: 'idle' | 'syncing' | 'success' | 'error';
    _lastSyncTime: Date | null;
    _categories: string[];
    _tags: string[];
    _statistics: any;
    private eventManager;
    private initialized;
    constructor(options?: EventControllerOptions);
    /**
     * Initialize the controller
     */
    initialize(options?: EventControllerOptions): Promise<void>;
    /**
     * Get controller status
     */
    getStatus(): {
        initialized: boolean;
        totalEvents: number;
        health: "good" | "error";
        lastError: string | null;
    };
    /**
     * Destroy the controller
     */
    destroy(): Promise<void>;
    private initializeBindings;
    private initializeMethods;
    private initializeEvents;
    private initializeMetadata;
    private createEvent;
    private updateEvent;
    private deleteEvent;
    private getEventById;
    private getAllEvents;
    private queryEvents;
    private filterEvents;
    private sortEvents;
    private searchEvents;
    private getEventsForDate;
    private getEventsForDateRange;
    private loadAllEvents;
    private loadUpcomingEvents;
    private loadCategories;
    private setupEventSubscriptions;
    private getEventsForWeek;
    private getEventsForMonth;
    private getUpcomingEvents;
    private getOverdueEvents;
    private bulkCreateEvents;
    private bulkUpdateEvents;
    private bulkDeleteEvents;
    private validateEvent;
    private validateEventConstraints;
    private duplicateEvent;
    private moveEvent;
    private rescheduleEvent;
    private cancelEvent;
    private completeEvent;
    private createRecurringEvent;
    private updateRecurringEvent;
    private deleteRecurringEvent;
    private getRecurrenceOccurrences;
    private checkConflicts;
    private resolveConflict;
    private findAlternativeTimeSlots;
    private getCategories;
    private addCategory;
    private removeCategory;
    private getTags;
    private addTag;
    private removeTag;
    private importEvents;
    private exportEvents;
    private getStatistics;
    private getEventAnalytics;
    private syncWithProvider;
    private getSyncStatus;
    private configureSyncProvider;
    private scheduleReminder;
    private cancelReminder;
    private saveSearch;
    private getSavedSearches;
    private executeSavedSearch;
    private clearAllEvents;
    private backup;
    private restore;
    private getHealth;
}
/**
 * Event Controller Factory Function
 */
export declare const EventController: (options?: EventControllerOptions) => EventControllerClass;
