diff --git a/mailcheck/mailcheck-tests.ts b/mailcheck/mailcheck-tests.ts
new file mode 100644
index 000000000..85a7b2fad
--- /dev/null
+++ b/mailcheck/mailcheck-tests.ts
@@ -0,0 +1,54 @@
+///
+///
+
+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): void {
+ // a string distance algorithm of your choosing
+};
+
+$('#email').on('blur', function() {
+ $(this).mailcheck({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(element, suggestion) {
+ // callback code
+ },
+ empty: function(element) {
+ // callback code
+ }
+ });
+});
+
+Mailcheck.run({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(suggestion) {
+ // callback code
+ },
+ empty: function() {
+ // callback code
+ }
+});
+
+MC.run({
+ domains: domains, // optional
+ secondLevelDomains: secondLevelDomains, // optional
+ topLevelDomains: topLevelDomains, // optional
+ distanceFunction: superStringDistance, // optional
+ suggested: function(suggested) {
+ // 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..b2811148a
--- /dev/null
+++ b/mailcheck/mailcheck.d.ts
@@ -0,0 +1,75 @@
+// 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 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;
+ empty?: () => void;
+ }
+
+ export interface IJQueryOptions extends IOptions {
+ suggested?: IJQuerySuggested;
+ empty?: (element: JQuery) => void;
+ }
+
+ 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.IJQueryOptions): void;
+}
+
+declare module 'mailcheck' {
+ export = Mailcheck;
+}
\ No newline at end of file