/** * Types for images, the things they are made of, and the things * they make up. * * Generated images are txt2img and img2img images. They may have * had additional postprocessing done on them when they were first * generated. * * Postprocessed images are images which were not generated here * but only postprocessed by the app. They only get postprocessing * metadata and have a different image type, e.g. 'esrgan' or * 'gfpgan'. */ import { Category as GalleryCategory } from '../features/gallery/gallerySlice'; /** * TODO: * Once an image has been generated, if it is postprocessed again, * additional postprocessing steps are added to its postprocessing * array. * * TODO: Better documentation of types. */ export declare type PromptItem = { prompt: string; weight: number; }; export declare type Prompt = Array; export declare type SeedWeightPair = { seed: number; weight: number; }; export declare type SeedWeights = Array; // All generated images contain these metadata. export declare type CommonGeneratedImageMetadata = { postprocessing: null | Array; sampler: | 'ddim' | 'k_dpm_2_a' | 'k_dpm_2' | 'k_euler_a' | 'k_euler' | 'k_heun' | 'k_lms' | 'plms'; prompt: Prompt; seed: number; variations: SeedWeights; steps: number; cfg_scale: number; width: number; height: number; seamless: boolean; hires_fix: boolean; extra: null | Record; // Pending development of RFC #266 }; // txt2img and img2img images have some unique attributes. export declare type Txt2ImgMetadata = GeneratedImageMetadata & { type: 'txt2img'; }; export declare type Img2ImgMetadata = GeneratedImageMetadata & { type: 'img2img'; orig_hash: string; strength: number; fit: boolean; init_image_path: string; mask_image_path?: string; }; // Superset of generated image metadata types. export declare type GeneratedImageMetadata = Txt2ImgMetadata | Img2ImgMetadata; // All post processed images contain these metadata. export declare type CommonPostProcessedImageMetadata = { orig_path: string; orig_hash: string; }; // esrgan and gfpgan images have some unique attributes. export declare type ESRGANMetadata = CommonPostProcessedImageMetadata & { type: 'esrgan'; scale: 2 | 4; strength: number; }; export declare type FacetoolMetadata = CommonPostProcessedImageMetadata & { type: 'gfpgan' | 'codeformer'; strength: number; fidelity?: number; }; // Superset of all postprocessed image metadata types.. export declare type PostProcessedImageMetadata = | ESRGANMetadata | FacetoolMetadata; // Metadata includes the system config and image metadata. export declare type Metadata = SystemConfig & { image: GeneratedImageMetadata | PostProcessedImageMetadata; }; // An Image has a UUID, url, modified timestamp, width, height and maybe metadata export declare type Image = { uuid: string; url: string; mtime: number; metadata?: Metadata; width: number; height: number; category: GalleryCategory; isBase64: boolean; }; // GalleryImages is an array of Image. export declare type GalleryImages = { images: Array; }; /** * Types related to the system status. */ // This represents the processing status of the backend. export declare type SystemStatus = { isProcessing: boolean; currentStep: number; totalSteps: number; currentIteration: number; totalIterations: number; currentStatus: string; currentStatusHasSteps: boolean; hasError: boolean; }; export declare type SystemConfig = { model: string; model_id: string; model_hash: string; app_id: string; app_version: string; model_list: ModelList; }; export declare type ModelStatus = 'active' | 'cached' | 'not loaded'; export declare type Model = { status: ModelStatus; description: string; }; export declare type ModelList = Record; /** * These types type data received from the server via socketio. */ export declare type ModelChangeResponse = { model_name: string; model_list: ModelList; }; export declare type SystemStatusResponse = SystemStatus; export declare type SystemConfigResponse = SystemConfig; export declare type ImageResultResponse = Omit; export declare type ImageUploadResponse = Omit & { destination: 'img2img' | 'inpainting'; }; export declare type ErrorResponse = { message: string; additionalData?: string; }; export declare type GalleryImagesResponse = { images: Array>; areMoreImagesAvailable: boolean; category: GalleryCategory; }; export declare type ImageDeletedResponse = { uuid: string; url: string; category: GalleryCategory; }; export declare type ImageUrlResponse = { url: string; }; export declare type ImageUploadDestination = 'img2img' | 'inpainting'; export declare type UploadImagePayload = { file: File; destination?: ImageUploadDestination; };