import { NitroModules } from 'react-native-nitro-modules' import type { STT as STTSpec, STTLoadOptions, } from './specs/STT.nitro' let instance: STTSpec | null = null function getInstance(): STTSpec { if (!instance) { instance = NitroModules.createHybridObject('STT') } return instance } export const STT = { load(modelId: string, options?: STTLoadOptions): Promise { return getInstance().load(modelId, options) }, transcribe(audio: ArrayBuffer): Promise { return getInstance().transcribe(audio) }, transcribeStream( audio: ArrayBuffer, onToken: (token: string) => void ): Promise { return getInstance().transcribeStream(audio, onToken) }, startListening(): Promise { return getInstance().startListening() }, transcribeBuffer(): Promise { return getInstance().transcribeBuffer() }, stopListening(): Promise { return getInstance().stopListening() }, stop(): void { getInstance().stop() }, unload(): void { getInstance().unload() }, get isLoaded(): boolean { return getInstance().isLoaded }, get isTranscribing(): boolean { return getInstance().isTranscribing }, get isListening(): boolean { return getInstance().isListening }, get modelId(): string { return getInstance().modelId }, }