import AstronomicalObject from '../astronomicalObject/AstronomicalObject'; import { EclipticSphericalCoordinates, RectangularCoordinates } from '../coordinates/types/CoordinateTypes'; import { Location } from '../earth/types/LocationTypes'; import TimeOfInterest from '../time/TimeOfInterest'; import IPlanet from './interfaces/IPlanet'; import { Vsop87 } from './types/Vsop87Types'; export default abstract class Planet extends AstronomicalObject implements IPlanet { protected readonly toi: TimeOfInterest; readonly name: string; protected useVsop87Short: boolean; private readonly sun; private readonly earth; protected constructor(toi?: TimeOfInterest, name?: string, useVsop87Short?: boolean); abstract get diameter(): number; protected abstract get vsop87J2000(): Promise; protected abstract get vsop87Date(): Promise; protected abstract get vsop87DateShort(): Promise; getHeliocentricEclipticSphericalJ2000Coordinates(): Promise; getHeliocentricEclipticSphericalDateCoordinates(): Promise; getAngularDiameter(): Promise; getApparentMagnitude(): Promise; protected abstract calculateApparentMagnitude(distanceSun: number, distanceEarth: number, phaseAngle: number): number; getHeliocentricEclipticRectangularJ2000Coordinates(): Promise; getHeliocentricEclipticRectangularDateCoordinates(): Promise; getGeocentricEclipticRectangularJ2000Coordinates(): Promise; getGeocentricEclipticRectangularDateCoordinates(): Promise; getGeocentricEclipticSphericalJ2000Coordinates(): Promise; getGeocentricEclipticSphericalDateCoordinates(): Promise; getApparentGeocentricEclipticSphericalCoordinates(): Promise; getTransit(location: Location): Promise; getRise(location: Location): Promise; getSet(location: Location): Promise; getElongation(): Promise; getPhaseAngle(): Promise; getIlluminatedFraction(): Promise; getPositionAngleOfBrightLimb(): Promise; isWaxing(): Promise; private getLightTimeCorrectedEclipticSphericalCoordinates; }