/** * Diffusion pipeline types. * * @module inference/pipelines/diffusion/types */ export interface DiffusionRequest { prompt: string; negativePrompt?: string; seed?: number; steps?: number; guidanceScale?: number; width?: number; height?: number; } export interface DiffusionResult { width: number; height: number; pixels: Uint8ClampedArray; } export interface DiffusionSchedulerConfig { type: string; numSteps: number; guidanceScale: number; eta: number; numTrainTimesteps: number; shift: number; predictionType?: string; sigmaData?: number; maxTimesteps?: number; intermediateTimesteps?: number; } export interface DiffusionLatentConfig { width: number; height: number; scale: number; channels: number; dtype: string; } export interface DiffusionTextEncoderConfig { maxLength: number; t5MaxLength: number; } export interface DiffusionDecodeConfig { outputDtype: string; groupNormEps: number; tiling: { enabled: boolean; tileSize: number; overlap: number; }; } export interface DiffusionSwapperConfig { enabled: boolean; strategy: string; evictTextEncoder: boolean; evictUnet: boolean; } export interface DiffusionQuantizationConfig { weightDtype: string; dequantize: string; } export interface DiffusionBackendConfig { pipeline: 'gpu'; layerNormEps: number | null; } export interface DiffusionRuntimeConfig { scheduler: DiffusionSchedulerConfig; latent: DiffusionLatentConfig; textEncoder: DiffusionTextEncoderConfig; decode: DiffusionDecodeConfig; swapper: DiffusionSwapperConfig; quantization: DiffusionQuantizationConfig; backend: DiffusionBackendConfig; } export interface DiffusionTokenizerConfig { type: string; vocabFile?: string; mergesFile?: string; tokenizerFile?: string; spieceFile?: string; configFile?: string; specialTokensFile?: string; } export interface DiffusionModelConfig { modelIndex?: Record; components?: Record }>; tokenizers?: Record; } export interface DiffusionStats { totalTimeMs?: number; prefillTimeMs?: number; prefillTokens?: number; decodeTimeMs?: number; decodeTokens?: number; vaeTimeMs?: number; gpu?: { available: boolean; totalMs?: number; prefillMs?: number; denoiseMs?: number; vaeMs?: number; }; }