1
1
from enum import IntEnum
2
2
from typing import Optional
3
- from .tlv import format_tlv
3
+ from .tlv import TlvSerializable
4
4
from .keychain import sign_data , Key
5
5
6
6
@@ -15,7 +15,7 @@ class Tag(IntEnum):
15
15
SIGNATURE = 0xff
16
16
17
17
18
- class EnumValue :
18
+ class EnumValue ( TlvSerializable ) :
19
19
version : int
20
20
chain_id : int
21
21
contract_addr : bytes
@@ -45,15 +45,15 @@ def __init__(self,
45
45
46
46
def serialize (self ) -> bytes :
47
47
payload = bytearray ()
48
- payload += format_tlv (Tag .VERSION , self .version )
49
- payload += format_tlv (Tag .CHAIN_ID , self .chain_id )
50
- payload += format_tlv (Tag .CONTRACT_ADDR , self .contract_addr )
51
- payload += format_tlv (Tag .SELECTOR , self .selector )
52
- payload += format_tlv (Tag .ID , self .id )
53
- payload += format_tlv (Tag .VALUE , self .value )
54
- payload += format_tlv (Tag .NAME , self .name )
48
+ payload += self . serialize_field (Tag .VERSION , self .version )
49
+ payload += self . serialize_field (Tag .CHAIN_ID , self .chain_id )
50
+ payload += self . serialize_field (Tag .CONTRACT_ADDR , self .contract_addr )
51
+ payload += self . serialize_field (Tag .SELECTOR , self .selector )
52
+ payload += self . serialize_field (Tag .ID , self .id )
53
+ payload += self . serialize_field (Tag .VALUE , self .value )
54
+ payload += self . serialize_field (Tag .NAME , self .name )
55
55
sig = self .signature
56
56
if sig is None :
57
57
sig = sign_data (Key .CALLDATA , payload )
58
- payload += format_tlv (Tag .SIGNATURE , sig )
58
+ payload += self . serialize_field (Tag .SIGNATURE , sig )
59
59
return payload
0 commit comments