diff --git a/types/ts3-nodejs-library/TeamSpeak3.d.ts b/types/ts3-nodejs-library/TeamSpeak3.d.ts
index 29c45158e4..6909a31409 100644
--- a/types/ts3-nodejs-library/TeamSpeak3.d.ts
+++ b/types/ts3-nodejs-library/TeamSpeak3.d.ts
@@ -1,3 +1,5 @@
+///
+
import { EventEmitter } from 'events';
import TeamSpeakChannel = require('./property/Channel');
import TeamSpeakClient = require('./property/Client');
@@ -5,9 +7,6 @@ import TeamSpeakServer = require('./property/Server');
import TeamSpeakServerGroup = require('./property/ServerGroup');
import TeamSpeakChannelGroup = require('./property/ChannelGroup');
-// For the buffer type.
-import * as stream from 'steam';
-
// We need this namespace, becaue we can't just export the interface directly,
// as it would conflict with export = TeamSpeak3.
declare namespace TeamSpeak3 {
@@ -29,6 +28,111 @@ declare namespace TeamSpeak3 {
/** Maximum wait time for the connection to get established. Defaults to 20000. */
readyTimeout?: number;
}
+
+ enum TargetMode {
+ CLIENT = 1,
+ CHANNEL = 2,
+ VIRTUAL_SERVER = 3
+ }
+
+ enum ClientType {
+ CLIENT = 0,
+ QUERY = 1
+ }
+
+ interface MessageData {
+ invoker: TeamSpeakClient;
+ msg: string;
+ targetmode: TargetMode;
+ }
+
+ interface WhoAmIResponse {
+ virtualserver_status: string;
+ virtualserver_id: number;
+ virtualserver_unique_identifier: string;
+ virtualserver_port: number;
+ client_id: number;
+ client_channel_id: number;
+ client_nickname: string;
+ client_database_id: number;
+ cient_login_name: string;
+ client_unique_identifier: string;
+ client_origin_server_id: number;
+ }
+
+ interface ClientMovedResponse {
+ client: TeamSpeakClient;
+ channel: TeamSpeakChannel;
+ reasonid: number;
+ }
+
+ interface ServerGroupClientListResponse {
+ cldbid: number;
+ client_nickname: string;
+ client_unique_identifier: string;
+ }
+
+ interface DisconnectedClient {
+ clid: number;
+ cid: number;
+ client_database_id: number;
+ client_nickname: string;
+ client_type: ClientType;
+ client_away: number;
+ client_away_message: string | undefined;
+ client_flag_talking: number;
+ client_input_muted: number;
+ client_output_muted: number;
+ client_input_hardware: number;
+ client_output_hardware: number;
+ client_talk_power: number;
+ client_is_talker: number;
+ client_is_priority_speaker: number;
+ client_is_recording: number;
+ client_is_channel_commander: number;
+ client_unique_identifier: string;
+ client_servergroups: number[];
+ client_channel_group_id: number;
+ client_channel_group_inherited_channel_id: number;
+ client_version: string;
+ client_platform: string;
+ client_idle_time: number;
+ client_created: number;
+ client_lastconnected: number;
+ client_icon_id: number;
+ client_country: string | undefined;
+ connection_client_ip: string;
+ }
+
+ interface DisconnectEvent {
+ cfid: number;
+ ctid: number;
+ reasonid: number;
+ reasonmsg: string;
+ clid: number;
+ }
+
+ interface ClientDisconnectResponse {
+ client: DisconnectedClient;
+ event: DisconnectEvent;
+ }
+
+ interface DebugInformation {
+ type: string;
+ data: string;
+ }
+}
+
+interface TeamSpeak3 {
+ // Type-safe events.
+ on(event: 'textmessage', listener: (data: TeamSpeak3.MessageData) => void): this;
+ on(event: 'clientconnect', listener: (data: { client: TeamSpeakClient }) => void): this;
+ on(event: 'clientmoved', listener: (data: TeamSpeak3.ClientMovedResponse) => void): this;
+ on(event: 'clientdisconnect', listener: (data: TeamSpeak3.ClientDisconnectResponse) => void): this;
+ on(event: 'close' | 'error' | 'flooding', listener: (err: Error) => void): this;
+ on(event: 'ready', listener: () => void): this;
+ on(event: 'debug', listener: (debug: TeamSpeak3.DebugInformation) => void): this;
+ on(event: string, listener: () => any): this;
}
declare class TeamSpeak3 extends EventEmitter {
@@ -143,7 +247,7 @@ declare class TeamSpeak3 extends EventEmitter {
/**
* Displays information about your current ServerQuery connection including your loginname, etc.
*/
- whoami(): Promise;
+ whoami(): Promise;
/**
* Displays detailed configuration information about the selected virtual server
@@ -216,7 +320,7 @@ declare class TeamSpeak3 extends EventEmitter {
* Displays the IDs of all clients currently residing in the server group.
* @param - the ServerGroup id
*/
- serverGroupClientList(sgid: number): Promise;
+ serverGroupClientList(sgid: number): Promise | null;
/**
* Adds the client to the server group specified with sgid.
@@ -846,7 +950,7 @@ declare class TeamSpeak3 extends EventEmitter {
* Lists all Clients with a given Filter
* @param - Filter Object
*/
- clientList(filter: any): Promise;
+ clientList(filter?: any): Promise;
/**
* Displays a list of files and directories stored in the specified channels file repository.
diff --git a/types/ts3-nodejs-library/index.d.ts b/types/ts3-nodejs-library/index.d.ts
index 913b2a0899..2d2c4bfa6b 100644
--- a/types/ts3-nodejs-library/index.d.ts
+++ b/types/ts3-nodejs-library/index.d.ts
@@ -2,6 +2,7 @@
// Project: https://github.com/Multivit4min/TS3-NodeJS-Library
// Definitions by: Pascal Sthamer
// David Kartnaller
+// Mattis Krämer
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.0
diff --git a/types/ts3-nodejs-library/property/Channel.d.ts b/types/ts3-nodejs-library/property/Channel.d.ts
index a66a3762a5..4f061dce51 100644
--- a/types/ts3-nodejs-library/property/Channel.d.ts
+++ b/types/ts3-nodejs-library/property/Channel.d.ts
@@ -11,6 +11,9 @@ interface ChannelListResponse {
declare class TeamSpeakChannel extends Abstract {
constructor(parent: TeamSpeak3, list: ChannelListResponse)
+ /** Returns the Name of the channel */
+ name: string;
+
/**
* Returns the ID of the Channel
* @returns the Channels ID
diff --git a/types/ts3-nodejs-library/property/Client.d.ts b/types/ts3-nodejs-library/property/Client.d.ts
index b75b9b1863..9e778331d3 100644
--- a/types/ts3-nodejs-library/property/Client.d.ts
+++ b/types/ts3-nodejs-library/property/Client.d.ts
@@ -11,9 +11,25 @@ interface ClientListResponse {
client_unique_identifier: string;
}
+declare enum ClientType {
+ CLIENT = 0,
+ QUERY = 1
+}
+
declare class TeamSpeakClient extends Abstract {
constructor(parent: TeamSpeak3, list: ClientListResponse)
+ /** Returns the Client Type: 0 = CLIENT, 1 = QUERY */
+ type: ClientType;
+ /** Client Nickname */
+ nickname: string;
+ /** Array of client Servergroups */
+ servergroups: number[];
+ /** The ChannelID of the client */
+ cid: number;
+ /** The UID of the client */
+ client_unique_identifier: string;
+
/**
* Returns the Database ID of the Client
* @returns the Clients Database ID