erc7730.model.calldata.v1.param module

Data model for calldata descriptor field parameters.

These model classes represent the exact same data fields that are serialized into TLV structs. See documentation in https://github.com/LedgerHQ/app-ethereum for specifications of this protocol

class erc7730.model.calldata.v1.param.CalldataDescriptorDateType(*values)[source]View on GitHub

Bases: IntEnum

Type of date formatting.

BLOCK_HEIGHT = 1
UNIX = 0
class erc7730.model.calldata.v1.param.CalldataDescriptorParamAmountV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['AMOUNT'] = 'AMOUNT')[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_AMOUNT struct.

model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['AMOUNT']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamBaseV1(*, version: Annotated[int, Ge(ge=0), Le(le=255)], value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)])[source]View on GitHub

Bases: CalldataDescriptorStructV1, ABC

Base class for calldata descriptor PARAM_* structs.

model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamCalldataV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['CALLDATA'] = 'CALLDATA', callee: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], selector: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None, chain_id: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None, amount: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None, spender: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None)[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_CALLDATA struct.

amount: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None
callee: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)]
chain_id: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

selector: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None
spender: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None
type: Literal['CALLDATA']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamDatetimeV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['DATETIME'] = 'DATETIME', date_type: CalldataDescriptorDateType)[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_DATETIME struct.

date_type: CalldataDescriptorDateType
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['DATETIME']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamDurationV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['DURATION'] = 'DURATION')[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_DURATION struct.

model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['DURATION']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamEnumV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['ENUM'] = 'ENUM', id: Annotated[int, Ge(ge=0), Le(le=255)])[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_ENUM struct.

id: int
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['ENUM']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamNFTV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['NFT'] = 'NFT', collection: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)])[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_NFT struct.

collection: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)]
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['NFT']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamRawV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['RAW'] = 'RAW')[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_RAW struct.

model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

type: Literal['RAW']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamTokenAmountV1(*, version: ~typing.Literal[1] = 1, value: ~typing.Annotated[~erc7730.model.calldata.v1.value.CalldataDescriptorValuePathV1 | ~erc7730.model.calldata.v1.value.CalldataDescriptorValueConstantV1, ~pydantic.types.Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: ~typing.Literal['TOKEN_AMOUNT'] = 'TOKEN_AMOUNT', token: ~typing.Annotated[~erc7730.model.calldata.v1.value.CalldataDescriptorValuePathV1 | ~erc7730.model.calldata.v1.value.CalldataDescriptorValueConstantV1, ~pydantic.types.Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None = None, native_currencies: list[~typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, title='Contract Address', description='An Ethereum contract address (normalized to lowercase).', metadata=[MinLen(min_length=42), MaxLen(max_length=42), _PydanticGeneralMetadata(pattern='^0x[a-f0-9]+$')]), ~pydantic.functional_validators.BeforeValidator(func=~erc7730.model.types.<lambda>, json_schema_input_type=PydanticUndefined), ~erc7730.common.pydantic.ErrorTypeLabel(func=~erc7730.common.pydantic.ErrorTypeLabel._validator.<locals>.validate, json_schema_input_type=PydanticUndefined)]] | None = None, threshold: ~typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, title='Hexadecimal string', description='A byte array encoded as an hexadecimal string.', metadata=[_PydanticGeneralMetadata(pattern='^0x[a-f0-9]+$')]), ~pydantic.functional_validators.BeforeValidator(func=~erc7730.model.types.<lambda>, json_schema_input_type=PydanticUndefined), ~erc7730.common.pydantic.ErrorTypeLabel(func=~erc7730.common.pydantic.ErrorTypeLabel._validator.<locals>.validate, json_schema_input_type=PydanticUndefined)] | None = None, above_threshold_message: ~typing.Annotated[str | None, ~annotated_types.MinLen(min_length=1), ~annotated_types.MaxLen(max_length=32)] = None)[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_TOKEN_AMOUNT struct.

above_threshold_message: str | None
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

native_currencies: list[~typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, title='Contract Address', description='An Ethereum contract address (normalized to lowercase).', metadata=[MinLen(min_length=42), MaxLen(max_length=42), _PydanticGeneralMetadata(pattern='^0x[a-f0-9]+$')]), ~pydantic.functional_validators.BeforeValidator(func=~erc7730.model.types.<lambda>, json_schema_input_type=PydanticUndefined), ~erc7730.common.pydantic.ErrorTypeLabel(func=~erc7730.common.pydantic.ErrorTypeLabel._validator.<locals>.validate, json_schema_input_type=PydanticUndefined)]] | None
threshold: validate, json_schema_input_type=PydanticUndefined)] | None
token: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)] | None
type: Literal['TOKEN_AMOUNT']
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamTrustedNameV1(*, version: ~typing.Literal[1] = 1, value: ~typing.Annotated[~erc7730.model.calldata.v1.value.CalldataDescriptorValuePathV1 | ~erc7730.model.calldata.v1.value.CalldataDescriptorValueConstantV1, ~pydantic.types.Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: ~typing.Literal['TRUSTED_NAME'] = 'TRUSTED_NAME', types: ~typing.Annotated[list[~erc7730.model.calldata.types.TrustedNameType], ~annotated_types.MinLen(min_length=1)], sources: ~typing.Annotated[list[~erc7730.model.calldata.types.TrustedNameSource], ~annotated_types.MinLen(min_length=1)], sender_addresses: ~typing.Annotated[list[~typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, title='Contract Address', description='An Ethereum contract address (normalized to lowercase).', metadata=[MinLen(min_length=42), MaxLen(max_length=42), _PydanticGeneralMetadata(pattern='^0x[a-f0-9]+$')]), ~pydantic.functional_validators.BeforeValidator(func=~erc7730.model.types.<lambda>, json_schema_input_type=PydanticUndefined), ~erc7730.common.pydantic.ErrorTypeLabel(func=~erc7730.common.pydantic.ErrorTypeLabel._validator.<locals>.validate, json_schema_input_type=PydanticUndefined)]] | None, ~annotated_types.MinLen(min_length=1)] = None)[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_TRUSTED_NAME struct.

model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

sender_addresses: list[~typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, title='Contract Address', description='An Ethereum contract address (normalized to lowercase).', metadata=[MinLen(min_length=42), MaxLen(max_length=42), _PydanticGeneralMetadata(pattern='^0x[a-f0-9]+$')]), ~pydantic.functional_validators.BeforeValidator(func=~erc7730.model.types.<lambda>, json_schema_input_type=PydanticUndefined), ~erc7730.common.pydantic.ErrorTypeLabel(func=~erc7730.common.pydantic.ErrorTypeLabel._validator.<locals>.validate, json_schema_input_type=PydanticUndefined)]] | None
sources: list[TrustedNameSource]
type: Literal['TRUSTED_NAME']
types: list[TrustedNameType]
version: Literal[1]
class erc7730.model.calldata.v1.param.CalldataDescriptorParamType(*values)[source]View on GitHub

Bases: IntEnum

Type of calldata field parameters.

AMOUNT = 1
CALLDATA = 9
DATETIME = 4
DURATION = 5
ENUM = 7
NFT = 3
RAW = 0
TOKEN_AMOUNT = 2
TRUSTED_NAME = 8
UNIT = 6
class erc7730.model.calldata.v1.param.CalldataDescriptorParamUnitV1(*, version: Literal[1] = 1, value: Annotated[CalldataDescriptorValuePathV1 | CalldataDescriptorValueConstantV1, Discriminator(discriminator=type, custom_error_type=None, custom_error_message=None, custom_error_context=None)], type: Literal['UNIT'] = 'UNIT', base: Annotated[str, MinLen(min_length=1), MaxLen(max_length=32)], decimals: Annotated[int | None, Ge(ge=0), Le(le=255)] = None, prefix: bool | None = None)[source]View on GitHub

Bases: CalldataDescriptorParamBaseV1

Descriptor for the PARAM_UNIT struct.

base: str
decimals: int | None
model_config = {'allow_inf_nan': False, 'arbitrary_types_allowed': False, 'extra': 'forbid', 'frozen': True, 'strict': True, 'validate_assignment': True, 'validate_default': True, 'validate_return': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

prefix: bool | None
type: Literal['UNIT']
version: Literal[1]