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 class MumbleSocket {
    private readonly socket;
    private readonly _packet;
    private readonly _audioPacket;
    private buffers;
    private length;
    private readers;
    constructor(socket: TLSSocket);
    get packet(): Observable<PacketType>;
    get audioPacket(): Observable<AudioPacket>;
    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;
    private receiveData;
    private flushReaders;
    private readPrefix;
    private readPacket;
    private decodeAudio;
}
export {};
