§
    €¬j$  ã                  ó*  — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZ  G d„ dee¦  «        Z G d„ d	ee¦  «        Z G d
„ dee¦  «        Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         ZdS )u  AutoPOE2 - Currency Exchange Models & Portfolio Schema (Doc 43 / Doc 68 / Doc 69).
====================================================================================
Ä�á»‹nh nghÄ©a cáº¥u trÃºc dá»¯ liá»‡u cho SÃ n Giao Dá»‹ch Ngoáº¡i Há»‘i (Faustus Currency Exchange - PhÃ­m '/'):
- PhÃ¢n táº§ng thÃ¡p tiá»�n tá»‡ (Tier 4 -> Tier 3 -> Tier 2 Chaos -> Tier 1 Divine -> Tier 0 Mirror).
- Cáº¥u trÃºc Ä‘Æ¡n hÃ ng (ExchangeOrder), Ä‘á»‹nh má»©c dá»± trá»¯ an toÃ n vÃ  phÃ­ giao dá»‹ch VÃ ng (Gold Tax).

TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 1: Cold Path Tier 2 (Python 3.11).
- Rule 4: Module hÃ³a, tráº§n file < 500 dÃ²ng.
- Rule 7: PhÃ­m '/' má»Ÿ Currency Exchange, Spacebar Ä‘Ã³ng panels.
- Báº¥t biáº¿n: INV-EXCHANGE-GOLD-TAX, INV-EXCHANGE-RESERVE-SAFE, INV-EXCHANGE-SLIPPAGE-GUARD.
é    )Úannotations)Ú	dataclassÚfield)ÚEnum)ÚAnyÚDictÚListÚOptionalÚSetÚTuplec                  ó&   — e Zd ZdZdZdZdZdZdZdS )ÚCurrencyTieru?   PhÃ¢n táº§ng thÃ¡p tÃ i sáº£n tÃ­ch lÅ©y trong Path of Exile 2.ÚTIER_0_APEXÚTIER_1_DIVINEÚTIER_2_CHAOSÚTIER_3_CRAFTINGÚTIER_4_BASEN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   © ó    úCC:\Projects\AutoPOE2\src\assistant_tool\currency_exchange\models.pyr   r      s-   € € € € € ØIÐIØ€KØ#€MØ!€LØ'€OØ€K€K€Kr   r   c                  ó   — e Zd ZdZdZdZdZdS )ÚExchangeActionTypeu/   Loáº¡i hÃ nh Ä‘á»™ng giao dá»‹ch ngoáº¡i há»‘i.ÚSELL_TO_CHAOSÚCONVERT_CHAOS_TO_DIVINEÚCONVERT_DIVINE_TO_MIRRORN)r   r   r   r   r   r   r   r   r   r   r   r      s'   € € € € € Ø9Ð9Ø#€MØ7ÐØ9ÐÐÐr   r   c                  ó:   — 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ZdS )ÚExchangeOrderStatusu,   Tráº¡ng thÃ¡i thá»±c thi lá»‡nh giao dá»‹ch.ÚPENDINGÚ	SUBMITTEDÚ	COMPLETEDÚ	CANCELLEDÚREJECTED_LOW_RESERVEÚREJECTED_LOW_GOLDÚREJECTED_SLIPPAGEÚREJECTED_COOLDOWNÚCIRCUIT_BREAKER_ACTIVEÚUNSAFE_AREAN)r   r   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r   r   r   r!   r!   %   sK   € € € € € Ø6Ð6Ø€GØ€IØ€IØ€IØ1ÐØ+ÐØ+ÐØ+ÐØ5ÐØ€K€K€Kr   r!   c                  ó�   — e Zd ZU dZ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<   e	dd„¦   «         Z
e	dd„¦   «         ZdS )ÚCurrencyItemu7   MÃ´ táº£ má»™t loáº¡i tiá»�n tá»‡ trong kho tÃ i sáº£n.ÚstrÚnamer   Útierr   ÚintÚquantity_ownedÚmin_reserveg      ð?ÚfloatÚmarket_chaos_valueé2   Úgold_tax_per_unitÚreturnc                ó<   — t          d| j        | j        z
  ¦  «        S )uG   LÆ°á»£ng tiá»�n tá»‡ tháº·ng dÆ° cÃ³ thá»ƒ Ä‘em giao dá»‹ch trÃªn sÃ n.r   )Úmaxr2   r3   ©Úselfs    r   Útradable_surpluszCurrencyItem.tradable_surplus=   s   € õ �1�dÔ)¨DÔ,<Ñ<Ñ=Ô=Ð=r   c                ó<   — t          | j        | j        z  d¦  «        S )u7   Tá»•ng giÃ¡ trá»‹ tÃ i sáº£n quy Ä‘á»•i sang Chaos Orb.é   )Úroundr2   r5   r;   s    r   Útotal_chaos_valuezCurrencyItem.total_chaos_valueB   s   € õ �TÔ(¨4Ô+BÑBÀAÑFÔFÐFr   N)r8   r1   )r8   r4   )r   r   r   r   Ú__annotations__r2   r3   r5   r7   Úpropertyr=   rA   r   r   r   r-   r-   3   s»   € € € € € € àAÐAØ€I€I�IØÐÐÑØ€NÐÐÐÑØ€KÐÐÐÑØ #ÐÐ#Ð#Ð#Ñ#ØÐÐÐÐÑàð>ð >ð >ñ „Xð>ð ðGð Gð Gñ „XðGð Gð G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j        Zded<   dZded<   dS )ÚExchangeOrderuA   Chi tiáº¿t má»™t lá»‡nh giao dá»‹ch trÃªn sÃ n Currency Exchange.r.   Úorder_idr   Úaction_typeÚsell_currencyr1   Úsell_amountÚbuy_currencyÚexpected_buy_amountr4   Úmarket_rateÚestimated_gold_taxr!   ÚstatusÚ ÚreasonN)	r   r   r   r   rB   r!   r"   rN   rP   r   r   r   rE   rE   H   sš   € € € € € € àKÐKØ€M€M�MØ#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ"5Ô"=€FÐ=Ð=Ð=Ñ=Ø€FÐÐÐÑÐÐr   rE   c                  óš   — e Zd ZU dZ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Zded<    ed„ ¬¦  «        Zded<   dS )ÚExchangePortfolioConfiguR   Cáº¥u hÃ¬nh an toÃ n vÃ  cÃ¡c Ä‘á»‹nh má»©c dá»± trá»¯ cho danh má»¥c tiá»�n tá»‡.iˆ  r1   Úmin_gold_reserver6   Úmin_chaos_reserver?   Úmin_divine_reserveg      $@r4   Úmax_slippage_pctià“ Úcooldown_msiÀ'	 Úcircuit_breaker_timeout_msÚmax_consecutive_failuresc                 ó   — ddddddddddddœS )Né   r6   r?   r   é   é
   )zOrb of AlchemyzOrb of Scouringz	Chaos Orbz
Divine OrbzMirror of KalandrazExalted Orbz	Regal OrbzVaul OrbzGemcutter's PrismzGreater Jeweller's OrbÚWaystoner   r   r   r   ú<lambda>z ExchangePortfolioConfig.<lambda>b   s1   € ØØØØØØØØØØ"$ØðFð F€ r   )Údefault_factoryzDict[str, int]Údefault_reservesN)r   r   r   r   rS   rB   rT   rU   rV   rW   rX   rY   r   ra   r   r   r   rR   rR   W   sÎ   € € € € € € à\Ð\Ø ÐÐ Ð Ð Ñ ØÐÐÐÐÑØÐÐÐÐÑØ"ÐÐ"Ð"Ð"Ñ"Ø€KÐÐÐÑØ&,ÐÐ,Ð,Ð,Ñ,Ø$%ÐÐ%Ð%Ð%Ñ%à', uð >ð >ð (ñ (ô (Ðð ð ð ñ ð ð r   rR   N)r   Ú
__future__r   Údataclassesr   r   Úenumr   Útypingr   r   r	   r
   r   r   r.   r   r   r!   r-   rE   rR   r   r   r   ú<module>rf      s¯  ððð ð #Ð "Ð "Ð "Ð "Ð "à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ð ð  ð  ð  ð  �3˜ñ  ô  ð  ð:ð :ð :ð :ð :˜˜dñ :ô :ð :ð ð  ð  ð  ð  ˜#˜tñ  ô  ð  ð ðGð Gð Gð Gð Gñ Gô Gñ „ðGð( ðð ð ð ð ñ ô ñ „ðð ðð ð ð ð ñ ô ñ „ðð ð r   