import type { AllTasks as TransformersAllTasks, PipelineType as TransformersPipelineType, PretrainedModelOptions } from "@huggingface/transformers"; export type LocalModelSupportedRuntime = "node" | "bun" | "deno"; export type LocalModelRuntime = "auto" | LocalModelSupportedRuntime; export type LocalModelKnownTask = TransformersPipelineType; export type LocalModelTask = LocalModelKnownTask | (string & {}); type LocalModelCallable = (...args: unknown[]) => Promise; export type LocalModelPipeline = LocalModelCallable & { dispose?: () => Promise | void; }; export type LocalModelPipelineLoadOptions = PretrainedModelOptions; export type LocalModelPrewarmTargets = boolean | string[]; type NuxtLocalModelRegistrySentinel = "__nuxt_local_model_registry__"; declare global { interface NuxtLocalModelRegistry { __nuxt_local_model_registry__?: never; } } type ConfiguredLocalModelName = Exclude & string; type LocalModelTaskCallOptionsMap = { "automatic-speech-recognition": NonNullable[1]>; asr: NonNullable[1]>; "feature-extraction": NonNullable[1]>; embeddings: NonNullable[1]>; "fill-mask": NonNullable[1]>; "sentiment-analysis": NonNullable[1]>; summarization: NonNullable[1]>; "text-classification": NonNullable[1]>; "text-generation": NonNullable[1]>; "text2text-generation": NonNullable[1]>; translation: NonNullable[1]>; }; type LocalModelKnownPipeline = TTask extends LocalModelKnownTask ? TransformersAllTasks[TTask] : never; export type LocalModelPipelineOptions = TTask extends keyof LocalModelTaskCallOptionsMap ? LocalModelTaskCallOptionsMap[TTask] : Record; export type LocalModelResolvedModel = [ LocalModelKnownPipeline ] extends [never] ? LocalModelRunner : LocalModelKnownPipeline; export type LocalModelName = ConfiguredLocalModelName extends never ? string : ConfiguredLocalModelName | (string & {}); export type LocalModelTaskForName = TName extends ConfiguredLocalModelName ? NuxtLocalModelRegistry[TName] & LocalModelTask : LocalModelTask; export type LocalModelCallOptionsForName = ConfiguredLocalModelName extends never ? Record : TName extends ConfiguredLocalModelName ? LocalModelPipelineOptions : Record; export type LocalModelResolvedModelForName = ConfiguredLocalModelName extends never ? LocalModelRunner : TName extends ConfiguredLocalModelName ? LocalModelResolvedModel : LocalModelRunner; export interface LocalModelDefinition { task: TTask; model: string; options?: LocalModelPipelineLoadOptions; } export type LocalModelModelRegistry = Record; export type LocalModelAliases> = keyof NonNullable & string; export interface LocalModelRuntimeConfig { runtime?: LocalModelRuntime; cacheDir?: string; allowRemoteModels?: boolean; allowLocalModels?: boolean; defaultTask?: LocalModelTask; serverPrewarm?: LocalModelPrewarmTargets; serverWorker?: boolean; browserWorker?: boolean; browserPrewarm?: LocalModelPrewarmTargets; models?: TModels; } export type LocalModelConfig = LocalModelRuntimeConfig; export type LocalModelRunner = LocalModelCallable & { dispose?: () => Promise | void; }; export {};