
    Lf                     6    d dl Z d dlZd dlmZ  G d de      Zy)    N)xbrc                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZddZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)SimpleBlockchainz0
    Simple Ethereum blockchain XBR client.
    r            Nc                 n    t        j                         | _        || _        d| _        | j
                  J y)z

        :param gateway: Optional explicit Ethereum gateway URL to use.
            If no explicit gateway is specified, let web3 auto-choose.
        :type gateway: str
        N)txaiomake_loggerlog_gateway_w3backgroundCaller)selfgateways     S/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/autobahn/xbr/_blockchain.py__init__zSimpleBlockchain.__init__4   s4     $$&$$000    c                 .   | j                   J | j                  r=t        j                  t        j                  j	                  | j                              }nddlm} |j                         sEdj                  | j                  xs d      }| j                  j                  |       t        |      t        dj                  |j                  j                  | j                  xs d             || _         t        j                   | j                          y)zV
        Start the blockchain client using the configured blockchain gateway.
        Nr   )w3z)could not connect to Web3/Ethereum at: {}autoz(connected to network {} at provider "{}")r   r   web3Web3HTTPProvider	web3.autor   isConnectedformatr   warnRuntimeErrorprintversionnetworkr   setProvider)r   r   emsgs      r   startzSimpleBlockchain.start@   s     xx==49911$--@AB % ~~>EEdmmF]W]^DHHMM$t$$<CCBJJDVDVDHMMD[U[] ^  	!r   c                 .    | j                   J d| _         y)z-
        Stop the blockchain client.
        N)r   r   s    r   stopzSimpleBlockchain.stopZ   s     xx###r   c                 4   K   d }| j                  ||      S w)z5

        :param market_id:
        :return:
        c                     t         j                  j                  j                  |       j	                         }|r|dk(  ry d|iS )N*0x0000000000000000000000000000000000000000owner)r   
xbrnetwork	functionsgetMarketOwnercall)
_market_idr,   s     r   _get_market_statusz>SimpleBlockchain.get_market_status.<locals>._get_market_statush   sD    NN,,;;JGLLNEE%QQ U r   r   )r   	market_idr2   s      r   get_market_statusz"SimpleBlockchain.get_market_statusb   s!     	 $$%7CC   c                 4   K   d }| j                  ||      S w)zj

        :param domain_id:
        :type domain_id: bytes

        :return:
        :rtype: dict
        c                     t         j                  j                  j                  |       j	                         }|t
        j                  k(  ry |t
        j                  k(  rddiS |t
        j                  k(  rddiS y )NstatusACTIVECLOSED)	r   r-   r.   getDomainStatusr0   r   DomainStatus_NULLDomainStatus_ACTIVEDomainStatus_CLOSED)
_domain_idr9   s     r   _get_domain_statusz>SimpleBlockchain.get_domain_status.<locals>._get_domain_status{   sq    ^^--==jINNPF);;;+??? (+++??? (++ @r   r3   )r   	domain_idrA   s      r   get_domain_statusz"SimpleBlockchain.get_domain_statusr   s!     	, $$%7CCr6   c                     t               zp

        :param delegate_adr:
        :type delegate_adr: bytes

        :return:
        :rtype: dict
        NotImplementedErrorr   delegate_adrs     r   get_node_statusz SimpleBlockchain.get_node_status        "##r   c                     t               rE   rF   rH   s     r   get_actor_statusz!SimpleBlockchain.get_actor_status   rK   r   c                     t               rE   rF   rH   s     r   get_delegate_statusz$SimpleBlockchain.get_delegate_status   rK   r   c                     t               )zn

        :param channel_adr:
        :type channel_adr: bytes

        :return:
        :rtype: dict
        rF   )r   channel_adrs     r   get_channel_statusz#SimpleBlockchain.get_channel_status   rK   r   c                 ~   K   t              t        k(  rt              dk(  sJ fd}| j                  |      S w)zl

        :param member_adr:
        :type member_adr: bytes

        :return:
        :rtype: dict
           c                    t         j                  j                  j                        j	                         }|sy t         j                  j                  j                        j	                         }|r|j                         dk(  ry t         j                  j                  j                        j	                         }|r|j                         dk(  rd }||dS )N )eulaprofile)r   r-   r.   getMemberLevelr0   getMemberEulastripgetMemberProfile)_member_adrlevelrW   rX   
member_adrs       r   _get_member_statusz>SimpleBlockchain.get_member_status.<locals>._get_member_status   s    NN,,;;JGLLNE~~//==jINNPtzz|r1..22CCJOTTV'--/R"7"G & r   typebyteslenr   )r   r_   r`   s    ` r   get_member_statusz"SimpleBlockchain.get_member_status   sB      J5(S_-BBB	 $$%7DD   :=c                 ~    K   t        |      t        k(  rt        |      dk(  sJ  fd} j                  ||      S w)aY  
        Return current ETH and XBR balances of account with given address.

        :param account_adr: Ethereum address of account to get balances for.
        :type account_adr: bytes

        :return: A dictionary with ``"ETH"`` and ``"XBR"`` keys and respective
            current on-chain balances as values.
        :rtype: dict
        rT   c                     j                   j                  j                  |       }t        j                  j
                  j                  |       j                         }||dS )N)ETHXBR)r   eth
getBalancer   xbrtokenr.   	balanceOfr0   )_adrbalance_ethbalance_xbrr   s      r   _get_balancesz4SimpleBlockchain.get_balances.<locals>._get_balances   sN    ((,,11$7K,,00::4@EEGK"" r   ra   )r   account_adrrr   s   `  r   get_balanceszSimpleBlockchain.get_balances   sB      K E)c+.>".DDD	 $$]K@@rf   c                 l    t         j                  j                  t         j                  j                  dS )z
        Get XBR smart contract addresses.

        :return: A dictionary with ``"XBRToken"``  and ``"XBRNetwork"`` keys and Ethereum
            contract addresses as values.
        :rtype: dict
        )XBRToken
XBRNetwork)r   rm   addressr-   r'   s    r   get_contract_adrsz"SimpleBlockchain.get_contract_adrs   s(     ,,..00
 	
r   )N)__name__
__module____qualname____doc__r=   r>   r?   NodeType_NULLNodeType_MASTERNodeType_CORENodeType_EDGENodeLicense_NULLNodeLicense_INFINITENodeLicense_FREEr   r   r   r%   r(   r5   rC   rJ   rM   rO   rR   re   rt   ry    r   r   r   r       s     MOMM
C
1"4D D&	$	$	$	$E8A,
r   r   )r   r
   autobahnr   objectr   r   r   r   <module>r      s   6   N
v N
r   