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