
    .j"                    $   d dl mZ d dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZmZmZmZ d dlmZmZmZmZm Z   ed           G d d                      Z!d(dZ"d)dZ#d*dZ$ddddd d+d'Z%dS ),    )annotations)asdict	dataclassN)Path)AnyIterable)HyperliquidVaultCollector)HyperliquidWalletCollector)MarketContextCollector)DiscoveryRegistry)DEFAULT_READ_ONLY_GUARDReadOnlyGuard)CopyResearchPaths
day_stringensure_runtime_dirsutc_now_iso)enabled_vaultsenabled_walletsload_watchlistvalidate_watchlistwatchlist_summaryT)frozenc                  X   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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<   eZded<   ed#d            Zed#d            Zed#d            Z	ed#d            Z
ed#d             Zed$d!            Zd"S )%CollectorRunSummaryr   runtime_dirstrdaystatusintvault_summaries_countvault_watchlist_countvault_snapshot_countwallet_watchlist_countwallet_snapshotsmarket_context_snapshotsvault_collection_statusboolapi_response_shape_knownztuple[str, ...]new_leadersdisappeared_leadersdata_qualitypartial_errorszdict[str, str]snapshot_pathsdict[str, Any]	watchlistr   guardreturnc                    | j         j        S N)r0   	read_onlyselfs    T/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/ctb_copy/collector_service.pyr4   zCollectorRunSummary.read_only&   s    z##    c                    | j         j        S r3   )r0   live_ordersr5   s    r7   r:   zCollectorRunSummary.live_orders*   s    z%%r8   c                    | j         j        S r3   )r0   vault_depositsr5   s    r7   r<   z"CollectorRunSummary.vault_deposits.   s    z((r8   c                    | j         j        S r3   )r0   wallet_executionr5   s    r7   r>   z$CollectorRunSummary.wallet_execution2   s    z**r8   c                    | j         j        S r3   )r0   signing_enabledr5   s    r7   r@   z#CollectorRunSummary.signing_enabled6   s    z))r8   c                    | j         S r3   )r"   r5   s    r7   vault_snapshotsz#CollectorRunSummary.vault_snapshots:   s    ((r8   N)r1   r'   )r1   r   )__name__
__module____qualname____annotations__r   r0   propertyr4   r:   r<   r>   r@   rB    r8   r7   r   r      s        HHHKKK!!!!    """"    ((((!!!!####""""2E2222$ $ $ X$ & & & X& ) ) ) X) + + + X+ * * * X* ) ) ) X) ) )r8   r   rawdict[str, object]fallbackr   r1   c                    t          |                     d          p+|                     d          p|                     d          p|          S )NvaultAddressaddressname)r   get)rI   rK   s     r7   _vault_leader_idrQ   ?   sB    sww~&&[#'')*<*<[[S[\\\r8   summaryr.   c                    t          |           }t          | j                  |d<   | j                                        |d<   |S )Nr   r0   )r   r   r   r0   as_dict)rR   payloads     r7   _collector_summary_payloadrV   C   s?    WooG !455GM},,..GGNr8   pathsr   r   c                    |                     | j                  }|j                            dd           |                    t          j        t          |           dd          dz   d           |S )NT)parentsexist_ok   )indent	sort_keys
zutf-8)encoding)collector_result_filer   parentmkdir
write_textjsondumpsrV   )rR   rW   targets      r7   write_collector_resultrg   J   sr    ((55F
Mt444
dj!;G!D!DQZ^___bffqxyyyMr8   rH   mainnet)r   wallet_addressesvault_addressesenvr   str | Path | Noneri   Iterable[str]rj   rk   c                  '() t           }|                                 t          | rt          |           nt                      j                  }t                      }t          ||           t                      't          j	        |j
                  )g }g }g }	t                      (|j                                        }
t          |j                  }t          |          }|j        s)|	                    d |j        D                        d}d}nt'          |          }t)          |          }t+          |          }t+          |          }t+          t,                              d |D             t1          |          z                       }t+          t,                              d |D             t1          |          z                       }g }g }g }g }d}d}t3          |          }	 |                                }d}d	}|                    ||                    d
|                     |D ]o}t;          |j        |j                  }(                     d|            )!                    |d|j"        '          \  }}|r|#                    d|            pnE# tH          $ r8}d}d}|#                    dtK          |          j&                    Y d }~nd }~ww xY w|D ]}	 |'                    |          }|#                    |           (                     d|            )!                    |d|j"        'd          \  }}|r|#                    d|            # tH          $ r?}|#                    dtK          |          j&         d|d d                     Y d }~d }~ww xY w|r*|                    ||                    d|                     tQ          |          } |D ]}!	 | )                    |!          }|#                    |           (                     d|!            )!                    |!d|j"        'd          \  }}|r|#                    d|!            # tH          $ r?}|#                    dtK          |          j&         d|!d d                     Y d }~d }~ww xY w|r*|                     ||                    d|                     	 tU          |          }"|"+                                }#|#g}|"                    ||                    d|                     |#j,        -                    d          d	k    r8|                    d |#j,        -                    dg           D                        nA# tH          $ r4}|#                    dtK          |          j&                    Y d }~nd }~ww xY wt+          t]          '()fd)j/        D                                 }$|r|	                    |           |	s|	#                    d	           |	d	gk    rd	nd}%)0                                 tc          di d|j        d |d!|%d"te          |          d#te          |          d$te          |          te          |          z   d%te          |          d&te          |          d'te          |          d(|d)|d*t+          |          d+|$d,t+          |	          d-t+          |          d.tg          |                    d
|                    tg          |                    d|                    tg          |                    d|                    tg          |                    d|                    tg          |4                    |                    d/dtk          ||
0          d1|}&tm          |&|           |&S )2Nc              3      K   | ]	}d | V  
dS )zwatchlist_invalid:NrH   ).0errors     r7   	<genexpr>z/run_copy_research_collection.<locals>.<genexpr>h   s+      XXU888XXXXXXr8   rH   c                    g | ]	}|j         
S rH   )rN   rp   entrys     r7   
<listcomp>z0run_copy_research_collection.<locals>.<listcomp>q   s    )S)S)SE%-)S)S)Sr8   c                    g | ]	}|j         
S rH   )vault_addressrt   s     r7   rv   z0run_copy_research_collection.<locals>.<listcomp>r   s    (W(W(W)<(W(W(Wr8   not_startedF)rk   Tokvaultszvault:vault)seen_atdegradedzvault_summaries:r/   )r}   r   zvault_detail::   vault_detailszwallet:walletwalletsmarket_context
api_statusc              3      K   | ]	}d | V  
dS )market_context:NrH   )rp   errs     r7   rr   z/run_copy_research_collection.<locals>.<genexpr>   s+      !{!{c"9C"9"9!{!{!{!{!{!{r8   
api_errorsr   c              3  P   K   | ] }|vj         |         j        k     |V  !d S r3   )recordslast_seen_at)rp   keynowobserved_leadersregistrys     r7   rr   z/run_copy_research_collection.<locals>.<genexpr>   sr        L  Ls#M]B]B]bjbrsvbw  cE  HK  cK  cKs  cK  cK  cK  cK  L  Lr8   r   r   r   r    r!   r"   r#   r$   r%   r&   r(   r)   r*   r+   r,   r-   )r{   r   r   r   collector_result)existsr0   )7r   assert_safer   r   rootr   r   r   r   loaddiscovery_registry_filesetwatchlist_filer   r   r   rz   extenderrorsr   r   tupledictfromkeyslistr	   collect_vault_summarieswrite_jsonlsnapshot_filerQ   rI   vault_idaddupsert_seensourceappend	ExceptiontyperC   collect_vault_detailr
   collect_wallet_snapshotr   collectrR   rP   sortedr   saver   lenr   r`   r   rg   )*r   ri   rj   rk   r0   rW   r   r)   r,   r+   watchlist_file_existswatch_payload
validationwatch_walletswatch_vaultsexplicit_walletsexplicit_vaultswallet_targetsvault_targetsvault_summariesr   r   r   r&   r(   vault_collectorsnapshot	leader_id_recordcreatedexcrx   wallet_collectorrN   context_collectormarket_context_snapshotdisappearedr   rR   r   r   r   s*                                          @@@r7   run_copy_research_collectionr   Q   sd	    $E	;\d;///DUDWDWD\]]E
,,Cs###
--C %e&CDDHK "N L!$!07799"5#788M#M22J= 5XXjFWXXXXXX'66%m44-..O,,O4==)S)S])S)S)SVZ[kVlVl)lmmnnN$--(W(W,(W(W(WZ^_nZoZo(oppqqMOMGN+$/C888OG)AACC#' "&##OU5H5HSV5W5WXXX' 	9 	9H(x7HIII  !5)!5!5666'33Iwad3eeGW 9""#7I#7#7888	9  G G G",#( Ec1CEEFFFFFFFFG
 ' 	\ 	\	\&;;MJJH  ***  !9-!9!9:::'33M7HOehq|3}}GW =""#;M#;#;<<< 	\ 	\ 	\!!"Z$s))2D"Z"Z}UWVWUWGX"Z"Z[[[[[[[[	\ ^##M53F3FX[3\3\]]]1c:::! 	P 	P	P'??HHHNN8$$$  !47!4!4555'33GXx`clw3xxGW 8""#6W#6#6777 	P 	P 	P!!"NDII,>"N"N!"N"NOOOOOOOO	P S$$We.A.A)S.Q.QRRRF2s;;;"3";";"="=12%%ne6I6IJZ\_6`6`aaa"*..|<<DD!!!{!{E\EdEhEhiuwyEzEz!{!{!{{{{ F F FDS		0BDDEEEEEEEEF   L  L  L  L  L  Lh.>  L  L  L  L  L  M  MK ,N+++ "D!!!!dV++TTFMMOOO!   JJC v "/222	
 "-000 !11C4F4FFF  #>222 W "%^!4!4!4 !8 7 ":!9 +&&& (K <((( ^,,," %--h<<== !4!4_c!J!JKK5..y#>>??!%"5"56F"L"LMM #E$?$?$D$D E E
 
 
!. $M:OPPPP/0 e1G4 7E***Nsd   0B4J% %
K'/.K""K'/A>M..
N785N22N7;A>Q::
S5R>>S3B'V 
W%*WW)rI   rJ   rK   r   r1   r   )rR   r   r1   r.   )rR   r   rW   r   r1   r   )
r   rl   ri   rm   rj   rm   rk   r   r1   r   )&
__future__r   dataclassesr   r   rd   pathlibr   typingr   r   3src.ctb_copy.collectors.hyperliquid_vault_collectorr	   4src.ctb_copy.collectors.hyperliquid_wallet_collectorr
   0src.ctb_copy.collectors.market_context_collectorr   src.ctb_copy.discovery_registryr   src.ctb_copy.read_only_guardr   r   src.ctb_copy.runtime_pathsr   r   r   r   src.ctb_copy.watchlistr   r   r   r   r   r   rQ   rV   rg   r   rH   r8   r7   <module>r      s   " " " " " " ) ) ) ) ) ) ) )                        Y Y Y Y Y Y [ [ [ [ [ [ S S S S S S = = = = = = O O O O O O O O f f f f f f f f f f f f y y y y y y y y y y y y y y $*) *) *) *) *) *) *) *)Z] ] ] ]       &*&(%'C C C C C C C Cr8   