/**
 * Model Discovery Service
 *
 * Discovers ALL models installed on the machine from all vendors/formats:
 *   - Ollama  (via `ollama list`)
 *   - Local GGUF  (~/.avis/models/gguf/)
 *   - HuggingFace  (~/.cache/huggingface/hub/ or ~/Library/Caches/huggingface/)
 *   - Cloud APIs  (Anthropic, OpenAI, Google, etc.) – detected via auth.json / env vars
 *
 * Organizes discovered models in ~/.models/ with per-provider manifests and a
 * unified index.json, then syncs them into ~/.avis/agent/models.json so they
 * appear automatically in the model picker.
 */
export interface DiscoveredModel {
    id: string;
    name: string;
    provider: string;
    format: "gguf" | "ollama" | "hf" | "cloud" | "unknown";
    sizeBytes?: number;
    contextWindow: number;
    maxTokens: number;
    supportsVision: boolean;
    supportsReasoning: boolean;
    source?: string;
    quant?: string;
    filePath?: string;
    isApiKey?: boolean;
    isOAuth?: boolean;
    status: "available" | "not-running" | "no-auth";
}
export interface ProviderManifest {
    provider: string;
    discoveredAt: number;
    models: DiscoveredModel[];
}
export interface ModelsIndex {
    updatedAt: number;
    providers: Record<string, ProviderManifest>;
}
/** Remove old symlinks / legacy dirs and create the proper structure. */
export declare function scaffoldModelsDir(): void;
export interface DiscoveryResult {
    ollama: DiscoveredModel[];
    gguf: DiscoveredModel[];
    hf: DiscoveredModel[];
    cloud: DiscoveredModel[];
    all: DiscoveredModel[];
    index: ModelsIndex;
}
/**
 * Run full model discovery across all providers/formats.
 * Writes manifests to ~/.models/ and syncs ~/.avis/agent/models.json.
 */
export declare function discoverAllModels(): Promise<DiscoveryResult>;
/**
 * Read the last discovery result from ~/.models/index.json without running discovery.
 */
export declare function readCachedDiscovery(): DiscoveryResult | null;
/**
 * Get the count of all available (status === "available") models.
 */
export declare function countAvailableModels(result: DiscoveryResult): number;
/**
 * Get a quick summary string for display in the UI.
 */
export declare function getDiscoverySummary(result: DiscoveryResult): string;
//# sourceMappingURL=model-discovery.d.ts.map