/**
 * @author @thkruz Theodore Kruczek
 * @license AGPL-3.0-or-later
 * @copyright (c) 2025 Kruczek Labs LLC
 *
 * 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 { J2000, Vector, Vector3D } from '../main.js';
import { Thrust } from './Thrust.js';
export declare class ForceModel {
    private _centralGravity?;
    private _thirdBodyGravity?;
    private _solarRadiationPressure?;
    private _atmosphericDrag?;
    private _maneuverThrust;
    setGravity(mu?: number): this;
    setEarthGravity(degree: number, order: number): void;
    setThirdBodyGravity({ moon, sun }: {
        moon?: boolean | undefined;
        sun?: boolean | undefined;
    }): void;
    setSolarRadiationPressure(mass: number, area: number, coeff?: number): void;
    /**
     * Sets the atmospheric drag for the force model.
     * @deprecated This is still a work in progress!
     * @param mass - The mass of the object.
     * @param area - The cross-sectional area of the object.
     * @param coeff - The drag coefficient. Default value is 2.2.
     * @param cosine - The cosine of the angle between the object's velocity vector and the drag force vector.
     */
    setAtmosphericDrag(mass: number, area: number, coeff?: number, cosine?: number): void;
    loadManeuver(maneuver: Thrust): void;
    clearManeuver(): void;
    acceleration(state: J2000): Vector3D;
    derivative(state: J2000): Vector;
}
