/** * Festival Calculation Logic - v3.1.0 * * Fixes applied over v3.0.0: * - Dahi Handi: moved to Shravana (masa 4), tithi 24 * - Ahoi Ashtami: moved to Kartika (masa 7), tithi 23 * - Mauni Amavasya: moved to Magha (masa 10), tithi 30 * - Holashtak Begins: corrected to Phalguna Shukla Ashtami (tithi 8) * - Kalki Jayanti: corrected to Shravana Shukla Shashthi (tithi 6) * - Vat Savitri Vrat regional: corrected to North India * - Vat Purnima regional: corrected to Maharashtra/Gujarat * - Narada Jayanti: moved to Vaishakha (masa 1), tithi 16 * - Masik Shivaratri: suppressed in Magha (Maha Shivaratri handled separately) * - Maghi: marked as solar-approximate, guarded with vara === 0 (Sunday nearest Makar) * - Varalakshmi Vratam: moved to vara-based logic (Friday before Shravana Purnima) * - Gayatri Jayanti (Jyeshtha): disambiguated from Shravana Purnima entry * - Parivartini/Parsva Ekadashi duplicate: consolidated under EKADASHI_NAMES * - Minor additions: Skanda Sashti (masa 7 + vara), Kamada Ekadashi description, * Chaitra Navratri day-3/day-9 stubs, Shraddha Paksha daily observance. */ import type { Festival, FestivalCalculationOptions, FestivalCategory } from '../types/festivals'; import { Observer } from 'astronomy-engine'; /** * Ekadashi Names by Masa and Paksha * * Keys: "-" * Tithis: Shukla Ekadashi = 11, Krishna Ekadashi = 26 */ export declare const EKADASHI_NAMES: { [key: string]: string; }; /** * Get Ekadashi name for a given Masa and Paksha. */ export declare function getEkadashiName(masaIndex: number, paksha: string, isAdhika?: boolean): string; /** * Uses Udaya Tithi (sunrise Tithi) as primary, with full-day tithi * look-ahead for accurate festival date assignment per Drik Panchang * convention. * * Three-pass approach: * 1. Sunrise tithi — standard udaya-tithi festivals * 2. Midday tithi — Madhyahna-vyapini (most festivals) * 3. Sunset tithi — Aparahna/Sayahna-vyapini (e.g. Dussehra, Vat Savitri) * * When a tithi crosses a month boundary (Amavasya → Pratipada), the * midday/sunset pass uses the NEXT masa index automatically. * * Also handles: * - Adhika Masa festivals (only Ekadashi/Pradosham in Adhika) * - Kshaya Tithi (short tithis that don't touch any sunrise) * - Vriddhi Tithi (long tithis spanning two sunrises — festival on FIRST day) */ export declare function getFestivals(options: FestivalCalculationOptions): Festival[]; /** * Pure festival detection by Tithi — no astronomical dependencies. * Recommended for unit testing. * * @param masaIndex - 0–11 (Chaitra → Phalguna) * @param isAdhika - intercalary month flag * @param udayaTithi - 1–30 (1-indexed) * @param paksha - "Shukla" | "Krishna" * @param vara - day of week 0=Sun…6=Sat (optional, used for vara-based festivals) */ export declare function getFestivalsByTithi(masaIndex: number, isAdhika: boolean, udayaTithi: number, paksha: string, vara?: number): string[]; export interface UpcomingFestivalsOptions { /** Start date to scan from */ date: Date; /** Observer location for sunrise calculations */ observer: Observer; /** Number of days to scan ahead (default: 30) */ days?: number; /** Timezone offset in minutes (e.g. 330 for IST) */ timezoneOffset?: number; /** Minimum festival category to include (default: all) */ categories?: FestivalCategory[]; /** Calendar type (default: 'purnimanta') */ calendarType?: 'amanta' | 'purnimanta'; } /** * Scan ahead N days and return all upcoming festivals. * * Useful for "upcoming festivals" widgets where calling `getPanchangam` for * a single date might return zero festivals. * * @param options - Scan options including date, observer, and number of days * @returns Array of festivals with their dates, sorted chronologically * * @example * ```typescript * const upcoming = getUpcomingFestivals({ * date: new Date(), * observer: new Observer(12.97, 77.59, 920), * days: 30, * timezoneOffset: 330 * }); * ``` */ export declare function getUpcomingFestivals(options: UpcomingFestivalsOptions): Festival[]; //# sourceMappingURL=festivals.d.ts.map