# Data types

## AccountInfoResponse

Data associated to one account. Contains optional fields for returning account-related info from various types of queries. Reflects the view of a single validator, which may be lagging behind the rest of the network.

<table><thead><tr><th width="226.13067626953125" valign="top">Fields</th><th></th></tr></thead><tbody><tr><td valign="top"><code>sender</code></td><td><a href="#publickeybytes"><code>PublicKeyBytes</code></a>: The address of the account.</td></tr><tr><td valign="top"><code>balance</code></td><td><a href="#balance"><code>Balance</code></a>: Balance in native tokens of the account.</td></tr><tr><td valign="top"><code>next_nonce</code></td><td><a href="#nonce"><code>Nonce</code></a>: The next transaction from the account is required to have this nonce.</td></tr><tr><td valign="top"><code>pending_confirmation</code></td><td><a href="#validatedtransaction"><code>ValidatedTransaction</code></a> (optional): The transaction that has been validated by the current validator, but not yet confirmed (if requested).</td></tr><tr><td valign="top"><code>requested_state</code></td><td><code>Array&#x3C;(</code> <a href="#statekey"><code>StateKey</code></a><code>,</code><a href="#state"><code>State</code></a><code>)></code>: The keys and values of the account's state as requested.</td></tr><tr><td valign="top"><code>requested_certificates</code></td><td><code>Option&#x3C;Array&#x3C;</code><a href="#transactioncertificate"><code>TransactionCertificate</code></a><code>>></code> (optional): A single transaction certificate (if requested).</td></tr><tr><td valign="top"><code>requested_validated_transaction</code></td><td><a href="#validatedtransaction"><code>ValidatedTransaction</code></a> (optional): A single validated transaction (if requested).</td></tr><tr><td valign="top"><code>token_balance</code></td><td><code>Array&#x3C;(Array&#x3C;uint8; length=32>,</code><a href="#balance"><code>Balance</code></a><code>)></code>: Token balances of tokens held by this account (may not be all tokens held).</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/rqy5odd00okTpa3XTyyk" %}

***

## AddressChange

<table><thead><tr><th width="226.13067626953125" valign="top">Variants</th><th></th></tr></thead><tbody><tr><td valign="top"><code>Add</code></td><td><code>array</code></td></tr><tr><td valign="top"><code>Remove</code></td><td><code>array</code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/MdnoyS29NMq8m1BwvZzI" %}

***

## Amount

256-bit unsigned integer encoded as a hex string.

`string`

**JSON Schema:**

{% file src="/files/Ab7rlvrJ9XA99xervnBp" %}

***

## Balance

257-bit signed integer with the magnitude encoded in hex preceded by `-` sign if applicable.

`string`

**JSON Schema:**

{% file src="/files/lva62U7L6rqoyldYzi08" %}

***

## ClaimType

A claim is a concept on Fast that drives state changes on the Fast network. It is akin to\
the "calldata" of a transaction on Ethereum.

There are many types of claims, denoting the actions that can be packed into a transaction, so `ClaimType` comes with several variants.

<table><thead><tr><th width="225.98223876953125">Variants</th><th width="553.6136474609375"></th></tr></thead><tbody><tr><td><code>TokenTransfer</code></td><td><a href="#tokentransfer"><code>TokenTransfer</code></a>: Transfer or burn tokens (that is, transfer tokens to the burn address)</td></tr><tr><td><code>TokenCreation</code></td><td><a href="#tokencreation"><code>TokenCreation</code></a>: Create custom token</td></tr><tr><td><code>TokenManagement</code></td><td><a href="#tokenmanagement"><code>TokenManagement</code></a>: Modify custom token</td></tr><tr><td><code>ExternalClaim</code></td><td><a href="#externalclaim"><code>ExternalClaim</code></a>: Arbitrary byte data</td></tr><tr><td><code>Mint</code></td><td><a href="#mint"><code>Mint</code></a>: Mint funds in a custom token</td></tr><tr><td><code>Burn</code></td><td><a href="#burn"><code>Burn</code></a>: burns the amount of token specified</td></tr><tr><td><code>Batch</code></td><td><a href="#operationbundle"><code>OperationBundle</code></a>: Perform several operations</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/TUxDiAq238aCQLKzU8g5" %}

***

<table><thead><tr><th width="225.5234375" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>verifier_committee</code></td><td valign="top"><code>Array&#x3C;</code><a href="#publickeybytes"><code>PublicKeyBytes</code></a><code>></code>: Set of verifiers (regular Fast addresses) that can sign for this <a href="#externalclaim">ExternalClaim</a>.</td></tr><tr><td valign="top"><code>verifier_quorum</code></td><td valign="top"><a href="#quorum"><code>Quorum</code></a>: Minimum number of verifiers in <code>verifier_committee</code> for which Fast validators will sign this transaction.</td></tr><tr><td valign="top"><code>claim_data</code></td><td valign="top"><a href="#claimdata"><code>ClaimData</code></a>: Arbitrary data that the verifiers are signing.</td></tr></tbody></table>

## FastAddress

A byte sequence that names an entity on or off the Fast network, depending on the name of type which stores this value.

It is typically encoded as an Ed25519 public key, but may have other formats, including but not limited to, a 32-byte string composed of all 0x00 bytes (burn address). Note that any funds sent to the burn address will be permanently lost!

`Array<uint8; length=32>`

**JSON Schema:**

{% file src="/files/pJyh7moAFs7Le2LSG43R" %}

***

## Mint

Create more funds of a token. The sender of the [Transaction](#transaction) must be a current mint of the token.

{% hint style="warning" %}
**Warning:** This is not independent of a token management operation that removes the sender of this transaction from the list of mints.
{% endhint %}

<table><thead><tr><th width="225.7152099609375" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>token_id</code></td><td valign="top"><code>Array&#x3C;uint8; length=32></code>: The hash of the <a href="#tokencreation"><code>TokenCreation</code></a> transaction that created the token. This is calculated using the keccak256 hash over the data encoded in the same way as for signing.</td></tr><tr><td valign="top"><code>amount</code></td><td valign="top"><a href="#amount"><code>Amount</code></a>: Amount to mint.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/4OCMevQG4yUqMaZWGucq" %}

***

## MintOperation

Create more funds of a token. The sender of the [`Transaction`](#transaction) must be a current mint of the token.

{% hint style="warning" %}
**Warning:** This is not independent of a token management operation that removes the sender of this transaction from the list of mints. This is a variant of [`Mint`](#mint) that adds a recipient field.
{% endhint %}

<table><thead><tr><th width="225.7152099609375" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>token_id</code></td><td valign="top"><code>Array&#x3C;uint8; length=32></code>: The hash of the <a href="#tokencreation">TokenCreation</a> transaction that created the token. This is calculated using the keccak256 hash over the data encoded in the same way as for signing.</td></tr><tr><td valign="top"><code>recipient</code></td><td valign="top"><a href="#publickeybytes"><code>PublicKeyBytes</code></a>: Recipient of the new funds.</td></tr><tr><td valign="top"><code>amount</code></td><td valign="top"><a href="#amount"><code>Amount</code></a>: Amount to mint.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/sb2THKFjqK5nBvKoVYfp" %}

## Burn

Burn an amount of some custom token.

| Fields     |                                          |
| ---------- | ---------------------------------------- |
| `token_id` | [`TokenId`](#tokenid): The token to burn |
| `amount`   | [`Amount`](#amount): The amount to burn  |

**JSON Schema:**

{% file src="/files/a6sLNhw8oBVzUNIaEG7i" %}

## BurnOperation

Burn an amount of some custom token.

| Fields     |                                          |
| ---------- | ---------------------------------------- |
| `token_id` | [`TokenId`](#tokenid): The token to burn |
| `amount`   | [`Amount`](#amount): The amount to burn  |

**JSON Schema:**

{% file src="/files/130BydzmNYWdrungDao0" %}

***

## MultiSig

<table><thead><tr><th width="225.9140625">Fields</th><th></th></tr></thead><tbody><tr><td><code>config</code></td><td>​<a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#multisigconfig"><code>MultiSigConfig</code></a>​</td></tr><tr><td><code>signatures</code></td><td><code>Array&#x3C;(</code><a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#publickeybytes"><code>PublicKeyBytes</code></a><code>,</code> <a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#signature"><code>Signature</code></a><code>)></code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/8OHteGHssElvY6QB0T76" %}

***

## MultiSigConfig

Determines the address of a multisig account.

<table><thead><tr><th width="226.41015625">Fields</th><th></th></tr></thead><tbody><tr><td><code>authorized_signers</code></td><td><code>Array&#x3C;</code><a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#publickeybytes"><code>PublicKeyBytes</code></a><code>></code>: The accounts which may sign for a multisig transaction to be accepted.</td></tr><tr><td><code>quorum</code></td><td>​<a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#quorum"><code>Quorum</code></a>: The minimum number of accounts that must sign.</td></tr><tr><td><code>nonce</code></td><td>​<a href="https://app.gitbook.com/o/6QvwPhkSuFHVCt22CHAH/s/PLmwKHYt9IQXlVvNGdPk/~/diff/~/changes/221/~/revisions/gCInqu9cV36lr9Af1DiP/fastset/developers/fastset-api/data-types#nonce"><code>Nonce</code></a>: Arbitrary data. Useful for creating multiple distinct multisig accounts with the same committee/quorum.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/BEQWux8dy4GvWvYYQJd5" %}

***

## Nonce

`uint64`

**JSON Schema:**

{% file src="/files/8bnKLgnZT7yqyH4MCLxw" %}

***

## NonceRange

<table><thead><tr><th width="226.1058349609375" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>start</code></td><td valign="top"><a href="#nonce"><code>Nonce</code></a></td></tr><tr><td valign="top"><code>limit</code></td><td valign="top"><code>uint</code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/8bnKLgnZT7yqyH4MCLxw" %}

***

## Operation

One of various types of actions that be put in a multi-operation transaction. Payload structs are different from the top-level [`ClaimType`](#claimtype) where we need to support multiple operations with different receivers.

<table><thead><tr><th width="226.1953125">Variants</th><th></th></tr></thead><tbody><tr><td><code>TokenTransfer</code></td><td><a href="#tokentransferoperation"><code>TokenTransferOperation</code></a>: Transfer or burn tokens, that is transfer tokens to the burn address.</td></tr><tr><td><code>TokenCreation</code></td><td><a href="#tokencreation"><code>TokenCreation</code></a>: Create custom token</td></tr><tr><td><code>TokenManagement</code></td><td><a href="#tokenmanagement"><code>TokenManagement</code></a>: Modify custom token</td></tr><tr><td><code>ExternalClaim</code></td><td><a href="#externalclaim"><code>ExternalClaim</code></a>: Arbitrary byte data</td></tr><tr><td><code>Mint</code></td><td><a href="#mintoperation"><code>MintOperation</code></a>: Mint funds in a custom token</td></tr><tr><td><code>Burn</code></td><td><a href="#burn"><code>Burn</code></a>: burns the amount of token specified</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/MLPrqfobovK4tZownTfj" %}

***

## OperationBundle

`Array<`[`Operation`](#operation)`>`

**JSON Schema:**

{% file src="/files/1XlMUm416Ts73qGPdKh0" %}

***

## ProxySubmitTransactionResult

<table><thead><tr><th width="225.7578125">Variants</th><th></th></tr></thead><tbody><tr><td><code>Success</code></td><td><a href="#transactioncertificate"><code>TransactionCertificate</code></a></td></tr><tr><td><code>IncompleteMultiSig</code></td><td><code>array</code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/lpEsGWakUYHKje9rs4EN" %}

***

## PublicKeyBytes

A byte sequence that names an entity on or off the Fast network, depending on the name of type which stores this value.

It is typically encoded as an Ed25519 public key, but may have other formats, including but not limited to, a 32-byte string composed of all 0x00 bytes (burn address). Note that any funds sent to the burn address will be permanently lost!

`Array<uint8; length=32>`

**JSON Schema:**

{% file src="/files/RgAOBP1zf4s8Zlyp5Ktw" %}

***

## Quorum

`uint64`

**JSON Schema:**

{% file src="/files/QwasqL5OFg0ZeidyHMUS" %}

***

## Signature

An Ed25519 signature.

`Array<uint8; length=64>`

**JSON Schema:**

{% file src="/files/7pRbCZaCsY3Xz0Nz4Nzn" %}

***

## SignatureOrMultiSig

<table><thead><tr><th width="226.1058349609375" valign="top">Variants</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>Signature</code></td><td valign="top"><a href="#signature"><code>Signature</code></a></td></tr><tr><td valign="top"><code>MultiSig</code></td><td valign="top"><a href="#multisig"><code>MultiSig</code></a></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/rkjBK6BiTcbOVjJaUCeF" %}

***

## State

`Array<uint8; length=32>`

**JSON Schema:**

{% file src="/files/8JwnfQg46LYvcGhytYaJ" %}

***

## StateKey

`Array<uint8; length=32>`

**JSON Schema:**

{% file src="/files/EAYHTAw1U1FKn3iq05oc" %}

***

## TokenCreation

Create a new token. The token ID is derived from the [`Transaction`](#transaction) , thus it also depends on the creator and the [`Nonce`](#nonce).

<table><thead><tr><th width="226.05255126953125" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>token_name</code></td><td valign="top"><code>string</code>: Human-readable name</td></tr><tr><td valign="top"><code>decimals</code></td><td valign="top"><code>uint8</code>: Power of 10 that should be considered a full unit of this token. An <a href="#amount"><code>Amount</code></a> is still always in least units.</td></tr><tr><td valign="top"><code>initial_amount</code></td><td valign="top"><a href="#amount"><code>Amount</code></a>: Initial balance, which will be held by the creator of the token.</td></tr><tr><td valign="top"><code>mints</code></td><td valign="top"><code>Array&#x3C;</code><a href="#publickeybytes"><code>PublicKeyBytes</code></a><code>></code>: Addresses which will be able to create more of this token.</td></tr><tr><td valign="top"><code>user_data</code></td><td valign="top"><a href="#userdata"><code>UserData</code></a>: Arbitrary userdata attached to this transaction</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/lIuDSwg0XDFnTVGAZtSC" %}

***

## ExternalClaim

A claim on some arbitrary data. A set of verifiers (external to the Fast network) verify the claim and attach their signatures to it. Then, Fast validators validates these signatures upon receiving such claim.

| Field      | Description                               |
| ---------- | ----------------------------------------- |
| claim      | [`ExternalClaimBody`](#externalclaimbody) |
| signatures | `Array<`[`VerifierSig`](#verifiersig)`>`  |

**JSON Schema:**

{% file src="/files/4eKs8jC9KsnaM7V1aRP2" %}

***

## ExternalClaimBody

| Fields               |                                                |
| -------------------- | ---------------------------------------------- |
| `verifier_committee` | `Array<`[`FastSetAddress`](#fastsetaddress)`>` |
| `verifier_quorum`    | [`Quorum`](#quorum)                            |
| `claim_data`         | [`ClaimData`](#claimdata)                      |

**JSON Schema:**

{% file src="/files/2ygVgHeFywXJzehQPXTw" %}

## ClaimData

`Array<uint8>`

**JSON Schema:**

{% file src="/files/CP5EgZS1VzQD0iaEUraR" %}

***

## VerifierSig

| Fields          |                                                                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `verifier_addr` | [`PublicKeyBytes`](#publickeybytes): the public key (address) of the verifier                                                     |
| `sig`           | [`Signature`](#signature): ED25519 signature over the entire [`Transaction`](#transaction) struct without any verifier signatures |

**JSON Schema:**

{% file src="/files/vSLXecQHU7HciUkmt18Q" %}

***

## TokenId

`Array<uint8; length=32>`

**JSON Schema:**

{% file src="/files/BZAUOWHht1UUVVQVQPgR" %}

***

## TokenInfoResponse

<table><thead><tr><th width="232.26702880859375">Fields</th><th></th></tr></thead><tbody><tr><td><code>requested_token_metadata</code></td><td><code>Array&#x3C;(Array&#x3C;uint8; length=32>,</code><a href="#tokenmetadata"><code>TokenMetadata</code></a><code>)></code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/FFY5BQAlJRIWbKWnTd9X" %}

***

## TokenManagement

Manage an existing token.

<table><thead><tr><th width="225.9246826171875" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>token_id</code></td><td valign="top"><code>Array&#x3C;uint8; length=32></code>: The id of the token to be managed</td></tr><tr><td valign="top"><code>update_id</code></td><td valign="top"><a href="#nonce"><code>Nonce</code></a>: The update id for this token (used for sequencing). Each update id must be one greater than the last.</td></tr><tr><td valign="top"><code>new_admin</code></td><td valign="top"><a href="#publickeybytes"><code>PublicKeyBytes</code></a> (optional): The new admin address; preserves existing admin if <code>None</code>.</td></tr><tr><td valign="top"><code>mints</code></td><td valign="top"><code>Array&#x3C;(</code><a href="#addresschange"><code>AddressChange</code></a><code>,</code><a href="#publickeybytes"><code>PublicKeyBytes</code></a><code>)></code>: The minter addresses to be added/removed.</td></tr><tr><td valign="top"><code>user_data</code></td><td valign="top"><a href="#userdata"><code>UserData</code></a>: Arbitrary userdata attached to this transaction.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/8Mje8pVm5rHZnjMBivMM" %}

***

## TokenMetadata

Encodes metadata about a custom token.

<table><thead><tr><th width="225.796875" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>update_id</code></td><td valign="top"><a href="#nonce"><code>Nonce</code></a>: The number of management operations applied to some token.</td></tr><tr><td valign="top"><code>admin</code></td><td valign="top"><a href="#publickeybytes"><code>PublicKeyBytes</code></a>: The current token admin.</td></tr><tr><td valign="top"><code>token_name</code></td><td valign="top"><code>string</code>: The name of the token.</td></tr><tr><td valign="top"><code>decimals</code></td><td valign="top"><code>uint8</code>: The number of decimals for this token.</td></tr><tr><td valign="top"><code>total_supply</code></td><td valign="top"><a href="#amount"><code>Amount</code></a>: The total supply for this token.</td></tr><tr><td valign="top"><code>mints</code></td><td valign="top"><code>Array&#x3C;</code><a href="#publickeybytes"><code>PublicKeyBytes</code></a><code>></code>: The authorized minting addresses for this token.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/IEjQjfT7zCEnFGv2uYU1" %}

***

## TokenTransfer

Transfer tokens to another address.

<table><thead><tr><th width="226.44317626953125">Fields</th><th></th></tr></thead><tbody><tr><td><code>token_id</code></td><td><code>Array&#x3C;uint8; length=32></code>: Token ID to transfer.</td></tr><tr><td><code>amount</code></td><td><a href="#amount"><code>Amount</code></a>: Amount to transfer.</td></tr><tr><td><code>user_data</code></td><td><a href="#userdata"><code>UserData</code></a>: Extra data field to associate with this transfer.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/pZrg98aVtuFfVmCnG5h6" %}

***

## TokenTransferOperation

Transfer tokens to another address. This is a variant of [`TokenTransfer`](#tokentransfer) that adds a recipient field.

<table><thead><tr><th width="226.44317626953125">Fields</th><th></th></tr></thead><tbody><tr><td><code>token_id</code></td><td><code>Array&#x3C;uint8; length=32></code>: Token ID to transfer.</td></tr><tr><td><code>recipient</code></td><td><a href="#publickeybytes"><code>PublicKeyBytes</code></a>: Recipient.</td></tr><tr><td><code>amount</code></td><td><a href="#amount"><code>Amount</code></a>: Amount to transfer.</td></tr><tr><td><code>user_data</code></td><td><a href="#userdata"><code>UserData</code></a>: Extra data field to associate with this transfer.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/AkuTyVNmgLGTlWt6NHPR" %}

***

## Transaction

Action that can be submitted and confirmed on the network.

<table><thead><tr><th width="225.69390869140625" valign="top">Fields</th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><code>sender</code></td><td valign="top"><a href="#publickeybytes"><code>PublicKeyBytes</code></a>: Address of sender, and intended signer of this transaction.</td></tr><tr><td valign="top"><code>recipient</code></td><td valign="top"><a href="#address"><code>Address</code></a>: Address of the recipient or the burn address.</td></tr><tr><td valign="top"><code>nonce</code></td><td valign="top"><a href="#nonce"><code>Nonce</code></a>: A sequence number. Transactions sent by the same account are ordered by nonce.</td></tr><tr><td valign="top"><code>timestamp_nanos</code></td><td valign="top"><code>uint128</code>: Nanos since the Unix epoch.</td></tr><tr><td valign="top"><code>claim</code></td><td valign="top"><a href="#claimtype"><code>ClaimType</code></a>: Type-dependent data.</td></tr><tr><td valign="top"><code>archival</code></td><td valign="top"><code>boolean</code>: Specifies whether this transaction should be archived. When an archived transaction is confirmed on a validator, subsequent <code>is_settled</code> requests to that validator must succeed.</td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/XjnbNf7RhuGcHkljHquK" %}

***

## TransactionCertificate

A [`Transaction`](#transaction) along with a quorum of validator signatures.

<table><thead><tr><th width="225.57318115234375">Fields</th><th></th></tr></thead><tbody><tr><td><code>envelope</code></td><td><a href="#transactionenvelope"><code>TransactionEnvelope</code></a></td></tr><tr><td><code>signatures</code></td><td><code>Array&#x3C;(</code><a href="#publickeybytes"><code>PublicKeyBytes</code></a><code>,</code><a href="#signature"><code>Signature</code></a><code>)></code></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/O740Jy4V0SK8pncP608v" %}

***

## TransactionEnvelope

A [`Transaction`](#transaction) along with its sender's signature.

<table><thead><tr><th width="225.750732421875">Fields</th><th></th></tr></thead><tbody><tr><td><code>transaction</code></td><td><a href="#transaction"><code>Transaction</code></a></td></tr><tr><td><code>signature</code></td><td><a href="#signatureormultisig"><code>SignatureOrMultiSig</code></a></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/1tbhLdS2S0hTDzRjQEee" %}

***

## UserData

`Option<Array<uint8; length=32>>`

**JSON Schema:**

{% file src="/files/1aQgTrALAhebiRBvps6v" %}

***

## ValidatedTransaction

A [`Transaction`](#transaction) along with the signature from one validator.

<table><thead><tr><th width="226.17333984375">Fields</th><th></th></tr></thead><tbody><tr><td><code>value</code></td><td><a href="#transactionenvelope"><code>TransactionEnvelope</code></a></td></tr><tr><td><code>validator</code></td><td><a href="#publickeybytes"><code>PublicKeyBytes</code></a></td></tr><tr><td><code>signature</code></td><td><a href="#signature"><code>Signature</code></a></td></tr></tbody></table>

**JSON Schema:**

{% file src="/files/WsFQp6UfWC9ghQSgg6B0" %}

A byte sequence that names an entity on or off the Fast network, depending on the name of type which stores this value.


---

# Agent Instructions: 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 current page URL with the `ask` query parameter:

```
GET https://docs.fast.xyz/fast-archived/developers/fast-api/data-types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
