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

const minimaxM2Capabilities = {
  supportsVision: true,
  supportsStreaming: true,
  supportsFunctionCalling: true,
  supportsJsonMode: true,
  supportsReasoning: true,
  supportsPreciseTokenCount: false,
}

export default [
  defineModel({
    id: 'minimax-m2',
    label: 'MiniMax M2',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'coding'],
    defaultModel: 'MiniMax-M2',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.1',
    label: 'MiniMax M2.1',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.1',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.1-highspeed',
    label: 'MiniMax M2.1 Highspeed',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.1-highspeed',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.5',
    label: 'MiniMax M2.5',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.5',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.5-highspeed',
    label: 'MiniMax M2.5 Highspeed',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.5-highspeed',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.7',
    label: 'MiniMax M2.7',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.7',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-m2.7-highspeed',
    label: 'MiniMax M2.7 Highspeed',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'reasoning', 'vision', 'coding'],
    defaultModel: 'MiniMax-M2.7-highspeed',
    capabilities: minimaxM2Capabilities,
    contextWindow: 204_800,
    maxOutputTokens: 131_072,
  }),
  defineModel({
    id: 'minimax-text-01',
    label: 'MiniMax Text 01',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat'],
    defaultModel: 'MiniMax-Text-01',
    capabilities: {
      ...minimaxM2Capabilities,
      supportsVision: false,
      supportsReasoning: false,
    },
    contextWindow: 524_288,
    maxOutputTokens: 65_536,
  }),
  defineModel({
    id: 'minimax-text-01-preview',
    label: 'MiniMax Text 01 Preview',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat'],
    defaultModel: 'MiniMax-Text-01-Preview',
    capabilities: {
      ...minimaxM2Capabilities,
      supportsVision: false,
      supportsReasoning: false,
    },
    contextWindow: 262_144,
    maxOutputTokens: 65_536,
  }),
  defineModel({
    id: 'minimax-vision-01',
    label: 'MiniMax Vision 01',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'vision'],
    defaultModel: 'MiniMax-Vision-01',
    capabilities: {
      ...minimaxM2Capabilities,
      supportsFunctionCalling: false,
      supportsJsonMode: false,
      supportsReasoning: false,
    },
    contextWindow: 32_768,
    maxOutputTokens: 16_384,
  }),
  defineModel({
    id: 'minimax-vision-01-fast',
    label: 'MiniMax Vision 01 Fast',
    brandId: 'minimax',
    vendorId: 'minimax',
    classification: ['chat', 'vision'],
    defaultModel: 'MiniMax-Vision-01-Fast',
    capabilities: {
      ...minimaxM2Capabilities,
      supportsFunctionCalling: false,
      supportsJsonMode: false,
      supportsReasoning: false,
    },
    contextWindow: 16_384,
    maxOutputTokens: 16_384,
  }),
]
