Source code for erc7730.convert.calldata.v1.enum
"""
Conversion of ERC-7730 enum definitions to calldata descriptor instructions.
"""
from eth_typing import ChainId as EthChainId
from erc7730.model.calldata.v1.instruction import (
CalldataDescriptorInstructionEnumValueV1,
)
from erc7730.model.metadata import EnumDefinition
from erc7730.model.resolved.context import ResolvedDeployment
from erc7730.model.types import Id, Selector
[docs]
def convert_enums(
deployment: ResolvedDeployment, selector: Selector, enums: dict[Id, EnumDefinition] | None
) -> list[CalldataDescriptorInstructionEnumValueV1]:
"""
Convert descriptor enum definitions to calldata descriptor enum value instructions.
@param enums: descriptor enum definitions
@return: instructions for each enum entry
"""
if enums is None:
return []
return [
CalldataDescriptorInstructionEnumValueV1(
chain_id=EthChainId(deployment.chainId),
address=deployment.address,
selector=selector,
id=i,
enum_id=enum_id,
value=int(ordinal),
name=name,
)
for i, (enum_id, enum) in enumerate(enums.items())
for ordinal, name in enum.items()
]