diff --git a/javascript-bignum/javascript-bignum-tests.ts b/javascript-bignum/javascript-bignum-tests.ts
new file mode 100644
index 000000000..57555fcce
--- /dev/null
+++ b/javascript-bignum/javascript-bignum-tests.ts
@@ -0,0 +1,21 @@
+///
+let m = SchemeNumber("1");
+let n = SchemeNumber(2);
+
+let sum: SchemeNumber = SchemeNumber.fn["+"](m, n);
+sum = SchemeNumber.fn["+"](m, 1);
+sum = SchemeNumber.fn["+"](m, "12");
+sum = SchemeNumber.fn["+"]("12", "25");
+
+let floored: SchemeNumber = SchemeNumber.fn.floor(m);
+
+let str: string = floored.toString(16);
+str = floored.toExponential(2);
+str = floored.toPrecision(2);
+str = floored.toFixed(2);
+
+let num: number = maxIntegerDigits;
+num = VERSION[0];
+num = VERSION.length;
+
+raise("fake error", "This is not really an error", m);
diff --git a/javascript-bignum/javascript-bignum.d.ts b/javascript-bignum/javascript-bignum.d.ts
new file mode 100644
index 000000000..a088837d1
--- /dev/null
+++ b/javascript-bignum/javascript-bignum.d.ts
@@ -0,0 +1,53 @@
+// Type definitions for javascript-bignum
+// Project: https://github.com/jtobey/javascript-bignum
+// Definitions by: Nathan Shively-Sanders
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+// Documentation: http://john-edwin-tobey.org/Scheme/javascript-bignum/docs/files/schemeNumber-js.html
+
+// This version only includes typing for schemeNumber, not the full library
+declare type SchemeOperator = (...args: (string | SchemeNumber | number)[]) => SchemeNumber;
+declare var VERSION: number[];
+declare function raise(conditionType: string, message: string, ...irritants: any[]): void;
+declare var maxIntegerDigits: number;
+declare interface SchemeFn {
+ [opname: string]: SchemeOperator;
+ inexact: SchemeOperator;
+ exact: SchemeOperator;
+ max: SchemeOperator;
+ min: SchemeOperator;
+ abs: SchemeOperator;
+ div: SchemeOperator;
+ mod: SchemeOperator;
+ div0: SchemeOperator;
+ mod0: SchemeOperator;
+ gcd: SchemeOperator;
+ lcm: SchemeOperator;
+ numerator: SchemeOperator;
+ denominator: SchemeOperator;
+ floor: SchemeOperator;
+ ceiling: SchemeOperator;
+ truncate: SchemeOperator;
+ round: SchemeOperator;
+ rationalize: SchemeOperator;
+ exp: SchemeOperator;
+ log: SchemeOperator;
+ sin: SchemeOperator;
+ cos: SchemeOperator;
+ tan: SchemeOperator;
+ asin: SchemeOperator;
+ acos: SchemeOperator;
+ atan: SchemeOperator;
+ sqrt: SchemeOperator;
+ expt: SchemeOperator;
+ magnitude: SchemeOperator;
+ angle: SchemeOperator;
+}
+declare interface SchemeNumber {
+ (value: string | number): SchemeNumber;
+ toString(radix: number): string;
+ toFixed(fractionDigits: number): string;
+ toExponential(fractionDigits: number): string;
+ toPrecision(precision: number): string;
+ fn: SchemeFn;
+}
+declare var SchemeNumber: SchemeNumber;