
    W3i#                       d dl mZ d dl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Z ed	
       G d d             ZddZddZddZ	 	 	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ G d d      Zy)    )annotationsN)	dataclass)datetimetimezone)Path)Any)parse_dtz!wss://ws-live-data.polymarket.comT)frozenc                  T    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	<   y
)TargetMarketstrslugcondition_id	market_idquestionz	list[str]outcomes	token_idskindN)__name__
__module____qualname____annotations__     )analysis/lpl_orderbook/activity_trades.pyr   r      s(    
INM
Ir   r   c                    | g S t        | t              r| S t        | t              r*	 t        j                  |       }t        |t              r|S g S g S # t        j
                  $ r g cY S w xY wN)
isinstancelistr   jsonloadsJSONDecodeError)rawvalues     r   	json_listr%      sn    
{	#t
#s	JJsOE #5$/u7R7I ## 	I	s   A A+*A+c                T    || k(  ryt        dd      D ]  }||  d| k(  sd| c S  y )N	moneyline      z-gamegame)range)
event_slugmarket_sluggame_nos      r   market_kindr/   )   sG    j A; $ZLgY77'##$ r   c           	         dh}|D ]D  }t        | t        |j                  d      xs d            }|s.|dk7  s4|j                  |       F |S )zSelect main winner markets only.

    BO3 usually has moneyline/game1/game2. BO5 should use moneyline plus game1-game4;
    the final decisive map is represented by the moneyline outcome.
    r'   r    )r/   r   getadd)r,   markets	requestedmarketr   s        r   infer_requested_marketsr7   2   sW     I  :s6::f+=+C'DEDK'MM$  r   c                  	 |t        | |      }g }|D ]  }t        |j                  d      xs d      }t        | |      }|||vr5|j	                  t        |t        |j                  d      xs d      t        |j                  d      xs d      t        |j                  d      xs d      t        |j                  d            D cg c]  }t        |       c}t        |j                  d            D cg c]  }t        |       c}|             
 d	d
it        dd      D ci c]  }d| |
 c}	t        |	fd      S c c}w c c}w c c}w )Nr   r1   conditionIdidr   r   clobTokenIds)r   r   r   r   r   r   r   r'   r   r(   r)   r*   c                <    j                  | j                  d      S )Nc   )r2   r   )itemorders    r   <lambda>z'select_target_markets.<locals>.<lambda>Y   s    EIIdii,D r   )key)	r7   r   r2   r/   appendr   r%   r+   sorted)
r,   r4   r5   targetsr6   r   r   r>   ir?   s
            @r   select_target_marketsrF   @   sC   
 +J@	"$G 
6::f%+,:t,<4y0 M!:!@bAfjj.4"5VZZ
39r:09&**Z:P0QR#d)R1:6::n;U1VW3t9W
	

  !DuQ{C!$qc
ACDE'DEE SW  Ds   E=E0Ec                j   | D ci c]  }|j                   | }}| D ci c])  }|j                  r|j                  j                         |+ }}| D ci c]  }|j                  s|j                  | }}| D ci c]  }|j                  D ]  }||  }}}||||dS c c}w c c}w c c}w c c}}w )N)r   	conditionr   token)r   r   lowerr   r   )rD   targetby_slugby_conditionby_market_idtoken_idby_tokens          r   target_indexesrQ   \   s    189vv{{F"9G9  	!!#V+L 
 <CWfFVFVF$$f,WLW ((  	&H  !!	  :
 Xs   B .B%B*%B*;B/c                T   t        | j                  d      t              r| j                  d      n| }t        |t              sy t        |      }t	        |j                  d      xs( |j                  d      xs |j                  d      xs d      }||d   v r|d   |   S t	        |j                  d      xs |j                  d      xs d      j                         }||d   v r|d   |   S t	        |j                  d	      xs( |j                  d
      xs |j                  d      xs d      }||d   v r|d   |   S t	        |j                  d      xs; |j                  d      xs( |j                  d      xs |j                  d      xs d      }||d   v r|d   |   S |j                  d      xs g D ]h  }t        |t              st	        |j                  d      xs( |j                  d      xs |j                  d      xs d      }	|	|d   v s`|d   |	   c S  y )Npayloadr   
marketSlugr-   r1   r9   r   rH   r6   marketIdr   assetasset_idrO   outcomeTokenIdrI   maker_orders)r   r2   dictrQ   r   rJ   )
r>   rD   rS   indexesr   r   r   rV   maker_ordermaker_assets
             r   match_activity_trader^   q   s3    &00CT%Jdhhy!PTGgt$W%Gw{{6"cgkk,&?c7;;}C]cacdDwvvt$$w{{=1VW[[5PVTVW]]_Lw{++{#L11GKK)fW[[-DfT_H`fdfgIGK(({#I..G 	;;z"	;;z"	 ;;'(	 E   w&&{{>28b 
1+t,OOG$ z*z* 	
 ''**7#K00
1 r   c                   | dv ry t        | t        t        f      r;t        |       }|dkD  r|dz  }	 t        j                  |t
        j                        S t        | t              r<	 t        |       }|dkD  r|dz  }	 t        j                  |t
        j                        S t        |       }||j                  t
        j                        S d S # t        t        t        f$ r Y y w xY w# t        $ r3 t        |       }|!|j                  t
        j                        cY S d cY S w xY w# t        t        t        f$ r Y y w xY w)N)Nr1   g   mB     @@)tz)r   intfloatr   fromtimestampr   utcOSErrorOverflowError
ValueErrorr   r	   
astimezone)r$   tsparseds      r   parse_activity_tsrl      s2   
%#u&5\9&LB	))">> %	SuB 9&LB	))">> e_F.4.@6X\\*JdJ 
3 		
  	Se_F6<6H6$$X\\2RdR	S 
3 		s;   $C (C+ >$D* C('C(+5D'"D'&D'*E Ec                   t        | j                  d      t              r| j                  d      n| }t        | j                  d            }t        t        |t              r|j                  d      nd       }|xs |}	|	 t	        ||	z
  j                         dz  d      nd }
i d|d|j                  d|j                  d|j                  d	|j                  d
| j                  d
d      d| j                  dd      d| j                  dd      d|d|r|j                         ndd|r|j                         ndd|j                         d|d|
dt        |t              r|j                  dd      nddt        |t              r|j                  dd      nddt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      ndt        |t              r|j                  dd      nd| d 	S )!NrS   	timestampr`      r,   matched_market_slugmatched_market_kindmatched_condition_idmatched_market_idtopicr1   typeconnection_idmessage_indexws_timestamptrade_timestampreceived_at_wallreceived_at_monotonic_nsdelay_msrV   outcomeoutcome_indexoutcomeIndexsidepricesizefeeproxyWalletname	pseudonymtransactionHash)	r   r   r   r   proxy_walletr   r   transaction_hashraw_json)r   r2   rZ   rl   roundtotal_secondsr   r   r   r   	isoformat)r>   rK   r,   rz   r{   rw   rS   ws_tstrade_ts	source_tsr|   s              r   normalized_activity_rowr      s    &00CT%Jdhhy!PTGdhh{34E ZQU=V[!9\`aH!I   	)+::<vEqI 
jv{{ 	v{{ 	 3 3	
 	V-- 	'2& 	$ 	/26 	 	U) 	88--/ 	,668 	#$< 	H 	Z-FWb)B  	GT1J7;;y"-PR!" 	JwPT<U^R8[]#$ ,6gt+DFB'"-7-FWb)B+5gt+DFB'")3GT)Bw{{5"%:DWd:SM26Y[+5gt+DFB'"5?5NW[[b1TVBLWVZB[GKK(92>ac5 r   c                  B    e Zd Zddd	 	 	 	 	 	 	 d	dZd
dZddZddZy)JsonlWriterd   g      ?)flush_everyflush_interval_secondsc                  || _         t        d|      | _        t        d|      | _        d| _        t        j                         | _        | j                   j                  j                  dd       |j                  dd      | _        y )	Nr(   g        r   T)parentsexist_okazutf-8)encoding)pathmaxr   r   _pendingtime	monotonic_last_flush_monotonicparentmkdiropen_file)selfr   r   r   s       r   __init__zJsonlWriter.__init__   sq     	q+.&)#/E&F#%)^^%5"		td;YYsWY5
r   c                z   | j                   j                  t        j                  |dd             | j                   j                  d       | xj                  dz  c_        t        j                         }| j                  | j                  k\  s|| j                  z
  | j                  k\  r| j                          y y )NFT)ensure_ascii	sort_keys
r(   )r   writer    dumpsr   r   r   r   r   r   flush)r   rownows      r   r   zJsonlWriter.write   s    

CetLM

nnMMT---T///43N3NNJJL Or   c                x    | j                   j                          d| _        t        j                         | _        y )Nr   )r   r   r   r   r   r   r   s    r   r   zJsonlWriter.flush  s(    

%)^^%5"r   c                X    | j                          | j                  j                          y r   )r   r   closer   s    r   r   zJsonlWriter.close	  s    



r   N)r   r   r   rb   r   rc   returnNone)r   dict[str, Any]r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   r   r      sD    
 (+66 	6
 !&6 
6	6
r   r   )r#   r   r   z	list[Any])r,   r   r-   r   r   z
str | None)r,   r   r4   list[dict[str, Any]]r   zset[str])r,   r   r4   r   r5   zset[str] | Noner   list[TargetMarket])rD   r   r   z"dict[str, dict[str, TargetMarket]])r>   r   rD   r   r   zTargetMarket | None)r$   r   r   zdatetime | None)r>   r   rK   r   r,   r   rz   r   r{   rb   rw   rb   r   r   )
__future__r   r    r   dataclassesr   r   r   pathlibr   typingr   analysis.safe_btc5.typesr	   ACTIVITY_WS_URLr   r%   r/   r7   rF   rQ   r^   rl   r   r   r   r   r   <module>r      s    "   ! '   - 6 $  FF!F F 	F8**
** *ZK6-
- - 	-
 - "- - -`" "r   