
    Ii                    n    S r SSKJr  SSKJr  SSKJr  \ " S S5      5       r        S
S jrSS jr	g	)z'Shared betting helpers for poker games.    )annotations)	dataclass)Optionalc                  $    \ rS rSr% SrS\S'   Srg)PotLimitCaps	   zePot-limit caps for a bet.

Attributes:
    total_cap: Maximum total bet size allowed for the action.
int	total_cap N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       >c:\Users\dbart\PlayPalace11\server\game_utils\poker_actions.pyr   r   	   s     Nr   r   c                R    US:X  a  gXS-  -   nUS:X  a  U S-  US-  -   n[        US9$ )a   Return total bet caps for pot-limit/double-pot modes.

Args:
    pot_total: Current total pot size.
    to_call: Amount required to call.
    raise_mode: "no_limit", "pot_limit", or "double_pot".

Returns:
    PotLimitCaps if limits apply, otherwise None.
no_limitN   
double_pot)r
   )r   )	pot_totalto_call
raise_moder
   s       r   compute_pot_limit_capsr      s@     ZaK'I\!MGaK/	),,r   c                >    U(       d  U $ [        XR                  5      $ )z2Clamp a total bet to a pot-limit cap when present.)minr
   )totalcapss     r   clamp_total_to_capr!   +   s    unn%%r   N)r   r	   r   r	   r   strreturnOptional[PotLimitCaps])r   r	   r    r$   r#   r	   )
r   
__future__r   dataclassesr   typingr   r   r   r!   r   r   r   <module>r(      sX    - " !    --- - 	-.&r   