/**
 * @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 { CostFunction } from './SimplexEntry.js';
export declare class DownhillSimplex {
    private constructor();
    /**
     * Compute the centroid from a list of [SimplexEntry] objects, using cost
     * function [f].
     * @param f Cost function
     * @param xss Simplex entries
     * @returns The centroid.
     */
    private static _centroid;
    private static _shrink;
    /**
     * Generate a new simplex from initial guess [x0], and an optional
     * simplex [step] value.
     * @param x0 Initial guess
     * @param step Simplex step
     * @returns The simplex.
     */
    static generateSimplex(x0: Float64Array, step?: number): Float64Array[];
    /**
     * Perform derivative-free Nelder-Mead simplex optimization to minimize the
     * cost function [f] for the initial simplex [xs].
     *
     * Optional arguments:
     *  - `xTolerance`: centroid delta termination criteria
     * - `fTolerance`: cost function delta termination criteria
     * - `maxIter`: maximum number of optimization iterations
     * - `adaptive`: use adaptive coefficients if possible
     * - `printIter`: print a debug statement after each iteration
     * @param f Cost function
     * @param xs Initial simplex
     * @param root0 Root0
     * @param root0.xTolerance Root0.xTolerance
     * @param root0.fTolerance Root0.fTolerance
     * @param root0.maxIter Root0.maxIter
     * @param root0.adaptive Root0.adaptive
     * @param root0.printIter Root0.printIter
     * @returns The optimal input value.
     */
    static solveSimplex(f: CostFunction, xs: Float64Array[], { xTolerance, fTolerance, maxIter, adaptive, printIter, }: {
        xTolerance?: number;
        fTolerance?: number;
        maxIter?: number;
        adaptive?: boolean;
        printIter?: boolean;
    }): Float64Array;
}
