/**
 * @author @thkruz Theodore Kruczek
 * @description Orbital Object ToolKit (ootk) is a collection of tools for working
 * with satellites and other orbital objects.
 * @license AGPL-3.0-or-later
 * @copyright (c) 2025 Kruczek Labs LLC
 *
 * Many of the classes are based off of the work of @david-rc-dayton and his
 * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
 * is licensed under the MIT license.
 *
 * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
 * terms of the GNU Affero General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 *
 * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License along with
 * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
 */
import { Minutes, PositionVelocity, Kilometers, Radians } from '../main.js';
import { EpochUTC } from '../time/EpochUTC.js';
import { ClassicalElements } from './ClassicalElements.js';
import { EquinoctialElementsParams } from '../interfaces/EquinoctialElementsParams.js';
/**
 * Equinoctial elements are a set of orbital elements used to describe the
 * orbits of celestial bodies, such as satellites around a planet. They provide
 * an alternative to the traditional Keplerian elements and are especially
 * useful for avoiding singularities and numerical issues in certain types of
 * orbits.
 *
 * Unlike Keplerian elements, equinoctial elements don't suffer from
 * singularities at zero eccentricity (circular orbits) or zero inclination
 * (equatorial orbits). This makes them more reliable for numerical simulations
 * and analytical studies, especially in these edge cases.
 * @see https://faculty.nps.edu/dad/orbital/th0.pdf
 */
export declare class EquinoctialElements {
    epoch: EpochUTC;
    /** The semi-major axis of the orbit in kilometers. */
    a: Kilometers;
    /** The h component of the eccentricity vector. */
    h: number;
    /** The k component of the eccentricity vector. */
    k: number;
    /** The p component of the ascending node vector. */
    p: number;
    /** The q component of the ascending node vector. */
    q: number;
    /** The mean longitude of the orbit in radians. */
    lambda: Radians;
    /** The gravitational parameter of the central body in km³/s². */
    mu: number;
    /** The retrograde factor. 1 for prograde orbits, -1 for retrograde orbits. */
    I: 1 | -1;
    constructor({ epoch, h, k, lambda, a, p, q, mu, I }: EquinoctialElementsParams);
    /**
     * Returns a string representation of the EquinoctialElements object.
     * @returns A string representation of the EquinoctialElements object.
     */
    toString(): string;
    /**
     * Gets the semimajor axis.
     * @returns The semimajor axis in kilometers.
     */
    get semimajorAxis(): Kilometers;
    /**
     * Gets the mean longitude.
     * @returns The mean longitude in radians.
     */
    get meanLongitude(): Radians;
    /**
     * Calculates the mean motion of the celestial object.
     * @returns The mean motion in units of radians per second.
     */
    get meanMotion(): number;
    /**
     * Gets the retrograde factor.
     * @returns The retrograde factor.
     */
    get retrogradeFactor(): number;
    /**
     * Checks if the orbit is prograde.
     * @returns True if the orbit is prograde, false otherwise.
     */
    isPrograde(): boolean;
    /**
     * Checks if the orbit is retrograde.
     * @returns True if the orbit is retrograde, false otherwise.
     */
    isRetrograde(): boolean;
    /**
     * Gets the period of the orbit.
     * @returns The period in minutes.
     */
    get period(): Minutes;
    /**
     * Gets the number of revolutions per day.
     * @returns The number of revolutions per day.
     */
    get revsPerDay(): number;
    /**
     * Converts the equinoctial elements to classical elements.
     * @returns The classical elements.
     */
    toClassicalElements(): ClassicalElements;
    /**
     * Converts the equinoctial elements to position and velocity.
     * @returns The position and velocity in classical elements.
     */
    toPositionVelocity(): PositionVelocity;
}
