from hyperliquid.utils.signing import (
TOKEN_DELEGATE_TYPES,
recover_agent_or_user_from_l1_action,
recover_user_from_user_signed_action,
)
def main():
example_l1_signed_action = {
"signature": {
"r": "0xd088ceb979ab7616f21fd7dabee04342235bd3af6d82a6d153b503c34c73bc93",
"s": "0x425d8467a69f4d0ff6d9ddfb360ef6152c8165cdd20329e03b0a8f19890d73e",
"v": 27,
},
"vaultAddress": "0xc64cc00b46101bd40aa1c3121195e85c0b0918d8",
"action": {"type": "cancel", "cancels": [{"a": 87, "o": 28800768235}]},
"nonce": 1745532560074,
}
agent_or_user = recover_agent_or_user_from_l1_action(
example_l1_signed_action["action"],
example_l1_signed_action["signature"],
example_l1_signed_action["vaultAddress"],
example_l1_signed_action["nonce"],
None,
False,
)
print("recovered l1 action agent or user:", agent_or_user)
example_user_signed_action = {
"signature": {
"r": "0xa00406eb38821b8918743fab856c103132261e8d990852a8ee25e6f2e88891b",
"s": "0x34cf47cfbf09173bcb851bcfdce3ad83dd64ed791ab32bfe9606d25e7c608859",
"v": 27,
},
"action": {
"type": "tokenDelegate",
"signatureChainId": "0xa4b1",
"hyperliquidChain": "Mainnet",
"validator": "0x5ac99df645f3414876c816caa18b2d234024b487",
"wei": 100163871320,
"isUndelegate": True,
"nonce": 1744932112279,
},
"isFrontend": True,
"nonce": 1744932112279,
}
user = recover_user_from_user_signed_action(
example_user_signed_action["action"],
example_user_signed_action["signature"],
TOKEN_DELEGATE_TYPES,
"HyperliquidTransaction:TokenDelegate",
True,
)
print("recovered user-signed action user:", user)
if __name__ == "__main__":
main()