import type { DiffusionGemmaConfig } from './config.js'; import type { DiffusionGemmaLogitsProvider } from './sampling.js'; import type { InferencePipeline } from '../text.js'; export interface DiffusionGemmaPipelineContexts { diffusionGemma?: { logitsProvider?: DiffusionGemmaLogitsProvider | null; corePipeline?: InferencePipeline | null; tokenizer?: { encode(input: string): ArrayLike; decode(tokens: ArrayLike): string; } | null; } | null; } export interface DiffusionGemmaGenerateOptions { inputIds?: ArrayLike | null; maxNewTokens?: number | null; canvasLength?: number | null; maxDenoisingSteps?: number | null; seed?: number | null; random?: (() => number) | null; logitsProvider?: DiffusionGemmaLogitsProvider | null; initialCanvas?: ArrayLike | null; selfConditioningLogits?: ArrayBufferView | null; decodeToken?: ((tokenId: number) => string) | null; } export interface DiffusionGemmaStats { canvasesGenerated: number; tokensGenerated: number; denoiseSteps: number; modelLoadMs: number; totalTimeMs: number; prefillTimeMs: number; decodeTimeMs: number; prefillTokens: number; decodeTokens: number; tokensPerForward: number; stopReason: string | null; stopTokenId: number | null; } export class DiffusionGemmaPipeline { manifest: unknown | null; config: DiffusionGemmaConfig | null; runtimeConfig: unknown | null; runtimeOverrides: unknown | null; tokenizer: unknown | null; logitsProvider: DiffusionGemmaLogitsProvider | null; corePipeline: InferencePipeline | null; ownsCorePipeline: boolean; isLoaded: boolean; stats: DiffusionGemmaStats; initialize(contexts?: DiffusionGemmaPipelineContexts): Promise; loadModel(manifest: unknown): Promise; assertReady(): void; resolveCoreOptions(options: DiffusionGemmaGenerateOptions): DiffusionGemmaGenerateOptions & { __internalGenerate: true; useChatTemplate: false; }; resetCoreEncoder(inputIds: ArrayLike, options: DiffusionGemmaGenerateOptions): Promise; appendCoreEncoderTokens(tokenIds: ArrayLike, options: DiffusionGemmaGenerateOptions): Promise; generateTokenIds(prompt: string | ArrayLike, options?: DiffusionGemmaGenerateOptions): Promise; generate(prompt: string | ArrayLike, options?: DiffusionGemmaGenerateOptions): AsyncGenerator; getStats(): DiffusionGemmaStats; unload(): Promise; }