
    Cj[                        d dl mZ d dlmZmZmZ d dlmZ d dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ dddd	ddZddZddZddZddZdS )    )annotations)datetime	timedeltatimezone)DecimalN)Path)build_finance_approval_statusevaluate_finance_approval+evaluate_finance_approval_for_strategy_coinload_finance_approvals)OrderIntent)%_evaluate_finance_approval_for_intent)
created_atstrategy_idcoinpathr   	intent_idstrdecisionr   
str | Noner   r   returnNonec                  | j                             dd           d| ||d|p/t          j        t          j                                                  |||r|rdnd ddd
}|                     d	d
          5 }|                    t          j
        |d          dz              d d d            d S # 1 swxY w Y   d S )NT)parentsexist_okz	approval-testCryptoTraderFz^FinanceManager approval audit only; CryptoTrader must re-check all gates before any execution.)
approval_idr   r   noter   r   r   source_engineexecution_allowedboundaryazutf-8)encoding)	sort_keys
)parentmkdirr   nowr   utc	isoformatopenwritejsondumps)r   r   r   r   r   r   rowhandles           &tests/test_finance_manager_approval.py_write_approvalr3      s   KdT222-8-- JHL$>$>$H$H$J$J"+6I4IT"t C 
3	)	) =VTZt444t;<<<= = = = = = = = = = = = = = = = = =s   :-B44B8;B8r   c                     t          di ddddddddd	d
dddddt          d          dd dd dt          d          dt          d          dddddt          d          dt          d          S ) Nr   #candidate_v76_strict_live_candidatesymbolzBTC/USDC:USDCr   BTCsidebuyreduce_onlyF
order_typemarkettifIocsizez0.001pricetrigger_price	stop_loss59000take_profit61000client_order_id0xabcreasonr   risk_usdz0.50estimated_notional_usd50 )r   r   rL       r2   _intentrN   $   s       99 U U	
 E 8 E W d d '""" G$$$   v    't}}}! rM   tmp_pathc                   | dz  }t          |ddd           t          |ddddd	
           t          |          }t          d|          }t          dd	|          }t	          |          }|j        du sJ |j        du sJ |j        dk    sJ |d         j        dk    sJ |d         j        d	k    sJ |j	        dk    sJ |j
        du sJ d|j        v sJ |d         d         dk    sJ |d         du sJ d S )Ntrade_approvals.jsonlzintent-1
paper_onlyz2026-06-30T10:00:00+00:00r   r   r   approvez2026-06-30T10:05:00+00:00r5   r7   )r   r   r   r   r   	approvalsT$approved_pending_crypto_trader_gatesF$crypto_trader_must_recheck_all_gateslatest_decisions   execution_side_effects)r3   r   r
   r   r	   allowedr   r   r   statusmainnet_signed_actionreasons)rO   logrV   r   strategy_coinr^   s         r2   Etest_finance_approval_reader_loads_latest_decision_and_never_executesrc   9   s   
,
,CC:QlmmmmC:	Ni  x]  di  j  j  j  j&s++I(yIIIH?@egl  yB  C  C  CM*3//Ft#### D(((("j0000R=$(MMMMMR=&&&&?DDDDD)U22221X5EEEEE$%i0A5555*+u444444rM   c           	     4   | dz  }t          |dd           t          |dd           t          |ddt          j        t          j                  t          d	
          z
                                             t          |          }t          d |          j	        dk    sJ t          d|          j	        dk    sJ t          d|          j	        dk    sJ t          d|          j	        dk    sJ t          d|d          j	        dk    sJ d S )NrQ   zintent-paperrR   )r   r   zintent-rejectrejectz
intent-oldrT      )daysrS   rU   )"finance_approval_intent_id_missingmissing)finance_approval_missing)finance_approval_paper_only)finance_approval_rejected<   )rV   max_age_seconds)finance_approval_expired)
r3   r   r)   r   r*   r   r+   r   r
   r`   )rO   ra   rV   s      r2   Gtest_finance_approval_gate_blocks_reject_paper_only_missing_and_expiredrp   O   sn   
,
,CC>LIIIIC?XFFFFC<)QYQ]^f^jQkQknw}~nnnQ  QK  QK  QM  QM  N  N  N  N&s++I$TY???GKrrrrr$Y)DDDLPmmmmm$^yIIIQUuuuuu$_	JJJRVttttt$\YXZ[[[c  hE  E  E  E  E  E  ErM   c                P   |dz  }|                      dt          |                     |                     dd           |                     dd           t          t	                      d          }t          t	                      d	          }|d
         du sJ |d         dk    sJ |d         du sJ |d
         du sJ |d         du sJ t          |dddd           t          t	                      d          }|d
         du sJ |d         dk    sJ |d         du sJ d S )NrQ   CTB_FINANCE_APPROVAL_LOGCTB_FINANCE_TRADE_INTENT_IDF)raisingCTB_FINANCE_INTENT_MAP_PATHlive)modeshadowr]   r`   )&finance_approval_strategy_coin_missingr_   Tzintent-from-dashboardrT   r5   r7   )r   r   r   r   r   )setenvr   delenvr   rN   r3   )monkeypatchrO   ra   	live_gateshadow_gatelive_gate_after_metadatas         r2   Ktest_tiny_live_runtime_requires_finance_approval_id_for_live_but_not_shadowr   ]   s   
,
,C13s88<<<4eDDD4eDDD5giifMMMI7		QQQKY5((((Y#NNNNN,-6666y!T))))./58888C#:Y  ]B  IN  O  O  O  ODWYYU[\\\#I.$6666#K04KKKKK#$;<EEEEEErM   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )rO   r   r   r   )
__future__r   r   r   r   decimalr   r.   pathlibr   %src.approval.finance_manager_approvalr	   r
   r   r   src.execution.order_intentr   &src.tools.tiny_autonomous_live_runtimer   r3   rN   rc   rp   r   rL   rM   r2   <module>r      sW   " " " " " " 2 2 2 2 2 2 2 2 2 2                         3 2 2 2 2 2 X X X X X X \`{  UY = = = = = =$   *5 5 5 5,E E E EF F F F F FrM   