/** 因数 */
interface IFactor {
    /** 数字a */
    a: number;
    /** 数字b */
    b: number;
}
/** 交换枚举 */
export declare enum InterchangeFlag {
    /** 进操作位置更新 */
    Move = 0,
    /** 俩下标值更新 */
    Change = 1
}
/**
 * 数学拓展类
 */
export declare class Maths {
    /**
     * 获取整数的所有因数
     * @param x 未知正整数
     * @returns  所有因数
     */
    static getFactors(x: number): IFactor[];
    /**
     * 获取整数的所有因数通过接近程度排序
     * @param x 未知正整数
     * @returns 所有因数
     */
    static getFactorsByApproach(x: number): IFactor[];
    /**
     * 求和
     * @param array 数组
     */
    static sum(array: number[]): number;
    /**
     * 判断a与b符号是否相同
     * @param a
     * @param b
     * @returns
     */
    static sameSign(a: number, b: number): boolean;
    /**
     * 角度转弧度
     * @param degree 角度
     */
    static degreeToRad(degree: number): number;
    /**
     * 弧度转角度
     * @param rad 弧度
     */
    static radToDegree(rad: number): number;
    /**
     * 对象是否相等
     * @param a
     * @param b
     */
    static equal<T>(a: T, b: T): boolean;
    /**
     * 交集
     * @param a
     * @param b
     */
    static intersection<T>(a: T[], b: T[]): T[];
    /**
     * 删除重复项
     * @param origin
     */
    static removeRepeat<T>(origin: T[]): T[];
    /**
     * 补集
     * @param a
     * @param b
     */
    static complementarySet<T>(a: T[], b: T[]): T[];
    /**
     * 并集
     * @param a
     * @param b
     * @returns
     */
    static union<T>(a: T[], b: T[]): T[];
    /**
     * 数组 通过下标交互位置
     * @param array
     * @param currentIndex
     * @param targetIndex
     */
    static interchange<T>(array: T[], currentIndex: number, targetIndex: number, flag?: InterchangeFlag): T[];
    /**
     * 阶乘
     * https://www.delftstack.com/zh/howto/javascript/javascript-factorial/
     * @param num 数
     * @returns
     */
    static iterationFactorial(num: number): number;
    /**
     * 勾股定理
     * a²+b²=c²
     */
    static pythagorasTheorem(a: number, b: number): number;
    /**
     * 在可及的范围内
     * @param val 值
     * @param min 最小
     * @param max 最大
     * @returns 范围内值
     */
    static inRange(val: number, min: number, max: number): number;
}
declare global {
    interface Number {
        /**
         * 在可及的范围内
         * @param min 最小
         * @param max 最大
         * @returns 范围内值
         */
        inRange(min: number, max: number): number;
    }
}
export {};
