diff --git a/mailcheck/mailcheck-tests.ts b/mailcheck/mailcheck-tests.ts
new file mode 100644
index 000000000..4a5caa12a
--- /dev/null
+++ b/mailcheck/mailcheck-tests.ts
@@ -0,0 +1,55 @@
+///
+///
+
+import MC = require('mailcheck');
+
+var domains = ['gmail.com', 'aol.com'];
+var secondLevelDomains = ['hotmail']
+var topLevelDomains = ["com", "net", "org"];
+
+var superStringDistance = function(string1: string, string2: string): number {
+ // a string distance algorithm of your choosing
+ return 0;
+};
+
+$('#email').on('blur', function() {
+ $(this).mailcheck({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(element: JQuery, suggestion: MailcheckModule.ISuggestion) {
+ // callback code
+ },
+ empty: function(element: JQuery) {
+ // callback code
+ }
+ });
+});
+
+Mailcheck.run({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(suggestion: MailcheckModule.ISuggestion) {
+ // callback code
+ },
+ empty: function() {
+ // callback code
+ }
+});
+
+MC.run({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(suggested: MailcheckModule.ISuggestion) {
+ // callback code
+ suggested.address === '' && suggested.full === '' && suggested.domain === '';
+ },
+ empty: function() {
+ // callback code
+ }
+});
\ No newline at end of file
diff --git a/mailcheck/mailcheck.d.ts b/mailcheck/mailcheck.d.ts
new file mode 100644
index 000000000..c6f28d0db
--- /dev/null
+++ b/mailcheck/mailcheck.d.ts
@@ -0,0 +1,78 @@
+// Type definitions for Mailcheck 1.1+
+// Project: https://github.com/mailcheck/mailcheck
+// Definitions by: Paulo Cesar
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare var Mailcheck: MailcheckModule.Static;
+
+declare module MailcheckModule {
+
+ export interface IDistanceFunction {
+ (s1: string, s2: string): number;
+ }
+
+ export interface ISuggestFunction {
+ (email: string, domains?: string[], topLevelDomains?: string[], distanceFunction?: IDistanceFunction):void;
+ }
+
+ export interface IJQuerySuggested {
+ (element: JQuery, suggested: ISuggestion): void;
+ }
+
+ export interface IJQueryEmpty {
+ (element: JQuery): void;
+ }
+
+ export interface IEmpty {
+ (): void;
+ }
+
+ export interface ISuggested {
+ (suggested: ISuggestion): void;
+ }
+
+ export interface ISplitEmail {
+ topLevelDomain?: string;
+ domain?: string;
+ address?: string;
+ }
+
+ export interface ISuggestion {
+ address: string;
+ domain: string;
+ full: string;
+ }
+
+ export interface IOptions {
+ domains?: string[];
+ topLevelDomains?: string[];
+ distanceFunction?: IDistanceFunction;
+ suggested?: ISuggested | IJQuerySuggested;
+ empty?: IEmpty | IJQueryEmpty;
+ }
+
+ export interface Static {
+ defaultDomains: string[];
+ defaultSecondLevelDomains: string[];
+ defaultTopLevelDomains: string[];
+ domainThreshold: number;
+ topLevelThreshold: number;
+ run(opts: IOptions):void;
+ suggest: ISuggestFunction;
+ encodeEmail(email: string): string;
+ splitEmail(email: string): ISplitEmail;
+ sift3Distance(s1: string, s2: string): number;
+ findClosestDomain(domain: string, domains: string[], distanceFunction?: IDistanceFunction, threshold?: number): boolean|string;
+ }
+
+}
+
+interface JQuery {
+ mailcheck(opts: MailcheckModule.IOptions): void;
+}
+
+declare module 'mailcheck' {
+ export = Mailcheck;
+}
\ No newline at end of file