diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 4fe6f526e..40554b6d3 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -230,6 +230,7 @@ All definitions files include a header with the author and editors, so at some p
* [Knockout.Rx](https://github.com/Igorbek/knockout.rx) (by [Igor Oleinikov](https://github.com/Igorbek))
* [Knockout.Validation](https://github.com/ericmbarnard/Knockout-Validation) (by [Dan Ludwig](https://github.com/danludwig))
* [Knockout.Viewmodel](http://coderenaissance.github.com/knockout.viewmodel/) (by [Oisin Grehan](https://github.com/oising))
+* [Knockstrap](http://faulknercs.github.io/Knockstrap/) (by [Adam Pluciński](https://github.com/adaskothebeast))
* [ko.editables](http://romanych.github.com/ko.editables/) (by [Oisin Grehan](https://github.com/oising))
* [KoLite](https://github.com/CodeSeven/kolite) (by [Boris Yankov](https://github.com/borisyankov))
* [Lazy.js](http://danieltao.com/lazy.js/) (by [Bart van der Schoor](https://github.com/Bartvds))
diff --git a/knockstrap/knockstrap-tests.ts b/knockstrap/knockstrap-tests.ts
new file mode 100644
index 000000000..233ce6f4d
--- /dev/null
+++ b/knockstrap/knockstrap-tests.ts
@@ -0,0 +1,43 @@
+///
+///
+///
+///
+
+
+// test unique id
+var adaskoUnitqueId: string = ko.utils.uniqueId('adaskothebeast');
+
+class Sample {
+ public property1: KnockoutObservable;
+
+ constructor() {
+ this.property1 = ko.observable('test');
+ }
+}
+
+var sample = new Sample();
+
+// test unwrap properties
+var unwrappedProperties = ko.utils.unwrapProperties(sample);
+
+var kts: KnockoutTemplateSources;
+var stringTemplate = kts.stringTemplate('string-template');
+var stname = stringTemplate.templateName;
+
+ko.stringTemplateEngine.instance.allowTemplateRewriting = true;
+
+var templateSource = ko.stringTemplateEngine.instance.makeTemplateSource('template');
+ko.stringTemplateEngine.instance.addTemplate('test', {});
+ko.stringTemplateEngine.instance.removeTemplate('test');
+ko.stringTemplateEngine.instance.isTemplateExist('test');
+
+
+var alertbh = ko.bindingHandlers.alert;
+var carouselbh = ko.bindingHandlers.carousel;
+var checkboxbh = ko.bindingHandlers.checkbox;
+var modalbh = ko.bindingHandlers.modal;
+var popoverbh = ko.bindingHandlers.popover;
+var progressbh = ko.bindingHandlers.progress;
+var radiobh = ko.bindingHandlers.radio;
+var togglebh = ko.bindingHandlers.toggle;
+var tooltipbh = ko.bindingHandlers.tooltip;
\ No newline at end of file
diff --git a/knockstrap/knockstrap.d.ts b/knockstrap/knockstrap.d.ts
new file mode 100644
index 000000000..a1f9791da
--- /dev/null
+++ b/knockstrap/knockstrap.d.ts
@@ -0,0 +1,163 @@
+// Type definitions for Knockstrap
+// Project: http://faulknercs.github.io/Knockstrap/
+// Definitions by: Adam Pluciński
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+///
+///
+
+interface KnockoutUtils {
+ uniqueId(prefix: string): string;
+ unwrapProperties(wrappedProperies: any): any;
+}
+
+interface KnockoutTemplateSources {
+ stringTemplate: {
+ prototype: KnockstrapStringTemplate;
+ new (template: string): KnockstrapStringTemplate;
+ };
+}
+
+interface KnockstrapStringTemplate extends KnockoutTemplateSourcesDomElement {
+ templateName: string;
+}
+
+interface KnockoutStatic {
+ stringTemplateEngine: {
+ prototype: KnockstrapStringTemplateEngine;
+ new (): KnockstrapStringTemplateEngine;
+ instance: KnockstrapStringTemplateEngine;
+ }
+}
+
+interface KnockstrapStringTemplateEngine extends KnockoutNativeTemplateEngine {
+ allowTemplateRewriting: boolean;
+ makeTemplateSource(template: string): KnockstrapStringTemplate;
+ addTemplate(name: string, template: any): void;
+ removeTemplate(name: string): void;
+ isTemplateExist(name: string): boolean;
+ getTemplate(name: string): any;
+}
+
+interface KnockoutBindingHandlers {
+ alert: AlertKnockoutBindingHandler;
+ carousel: CarouselKnockoutBindingHandler;
+ checkbox: KnockoutBindingHandler;
+ modal: ModalKnockoutBindingHandler;
+ popover: PopoverKnockoutBindingHandler;
+ progress: ProgressKnockoutBindingHandler;
+ radio: KnockoutBindingHandler;
+ toggle: KnockoutBindingHandler;
+ tooltip: KnockoutBindingHandler;
+}
+
+interface KnockoutControlsDescendantBindings {
+ controlsDescendantBindings: boolean;
+}
+
+interface AlertKnockoutBindingHandler extends KnockoutBindingHandler {
+ init? (element: any,
+ valueAccessor: () => any,
+ allBindingsAccessor: KnockoutAllBindingsAccessor,
+ viewModel: any,
+ bindingContext: KnockoutBindingContext): KnockoutControlsDescendantBindings;
+}
+
+interface CarouselKnockoutBindingHandler extends KnockoutBindingHandler {
+ init? (element: any,
+ valueAccessor: () => any,
+ allBindingsAccessor: KnockoutAllBindingsAccessor,
+ viewModel: any,
+ bindingContext: KnockoutBindingContext): KnockoutControlsDescendantBindings;
+ defaults: KnockstrapCarouselDefaults;
+}
+
+interface KnockstrapCarouselDefaults {
+ css: string;
+ controlsTemplate: KnockstrapCarouselDefaultsControlsTemplate;
+ indicatorsTemplate: KnockstrapCarouselDefaultsIndicatorsTemplate;
+ itemTemplate: KnockstrapCarouselDefaultsItemTemplate;
+}
+
+interface KnockstrapDefaultsTemplateBase {
+ name: string;
+ templateEngine: KnockstrapStringTemplateEngine;
+}
+
+interface KnockstrapCarouselDefaultsControlsTemplate extends KnockstrapDefaultsTemplateBase {
+ dataConverter(value: any): KnockstrapCarouselDefaultsIdDataConverted;
+
+}
+
+interface KnockstrapCarouselDefaultsIdDataConverted {
+ id: KnockoutComputed;
+}
+
+interface KnockstrapCarouselDefaultsIndicatorsTemplate extends KnockstrapDefaultsTemplateBase {
+ dataConverter(value: any): KnockstrapCarouselDefaultsIdItemsDataConverted;
+}
+
+interface KnockstrapCarouselDefaultsIdItemsDataConverted extends KnockstrapCarouselDefaultsIdDataConverted {
+ items: any;
+}
+
+interface KnockstrapCarouselDefaultsItemTemplate extends KnockstrapDefaultsTemplateBase {
+ converter(value: any): any;
+}
+
+interface ModalKnockoutBindingHandler extends KnockoutBindingHandler {
+ init? (element: any,
+ valueAccessor: () => any,
+ allBindingsAccessor: KnockoutAllBindingsAccessor,
+ viewModel: any,
+ bindingContext: KnockoutBindingContext): KnockoutControlsDescendantBindings;
+ defaults: KnockstrapModalDefaults;
+}
+
+interface KnockstrapModalDefaults {
+ css: string;
+ attributes: KnockstrapModalDefaultsAttributes;
+ headerTemplate: KnockstrapDefaultsTemplateBase;
+ bodyTemplate: KnockstrapDefaultsTemplateBase;
+ footerTemplate: KnockstrapModalDefaultsFooterTemplate;
+}
+
+interface KnockstrapModalDefaultsAttributes {
+ role: string;
+}
+
+interface KnockstrapModalDefaultsFooterTemplate extends KnockstrapDefaultsTemplateBase {
+ data: KnockstrapModalDefaultsFooterData;
+}
+
+interface KnockstrapModalDefaultsFooterData {
+ closeLabel: string;
+ primaryLabel: string;
+}
+
+interface PopoverKnockoutBindingHandler extends KnockoutBindingHandler {
+ init? (element: any,
+ valueAccessor: () => any,
+ allBindingsAccessor: KnockoutAllBindingsAccessor,
+ viewModel: any,
+ bindingContext: KnockoutBindingContext): KnockoutControlsDescendantBindings;
+}
+
+interface ProgressKnockoutBindingHandler extends KnockoutBindingHandler {
+ init? (element: any,
+ valueAccessor: () => any,
+ allBindingsAccessor: KnockoutAllBindingsAccessor,
+ viewModel: any,
+ bindingContext: KnockoutBindingContext): KnockoutControlsDescendantBindings;
+ defaults: KnockstrapProgressDefaults;
+}
+
+interface KnockstrapProgressDefaults {
+ css: string;
+ text: string;
+ textHidden: boolean;
+ striped: boolean;
+ type: string;
+ animated: boolean;
+}
\ No newline at end of file