import AstronomicalObject from '../astronomicalObject/AstronomicalObject';
import { EclipticSphericalCoordinates, RectangularCoordinates } from '../coordinates/types/CoordinateTypes';
import { Location } from '../earth/types/LocationTypes';
import TimeOfInterest from '../time/TimeOfInterest';
import GoldenHandle from './events/GoldenHandle';
import LunarV from './events/LunarV';
import LunarX from './events/LunarX';
import { SelenographicLocation } from './types/LocationTypes';
export default class Moon extends AstronomicalObject {
    private readonly sun;
    private readonly earth;
    constructor(toi?: TimeOfInterest);
    getHeliocentricEclipticRectangularJ2000Coordinates(): Promise<RectangularCoordinates>;
    getHeliocentricEclipticRectangularDateCoordinates(): Promise<RectangularCoordinates>;
    getHeliocentricEclipticSphericalJ2000Coordinates(): Promise<EclipticSphericalCoordinates>;
    getHeliocentricEclipticSphericalDateCoordinates(): Promise<EclipticSphericalCoordinates>;
    getGeocentricEclipticRectangularJ2000Coordinates(): Promise<RectangularCoordinates>;
    getGeocentricEclipticRectangularDateCoordinates(): Promise<RectangularCoordinates>;
    getGeocentricEclipticSphericalJ2000Coordinates(): Promise<EclipticSphericalCoordinates>;
    getGeocentricEclipticSphericalDateCoordinates(): Promise<EclipticSphericalCoordinates>;
    getApparentGeocentricEclipticSphericalCoordinates(): Promise<EclipticSphericalCoordinates>;
    getTransit(location: Location): Promise<TimeOfInterest>;
    getRise(location: Location, standardAltitude?: number): Promise<TimeOfInterest>;
    getSet(location: Location, standardAltitude?: number): Promise<TimeOfInterest>;
    getAngularDiameter(): Promise<number>;
    getTopocentricAngularDiameter(location: Location): Promise<number>;
    getElongation(): Promise<number>;
    getTopocentricElongation(location: Location): Promise<number>;
    getPhaseAngle(): Promise<number>;
    getTopocentricPhaseAngle(location: Location): Promise<number>;
    getIlluminatedFraction(): Promise<number>;
    getTopocentricIlluminatedFraction(location: Location): Promise<number>;
    getPositionAngleOfBrightLimb(): Promise<number>;
    getTopocentricPositionAngleOfBrightLimb(location: Location): Promise<number>;
    isWaxing(): Promise<boolean>;
    isTopocentricWaxing(location: Location): Promise<boolean>;
    getApparentMagnitude(): Promise<number>;
    getTopocentricApparentMagnitude(location: Location): Promise<number>;
    getUpcomingNewMoon(): TimeOfInterest;
    getUpcomingFirstQuarter(): TimeOfInterest;
    getUpcomingFullMoon(): TimeOfInterest;
    getUpcomingLastQuarter(): TimeOfInterest;
    getGeocentricLibration(): Promise<SelenographicLocation>;
    getSelenographicLocationOfEarth(): Promise<SelenographicLocation>;
    getSelenographicLocationOfSun(): Promise<SelenographicLocation>;
    getGoldenHandle(): GoldenHandle;
    getLunarX(): LunarX;
    getLunarV(): LunarV;
}
