degenbot.abi ============ .. py:module:: degenbot.abi .. autoapi-nested-parse:: ABI encode/decode — the stable mirror home for ``_ffi.abi``. Provides public functions (``encode``, ``encode_packed``, ``encode_single``, ``decode``, ``decode_single``) that delegate to the Rust ``degenbot-abi`` core. Addresses are EIP-55 checksummed on decode. Package Contents ---------------- .. py:type:: BytesLike :canonical: bytes .. py:exception:: AbiEncodeError(*, message: str | None = None) Bases: :py:obj:`degenbot.exceptions.base.DegenbotError` Raised when ABI encoding fails. .. py:exception:: AbiDecodeError(*, message: str | None = None) Bases: :py:obj:`degenbot.exceptions.base.DegenbotError` Raised when ABI decoding fails. .. py:function:: encode(types: collections.abc.Sequence[str], args: collections.abc.Sequence[Any]) -> bytes Encode values into ABI-encoded bytes. :param types: ABI type strings (e.g., ``["uint256", "address"]``). :param args: Values to encode. :returns: ABI-encoded bytes. :raises AbiEncodeError: If encoding fails. .. py:function:: encode_packed(types: collections.abc.Sequence[str], args: collections.abc.Sequence[Any]) -> bytes Pack-encode values into Solidity ``abi.encodePacked`` bytes. Each value is encoded tightly with no 32-byte word padding and no length prefix for dynamic types — the values are simply concatenated in their packed forms. Tuples are packed element-by-element. :param types: ABI type strings (e.g., ``["address", "address", "bool"]``). :param args: Values to encode. :returns: The packed-encoded bytes. :raises AbiEncodeError: If encoding fails. .. py:function:: encode_single(abi_type: str, value: Any) -> bytes Encode a single value into ABI-encoded bytes. :param abi_type: ABI type string (e.g., ``"uint256"``). :param value: The value to encode. :returns: The ABI-encoded bytes. :raises AbiEncodeError: If encoding fails. .. py:function:: decode(types: collections.abc.Sequence[str], data: BytesLike) -> tuple[Any, ...] Decode ABI-encoded bytes into Python values. :param types: ABI type strings (e.g., ``["uint256", "address"]``). :param data: ABI-encoded bytes. :returns: Tuple of decoded values. :raises AbiDecodeError: If decoding fails. .. py:function:: decode_single(abi_type: str, data: BytesLike) -> Any Decode a single ABI value. :param abi_type: ABI type string (e.g., ``"uint256"``). :param data: ABI-encoded bytes. :returns: The decoded value. :raises AbiDecodeError: If decoding fails.