diff --git a/passport-local-mongoose/passport-local-mongoose.d.ts b/passport-local-mongoose/passport-local-mongoose.d.ts
new file mode 100644
index 0000000000..c0fd0bf6de
--- /dev/null
+++ b/passport-local-mongoose/passport-local-mongoose.d.ts
@@ -0,0 +1,83 @@
+///
+///
+
+declare module 'mongoose' {
+ import passportLocal = require('passport-local');
+
+ // methods
+ export interface PassportLocalDocument {
+ setPassword(password: string, cb: (err: any, res: any) => void): void;
+ authenticate(password: string, cb: (err: any, res: any, error: any) => void): void;
+ }
+
+ // statics
+ export type PassportLocalModel = _PassportLocalModel & Model;
+ interface _PassportLocalModel {
+ authenticate(): (username: string, password: string, cb: (err: any, res: T, error: any) => void) => void;
+ serializeUser(): (user: PassportLocalModel, cb: (err: any) => void) => void;
+ deserializeUser(): (username: string, cb: (err: any) => void) => void;
+ register(user: PassportLocalModel, password: string, cb: (err: any) => void): void;
+ findByUsername(username: string, selectHashSaltFields: boolean, cb: (err: any) => void): any;
+ createStrategy(): passportLocal.Strategy;
+ }
+
+ // error messages
+ export interface PassportLocalErrorMessages {
+ MissingPasswordError?: string;
+ AttemptTooSoonError?: string;
+ TooManyAttemptsError?: string;
+ NoSaltValueStoredError?: string;
+ IncorrectPasswordError?: string;
+ IncorrectUsernameError?: string;
+ MissingUsernameError?: string;
+ UserExistsError?: string;
+ }
+
+ // plugin options
+ export interface PassportLocalOptions {
+ saltlen?: number;
+ iterations?: number;
+ keylen?: number;
+ encoding?: string;
+ digestAlgorithm?: string;
+ passwordValidator?: (password: string, cb: (err: any) => void) => void;
+
+ usernameField?: string;
+ usernameUnique?: boolean;
+
+ usernameQueryFields: Array;
+
+ usernameLowerCase?: boolean;
+
+ hashField?: string;
+ saltField?: string;
+
+ limitAttempts?: boolean;
+ lastLoginField?: string;
+ attemptsField?: string;
+ interval?: number;
+ maxInterval?: number;
+ maxAttempts?: number;
+
+ errorMessages?: PassportLocalErrorMessages;
+ }
+
+ export interface PassportLocalSchema extends Schema {
+ plugin(
+ plugin: (schema: PassportLocalSchema, options?: PassportLocalOptions) => void,
+ options?: PassportLocalOptions
+ ): this;
+ }
+
+ export function model(
+ name: string,
+ schema?: PassportLocalSchema,
+ collection?: string,
+ skipInit?: boolean): Statics & PassportLocalModel;
+}
+
+declare module 'passport-local-mongoose' {
+ import mongoose = require('mongoose');
+ var _: (schema: mongoose.Schema, options?: Object) => void;
+ export = _;
+}