/**
 * Represents the sun's position at a specific time and location.
 */
export type PositionData = {
    /** Azimuth angle in radians (clockwise from true north) */
    azimuth: number;
    /** Altitude angle in radians above horizon (0 at horizon, positive upwards).
     *  Includes correction for atmospheric refraction.
     */
    altitude: number;
};
/**
 * Contains calculated solar times for a specific date and location.
 */
export type TimesData = {
    /** Solar noon (sun at highest position) */
    solarNoon: Date;
    /** Nadir (darkest moment of night, solar midnight) */
    nadir: Date;
    /** Additional time events defined through addTime() such as:
     * - sunrise/sunset (center at horizon)
     * - dawn/dusk (when sun reaches 6° below horizon)
     * - golden hour boundaries
     */
    [key: string]: Date;
};
/**
 * Calculates right ascension from ecliptic coordinates.
 * @param l - Ecliptic longitude in radians.
 * @param b - Ecliptic latitude in radians.
 * @returns Right ascension in radians.
 */
export declare function rightAscension(l: number, b: number): number;
/**
 * Calculates declination from ecliptic coordinates.
 * @param l - Ecliptic longitude in radians.
 * @param b - Ecliptic latitude in radians.
 * @returns Declination in radians.
 */
export declare function declination(l: number, b: number): number;
/**
 * Calculates azimuth angle for a celestial body.
 * @param H - Hour angle in radians.
 * @param phi - Observer's latitude in radians.
 * @param dec - Declination of the celestial body in radians.
 * @returns Azimuth angle in radians (clockwise from north).
 */
export declare function azimuth(H: number, phi: number, dec: number): number;
/**
 * Calculates altitude angle for a celestial body.
 * @param H - Hour angle in radians.
 * @param phi - Observer's latitude in radians.
 * @param dec - Declination of celestial body in radians.
 * @returns Altitude angle in radians.
 */
export declare function altitude(H: number, phi: number, dec: number): number;
/**
 * Calculates sidereal time for given Julian days.
 * @param d - Days since J2000 epoch.
 * @param lw - Longitude west in radians.
 * @returns Sidereal time in radians.
 */
export declare function siderealTime(d: number, lw: number): number;
/**
 * Corrects altitude for atmospheric refraction.
 * @param h - Altitude angle in radians (geometric).
 * @returns Refraction correction in radians.
 */
export declare function astroRefraction(h: number): number;
/**
 * Calculates the solar mean anomaly.
 * @param d - Days since J2000 epoch.
 * @returns Solar mean anomaly in radians.
 */
export declare function solarMeanAnomaly(d: number): number;
/**
 * Calculates ecliptic longitude from solar mean anomaly.
 * @param M - Solar mean anomaly in radians.
 * @returns Ecliptic longitude in radians.
 */
export declare function eclipticLongitude(M: number): number;
/**
 * Calculates sun coordinates for given days since J2000.
 * @param d - Days since J2000 epoch.
 * @returns Object containing sun's declination and right ascension.
 */
export declare function sunCoords(d: number): {
    dec: number;
    ra: number;
};
/**
 * Calculates sun position for given date and location.
 * @param date - Date/time of observation.
 * @param lat - Observer's latitude in degrees.
 * @param lng - Observer's longitude in degrees.
 * @returns Object containing azimuth and altitude in radians.
 */
export declare function getPosition(date: Date, lat: number, lng: number): PositionData;
/**
 * Adds a custom time definition to sun time calculations.
 * @param angle - Altitude angle in degrees.
 * @param riseName - Name for the rise time property.
 * @param setName - Name for the set time property.
 */
export declare function addTime(angle: number, riseName: string, setName: string): void;
/**
 * Calculates Julian cycle for given days and longitude.
 * @param d - Days since J2000 epoch.
 * @param lw - Longitude west in radians.
 * @returns Julian cycle number.
 */
export declare function julianCycle(d: number, lw: number): number;
/**
 * Approximates the transit time.
 * @param Ht - Hour angle.
 * @param lw - Longitude west in radians.
 * @param n - Julian cycle number.
 * @returns Approximate transit time in Julian days.
 */
export declare function approxTransit(Ht: number, lw: number, n: number): number;
/**
 * Calculates the precise solar transit time.
 * @param ds - Days since J2000 epoch.
 * @param M - Solar mean anomaly.
 * @param L - Ecliptic longitude.
 * @returns Julian date of solar transit.
 */
export declare function solarTransitJ(ds: number, M: number, L: number): number;
/**
 * Calculates the hour angle for a given altitude.
 * @param h - Altitude angle in radians.
 * @param phi - Observer's latitude in radians.
 * @param dec - Sun declination in radians.
 * @returns Hour angle in radians.
 */
export declare function hourAngle(h: number, phi: number, dec: number): number;
/**
 * Calculates the Julian date for a sun altitude event.
 * @param h - Altitude angle in radians.
 * @param lw - Longitude west in radians.
 * @param phi - Observer's latitude in radians.
 * @param dec - Sun declination in radians.
 * @param n - Julian cycle number.
 * @param M - Solar mean anomaly.
 * @param L - Ecliptic longitude.
 * @returns Julian date of the event.
 */
export declare function getSetJ(h: number, lw: number, phi: number, dec: number, n: number, M: number, L: number): number;
/**
 * Calculates sun times (e.g., sunrise, sunset, dawn etc.) for given date and location.
 * @param date - Date of observation.
 * @param lat - Observer's latitude in degrees.
 * @param lng - Observer's longitude in degrees.
 * @returns Object containing calculated sun times as Date objects.
 */
export declare function getTimes(date: Date, lat: number, lng: number): TimesData;
//# sourceMappingURL=suncalc.d.ts.map