§
    Ë�»j[  ã                  óF  — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ddl
mZmZmZmZ  G d„ de¦  «        Z ed	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	¬
¦  «         G d„ d¦  «        ¦   «         Z ed	¬
¦  «         G d„ d¦  «        ¦   «         Z G d„ d¦  «        ZdS )zÑ
Mathematical Economic Simulation & Anti-Inflation Engine for FreeExile.
Implements Dynamic Equilibrium modeling (Faucets vs Sinks), Trade Tax Burning,
and Automatic Inflation Stabilizer across 1,000,000 CCU.
é    )ÚannotationsN)ÚEnumÚauto)Ú	dataclassÚfield)ÚListÚDictÚTupleÚOptionalc                  ó&   — e Zd ZdZdZdZdZdZdZdS )ÚCurrencyFlowTypeÚFAUCET_MONSTER_DROPÚFAUCET_QUEST_REWARDÚSINK_CRAFTINGÚSINK_TRADE_TAXÚSINK_MAP_DEVICEÚSINK_HIDEOUTN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   © ó    ú@C:\Projects\FreeExile\server\world\economic_simulation_engine.pyr   r      s.   € € € € € Ø/ÐØ/ÐØ#€MØ%€NØ'€OØ!€L€L€Lr   r   T)Úslotsc                  óD   — e Zd ZU ded<   dZded<   dZded<   dZd	ed
<   dS )ÚEconomyStateÚintÚtotal_supplyç      ð?ÚfloatÚsink_efficiency_ratioç        Údaily_inflation_rateFÚboolÚhyperinflation_warningN)r   r   r   Ú__annotations__r!   r#   r%   r   r   r   r   r      sT   € € € € € € àÐÐÑØ#&ÐÐ&Ð&Ð&Ñ&Ø"%ÐÐ%Ð%Ð%Ñ%Ø#(ÐÐ(Ð(Ð(Ñ(Ð(Ð(r   r   c                  óV   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   dS )ÚDailySimulationReportr   Ú	day_indexÚfaucetsÚsinksÚnet_currency_deltar    r!   r$   Úhyperinflation_detectedÚstrÚaction_recommendationN©r   r   r   r&   r   r   r   r(   r(      s]   € € € € € € à€N€N�NØ€L€L�LØ€J€J�JØÐÐÑØ Ð Ð Ñ Ø!Ð!Ð!Ñ!ØÐÐÑÐÐr   r(   c                  ó$   — e Zd ZU ded<   ded<   dS )ÚDynamicSinkMultipliersr    Úcrafting_cost_multiplierÚmap_device_fee_multiplierNr0   r   r   r   r2   r2   *   s*   € € € € € € à#Ð#Ð#Ñ#Ø$Ð$Ð$Ñ$Ð$Ð$r   r2   c                  ó>   — e Zd ZdZddd„Zdd	„Zddd„Zdd„Zdd„ZdS ) ÚEconomicSimulationEnginez¢
    Mathematical governor that monitors currency creation and destruction.
    Maintains Sink Efficiency Ratio (SER = Sinks / Faucets) near 1.00 (+/- 0.05).
    é€–˜ Úinitial_currency_supplyr   ÚreturnÚNonec                ó>   — || _         g | _        d| _        d| _        d S )Nr   F)Ú_total_supplyÚ_historyÚ_current_serÚ_hyperinflation_active)Úselfr8   s     r   Ú__init__z!EconomicSimulationEngine.__init__6   s'   € Ø4ˆÔØ57ˆŒØˆÔØ&+ˆÔ#Ð#Ð#r   r   c           	     ó¤   — t          | j        | j        | j        sdn'| j        d         j        t          d| j        ¦  «        z  | j        ¬¦  «        S )Nr"   éÿÿÿÿé   )r   r!   r#   r%   )r   r<   r>   r=   r,   Úmaxr?   )r@   s    r   Ú	get_statez"EconomicSimulationEngine.get_state<   sk   € ÝØÔ+Ø"&Ô"3Ø,0¬Mð  "C  ÀÄÈbÔ@QÔ@dÕgjÐklÐnrô  oAñ  hBô  hBñ  ABØ#'Ô#>ð	
ñ 
ô 
ð 	
r   çš™™™™™©?Útrade_volumeÚtax_rater    c                ód   — t          ||z  ¦  «        }t          d| j        |z
  ¦  «        | _        |S )zœ
        Permanently burns a percentage of currency on every market transaction.
        Removes currency directly from total supply into the void.
        r   )r   rE   r<   )r@   rH   rI   Úburned_amounts       r   Úapply_trade_tax_burnz-EconomicSimulationEngine.apply_trade_tax_burnD   s6   € õ
 ˜L¨8Ñ3Ñ4Ô4ˆÝ   DÔ$6¸Ñ$FÑGÔGˆÔØÐr   Úfaucets_generatedÚcrafting_sinkÚtrade_tax_sinkÚmap_device_sinkr(   c           	     ó,  — ||z   |z   }||z
  }| xj         |z  c_         |dk    r||z  nd}|| _        |dk     }|| _        |rd}	n|dk    rd}	nd}	t          t	          | j        ¦  «        dz   ||||||	¬	¦  «        }
| j                             |
¦  «         |
S )
za
        Simulates 1 economy cycle (24-hour window) and updates supply & health indices.
        r   r   gffffffæ?zxDEFICIT_SINK_CRITICAL: Increase Map Device activation fees, raise crafting stone requirements, and activate market burn.g333333ó?z]EXCESS_SINK_DEFLATION: Currency is deflating rapidly. Boost monster base drop rates slightly.zNEQUILIBRIUM_HEALTHY: Faucets and sinks in optimal dynamic balance (SER ~ 1.0).rD   )r)   r*   r+   r,   r!   r-   r/   )r<   r>   r?   r(   Úlenr=   Úappend)r@   rM   rN   rO   rP   Útotal_sinksÚ	net_deltaÚserr-   ÚrecÚreports              r   Úsimulate_dayz%EconomicSimulationEngine.simulate_dayM   sä   € ð $ nÑ4°ÑFˆØ%¨Ñ3ˆ	ØÐÔ˜iÑ'ÐÔà3DÀqÒ3HÐ3Hˆ{Ð.Ñ.Ð.ÈcˆØˆÔð #&¨¢*ÐØ&=ˆÔ#à"ð 	cð MˆCˆCØ�4ŠZˆZØqˆCˆCàbˆCå&Ý˜$œ-Ñ(Ô(¨1Ñ,Ø%ØØ(Ø"%Ø$;Ø"%ð
ñ 
ô 
ˆð 	Œ×Ò˜VÑ$Ô$Ð$Øˆr   Úcurrent_serr2   c                óž   — |dk     rdd|z
  dz  z   }dd|z
  dz  z   }nd}d}t          t          |d¦  «        t          |d¦  «        ¬¦  «        S )z’
        Automatic counter-inflation regulator.
        If SER falls below 1.0, scales up crafting and map device fees to curb inflation.
        gš™™™™™é?r   g      ø?g       @é   )r3   r4   )r2   Úround)r@   rZ   Ú	craft_mulÚmap_muls       r   Ú"calculate_dynamic_sink_multipliersz;EconomicSimulationEngine.calculate_dynamic_sink_multipliersu   st   € ð
 ˜ÒÐØ˜s [Ñ0°CÑ7Ñ7ˆIØ˜S ;Ñ.°#Ñ5Ñ5ˆGˆGàˆIØˆGå%Ý%*¨9°aÑ%8Ô%8Ý&+¨G°QÑ&7Ô&7ð
ñ 
ô 
ð 	
r   N)r7   )r8   r   r9   r:   )r9   r   )rG   )rH   r   rI   r    r9   r   )
rM   r   rN   r   rO   r   rP   r   r9   r(   )rZ   r    r9   r2   )	r   r   r   Ú__doc__rA   rF   rL   rY   r`   r   r   r   r6   r6   0   s�   € € € € € ðð ð
,ð ,ð ,ð ,ð ,ð
ð 
ð 
ð 
ðð ð ð ð ð&ð &ð &ð &ðP
ð 
ð 
ð 
ð 
ð 
r   r6   )ra   Ú
__future__r   ÚmathÚenumr   r   Údataclassesr   r   Útypingr   r	   r
   r   r   r   r(   r2   r6   r   r   r   ú<module>rg      s¬  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð"ð "ð "ð "ð "�tñ "ô "ð "ð €�ÐÑÔð)ð )ð )ð )ð )ñ )ô )ñ Ôð)ð €�ÐÑÔðð ð ð ð ñ ô ñ Ôðð €�ÐÑÔð%ð %ð %ð %ð %ñ %ô %ñ Ôð%ð
T
ð T
ð T
ð T
ð T
ñ T
ô T
ð T
ð T
ð T
r   