/** * Multi-model loader for base weights + LoRA adapters. * * @module loader/multi-model-loader */ import type { WeightLoadResult } from '../inference/pipelines/text/init.js'; import type { Manifest } from '../inference/pipelines/text/config.js'; import type { InferencePipeline, PipelineContexts } from '../inference/pipelines/text.js'; import type { LoRAAdapter } from '../inference/pipelines/text/lora.js'; import type { RDRRManifest } from '../formats/rdrr/index.js'; export interface LoRAManifest { adapterType?: string; modelType?: string; name?: string; rank?: number; tensors?: unknown; [key: string]: unknown; } export type AdapterSource = | LoRAAdapter | LoRAManifest | RDRRManifest | string; export declare class MultiModelLoader { baseManifest: Manifest | null; baseWeights: WeightLoadResult | null; adapters: Map; _loadBaseWeights( manifest: Manifest, options: { storageContext?: { loadShard?: (index: number) => Promise } }, runtimeConfig: unknown ): Promise; _resolveAdapterSource(source: AdapterSource): Promise; _createPipeline(): InferencePipeline; _getBaseLoader(): { unload(): Promise }; unload(): Promise; loadBase( manifest: Manifest, options?: { storageContext?: { loadShard?: (index: number) => Promise } } ): Promise; loadAdapter(name: string, source: AdapterSource): Promise; getAdapter(name: string): LoRAAdapter | null; listAdapters(): string[]; createSharedPipeline(contexts?: PipelineContexts): Promise; }