import type { Api, Model } from "@mariozechner/pi-ai";
import type { FasedAgentConfig } from "../config/config.js";
import type { ModelCapabilityConfig, ModelProviderAuthMode, ModelProviderConfig } from "../config/types.models.js";
import { type ModelThinkingLevel, type ModelThinkingMode } from "../shared/model-thinking.js";
export type ModelFeature = "text" | "vision" | "reasoning" | "tools" | "json" | "audio" | "video" | "speech";
export type ModelCapabilityConfidence = "declared" | "unknown";
export type ModelMetadata = {
    provider: string;
    model: string;
    label: string;
    contextWindow?: number;
    maxTokens?: number;
    features: ModelFeature[];
    thinkingLevels?: ModelThinkingLevel[];
    defaultThinkingLevel?: ModelThinkingLevel;
    thinkingMode?: ModelThinkingMode;
    reasoningBudgetSupported?: boolean;
    streaming: boolean;
    capabilityConfidence: ModelCapabilityConfidence;
    authMode: ModelProviderAuthMode;
    privateNetwork: boolean;
    privateNetworkAllowed: boolean;
    recommended?: boolean;
    default?: boolean;
};
type ModelLike = Pick<Model<Api>, "id" | "name" | "provider" | "baseUrl" | "api" | "reasoning" | "input" | "contextWindow" | "maxTokens"> & {
    capabilities?: ModelCapabilityConfig;
};
type CatalogModelLike = {
    id: string;
    name?: string;
    provider: string;
    baseUrl?: string;
    api?: string;
    reasoning?: boolean;
    input?: Array<"text" | "image">;
    contextWindow?: number;
    maxTokens?: number;
    capabilities?: ModelCapabilityConfig;
};
export declare function deriveModelMetadata(params: {
    model: ModelLike | CatalogModelLike;
    cfg?: FasedAgentConfig;
    providerConfig?: ModelProviderConfig;
    recommended?: boolean;
    default?: boolean;
}): ModelMetadata;
export declare function formatModelFeatureList(metadata: Pick<ModelMetadata, "features" | "privateNetwork" | "privateNetworkAllowed">): string[];
export {};
