
    NgR
                         d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ  G d de	          Z G d d	e          ZdS )
    N)OptionalTypeUnion)AsyncCallbackManagerForToolRun)	BaseModelField)AINBaseToolOperationTypec                       e Zd ZU dZ ed          Zeed<    edd          Ze	ed<    edd          Z
eeee	eef                  ed	<   dS )
ValueSchemazSchema for value operations..typezBlockchain reference path)descriptionpathNzValue to be set at the pathvalue)__name__
__module____qualname____doc__r   r   r
   __annotations__r   strr   r   r   intfloatdict     e/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/ainetwork/value.pyr   r      s         &&%**D-$$$c'BCCCD#CCC49E75 5 5E8E#sE4/01     r   r   c                       e Zd ZU dZdZeed<   dZeed<   eZ	e
e         ed<   	 	 dded	ed
eeeeeef                  dee         def
dZdS )AINValueOpszTool for value operations.AINvalueOpsnamea  
Covers the read and write value for the AINetwork Blockchain database.

## SET
- Set a value at a given path

### Example
- type: SET
- path: /apps/langchain_test_1/object
- value: {1: 2, "34": 56}

## GET
- Retrieve a value at a given path

### Example
- type: GET
- path: /apps/langchain_test_1/DB

## Special paths
- `/accounts/<address>/balance`: Account balance
- `/accounts/<address>/nonce`: Account nonce
- `/apps`: Applications
- `/consensus`: Consensus
- `/checkin`: Check-in
- `/deposit/<service id>/<address>/<deposit id>`: Deposit
- `/deposit_accounts/<service id>/<address>/<account id>`: Deposit accounts
- `/escrow`: Escrow
- `/payments`: Payment
- `/sharding`: Sharding
- `/token/name`: Token name
- `/token/symbol`: Token symbol
- `/token/total_supply`: Token total supply
- `/transfer/<address from>/<address to>/<key>/value`: Transfer
- `/withdraw/<service id>/<address>/<withdraw id>`: Withdraw
r   args_schemaNr   r   r   run_managerreturnc                 <  K   ddl m} 	 |t          j        u rU|t	          d          | j        j                            |                               ||                     d {V }nY|t          j	        u r8| j        j                            |          
                                 d {V }nt	          d| d          t          j        |d	          S # t          $ r5}t          j        |          j         d
t#          |           cY d }~S d }~ww xY w)Nr   )ValueOnlyTransactionInputz&'value' is required for SET operation.)r   )transactionInputzUnsupported 'type': .F)ensure_asciiz: )	ain.typesr%   r
   SET
ValueError	interfacedbrefsetValueGETgetValuejsondumps	Exceptionbuiltinsr   r   r   )selfr   r   r   r"   r%   reses           r   _arunzAINValueOps._arun>   sl      	877777	<}(((=$%MNNN N-11$77@@%>%>U%K%K%K A         *** N-11$77@@BBBBBBBB !?!?!?!?@@@:c6666 	< 	< 	<mA&&/;;3q66;;;;;;;;	<s   CC 
D&*DDD)NN)r   r   r   r   r    r   r   r   r   r!   r   r   r
   r   r   r   r   r   r   r9   r   r   r   r   r      s         $$D#"K " " "F $/Ki... 9=@D< << < c3t345	<
 <=< 
< < < < < <r   r   )r5   r2   typingr   r   r   langchain_core.callbacksr   pydanticr   r   (langchain_community.tools.ainetwork.baser	   r
   r   r   r   r   r   <module>r>      s      ( ( ( ( ( ( ( ( ( ( C C C C C C % % % % % % % % O O O O O O O O    )   @< @< @< @< @<+ @< @< @< @< @<r   