import { defineModel } from '../define.js'

export default [
  // ── Anthropic (proxied) ──
  defineModel({
    id: 'anthropic/claude-opus-4-8',
    defaultModel: 'anthropic/claude-opus-4-8',
    label: 'Claude Opus 4.8',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'anthropic/claude-opus-4-7',
    defaultModel: 'anthropic/claude-opus-4-7',
    label: 'Claude Opus 4.7',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'anthropic/claude-opus-4-6',
    defaultModel: 'anthropic/claude-opus-4-6',
    label: 'Claude Opus 4.6',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 200000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'anthropic/claude-sonnet-4-6',
    defaultModel: 'anthropic/claude-sonnet-4-6',
    label: 'Claude Sonnet 4.6',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'anthropic/claude-sonnet-4-5',
    defaultModel: 'anthropic/claude-sonnet-4-5',
    label: 'Claude Sonnet 4.5',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 200000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'anthropic/claude-haiku-4-5',
    defaultModel: 'anthropic/claude-haiku-4-5',
    label: 'Claude Haiku 4.5',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 200000,
    maxOutputTokens: 65536,
  }),

  // ── OpenAI (proxied) ──
  defineModel({
    id: 'openai/gpt-5.5',
    defaultModel: 'openai/gpt-5.5',
    label: 'GPT-5.5',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1050000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/gpt-5.4',
    defaultModel: 'openai/gpt-5.4',
    label: 'GPT-5.4',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1050000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/gpt-5',
    defaultModel: 'openai/gpt-5',
    label: 'GPT-5',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 400000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/gpt-4.1',
    defaultModel: 'openai/gpt-4.1',
    label: 'GPT-4.1',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/gpt-4.1-mini',
    defaultModel: 'openai/gpt-4.1-mini',
    label: 'GPT-4.1 Mini',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/o3',
    defaultModel: 'openai/o3',
    label: 'o3',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'reasoning'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: true, supportsPreciseTokenCount: false },
    contextWindow: 200000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/o4-mini',
    defaultModel: 'openai/o4-mini',
    label: 'o4-mini',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'reasoning'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: true, supportsPreciseTokenCount: false },
    contextWindow: 200000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'openai/gpt-oss-120b',
    defaultModel: 'openai/gpt-oss-120b',
    label: 'GPT-OSS 120B (TEE)',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 131072,
    maxOutputTokens: 32768,
  }),

  // ── Google (proxied) ──
  defineModel({
    id: 'google/gemini-3.5-flash',
    defaultModel: 'google/gemini-3.5-flash',
    label: 'Gemini 3.5 Flash',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: true, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'google/gemini-2.5-pro',
    defaultModel: 'google/gemini-2.5-pro',
    label: 'Gemini 2.5 Pro',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: true, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'google/gemini-2.5-flash',
    defaultModel: 'google/gemini-2.5-flash',
    label: 'Gemini 2.5 Flash',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: true, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
  defineModel({
    id: 'google/gemma-4-31B-it',
    defaultModel: 'google/gemma-4-31B-it',
    label: 'Gemma 4 31B (TEE)',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 262144,
    maxOutputTokens: 32768,
  }),

  // ── TEE-hosted open models ──
  defineModel({
    id: 'zai-org/GLM-5.1-FP8',
    defaultModel: 'zai-org/GLM-5.1-FP8',
    label: 'GLM 5.1 (TEE)',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 203000,
    maxOutputTokens: 32768,
  }),
  defineModel({
    id: 'Qwen/Qwen3.5-122B-A10B',
    defaultModel: 'Qwen/Qwen3.5-122B-A10B',
    label: 'Qwen3.5 122B (TEE)',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 131072,
    maxOutputTokens: 32768,
  }),
  defineModel({
    id: 'Qwen/Qwen3-30B-A3B-Instruct-2507',
    defaultModel: 'Qwen/Qwen3-30B-A3B-Instruct-2507',
    label: 'Qwen3 30B Instruct (TEE)',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 262144,
    maxOutputTokens: 32768,
  }),
  defineModel({
    id: 'moonshotai/kimi-k2.6',
    defaultModel: 'moonshotai/kimi-k2.6',
    label: 'Kimi K2.6',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 262144,
    maxOutputTokens: 32768,
  }),
  defineModel({
    id: 'qwen/qwen3.7-max',
    defaultModel: 'qwen/qwen3.7-max',
    label: 'Qwen3.7 Max',
    brandId: 'nearai',
    vendorId: 'nearai',
    classification: ['chat', 'coding'],
    capabilities: { supportsVision: false, supportsStreaming: true, supportsFunctionCalling: true, supportsJsonMode: true, supportsReasoning: false, supportsPreciseTokenCount: false },
    contextWindow: 1000000,
    maxOutputTokens: 65536,
  }),
]
