export interface CatalogPreset { id: string; name: string; baseUrl: string; modelIds: string[]; /** Context capacity the catalog records, by lowercased model id; absent when it sizes none. */ capacities?: Record; } /** Filter presets by a case-insensitive substring match on id or name. */ export declare function filterCatalogPresets(presets: readonly CatalogPreset[], query: string): CatalogPreset[]; /** One selectable provider row in the /setup wizard's first step. */ export interface ProviderListEntry { /** Unique key: `template:` for the pinned rows, `catalog:` otherwise. */ key: string; label: string; detail: string; catalog?: CatalogPreset; } /** * Merge the pinned templates with the web-catalog presets into one list: * catalog ids in `dedupeIds` drop out (the template already covers them), * and `query` filters by case-insensitive substring on label/key/detail. */ export declare function mergeProviderEntries(templates: readonly ProviderListEntry[], presets: readonly CatalogPreset[], dedupeIds: readonly string[], query: string): ProviderListEntry[]; /** * Read the catalog. Anchors are module paths that plausibly sit inside the dsh * install: the running CLI entry (`process.argv[1]`) and the plugin's module * base. Returns undefined when no reachable install ships a usable catalog or * the child does not answer within 10 seconds. */ export declare function readProviderCatalog(anchors: Array): Promise; /** * Read the catalog once per process and memoize the result: the child needs a * moment to load pi-ai, so callers warm it at startup and reuse the settled * value. */ export declare function loadProviderCatalog(anchors: Array): Promise;