
    ?jz                     *   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z 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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 de4d	e4fd
Z5 G d de          Z6dS )    N)LocalAccount)API)Info)MAINNET_API_URL)CancelByCloidRequestCancelRequestGroupingModifyRequest
OidOrCloidOrderRequest	OrderType	OrderWireScheduleCancelActionfloat_to_usd_intget_timestamp_msorder_request_to_order_wireorder_wires_to_order_action
sign_agentsign_approve_builder_fee%sign_convert_to_multi_sig_user_actionsign_l1_actionsign_multi_sig_actionsign_send_asset_actionsign_spot_transfer_actionsign_token_delegate_actionsign_usd_class_transfer_actionsign_usd_transfer_action sign_user_dex_abstraction_action sign_user_set_abstraction_action sign_withdraw_from_bridge_action)AbstractionAgentAbstractionAnyBuilderInfoCloidDictListMetaOptionalPerpDexSchemaInputSpotMetaTuplecoinreturnc                 D    d| v r|                      d          d         ndS )N:r    )splitr-   s    m/home/agent/projects/CryptoTradingBot/Crypto_Agent/.venv/lib/python3.11/site-packages/hyperliquid/exchange.py_get_dexr5   7   s$    !$4::c??1"4    c                       e Zd ZdZ	 	 	 	 	 	 	 ddedee         dee         dee         dee         dee         d	ee	e                  d
ee
         f fdZd Z	 ddedede
dee
         de
f
dZdee         ddfdZ	 	 	 ddedede
de
dededee         dee         defdZ	 dde	e         dee         dedefd Z	 	 dd!ededede
de
dededee         defd"Zd#e	e         defd$Zdeddfdedede
dee
         de
dee         dee         defd%Zddeddfd&edee
         dee
         de
dee         dee         defd'Zded!edefd(Zdededefd)Z d*e	e!         defd+Z"d*e	e#         defd,Z$d-ee         defd.Z%dd0eded1edefd2Z&d3e
dedefd4Z'd5edefd6Z(dedefd7Z)d3e
d8edefd9Z*d:ed;ed<ed=ed3e
defd>Z+d?ed@edAedefdBZ,d?ed@ed=ed3e
def
dCZ-ded@edAedefdDZ.d3e
d:edefdEZ/d3e
d:ed=edefdFZ0dGedHedIedefdJZ1d3e
d:edefdKZ2ddee         de3eef         fdLZ4dedMedefdNZ5dOe	e         dPedefdQZ6dRedSedTedUedVedefdWZ7d=edXe	e3eef                  dYe	e3eef                  defdZZ8d=edefd[Z9d=ed\ed]edefd^Z:d=edefd_Z;d=edefd`Z<daed=edefdbZ=d=edceddedefdeZ>dfedgedefdhZ?diedje
dke
dledmee         defdnZ@d=edoedefdpZAdqedUee         d&edSedredsedtedueeB         defdvZCdqedweDeef         dxe	eDeef                  dyeDeef         def
dzZEdefd{ZFdefd|ZGdaedefd}ZHd~ededededededededefdZId~ee         dee         dee         dedee         dee         dee         defdZJdefdZKddZLdedefdZMdefdZNdeOdefdZPd\ededefdZQd\edeRdefdZSd ZTd ZU xZVS )Exchangeg?Nwalletbase_urlmetavault_addressaccount_address	spot_meta	perp_dexstimeoutc	                     t                                          ||           || _        || _        || _        t          |d||||          | _        d | _        d S )NT)super__init__r9   r<   r=   r   infoexpires_after)
selfr9   r:   r;   r<   r=   r>   r?   r@   	__class__s
            r4   rC   zExchange.__init__?   s]     	7+++*.4y)WMM	,0r6   c                     ||||d         dvr| j         nd | j        d}t          j        |           |                     d|          S )Ntype)usdClassTransfer	sendAsset)actionnonce	signaturevaultAddressexpiresAfterz	/exchange)r<   rE   loggingdebugpost)rF   rL   rN   rM   payloads        r4   _post_actionzExchange._post_actionQ   s^    "28.Hi2i2iD..os .
 
 	gyyg...r6   nameis_buyslippagepxr.   c                 \   | j         j        |         }|s<t          |          }t          | j                             |          |                   }| j         j        |         }|dk    }||rd|z   nd|z
  z  }t          t          |d          |sdnd| j         j        |         z
            S )Ni'     z.5g      )rD   name_to_coinr5   floatall_midscoin_to_assetroundasset_to_sz_decimals)	rF   rV   rW   rX   rY   r-   dexassetis_spots	            r4   _slippage_pricezExchange._slippage_price\   s     y%d+ 	64..Cty))#..t455B	'-6/ 	:q8||Q\:Ub;;''7*A!!TYEcdiEj)jkkkr6   rE   c                     || _         d S N)rE   )rF   rE   s     r4   set_expires_afterzExchange.set_expires_afteru   s    *r6   Fszlimit_px
order_typereduce_onlycloidbuilderc	                 P    ||||||d}	|r||	d<   |                      |	g|          S )N)r-   rW   rk   rl   rm   rn   ro   )bulk_orders)
rF   rV   rW   rk   rl   rm   rn   ro   rp   orders
             r4   rs   zExchange.orderx   sM      $&
 
  	#"E'N111r6   naorder_requestsgroupingc           	      ,     fd|D             }t                      }|r|d                                         |d<   t          |||          }t           j        | j        | j         j        t          k              } 	                    |||          S )Nc           	      l    g | ]0}t          |j                            |d                              1S r3   )r   rD   name_to_asset).0rs   rF   s     r4   
<listcomp>z(Exchange.bulk_orders.<locals>.<listcomp>   sE     (
 (
 (
[`'ty/F/FuV}/U/UVV(
 (
 (
r6   b)
r   lowerr   r   r9   r<   rE   r:   r   rU   )rF   ru   rp   rv   order_wires	timestamporder_actionrN   s   `       r4   rr   zExchange.bulk_orders   s    (
 (
 (
 (
dr(
 (
 (
 %&&	 	0"3<--//GCL2;RR"KM_,
 
	   
 
 	
r6   oidc	           	      H    ||||||||dd}	|                      |	g          S )N)r-   rW   rk   rl   rm   rn   ro   r   rs   )bulk_modify_orders_new)
rF   r   rV   rW   rk   rl   rm   rn   ro   modifys
             r4   modify_orderzExchange.modify_order   sJ      $(* !
 !
 **F8444r6   modify_requestsc           	           t                      } fd|D             }d|d}t           j        | j        | j         j        t          k              }                     |||          S )Nc           
          g | ]z}t          |d          t                    r|d                                          n|d          t          |d         j                            |d         d                             d{S )r   rs   r-   r   )
isinstancer%   to_rawr   rD   ry   )rz   r   rF   s     r4   r{   z3Exchange.bulk_modify_orders_new.<locals>.<listcomp>   s     
 
 

  2<F5M51Q1Qdve}++---W]^cWd4VG_diF]F]^del^mnt^uFvFvww 
 
 
r6   batchModify)rI   modifiesr   r   r9   r<   rE   r:   r   rU   )rF   r   r   modify_wiresmodify_actionrN   s   `     r4   r   zExchange.bulk_modify_orders_new   s    $&&	
 
 
 

 *
 
 
 "$
 

 #KM_,
 
	   
 
 	
r6   c           
      t    |                      ||||          }|                     ||||dddiid||          S )NlimittifIocFrm   rn   ro   rp   )rg   rs   )rF   rV   rW   rk   rY   rX   ro   rp   s           r4   market_openzExchange.market_open   sU     !!$"==zz&"bgu~-FTYafpw  
 
 	
r6   r-   c                    | j         j        }| j        r| j        }| j        r| j        }t	          |          }| j                            ||          d         }	|	D ]}
|
d         }||d         k    rt          |d                   }|st          |          }|dk     rdnd}| 	                    ||||          }| 
                    ||||dd	d
iid||          c S d S )NassetPositionspositionr-   szir   TFr   r   r   r   )r9   addressr=   r<   r5   rD   
user_stater_   absrg   rs   )rF   r-   rk   rY   rX   ro   rp   r   rd   	positionsr   itemr   rW   s                 r4   market_closezExchange.market_close   s%    {* 	+*G 	)(GtnnI((#667GH	! 	 	HJ'DtF|##U$$C XX 1WWTT%F%%dFHbAAB::#eU^4   	 	 	 	 		 	r6   c                 4    |                      ||dg          S )N)r-   r   )bulk_cancel)rF   rV   r   s      r4   cancelzExchange.cancel  s!    $s!;!; <===r6   c                 4    |                      ||dg          S )N)r-   ro   )bulk_cancel_by_cloid)rF   rV   ro   s      r4   cancel_by_cloidzExchange.cancel_by_cloid  s!    ((4%*H*H)IJJJr6   cancel_requestsc           	           t                      }d fd|D             d}t           j        | j        | j         j        t          k              }                     |||          S )Nr   c                 b    g | ]+}j                             |d                    |d         d,S )r-   r   )ao)rD   ry   rz   r   rF   s     r4   r{   z(Exchange.bulk_cancel.<locals>.<listcomp>"  sP       
  00@@   r6   rI   cancelsr   rF   r   r   cancel_actionrN   s   `    r4   r   zExchange.bulk_cancel  s    $&&	   
 .  	
 	
 #KM_,
 
	   
 
 	
r6   c           	           t                      }d fd|D             d}t           j        | j        | j         j        t          k              }                     |||          S )NcancelByCloidc                     g | ]=}j                             |d                    |d                                         d>S )r-   ro   )re   ro   )rD   ry   r   r   s     r4   r{   z1Exchange.bulk_cancel_by_cloid.<locals>.<listcomp>>  s\       
  "Y44VF^DD#G_3355   r6   r   r   r   s   `    r4   r   zExchange.bulk_cancel_by_cloid9  s    $&&	 $   
 .  	
 	
 #KM_,
 
	   
 
 	
r6   timec           	          t                      }ddi}|||d<   t          | j        || j        || j        | j        t          k              }|                     |||          S )a  Schedules a time (in UTC millis) to cancel all open orders. The time must be at least 5 seconds after the current time.
        Once the time comes, all open orders will be canceled and a trigger count will be incremented. The max number of triggers
        per day is 10. This trigger count is reset at 00:00 UTC.

        Args:
            time (int): if time is not None, then set the cancel time in the future. If None, then unsets any cancel time in the future.
        rI   scheduleCancelNr   r   )rF   r   r   schedule_cancel_actionrN   s        r4   schedule_cancelzExchange.schedule_cancelU  s     %&&	$8
 -1"6*"K"M_,
 
	   "
 
 	
r6   Tleverageis_crossc           	          t                      }d| j                            |          ||d}t          | j        || j        || j        | j        t          k              }| 	                    |||          S )NupdateLeverage)rI   re   isCrossr   )
r   rD   ry   r   r9   r<   rE   r:   r   rU   )rF   r   rV   r   r   update_leverage_actionrN   s          r4   update_leveragezExchange.update_leverageq  s    $&&	$Y,,T22 	"
 "
 #K"M_,
 
	   "
 
 	
r6   amountc           	      
   t                      }t          |          }d| j                            |          d|d}t	          | j        || j        || j        | j        t          k              }| 
                    |||          S )NupdateIsolatedMarginT)rI   re   isBuyntli)r   r   rD   ry   r   r9   r<   rE   r:   r   rU   )rF   r   rV   r   update_isolated_margin_actionrN   s         r4   update_isolated_marginzExchange.update_isolated_margin  s    $&&	!&))*Y,,T22	)
 )
% #K)M_,
 
	   )
 
 	
r6   codec           	          t                      }d|d}t          | j        |d || j        | j        t
          k              }|                     |||          S )NsetReferrer)rI   r   r   r   r9   rE   r:   r   rU   )rF   r   r   set_referrer_actionrN   s        r4   set_referrerzExchange.set_referrer  sr    $&&	!
 
 #KM_,
 
	   
 
 	
r6   c           	          t                      }d|d}t          | j        |d || j        | j        t
          k              }|                     |||          S )NcreateSubAccount)rI   rV   r   )rF   rV   r   create_sub_account_actionrN   s        r4   create_sub_accountzExchange.create_sub_account  sr    $&&	&%
 %
! #K%M_,
 
	   %
 
 	
r6   to_perpc                     t                      }t          |          }| j        r|d| j         z  }d|||d}t          | j        || j        t          k              }|                     |||          S )Nz subaccount:rJ   )rI   r   toPerprM   )r   strr<   r   r9   r:   r   rU   )rF   r   r   r   
str_amountrL   rN   s          r4   usd_class_transferzExchange.usd_class_transfer  s    $&&	[[
 	>=);===J ' 	
 
 34;YhHhii	  
 
 	
r6   destination
source_dexdestination_dextokenc           	          t                      }t          |          }d|||||| j        r| j        nd|d}t          | j        || j        t          k              }	|                     ||	|          S )z
        For the default perp dex use the empty string "" as name. For spot use "spot".
        Token must match the collateral token if transferring to or from a perp dex.
        rK   r1   )rI   r   	sourceDexdestinationDexr   r   fromSubAccountrM   )r   r   r<   r   r9   r:   r   rU   )
rF   r   r   r   r   r   r   r   rL   rN   s
             r4   
send_assetzExchange.send_asset  s    
 %&&	[[
  &#- 484FNd00B	
 	
 +4;Q`@`aa	  
 
 	
r6   sub_account_user
is_depositusdc           	          t                      }d|||d}t          | j        |d || j        | j        t
          k              }|                     |||          S )NsubAccountTransfer)rI   subAccountUser	isDepositr   r   )rF   r   r   r   r   sub_account_transfer_actionrN   s          r4   sub_account_transferzExchange.sub_account_transfer  sx    $&&	(.#	'
 '
# #K'M_,
 
	   '
 
 	
r6   c           	          t                      }d|||t          |          d}t          | j        |d || j        | j        t          k              }|                     |||          S )NsubAccountSpotTransfer)rI   r   r   r   r   r   r   r   r9   rE   r:   r   rU   )rF   r   r   r   r   r   r   rN   s           r4   sub_account_spot_transferz"Exchange.sub_account_spot_transfer  s    $&&	,.#&kk'
 '
# #K'M_,
 
	   '
 
 	
r6   c                     t                      }d|||d}| j        t          k    }t          | j        |d || j        |          }|                     |||          S )NvaultTransfer)rI   rO   r   r   )r   r:   r   r   r9   rE   rU   )rF   r<   r   r   r   vault_transfer_action
is_mainnetrN   s           r4   vault_usd_transferzExchange.vault_usd_transfer  st    $&&	#)#	!
 !
 ]o5
"4;0EtYX\Xjlvww	  !
 
 	
r6   c                     t                      }|t          |          |dd}| j        t          k    }t	          | j        ||          }|                     |||          S )NusdSendr   r   r   rI   )r   r   r:   r   r   r9   rU   rF   r   r   r   rL   r   rN   s          r4   usd_transferzExchange.usd_transfer/  se    $&&	!,FY`ijj]o5
,T[&*MM	  
 
 	
r6   c                     t                      }|t          |          ||dd}| j        t          k    }t	          | j        ||          }|                     |||          S )NspotSend)r   r   r   r   rI   )r   r   r:   r   r   r9   rU   )rF   r   r   r   r   rL   r   rN   s           r4   spot_transferzExchange.spot_transfer:  sp    $&&	&&kk
 
 ]o5
-dk6:NN	  
 
 	
r6   	validatorweiis_undelegatec                     t                      }||||dd}| j        t          k    }t          | j        ||          }|                     |||          S )NtokenDelegate)r   r   isUndelegaterM   rI   )r   r:   r   r   r9   rU   )rF   r   r   r   r   rL   r   rN   s           r4   token_delegatezExchange.token_delegateK  sj    $&&	")#
 
 ]o5
.t{FJOO	  
 
 	
r6   c                     t                      }|t          |          |dd}| j        t          k    }t	          | j        ||          }|                     |||          S )N	withdraw3r   )r   r   r:   r   r    r9   rU   r   s          r4   withdraw_from_bridgezExchange.withdraw_from_bridge\  se    $&&	!,FY`kll]o5
4T[&*UU	  
 
 	
r6   c                 .   dt          j        d          z   }t          j                            |          }t                      }| j        t          k    }d|j        |pd|d}t          | j
        ||          }||d= |                     |||          |fS )N0x    approveAgentr1   )rI   agentAddress	agentNamerM   r	  )secrets	token_hexeth_accountAccountfrom_keyr   r:   r   r   r   r9   rU   )rF   rV   	agent_keyaccountr   r   rL   rN   s           r4   approve_agentzExchange.approve_agentg  s    7,R000	%..y99$&&	]o5
"#O	
 
 t{FJ??	<{#  
 
 	
r6   max_fee_ratec                     t                      }|||dd}t          | j        || j        t          k              }|                     |||          S )NapproveBuilderFee)
maxFeeRaterp   rM   rI   )r   r   r9   r:   r   rU   )rF   rp   r  r   rL   rN   s         r4   approve_builder_feezExchange.approve_builder_fee  sR    $&&	 ,9^qrr,T[&$-SbBbcc	  I>>>r6   authorized_users	thresholdc                     t                      }t          |          }||d}dt          j        |          |d}t	          | j        || j        t          k              }|                     |||          S )N)authorizedUsersr  convertToMultiSigUser)rI   signersrM   )	r   sortedjsondumpsr   r9   r:   r   rU   )rF   r  r  r   r  rL   rN   s          r4   convert_to_multi_sig_userz"Exchange.convert_to_multi_sig_user  s    $&&	!"233/"
 

 ,z'**
 

 :$+vt}`oOopp	  
 
 	
r6   
token_namesz_decimalswei_decimalsmax_gas	full_namec           	          t                      }d|||d||dd}t          | j        |d || j        | j        t
          k              }|                     |||          S )N
spotDeploy)rV   
szDecimalsweiDecimals)specmaxGasfullName)rI   registerToken2r   )	rF   r!  r"  r#  r$  r%  r   rL   rN   s	            r4   spot_deploy_register_tokenz#Exchange.spot_deploy_register_token  s     %&&	 !+;Wcdd!% 
 
 #KM_,
 
	   
 
 	
r6   user_and_weiexisting_token_and_weic           	          t                      }d|d |D             |dd}t          | j        |d || j        | j        t
          k              }|                     |||          S )Nr'  c                 @    g | ]\  }}|                                 |fS  )r}   )rz   userr   s      r4   r{   z5Exchange.spot_deploy_user_genesis.<locals>.<listcomp>  s)    SSS{c

c2SSSr6   )r   
userAndWeiexistingTokenAndWei)rI   userGenesisr   )rF   r   r/  r0  r   rL   rN   s          r4   spot_deploy_user_genesisz!Exchange.spot_deploy_user_genesis  s     %&&	 SSlSSS'= 
 
 #KM_,
 
	   
 
 	
r6   c                 .    |                      d|          S )NenableFreezePrivilegespot_deploy_token_action_innerrF   r   s     r4   #spot_deploy_enable_freeze_privilegez,Exchange.spot_deploy_enable_freeze_privilege      223JERRRr6   r4  freezec           	          t                      }d||                                |dd}t          | j        |d || j        | j        t          k              }|                     |||          S )Nr'  )r   r4  r@  )rI   
freezeUserr   r}   r   r9   rE   r:   r   rU   )rF   r   r4  r@  r   rL   rN   s          r4   spot_deploy_freeze_userz Exchange.spot_deploy_freeze_user  s    $&&	 

  
 
 #KM_,
 
	   
 
 	
r6   c                 .    |                      d|          S )NrevokeFreezePrivileger;  r=  s     r4   #spot_deploy_revoke_freeze_privilegez,Exchange.spot_deploy_revoke_freeze_privilege  r?  r6   c                 .    |                      d|          S )NenableQuoteTokenr;  r=  s     r4   spot_deploy_enable_quote_tokenz'Exchange.spot_deploy_enable_quote_token  s    223EuMMMr6   variantc           	          t                      }dd|d|ii}t          | j        |d || j        | j        t
          k              }|                     |||          S )NrI   r'  r   r   )rF   rK  r   r   rL   rN   s         r4   r<  z'Exchange.spot_deploy_token_action_inner  sx    $&&	L
 #KM_,
 
	   
 
 	
r6   
max_supplyno_hyperliquidityc           	          t                      }||d}|rd|d<   d|d}t          | j        |d || j        | j        t
          k              }|                     |||          S )N)r   	maxSupplyTnoHyperliquidityr'  )rI   genesisr   )rF   r   rM  rN  r   rR  rL   rN   s           r4   spot_deploy_genesiszExchange.spot_deploy_genesis  s    $&&	#
 
  	/*.G&' 
 
 #KM_,
 
	   
 
 	
r6   
base_tokenquote_tokenc           	          t                      }dd||gid}t          | j        |d || j        | j        t
          k              }|                     |||          S )Nr'  tokens)rI   registerSpotr   )rF   rT  rU  r   rL   rN   s         r4   spot_deploy_register_spotz"Exchange.spot_deploy_register_spot  s}    $&&	 :{3
 
 #KM_,
 
	   
 
 	
r6   spotstart_pxorder_szn_ordersn_seeded_levelsc           	          t                      }|t          |          t          |          |d}|||d<   d|d}t          | j        |d || j        | j        t          k              }	|                     ||	|          S )N)rZ  startPxorderSznOrdersnSeededLevelsr'  )rI   registerHyperliquidityr   )
rF   rZ  r[  r\  r]  r^  r   register_hyperliquidityrL   rN   s
             r4   #spot_deploy_register_hyperliquidityz,Exchange.spot_deploy_register_hyperliquidity4  s     %&&	8}}8}}	#
 #
 &7F#O4 &=
 
 #KM_,
 
	   
 
 	
r6   sharec           	          t                      }d||dd}t          | j        |d || j        | j        t
          k              }|                     |||          S )Nr'  )r   rg  )rI   setDeployerTradingFeeSharer   )rF   r   rg  r   rL   rN   s         r4   *spot_deploy_set_deployer_trading_fee_sharez3Exchange.spot_deploy_set_deployer_trading_fee_shareR  s~    $&&	 + +
 
 #KM_,
 
	   
 
 	
r6   rd   	oracle_pxmargin_table_idonly_isolatedschemac	           	      4   t                      }	d }
|4|d         |d         |d         |d                                         nd d}
d||||||d||
dd}t          | j        |d |	| j        | j        t          k              }|                     |||	          S )	Nr,  collateralTokenoracleUpdater)r,  rp  rq  
perpDeploy)r-   r(  oraclePxmarginTableIdonlyIsolated)r+  assetRequestrd   rn  )rI   registerAssetrC  )rF   rd   r$  r-   r"  rk  rl  rm  rn  r   schema_wirerL   rN   s                r4   perp_deploy_register_assetz#Exchange.perp_deploy_register_asseti  s     %&&	":.#)*;#<DJ?D[Dg!8!>!>!@!@!@mq K !! "- )%4$1! ! % 
 
 #KM_,
 
	   
 
 	
r6   
oracle_pxsall_mark_pxsexternal_perp_pxsc           	         t                      }t          t          |                                                    }d |D             }t          t          |                                                    }d||||dd}	t	          | j        |	d || j        | j        t          k              }
| 	                    |	|
|          S )Nc                 j    g | ]0}t          t          |                                                    1S r3  )r  listitems)rz   mark_pxss     r4   r{   z3Exchange.perp_deploy_set_oracle.<locals>.<listcomp>  s2    UUUHX^^%5%5 6 677UUUr6   rr  )rd   	oraclePxsmarkPxsexternalPerpPxs)rI   	setOracle)
r   r  r  r  r   r9   rE   r:   r   rU   )rF   rd   rz  r{  r|  r   oracle_pxs_wiremark_pxs_wireexternal_perp_pxs_wirerL   rN   s              r4   perp_deploy_set_oraclezExchange.perp_deploy_set_oracle  s     %&&	 j&6&6&8&8!9!9::UUUUU!'->-D-D-F-F(G(G!H!H ,(#9	 
 
 #KM_,
 
	   
 
 	
r6   c                 ,    |                      d          S )N
unjailSelfc_signer_innerrF   s    r4   c_signer_unjail_selfzExchange.c_signer_unjail_self  s    ""<000r6   c                 ,    |                      d          S )NjailSelfr  r  s    r4   c_signer_jail_selfzExchange.c_signer_jail_self  s    "":...r6   c           	          t                      }dd|d i}t          | j        |d || j        | j        t
          k              }|                     |||          S )NrI   CSignerActionr   )rF   rK  r   rL   rN   s        r4   r  zExchange.c_signer_inner  sp    $&&	OT
 #KM_,
 
	   
 
 	
r6   node_ipdescriptiondelegations_disabledcommission_bpssignerunjailedinitial_weic	           	          t                      }	dd|i|||||d||dd}
t          | j        |
d |	| j        | j        t
          k              }|                     |
||	          S )NCValidatorActionIp)r  rV   r  r  r  r  )profiler  r  )rI   registerr   )rF   r  rV   r  r  r  r  r  r  r   rL   rN   s               r4   c_validator_registerzExchange.c_validator_register  s     %&&	& !%g #.,@&4$  %* 
 
 #KM_,
 
	   
 
 	
r6   disable_delegationsc           	          t                      }d|d nd|i||||||dd}	t          | j        |	d || j        | j        t
          k              }
|                     |	|
|          S )Nr  r  )r  rV   r  r  r  r  r  )rI   changeProfiler   )rF   r  rV   r  r  r  r  r  r   rL   rN   s              r4   c_validator_change_profilez#Exchange.c_validator_change_profile  s     %&&	&#*?44w*$':"0  
 
 #KM_,
 
	   
 
 	
r6   c           	          t                      }dd d}t          | j        |d || j        | j        t
          k              }|                     |||          S )Nr  )rI   
unregisterr   rF   r   rL   rN   s       r4   c_validator_unregisterzExchange.c_validator_unregister#  sq    $&&	&
 
 #KM_,
 
	   
 
 	
r6   c                    |                                 }dd||| j        j                                         |dd}| j        t          k    }t          | j        ||||| j                  }|                     |||          S )NmultiSig0x66eee)multiSigUserouterSignerrL   )rI   signatureChainId
signaturesrT   )r}   r9   r   r:   r   r   rE   rU   )	rF   multi_sig_userinner_actionr  rM   r<   multi_sig_actionr   rN   s	            r4   	multi_sigzExchange.multi_sig7  s    '--// )$ .#{288::& 		
 	
 ]o5
)K
 
	   
 
 	
r6   enablec           	          t                      }d|d}t          | j        |d || j        | j        t
          k              }|                     |||          S )NevmUserModify)rI   usingBigBlocksr   )rF   r  r   rL   rN   s        r4   use_big_blockszExchange.use_big_blocksR  sq    $&&	#$
 
 #KM_,
 
	   
 
 	
r6   c           	          t                      }ddi}t          | j        || j        || j        | j        t          k              }|                     |||          S )NrI   agentEnableDexAbstractionr   r  s       r4   agent_enable_dex_abstractionz%Exchange.agent_enable_dex_abstractionf  so    $&&	/
 #KM_,
 
	   
 
 	
r6   abstractionc           	          t                      }d|d}t          | j        || j        || j        | j        t          k              }|                     |||          S )NagentSetAbstraction)rI   r  r   )rF   r  r   rL   rN   s        r4   agent_set_abstractionzExchange.agent_set_abstractiony  st    $&&	)&
 
 #KM_,
 
	   
 
 	
r6   enabledc                     t                      }d|                                ||d}t          | j        || j        t
          k              }|                     |||          S )NuserDexAbstraction)rI   r4  r  rM   )r   r}   r   r9   r:   r   rU   )rF   r4  r  r   rL   rN   s         r4   user_dex_abstractionzExchange.user_dex_abstraction  sk    $&&	(JJLL	
 
 5T[&$-[jJjkk	  
 
 	
r6   c                     t                      }d|                                ||d}t          | j        || j        t
          k              }|                     |||          S )NuserSetAbstraction)rI   r4  r  rM   )r   r}   r   r9   r:   r   rU   )rF   r4  r  r   rL   rN   s         r4   user_set_abstractionzExchange.user_set_abstraction  sk    $&&	(JJLL&	
 
 5T[&$-[jJjkk	  
 
 	
r6   c           	          ddi}t          | j        || j        || j        | j        t
          k              }|                     |||          S )NrI   noop)r   r9   r<   rE   r:   r   rU   )rF   rM   rL   rN   s       r4   r  zExchange.noop  sT    &!"K!3UD<NPTP]apPp
 
	   E:::r6   c           	          t                      }d|||d}t          | j        || j        || j        | j        t          k              }|                     |||          S )NgossipPriorityBid)rI   slotIdipr+  r   )rF   slot_idr  r$  rM   rL   rN   s          r4   gossip_priority_bidzExchange.gossip_priority_bid  sg     ""-V]^^"K!3UD<NPTP]apPp
 
	   E:::r6   )NNNNNNNri   )FNN)Nrt   )FN)T)W__name__
__module____qualname__DEFAULT_SLIPPAGEr   r)   r   r(   r+   r'   r_   rC   rU   boolrg   intrj   r   r%   r$   r#   rs   r   r	   rr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r,   r  r  r   r.  r8  r>  rD  rG  rJ  r<  rS  rY  rf  rj  r*   ry  r&   r  r  r  r  r  r  r  r  r  r  r"   r  r  r!   r  r  r  __classcell__)rG   s   @r4   r8   r8   ;   s       
 #'#'+)-(,)-#'1 11 3-1 tn	1
  }1 "#1 H%1 DI&1 %1 1 1 1 1 1$	/ 	/ 	/  #l ll l 	l
 UOl 
l l l l2+x} + + + + + "!%)-2 22 2 	2
 2 2 2 2 +&2 
2 2 2 20 os
 
"<0
;CK;P
ck
	
 
 
 
F "!%5 55 5 	5
 5 5 5 5 5 
5 5 5 52
d=6I 
c 
 
 
 
F #*!%)-
 

 
 	

 UO
 
 
 +&
 

 
 
 
( #"*!%)-$ $$ UO$ UO	$
 $ $ +&$ 
$ $ $ $L>3 >S >S > > > >KC K K# K K K K
4+> 
3 
 
 
 
6
D9M4N 
SV 
 
 
 
8
HSM 
c 
 
 
 
8
 
 
3 
$ 
RU 
 
 
 
,
U 
# 
# 
 
 
 
.
 
 
 
 
 
(
s 
s 
 
 
 
(
 
 
# 
 
 
 
&
c 
s 
S 
Y\ 
fk 
ps 
 
 
 
2
S 
d 
QT 
Y\ 
 
 
 
,
# 
4 
X[ 
ej 
or 
 
 
 
.
 
 
C 
TW 
 
 
 
 	
5 	
s 	
s 	
 	
 	
 	

E 
 
C 
C 
 
 
 
"
 
# 
d 
s 
 
 
 
"	
5 	
s 	
s 	
 	
 	
 	

 
(3- 
5c? 
 
 
 
0?3 ?c ?c ? ? ? ?
$s) 
PS 
X[ 
 
 
 
&

,/
?B
MP
]`
	
 
 
 
4

(,U38_(=
W[\abegjbj\kWl
	
 
 
 
4S S S S S S
S 
 
T 
c 
 
 
 
0S S S S S SNC NC N N N N
c 
# 
# 
 
 
 
,
 
# 
RV 
[^ 
 
 
 
4
C 
c 
c 
 
 
 
,

#(
49
EH
[cdg[h
	
 
 
 
<
 
C 
TW 
 
 
 
..
.
 #.
 	.

 .
 .
 .
 .
 +,.
 
.
 .
 .
 .
` 
 
 cN 
 4S>*	 

  S> 
 
 
  
  
  
D1c 1 1 1 1/C / / / /
c 
c 
 
 
 
('
'
 '
 	'

 #'
 '
 '
 '
 '
 
'
 '
 '
 '
R#
##
 sm#
 c]	#

 #
 &d^#
 !#
 #
 
#
 #
 #
 #
J
 
 
 
 
(
 
 
 
6
T 
c 
 
 
 
(
c 
 
 
 
&
1A 
c 
 
 
 
(
 
t 
 
 
 
 

 
; 
3 
 
 
 
; ; ;; ; ; ; ; ; ;r6   r8   )7r  rQ   r
  r  eth_account.signers.localr   hyperliquid.apir   hyperliquid.infor   hyperliquid.utils.constantsr   hyperliquid.utils.signingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    hyperliquid.utils.typesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r   r5   r8   r3  r6   r4   <module>r     sx          2 2 2 2 2 2       ! ! ! ! ! ! 7 7 7 7 7 7                                                       8                            53 53 5 5 5 5}; }; }; }; };s }; }; }; }; };r6   