import type { ApiModelInfo } from "../types/api/api-model";
import type { CredentialsParams, PipelineType } from "../types/public";
export declare const MODEL_EXPAND_KEYS: readonly ["pipeline_tag", "private", "gated", "downloads", "likes", "lastModified"];
export declare const MODEL_EXPANDABLE_KEYS: readonly ["author", "cardData", "config", "createdAt", "disabled", "downloads", "downloadsAllTime", "gated", "gitalyUid", "inferenceProviderMapping", "lastModified", "library_name", "likes", "model-index", "pipeline_tag", "private", "safetensors", "sha", "spaces", "tags", "transformersInfo"];
export interface ModelDerivedFields {
    filePaths: string[];
}
export declare const MODEL_DERIVED_FIELD_TO_API_KEY: Record<keyof ModelDerivedFields, keyof ApiModelInfo>;
export type ModelAdditionalField = Exclude<(typeof MODEL_EXPANDABLE_KEYS)[number], (typeof MODEL_EXPAND_KEYS)[number]> | keyof ModelDerivedFields;
export type ResolveModelAdditionalFields<T extends ModelAdditionalField> = Pick<ApiModelInfo, T & keyof ApiModelInfo> & Pick<ModelDerivedFields, T & keyof ModelDerivedFields>;
export interface ModelEntry {
    id: string;
    name: string;
    private: boolean;
    gated: false | "auto" | "manual";
    task?: PipelineType;
    likes: number;
    downloads: number;
    updatedAt: Date;
}
export declare function listModels<const T extends ModelAdditionalField = never>(params?: {
    search?: {
        /**
         * Will search in the model name for matches
         */
        query?: string;
        owner?: string;
        task?: PipelineType;
        tags?: string[];
        /**
         * Will search for models that have one of the inference providers in the list.
         */
        inferenceProviders?: string[];
        /**
         * Will search for models that support at least one of those local apps (eg "lmstudio", "mlx-lm", ...)
         */
        apps?: string[];
    };
    hubUrl?: string;
    additionalFields?: T[];
    /**
     * Set to limit the number of models returned.
     */
    limit?: number;
    /**
     * Sort models by a specific field.
     */
    sort?: "createdAt" | "downloads" | "likes" | "lastModified" | "likes30d" | "trendingScore" | "num_parameters" | "mainSize" | "id";
    /**
     * Custom fetch function to use instead of the default one, for example to use a proxy or edit headers.
     */
    fetch?: typeof fetch;
} & Partial<CredentialsParams>): AsyncGenerator<ModelEntry & ResolveModelAdditionalFields<T>>;
//# sourceMappingURL=list-models.d.ts.map