///
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;