// TODO DS: centralize somewhere

import { IChatModel } from '../types';

export const OPEN_AI_MODELS: IChatModel[] = [
    {
        id: 'gpt-5.1',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 125,
            cached_tokens: 13,
            completion_tokens: 1000,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5.1-codex',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 125,
            cached_tokens: 13,
            completion_tokens: 1000,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5.1-codex-mini',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 25,
            cached_tokens: 3,
            completion_tokens: 200,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5.1-chat-latest',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 125,
            cached_tokens: 13,
            completion_tokens: 1000,
        },
        max_tokens: 16384,
    },
    {
        id: 'gpt-5-2025-08-07',
        aliases: ['gpt-5'],
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 125,
            cached_tokens: 13,
            completion_tokens: 1000,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5-mini-2025-08-07',
        aliases: ['gpt-5-mini'],
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 25,
            cached_tokens: 3,
            completion_tokens: 200,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5-nano-2025-08-07',
        aliases: ['gpt-5-nano'],
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 5,
            cached_tokens: 1,
            completion_tokens: 40,
        },
        max_tokens: 128000,
    },
    {
        id: 'gpt-5-chat-latest',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 125,
            cached_tokens: 13,
            completion_tokens: 1000,
        },
        max_tokens: 16384,
    },
    {
        id: 'gpt-4o',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 250,
            cached_tokens: 125,
            completion_tokens: 1000,
        },
        max_tokens: 16384,
    },
    {
        id: 'gpt-4o-mini',
        max_tokens: 16384,
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 15,
            cached_tokens: 8,
            completion_tokens: 60,
        },
    },
    {
        id: 'o1',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 1500,
            cached_tokens: 750,
            completion_tokens: 6000,
        },
        max_tokens: 100000,
    },
    {
        id: 'o1-mini',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 110,
            completion_tokens: 440,
        },
        max_tokens: 65536,
    },
    {
        id: 'o1-pro',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 15000,
            completion_tokens: 60000,
        },
        max_tokens: 100000,
    },
    {
        id: 'o3',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 200,
            cached_tokens: 50,
            completion_tokens: 800,
        },
        max_tokens: 100000,
    },
    {
        id: 'o3-mini',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 110,
            cached_tokens: 55,
            completion_tokens: 440,
        },
        max_tokens: 100000,
    },
    {
        id: 'o4-mini',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 110,
            completion_tokens: 440,
        },
        max_tokens: 100000,
    },
    {
        id: 'gpt-4.1',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 200,
            cached_tokens: 50,
            completion_tokens: 800,
        },
        max_tokens: 32768,
    },
    {
        id: 'gpt-4.1-mini',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 40,
            cached_tokens: 10,
            completion_tokens: 160,
        },
        max_tokens: 32768,
    },
    {
        id: 'gpt-4.1-nano',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 10,
            cached_tokens: 2,
            completion_tokens: 40,
        },
        max_tokens: 32768,
    },
    {
        id: 'gpt-4.5-preview',
        costs_currency: 'usd-cents',
        input_cost_key: 'prompt_tokens',
        output_cost_key: 'completion_tokens',
        costs: {
            tokens: 1_000_000,
            prompt_tokens: 7500,
            completion_tokens: 15000,
        },
        max_tokens: 32768,
    },
];
