/// import { AudioFormat } from '../AudioInput/audioHelper'; /** * 录音状态类型 */ export type RecordingState = 'idle' | 'recording' | 'willCancel' | 'willSpeechToText'; /** * useRecording Hook 配置项 */ export interface UseRecordingOptions { /** * 音频格式 */ audioFormat?: AudioFormat; /** * 录音数据回调(停止录音时触发) */ onDataAvailable?: (blob: Blob) => void; /** * 震动回调 */ onVibrate?: (type?: 'countdown' | 'timeout' | 'cancel') => void; /** * 录音状态变化回调 */ onRecordingStateChange?: (state: RecordingState) => void; /** * 是否正在录音变化回调 */ onRecordingChange?: (isRecording: boolean) => void; /** * 音频流变化回调 */ onStreamChange?: (stream: MediaStream | null) => void; } /** * useRecording Hook 返回值 */ export interface UseRecordingReturn { recordingState: RecordingState; setRecordingState: React.Dispatch>; remainingTime: number; isSpeaking: boolean; startRecording: () => Promise; stopRecording: () => void; stopAndSend: () => void; cancelRecording: () => void; cleanup: () => void; triggerVibrate: (type?: 'countdown' | 'timeout' | 'cancel') => void; recordingStateRef: React.MutableRefObject; mediaRecorderRef: React.MutableRefObject; streamRef: React.MutableRefObject; chunksRef: React.MutableRefObject; isCancelledRef: React.MutableRefObject; hasCountdownVibratedRef: React.MutableRefObject; } /** * 录音核心逻辑 Hook * 提供录音的状态管理、开始/停止/取消等操作 */ export declare function useRecording(options?: UseRecordingOptions): UseRecordingReturn; export default useRecording;