
    af                     >    d dl Z d dlZd dlmZ  G d de          ZdS )    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dS )SimpleBlockchainz0
    Simple Ethereum blockchain XBR client.
    r            Nc                 d    t          j                    | _        || _        d| _        | j        J dS )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     J/var/www/html/env/lib/python3.11/site-packages/autobahn/xbr/_blockchain.py__init__zSimpleBlockchain.__init__4   s7     $&&$00000    c                    | j         J | j        r7t          j        t          j                            | j                            }nddlm} |                                sEd                    | j        pd          }| j	        
                    |           t          |          t          d                    |j        j        | j        pd                     || _         t          j        | j                    dS )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    x= 	%4911$-@@AABB %$$$$$ ~~ 	^>EEdmF]W]^^DHMM$t$$$<CCBJDVDHMD[U[] ] ^ ^ ^  	!!!!!r   c                 &    | j         J d| _         dS )z-
        Stop the blockchain client.
        N)r   r   s    r   stopzSimpleBlockchain.stopZ   s     x###r   c                 8   K   d }|                      ||          S )z5

        :param market_id:
        :return:
        c                     t           j        j                            |                                           }|r|dk    rd S 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   sO    N,;;JGGLLNNE E%QQQt U r   r   )r   	market_idr2   s      r   get_market_statusz"SimpleBlockchain.get_market_statusb   s.      	 	 	 $$%7CCCr   c                 8   K   d }|                      ||          S )zj

        :param domain_id:
        :type domain_id: bytes

        :return:
        :rtype: dict
        c                     t           j        j                            |                                           }|t
          j        k    rd S |t
          j        k    rddiS |t
          j        k    rddiS d S )NstatusACTIVECLOSED)	r   r-   r.   getDomainStatusr0   r   DomainStatus_NULLDomainStatus_ACTIVEDomainStatus_CLOSED)
_domain_idr8   s     r   _get_domain_statusz>SimpleBlockchain.get_domain_status.<locals>._get_domain_status{   sw    ^-==jIINNPPF);;;t+??? (+++??? (++ @?r   r3   )r   	domain_idr@   s      r   get_domain_statusz"SimpleBlockchain.get_domain_statusr   s.      	, 	, 	, $$%7CCCr   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                      rD   rE   rG   s     r   get_actor_statusz!SimpleBlockchain.get_actor_status   rJ   r   c                     t                      rD   rE   rG   s     r   get_delegate_statusz$SimpleBlockchain.get_delegate_status   rJ   r   c                     t                      )zn

        :param channel_adr:
        :type channel_adr: bytes

        :return:
        :rtype: dict
        rE   )r   channel_adrs     r   get_channel_statusz#SimpleBlockchain.get_channel_status   rJ   r   c                    K   t                    t          k    rt                    dk    sJ fd}|                     |          S )zl

        :param member_adr:
        :type member_adr: bytes

        :return:
        :rtype: dict
           c                    t           j        j                                                                      }|sd S t           j        j                                                                      }|r|                                dk    rd S t           j        j                                                                      }|r|                                dk    rd }||dS )N )eulaprofile)r   r-   r.   getMemberLevelr0   getMemberEulastripgetMemberProfile)_member_adrlevelrV   rW   
member_adrs       r   _get_member_statusz>SimpleBlockchain.get_member_status.<locals>._get_member_status   s    N,;;JGGLLNNE t~/==jIINNPP  tzz||r114.2CCJOOTTVV #'--//R"7"7"G &  r   typebyteslenr   )r   r^   r_   s    ` r   get_member_statusz"SimpleBlockchain.get_member_status   sd       J5((S__-B-B-BB	 	 	 	 	 $$%7DDDr   c                     K   t          |          t          k    rt          |          dk    sJ  fd}                     ||          S )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
        rS   c                     j         j                            |           }t          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   sS    (,11$77K,0::4@@EEGGK""  r   r`   )r   account_adrrp   s   `  r   get_balanceszSimpleBlockchain.get_balances   se       K  E))c+.>.>".D.D.DD	 	 	 	 	 $$]K@@@r   c                 H    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   rk   addressr-   r'   s    r   get_contract_adrsz"SimpleBlockchain.get_contract_adrs   s#     ,.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   rB   rI   rL   rN   rQ   rd   rr   rw    r   r   r   r       s(         MOMM
C
1 
1 
1 
1" " "4  D D D D D D&	$ 	$ 	$	$ 	$ 	$	$ 	$ 	$	$ 	$ 	$E E E8A A A,
 
 
 
 
r   r   )r   r
   autobahnr   objectr   r   r   r   <module>r      si   6        N
 N
 N
 N
 N
v N
 N
 N
 N
 N
r   