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 = [MessageType, T]; type ManyPackets = { [K in keyof T]: PacketTuple; }; type CommandProps = { expectPacket: [MessageType, (packet: Return) => boolean]; } & ({ sendPacket: PacketTuple; } | { sendPackets: ManyPackets<[Send, ...SendMore]>; }); interface ConnectedClient extends Client { socket: MumbleSocket; session: number; user: User; self: User; } export declare class Client extends TypedEventEmitter { channels: ChannelManager; users: UserManager; serverVersion?: Version; serverConfig?: ServerConfig; socket?: MumbleSocket; session?: number; welcomeText?: string; readonly options: ClientOptions; readonly permissions: Map; constructor(options: ClientOptions); get user(): User | undefined; get self(): User | undefined; isConnected(): this is ConnectedClient; assertConnected(): asserts this is ConnectedClient; connect(): Promise; disconnect(): this; command(name: string, props: CommandProps): Promise; fetchRegisteredUsers(): Promise; deregisterUser(userId: number): Promise; renameRegisteredUser(userId: number, name: string): Promise; } export {};