@tf2pickup-org/mumble-client
Version:
A simple bot for managing mumble servers
58 lines (57 loc) • 1.61 kB
TypeScript
import { Observable } from 'rxjs';
import { TLSSocket } from 'tls';
import { MessageType } from '@protobuf-ts/runtime';
import { PacketType } from './packet-type.js';
interface MumbleSocketReader {
length: number;
callback: (data: Buffer) => void;
}
interface AudioPacket {
source: number;
}
export declare enum AudioCodec {
CELTAlpha = 0,
Ping = 1,
Speex = 2,
CELTBeta = 3,
Opus = 4
}
export interface FullAudioPacket {
source: number;
target: number;
codec: AudioCodec;
sequence: number;
audioData: Buffer;
hasTerminator: boolean;
}
export interface SendAudioOptions {
data: Buffer;
codec?: AudioCodec;
target?: number;
isTerminator?: boolean;
}
export declare class MumbleSocket {
private readonly socket;
private readonly _packet;
private readonly _audioPacket;
private readonly _fullAudioPacket;
private buffers;
private length;
private readers;
private audioSequence;
constructor(socket: TLSSocket);
get packet(): Observable<PacketType>;
get audioPacket(): Observable<AudioPacket>;
get fullAudioPacket(): Observable<FullAudioPacket>;
read(length: number, callback: MumbleSocketReader['callback']): void;
send<T extends object>(message: MessageType<T>, payload: T): Promise<void>;
write(buffer: Buffer | Uint8Array): Promise<void>;
end(): void;
sendAudio({ data, codec, target, isTerminator, }: SendAudioOptions): Promise<void>;
private receiveData;
private flushReaders;
private readPrefix;
private readPacket;
private decodeAudio;
}
export {};