> For the complete documentation index, see [llms.txt](https://docs.talus.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.talus.network/reference/move/nexus_primitives/data.md).

# data

* [Enum `NexusData`](#enum-nexusdata)
* [Enum `NexusValue`](#enum-nexusvalue)
* [Constants](#constants)
* [Function `object_value`](#function-object_value)
* [Function `inline_data_value`](#function-inline_data_value)
* [Function `walrus_data_value`](#function-walrus_data_value)
* [Function `one`](#function-one)
* [Function `many`](#function-many)
* [Function `split_many`](#function-split_many)
* [Function `collect_ones`](#function-collect_ones)
* [Function `is_many`](#function-is_many)
* [Function `values`](#function-values)
* [Function `into_values`](#function-into_values)
* [Function `inline_data_bytes`](#function-inline_data_bytes)
* [Function `object_ids`](#function-object_ids)
* [Function `value_is_object`](#function-value_is_object)
* [Function `value_is_inline_data`](#function-value_is_inline_data)
* [Function `values_are_object`](#function-values_are_object)
* [Function `values_are_data`](#function-values_are_data)
* [Function `value_content_commitment`](#function-value_content_commitment)

### Enum `NexusData`

One execution value or a non-empty ordered collection of execution values.

```move
public enum NexusData has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Onevalue:` [`nexus_primitives::data::NexusValue`](#nexus_primitives_data_NexusValue)Variant `Many`[`values`](#nexus_primitives_data_values)`: vector<`[`nexus_primitives::data::NexusValue`](#nexus_primitives_data_NexusValue)`>`

</details>

#### Enum `NexusValue`

One typed execution value. Inline and Walrus-backed values both have schema kind Data.

```move
public enum NexusValue has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Objectid: sui::object::ID`Variant `InlineDatabytes: vector<u8>`Variant `WalrusDatablob_id: vector<u8>content_digest: vector<u8>`

</details>

#### Constants

```move
#[error]
const ECannotSplitOne: vector<u8> = b"Splitting requires NexusData::Many";
```

```move
#[error]
const ECannotCollectEmpty: vector<u8> = b"Collecting requires at least one NexusData::One";
```

```move
#[error]
const ECannotCollectMany: vector<u8> = b"Collecting requires only NexusData::One values";
```

```move
#[error]
const EDataMismatch: vector<u8> = b"NexusData values must have one value kind";
```

```move
#[error]
const EDataTooLarge: vector<u8> = b"NexusData exceeds the protocol limit";
```

```move
#[error]
const EWalrusBlobIdInvalid: vector<u8> = b"Walrus blob ID must be 43 encoded bytes";
```

```move
#[error]
const EWalrusDigestLength: vector<u8> = b"Walrus content digest must be 32 bytes";
```

```move
#[error]
const EManyOutOfBounds: vector<u8> = b"NexusData::Many must contain between 1 and 256 values";
```

```move
const MAX_MANY_VALUES: u64 = 256;
```

```move
const MAX_INLINE_DATA_BYTES: u64 = 61440;
```

```move
const WALRUS_BLOB_ID_ENCODED_BYTES: u64 = 43;
```

```move
const MAX_NEXUS_DATA_BYTES: u64 = 65536;
```

```move
const SHA256_LEN: u64 = 32;
```

#### Function `object_value`

Creates a checked Object value.

```move
public fun object_value(id: sui::object::ID): nexus_primitives::data::NexusValue
```

#### Function `inline_data_value`

Creates checked inline Data.

```move
public fun inline_data_value(bytes: vector<u8>): nexus_primitives::data::NexusValue
```

#### Function `walrus_data_value`

Creates checked digest-bound Walrus Data.

```move
public fun walrus_data_value(blob_id: vector<u8>, content_digest: vector<u8>): nexus_primitives::data::NexusValue
```

#### Function `one`

Creates one checked canonical value.

```move
public fun one(value: nexus_primitives::data::NexusValue): nexus_primitives::data::NexusData
```

#### Function `many`

Creates a checked non-empty homogeneous ordered value collection.

```move
public fun many(values: vector<nexus_primitives::data::NexusValue>): nexus_primitives::data::NexusData
```

#### Function `split_many`

Splits Many into one canonical One per ordered value.

```move
public fun split_many(data: nexus_primitives::data::NexusData): vector<nexus_primitives::data::NexusData>
```

#### Function `collect_ones`

Collects canonical One values into one canonical Many while preserving order.

```move
public fun collect_ones(values: vector<nexus_primitives::data::NexusData>): nexus_primitives::data::NexusData
```

#### Function `is_many`

Returns whether the enum is Many.

```move
public fun is_many(self: &nexus_primitives::data::NexusData): bool
```

#### Function `values`

Copies the ordered values while preserving One-versus-Many on the source value.

```move
public fun values(self: &nexus_primitives::data::NexusData): vector<nexus_primitives::data::NexusValue>
```

#### Function `into_values`

Consumes the canonical value and returns its ordered values.

```move
public fun into_values(self: nexus_primitives::data::NexusData): vector<nexus_primitives::data::NexusValue>
```

#### Function `inline_data_bytes`

Returns inline bytes for One InlineData, or none for other value shapes.

```move
public fun inline_data_bytes(self: &nexus_primitives::data::NexusData): std::option::Option<vector<u8>>
```

#### Function `object_ids`

Returns ordered Object IDs, or none when any stored value is not Object.

```move
public fun object_ids(self: &nexus_primitives::data::NexusData): std::option::Option<vector<sui::object::ID>>
```

#### Function `value_is_object`

Returns true when the value is Object.

```move
public fun value_is_object(value: &nexus_primitives::data::NexusValue): bool
```

#### Function `value_is_inline_data`

Returns true when the value is InlineData.

```move
public fun value_is_inline_data(value: &nexus_primitives::data::NexusValue): bool
```

#### Function `values_are_object`

Returns true when every value is Object.

```move
public fun values_are_object(values: &vector<nexus_primitives::data::NexusValue>): bool
```

#### Function `values_are_data`

Returns true when every value is inline or Walrus-backed Data.

```move
public fun values_are_data(values: &vector<nexus_primitives::data::NexusValue>): bool
```

#### Function `value_content_commitment`

Returns the Tool-visible content commitment of one checked value.

```move
public fun value_content_commitment(value: &nexus_primitives::data::NexusValue): vector<u8>
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.talus.network/reference/move/nexus_primitives/data.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
