/* Mbn v1.50 / 31.03.2020 | https://mirkl.es/n/lib | Copyright (c) 2016-2020 Mikołaj Błajek | https://mirkl.es/n/LICENSE */ // TypeScript type definitions for Mbn type MbnArg = number | boolean | null | undefined | string | Mbn; type MbnOneArgFn = "set" | "abs" | "inva" | "invm" | "ceil" | "floor" | "sqrt" | "round" | "sgn" | "intp"; type MbnTwoArgFn = "min" | "max" | "add" | "sub" | "mul" | "div" | "mod" | "pow"; type MbnPT = number; type MbnST = "." | ","; type MbnTT = boolean; type MbnET = boolean | null; type MbnFT = boolean; interface MbnDispOpt { MbnP?: MbnPT, MbnS?: MbnST, MbnT?: MbnTT, MbnF?: MbnFT } interface MbnOpt extends MbnDispOpt { MbnE?: MbnET } interface Mbn { set(b: MbnArg): Mbn; toString(): string; format(f?: boolean | MbnDispOpt): string; toNumber(): number; cmp(b: MbnArg, d?: MbnArg): -1 | 0 | 1; add(b: MbnArg, m?: boolean): Mbn; sub(b: MbnArg, m?: boolean): Mbn; mul(b: MbnArg, m?: boolean): Mbn; div(b: MbnArg, m?: boolean): Mbn; mod(b: MbnArg, m?: boolean): Mbn; split(ar?: MbnArg[] | MbnArg): Mbn[]; isInt(): boolean; floor(m?: boolean): Mbn; round(m?: boolean): Mbn; abs(m?: boolean): Mbn; inva(m?: boolean): Mbn; invm(m?: boolean): Mbn; ceil(m?: boolean): Mbn; intp(m?: boolean): Mbn; eq(b: MbnArg, d?: MbnArg): boolean; min(b: MbnArg, m?: boolean): Mbn; max(b: MbnArg, m?: boolean): Mbn; sqrt(m?: boolean): Mbn; sgn(m?: boolean): Mbn; pow(b: MbnArg, m?: boolean): Mbn; fact(m?: boolean): Mbn; } interface MbnConstructor { new(n?: MbnArg, v?: boolean | Record): Mbn; reduce(fn: MbnOneArgFn, arr: MbnArg[]): Mbn[]; reduce(fn: MbnTwoArgFn, arr: MbnArg[]): Mbn; reduce(fn: MbnTwoArgFn, arr: MbnArg[], b: MbnArg | MbnArg[]): Mbn[]; reduce(fn: MbnTwoArgFn, arr: MbnArg, b: MbnArg[]): Mbn[]; def(n: string | null, v?: string): Mbn; calc(exp: string, vars?: Record): Mbn; check(exp: string): string[] | false; prototype: Mbn; } interface MbnConstructorParent extends MbnConstructor { extend(opt?: number | MbnOpt): MbnConstructor; } export var Mbn: MbnConstructorParent;