import type { CalendarOptions } from "../interfaces";
import type { CalendarControllerBindings } from "./calendar-controller-bindings.type";
import type { CalendarControllerMethods } from "./calendar-controller-methods.type";
import type { CalendarControllerEvents } from "./calendar-controller-events.type";
/**
 * Complete Calendar Controller Interface
 * Combines all the above interfaces into a single comprehensive type
 */
export interface TypedCalendarController {
    /** Reactive state bindings */
    bindings: CalendarControllerBindings;
    /** Available methods */
    methods: CalendarControllerMethods;
    /** Event emitters */
    events: CalendarControllerEvents;
    /** Calendar configuration options */
    options?: CalendarOptions;
    selectDate(yearOrDate: number | Date, month?: number, day?: number): void;
    goToNextMonth(): void;
    goToPreviousMonth(): void;
    goToNextYear(): void;
    goToPreviousYear(): void;
    clearSelection(): void;
    setRangeSelectionMode(isRange: boolean): void;
    /** Selected date range with flexible property access */
    selectedDateRange: {
        start: Date | null;
        end: Date | null;
        startDate: Date | null;
        endDate: Date | null;
    };
}
/**
 * Factory Function Type
 * Type for the CalendarController factory function
 */
export type CalendarControllerFactory = (options?: CalendarOptions) => TypedCalendarController;
/**
 * Calendar Controller Instance Type
 * Type for the CalendarControllerClass instance
 */
export interface CalendarControllerInstance extends TypedCalendarController {
}
