U
    •uÄcE  ã                   @   s¢   d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
 eeeeeeeee edœ	dd„Zeeeeeeeeee edœ
dd	„Zeeeeeeeee eed
œ
dd„ZdS )é    )ÚOptionalé   )ÚsignÚrecoverÚ
is_addressÚ
is_bytes16Úis_block_numberÚis_chain_idÚis_eth_privkeyÚis_signature)	ÚchainIdÚverifyingContractÚmemberÚ	publishedÚ	catalogIdÚapiIdÚschemaÚmetaÚreturnc           	      C   sì   t | ƒst‚t|ƒst‚t|ƒs$t‚t|ƒs0t‚t|ƒs<t‚t|ƒsHt‚t|ƒtksXt‚t|ƒtksht‚dddœdddœgdddœdddœd	ddœd
ddœdddœdddœdddœdddœgdœddddœ| |||||||pÞddœdœ}|S )zº

    :param chainId:
    :param verifyingContract:
    :param member:
    :param published:
    :param catalogId:
    :param apiId:
    :param schema:
    :param meta:
    :return:
    ÚnameÚstring)r   ÚtypeÚversionr   Zuint256r   Úaddressr   r   r   Zbytes16r   r   r   )ZEIP712DomainÚEIP712ApiPublishr   ZXBRÚ1)r   r   Ú )r   r   r   r   r   r   r   r   )ÚtypesZprimaryTypeÚdomainÚmessage)r	   ÚAssertionErrorr   r   r   r   Ústr)	r   r   r   r   r   r   r   r   Údata© r#   úic:\users\psant\downloads\hotstarbackend\school\venv\Lib\site-packages\autobahn\xbr\_eip712_api_publish.pyÚ_create_eip712_api_publish    sp    þþûþþþþþþþþãõ.þøÌ@r%   )
Úeth_privkeyr   r   r   r   r   r   r   r   r   c	           
   	   C   s,   t | ƒst‚t||||||||ƒ}	t| |	ƒS )zÏ

    :param eth_privkey: Ethereum address of buyer (a raw 20 bytes Ethereum address).
    :type eth_privkey: bytes

    :return: The signature according to EIP712 (32+32+1 raw bytes).
    :rtype: bytes
    )r
   r    r%   r   )
r&   r   r   r   r   r   r   r   r   r"   r#   r#   r$   Úsign_eip712_api_publishz   s
    
ÿr'   )
r   r   r   r   r   r   r   r   Ú	signaturer   c	           
   	   C   s,   t |ƒst‚t| |||||||ƒ}	t|	|ƒS )z­
    Recover the signer address the given EIP712 signature was signed with.

    :return: The (computed) signer address the signature was signed with.
    :rtype: bytes
    )r   r    r%   r   )
r   r   r   r   r   r   r   r   r(   r"   r#   r#   r$   Úrecover_eip712_api_publish‹   s
    	ÿr)   N)Útypingr   Z_eip712_baser   r   r   r   r   r	   r
   r   ÚintÚbytesr!   Údictr%   r'   r)   r#   r#   r#   r$   Ú<module>   s0   (    ÿZ     ÿ    þ