import '../../assert/js/assert.js';
import '../../globals.js';
import Vector2 from './Vector2.js';
declare class CompletePiecewiseLinearFunction {
    points: Vector2[];
    constructor(points: Vector2[]);
    /**
     * Returns the pair of points that the x value is defined by.
     *
     * NOTE: x may NOT be contained in these points, if it's either less than or greater than any points in the points
     * list.
     */
    findMatchingPair(x: number): [Vector2, Vector2];
    /**
     * Evaluates the function at the given x value, e.g. returns f(x).
     */
    evaluate(x: number): number;
    /**
     * Returns an array that combines sorted unique x-values provided by this function and/or the other function.
     */
    private getCombinedXValues;
    /**
     * Returns an array that combines the sorted unique x-values included in this function and/or the other function, OR the unique x-values
     * that result from the intersection of the two functions.
     */
    private getIntersectedXValues;
    /**
     * Returns a new function that's the result of applying the binary operation at the given x values.
     */
    private binaryXOperation;
    /**
     * Returns a new function that's the result of applying the binary operation at the x values that already occur
     * in each function.
     */
    private binaryPointwiseOperation;
    /**
     * Returns a new function that's the result of applying the binary operation at the x values that either occur in
     * each function OR at the intersection of the two functions.
     */
    private binaryIntersectingOperation;
    /**
     * Returns a CompletePiecewiseLinearFunction that's the result of adding the two functions.
     */
    plus(linearFunction: CompletePiecewiseLinearFunction): CompletePiecewiseLinearFunction;
    /**
     * Returns a CompletePiecewiseLinearFunction that's the result of subtracting the two functions.
     */
    minus(linearFunction: CompletePiecewiseLinearFunction): CompletePiecewiseLinearFunction;
    /**
     * Returns a CompletePiecewiseLinearFunction that's the result of taking the minimum of the two functions
     */
    min(linearFunction: CompletePiecewiseLinearFunction): CompletePiecewiseLinearFunction;
    /**
     * Returns a CompletePiecewiseLinearFunction that's the result of taking the maximum of the two functions
     */
    max(linearFunction: CompletePiecewiseLinearFunction): CompletePiecewiseLinearFunction;
    /**
     * Allows redefining or clamping/truncating the function by only representing it from the given x values
     */
    withXValues(xValues: number[]): CompletePiecewiseLinearFunction;
    /**
     * Returns an inverted form of the function (assuming it is monotonically increasing or monotonically decreasing)
     */
    inverted(): CompletePiecewiseLinearFunction;
    static sum(...functions: CompletePiecewiseLinearFunction[]): CompletePiecewiseLinearFunction;
    static min(...functions: CompletePiecewiseLinearFunction[]): CompletePiecewiseLinearFunction;
    static max(...functions: CompletePiecewiseLinearFunction[]): CompletePiecewiseLinearFunction;
    static constant(y: number): CompletePiecewiseLinearFunction;
    static linear(a: number, b: number): CompletePiecewiseLinearFunction;
    /**
     * Returns a sorted list of the input numbers, ensuring no duplicates within a specified epsilon value
     */
    private static sortedUniqueEpsilon;
}
export default CompletePiecewiseLinearFunction;
//# sourceMappingURL=CompletePiecewiseLinearFunction.d.ts.map