/**
 * @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 } from '../main.js';
import { Observation } from '../observation/Observation.js';
import { ForceModel } from './../force/ForceModel.js';
import { BatchLeastSquaresResult } from './BatchLeastSquaresResult.js';
/**
 * Batch least squares orbit determination.
 */
export declare class BatchLeastSquaresOD {
    private readonly observations_;
    private readonly apriori_;
    private readonly forceModel_?;
    private readonly posStep_;
    private readonly velStep_;
    private readonly fastDerivatives_;
    /** Propagator pair cache, for generating observation Jacobians. */
    private readonly propPairs_;
    /**  Nominal state propagator. */
    private propagator_;
    /**  State estimate during solve. */
    private readonly nominal_;
    /**  Solve start epoch. */
    private readonly start_;
    /**
     * Create a new [BatchLeastSquaresOD] object from a list of [Observation]
     * objects, an [apriori] state estimate, and an optional
     * spacecraft [forceModel].
     * @param observations_ List of observations.
     * @param apriori_ Apriori state estimate.
     * @param forceModel_ Spacecraft force model.
     * @param posStep_ Position step size.
     * @param velStep_ Velocity step size.
     * @param fastDerivatives_ Use fast derivatives.
     * @returns [BatchLeastSquaresOD] object.
     */
    constructor(observations_: Observation[], apriori_: J2000, forceModel_?: ForceModel | undefined, posStep_?: number, velStep_?: number, fastDerivatives_?: boolean);
    private buildPropagator_;
    private static stateToX0_;
    private setPropagatorPairs_;
    /**
     * Attempt to solve a state estimate with the given root-mean-squared delta
     * [tolerance].
     * @param root0 Root initial guess.
     * @param root0.tolerance Root-mean-squared delta tolerance.
     * @param root0.maxIter Maximum number of iterations.
     * @param root0.printIter Print iterations.
     * @returns [BatchLeastSquaresResult] object.
     */
    solve({ tolerance, maxIter, printIter, }?: {
        tolerance?: number;
        maxIter?: number;
        printIter?: boolean;
    }): BatchLeastSquaresResult;
}
