agents
Version:
A home for your AI agents
72 lines (71 loc) • 2.06 kB
TypeScript
//#region src/voice/sfu.d.ts
/**
* Pure utility functions for the Cloudflare Realtime SFU integration.
*
* Extracted from sfu.ts for testability. These handle:
* - Protobuf varint encoding/decoding
* - SFU WebSocket adapter protobuf packet encoding/decoding
* - Audio format conversion (48kHz stereo ↔ 16kHz mono)
*/
declare function decodeVarint(
buf: Uint8Array,
offset: number
): {
value: number;
bytesRead: number;
};
declare function encodeVarint(value: number): Uint8Array;
/** Extract the PCM payload from a protobuf Packet message. */
declare function extractPayloadFromProtobuf(
data: ArrayBuffer
): Uint8Array | null;
/** Encode PCM payload into a protobuf Packet message (for ingest/buffer mode — just payload). */
declare function encodePayloadToProtobuf(payload: Uint8Array): ArrayBuffer;
/** Downsample 48kHz stereo interleaved PCM to 16kHz mono PCM (both 16-bit LE). */
declare function downsample48kStereoTo16kMono(
stereo48k: Uint8Array
): ArrayBuffer;
/** Upsample 16kHz mono PCM to 48kHz stereo interleaved PCM (both 16-bit LE). */
declare function upsample16kMonoTo48kStereo(mono16k: ArrayBuffer): Uint8Array;
interface SFUConfig {
appId: string;
apiToken: string;
}
declare function sfuFetch(
config: SFUConfig,
path: string,
body: unknown
): Promise<unknown>;
declare function createSFUSession(config: SFUConfig): Promise<{
sessionId: string;
}>;
declare function addSFUTracks(
config: SFUConfig,
sessionId: string,
body: unknown
): Promise<unknown>;
declare function renegotiateSFUSession(
config: SFUConfig,
sessionId: string,
sdp: string
): Promise<unknown>;
declare function createSFUWebSocketAdapter(
config: SFUConfig,
tracks: unknown[]
): Promise<unknown>;
//#endregion
export {
SFUConfig,
addSFUTracks,
createSFUSession,
createSFUWebSocketAdapter,
decodeVarint,
downsample48kStereoTo16kMono,
encodePayloadToProtobuf,
encodeVarint,
extractPayloadFromProtobuf,
renegotiateSFUSession,
sfuFetch,
upsample16kMonoTo48kStereo
};
//# sourceMappingURL=sfu.d.ts.map