"""
EVM (Ethereum Virtual Machine) contract interaction module.
This module provides functionality for interacting with EVM-compatible contracts:
- ``contract_interface``: Decorator for creating type-safe EVM contract interfaces
- ABI encoding/decoding utilities
- Fixed-size byte types (bytes1 through bytes32)
"""
__all__ = (
'contract_interface',
'signature_of',
'type_name_of',
'selector_of',
'MethodEncoder',
'encode',
'decode',
'ContractProxy',
'ContractDeclaration',
'InplaceTuple',
'bytes1',
'bytes2',
'bytes3',
'bytes4',
'bytes5',
'bytes6',
'bytes7',
'bytes8',
'bytes9',
'bytes10',
'bytes11',
'bytes12',
'bytes13',
'bytes14',
'bytes15',
'bytes16',
'bytes17',
'bytes18',
'bytes19',
'bytes20',
'bytes21',
'bytes22',
'bytes23',
'bytes24',
'bytes25',
'bytes26',
'bytes27',
'bytes28',
'bytes29',
'bytes30',
'bytes31',
'bytes32',
)
import typing
[docs]
class InplaceTuple:
# editorconfig-checker-disable
"""
This class indicates that tuple should be encoded/decoded in-place.
Which means that even if it is dynamically sized, it is ignored.
It is useful for encoding/decoding arguments and returns
.. code-block:: python
tuple[InplaceTuple, str, u256]
"""
# editorconfig-checker-enable
__slots__ = ()
bytes1 = typing.NewType('bytes1', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes2 = typing.NewType('bytes2', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes3 = typing.NewType('bytes3', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes4 = typing.NewType('bytes4', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes5 = typing.NewType('bytes5', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes6 = typing.NewType('bytes6', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes7 = typing.NewType('bytes7', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes8 = typing.NewType('bytes8', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes9 = typing.NewType('bytes9', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes10 = typing.NewType('bytes10', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes11 = typing.NewType('bytes11', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes12 = typing.NewType('bytes12', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes13 = typing.NewType('bytes13', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes14 = typing.NewType('bytes14', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes15 = typing.NewType('bytes15', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes16 = typing.NewType('bytes16', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes17 = typing.NewType('bytes17', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes18 = typing.NewType('bytes18', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes19 = typing.NewType('bytes19', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes20 = typing.NewType('bytes20', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes21 = typing.NewType('bytes21', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes22 = typing.NewType('bytes22', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes23 = typing.NewType('bytes23', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes24 = typing.NewType('bytes24', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes25 = typing.NewType('bytes25', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes26 = typing.NewType('bytes26', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes27 = typing.NewType('bytes27', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes28 = typing.NewType('bytes28', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes29 = typing.NewType('bytes29', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes30 = typing.NewType('bytes30', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes31 = typing.NewType('bytes31', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
bytes32 = typing.NewType('bytes32', bytes)
"""
Fixed-size byte array. These types are used for encoding/decoding fixed-size byte arrays in EVM contracts
"""
from .calldata import *
from .generate import contract_generator, ContractProxy, ContractDeclaration
import typing
from ..types import Address, u256
if typing.TYPE_CHECKING:
from genlayer._internal.on_chain.eth import (
evm_contract_interface as contract_interface,
)
def __getattr__(name):
if name == 'contract_interface':
from genlayer._internal.on_chain.eth import (
evm_contract_interface as contract_interface,
)
globals()['contract_interface'] = contract_interface
return contract_interface
raise AttributeError(f'module {__name__!r} has no attribute {name!r}')
import genlayer.chain
class IAccount(genlayer.chain.IAccount, typing.Protocol):
def emit_call(self, value: u256, data: bytes) -> None: ...
class Account(IAccount, genlayer.chain.Account):
def emit_value(self, value: u256, data: bytes, /) -> None:
from genlayer._internal.on_chain.eth import perform_send
perform_send(self.address, data, value)