Source code for erc7730.model.input.lenses

"""
Utilities for accessing ERC-7730 input descriptors nested fields.
"""

from erc7730.model.input.context import InputBindingContext, InputContractContext, InputDeployment, InputEIP712Context
from erc7730.model.input.descriptor import InputERC7730Descriptor


[docs] def get_chain_ids(descriptor: InputERC7730Descriptor) -> set[int]: """Get deployment chaind ids for a descriptor.""" return {d.chainId for d in get_deployments(descriptor)}
[docs] def get_deployments(descriptor: InputERC7730Descriptor) -> list[InputDeployment]: """Get deployments section for a descriptor.""" return get_binding_context(descriptor).deployments
[docs] def get_binding_context(descriptor: InputERC7730Descriptor) -> InputBindingContext: """Get binding context for a descriptor.""" if isinstance(context := descriptor.context, InputEIP712Context): return context.eip712 if isinstance(context := descriptor.context, InputContractContext): return context.contract raise ValueError(f"Invalid context type {type(descriptor.context)}")