/**
 * Shared utility functions for event blocks
 */
import type { CardOrientation, EventLayout, PublicEvent, WeekStart } from '../../../../blocks/events/shared/types';
/** Column class mappings for grid layouts */
export declare const COLUMN_CLASSES: Record<string, string>;
/**
 * Build container class based on layout mode
 * @param layout - 'grid', 'stack', or 'compact'
 * @param columns - Number of columns for grid layout ('2', '3', '4')
 * @returns `rb-*` class string for the container
 */
export declare function getContainerClass(layout: EventLayout, columns: string): string;
/**
 * Get card orientation based on layout mode
 * @param layout - 'grid', 'stack', or 'compact'
 * @returns 'horizontal' for stack layout, 'vertical' for grid and compact layouts
 */
export declare function getCardOrientation(layout: EventLayout): CardOrientation;
/** Day names starting from Sunday */
export declare const DAY_NAMES: string[];
/** Month names */
export declare const MONTH_NAMES: string[];
type DateTimeFormatOptions = {
    /** When omitted, runtime local timezone is used. */
    timeZone?: string | null;
    locale?: string;
};
/**
 * Format date for display.
 * Returns: "Monday, January 15, 2025"
 */
export declare function formatDate(isoTimestamp: string, options?: DateTimeFormatOptions): string;
/**
 * Format time for display.
 * Returns: "10:00 AM"
 */
export declare function formatTime(isoTimestamp: string, options?: DateTimeFormatOptions): string;
export declare function formatEventDateParts(args: {
    startsAt: string;
    endsAt: string;
    timeZone?: string | null;
    locale?: string;
}): {
    date: string;
    timeRange: string;
};
export declare function formatTeamMemberNames(names: readonly string[]): string | null;
export declare function formatEventTeacherLine(event: PublicEvent): string | null;
/**
 * Format a date as YYYY-MM-DD for use as a map key
 */
export declare function formatDateKey(date: Date): string;
/**
 * Check if a date is today
 */
export declare function isToday(date: Date): boolean;
/**
 * Get the start of month for a given date
 */
export declare function getStartOfMonth(date: Date): Date;
/**
 * Get the end of month for a given date
 */
export declare function getEndOfMonth(date: Date): Date;
/**
 * Add months to a date
 */
export declare function addMonths(date: Date, months: number): Date;
/**
 * Get date range for 3 months centered on a given date
 * @param date Reference date
 * @returns Date range spanning previous, current, and next months (ISO strings)
 */
export declare function getThreeMonthRange(date: Date): {
    from: string;
    to: string;
};
/** Maximum events to show per calendar day before "+N more" indicator */
export declare const MAX_EVENTS_PER_DAY = 3;
export type { WeekStart };
/**
 * Get calendar days for a month view
 * Returns array of Date objects including padding days from prev/next months
 * Always returns 42 days (6 rows of 7) for consistent grid layout
 */
export declare function getMonthCalendarDays(year: number, month: number, startOfWeek: WeekStart): Date[];
/**
 * Get calendar days for a week view
 * Returns array of 7 Date objects for the week containing baseDate
 */
export declare function getWeekCalendarDays(baseDate: Date, startOfWeek: WeekStart): Date[];
/**
 * Group events by date (YYYY-MM-DD key)
 */
export declare function groupEventsByDate(events: PublicEvent[]): Map<string, PublicEvent[]>;
/**
 * Get ordered day names based on week start preference
 */
export declare function getOrderedDayNames(startOfWeek: WeekStart): string[];
/**
 * Format calendar header title
 * For month view: "January 2025"
 * For week view: "January 5 - 11, 2025" or "December 30 - January 5, 2025"
 */
export declare function formatCalendarTitle(viewDate: Date, calendarView: 'month' | 'week', calendarDays: Date[]): string;
/**
 * Format event price for display.
 * @returns "Free", "$25", "Pass Only", "Members Only", "Course ($50)", etc.
 */
export declare function formatEventPrice(event: PublicEvent): string;
export type ResolvedEventCta = {
    label: string;
    href: string;
    /** True when the CTA should be hidden (e.g. sold-out events) */
    hidden: boolean;
};
/**
 * Resolve the CTA state for an event.
 * Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
 * and course-specific defaults consistent.
 */
export declare function resolveEventCta(event: PublicEvent, buttonText?: string | null): ResolvedEventCta;
