Skip to content

Commit edccc20

Browse files
authored
Merge pull request #6 from Moonsong-Labs/feat/verify-payloads
feat: ✨ Integrate VerificationPayloads
2 parents e719b8e + 5a8411f commit edccc20

27 files changed

+1411
-1318
lines changed

README.md

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -183,17 +183,9 @@ All operations correspond to CoreWriter precompile actions:
183183
| Method | Action ID | Description |
184184
|--------|-----------|-------------|
185185
| `limit_order` | 1 | Place a limit order |
186-
| `vault_transfer` | 2 | Transfer to/from vault |
187-
| `token_delegate` | 3 | Delegate/undelegate tokens |
188-
| `staking_deposit` | 4 | Deposit for staking |
189-
| `staking_withdraw` | 5 | Withdraw from staking |
190-
| `spot_send` | 6 | Send spot tokens |
191-
| `perp_send` | 7 | Send perp collateral |
192-
| `usd_class_transfer_to_perp` | 8 | Transfer USD to perp |
193-
| `usd_class_transfer_to_spot` | 9 | Transfer USD to spot |
194-
| `cancel_order` | 10 | Cancel order by cloid |
195-
| `finalize_subaccount` | 11 | Finalize subaccount |
196-
| `approve_builder_fee` | 12 | Approve builder fee |
186+
| `spot_send` | 6 | Transfer tokens from Core to EVM |
187+
| `usd_class_transfer_to_perp/spot` | 7 | Transfer USD to/from perp |
188+
| `cancel_order` | 10/11 | Cancel order by cloid or oid |
197189

198190
## Integration
199191

examples/05_evm_usd_class_transfers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def main() -> None:
6363
mn_rpc_url=mn_rpc_url,
6464
hl_strategy_address=hl_strategy_address,
6565
bridge_strategy_address=bridge_address,
66+
disable_call_verification=True, # Skip call verification for this example
6667
)
6768

6869
logging.info("Connecting to HyperLiquid EVM at %s", hl_rpc_url)

examples/06_evm_place_and_cancel_order.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ def main() -> None:
4343
mn_rpc_url=mn_rpc_url,
4444
hl_strategy_address=strategy_address,
4545
bridge_strategy_address=bridge_address,
46+
disable_call_verification=True, # Skip call verification for this example
4647
)
4748

4849
hl.connect()

examples/07_evm_market_orders.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
from __future__ import annotations
44

5+
import json
56
import logging
67
import os
78
import time
89
from decimal import Decimal
10+
from pathlib import Path
911

1012
from dotenv import load_dotenv
1113

@@ -39,12 +41,17 @@ def main() -> None:
3941
if not bridge_address:
4042
raise ValueError("BRIDGE_STRATEGY not found in environment variables")
4143

44+
proof_blob_path = Path(__file__).parent / "blobs" / "example_verification_blob.json"
45+
with proof_blob_path.open("r", encoding="utf-8") as proof_file:
46+
verification_blob = json.load(proof_file)
47+
4248
client = HLProtocolEVM(
4349
private_key=private_key,
4450
hl_rpc_url=hl_rpc_url,
4551
mn_rpc_url=mn_rpc_url,
4652
hl_strategy_address=hl_strategy_address,
4753
bridge_strategy_address=bridge_address,
54+
flexible_vault_proof_blob=verification_blob,
4855
)
4956

5057
client.connect()

examples/08_evm_cctp_roundtrip.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44

55
import logging
66
import os
7+
from pathlib import Path
78
from typing import Any
9+
import json
810

911
from dotenv import load_dotenv
1012

1113
from hl_api import HLProtocolEVM
12-
from hl_api.types import BridgeResponse
14+
from hl_api.types import Response
1315

1416
load_dotenv()
1517

@@ -30,7 +32,7 @@ def _require_env(name: str) -> str:
3032
return value
3133

3234

33-
def _log_bridge_result(label: str, response: BridgeResponse) -> None:
35+
def _log_bridge_result(label: str, response: Response) -> None:
3436
context: dict[str, Any] = response.raw_response or {}
3537
if response.success:
3638
logger.info("%s succeeded (amount %.6f USDC)", label, response.amount or 0.0)
@@ -57,13 +59,24 @@ def main() -> None:
5759

5860
amount = float(os.getenv("BRIDGE_AMOUNT_USDC", str(DEFAULT_AMOUNT)))
5961

62+
blobs_dir = Path(__file__).parent / "blobs"
63+
64+
blob_path_1 = blobs_dir / "example_verification_blob.json"
65+
with blob_path_1.open("r", encoding="utf-8") as f:
66+
verification_blob_1 = json.load(f)
67+
68+
blob_path_2 = blobs_dir / "example_verification_blob2.json"
69+
with blob_path_2.open("r", encoding="utf-8") as f:
70+
verification_blob_2 = json.load(f)
71+
6072
client = HLProtocolEVM(
6173
private_key=private_key,
6274
hl_rpc_url=hl_rpc_url,
6375
mn_rpc_url=mn_rpc_url,
6476
hl_strategy_address=hl_strategy_address,
6577
bridge_strategy_address=bridge_strategy_address,
6678
testnet=testnet,
79+
flexible_vault_proof_blob=[verification_blob_1, verification_blob_2],
6780
)
6881

6982
client.connect()
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"title": "mainnet:tqETH:subvault0",
3+
"merkle_root": "0x8cacec5a1f3021c50d6e4f4ac80121df88f6fb6f636f981bcbd169eefaed3da3",
4+
"merkle_proofs": [
5+
{
6+
"verificationType": 3,
7+
"description": "CoreWriter.sendRawAction{action: limit_order}(anyBytes)",
8+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
9+
"proof": [
10+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
11+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
12+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
13+
]
14+
},
15+
{
16+
"verificationType": 3,
17+
"description": "CoreWriter.sendRawAction{action: cancel_oid}(anyBytes)",
18+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
19+
"proof": [
20+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
21+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
22+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
23+
]
24+
},
25+
{
26+
"verificationType": 3,
27+
"description": "CoreWriter.sendRawAction{action: cancel_cloid}(anyBytes)",
28+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
29+
"proof": [
30+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
31+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
32+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
33+
]
34+
},
35+
{
36+
"verificationType": 3,
37+
"description": "CoreWriter.sendRawAction{action: spot_send}(anyBytes)",
38+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
39+
"proof": [
40+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
41+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
42+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
43+
]
44+
},
45+
{
46+
"verificationType": 3,
47+
"description": "CoreWriter.sendRawAction{action: usd_transfer}(anyBytes)",
48+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
49+
"proof": [
50+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
51+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
52+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
53+
]
54+
},
55+
{
56+
"verificationType": 3,
57+
"description": "USDC.approve(TokenMessenger, anyInt)",
58+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
59+
"proof": [
60+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
61+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
62+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
63+
]
64+
},
65+
{
66+
"verificationType": 3,
67+
"description": "TokenMessenger.depositForBurn(anyInt)",
68+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
69+
"proof": [
70+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
71+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
72+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
73+
]
74+
}
75+
]
76+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"title": "hyperevm:tqETH:subvault0",
3+
"merkle_root": "0x8cacec5a1f3021c50d6e4f4ac80121df88f6fb6f636f981bcbd169eefaed3da3",
4+
"merkle_proofs": [
5+
{
6+
"verificationType": 3,
7+
"description": "CoreWriter.sendRawAction{action: limit_order}(anyBytes)",
8+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
9+
"proof": [
10+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
11+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
12+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
13+
]
14+
},
15+
{
16+
"verificationType": 3,
17+
"description": "CoreWriter.sendRawAction{action: cancel_oid}(anyBytes)",
18+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
19+
"proof": [
20+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
21+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
22+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
23+
]
24+
},
25+
{
26+
"verificationType": 3,
27+
"description": "CoreWriter.sendRawAction{action: cancel_cloid}(anyBytes)",
28+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
29+
"proof": [
30+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
31+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
32+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
33+
]
34+
},
35+
{
36+
"verificationType": 3,
37+
"description": "CoreWriter.sendRawAction{action: spot_send}(anyBytes)",
38+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
39+
"proof": [
40+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
41+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
42+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
43+
]
44+
},
45+
{
46+
"verificationType": 3,
47+
"description": "CoreWriter.sendRawAction{action: usd_transfer}(anyBytes)",
48+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
49+
"proof": [
50+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
51+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
52+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
53+
]
54+
},
55+
{
56+
"verificationType": 3,
57+
"description": "USDC.approve(TokenMessenger, anyInt)",
58+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
59+
"proof": [
60+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
61+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
62+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
63+
]
64+
},
65+
{
66+
"verificationType": 3,
67+
"description": "TokenMessenger.depositForBurn(anyInt)",
68+
"verificationData": "0x0000000000000000000000000000000263fb29c3d6b0c5837883519ef05ea20a04d1b33472333c382f6830bd3e61bf513e62ad79b5f3441f8ff182fb929fcae000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000",
69+
"proof": [
70+
"0x309b822df17cf8c5bc2494ec60d9d2b59a75b6b698a6c86a51fcf37a7f7da974",
71+
"0x4ca29eeb08d7c9b554ee3baff79abf1060d56c2fbcd2eb4f879018b4c6737ebf",
72+
"0x3c1feb2292bf6df1ecbcd268a9bdb51445d095acfdf61e0a397870deeed573a8"
73+
]
74+
}
75+
]
76+
}

src/hl_api/__init__.py

Lines changed: 12 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,43 +10,28 @@
1010
from .exceptions import (
1111
AuthenticationError,
1212
HLProtocolError,
13+
MethodNotImplementedError,
1314
NetworkError,
14-
NotImplementedError,
15-
OrderError,
16-
TransferError,
1715
ValidationError,
1816
)
1917
from .types import (
2018
TIF,
21-
# Enums
2219
ActionID,
2320
Address,
24-
ApprovalResponse,
25-
BridgeResponse,
26-
CancelResponse,
27-
DelegateResponse,
28-
FinalizeResponse,
29-
# Response types
30-
OrderResponse,
31-
# Type aliases
21+
BridgeDirection,
3222
Price,
33-
SendResponse,
23+
Response,
3424
Size,
35-
StakingResponse,
36-
TransferResponse,
37-
WalletResponse,
25+
VerificationPayload,
3826
Wei,
3927
)
4028
from .utils import (
4129
cloid_to_uint128,
4230
decode_tif,
4331
encode_tif,
32+
from_uint64,
4433
generate_cloid,
45-
price_to_uint64,
46-
size_to_uint64,
47-
uint64_to_price,
48-
uint64_to_size,
49-
validate_address,
34+
to_uint64,
5035
)
5136

5237
__version__ = "0.1.0"
@@ -59,36 +44,24 @@
5944
# Types and enums
6045
"ActionID",
6146
"TIF",
62-
"OrderResponse",
63-
"CancelResponse",
64-
"TransferResponse",
65-
"DelegateResponse",
66-
"StakingResponse",
67-
"SendResponse",
68-
"FinalizeResponse",
69-
"WalletResponse",
70-
"ApprovalResponse",
71-
"BridgeResponse",
47+
"BridgeDirection",
48+
"Response",
49+
"VerificationPayload",
7250
"Price",
7351
"Size",
7452
"Address",
7553
"Wei",
7654
# Exceptions
7755
"HLProtocolError",
7856
"AuthenticationError",
79-
"OrderError",
80-
"TransferError",
8157
"NetworkError",
8258
"ValidationError",
83-
"NotImplementedError",
59+
"MethodNotImplementedError",
8460
# Utility functions
85-
"price_to_uint64",
86-
"uint64_to_price",
87-
"size_to_uint64",
88-
"uint64_to_size",
61+
"to_uint64",
62+
"from_uint64",
8963
"encode_tif",
9064
"decode_tif",
9165
"generate_cloid",
92-
"validate_address",
9366
"cloid_to_uint128",
9467
]

0 commit comments

Comments
 (0)