/**
 * filename: `Complex.ts`
 * Description: Complex number library based on a facade architecture.
 */
import * as TypeOfComplex from './ComplexInterface';
import { Decimal } from './ComplexDecimal';
import { Evaluator } from './Evaluator';
/**
 * External type complex facade definitions.
 */
type RealType = number | Decimal;
type NumLikeType = TypeOfComplex.NumLike<RealType>;
type NumberObjectType = number;
type RealTypeDescriptor = 'number' | 'decimal';
type ComplexType = TypeOfComplex.ComplexHandlerType<RealType, TypeOfComplex.ComplexInterface<RealType>>;
declare const toNumber: (value: NumLikeType) => number;
/**
 * Complex Facade internal type definitions.
 */
type ComplexInterfaceBase = TypeOfComplex.OmitComplexInterfaceDynamic<RealType, NumberObjectType, unknown>;
type InterfaceStaticHandler = TypeOfComplex.ComplexInterfaceStatic<RealType, ComplexType>;
type IsInstanceOfHandler = TypeOfComplex.IsInstanceOfComplexHandler<ComplexType>;
type SetHandler = TypeOfComplex.SetComplexHandler;
type CreateHandler = TypeOfComplex.CreateComplexHandler<RealType, ComplexType, number>;
type PartSetHandler = TypeOfComplex.PartSetComplexHandler<RealType, TypeOfComplex.ComplexInterface<RealType>>;
type PartApplyHandler = TypeOfComplex.PartApplyComplexHandler<RealType, ComplexType>;
type PartApplyHandlerTable = TypeOfComplex.PartApplyComplexHandlerTable<RealType>;
type OneArgValueHandler = TypeOfComplex.OneArgValueComplexHandler<RealType>;
type FromHandler = TypeOfComplex.FromComplexHandler<RealType, ComplexType>;
type NoArgHandler = TypeOfComplex.NoArgComplexHandler<RealType, ComplexType>;
type OneArgHandler = TypeOfComplex.OneArgComplexHandler<RealType, ComplexType>;
type OneOptNumArgHandler = TypeOfComplex.OneOptNumArgComplexHandler<RealType, ComplexType>;
type OneArgNoReturnHandler = TypeOfComplex.OneArgNoReturnComplexHandler<RealType, ComplexType>;
type MapHandler = TypeOfComplex.MapComplexHandler<RealType, ComplexType>;
type TwoArgHandler = TypeOfComplex.TwoArgComplexHandler<RealType, ComplexType>;
type ThreeArgHandler = TypeOfComplex.ThreeArgComplexHandler<RealType, ComplexType>;
type OneArgReturnBooleanHandler = TypeOfComplex.OneArgReturnBooleanComplexHandler<RealType, ComplexType>;
type OneArgReturnNumberHandler = TypeOfComplex.OneArgReturnNumberComplexHandler<RealType, ComplexType>;
type TestNumLikeHandler = TypeOfComplex.TestNumLikeComplexHandler<RealType, ComplexType>;
type ParseHandler = TypeOfComplex.ParseComplexHandler<RealType, ComplexType>;
type PrecedenceHandler = TypeOfComplex.PrecedenceComplexHandler<RealType, ComplexType, Evaluator, number>;
type UnparseValueHandler = TypeOfComplex.UnparseValueComplexHandler<RealType>;
type UnparseHandler = TypeOfComplex.UnparseComplexHandler<RealType, ComplexType, Evaluator, number>;
type ToStringHandler = TypeOfComplex.ToStringComplexHandler<RealType, ComplexType>;
type CompareHandler = TypeOfComplex.CompareComplexHandler<RealType, ComplexType>;
type MinMaxArrayHandler = TypeOfComplex.MinMaxArrayComplexHandler<RealType, ComplexType>;
type MinMaxArrayWithIndexHandler = TypeOfComplex.MinMaxArrayWithIndexComplexHandler<RealType, ComplexType>;
/**
 * # Complex
 *
 * Facade Complex class.
 *
 * `Complex.engine = 'decimal'` switches to using the `decimal.js` package (ComplexDecimal).
 *
 * `Complex.engine = 'number'` switches to using the native `number` type (ComplexNumber).
 *
 */
declare abstract class Complex implements ComplexInterfaceBase {
    /**
     * Private complex backend engine.
     */
    private static _engineBackend;
    /**
     * Private complex backend engine descriptor.
     */
    private static _engine;
    /**
     * Complex backend engine getter.
     */
    static get engineBackend(): InterfaceStaticHandler;
    /**
     * Complex backend engine descriptor getter.
     */
    static get engine(): RealTypeDescriptor;
    /**
     * Complex backend engine switcher.
     */
    static set engine(engine: RealTypeDescriptor);
    static readonly LOGICAL: number;
    static readonly REAL: number;
    static readonly COMPLEX: number;
    /**
     * `Complex` facade default settings.
     */
    static readonly defaultSettings: TypeOfComplex.ComplexConfig<TypeOfComplex.Rounding, TypeOfComplex.Modulo>;
    /**
     * `Complex` facade current settings.
     */
    static readonly settings: TypeOfComplex.ComplexConfig<TypeOfComplex.Rounding, TypeOfComplex.Modulo>;
    static readonly isInstanceOf: IsInstanceOfHandler;
    static readonly set: SetHandler;
    static readonly setNumberType: OneArgNoReturnHandler;
    static readonly create: CreateHandler;
    static readonly realSet: PartSetHandler;
    static readonly imagSet: PartSetHandler;
    static readonly realApply: PartApplyHandler;
    static readonly imagApply: PartApplyHandler;
    static readonly from: FromHandler;
    static readonly real: MapHandler;
    static readonly imag: MapHandler;
    static readonly isComplexValue: OneArgReturnBooleanHandler;
    static readonly isRealValue: OneArgReturnBooleanHandler;
    static readonly realIsFinite: OneArgReturnBooleanHandler;
    static readonly imagIsFinite: OneArgReturnBooleanHandler;
    static readonly realIsNaN: OneArgReturnBooleanHandler;
    static readonly imagIsNaN: OneArgReturnBooleanHandler;
    static readonly realIsInteger: OneArgReturnBooleanHandler;
    static readonly imagIsInteger: OneArgReturnBooleanHandler;
    static readonly realIsNegative: OneArgReturnBooleanHandler;
    static readonly imagIsNegative: OneArgReturnBooleanHandler;
    static readonly realIsZero: OneArgReturnBooleanHandler;
    static readonly imagIsZero: OneArgReturnBooleanHandler;
    static readonly realIsPositive: OneArgReturnBooleanHandler;
    static readonly imagIsPositive: OneArgReturnBooleanHandler;
    static readonly realToNumber: OneArgReturnNumberHandler;
    static readonly toBoolean: OneArgReturnNumberHandler;
    static readonly imagToNumber: OneArgReturnNumberHandler;
    static readonly realLessThan: TestNumLikeHandler;
    static readonly imagLessThan: TestNumLikeHandler;
    static readonly realLessThanOrEqualTo: TestNumLikeHandler;
    static readonly imagLessThanOrEqualTo: TestNumLikeHandler;
    static readonly realEquals: TestNumLikeHandler;
    static readonly imagEquals: TestNumLikeHandler;
    static readonly realGreaterThanOrEqualTo: TestNumLikeHandler;
    static readonly imagGreaterThanOrEqualTo: TestNumLikeHandler;
    static readonly realGreaterThan: TestNumLikeHandler;
    static readonly imagGreaterThan: TestNumLikeHandler;
    static readonly parse: ParseHandler;
    static readonly precedence: PrecedenceHandler;
    static readonly unparseValue: UnparseValueHandler;
    static readonly unparse: UnparseHandler;
    static readonly toString: ToStringHandler;
    static readonly unparseMathMLValue: UnparseValueHandler;
    static readonly unparseMathML: UnparseHandler;
    static readonly copy: OneArgHandler;
    static readonly toMaxPrecisionValue: OneArgValueHandler;
    static readonly toMaxPrecision: OneArgHandler;
    static readonly epsilon: NoArgHandler;
    static readonly random: OneOptNumArgHandler;
    static readonly eq: TwoArgHandler;
    static readonly ne: TwoArgHandler;
    static readonly cmp: CompareHandler;
    static readonly minMaxArrayReal: MinMaxArrayHandler;
    static readonly minMaxArrayRealWithIndex: MinMaxArrayWithIndexHandler;
    static readonly minMaxArrayComplex: MinMaxArrayHandler;
    static readonly minMaxArrayComplexWithIndex: MinMaxArrayWithIndexHandler;
    static readonly min: TwoArgHandler;
    static readonly minWise: TwoArgHandler;
    static readonly max: TwoArgHandler;
    static readonly maxWise: TwoArgHandler;
    static readonly lt: TwoArgHandler;
    static readonly le: TwoArgHandler;
    static readonly gt: TwoArgHandler;
    static readonly ge: TwoArgHandler;
    static readonly false: NoArgHandler;
    static readonly true: NoArgHandler;
    static readonly toLogical: OneArgHandler;
    static readonly logical: MapHandler;
    static readonly and: TwoArgHandler;
    static readonly or: TwoArgHandler;
    static readonly xor: TwoArgHandler;
    static readonly not: OneArgHandler;
    static readonly zero: NoArgHandler;
    static readonly one: NoArgHandler;
    static readonly onediv2: NoArgHandler;
    static readonly minusonediv2: NoArgHandler;
    static readonly minusone: NoArgHandler;
    static readonly pi: NoArgHandler;
    static readonly pidiv2: NoArgHandler;
    static readonly onei: NoArgHandler;
    static readonly onediv2i: NoArgHandler;
    static readonly minusonediv2i: NoArgHandler;
    static readonly minusonei: NoArgHandler;
    static readonly two: NoArgHandler;
    static readonly sqrt2pi: NoArgHandler;
    static readonly e: NoArgHandler;
    static readonly NaN_0: NoArgHandler;
    static readonly inf_0: NoArgHandler;
    static readonly add: TwoArgHandler;
    static readonly sub: TwoArgHandler;
    static readonly neg: OneArgHandler;
    static readonly mul: TwoArgHandler;
    static readonly mulAndSumTo: ThreeArgHandler;
    static readonly rdiv: TwoArgHandler;
    static readonly ldiv: TwoArgHandler;
    static readonly inv: OneArgHandler;
    static readonly power: TwoArgHandler;
    static readonly root: TwoArgHandler;
    static readonly abs: MapHandler;
    static readonly abs2: MapHandler;
    static readonly hypot: TwoArgHandler;
    static readonly arg: MapHandler;
    static readonly conj: MapHandler;
    static readonly mod: TwoArgHandler;
    static readonly rem: TwoArgHandler;
    static readonly fix: MapHandler;
    static readonly ceil: MapHandler;
    static readonly floor: MapHandler;
    static readonly round: MapHandler;
    static readonly sign: MapHandler;
    static readonly sqrt: MapHandler;
    static readonly exp: MapHandler;
    static readonly log: MapHandler;
    static readonly logb: TwoArgHandler;
    static readonly log2: MapHandler;
    static readonly log10: MapHandler;
    static readonly deg2rad: MapHandler;
    static readonly rad2deg: MapHandler;
    static readonly sin: MapHandler;
    static readonly sind: MapHandler;
    static readonly cos: MapHandler;
    static readonly cosd: MapHandler;
    static readonly tan: MapHandler;
    static readonly tand: MapHandler;
    static readonly csc: MapHandler;
    static readonly cscd: MapHandler;
    static readonly sec: MapHandler;
    static readonly secd: MapHandler;
    static readonly cot: MapHandler;
    static readonly cotd: MapHandler;
    static readonly asin: MapHandler;
    static readonly asind: MapHandler;
    static readonly acos: MapHandler;
    static readonly acosd: MapHandler;
    static readonly atan: MapHandler;
    static readonly atan2: TwoArgHandler;
    static readonly atand: MapHandler;
    static readonly acsc: MapHandler;
    static readonly acscd: MapHandler;
    static readonly asec: MapHandler;
    static readonly asecd: MapHandler;
    static readonly acot: MapHandler;
    static readonly acotd: MapHandler;
    static readonly sinh: MapHandler;
    static readonly cosh: MapHandler;
    static readonly tanh: MapHandler;
    static readonly csch: MapHandler;
    static readonly sech: MapHandler;
    static readonly coth: MapHandler;
    static readonly asinh: MapHandler;
    static readonly acosh: MapHandler;
    static readonly atanh: MapHandler;
    static readonly acsch: MapHandler;
    static readonly asech: MapHandler;
    static readonly acoth: MapHandler;
    static readonly gamma: MapHandler;
    static readonly factorial: MapHandler;
    static readonly applyFunction: PartApplyHandlerTable;
    static readonly mapFunction: Record<string, MapHandler>;
    static readonly twoArgFunction: Record<string, TwoArgHandler>;
}
export type { Decimal, RealType, NumLikeType, NumberObjectType, RealTypeDescriptor, ComplexType };
export { Complex, toNumber };
declare const _default: {
    Complex: typeof Complex;
};
export default _default;
