/**
 * 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: "<masaIndex>-<Shukla|Krishna>"
 * 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