import { DateTime } from 'luxon'; import { EphemerisEngine, PlanetPosition, HouseData } from './engine/ephemeris.js'; import { calculateHouseCusps, HouseSystemMethod } from './vedic/houses.js'; import { calculateVarga, calculateShashtyamsa, VargaPoint } from './vedic/vargas.js'; import { calculatePanchanga, PanchangaResult } from './vedic/panchanga.js'; import { calculateTimeUpagrahas, calculateDhumadiUpagrahas, UpagrahaPositions } from './vedic/upagrahas.js'; import { calculatePranapada, calculateInduLagna, calculateShreeLagna, calculateHoraLagna, calculateGhatiLagna, calculateBhavaLagna, calculateVarnadaLagna } from './vedic/special_lagnas.js'; import { getRelationship, Relationship, PLANET_IDS } from './core/relationships.js'; import { KPSubLord, KPSignificator } from './kp/sublord.js'; import { KPRuling, RulingPlanetsResult } from './kp/ruling.js'; import { VargaDeities } from './vedic/deities.js'; import { type JyotishConfig } from './config.js'; export type { PlanetPosition, HouseData, PanchangaResult, KPSignificator, RulingPlanetsResult, VargaPoint, UpagrahaPositions, HouseSystemMethod }; export { normalize360, getShortestDistance, dmsToDecimal, decimalToDms } from './core/math.js'; export { D, toNum, normalize360D, NAKSHATRA_SPAN_D, DASHA_YEAR_DAYS } from './core/precise.js'; export { calculateVarga, calculateShashtyamsa, VargaDeities, getRelationship, PLANET_IDS, Relationship }; export { AYANAMSA, DEFAULT_AYANAMSA, DEFAULT_POSITION_MODE, DEFAULT_NODE_TYPE } from './engine/ephemeris.js'; export type { AyanamsaMode, PositionMode } from './engine/ephemeris.js'; export { DEFAULT_DASAMSA_SCHEME, DEFAULT_HORA_SCHEME } from './vedic/vargas.js'; export type { DasamsaScheme, HoraScheme, VargaOptions } from './vedic/vargas.js'; export { ayanamsaName, AYANAMSA_MODELS } from './engine/ayanamsa.js'; export { DEFAULT_CONFIG, JHORA_PRESET, resolveConfig, TROPICAL_YEAR_DAYS, } from './config.js'; export type { JyotishConfig, HouseSystem, NodeType } from './config.js'; export { parseJhd, jhdToUtcISO, hasPositions, sexagesimalToDecimal, JHD_BODY_ORDER } from './io/jhd.js'; export type { JhdChart, JhdBody } from './io/jhd.js'; export interface ChartData { planets: PlanetPosition[]; houses: HouseData; ascendant: number; ayanamsa: string; } /** * Ayanamsa names accepted by the convenience API. * For the full set of models use `config.ayanamsaMode` with an `AYANAMSA.*` code. */ export type Ayanamsa = 'TrueChitra' | 'TruePushya' | 'TrueRevati' | 'TrueMula' | 'Lahiri' | 'LahiriICRC' | 'Raman' | 'KP' | 'Yukteshwar' | 'FaganBradley'; /** * Instance configuration. Every field is optional and falls back to * {@link DEFAULT_CONFIG}; every field can also be overridden per call. * * `ayanamsaOrder` is retained as an alias for `ayanamsaMode` so existing code * keeps working. */ export interface NodeJHoraConfig extends Partial { /** @deprecated Use `ayanamsaMode`. Retained for backward compatibility. */ ayanamsaOrder?: number; } export declare function init(): Promise; /** * Facade Class for Object-Oriented Usage */ export declare class NodeJHora { private ephemeris; private location; /** Instance defaults. Every method accepts a per-call override. */ readonly config: JyotishConfig; constructor(location: { latitude: number; longitude: number; altitude?: number; }, config?: NodeJHoraConfig); /** Resolve a per-call override against this instance's defaults. */ private cfg; init(): Promise; /** * Initialize the WASM engine (call once before calculate) */ static init(): Promise; /** * Quick calculation without creating an instance * Note: Call NodeJHora.init() first or this will call it automatically */ static calculate(date: Date, location: { latitude: number; longitude: number; altitude?: number; }, ayanamsaName?: Ayanamsa, config?: NodeJHoraConfig): Promise; getPlanets(date: DateTime, override?: NodeJHoraConfig): PlanetPosition[]; getHouses(date: DateTime, override?: NodeJHoraConfig): HouseData; getChart(date: DateTime, override?: NodeJHoraConfig): { planets: PlanetPosition[]; houses: HouseData; }; getPanchanga(date: DateTime, override?: NodeJHoraConfig): PanchangaResult; /** Divisional chart for one longitude, honouring the configured varga rules. */ getVarga(longitude: number, division: number, override?: NodeJHoraConfig): VargaPoint; } export { EphemerisEngine, calculateHouseCusps, calculatePanchanga, KPSubLord, KPRuling, calculateTimeUpagrahas, calculateDhumadiUpagrahas, calculatePranapada, calculateInduLagna, calculateShreeLagna, calculateHoraLagna, calculateGhatiLagna, calculateBhavaLagna, calculateVarnadaLagna };