From b3a60ecd4daf671adbbd43a50acbbd67860db1d7 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Tue, 29 May 2018 15:43:03 -0700 Subject: [PATCH] Add types for bn.js (#26120) --- types/bn.js/bn.js-tests.ts | 6 ++++ types/bn.js/index.d.ts | 60 ++++++++++++++++++++++++++++++++++++++ types/bn.js/tsconfig.json | 16 ++++++++++ types/bn.js/tslint.json | 1 + 4 files changed, 83 insertions(+) create mode 100644 types/bn.js/bn.js-tests.ts create mode 100644 types/bn.js/index.d.ts create mode 100644 types/bn.js/tsconfig.json create mode 100644 types/bn.js/tslint.json diff --git a/types/bn.js/bn.js-tests.ts b/types/bn.js/bn.js-tests.ts new file mode 100644 index 0000000000..670234ecfe --- /dev/null +++ b/types/bn.js/bn.js-tests.ts @@ -0,0 +1,6 @@ +import BN = require('bn.js'); + +let bn = new BN(42); +bn = bn.add(bn); +bn.isZero(); +bn.byteLength; diff --git a/types/bn.js/index.d.ts b/types/bn.js/index.d.ts new file mode 100644 index 0000000000..1a3d4f9b70 --- /dev/null +++ b/types/bn.js/index.d.ts @@ -0,0 +1,60 @@ +// Type definitions for bn.js 4.11 +// Project: https://github.com/indutny/bn.js +// Definitions by: Leonid Logvinov +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +type Endianness = 'le' | 'be'; + +declare class BN { + constructor(num: number | string | number[] | Buffer, base?: number, endian?: Endianness); + clone(): BN; + toString(base?: number, length?: number): string; + toNumber(): number; + toJSON(): string; + toArray(endian?: Endianness, length?: number): number[]; + toBuffer(endian?: Endianness, length?: number): Buffer; + bitLength(): number; + zeroBits(): number; + byteLength(): number; + isNeg(): boolean; + isEven(): boolean; + isOdd(): boolean; + isZero(): boolean; + cmp(b: any): number; + lt(b: any): boolean; + lte(b: any): boolean; + gt(b: any): boolean; + gte(b: any): boolean; + eq(b: any): boolean; + isBN(b: any): boolean; + + neg(): BN; + abs(): BN; + add(b: BN): BN; + sub(b: BN): BN; + mul(b: BN): BN; + sqr(): BN; + pow(b: BN): BN; + div(b: BN): BN; + mod(b: BN): BN; + divRound(b: BN): BN; + + or(b: BN): BN; + and(b: BN): BN; + xor(b: BN): BN; + setn(b: number): BN; + shln(b: number): BN; + shrn(b: number): BN; + testn(b: number): boolean; + maskn(b: number): BN; + bincn(b: number): BN; + notn(w: number): BN; + + gcd(b: BN): BN; + egcd(b: BN): { a: BN; b: BN; gcd: BN }; + invm(b: BN): BN; +} + +export = BN; diff --git a/types/bn.js/tsconfig.json b/types/bn.js/tsconfig.json new file mode 100644 index 0000000000..932e246886 --- /dev/null +++ b/types/bn.js/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": ["es6"], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": ["../"], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": ["index.d.ts", "bn.js-tests.ts"] +} diff --git a/types/bn.js/tslint.json b/types/bn.js/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/bn.js/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }