export interface Attendee {
    /** Unique identifier for the attendee */
    id: string;
    /** Display name of the attendee */
    name: string;
    /** Avatar image URL */
    avatar?: string;
}
export interface Meeting {
    /** Unique identifier for the meeting */
    id: string;
    /** Meeting title */
    title: string;
    /** Meeting start time */
    startTime: Date;
    /** Meeting end time */
    endTime: Date;
    /** Host name */
    host: string;
    /** List of attendees */
    attendees: Attendee[];
    /** Color variant for the meeting indicator */
    color?: 'brand' | 'error' | 'warning' | 'success' | 'purple' | 'blue' | 'orange';
    /** Whether this is the next upcoming meeting */
    isNext?: boolean;
    /** Minutes until meeting starts (for "In X mins" display) */
    minutesUntil?: number;
}
export interface WeekCalendarProps {
    /** The currently selected/displayed date */
    value?: Date;
    /** Callback when the date changes */
    onChange?: (date: Date) => void;
    /** Minimum selectable date */
    minDate?: Date;
    /** Maximum selectable date */
    maxDate?: Date;
    /** List of meetings to display */
    meetings?: Meeting[];
    /** Callback when a meeting is clicked */
    onMeetingClick?: (meeting: Meeting) => void;
    /** Callback when the join button is clicked */
    onJoinMeeting?: (meeting: Meeting) => void;
    /** Custom class name */
    className?: string;
    /** Text direction for RTL support */
    dir?: 'ltr' | 'rtl';
    /** Week starts on (0 = Sunday, 1 = Monday) */
    weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    /** Maximum number of attendees to show before +N */
    maxAttendees?: number;
    /** Whether to show the "Next Meeting" section */
    showNextMeeting?: boolean;
    /** Whether to show the "All Meetings" section */
    showAllMeetings?: boolean;
    /** View mode: 'list' (default), 'list-edit' (list with drag handles), or 'grid' */
    viewMode?: 'list' | 'list-edit' | 'grid';
    /** Callback when view mode changes */
    onViewModeChange?: (mode: 'list' | 'list-edit' | 'grid') => void;
    /** Time interval in minutes for grid display and snapping in grid view (default: 30).
     * Note: List-edit mode always snaps to 15-minute intervals for finer control. */
    timeInterval?: 15 | 30 | 60;
    /** Start hour for grid view (0-23, default: auto-fit to meetings or 8) */
    gridStartHour?: number;
    /** End hour for grid view (0-23, default: auto-fit to meetings or 18) */
    gridEndHour?: number;
    /** Pixels per minute for list-edit card height (default: 2) */
    listEditPixelsPerMinute?: number;
    /** Called when a single meeting's time changes */
    onMeetingTimeChange?: (meeting: Meeting, newStartTime: Date, newEndTime: Date) => void;
    /** Called with full updated meetings array */
    onMeetingsChange?: (meetings: Meeting[]) => void;
    /** Whether to show the view mode toggle (list/edit/grid selector). Default: false */
    showViewModeToggle?: boolean;
}
interface MeetingCardProps {
    meeting: Meeting;
    variant?: 'next' | 'list';
    onJoin?: () => void;
    onClick?: () => void;
    maxAttendees?: number;
}
declare function MeetingCard({ meeting, variant, onJoin, onClick, maxAttendees, }: MeetingCardProps): import("react/jsx-runtime").JSX.Element;
/**
 * @deprecated Use `Calendar` with `view="week"` instead. See migration guide in
 * docs/superpowers/specs/2026-04-17-calendar-redesign-design.md
 */
declare function WeekCalendar({ value, onChange, minDate, maxDate, meetings, onMeetingClick, onJoinMeeting, className, dir, weekStartsOn, maxAttendees, showNextMeeting, showAllMeetings, viewMode: viewModeProp, onViewModeChange, timeInterval, gridStartHour, gridEndHour, listEditPixelsPerMinute, onMeetingTimeChange, onMeetingsChange, showViewModeToggle, }: WeekCalendarProps): import("react/jsx-runtime").JSX.Element;
declare namespace WeekCalendar {
    var displayName: string;
}
export type { MeetingCardProps };
export { MeetingCard, WeekCalendar };
