
    i                     p    d Z ddlmZmZmZ erddlmZmZ 	 ddedddee   d	ee	e	f   fd
Z
ddddd	e	fdZy)zi
This file is used to calculate the cost of the Gemini API.

Handles the context caching for Gemini API.
    )TYPE_CHECKINGOptionalTuple)	ModelInfoUsageNmodelusager   service_tierreturnc                 &    ddl m}  || |d|      S )z
    Calculates the cost per token for a given model, prompt tokens, and completion tokens.

    Follows the same logic as Anthropic's cost per token calculation.
    r   )generic_cost_per_tokengemini)r   r	   custom_llm_providerr
   ).litellm.litellm_core_utils.llm_cost_calc.utilsr   )r   r	   r
   r   s       t/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/gemini/cost_calculator.pycost_per_tokenr      s!     V!$!	     
model_infor   c                     ddl m} d}d}| e| j                  Yt        | j                  |      rCt	        | j                  d      r-| j                  j
                  | j                  j
                  }nd}||z  }|S )zm
    Calculates the cost per web search request for a given model, prompt tokens, and completion tokens.
    r   )PromptTokensDetailsWrappergQ?web_search_requests)litellm.types.utilsr   prompt_tokens_details
isinstancehasattrr   )r	   r   r   cost_per_web_search_requestnumber_of_web_search_requests
total_costs         r   r   r      s     ? #($%! 	''3u224NOE//1FG'';;G(-(C(C(W(W%()% -/LLJr   )N)__doc__typingr   r   r   r   r   r   strfloatr   r    r   r   <module>r$      sj    2 14 ?C.6sm
5%<$w K E r   