> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genlabs.co/llms.txt
> Use this file to discover all available pages before exploring further.

# AbiValueType

> **AbiValueType** = \{ `primitive`: [`PrimitiveType`](/reference/sdk/typescript/index/type-aliases/PrimitiveType); } | \{ `named`: [`TypeName`](/reference/sdk/typescript/index/type-aliases/TypeName); } | \{ `array`: \{ `inner`: `AbiValueType`; `length`: `number`; }; } | \{ `vector`: `AbiValueType`; } | \{ `tuple`: `AbiValueType`\[]; } | \{ `option`: `AbiValueType`; } | \{ `map`: \{ `key`: `AbiValueType`; `value`: `AbiValueType`; }; } | \{ `set`: `AbiValueType`; } | \{ `imported`: [`AbiImportedDef`](/reference/sdk/typescript/index/interfaces/AbiImportedDef); } | \{ `struct`: [`AbiStructDef`](/reference/sdk/typescript/index/interfaces/AbiStructDef); } | \{ `enum`: [`AbiEnumDef`](/reference/sdk/typescript/index/interfaces/AbiEnumDef); } | \{ `contract_ref`: [`AbiContractRefDef`](/reference/sdk/typescript/index/type-aliases/AbiContractRefDef); }

Defined in: [metacomputer/gen-framework/client-and-test-utils/client-sdk-ts/packages/client-sdk/src/rpc-types/types.ts:29](https://github.com/gen-bc/gen/blob/main/metacomputer/gen-framework/client-and-test-utils/client-sdk-ts/packages/client-sdk/src/rpc-types/types.ts#L29)

Structured representation for any value type used by ABI elements or type definitions.

Named-field structs are represented as Struct variants with AbiStructDef fields. Unnamed-field (tuple) structs are represented as Tuple variants, one entry per field.

A single-field tuple struct (newtype) appears as a 1-element `Tuple` in type definitions. When `resolve_named_types` expands a chain of newtypes (e.g. `EntityId(H256(PTH256([u8; 32])))`) the nested single-element Tuples are collapsed to a single Tuple wrapping the leaf type.
