diff --git a/cache-manager/cache-manager-tests.ts b/cache-manager/cache-manager-tests.ts
new file mode 100644
index 0000000000..36eeb4c141
--- /dev/null
+++ b/cache-manager/cache-manager-tests.ts
@@ -0,0 +1,51 @@
+///
+
+import * as cacheManager from 'cache-manager'
+
+const memoryCache = cacheManager.caching({ store: 'memory', max: 100, ttl: 10/*seconds*/ });
+const ttl = 5;
+
+memoryCache.set('foo', 'bar', { ttl: ttl }, (err) => {
+
+ if (err) {
+ throw err;
+ }
+
+ memoryCache.get('foo', (err, result) => {
+
+ // console.log(result);
+
+ memoryCache.del('foo', (err) => {
+ });
+
+ });
+});
+
+function getUser(id: number, cb: Function) {
+
+ cb(null, { id: id, name: 'Bob' });
+}
+
+const userId = 123;
+const key = 'user_' + userId;
+
+// Note: ttl is optional in wrap()
+memoryCache.wrap<{ id: number, name: string }>(key, (cb) => {
+
+ getUser(userId, cb);
+
+}, { ttl: ttl }, (err, user) => {
+
+ //console.log(user);
+
+ // Second time fetches user from memoryCache
+ memoryCache.wrap<{ id: number, name: string }>(key, (cb) => {
+
+ getUser(userId, cb);
+
+ }, (err, user) => {
+
+ //console.log(user);
+
+ });
+});
diff --git a/cache-manager/cache-manager.d.ts b/cache-manager/cache-manager.d.ts
new file mode 100644
index 0000000000..9570857f01
--- /dev/null
+++ b/cache-manager/cache-manager.d.ts
@@ -0,0 +1,36 @@
+// Type definitions for cache-manager v1.2.0
+// Project: https://github.com/BryanDonovan/node-cache-manager
+// Definitions by: Simon Gausmann
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+declare module 'cache-manager' {
+
+
+ interface CachingConfig {
+ ttl: number;
+ }
+ interface StoreConfig extends CachingConfig {
+ store: string;
+ max?: number;
+ isCacheableValue?: (value: any) => boolean;
+ }
+ interface Cache {
+ set(key: string, value: T, options: CachingConfig, callback?: (error: any) => void): void;
+ set(key: string, value: T, ttl: number, callback?: (error: any) => void): void;
+
+ wrap(key: string, wrapper: (callback: (error: any, result: T) => void) => void, options: CachingConfig, callback: (error: any, result: T) => void): void;
+ wrap(key: string, wrapper: (callback: (error: any, result: T) => void) => void, callback: (error: any, result: T) => void): void;
+
+ get(key: string, callback: (error: any, result: T) => void): void;
+
+ del(key: string, callback?: (error: any) => void): void;
+ }
+
+
+
+ module cacheManager {
+ function caching(ICongig: StoreConfig): Cache;
+ function multiCaching(Caches: Cache[]): Cache;
+ }
+
+ export = cacheManager;
+}