@tf2pickup-org/mumble-client
Version:
A simple bot for managing mumble servers
51 lines (50 loc) • 2.03 kB
TypeScript
import { MumbleSocket } from './mumble-socket.js';
import { ServerConfig, UserList_User, Version } from '@tf2pickup-org/mumble-protocol';
import { User } from './user.js';
import { ChannelManager } from './channel-manager.js';
import { UserManager } from './user-manager.js';
import { ClientOptions } from './client-options.js';
import { Permissions } from './permissions.js';
import { TypedEventEmitter } from './typed-event-emitter.js';
import { Events } from './events.js';
import { MessageType } from '@protobuf-ts/runtime';
type PacketTuple<T extends object> = [MessageType<T>, T];
type ManyPackets<T extends object[]> = {
[K in keyof T]: PacketTuple<T[K]>;
};
type CommandProps<Send extends object, Return extends object, SendMore extends object[] = []> = {
expectPacket: [MessageType<Return>, (packet: Return) => boolean];
} & ({
sendPacket: PacketTuple<Send>;
} | {
sendPackets: ManyPackets<[Send, ...SendMore]>;
});
interface ConnectedClient extends Client {
socket: MumbleSocket;
session: number;
user: User;
self: User;
}
export declare class Client extends TypedEventEmitter<Events, Events> {
channels: ChannelManager;
users: UserManager;
serverVersion?: Version;
serverConfig?: ServerConfig;
socket?: MumbleSocket;
session?: number;
welcomeText?: string;
readonly options: ClientOptions;
readonly permissions: Map<number, Permissions>;
constructor(options: ClientOptions);
get user(): User | undefined;
get self(): User | undefined;
isConnected(): this is ConnectedClient;
assertConnected(): asserts this is ConnectedClient;
connect(): Promise<this>;
disconnect(): this;
command<Send extends object, Return extends object, SendMore extends object[] = []>(name: string, props: CommandProps<Send, Return, SendMore>): Promise<Return>;
fetchRegisteredUsers(): Promise<UserList_User[]>;
deregisterUser(userId: number): Promise<void>;
renameRegisteredUser(userId: number, name: string): Promise<void>;
}
export {};