diff --git a/lib/server.d.ts b/lib/server.d.ts
new file mode 100644
index 0000000..301d9db
--- /dev/null
+++ b/lib/server.d.ts
@@ -0,0 +1,67 @@
+///
+
+import { EventEmitter } from 'events';
+
+type TurnDebugLevel =
+ | 'OFF'
+ | 'FATAL'
+ | 'ERROR'
+ | 'WARN'
+ | 'INFO'
+ | 'DEBUG'
+ | 'TRACE'
+ | 'ALL';
+
+type TurnAuthMech = 'none' | 'short-term' | 'long-term';
+
+interface TurnCredentials {
+ [user: string]: string;
+}
+
+interface TurnProps {
+ listeningPort: number;
+ listeningIps: string[];
+ relayIps: string[];
+ externalIps: string | { [localIp: string]: string } | null;
+ minPort: number;
+ maxPort: number;
+ authMech: TurnAuthMech;
+ realm: string;
+ maxAllocateLifetime: number;
+ defaultAllocatetLifetime: number;
+ debugLevel: TurnDebugLevel;
+
+ log: (...args: any[]) => void;
+ debug: (debugLevel: TurnDebugLevel, message: string) => void;
+}
+
+interface TurnOptions extends Partial {
+ credentials?: TurnCredentials;
+}
+
+interface TurnServer extends Readonly {}
+
+declare class TurnServer extends EventEmitter {
+ constructor(options?: TurnOptions);
+
+ start(): void;
+ stop(): void;
+ addUser(username: string, password: string): void;
+ removeUser(username: string): void;
+
+ readonly software: string;
+
+ readonly staticCredentials: TurnCredentials;
+}
+
+declare namespace TurnServer {
+ export {
+ TurnOptions,
+ TurnProps,
+ TurnCredentials,
+ TurnAuthMech,
+ TurnDebugLevel,
+ };
+}
+
+export = TurnServer;
diff --git a/package.json b/package.json
index 375dc11..0b2567a 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
"version": "0.0.6",
"description": "STUN/TURN Server",
"main": "./lib/server.js",
+ "types": "./lib/server.d.ts",
"scripts": {
"start": "node start",
"test": "nyc karma start",
@@ -12,18 +13,18 @@
"author": "Atlantis Software",
"license": "MIT",
"dependencies": {
- "crc": "~3.8.0",
- "js-yaml": "~3.14.0",
- "log4js": "~6.3.0"
+ "crc": "~4.1.0",
+ "js-yaml": "~4.1.0",
+ "log4js": "~6.4.3"
},
"devDependencies": {
- "coveralls": "~3.1.0",
- "eslint": "~7.9.0",
- "karma": "~5.2.2",
- "karma-chrome-launcher": "~3.1.0",
+ "coveralls": "~3.1.1",
+ "eslint": "~8.11.0",
+ "karma": "~6.3.17",
+ "karma-chrome-launcher": "~3.1.1",
"karma-mocha": "~2.0.1",
"karma-mocha-reporter": "~2.2.5",
- "mocha": "~8.1.3",
+ "mocha": "~9.2.2",
"nyc": "~15.1.0"
},
"repository": {