import type * as React from 'react';
export type CalendarViewType = 'month' | 'week' | 'day';
export type EventColor = 'brand' | 'gray' | 'error' | 'warning' | 'success' | 'pink' | 'purple' | 'blue' | 'orange';
export interface EventAttendee {
    name: string;
    avatar?: string;
    status?: 'yes' | 'no' | 'awaiting';
}
export interface CalendarEvent {
    id: string;
    title: string;
    start: Date | string;
    end?: Date | string;
    color?: EventColor;
    description?: string;
    location?: string;
    reminder?: string;
    attendees?: EventAttendee[];
    allDay?: boolean;
}
export interface EventDragInfo {
    event: CalendarEvent;
    start: Date;
    end: Date;
}
export interface EventResizeInfo {
    event: CalendarEvent;
    edge: 'start' | 'end';
    start: Date;
    end: Date;
}
export interface EventCreateInfo {
    start: Date;
    end: Date;
    allDay?: boolean;
}
export interface CalendarProps {
    events?: CalendarEvent[];
    selectedDate?: Date;
    onDateSelect?: (date: Date) => void;
    view?: CalendarViewType;
    onViewChange?: (view: CalendarViewType) => void;
    weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    className?: string;
    children?: React.ReactNode;
    onEventClick?: (event: CalendarEvent) => void;
}
export interface CalendarContentProps {
    view?: CalendarViewType;
    onEventClick?: (event: CalendarEvent) => void;
    onMoreEventsClick?: (date: Date, events: CalendarEvent[]) => void;
    onEventCopy?: (event: CalendarEvent) => void;
    onEventDelete?: (event: CalendarEvent) => void;
    onEventEdit?: (event: CalendarEvent) => void;
    startHour?: number;
    endHour?: number;
    maxEventsPerCell?: number;
}
export interface CalendarContext {
    events: CalendarEvent[];
    selectedDate: Date;
    view: CalendarViewType;
    weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    idPrefix: string;
    selectedEventId: string | null;
    selectEvent: (id: string) => void;
    clearSelectedEvent: () => void;
    onDateSelect: (date: Date) => void;
    onViewChange: (view: CalendarViewType) => void;
    navigateNext: () => void;
    navigatePrev: () => void;
    goToToday: () => void;
}
