import { SolarSystem } from './solar-system';
export declare const AS_SEEN_FROM_EARTH = false;
export declare const AS_SEEN_FROM_SUN = true;
export declare const MOON_ITSELF = false;
export declare const MOON_SHADOW = true;
export declare enum MoonEvent {
    TR_I = 1,
    TR_E = 2,
    OC_D = 3,
    OC_R = 4,
    EC_D = 5,
    EC_R = 6,
    SH_I = 7,
    SH_E = 8
}
export interface MoonNameInfo {
    first: number;
    last: number;
    names: string[];
    shadowNames: string[];
}
export interface MoonInfo {
    moonIndex: number;
    X: number;
    Y: number;
    Z: number;
    inferior: boolean;
    withinDisc: boolean;
    inFrontOfDisc: boolean;
    behindDisc: boolean;
}
export declare class MoonEvents {
    t0: number;
    t1: number;
    count: number;
    events: MoonEvent[];
    shadowEvents: MoonEvent[];
    text: string;
    searchΔT: number;
}
export declare abstract class PlanetaryMoons {
    protected static namesList: MoonNameInfo[];
    protected cachedTimes: number[][];
    protected cachedMoons: MoonInfo[][][];
    protected solarSystem: SolarSystem;
    protected flattening: any;
    protected v_max: number[];
    protected constructor();
    getMoonPosition(moonIndex: number, time_JDE: number, sunPerspective?: boolean): MoonInfo;
    getMoonPositions(time_JDE: number, sunPerspective?: boolean, makeClones?: boolean): MoonInfo[];
    protected abstract getMoonPositionsAux(time_JDE: number, sunPerspective: boolean): MoonInfo[];
    getMoonEventsForOneMinuteSpan(time_JDU: number, longFormat?: boolean): MoonEvents;
    static getMoonName(moonIndex: number, getShadow?: boolean): string;
    static getMoonNumber(moonIndex: number): string;
    static getMoonByName(moonName: string): number;
    protected static registerMoonNames(first: number, last: number, names: string[], shadowNames: string[]): void;
}
//# sourceMappingURL=planetary-moons.d.ts.map