from __future__ import annotations

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

MODELS: list[Model] = [
    Model(
        name="gemini-3.1-flash-lite-preview",
        display_name="Gemini 3.1 Flash Lite Preview",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=0.25,
        output_price_per_mtok=1.5,
        cache_read_price_per_mtok=0.025,
        cache_write_price_per_mtok=0.08333,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2026-03-02",
    ),
    Model(
        name="gemini-3.1-pro-preview",
        display_name="Gemini 3.1 Pro Preview",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=2.0,
        output_price_per_mtok=12.0,
        cache_read_price_per_mtok=0.2,
        cache_write_price_per_mtok=0.375,
        input_price_per_mtok_200k=4,
        output_price_per_mtok_200k=18,
        cache_read_price_per_mtok_200k=0.4,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2026-02-19",
    ),
    Model(
        name="gemini-3-flash-preview",
        display_name="Gemini 3 Flash Preview",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=0.5,
        output_price_per_mtok=3.0,
        cache_read_price_per_mtok=0.05,
        cache_write_price_per_mtok=0.08333,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-12-17",
    ),
    Model(
        name="gemini-3-pro-preview",
        display_name="Gemini 3 Pro Preview",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=2.0,
        output_price_per_mtok=12.0,
        cache_read_price_per_mtok=0.2,
        cache_write_price_per_mtok=0.375,
        input_price_per_mtok_200k=4,
        output_price_per_mtok_200k=18,
        cache_read_price_per_mtok_200k=0.4,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-11-18",
        deprecated_at="2026-03-09",
        sunset_at="2025-03-09",
    ),
    Model(
        name="gemini-2.5-flash-lite",
        display_name="Gemini 2.5 Flash Lite",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=0.1,
        output_price_per_mtok=0.4,
        cache_read_price_per_mtok=0.01,
        cache_write_price_per_mtok=0.08333,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-07-22",
    ),
    Model(
        name="gemini-2.5-flash",
        display_name="Gemini 2.5 Flash",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=0.3,
        output_price_per_mtok=2.5,
        cache_read_price_per_mtok=0.03,
        cache_write_price_per_mtok=0.08333,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-06-17",
    ),
    Model(
        name="gemini-2.5-pro",
        display_name="Gemini 2.5 Pro",
        provider="google",
        context_window=1_048_576,
        max_output_tokens=65_536,
        input_price_per_mtok=1.25,
        output_price_per_mtok=10.0,
        cache_read_price_per_mtok=0.125,
        cache_write_price_per_mtok=0.375,
        input_price_per_mtok_200k=2.5,
        output_price_per_mtok_200k=15,
        cache_read_price_per_mtok_200k=0.25,
        supports_vision=True,
        supports_tools=True,
        supports_thinking=True,
        supports_reasoning_tokens=True,
        release_date="2025-06-17",
    ),
]
