import {
	type ProviderName,
	type ModelInfo,
	anthropicModels,
	bedrockModels,
	cerebrasModels,
	claudeCodeModels,
	deepSeekModels,
	moonshotModels,
	geminiModels,
	mistralModels,
	openAiNativeModels,
	qwenCodeModels,
	vertexModels,
	xaiModels,
	groqModels,
	sambaNovaModels,
	doubaoModels,
	internationalZAiModels,
	fireworksModels,
	featherlessModels,
	minimaxModels,
} from "@roo-code/types"

export const MODELS_BY_PROVIDER: Partial<Record<ProviderName, Record<string, ModelInfo>>> = {
	anthropic: anthropicModels,
	"claude-code": claudeCodeModels,
	bedrock: bedrockModels,
	cerebras: cerebrasModels,
	deepseek: deepSeekModels,
	doubao: doubaoModels,
	moonshot: moonshotModels,
	gemini: geminiModels,
	mistral: mistralModels,
	"openai-native": openAiNativeModels,
	"qwen-code": qwenCodeModels,
	vertex: vertexModels,
	xai: xaiModels,
	groq: groqModels,
	sambanova: sambaNovaModels,
	zai: internationalZAiModels,
	fireworks: fireworksModels,
	featherless: featherlessModels,
	minimax: minimaxModels,
}

export const PROVIDERS = [
	{ value: "openrouter", label: "OpenRouter" },
	{ value: "deepinfra", label: "DeepInfra" },
	{ value: "anthropic", label: "Anthropic" },
	{ value: "claude-code", label: "Claude Code" },
	{ value: "cerebras", label: "Cerebras" },
	{ value: "gemini", label: "Google Gemini" },
	{ value: "doubao", label: "Doubao" },
	{ value: "deepseek", label: "DeepSeek" },
	{ value: "moonshot", label: "Moonshot" },
	{ value: "openai-native", label: "OpenAI" },
	{ value: "openai", label: "OpenAI Compatible" },
	{ value: "qwen-code", label: "Qwen Code" },
	{ value: "vertex", label: "GCP Vertex AI" },
	{ value: "bedrock", label: "Amazon Bedrock" },
	{ value: "glama", label: "Glama" },
	{ value: "vscode-lm", label: "VS Code LM API" },
	{ value: "mistral", label: "Mistral" },
	{ value: "lmstudio", label: "LM Studio" },
	{ value: "ollama", label: "Ollama" },
	{ value: "unbound", label: "Unbound" },
	{ value: "requesty", label: "Requesty" },
	{ value: "human-relay", label: "Human Relay" },
	{ value: "xai", label: "xAI (Grok)" },
	{ value: "groq", label: "Groq" },
	{ value: "huggingface", label: "Hugging Face" },
	{ value: "chutes", label: "Chutes AI" },
	{ value: "litellm", label: "LiteLLM" },
	{ value: "sambanova", label: "SambaNova" },
	{ value: "zai", label: "Z AI" },
	{ value: "fireworks", label: "Fireworks AI" },
	{ value: "featherless", label: "Featherless AI" },
	{ value: "io-intelligence", label: "IO Intelligence" },
	{ value: "roo", label: "Roo Code Cloud" },
	{ value: "vercel-ai-gateway", label: "Vercel AI Gateway" },
	{ value: "minimax", label: "MiniMax" },
].sort((a, b) => a.label.localeCompare(b.label))
