astrology-insights
Version:
Comprehensive Vedic astrology engine for Node.js — Panchang, birth charts (Kundli), Vimshottari Dasha, divisional charts, dosha analysis, and planetary remedies. Swiss Ephemeris precision, validated against Drik Panchang.
125 lines (111 loc) • 2.68 kB
text/typescript
/**
* Shared types for Panchang v2 calculations.
* NOTE: The existing types/panchang.ts is preserved as-is — do NOT import from here
* in files that already import from '../types/panchang'.
*/
export interface PanchangEntry {
name: string;
number: number;
startTime: string;
endTime: string;
progress: number;
}
export interface NakshatraEntry extends PanchangEntry {
pada: number;
lord: string;
deity?: string;
}
export interface RashiInfo {
name: string;
lord: string;
degree: number;
number: number;
}
export interface VaraInfo {
name: string;
number: number;
}
export interface TimingEntry {
name: string;
startTime: string;
endTime: string;
description?: string;
}
export interface PanchangResult {
date: string;
location: { lat: number; lon: number; timezone: string; name?: string };
sunrise: string;
sunset: string;
moonrise: string;
moonset: string;
tithi: PanchangEntry[];
nakshatra: NakshatraEntry[];
yoga: PanchangEntry[];
karana: PanchangEntry[];
vara: VaraInfo;
moonSign: RashiInfo;
sunSign: RashiInfo;
moonPhase: { name: string; illumination: number };
paksha: 'Shukla' | 'Krishna';
auspiciousMuhurats: TimingEntry[];
inauspiciousKalams: TimingEntry[];
// Sun Movement
sunNakshatra: NakshatraEntry;
ayana: 'Uttarayana' | 'Dakshinayana';
ritu: { vedic: string; english: string };
solarMonth: string;
// Time Durations
dinamana: string;
ratrimana: string;
madhyahna: string;
// Calendar
samvatsar: string;
vikramSamvat?: number;
shakaSamvat?: number;
}
export interface CelestialPosition {
longitude: number;
latitude: number;
}
export interface Location {
latitude: number;
longitude: number;
timezone: string;
name?: string;
}
export interface DailySummary {
date: string; // "2026-03-01"
weekday: string; // "Sunday"
sunrise: string; // "6:10 AM"
sunset: string; // "6:17 PM"
tithi: {
name: string; // "Shukla Trayodashi"
paksha: 'Shukla' | 'Krishna';
progress: number;
};
nakshatra: {
name: string; // "Pushya"
pada: number;
lord: string;
};
yoga: {
name: string;
};
karana: {
name: string;
};
moonSign: string; // "Cancer"
sunSign: string; // "Pisces"
moonPhase: string; // "Waxing Gibbous"
moonIllumination: number; // 0-100
specialDays: string[]; // ["Pradosh", "Ekadashi"]
isPurnima: boolean;
isAmavasya: boolean;
isEkadashi: boolean;
}
export interface MonthlyPanchangResult {
year: number;
month: number;
location: { lat: number; lon: number; timezone: string };
days: DailySummary[];
}