# Types

Use logical types for EVM values and for the clients, programs, reads, and observations passed between workflow steps.

Canonical HTML: <https://determica.com/docs/types>

- [ADDRESS](/docs/types/address.md) — 20-byte Ethereum address stored as raw bytes. 0x-prefixed VARCHAR casts parse exact hex; VARCHAR output is hex for display. In Solidity ABI words, ADDRESS values are left-padded to 32 bytes.
- [ASSUMPTION](/docs/types/assumption.md) — Exact balance, nonce, storage, or runtime-code value supplied as initial PROGRAM state.
- [BLOCK_NUMBER](/docs/types/block-number.md) — EVM block height. Use explicit block numbers for reproducible historical reads.
- [BYTES](/docs/types/bytes.md) — Dynamic-length raw byte array used for calldata, return data, revert data, and packed ABI payloads. 0x-prefixed VARCHAR casts parse exact hex bytes; VARCHAR/hex output is for inspection, not numeric math.
- [BYTES256](/docs/types/bytes256.md) — 256-byte fixed bytes value for wide raw EVM data. Keep it distinct from display strings; cast through BYTES or hex output only when inspecting raw bytes.
- [BYTES32](/docs/types/bytes32.md) — 32-byte fixed bytes value. It is raw binary storage, not a decimal number; cast to UINT256/INT256 only when the bytes represent an EVM integer, and use hex(value) or VARCHAR casts for display.
- [BYTES4](/docs/types/bytes4.md) — 4-byte fixed bytes value, typically a function selector, error selector, or prefix. VARCHAR casts parse 0x-prefixed hex exactly; use BYTES when variable-length calldata or return data is required.
- [CALL_CONTEXT](/docs/types/call-context.md) — Optional per-step context containing a gas price, access list, and blob hashes.
- [CLIENT](/docs/types/client.md) — Identifies live chain state, one pinned block, or a retained execution checkpoint without storing credentials.
- [EVM_VALUE](/docs/types/evm-value.md) — Canonical observation envelope that always retains raw_value and populates exactly one scalar payload or structured canonical_json. Explicit casts select only matching kinds; incompatible CAST fails, TRY_CAST returns NULL, and no implicit arithmetic coercion is registered.
- [EVM_VERSION](/docs/types/evm-version.md) — EVM hard-fork version ordered by consensus activation sequence
- [EXECUTION_EVIDENCE](/docs/types/execution-evidence.md) — Schema-versioned projection of execution records stored in the local database.
- [GAS](/docs/types/gas.md) — Gas quantity in raw EVM units. Keep integer-valued and avoid decimal display conversions.
- [INT104](/docs/types/int104.md) — 104-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT112](/docs/types/int112.md) — 112-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT120](/docs/types/int120.md) — 120-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT136](/docs/types/int136.md) — 136-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT144](/docs/types/int144.md) — 144-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT152](/docs/types/int152.md) — 152-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT160](/docs/types/int160.md) — 160-bit signed integer stored in 20 raw bytes using two's-complement representation. Decimal string casts parse exact numeric values; 0x-prefixed strings parse raw bytes.
- [INT168](/docs/types/int168.md) — 168-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT176](/docs/types/int176.md) — 176-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT184](/docs/types/int184.md) — 184-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT192](/docs/types/int192.md) — 192-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT200](/docs/types/int200.md) — 200-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT208](/docs/types/int208.md) — 208-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT216](/docs/types/int216.md) — 216-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT224](/docs/types/int224.md) — 224-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT232](/docs/types/int232.md) — 232-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT24](/docs/types/int24.md) — 24-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT240](/docs/types/int240.md) — 240-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT248](/docs/types/int248.md) — 248-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT256](/docs/types/int256.md) — 256-bit signed EVM integer stored as a 32-byte two's-complement ABI word. Decimal string casts parse exact numeric values; 0x-prefixed strings parse raw bytes. VARCHAR output is decimal for display; use sort_key for signed ordering and BYTES/BYTES32 casts for raw ABI/storage boundaries.
- [INT40](/docs/types/int40.md) — 40-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT48](/docs/types/int48.md) — 48-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT512](/docs/types/int512.md) — 512-bit signed integer for overflow-safe intermediates and signed deltas. Stored as raw two's-complement bytes; use explicit narrowing casts only when the result is known to fit.
- [INT56](/docs/types/int56.md) — 56-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT72](/docs/types/int72.md) — 72-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT80](/docs/types/int80.md) — 80-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT88](/docs/types/int88.md) — 88-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [INT96](/docs/types/int96.md) — 96-bit Solidity signed integer with 32-byte ABI storage using two's-complement representation. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [LOG_INDEX](/docs/types/log-index.md) — Log index within a block or transaction receipt. Use with transaction hash/block context for stable log identity.
- [OBSERVATION](/docs/types/observation.md) — A keyed READ scheduled at execution checkpoints, or an address-label declaration.
- [PROGRAM](/docs/types/program.md) — Ordered, non-atomic EVM call steps with optional state assumptions and stop-on-first-failure execution policy.
- [READ](/docs/types/read.md) — State lookup or isolated EVM call specification evaluated by an OBSERVATION.
- [STEP](/docs/types/step.md) — Typed EVM execution step consumed by PROGRAM.
- [TRANSPORT](/docs/types/transport.md) — JSON configuration for an HTTP or HTTPS JSON-RPC client. It contains type, url, and chain_id, plus an optional config object. The caller supplies chain_id; constructing a TRANSPORT does not call eth_chainId or verify the endpoint.
- [TX_INDEX](/docs/types/tx-index.md) — Transaction index within a block. Pair with block_number or block hash when forming stable evidence.
- [UINT104](/docs/types/uint104.md) — 104-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT112](/docs/types/uint112.md) — 112-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT120](/docs/types/uint120.md) — 120-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT136](/docs/types/uint136.md) — 136-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT144](/docs/types/uint144.md) — 144-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT152](/docs/types/uint152.md) — 152-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT160](/docs/types/uint160.md) — 160-bit unsigned integer stored in 20 raw big-endian bytes. Decimal string casts parse exact numeric values; 0x-prefixed strings parse raw bytes. ADDRESS casts preserve the same 20-byte storage.
- [UINT168](/docs/types/uint168.md) — 168-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT176](/docs/types/uint176.md) — 176-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT184](/docs/types/uint184.md) — 184-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT192](/docs/types/uint192.md) — 192-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT200](/docs/types/uint200.md) — 200-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT208](/docs/types/uint208.md) — 208-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT216](/docs/types/uint216.md) — 216-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT224](/docs/types/uint224.md) — 224-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT232](/docs/types/uint232.md) — 232-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT24](/docs/types/uint24.md) — 24-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT240](/docs/types/uint240.md) — 240-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT248](/docs/types/uint248.md) — 248-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT256](/docs/types/uint256.md) — 256-bit unsigned EVM integer stored as a 32-byte big-endian ABI word. Decimal string casts parse exact numeric values; 0x-prefixed strings parse raw bytes. VARCHAR output is decimal for display; use format_units/format_ether for token amounts and BYTES/BYTES32 casts for raw ABI/storage boundaries.
- [UINT40](/docs/types/uint40.md) — 40-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT48](/docs/types/uint48.md) — 48-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT512](/docs/types/uint512.md) — 512-bit unsigned integer for overflow-safe intermediates such as muldiv and fixed-point math. Stored as raw big-endian bytes; use explicit narrowing casts only when the result is known to fit.
- [UINT56](/docs/types/uint56.md) — 56-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT72](/docs/types/uint72.md) — 72-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT80](/docs/types/uint80.md) — 80-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT88](/docs/types/uint88.md) — 88-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [UINT96](/docs/types/uint96.md) — 96-bit Solidity unsigned integer with 32-byte ABI storage. Values cast from decimal strings are parsed exactly; 0x-prefixed strings are interpreted as raw big-endian bytes. VARCHAR output is decimal for display, while BYTES/BYTES32 casts expose raw storage bytes.
- [WEI](/docs/types/wei.md) — Wei-denominated native balance. Keep as an integer for comparisons and calldata; use format_ether or format_units only at display boundaries.
