export declare const VOLCENGINE_REALTIME_PATH = "/api/v3/sauc/bigmodel_nostream"; export declare const VOLCENGINE_AUC_SUBMIT_PATH = "/api/v3/auc/bigmodel/submit"; export declare const VOLCENGINE_AUC_QUERY_PATH = "/api/v3/auc/bigmodel/query"; export declare const VOLCENGINE_RECORDING_TIMEOUT_MS = 120000; export declare const VOLCENGINE_RECORDING_POLL_INTERVAL_MS = 500; /** Gateway status codes carried in the X-Api-Status-Code response header. */ export declare const VOLCENGINE_STATUS_OK = "20000000"; export declare const VOLCENGINE_STATUS_PROCESSING = "20000001"; export declare const VOLCENGINE_STATUS_NO_SPEECH = "20000003"; export declare const VOLCENGINE_REALTIME_OPEN_TIMEOUT_MS = 15000; export declare const VOLCENGINE_REALTIME_FINISH_TIMEOUT_MS = 30000; /** Fixed recognition request shared by both Volcengine services (D-048). */ export declare function volcengineRecognitionRequest(): Record; export declare function volcengineRecordingRequestBody(options: { audio: Uint8Array; language?: string; }): Record; export declare function volcengineFullRequestFrame(sequence: number, payload: Record): Uint8Array; export declare function volcengineAudioRequestFrame(sequence: number, audio: Uint8Array, isLast: boolean): Uint8Array; export interface VolcengineResponseFrame { readonly messageType: number; readonly isLastPackage: boolean; readonly payloadSequence: number | null; readonly errorCode: number | null; readonly errorText: string; readonly payloadMsg: Record | undefined; } export declare function parseVolcengineResponseFrame(bytes: Uint8Array): VolcengineResponseFrame; export interface VolcengineRecordingAsrOptions { readonly audio: Uint8Array; readonly apiKey: string; readonly resourceId: string; readonly language?: string; readonly signal: AbortSignal; readonly fetch?: typeof globalThis.fetch; /** Injectable wall clock in milliseconds for deterministic tests. */ readonly now?: () => number; } export declare function transcribeVolcengineRecording(options: VolcengineRecordingAsrOptions): Promise; export declare function volcengineAuthHeaders(apiKey: string, resourceId: string, requestId: string): Record; export interface VolcengineRealtimeAsrOptions { readonly apiKey: string; readonly resourceId: string; readonly language?: string; readonly signal?: AbortSignal; readonly webSocketFactory?: (url: string, headers: Record) => VolcengineWebSocket; } export interface VolcengineRealtimeTranscript { readonly text: string; readonly final: boolean; } export interface VolcengineWebSocket { readonly readyState: number; binaryType: string; send(data: ArrayBuffer | ArrayBufferView | string): void; close(code?: number, reason?: string): void; addEventListener(type: string, listener: (event: VolcengineWebSocketEvent) => void): void; removeEventListener(type: string, listener: (event: VolcengineWebSocketEvent) => void): void; } export interface VolcengineWebSocketEvent { readonly data?: unknown; readonly error?: unknown; readonly code?: number; readonly reason?: string; } export declare function volcengineRealtimeUrl(): string; export declare function volcengineRealtimePayload(language?: string): Record; /** * Host-owned one-way streaming session. The full client request is sent once * when the socket opens; every audio chunk draws a cumulative response, and a * short silence chunk with the negative-sequence last flag ends the stream. * A server close after `is_last_package` (close code 1000) is a normal finish. */ export declare class VolcengineRealtimeAsrSession { private readonly options; private socket; private opened; private closed; private ended; private final; private transcript; private sequence; private lastError; private readonly messageWaiters; constructor(options: VolcengineRealtimeAsrOptions); open(signal?: AbortSignal): Promise; sendAudio(audio: Uint8Array, signal?: AbortSignal): Promise; finish(signal?: AbortSignal): Promise; snapshot(): VolcengineRealtimeTranscript; close(): void; private readonly onOpen; private readonly onMessage; private applyResult; private readonly onError; private readonly onClose; private setError; private requireSocket; private waitFor; private notifyWaiters; }