§
    „¬½j	  ã                  óâ  — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
  G d„ de¦  «        Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	d	¬
¦  «         G d„ d¦  «        ¦   «         ZdS )z§
Data Transfer Objects and Protocol Types for FreeExile Chat Microservice.
Complies with GEMINI.md 2026 standards: Strict typing, @dataclass(slots=True, frozen=True).
é    )ÚannotationsN)Ú	dataclassÚfield)ÚIntEnum)ÚTuplec                  ó6   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )ÚChatChannelTypez8Enumeration of chat communication channels in FreeExile.r   é   é   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚUNSPECIFIEDÚWORLDÚZONEÚGUILDÚPARTYÚWHISPERÚSYSTEMÚRECRUITÚFEEDBACK© ó    ú/C:\Projects\FreeExile\server\chat\chat_types.pyr	   r	      sA   € € € € € ØBÐBØ€KØ€EØ€DØ€EØ€EØ€GØ€FØ€GØ€H€H€Hr    r	   T)ÚslotsÚfrozenc                  ó@   — e Zd ZU dZded<   ded<   ded<   dZded	<   d
S )ÚItemAffixDTOz:Represents a single magical or elemental affix on an item.ÚstrÚaffix_idÚ	stat_nameÚfloatÚ
stat_valueFÚboolÚis_implicitN)r   r   r   r   Ú__annotations__r,   r   r    r!   r%   r%      sG   € € € € € € àDÐDØ€M€M�MØ€N€N�NØÐÐÑØ€KÐÐÐÑÐÐr    r%   c                  óª   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<    ed„ ¬¦  «        Zded<    ee¬¦  «        Zded<   dS )ÚItemSnapshotDTOz‰
    Cryptographically authenticated snapshot of an item linked into chat.
    Guarantees item legitimacy via HMAC-SHA256 signature.
    r&   Ú	item_uuidÚitem_name_keyÚintÚrarityÚelementÚqualityÚ
item_levelÚcrafter_nameÚhmac_signaturec                 óH   — t          t          j        ¦   «         dz  ¦  «        S )Niè  )r2   Útimer   r    r!   ú<lambda>zItemSnapshotDTO.<lambda>2   s   € µs½4¼9¹;¼;ÈÑ;MÑ7NÔ7N€ r    ©Údefault_factoryÚcreated_at_mszTuple[ItemAffixDTO, ...]ÚaffixesN)	r   r   r   r   r-   r   r>   Útupler?   r   r    r!   r/   r/   $   s¯   € € € € € € ðð ð €N€N�NØÐÐÑØ€K€K�KØ€L€L�LØ€L€L�LØ€O€O�OØÐÐÑØÐÐÑØ˜Ð/NÐ/NÐOÑOÔO€MÐOÐOÐOÑOØ(-¨¸eÐ(DÑ(DÔ(D€GÐDÐDÐDÑDÐDÐDr    r/   c                  óà   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   dZded<   dZded<    ee¬¦  «        Z	ded<   dZ
ded<   dZded<   dZded<   dS )ÚChatMessageDTOzBRepresents an immutable chat message broadcast within the cluster.r&   Ú
message_idr2   Ú	sender_idÚsender_nameÚsender_titleÚsender_guild_tagr	   ÚchannelÚ	target_idÚraw_contentÚfiltered_contentÚtimestamp_msFr+   Úis_censoredr   Úmoderation_risk_scorer<   zTuple[ItemSnapshotDTO, ...]Úlinked_itemsÚ Úzone_idÚguild_idÚparty_idN)r   r   r   r   r-   rM   rN   r   r@   rO   rQ   rR   rS   r   r    r!   rB   rB   6   sû   € € € € € € àLÐLØ€O€O�OØ€N€N�NØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ€N€N�NØÐÐÑØÐÐÑØÐÐÑØ€KÐÐÐÑØ!"ÐÐ"Ð"Ð"Ñ"Ø05°ÀeÐ0LÑ0LÔ0L€LÐLÐLÐLÑLØ€GÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑÐÐr    rB   c                  ó¼   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
Zded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded<    ee¬¦  «        Zded<   dS )ÚSendChatRequestDTOz*Client request to dispatch a chat message.r2   rD   r&   rE   Úsender_levelr	   rH   Úcontentr   rI   rP   rF   rG   rQ   rR   rS   r<   zTuple[str, ...]Úlink_item_uuidsN)r   r   r   r   r-   rI   rF   rG   rQ   rR   rS   r   r@   rX   r   r    r!   rU   rU   K   sÓ   € € € € € € à4Ð4Ø€N€N�NØÐÐÑØÐÐÑØÐÐÑØ€L€L�LØ€IÐÐÐÑØ€LÐÐÐÑØÐÐÐÐÑØ€GÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑØ', u¸UÐ'CÑ'CÔ'C€OÐCÐCÐCÑCÐCÐCr    rU   c                  ód   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	d	ed<   dS )ÚSendChatResponseDTOz5Response returned to the sender after chat ingestion.r+   ÚsuccessrP   r&   Úerror_messagerC   r   r2   Úcooldown_remaining_msrK   Ú
risk_scoreN)
r   r   r   r   r-   r\   rC   r]   rK   r^   r   r    r!   rZ   rZ   \   sx   € € € € € € à?Ð?Ø€M€M�MØ€MÐÐÐÑØ€JÐÐÐÑØ!"ÐÐ"Ð"Ð"Ñ"ØÐÐÐÐÑØ€JÐÐÐÑÐÐr    rZ   c                  ó:   — e Zd ZU dZded<   dZded<   dZded	<   dS )
ÚQueryItemSnapshotResponseDTOzAResponse returned when an observer queries a linked item tooltip.r+   Úis_validNzItemSnapshotDTO | NoneÚitem_snapshotrP   r&   r\   )r   r   r   r   r-   rb   r\   r   r    r!   r`   r`   g   sC   € € € € € € àKÐKØ€N€N�NØ,0€MÐ0Ð0Ð0Ñ0Ø€MÐÐÐÑÐÐr    r`   )r   Ú
__future__r   r:   Údataclassesr   r   Úenumr   Útypingr   r	   r%   r/   rB   rU   rZ   r`   r   r    r!   ú<module>rg      sD  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
�gñ 
ô 
ð 
ð €�˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�˜dÐ#Ñ#Ô#ðEð Eð Eð Eð Eñ Eô Eñ $Ô#ðEð" €�˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð( €�˜dÐ#Ñ#Ô#ðDð Dð Dð Dð Dñ Dô Dñ $Ô#ðDð  €�˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð ð r    