Project Files
src / services / imageBackend.ts
import { ImageGenerationParams } from "../core-bundle.mjs";
/**
* Progress callback for image generation.
* @param step - Current sampling step (1-based)
* @param totalSteps - Total number of sampling steps (if known)
* @param message - Optional human-readable status message
*/
export type ProgressCallback = (
step: number,
totalSteps?: number,
message?: string
) => void;
export type BackendGenerateResult = {
isError: boolean;
// Preferred binary image payload for downstream processing
imageBuffer?: Buffer;
// Optional base64-encoded image (data URL or raw base64)
imageData?: string;
// Optional filesystem path where the image was saved by the backend
imagePath?: string;
// Optional list for compatibility with some APIs
images?: string[];
status?: number;
metadata?: Record<string, any>;
error?: string;
errorMessage?: string;
audioBuffers?: Buffer[];
};
export interface ImageBackend {
readonly name: string;
setBaseUrl(url: string): void;
checkApiConnection(): Promise<boolean>;
generateImage(
input: Partial<ImageGenerationParams>,
onProgress?: ProgressCallback
): Promise<BackendGenerateResult>;
// Optional but recommended: many backends support image-to-image.
generateImageImg2Img(
input: Partial<ImageGenerationParams>,
sourceBuffer: Buffer,
onProgress?: ProgressCallback
): Promise<BackendGenerateResult>;
// Edit mode with multiple reference images (canvas + moodboard)
generateImageEdit?(
input: Partial<ImageGenerationParams>,
referenceBuffers: Buffer[],
onProgress?: ProgressCallback
): Promise<BackendGenerateResult>;
}