diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 0000000..7a834c4
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,60 @@
+///
+
+import { IncomingHttpHeaders } from "http";
+
+type StaticOrigin = boolean | string | RegExp | Array;
+
+type CustomOrigin = (
+ requestOrigin: string | undefined,
+ callback: (err: Error | null, origin?: StaticOrigin) => void,
+) => void;
+
+declare namespace e {
+ interface CorsRequest {
+ method?: string | undefined;
+ headers: IncomingHttpHeaders;
+ }
+ interface CorsOptions {
+ /**
+ * @default '*'
+ */
+ origin?: StaticOrigin | CustomOrigin | undefined;
+ /**
+ * @default 'GET,HEAD,PUT,PATCH,POST,DELETE'
+ */
+ methods?: string | string[] | undefined;
+ /**
+ * @deprecated Use `allowedHeaders` instead.
+ */
+ headers?: string | string[] | undefined;
+ allowedHeaders?: string | string[] | undefined;
+ exposedHeaders?: string | string[] | undefined;
+ credentials?: boolean | undefined;
+ maxAge?: number | undefined;
+ /**
+ * @default false
+ */
+ preflightContinue?: boolean | undefined;
+ /**
+ * @default 204
+ */
+ optionsSuccessStatus?: number | undefined;
+ }
+ type CorsOptionsDelegate = (
+ req: T,
+ callback: (err: Error | null, options?: CorsOptions) => void,
+ ) => void;
+}
+
+declare function e(
+ options?: e.CorsOptions | e.CorsOptionsDelegate,
+): (
+ req: T,
+ res: {
+ statusCode?: number | undefined;
+ setHeader(key: string, value: string): any;
+ end(): any;
+ },
+ next: (err?: any) => any,
+) => void;
+export = e;
diff --git a/package.json b/package.json
index e90bac8..660ab7c 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
"url": "https://opencollective.com/express"
},
"main": "./lib/index.js",
+ "types": "./index.d.ts",
"dependencies": {
"object-assign": "^4",
"vary": "^1"
@@ -29,6 +30,7 @@
"supertest": "6.1.3"
},
"files": [
+ "index.d.ts",
"lib/index.js"
],
"engines": {