from __future__ import annotations

# standard
# third party
# custom
from ..model import Model

MODELS: list[Model] = [
    Model(
        name="gpt-5.4-pro",
        display_name="GPT 5.4 Pro",
        provider="openai",
        context_window=1_050_000,
        max_output_tokens=128_000,
        input_price_per_mtok=30,
        output_price_per_mtok=180,
        input_price_per_mtok_200k=60,
        output_price_per_mtok_200k=270,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2026-03-05",
    ),
    Model(
        name="gpt-5.4",
        display_name="GPT 5.4",
        provider="openai",
        context_window=1_050_000,
        max_output_tokens=128_000,
        input_price_per_mtok=2.5,
        output_price_per_mtok=15,
        cache_read_price_per_mtok=0.25,
        input_price_per_mtok_272k=5,
        output_price_per_mtok_272k=22.5,
        cache_read_price_per_mtok_272k=0.5,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2026-03-05",
    ),
    Model(
        name="gpt-5.2-pro",
        display_name="GPT 5.2 Pro",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=21,
        output_price_per_mtok=168,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-12-10",
    ),
    Model(
        name="gpt-5.2",
        display_name="GPT 5.2",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=1.75,
        output_price_per_mtok=14.0,
        cache_read_price_per_mtok=0.175,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-12-10",
    ),
    Model(
        name="gpt-5.1",
        display_name="GPT 5.1",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=1.25,
        output_price_per_mtok=10.0,
        cache_read_price_per_mtok=0.125,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-11-13",
    ),
    Model(
        name="gpt-5",
        display_name="GPT 5",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=1.25,
        output_price_per_mtok=10.0,
        cache_read_price_per_mtok=0.125,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-08-07",
    ),
    Model(
        name="gpt-5-mini",
        display_name="GPT 5 Mini",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=0.25,
        output_price_per_mtok=2.0,
        cache_read_price_per_mtok=0.025,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-08-07",
    ),
    Model(
        name="gpt-5-nano",
        display_name="GPT 5 Nano",
        provider="openai",
        context_window=400_000,
        max_output_tokens=128_000,
        input_price_per_mtok=0.05,
        output_price_per_mtok=0.4,
        cache_read_price_per_mtok=0.005,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-08-07",
    ),
    Model(
        name="gpt-4.1",
        display_name="GPT 4.1",
        provider="openai",
        context_window=1_048_576,
        max_output_tokens=32_768,
        input_price_per_mtok=2.0,
        output_price_per_mtok=8.0,
        cache_read_price_per_mtok=0.5,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-04-14",
    ),
    Model(
        name="gpt-4.1-mini",
        display_name="GPT 4.1 Mini",
        provider="openai",
        context_window=1_048_576,
        max_output_tokens=32_768,
        input_price_per_mtok=0.4,
        output_price_per_mtok=1.6,
        cache_read_price_per_mtok=0.1,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-04-14",
    ),
    Model(
        name="gpt-4.1-nano",
        display_name="GPT 4.1 Nano",
        provider="openai",
        context_window=1_048_576,
        max_output_tokens=32_768,
        input_price_per_mtok=0.1,
        output_price_per_mtok=0.4,
        cache_read_price_per_mtok=0.025,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-04-14",
    ),
]
