o
    >h*                     @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlmZ ej	s0e
d e
d ed d dlmZmZmZmZmZmZ d d	lmZmZmZmZmZmZ d d
lmZ d dlZd dlZd dlZd dlZd dlm Z  d dl!Z!d dl"Z"d dl#Z#d dl$Z$d dl%Z%d dl&Z'd dl(Z(e()  d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dlm;Z;m<Z<m=Z=m>Z> d dlm?Z?m@Z@mAZA d dlmBZBmCZC d dlDmEZE d dlFmGZGmHZHmIZI g dZJG dd de3ZKdd ZLdd ZMeNd kr
eM  dS dS )!    N)EnvironmentFileSystemLoader)xbr)__version__z3
You must install the [xbr] extra to use xbrnetworkz)For example, "pip install autobahn[xbr]".   )XBR_DEBUG_TOKEN_ADDRXBR_DEBUG_NETWORK_ADDRXBR_DEBUG_DOMAIN_ADDRXBR_DEBUG_CATALOG_ADDRXBR_DEBUG_MARKET_ADDRXBR_DEBUG_CHANNEL_ADDR)XBR_DEBUG_TOKEN_ADDR_SRCXBR_DEBUG_NETWORK_ADDR_SRCXBR_DEBUG_DOMAIN_ADDR_SRCXBR_DEBUG_CATALOG_ADDR_SRCXBR_DEBUG_MARKET_ADDR_SRCXBR_DEBUG_CHANNEL_ADDR_SRC)FbsRepository)pformat)reactor)inlineCallbacks)deferToThread)ReactorNotRunning)ApplicationSessionApplicationRunner)CBORSerializer)
cryptosign)ApplicationError)pack_uint256unpack_uint256sign_eip712_channel_openmake_w3)sign_eip712_member_registersign_eip712_market_createsign_eip712_market_join)	ActorTypeChannelType)load_or_create_profile)hltypehlidhlval)version
get-memberregister-memberregister-member-verify
get-marketcreate-marketcreate-market-verify	get-actorjoin-marketjoin-market-verifyget-channelopen-channelzclose-channeldescribe-schemacodegen-schemac                   @   s   e Zd ZdZd0d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dd Zdd Zed0ddZedd Z		d1d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dS )2Clientz
tls-uniqueNc                 C   s   t | | d| _d| _|jdd }|r?|jr?t|jtkr&t	|jdks(J |j| _
tj| j
| _| jjd| jjd ntd| _
tj| j
| _| jd |rd|jrd| | | jd nd | _d | _d | _d | _| jd	 d
| _d S )Ni    profile    z8WAMP-Cryptosign keys with public key {public_key} loaded)
public_keyz)WAMP-Cryptosign keys initialized randomlyz XBR ETH keys loaded from profilezXBR ETH keys left unsetT)r   __init___default_gas	_chain_idextragetcskeytypebyteslen
_cskey_rawr   CryptosignKey
from_bytes_keyloginfor=   osurandomethkeyset_ethkey_from_profile_ethkey_raw_ethkey_ethadr_ethadr_raw_running)selfconfigr;    rX   q/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/xbr/_cli.pyr>   `   s*   
 


zClient.__init__c                 C   s   t |jtksJ dt |jt|jdks"J dt|j|j| _tj| j| _	t
j| j	j | _t| jdd | _| jjd| jd dS )z3

        :param profile:
        :return:
        zBset_ethkey_from_profile::profile invalid type "{}" - must be bytesr<   z?set_ethkey_from_profile::profile invalid length {} - must be 32   Nz%ETH keys with address {ethadr} loaded)ethadr)rD   rO   rE   formatrF   rQ   eth_keyskeys
PrivateKeyrR   web3Web3toChecksumAddressr=   to_canonical_addressrS   binasciia2b_hexrT   rK   rL   )rV   r;   rX   rX   rY   rP      s"   zClient.set_ethkey_from_profilec                 C   s~   | j jdkr*| j d d | jd}| jjdt| j jd | j| j jdg|d d S | jjdt| j jd | | j j d S )N
xbrnetwork)pubkey	trustroot	challengechannel_bindingzTClient connected, now joining realm "{realm}" with WAMP-cryptosign authentication ..)realmr   )authmethods	authextrazDClient connected, now joining realm "{realm}" (no authentication) ..)	rW   rk   rJ   r=   CHANNEL_BINDINGrK   rL   r)   join)rV   rm   rX   rX   rY   	onConnect   s   

zClient.onConnectc                 C   sB   |j dkr| jj|| jjj| jd | jd}|S td	|j )Nr   )
channel_idchannel_id_typez*unable to process authentication method {})
methodrJ   sign_challenge	transporttransport_detailsrq   rB   rn   RuntimeErrorr\   )rV   ri   signed_challengerX   rX   rY   onChallenge   s   
zClient.onChallengec              
      s   | j jdt|jt|jt|jt|j|d d| jjv r+t	
| jjd | |f d| jjv r{zDz|jdkrA| |I d H  n| |I d H  W n tyg } z| j   || jjd< W Y d }~nd }~ww W |   d S W |   d S |   w d S )NzbOk, client joined on realm "{realm}" [session={session}, authid="{authid}", authrole="{authrole}"])rk   sessionauthidauthroledetailsreadycommandrf   error)rK   rL   r)   rk   rz   r{   r|   rW   rA   txaioresolve_do_xbrnetwork_realm_do_market_realm	Exceptionfailureleave)rV   r}   erX   rX   rY   onJoin   s6   

zClient.onJoinc                 C   sX   | j jdt|jd d| _|jdkr&| jr(| jjr*| jj  |   d S d S d S d S )Nz%Client left realm (reason="{reason}"))reasonFzwamp.close.normal)	rK   rL   r*   r   rU   rW   runnerstop
disconnect)rV   r}   rX   rX   rY   onLeave   s   
zClient.onLeavec                 C   s0   | j d zt  W d S  ty   Y d S w )NzClient disconnected)rK   rL   r   r   r   )rV   rX   rX   rY   onDisconnect   s   zClient.onDisconnectc                    s  | j jd }|jdkra| jd |dv sJ |dkr'| | jI d H  d S |dkrB| j jd }| j jd }| ||I d H  d S |d	kr]| j jd
 }| j jd }| ||I d H  d S J dt	
|jdd  }|dv sqJ |dkr| | jI d H  d S |dkr| j jd }| ||I d H  d S |dkrd| j jv r| j jd r| j jd }nd }d| j jv r| j jd r| j jd }	n| j}	| ||	I d H  d S |dkr| j jd }| j jd }
| j jd }| j jd }| j jd }| j jd }| j jd }| j jd }| j|||
||||||d	I d H  d S |dkr4| j jd
 }| j jd }| |||I d H  d S |dkrQ| j jd }| j jd }| |||I d H  d S |d krn| j jd
 }| j jd }| |||I d H  d S J d)!Nr   	anonymousz#not yet a member in the XBR network)r,   r-   r.   r,   r-   usernameemailr.   vactionvcodeFshould not arrive here   )r,   r/   r0   r1   r2   r3   r4   r/   marketr2   actorr0   marketmakermarket_titlemarket_labelmarket_homepagemarket_provider_securitymarket_consumer_security
market_fee)titlelabelhomepageprovider_securityconsumer_securityr   r1   r3   
actor_typer4   )rW   rA   r|   rK   rL   _do_get_memberrT   _do_onboard_member_do_onboard_member_verifyuuidUUIDr{   _do_get_market_do_get_actor_do_create_market_do_create_market_verify_do_join_market_do_join_market_verify)rV   r}   r   r   r   vaction_oidvaction_code
member_oid
market_oidr   r   r   r   r   r   r   r   r   rX   rX   rY   r      st   




zClient._do_xbrnetwork_realmc           
         s4  | j jd }d|j|j|jd}t|| _t| j | j jd }|dv s(J |dkrb| j jd }| j jd }| j jd	 }|t	j
krN| ||I d H  d S |t	jkr^| ||I d H  d S J d|dkr| j jd }| j jd put }| j jd	 }| j jd }| j jd }	| |||||	I d H  d S J d)Nr;   infura)rD   networkkeysecretr   )r6   r5   r5   r   delegatechannel_typeFr   r6   channelamount)rW   rA   infura_network
infura_keyinfura_secretr!   _w3r   setProviderr&   PAYMENT_do_get_active_payment_channelPAYING_do_get_active_paying_channelr   uuid4_do_open_channel)
rV   r}   r;   blockchain_gatewayr   r   r   r   channel_oidr   rX   rX   rY   r     s8   


zClient._do_market_realmc                    s$  |  d|I d H }|r|  d|I d H }tj|d |d< tj|d d|d< tjt|d d d|d d< tjt|d d	 d|d d	< t	|d
 d|d
< |d }dddddd}|
|d |d< | jjdt|d t|d t|d d |S | jjdtt| d d S )Nxbr.network.is_member xbr.network.get_member_by_walletaddressoidrE   balanceethetherr   creatednslevelACTIVEVERIFIEDRETIREDPENALTYBLOCKED)r   rZ      r:      zZMember {member_oid} found for address 0x{member_adr} - current member level {member_level})member_levelr   
member_adr9Address 0x{member_adr} is not a member in the XBR networkr   )callr`   ra   rb   r   r   fromWeir   np
datetime64rB   rK   rL   r*   r)   warnrd   b2a_hexdecode)rV   r   	is_membermember_datar   MEMBER_LEVEL_TO_STRrX   rX   rY   r   D  s4   ""



zClient._do_get_memberc                    sD  |  d|I d H }|r|  d|I d H }tj|d d}tj|d }|d }tjt|d d d	}tjt|d d
 d	}| jj	dt
|t|t|t|d |r^|jg}	n
|  d|jI d H }	|	r|	D ]}|  d||d I d H }
|
D ]}tj|d |d< t|d d|d< |d rt|d nd |d< tj|d d|d< |d rtjt|d d	nd |d< |d rdt|d   nd |d< |d rdt|d   nd |d< |d }dddd}||d |d< | jj	dt
tj|dt|d q}qmd S | j	d d S | jjd t| d! d S )"Nr   r   r   r   r   r   r   r   r   r   zFound member with address {member_adr} (member level {member_level}, balances: {member_balance_eth} ETH, {member_balance_xbr} XBR))r   r   member_balance_ethmember_balance_xbrz xbr.network.get_markets_by_actorzxbr.network.get_actor_in_marketr   	timestampr   joinedr   security	signature0xtidr   PROVIDERCONSUMERPROVIDER_CONSUMER)r   rZ   r   z1Actor is joined to market {market_oid}:

{actor}
)r   r   z&Member is not yet actor in any market!r   r   )r   r   r   r`   ra   rb   r   r   rK   rL   r)   r*   rE   r   r   rd   r   r   rB   r   r   )rV   r   	actor_adrr   r   	actor_oidactor_levelactor_balance_ethactor_balance_xbrmarket_oidsresultr   ACTOR_TYPE_TO_STRrX   rX   rY   r   g  sj   
&
zClient._do_get_actorc                 c   s   t | j }d}| j}| j}|j }| dV }	| dV }
|	d }t |	d dd  }|
d d }|	d	 d
 }||||d}t	|}t
 }|| tt| d}t|||||||}z| d||||||||||||V }W n0 ty } z| jjd|d | dt| W Y d }~d S d }~w ty } z|d }~ww t|tksJ d|v rt|d tkr|d dksJ d|v r|d dksJ d|v rt|d tkrt|d dksJ tj|d d}| jjd|d |S )Nmetamaskxbr.network.get_configxbr.network.get_statusverifying_chain_idverifying_contract_adrrZ   blocknumbereulahash)member_usernamemember_emailclient_pubkeywallet_typesha2-256zxbr.network.onboard_memberApplicationError: {error}r   z
wamp.errorr   r   actiononboard_memberr      r   z9On-boarding member - verification "{vaction_oid}" createdr   ) rd   re   rJ   r=   rR   rQ   rc   r   cbor2dumpshashlibsha256update	multihashto_b58_stringencodedigestr"   r   rK   r   r   strr   rD   dictintrE   rF   r   r   rL   )rV   r  r  member_passwordr  r	  
wallet_key
wallet_raw
wallet_adrrW   statusverifyingChainverifyingContract
registeredr  profile_objprofile_datahr;   r   r   r   r   rX   rX   rY   r     s\   




(,zClient._do_onboard_memberc              
   c   s    | j jd||d z| d|j|V }W n ty+ } z
| j jd|d |d }~ww t|tks4J d|v rHt|d tkrHt|d dksJJ d|v r\t|d t	kr\|d d	ks^J |d }| j jd
t
tj|dtdt|d   d |S )NzPVerifying member using vaction_oid={vaction_oid}, vaction_code={vaction_code} ..r   r   z!xbr.network.verify_onboard_memberr  r  r   r  r   r   zUSUCCESS! New XBR Member onboarded: member_oid={member_oid}, transaction={transaction}r   r   transaction)r   r)  )rK   rL   r   rE   r   r   rD   r  rF   r  r)   r   r   r*   rd   r   r   )rV   r   r   r   r   r   rX   rX   rY   r     s(   ,(z Client._do_onboard_member_verifyr   c
                    s  |  d|jI d H }
|
d }|  dI d H }|d }t|d dd  }t|d d dd  }|  d	I d H }|d
 d }|  dI d H }t|}| jjd|d |  d|jI d H }t|}| jjd|d dt	dd
d}t }|| ttt
| d}|||||j|jd}t|}t }|| tt
| d}t| j|||||j|||||||	}t|}t|}t|	}	|||d}|  d|j|j|||||||||||	||I d H }| jjdt|d t|tksJ d|v rt|d tkr|d dksJ d|v r$|d dks&J d|v r=t|d tkr=t|d d ks?J tj|d d!}| jjd"|d# d S )$Nxbr.network.get_memberr   r   r   r  rZ   	contractsxbrtokenr   r  r  xbr.network.find_marketsz)Total markets before: {cnt_market_before})cnt_market_before xbr.network.get_markets_by_ownerz.Market for owner: {cnt_market_by_owner_before}cnt_market_by_owner_beforez&these are my market terms (randint={})r   i  utf8r
  )chain_idblock_numbercontract_adrr   r   r   )r   r   r   zxbr.network.create_marketzLSUCCESS: Create market request submitted: 
{createmarket_request_submitted}
)createmarket_request_submittedr   r  create_marketr   r  r   z8SUCCESS: New Market verification "{vaction_oid}" createdr  )r   rE   rd   re   rF   rK   rL   r\   randomrandintr  r  r  r  r  r  r  r  r  r  r#   rQ   r   r   rD   r  r  r   r   )rV   r   r   r   r   r   r   r   r   r   r   r   rW   r"  r#  coin_adrr!  r4  resr.  r1  
terms_datar'  
terms_hashmeta_obj	meta_data	meta_hashr   
attributesr6  r   rX   rX   rY   r     s   








zClient._do_create_marketc           
         s  | j jd||d | d|j|I d H }| j jdt|d t|tks'J d|v r;t|d tkr;t|d dks=J d|v rOt|d tkrO|d d	ksQJ |d }| j jd
t	j
|dt|d | dI d H }| j jdt|d t|}| j jd|d ||v sJ dt	j
|dt|| d|jI d H }| j jdt|d t|}| j jd|d ||v sJ dt	j
|dt||D ]}| j jd|d | jd|ddI d H }	| j jdt|	d qd S )NzWVerifying create market using vaction_oid={vaction_oid}, vaction_code={vaction_code} ..r(  z xbr.network.verify_create_marketzBCreate market request verified: 
{create_market_request_verified}
)create_market_request_verifiedr   r  r   r   zJSUCCESS! New XBR market created: market_oid={market_oid}, result=
{result}r   )r   r   r-  z3SUCCESS - find_markets: found {cnt_markets} markets)cnt_marketsz'Total markets after: {cnt_market_after})cnt_market_afterzFexpected to find market ID {}, but not found in {} returned market IDsr/  z;SUCCESS - get_markets_by_owner: found {cnt_markets} marketsz-Market for owner: {cnt_market_by_owner_after}r0  z2xbr.network.get_market(market_oid={market_oid}) ..r   xbr.network.get_marketT)include_attributesz*SUCCESS: got market information

{market}
)r   )rK   rL   r   rE   r   rD   r  rF   r  r   r   r\   )
rV   r   r   r   rB  r   r   rD  cnt_market_by_owner_afterr   rX   rX   rY   r   Q  sh   



zClient._do_create_market_verifyc                    s
  |  d|jI d H }|d }|  d|jI d H }|ry|d |kr(| jd n| jjdttj|d d tj	|d d	|d< tj|d |d< tj|d
 |d
< tj|d |d< t
|d d|d< | jjdt|t|d d S | jjdt|d d S )Nr*  r   rF  ownerz You are market owner (operator)!zMarked is owned by {owner})rI  r   r   makercoinr   r   z+Market {market_oid} information:

{market}
)r   r   zNo market {market_oid} found!rE  )r   rE   rK   rL   r)   r`   ra   rb   r   r   r   r   r   r   )rV   r   r   r   r   r   rX   rX   rY   r   ~  s"    
zClient._do_get_marketc                    s  |t jt jt jfv sJ | d|jI d H }|d }| dI d H }|d }t|d dd  }| dI d H }	|	d d	 }
i }t	|}t
 }|| tt| d
}t| j||||
|j||}| d|j|j||
|||||
I d H }tj|d d}| jjd|d d S )Nr*  r   r   r   r  rZ   r   r  r  r
  zxbr.network.join_marketr   r   zESUCCESS! XBR market join request submitted: vaction_oid={vaction_oid}r  )r%   r   r   r   r   rE   rd   re   r  r  r  r  r  r  r  r  r  r$   rQ   r   r   rK   rL   )rV   r   r   r   r   r   rW   r"  r#  r!  r4  r>  r?  r'  r@  r   request_submittedr   rX   rX   rY   r     s.   



zClient._do_join_marketc                    s@   |  d|j|I d H }|d }|d }| jjd|||d d S )Nzxbr.network.verify_join_marketr   r   zeSUCCESS! XBR market joined: member_oid={member_oid}, market_oid={market_oid}, actor_type={actor_type})r   r   r   )r   rE   rK   rL   )rV   r   r   r   request_verifiedr   r   rX   rX   rY   r     s   
zClient._do_join_market_verifyc                       |  d|I d H }| jjdt|d |rP| jjdtt|d d d |  d|d	 I d H }| jjd
t|d | jjdtt|d d |d d d S | jd d S )Nz*xbr.marketmaker.get_active_payment_channel	{channel}r   z5Active buyer (payment) channel found: {amount} amountr        NZor   z+xbr.marketmaker.get_payment_channel_balancer   	{balance}ECurrent off-chain amount remaining: {remaining} [sequence {sequence}]	remainingseqrU  sequencez(No active buyer (payment) channel found!r   rK   debugr   rL   r  r   rV   r   delegate_adrr   r   rX   rX   rY   r        
z%Client._do_get_active_payment_channelc                    rN  )Nz)xbr.marketmaker.get_active_paying_channelrO  rP  z5Active seller (paying) channel found: {amount} amountr   rQ  rR  z*xbr.marketmaker.get_paying_channel_balancer   rS  rT  rU  rV  rW  z(No active seller (paying) channel found!rY  r[  rX   rX   rY   r     r]  z$Client._do_get_active_paying_channelc                    s  | j }| jj }| dI d H }t|d dd  }	t|d dd  }
|d }t|d dd  }| dI d H }|d d	 }|d
kr|tjkrU|}t	j
j}n|tjkra|	}t	j
j}nJ dzt| j|||I d H }| jjd|d W n ty } z| j  |d }~ww t||||||j|j|||	|
|}d }| d||j|j||||||	|
t|||I d H }| jjdt|d d S )Nzxbr.marketmaker.get_configr   rZ   rI  r   r  zxbr.marketmaker.get_statusr  r  r   Fr   z*transaction submitted, txn_hash={txn_hash})txn_hashzxbr.marketmaker.open_channelz3Channel open request submitted:

{channel_request}
)channel_request)rQ   rR   r=   rc   r   rd   re   r&   r   r   
xbrchannelr   r   r   _send_AllowancerK   rL   r   r   r    rE   r   r   )rV   r   r   r   r   r   
member_keyr   rW   r   	recipientr   r  r!  current_block_numberfrom_adrto_adrr^  r   r   rA  r_  rX   rX   rY   r     sN   











zClient._do_open_channelc           
      C   s   | j }| jdd}| j}| jjj|dd}| jjdt| j	|d t
jj|||||| j|d}| jjdt| j	|d	 | jjjj|| jd
}| jjdt| j	tt|j d | jj|j}	t|	}	| jjdt| j	tt|	 d |	S )N10gweipending)block_identifierz9{func}::[1/4] - Ethereum transaction nonce: nonce={nonce})funcnonce)fromgasgasPricechainIdrl  zQ{func}::[2/4] - Ethereum transaction created: raw_transaction=
{raw_transaction}
)rk  raw_transaction)private_keyzF{func}::[3/4] - Ethereum transaction signed: signed_txn=
{signed_txn}
)rk  
signed_txnzE{func}::[4/4] - Ethereum transaction submitted: txn_hash=0x{txn_hash})rk  r^  )r?   r   toWeirS   r   getTransactionCountrK   rL   r(   ra  r   r,  	functionsapprovebuildTransactionr@   accountsign_transactionrQ   r*   rd   r   rawTransactionr   sendRawTransactionrE   )
rV   re  rf  r   rn  ro  rl  rq  rs  r^  rX   rX   rY   ra    sD   zClient._send_Allowance)N)NNNr   r   r   )__name__
__module____qualname__rn   r>   rP   rp   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra  rX   rX   rX   rY   r9   [   s8    
	
E.#7@

\-1r9   c                   C   s   t d t dtdt  t d t d t dttt t dttt t dtt	t
 t dttt t d	ttt t d
ttt t d d S )N z XBR CLI {}
vz   Contract addresses:
z"      XBRToken   : {} [source: {}]z"      XBRNetwork : {} [source: {}]z"      XBRDomain  : {} [source: {}]z"      XBRCatalog : {} [source: {}]z"      XBRMarket  : {} [source: {}]z"      XBRChannel : {} [source: {}])printr\   r*   r   r)   r   r   r   r   r	   r   r
   r   r   r   r   r   rX   rX   rX   rY   print_version3  s   r  c               
   C   s  t  } | jdttdddd | jdddd	d
 | jddtdd | jdddtdd | jdddtdd ddg}| jdddtd|d | jddtd d!d" | jd#d$td%d&d" | jd'd(td)d | jd*d+td,d | jd-d.td d/d" | jd0d1td d2d" | jd3d4td d5d" | jd6d7td d8d" | jd9d:td d;d" | jd<d=td d>d" | jd?d@td dAd" | jdBdCtd dAd" | jdDdEtd dAd" | jdFdGtd dHd" | jdIdJtttj	tj
tjgd dKdL | jdMdNtd dOd" | jdPdQtd dRd" | jdSdTtd dUd" | jdVdWtttjtjgd dXdL | jdYdZtd d[d" | jd\d]td d^d" |  }|jd_kr5t  d S |jd`krzt|jda}||j t|jt|j t|j }tdbt|tt|jtt|jtt|j t  |  d S |jdckrt|jda}||j t|jddde tdfdg}t |dhdidj}t!|dddddk}t"j#$|j%st"&|j% |'||j%d d S |jd u s|jdkrtdldm(t t)*dn t+|j,|j-|j.|j/do}|j0rt1j2dpdq nt1j2drdq t13 }	|	j4dst5dtt6 du |	j4dvt|j7t|j#dw i dx|d|jd.|j.d1|j/d(|j8d+|j9d4|j:r8t;<|j:nd d7|j=d:|j>d=|j?dy|j@pLdndz|jApSdndE|jBpZdndG|jCrjtDE|jCd{d  nd dJ|jFdN|jGdQ|jHrt;<|jHnd |jIrt;<|jInd |jJ|jKrtDE|jKd{d  nd |jLpdnd|}
tM|jN|jO|
tP gd}}z!|	j4d~t|jN|jOrdt|jO d ndAd |jQtRdid W n tSy } zt| t)*d W Y d }~d S d }~ww t)*dn d S )Nr   noop?zCommand to run)rD   choicesconstnargshelpz-dz--debug
store_truezEnable debug output.)r  r  z-oz--outputzCode output folder)rD   r  z-sz--schemaschemaz.FlatBuffers binary schema file to read (.bfbs))destrD   r  z-bz--basemodule
basemodulezRender to this base modulepythonjsonz-lz
--languagelanguagez"Generated code language, one of {}z--urlurlzwss://planet.xbr.network/wsz8The router URL (default: "wss://planet.xbr.network/ws").)r  rD   defaultr  z--realmrk   rf   z*The realm to join (default: "xbrnetwork").z--ethkeyrO   z5Private Ethereum key (32 bytes as HEX encoded string)z--cskeyrC   zKPrivate WAMP-cryptosign authentication key (32 bytes as HEX encoded string)z
--usernamer   z)For on-boarding, the new member username.z--emailr   z.For on-boarding, the new member email address.z--marketr   z*For creating new markets, the market UUID.z--market_titler   z+For creating new markets, the market title.z--market_labelr   z+For creating new markets, the market label.z--market_homepager   z.For creating new markets, the market homepage.z--provider_securityr   r  z--consumer_securityr   z--market_feer   z--marketmakerr   z3For creating new markets, the market maker address.z--actor_typer   zDActor type: PROVIDER = 1, CONSUMER = 2, PROVIDER_CONSUMER (both) = 3)r  rD   r  r  r  z--vcoder   z4For verifications of actions, the verification UUID.z	--vactionr   zRFor verifications of actions (on-board, create-market, ..), the verification code.z	--channelr   z+For creating new channel, the channel UUID.z--channel_typer   z6Channel type: Seller (PAYING) = 1, Buyer (PAYMENT) = 2z
--delegater   z/For creating new channel, the delegate address.z--amountr   zzAmount to open the channel with. In tokens of the market coin type, used as means of payment in the market of the channel.r+   r7   )r  zOok, loaded {} types ({} structs and tables, {} enums and {} service interfaces)r8   T)r^   autobahnzxbr/templateszutf-8F)encodingfollowlinks)loadertrim_blockslstrip_blocksz!no command given. select from: {}z, r   )default_urldefault_realmdefault_usernamedefault_emailrZ  )r   rL   zXBR CLI {version}r  )r+   z$Profile {profile} loaded from {path})r;   pathr;   r   r   rZ   )r   r   r   r   )r  rk   rA   serializersz Connecting to "{url}" {realm} ..z
at realm "")r  rk   )auto_reconnectr   )TargparseArgumentParseradd_argumentr  	_COMMANDSr\   r  sortedr%   r   r   r   r&   r   r   
parse_argsr   r  r   r  loadr  rF   objsenumsservicesr  r*   print_summarysummarypkg_resourcesresource_filenamer   r   rM   r  isdiroutputmkdirrenderro   sysexitr'   r  rk   r   r   rZ  r   start_loggingmake_loggerrL   r)   r   namerO   rC   r   r   r   r   r   r   r   r   r   r   rd   re   r   r   r   r   r   r   r   r   network_urlnetwork_realmr   runr9   r   )parser
_LANGUAGESargsrepototal_count	templatesr  envr;   rK   rA   r   r   rX   rX   rY   _mainA  s  


	
 
r  __main__)OrM   r  r  jinja2r   r   r  r   r   HAS_XBRr  r  autobahn.xbr._abir   r   r	   r
   r   r   r   r   r   r   r   r   autobahn.xbrr   r   rd   r  r8  pprintr   r]   r`   r  r  r  numpyr   r   use_twistedtwisted.internetr   twisted.internet.deferr   twisted.internet.threadsr   twisted.internet.errorr   autobahn.twisted.wampr   r   autobahn.wamp.serializerr   autobahn.wampr   autobahn.wamp.exceptionr   r   r   r    r!   r"   r#   r$   r%   r&   autobahn.xbr._configr'   autobahn.utilr(   r)   r*   r  r9   r  r  r}  rX   rX   rX   rY   <module>   sj   
       ]  

