import type { Bilingual, Deity } from '../types.js';
import type { KathaSlug } from '../kathas/index.js';
import type { PujaSlug } from '../puja/index.js';
import type { MantraSlug } from '../mantras/index.js';
import type { SuktaSlug } from '../suktas/index.js';
import type { StotraSlug } from '../stotras/index.js';
/** The kind of observance an entry is (the discriminator). */
export type FestivalCategory = 'ekadashi' | 'tithi-vrat' | 'festival';
/** The two lunar fortnights. A *name*, not a date. */
export type Paksha = 'shukla' | 'krishna';
/**
 * A unified entry across every category — a single shape with a `category`
 * discriminator and category-specific OPTIONAL fields (chosen over a
 * discriminated union so `getAllFestivals()` returns one array type and the
 * data files stay uniform, mirroring `TirthaEntry`). Which optionals are
 * populated is governed by `category`:
 *  - `ekadashi`   → `paksha`, `month`, `isAdhikaMaasa?`
 *  - `tithi-vrat` → `paksha?`, `tithi`, `recurrence`
 *  - `festival`   → `month?`, `tithi?`
 */
export interface FestivalEntry {
    /** Stable kebab-case slug, unique across the module ('kamada-ekadashi'). */
    id: string;
    category: FestivalCategory;
    /** Display name of the observance. */
    name: Bilingual;
    /** Devanagari proper name, where it differs usefully from `name.hi`. */
    nameSanskrit?: string;
    /**
     * Roster cross-link to per-deity content (aarti/chalisa/…). `null` when the
     * observance is not tied to a single roster deity. Every Ekādaśī → `vishnu`.
     */
    deity: Deity | null;
    /** One- or two-sentence significance / phala (what observing it grants). */
    significance: Bilingual;
    /**
     * The vrat-kathā / origin narrative, as a researched sense-summary (never a
     * copied translation). Absent on the few phala-stuti observances the source
     * text gives no story for (Aparā, Kāmikā, Pāpāṅkuśā Ekādaśī).
     */
    story?: Bilingual;
    /**
     * The **scriptural origin** of the observance/story — the Purāṇa + narrator
     * frame (e.g. "Padma Purāṇa, narrated by Kṛṣṇa to Yudhiṣṭhira"). This is
     * content (like a sūkta's `vedicSource`), NOT a digitization source. Omitted
     * where no single text is confidently attributable.
     */
    storySource?: Bilingual;
    /** Ships provisional until a human pass signs off the story details. */
    reviewPending?: boolean;
    /** The fortnight the observance falls in (ekadashi; some tithi-vrats). */
    paksha?: Paksha;
    /** The lunar month, as a display name (ekadashi; some festivals). */
    month?: Bilingual;
    /** The tithi the observance falls on (tithi-vrat; some festivals). */
    tithi?: Bilingual;
    /** How often it recurs, described in words — never computed (tithi-vrat). */
    recurrence?: Bilingual;
    /**
     * `true` for the two Ekādaśīs that occur ONLY in the intercalary Adhika
     * (Puruṣottama) māsa — Padminī (śukla) and Paramā (kṛṣṇa). They are over and
     * above the 24 regular Ekādaśīs and appear only once every ~3 years.
     */
    isAdhikaMaasa?: boolean;
    kathaSlug?: KathaSlug;
    pujaSlug?: PujaSlug;
    mantraSlugs?: readonly MantraSlug[];
    suktaSlugs?: readonly SuktaSlug[];
    stotraSlugs?: readonly StotraSlug[];
    /** A scripture slug ('bhagavad-geeta') — e.g. Mokṣadā ↔ Gītā Jayantī. */
    scriptureSlug?: string;
}
//# sourceMappingURL=types.d.ts.map