diff --git a/scrollreveal/scrollreveal-tests.ts b/scrollreveal/scrollreveal-tests.ts
new file mode 100644
index 0000000000..f0b205763d
--- /dev/null
+++ b/scrollreveal/scrollreveal-tests.ts
@@ -0,0 +1,74 @@
+///
+
+//Tests from https://github.com/jlmakes/scrollreveal.js
+
+//1.2
+var sr = ScrollReveal();
+sr.reveal('.foo');
+sr.reveal('.bar');
+
+//1.3
+sr = ScrollReveal().reveal('.foo, .bar');
+
+//2.1
+sr = ScrollReveal({ reset: true });
+sr.reveal('.foo', { duration: 200 });
+
+//3.1
+sr = ScrollReveal({ duration: 2000 });
+sr.reveal('.box', 50);
+
+sr = ScrollReveal();
+sr.reveal('.box', { duration: 2000 }, 50);
+
+//3.2
+var fooReveal = {
+ delay : 200,
+ distance : '90px',
+ easing : 'ease-in-out',
+ rotate : { z: 10 },
+ scale : 1.1
+};
+
+sr = ScrollReveal();
+sr.reveal('.foo', fooReveal);
+sr.reveal('#chocolate', { delay: 500, scale: 0.9 });
+
+//3.3
+sr.reveal(document.getElementById('foo'));
+sr.reveal(document.querySelectorAll('.bar'));
+
+//3.4
+sr = ScrollReveal();
+var fooContainer = document.getElementById('fooContainer');
+sr.reveal('.foo', { container: fooContainer });
+sr.reveal('.bar', { container: '#barContainer' });
+
+//3.5
+
+fooContainer = document.getElementById('fooContainer');
+
+sr = ScrollReveal();
+sr.reveal('.foo', { container: fooContainer });
+var xmlhttp = new XMLHttpRequest();
+xmlhttp.onreadystatechange = function() {
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
+ if (xmlhttp.status == 200) {
+
+ // Turn our response into HTML...
+ var content = document.createElement('div');
+ content.innerHTML = xmlhttp.responseText;
+
+ // Add each element to the DOM...
+ for (var i = 0; i < content.childNodes.length; i++) {
+ fooContainer.appendChild(content.childNodes[ i ]);
+ };
+
+ // Finally!
+ sr.sync();
+ }
+ }
+}
+
+xmlhttp.open('GET', 'ajax.html', true);
+xmlhttp.send();
\ No newline at end of file
diff --git a/scrollreveal/scrollreveal.d.ts b/scrollreveal/scrollreveal.d.ts
new file mode 100644
index 0000000000..d1478c8243
--- /dev/null
+++ b/scrollreveal/scrollreveal.d.ts
@@ -0,0 +1,68 @@
+// Type definitions for ScrollReveal
+// Project: https://github.com/jlmakes/scrollreveal.js
+// Definitions by: David Pires
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare namespace scrollReveal {
+ interface ScrollRevealRotateObject {
+ x?: number;
+ y?: number;
+ z?: number;
+ }
+
+ interface ScrollRevealPositionObject {
+ top?: number;
+ right?: number;
+ bottom?: number;
+ left?: number;
+ }
+
+ interface ScrollRevealObjectOptions {
+ origin ? : string;
+ distance ? : string;
+ duration ? : number;
+ delay ? : number;
+ rotate ? : ScrollRevealRotateObject;
+ opacity ? : number;
+ scale ? : number;
+ easing ? : string;
+ container ? : any;
+ mobile ? : boolean;
+ reset ? : boolean;
+ useDelay ? : string;
+ viewFactor ? : number;
+ viewOffset ? : ScrollRevealPositionObject;
+ beforeReveal ? (domEl: HTMLElement): void;
+ afterReveal ? (domEl: HTMLElement): void;
+ beforeReset ? (domEl: HTMLElement): void;
+ afterReset ? (domEl: HTMLElement): void;
+ beforeReveal ? (domEl: NodeListOf): void;
+ afterReveal ? (domEl: NodeListOf): void;
+ beforeReset ? (domEl: NodeListOf): void;
+ afterReset ? (domEl: NodeListOf): void;
+ }
+
+
+ interface ScrollRevealObject {
+ (): ScrollRevealObject;
+ (options: ScrollRevealObjectOptions): ScrollRevealObject;
+ reveal(selector: string): ScrollRevealObject;
+ reveal(selector: string, interval: number): ScrollRevealObject;
+ reveal(selector: string, options: ScrollRevealObjectOptions): ScrollRevealObject;
+ reveal(selector: string, options: ScrollRevealObjectOptions, interval: number): ScrollRevealObject;
+
+ reveal(selector: HTMLElement): ScrollRevealObject;
+ reveal(selector: HTMLElement, interval: number): ScrollRevealObject;
+ reveal(selector: HTMLElement, options: ScrollRevealObjectOptions): ScrollRevealObject;
+ reveal(selector: HTMLElement, options: ScrollRevealObjectOptions, interval: number): ScrollRevealObject;
+
+ reveal(selector: NodeListOf): ScrollRevealObject;
+ reveal(selector: NodeListOf, interval: number): ScrollRevealObject;
+ reveal(selector: NodeListOf, options: ScrollRevealObjectOptions): ScrollRevealObject;
+ reveal(selector: NodeListOf, options: ScrollRevealObjectOptions, interval: number): ScrollRevealObject;
+
+ sync(): void;
+ }
+}
+
+declare var ScrollReveal: scrollReveal.ScrollRevealObject;
\ No newline at end of file