@umituz/react-native-ai-generation-content 1.15.0 → 1.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/package.json +1 -1
  2. package/src/features/audio-generation/index.ts +0 -1
  3. package/src/features/colorization/index.ts +0 -1
  4. package/src/features/face-swap/index.ts +0 -1
  5. package/src/features/future-prediction/index.ts +0 -1
  6. package/src/features/image-captioning/index.ts +0 -1
  7. package/src/features/inpainting/index.ts +0 -1
  8. package/src/features/photo-restoration/index.ts +0 -1
  9. package/src/features/sketch-to-image/index.ts +0 -1
  10. package/src/features/style-transfer/index.ts +0 -1
  11. package/src/features/text-to-image/index.ts +0 -1
  12. package/src/features/text-to-video/index.ts +0 -1
  13. package/src/features/upscaling/domain/index.ts +1 -0
  14. package/src/features/upscaling/domain/types/index.ts +2 -0
  15. package/src/features/upscaling/domain/types/provider.types.ts +23 -0
  16. package/src/features/upscaling/domain/types/upscale.types.ts +56 -0
  17. package/src/features/upscaling/index.ts +40 -2
  18. package/src/features/upscaling/infrastructure/index.ts +1 -0
  19. package/src/features/upscaling/infrastructure/services/index.ts +7 -0
  20. package/src/features/upscaling/infrastructure/services/upscale-executor.ts +64 -0
  21. package/src/features/upscaling/infrastructure/services/upscale-provider-registry.ts +77 -0
  22. package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +168 -0
  23. package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +94 -0
  24. package/src/features/upscaling/presentation/components/index.ts +4 -0
  25. package/src/features/upscaling/presentation/hooks/index.ts +5 -0
  26. package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +132 -0
  27. package/src/features/upscaling/presentation/index.ts +2 -0
  28. package/src/index.ts +6 -1
  29. package/src/presentation/hooks/base/index.ts +9 -0
  30. package/src/presentation/hooks/base/types.ts +47 -0
  31. package/src/presentation/hooks/base/use-dual-image-feature.ts +178 -0
  32. package/src/presentation/hooks/base/use-image-with-prompt-feature.ts +170 -0
  33. package/src/presentation/hooks/base/use-single-image-feature.ts +154 -0
  34. package/src/presentation/hooks/index.ts +3 -0
  35. package/src/features/audio-generation/presentation/hooks.ts +0 -39
  36. package/src/features/colorization/presentation/hooks.ts +0 -39
  37. package/src/features/face-swap/presentation/hooks.ts +0 -41
  38. package/src/features/future-prediction/presentation/hooks.ts +0 -39
  39. package/src/features/image-captioning/presentation/hooks.ts +0 -39
  40. package/src/features/inpainting/presentation/hooks.ts +0 -39
  41. package/src/features/photo-restoration/presentation/hooks.ts +0 -39
  42. package/src/features/sketch-to-image/presentation/hooks.ts +0 -39
  43. package/src/features/style-transfer/presentation/hooks.ts +0 -39
  44. package/src/features/text-to-image/presentation/hooks.ts +0 -39
  45. package/src/features/text-to-video/presentation/hooks.ts +0 -39
  46. package/src/features/upscaling/domain/entities.ts +0 -42
  47. package/src/features/upscaling/presentation/hooks.ts +0 -39
@@ -2,6 +2,9 @@
2
2
  * Presentation Hooks
3
3
  */
4
4
 
5
+ // Base Feature Hooks (Provider-Agnostic)
6
+ export * from "./base";
7
+
5
8
  export { useGeneration } from "./use-generation";
6
9
  export type {
7
10
  UseGenerationOptions,
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { AudioGenerationRequest, AudioGenerationResult } from '../domain/entities';
10
-
11
- export interface UseAudioGenerationReturn {
12
- generateAudio: (request: AudioGenerationRequest) => Promise<AudioGenerationResult>;
13
- isGenerating: boolean;
14
- result: AudioGenerationResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useAudioGeneration = (): UseAudioGenerationReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<AudioGenerationResult | null>(null);
21
-
22
- const generateAudio = useCallback(async (request: AudioGenerationRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as AudioGenerationResult);
27
- return genResult.data as AudioGenerationResult;
28
- }
29
-
30
- throw new Error('Audio generation failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- generateAudio,
35
- isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { ColorizationRequest, ColorizationResult } from '../domain/entities';
10
-
11
- export interface UseColorizationReturn {
12
- colorize: (request: ColorizationRequest) => Promise<ColorizationResult>;
13
- isColorizing: boolean;
14
- result: ColorizationResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useColorization = (): UseColorizationReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<ColorizationResult | null>(null);
21
-
22
- const colorize = useCallback(async (request: ColorizationRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as ColorizationResult);
27
- return genResult.data as ColorizationResult;
28
- }
29
-
30
- throw new Error('Colorization failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- colorize,
35
- isColorizing: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,41 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { FaceSwapRequest, FaceSwapResult } from '../domain/entities';
10
-
11
- export interface UseFaceSwapReturn {
12
- swapFace: (request: FaceSwapRequest) => Promise<FaceSwapResult>;
13
- isSwapping: boolean;
14
- result: FaceSwapResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useFaceSwap = (): UseFaceSwapReturn => {
19
- // @ts-ignore - Deprecated feature, kept for backward compatibility
20
- const { generate, isGenerating, error, result: genResult } = useGeneration<FaceSwapResult>({ model: 'face-swap' });
21
- const [result, setResult] = useState<FaceSwapResult | null>(null);
22
-
23
- const swapFace = useCallback(async (request: FaceSwapRequest) => {
24
- // @ts-ignore - Deprecated feature
25
- await generate(request);
26
-
27
- if (genResult?.data) {
28
- setResult(genResult.data as FaceSwapResult);
29
- return genResult.data as FaceSwapResult;
30
- }
31
-
32
- throw new Error('Face swap failed to return a result');
33
- }, [generate, genResult]);
34
-
35
- return {
36
- swapFace,
37
- isSwapping: isGenerating,
38
- result,
39
- error: error as any,
40
- };
41
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { FuturePredictionRequest, FuturePredictionResult } from '../domain/entities';
10
-
11
- export interface UseFuturePredictionReturn {
12
- predictFuture: (request: FuturePredictionRequest) => Promise<FuturePredictionResult>;
13
- isPredicting: boolean;
14
- result: FuturePredictionResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useFuturePrediction = (): UseFuturePredictionReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<FuturePredictionResult | null>(null);
21
-
22
- const predictFuture = useCallback(async (request: FuturePredictionRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as FuturePredictionResult);
27
- return genResult.data as FuturePredictionResult;
28
- }
29
-
30
- throw new Error('Future prediction failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- predictFuture,
35
- isPredicting: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { ImageCaptioningRequest, ImageCaptioningResult } from '../domain/entities';
10
-
11
- export interface UseImageCaptioningReturn {
12
- generateCaption: (request: ImageCaptioningRequest) => Promise<ImageCaptioningResult>;
13
- isGenerating: boolean;
14
- result: ImageCaptioningResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useImageCaptioning = (): UseImageCaptioningReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<ImageCaptioningResult | null>(null);
21
-
22
- const generateCaption = useCallback(async (request: ImageCaptioningRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as ImageCaptioningResult);
27
- return genResult.data as ImageCaptioningResult;
28
- }
29
-
30
- throw new Error('Caption generation failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- generateCaption,
35
- isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { InpaintingRequest, InpaintingResult } from '../domain/entities';
10
-
11
- export interface UseInpaintingReturn {
12
- inpaint: (request: InpaintingRequest) => Promise<InpaintingResult>;
13
- isInpainting: boolean;
14
- result: InpaintingResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useInpainting = (): UseInpaintingReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<InpaintingResult | null>(null);
21
-
22
- const inpaint = useCallback(async (request: InpaintingRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as InpaintingResult);
27
- return genResult.data as InpaintingResult;
28
- }
29
-
30
- throw new Error('Inpainting failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- inpaint,
35
- isInpainting: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { PhotoRestorationRequest, PhotoRestorationResult } from '../domain/entities';
10
-
11
- export interface UsePhotoRestorationReturn {
12
- restorePhoto: (request: PhotoRestorationRequest) => Promise<PhotoRestorationResult>;
13
- isRestoring: boolean;
14
- result: PhotoRestorationResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const usePhotoRestoration = (): UsePhotoRestorationReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<PhotoRestorationResult | null>(null);
21
-
22
- const restorePhoto = useCallback(async (request: PhotoRestorationRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as PhotoRestorationResult);
27
- return genResult.data as PhotoRestorationResult;
28
- }
29
-
30
- throw new Error('Photo restoration failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- restorePhoto,
35
- isRestoring: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { SketchToImageRequest, SketchToImageResult } from '../domain/entities';
10
-
11
- export interface UseSketchToImageReturn {
12
- generateFromSketch: (request: SketchToImageRequest) => Promise<SketchToImageResult>;
13
- isGenerating: boolean;
14
- result: SketchToImageResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useSketchToImage = (): UseSketchToImageReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<SketchToImageResult | null>(null);
21
-
22
- const generateFromSketch = useCallback(async (request: SketchToImageRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as SketchToImageResult);
27
- return genResult.data as SketchToImageResult;
28
- }
29
-
30
- throw new Error('Sketch to image generation failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- generateFromSketch,
35
- isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { StyleTransferRequest, StyleTransferResult } from '../domain/entities';
10
-
11
- export interface UseStyleTransferReturn {
12
- transferStyle: (request: StyleTransferRequest) => Promise<StyleTransferResult>;
13
- isTransferring: boolean;
14
- result: StyleTransferResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useStyleTransfer = (): UseStyleTransferReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<StyleTransferResult | null>(null);
21
-
22
- const transferStyle = useCallback(async (request: StyleTransferRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as StyleTransferResult);
27
- return genResult.data as StyleTransferResult;
28
- }
29
-
30
- throw new Error('Style transfer failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- transferStyle,
35
- isTransferring: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { TextToImageRequest, TextToImageResult } from '../domain/entities';
10
-
11
- export interface UseTextToImageReturn {
12
- generateImage: (request: TextToImageRequest) => Promise<TextToImageResult>;
13
- isGenerating: boolean;
14
- result: TextToImageResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useTextToImage = (): UseTextToImageReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<TextToImageResult | null>(null);
21
-
22
- const generateImage = useCallback(async (request: TextToImageRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as TextToImageResult);
27
- return genResult.data as TextToImageResult;
28
- }
29
-
30
- throw new Error('Image generation failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- generateImage,
35
- isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { TextToVideoRequest, TextToVideoResult } from '../domain/entities';
10
-
11
- export interface UseTextToVideoReturn {
12
- generateVideo: (request: TextToVideoRequest) => Promise<TextToVideoResult>;
13
- isGenerating: boolean;
14
- result: TextToVideoResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useTextToVideo = (): UseTextToVideoReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<TextToVideoResult | null>(null);
21
-
22
- const generateVideo = useCallback(async (request: TextToVideoRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as TextToVideoResult);
27
- return genResult.data as TextToVideoResult;
28
- }
29
-
30
- throw new Error('Video generation failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- generateVideo,
35
- isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };
@@ -1,42 +0,0 @@
1
- /**
2
- * Upscaling Domain Entities
3
- */
4
-
5
- export interface UpscaleConfig {
6
- /**
7
- * The factor to upscale the image by
8
- * @default 2
9
- */
10
- scaleFactor?: 2 | 4;
11
-
12
- /**
13
- * Whether to enhance faces during upscaling
14
- * @default false
15
- */
16
- enhanceFaces?: boolean;
17
- }
18
-
19
- export interface UpscaleRequest {
20
- /**
21
- * The image to upscale.
22
- * Can be a Base64 string or a remote URL.
23
- */
24
- image: string;
25
-
26
- /**
27
- * Optional configuration
28
- */
29
- options?: UpscaleConfig;
30
- }
31
-
32
- export interface UpscaleResult {
33
- /**
34
- * The upscaled image URL or Base64
35
- */
36
- imageUrl: string;
37
-
38
- /**
39
- * Metadata about the generation
40
- */
41
- metadata?: Record<string, unknown>;
42
- }
@@ -1,39 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
4
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
- /* eslint-disable @typescript-eslint/no-unsafe-call */
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- import { useState, useCallback } from 'react';
8
- import { useGeneration } from '../../../presentation/hooks/use-generation';
9
- import { UpscaleRequest, UpscaleResult } from '../domain/entities';
10
-
11
- export interface UseUpscalingReturn {
12
- upscale: (request: UpscaleRequest) => Promise<UpscaleResult>;
13
- isUpscaling: boolean;
14
- result: UpscaleResult | null;
15
- error: Error | null;
16
- }
17
-
18
- export const useUpscaling = (): UseUpscalingReturn => {
19
- const { generate, isGenerating, error, result: genResult } = useGeneration({ model: "deprecated" });
20
- const [result, setResult] = useState<UpscaleResult | null>(null);
21
-
22
- const upscale = useCallback(async (request: UpscaleRequest) => {
23
- await generate(request as any);
24
-
25
- if (genResult?.data) {
26
- setResult(genResult.data as UpscaleResult);
27
- return genResult.data as UpscaleResult;
28
- }
29
-
30
- throw new Error('Upscaling failed to return a result');
31
- }, [generate, genResult]);
32
-
33
- return {
34
- upscale,
35
- isUpscaling: isGenerating,
36
- result,
37
- error: error as any,
38
- };
39
- };