import * as TypeOfComplex from './ComplexInterface';
import { Evaluator } from './Evaluator';
/**
 * # ComplexNumber
 *
 * An native `number` type complex number library.
 *
 * ## References
 * * https://mathworld.wolfram.com/ComplexNumber.html
 */
declare class ComplexNumber implements TypeOfComplex.ComplexInterface<number, number, unknown> {
    static readonly LOGICAL: number;
    static readonly REAL: number;
    static readonly COMPLEX: number;
    static readonly defaultSettings: TypeOfComplex.ComplexConfig;
    static readonly settings: TypeOfComplex.ComplexConfig;
    /**
     * Test if an object is an instance of `ComplexNumber`.
     * @param obj Object to test.
     * @returns `true` if `obj` is an instance of `ComplexNumber`. `false` otherwise.
     */
    static readonly isInstanceOf: TypeOfComplex.IsInstanceOfComplexHandler<ComplexNumber>;
    static readonly set: (config: Partial<TypeOfComplex.ComplexConfig>) => void;
    re: number;
    im: number;
    type: number;
    parent: any;
    static readonly setNumberType: TypeOfComplex.OneArgNoReturnComplexHandler<number, ComplexNumber>;
    constructor(re?: TypeOfComplex.NumLike<number>, im?: TypeOfComplex.NumLike<number>, type?: TypeOfComplex.NumType<number>, parent?: TypeOfComplex.NumParent<unknown>);
    static readonly create: (re?: TypeOfComplex.NumLike<number>, im?: TypeOfComplex.NumLike<number>, type?: TypeOfComplex.NumType<number>, parent?: TypeOfComplex.NumParent<unknown>) => ComplexNumber;
    static readonly realSet: (value: ComplexNumber, re: TypeOfComplex.NumLike<number>) => void;
    static readonly imagSet: (value: ComplexNumber, im: TypeOfComplex.NumLike<number>) => void;
    static readonly realApply: (value: ComplexNumber, func: (re: number) => number) => void;
    static readonly imagApply: (value: ComplexNumber, func: (im: number) => number) => void;
    static readonly from: (obj: ComplexNumber) => ComplexNumber;
    static readonly real: (z: ComplexNumber) => ComplexNumber;
    static readonly imag: (z: ComplexNumber) => ComplexNumber;
    static readonly isComplexValue: (z: ComplexNumber) => boolean;
    static readonly isRealValue: (z: ComplexNumber) => boolean;
    static readonly realIsInteger: (z: ComplexNumber) => boolean;
    static readonly imagIsInteger: (z: ComplexNumber) => boolean;
    static readonly realIsFinite: (z: ComplexNumber) => boolean;
    static readonly imagIsFinite: (z: ComplexNumber) => boolean;
    static readonly realIsNaN: (z: ComplexNumber) => boolean;
    static readonly imagIsNaN: (z: ComplexNumber) => boolean;
    static readonly realIsNegative: (z: ComplexNumber) => boolean;
    static readonly imagIsNegative: (z: ComplexNumber) => boolean;
    static readonly realIsZero: (z: ComplexNumber) => boolean;
    static readonly imagIsZero: (z: ComplexNumber) => boolean;
    static readonly realIsPositive: (z: ComplexNumber) => boolean;
    static readonly imagIsPositive: (z: ComplexNumber) => boolean;
    static readonly realToNumber: (z: ComplexNumber) => number;
    static readonly toBoolean: (z: ComplexNumber) => boolean;
    static readonly imagToNumber: (z: ComplexNumber) => number;
    static readonly realLessThan: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly imagLessThan: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly realLessThanOrEqualTo: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly imagLessThanOrEqualTo: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly realEquals: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly imagEquals: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly realGreaterThanOrEqualTo: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly imagGreaterThanOrEqualTo: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly realGreaterThan: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly imagGreaterThan: (z: ComplexNumber, value: TypeOfComplex.NumLike<number>) => boolean;
    static readonly parse: TypeOfComplex.ParseComplexHandler<number, ComplexNumber>;
    static readonly precedence: TypeOfComplex.PrecedenceComplexHandler<number, ComplexNumber, Evaluator, number>;
    static readonly unparseValue: TypeOfComplex.UnparseValueComplexHandler<number>;
    static readonly unparse: TypeOfComplex.UnparseComplexHandler<number, ComplexNumber, Evaluator>;
    static readonly toString: TypeOfComplex.ToStringComplexHandler<number, ComplexNumber>;
    toString(): string;
    static readonly unparseMathMLValue: TypeOfComplex.UnparseValueComplexHandler<number>;
    static readonly unparseMathML: TypeOfComplex.UnparseComplexHandler<number, ComplexNumber, Evaluator, number>;
    static copy: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    copy: () => ComplexNumber;
    static toMaxPrecisionValue: TypeOfComplex.OneArgValueComplexHandler<number>;
    static toMaxPrecision: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static epsilonValue(): number;
    static epsilon: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static random: TypeOfComplex.RandomComplexHandler<number, ComplexNumber>;
    static eq: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static ne: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static compareValue: TypeOfComplex.CompareValueComplexHandler<number>;
    static cmp: TypeOfComplex.CmpComplexHandler<number, ComplexNumber>;
    static minMaxArrayReal: TypeOfComplex.MinMaxArrayComplexHandler<number, ComplexNumber>;
    static minMaxArrayRealWithIndex: TypeOfComplex.MinMaxArrayWithIndexComplexHandler<number, ComplexNumber>;
    static minMaxArrayComplex: TypeOfComplex.MinMaxArrayComplexHandler<number, ComplexNumber>;
    static minMaxArrayComplexWithIndex: TypeOfComplex.MinMaxArrayWithIndexComplexHandler<number, ComplexNumber>;
    static min: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static minWise: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static max: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static maxWise: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static lt: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static le: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static gt: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static ge: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static false: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static true: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static logical: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static toLogical: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    toLogical: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static and: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static or: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static xor: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static not: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static zero: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static one: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static onediv2: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static minusonediv2: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static minusone: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static pi: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static pidiv2: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static onei: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static onediv2i: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static minusonediv2i: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static minusonei: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static two: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static sqrt2pi: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static e: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static NaN_0: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static inf_0: TypeOfComplex.NoArgComplexHandler<number, ComplexNumber>;
    static add: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static sub: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static neg: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static mul: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static mulAndSumTo: TypeOfComplex.ThreeArgComplexHandler<number, ComplexNumber>;
    static rdiv: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static ldiv: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static inv: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static power: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static root: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static absValue: TypeOfComplex.AbsoluteValueComplexHandler<number, ComplexNumber>;
    static abs2Value: TypeOfComplex.AbsoluteValueComplexHandler<number, ComplexNumber>;
    static abs: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static abs2: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static hypot: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static arg: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static conj: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static mod: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static rem: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static fix: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static ceil: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static floor: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static round: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sign: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sqrt: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static exp: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static log: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static logb: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static log2: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static log10: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static deg2rad: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static rad2deg: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sin: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sind: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cos: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cosd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static tan: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static tand: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static csc: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cscd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sec: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static secd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cot: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cotd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asin: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asind: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acos: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acosd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static atan: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static atan2: TypeOfComplex.TwoArgComplexHandler<number, ComplexNumber>;
    static atand: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acsc: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acscd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asec: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asecd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acot: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acotd: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sinh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static cosh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static tanh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static csch: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static sech: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static coth: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asinh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acosh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static atanh: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acsch: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static asech: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static acoth: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static gamma: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static factorial: TypeOfComplex.OneArgComplexHandler<number, ComplexNumber>;
    static readonly applyFunction: TypeOfComplex.PartApplyComplexHandlerTable<number>;
    static mapFunction: Record<string, (z: ComplexNumber) => ComplexNumber>;
    static twoArgFunction: Record<string, (x: ComplexNumber, y: ComplexNumber) => ComplexNumber>;
}
/**
 * The static type ensures compatibility with the contract (TypeOfComplex.ComplexInterface).
 */
type ComplexNumberStatic = typeof ComplexNumber extends TypeOfComplex.ComplexInterfaceStatic<number, ComplexNumber> ? typeof ComplexNumber : never;
export { type ComplexNumberStatic, ComplexNumber };
declare const _default: {
    ComplexNumber: typeof ComplexNumber;
};
export default _default;
