diff --git a/masonry-layout/masonry-layout-tests.ts b/masonry-layout/masonry-layout-tests.ts
index 8b13789179..e83a898f54 100644
--- a/masonry-layout/masonry-layout-tests.ts
+++ b/masonry-layout/masonry-layout-tests.ts
@@ -1 +1,48 @@
-
+// test file for masonry-layout.d.ts
+
+///
+///
+
+//import {Masonry} from "./masonry-layout.d.ts";
+
+// responsive layouts
+function testResponsiveLayouts() {
+ $('.grid').masonry({
+ itemSelector: '.grid-item',
+ columnWidth: '.grid-sizer',
+ percentPosition: true
+ });
+}
+
+// recommended Options
+function testRecommendedOptions() {
+ $('.grid').masonry({
+ columnWidth: 200,
+ itemSelector: '.grid-item'
+ });
+
+ var msnry = new Masonry.Masonry('.grid', {
+ columnWidth: 200,
+ itemSelector: '.grid-item'
+ });
+}
+
+// extended Options
+function testExtendedOptions() {
+ var msnry = new Masonry.Masonry('.grid', {
+ itemSelector: '.grid-item',
+ columnWidth: '.grid-sizer',
+ percentPosition: true,
+ gutter: '.gutter-sizer',
+ stamp: '.stamp',
+ fitWidth: true,
+ originLeft: true,
+ originTop: true,
+ containerStyle: {
+ position: 'relative'
+ },
+ transitionDuration: '0.4s',
+ resize: true,
+ initLayout: true
+ });
+}
diff --git a/masonry-layout/masonry-layout.d.ts b/masonry-layout/masonry-layout.d.ts
new file mode 100644
index 0000000000..0923a8f463
--- /dev/null
+++ b/masonry-layout/masonry-layout.d.ts
@@ -0,0 +1,70 @@
+// Type definitions for Masonry 4.0.0
+// Project: https://github.com/desandro/masonry
+// Definitions by: Mark Wilson
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+// Modified from original definitions by:
+// Travis Brown < https://github.com/warriorrocker>
+
+declare module Masonry {
+
+ class Masonry implements MasonryGrid {
+ constructor(options?: MasonryOptions);
+ constructor(selector: string, options?: MasonryOptions);
+ }
+
+ interface MasonryGrid {
+ masonry?(): void;
+ masonry?(eventName: string, listener: any): void;
+
+ // layout
+ layout?(): void;
+ layoutItems?(items: Array, isStill?: boolean): void;
+ stamp?(elements: Array): void;
+ unstamp?(elements: Array): void;
+
+ // add and remove items
+ appended?(elements: Array): void;
+ prepended?(elements: Array): void;
+ addItems?(elements: Array): void;
+ remove?(elements: Array): void;
+
+ // events
+ on?(eventName: string, listener: any): void;
+ off?(eventName: string, listener: any): void;
+ once?(eventName: string, listener: any): void;
+
+ // utilities
+ reloadItems?(): void;
+ destroy?(): void;
+ getItemElements?(): Array;
+ data?(element: Element): Masonry;
+ }
+
+ interface MasonryOptions {
+
+ // layout
+ itemSelector?: string;
+ columnWidth?: any;
+ percentPosition?: boolean;
+ gutter?: any;
+ stamp?: string;
+ fitWidth?: boolean;
+ originLeft?: boolean;
+ originTop?: boolean;
+
+ // setup
+ containerStyle?: Object;
+ transitionDuration?: any;
+ resize?: boolean;
+ initLayout?: boolean;
+ }
+}
+
+interface JQuery {
+ masonry(options?: Masonry.MasonryOptions): JQuery;
+}
+
+