/**
 * Shared utility functions for event blocks
 */
import type { CardOrientation, EventLayout, PublicEvent } from '../../../../blocks/events/shared/types';
/** Day names starting from Sunday — kept for back-compat re-export. */
export { DAY_NAMES, MONTH_NAMES } from '@riverbankcms/calendar';
export type { WeekStart } from '@riverbankcms/calendar';
/** 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;
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;
export { addMonths, formatCalendarTitle, formatDateKey, getEndOfMonth, getMonthCalendarDays, getOrderedDayNames, getStartOfMonth, getThreeMonthRange, getWeekCalendarDays, isToday, MAX_EVENTS_PER_DAY, } from '@riverbankcms/calendar';
/**
 * Group events by their local date (YYYY-MM-DD key in each event's own
 * timezone). Thin domain wrapper over `groupItemsByDate` from the calendar
 * package; preserves the historical `Map<string, PublicEvent[]>` shape.
 */
export declare function groupEventsByDate(events: PublicEvent[]): Map<string, PublicEvent[]>;
/**
 * 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;
