import { injectGeneration } from './inject-generation' import { reconstructTranscriptionResult } from '@tanstack/ai-client' import type { Signal } from '@angular/core' import type { TranscriptionResult } from '@tanstack/ai' import type { GenerationClientState, GenerationPersistenceOptions, InferGenerationOutputFromReturn, TranscriptionGenerateInput, } from '@tanstack/ai-client' import type { InjectGenerationOptions, InjectGenerationResult, } from './inject-generation' export type InjectTranscriptionOptions = Omit< InjectGenerationOptions< TranscriptionGenerateInput, TranscriptionResult, TOutput >, 'onResult' | 'reconstructResult' > & { onResult?: (result: TranscriptionResult) => TOutput | null | void } export interface InjectTranscriptionResult< TOutput = TranscriptionResult, > extends Omit, 'generate'> { generate: (input: TranscriptionGenerateInput) => Promise result: Signal isLoading: Signal error: Signal status: Signal } export function injectTranscription( options: Omit< InjectTranscriptionOptions, 'onResult' | 'persistence' | 'threadId' > & { onResult?: (result: TranscriptionResult) => TTransformed } & GenerationPersistenceOptions, ): InjectTranscriptionResult< InferGenerationOutputFromReturn > { const devtools = { ...options.devtools, framework: 'angular' as const, hookName: 'injectTranscription', outputKind: 'text' as const, } const generation = injectGeneration< TranscriptionGenerateInput, TranscriptionResult, TTransformed >({ ...options, devtools, reconstructResult: reconstructTranscriptionResult, }) return generation }