
    h_                         d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZ  G d dee      Z G d	 d
e      Z G d de      Zy)    N)Enum)ListOptionalTypeUnion)AsyncCallbackManagerForToolRun)	BaseModelField)AINBaseToolc                       e Zd ZdZdZdZy)AppOperationTypez$Type of app operation as enumerator.	SET_ADMIN
GET_CONFIGN)__name__
__module____qualname____doc__r   r        e/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/tools/ainetwork/app.pyr   r      s    .IJr   r   c                   ~    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	   f      ed	<   y)
	AppSchemazSchema for app operations..typez)Name of the application on the blockchain)descriptionappNameNzKA single address or a list of addresses. Default: current session's addressaddress)r   r   r   r   r
   r   r   __annotations__r   strr   r   r   r   r   r   r   r   r      sQ    $"3ZD
'*UVGSV/40GXeCcN+, 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   f      dee   def
dZy)	AINAppOpszTool for app operations.	AINappOpsnamea7  
Create an app in the AINetwork Blockchain database by creating the /apps/<appName> path.
An address set as `admin` can grant `owner` rights to other addresses (refer to `AINownerOps` for more details).
Also, `admin` is initialized to have all `owner` permissions and `rule` allowed for that path.

## appName Rule
- [a-z_0-9]+

## address Rules
- 0x[0-9a-fA-F]{40}
- Defaults to the current session's address
- Multiple addresses can be specified if needed

## SET_ADMIN Example 1
- type: SET_ADMIN
- appName: ain_project

### Result:
1. Path /apps/ain_project created.
2. Current session's address registered as admin.

## SET_ADMIN Example 2
- type: SET_ADMIN
- appName: test_project
- address: [<address1>, <address2>]

### Result:
1. Path /apps/test_project created.
2. <address1> and <address2> registered as admin.

r   args_schemaNr   r   r   run_managerreturnc           
        K   ddl m} ddlm} 	 |t        j
                  u r|*| j                  j                  j                  j                  }t        |t              r|g}| j                  j                  j                  d| d |              j                   |d|D ci c]  }|d c}i      	       d {   }na|t        j                  u r@| j                  j                  j                  d| d
      j!                          d {   }nt#        d| d      t%        j&                  |d      S c c}w 7 7 2# t(        $ r7}t+        j,                  |      j.                   dt        |       cY d }~S d }~ww xY ww)Nr   )ValueOnlyTransactionInput)getTimestampz/manage_app/z/create/adminT)value)transactionInputz/configzUnsupported 'type': .F)ensure_asciiz: )	ain.typesr'   	ain.utilsr(   r   r   	interfacewalletdefaultAccountr   
isinstancer   dbrefsetValuer   getValue
ValueErrorjsondumps	Exceptionbuiltinsr   r   )	selfr   r   r   r$   r'   r(   reses	            r   _arunzAINAppOps._arunF   se     	8*	<'111?"nn33BBJJGgs+&iG NN--11"7)8LN3CD(%>&g(N7$(NO&   )444 NN--11"7)73(* !#7vQ!?@@::c66 )O	  	<mmA&//03q6(;;	<sf   FBE !
D:+E <D?=AE E*E 9F:E E 	F,E>8F9F>FF)NN)r   r   r   r   r"   r   r   r   r   r#   r   r	   r   r   r   r   r   r@   r   r   r   r    r    !   s    "D#K > $-Ki, 48@D < <  < %T#Y/0	 <
 <= < 
 <r   r    )r<   r9   enumr   typingr   r   r   r   langchain_core.callbacksr   pydanticr	   r
   (langchain_community.tools.ainetwork.baser   r   r   r   r    r   r   r   <module>rF      sE       . . C % @sD 	 E< E<r   