from __future__ import annotations

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

MODELS: list[Model] = [
    Model(
        name="grok-4-1-fast",
        display_name="Grok 4.1 Fast",
        provider="xai",
        context_window=2_000_000,
        max_output_tokens=30_000,
        input_price_per_mtok=0.2,
        output_price_per_mtok=0.5,
        cache_read_price_per_mtok=0.05,
        input_price_per_mtok_128k=0.4,
        output_price_per_mtok_128k=1,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-11-19",
    ),
    Model(
        name="grok-code-fast-1",
        display_name="Grok Code Fast 1",
        provider="xai",
        context_window=256_000,
        max_output_tokens=10_000,
        input_price_per_mtok=0.2,
        output_price_per_mtok=1.5,
        cache_read_price_per_mtok=0.02,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-08-26",
    ),
    Model(
        name="grok-4-fast",
        display_name="Grok 4 Fast",
        provider="xai",
        context_window=2_000_000,
        max_output_tokens=30_000,
        input_price_per_mtok=0.2,
        output_price_per_mtok=0.5,
        cache_read_price_per_mtok=0.05,
        input_price_per_mtok_128k=0.4,
        output_price_per_mtok_128k=1,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-09-18",
    ),
    Model(
        name="grok-4",
        display_name="Grok 4",
        provider="xai",
        context_window=256_000,
        max_output_tokens=256_000,
        input_price_per_mtok=3.0,
        output_price_per_mtok=15.0,
        cache_read_price_per_mtok=0.75,
        input_price_per_mtok_128k=6,
        output_price_per_mtok_128k=30,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-07-09",
    ),
    Model(
        name="grok-3",
        display_name="Grok 3",
        provider="xai",
        context_window=131_072,
        max_output_tokens=131_072,
        input_price_per_mtok=3.0,
        output_price_per_mtok=15.0,
        cache_read_price_per_mtok=0.75,
        supports_tools=True,
        supports_thinking=False,
        release_date="2025-06-10",
    ),
    Model(
        name="grok-3-mini",
        display_name="Grok 3 Mini",
        provider="xai",
        context_window=131_072,
        max_output_tokens=131_072,
        input_price_per_mtok=0.3,
        output_price_per_mtok=0.5,
        cache_read_price_per_mtok=0.075,
        supports_tools=True,
        supports_thinking=True,
        release_date="2025-06-10",
    ),
]
