diff --git a/eleventy-fetch.d.ts b/eleventy-fetch.d.ts
new file mode 100644
index 0000000..6f2d560
--- /dev/null
+++ b/eleventy-fetch.d.ts
@@ -0,0 +1,26 @@
+///
+import { Buffer } from 'buffer';
+
+export type FetchType =
+ | "json"
+ | "buffer"
+ | "text";
+
+export type EleventyFetchOptions = {
+ type?: TType;
+ directory?: string;
+ concurrency?: number;
+ fetchOptions?: RequestInit;
+ dryRun?: boolean;
+ removeUrlQueryParams?: boolean;
+ verbose?: boolean;
+ hashLength?: number;
+ duration?: string;
+ formatUrlForDisplay?: (url: string) => string;
+}
+
+export function EleventyFetch(url: string, options?: EleventyFetchOptions<"buffer">): Buffer;
+export function EleventyFetch(url: string, options: EleventyFetchOptions<"json">): T;
+export function EleventyFetch(url: string, options: EleventyFetchOptions<"text">): string;
+
+export default EleventyFetch;
diff --git a/package.json b/package.json
index 3cfcc8a..1727672 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
"url": "git+https://github.com/11ty/eleventy-fetch.git"
},
"main": "eleventy-fetch.js",
+ "types": "eleventy-fetch.d.ts",
"scripts": {
"test": "ava",
"sample": "node sample",
@@ -41,6 +42,7 @@
},
"homepage": "https://github.com/11ty/eleventy-fetch#readme",
"devDependencies": {
+ "@types/node": "^20.14.6",
"ava": "^5.2.0",
"prettier": "^3.2.5"
},