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