import PQueue from 'p-queue'; import { FileDownloadProgress, ModelConfig, ModelEngine } from './types/index.js'; import { Logger, LogLevel } from './lib/logger.js'; export interface StoredModel extends ModelConfig { meta?: unknown; downloads?: Map; status: 'unloaded' | 'preparing' | 'ready' | 'error'; } export interface ModelStoreOptions { modelsCachePath: string; models: Record; prepareConcurrency?: number; log?: Logger | LogLevel; } export declare class ModelStore { prepareQueue: PQueue; models: Record; engines?: Record; private prepareController; private modelsCachePath; private log; constructor(options: ModelStoreOptions); init(engines: Record): Promise; dispose(): void; private onDownloadProgress; prepareModel(modelId: string, signal?: AbortSignal): Promise; getStatus(): { [k: string]: { engine: (string & {}) | import("./engines").BuiltInEngineName; device: { gpu?: boolean | "auto" | (string & {}); } | undefined; minInstances: number; maxInstances: number; status: "error" | "unloaded" | "preparing" | "ready"; downloads: any; }; }; } type ProgressState = { loadedBytes: number; totalBytes: number; timestamp: number; }; type DownloadStatus = { percent: number; speed: number; etaSeconds: number; loadedBytes: number; totalBytes: number; }; declare class DownloadTracker { progressBuffer: ProgressState[]; private timeWindow; constructor(timeWindow?: number); pushProgress({ loadedBytes, totalBytes }: FileDownloadProgress): void; private cleanup; getStatus(): DownloadStatus | null; } export {};