o
    j                     @   sJ   d Z ddlZddlZddlZddlmZmZmZmZm	Z	 G dd dZ
dS )ut   
V11 — Market: ventana de 15 min en Polymarket.

Igual que V10: obtener tokens + strike. Outcome siempre oficial.
    N   )Config	GAMMA_API	PRICE_APIUAisoc                   @   sR   e Zd ZdedefddZ	ddejdede	fd	d
Z
dejdedB fddZdS )Marketstart_tscfgc                 C   sD   || _ ||j | _|j | | _d | _d | _d | _d | _|| _	d S )N)
r	   win_secsend_tsslug_prefixslug	token_yestoken_nostrikestrike_source_cfg)selfr	   r
    r   ./var/www/html/MetaHedge/POLYBOT1/v12/market.py__init__   s   
zMarket.__init__r   sessionbinance_pricereturnc           
      C   s  t dD ]}z|jt d| j dtd }|d d }t|d }|d |d | _| _z2| j	j
t| j| j	jt| jd	}tjt|d
td }|dr`t|d | _d| _W W  dS W n	 tyj   Y nw |dkr|| _d| _td|dd W  dS td W  dS  tttfy }	 z'td|d  d|	  |  |  |jt td|  W Y d }	~	qd }	~	w ty }	 ztd|d  d|	  td|  W Y d }	~	qd }	~	ww dS )N   /
   timeoutheadersmarketsr   clobTokenIdsr   )symboleventStartTimevariantendDate   )paramsr   r    	openPrice
polymarketTbinancez  [strike] usando Binance $z,.2fz (polymarket.com bloqueado)z-[market] tokens OK pero sin strike disponibleFz[market] intento z/8 (conn):    z/8: )rangegetr   r   r   jsonloadsr   r   r   price_symbolr   r	   price_variantr   requestsr   floatr   r   	ExceptionprintConnectionErrorConnectionResetErrorOSErrorcloser   r    updatetimesleep)
r   r   r   attemptrmtokensr(   prer   r   r   
fetch_data   sb   

zMarket.fetch_dataNc                 C   s  t dD ]}z|jt d| j dtd }|d d }|dd}|d	p*d
 }|r3|dkr7W  dS |d}|d}t|trKt	|}t|trUt	|}|ra|rat
|t
|kreW  dS d}	t|D ]\}
}zt|dkr{|
}	W  nW qk ttfy   Y qkw |	du rW  dS t||	   }|drW  dS |drW  dS W  dS  tttfy } z%td|d  d|  |  |  |jt td W Y d}~qd}~w ty } ztd|d  d|  td W Y d}~qd}~ww dS )u   Outcome oficial de Polymarket via Gamma API.
        NUNCA infiere — solo devuelve Up/Down cuando el mercado está resuelto.
           r   r   r   r!   r   closedFumaResolutionStatus resolvedNoutcomesoutcomePricesgGz?upUpdownDownz[outcome] intento r   z/3 (conn): z/3: r,   )r-   r.   r   r   r   r/   lower
isinstancestrr0   len	enumerater4   	TypeError
ValueErrorstrip
startswithr7   r8   r9   r6   r:   r   r    r;   r<   r=   r5   )r   r   r>   r?   r@   rF   umarJ   priceswin_idxiplabelrC   r   r   r   fetch_outcomeG   sf   







zMarket.fetch_outcome)r   )__name__
__module____qualname__intr   r   r3   Sessionr4   boolrD   rR   r_   r   r   r   r   r   
   s    

2r   )__doc__r/   r<   r3   configr   r   r   r   r   r   r   r   r   r   <module>   s    