# Metaplex Token Metadata decoder (Carbon 2.0)

> Decode Metaplex Token Metadata instructions and accounts in Rust with the carbon-mpl-token-metadata-decoder crate.

`carbon-mpl-token-metadata-decoder` decodes the instructions and accounts of the Metaplex Token Metadata program (`metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`): 58 instructions, 14 account types. It is generated with Codama from the program's IDL; see [decoders](https://carbon.sevenlabs.org/concepts/decoders.md) for how decoders plug into a pipeline.

|                  |                                                                                                                               |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Crate            | [`carbon-mpl-token-metadata-decoder`](https://crates.io/crates/carbon-mpl-token-metadata-decoder/2.0.0) 2.0.0                 |
| Install          | `cargo add carbon-mpl-token-metadata-decoder@2.0.0`                                                                           |
| Program ID       | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` (`carbon_mpl_token_metadata_decoder::PROGRAM_ID`)                               |
| Category         | [NFTs & metadata](https://carbon.sevenlabs.org/decoders/nfts.md)                                                              |
| Decoder          | `carbon_mpl_token_metadata_decoder::MplTokenMetadataDecoder`                                                                  |
| Instruction enum | `instructions::MplTokenMetadataInstruction`                                                                                   |
| Account enum     | `accounts::MplTokenMetadataAccount`                                                                                           |
| Features         | `serde`, `postgres`, `graphql` (none enabled by default)                                                                      |
| API docs         | [docs.rs/carbon-mpl-token-metadata-decoder/2.0.0](https://docs.rs/carbon-mpl-token-metadata-decoder/2.0.0)                    |
| Source           | [decoders/mpl-token-metadata-decoder](https://github.com/sevenlabs-hq/carbon/tree/v2.0.0/decoders/mpl-token-metadata-decoder) |

Other NFT and metadata decoders: [Bubblegum](https://carbon.sevenlabs.org/decoders/bubblegum.md), [Metaplex Core](https://carbon.sevenlabs.org/decoders/mpl-core.md). To decode several in one pipeline, see [nFT and metadata decoders](https://carbon.sevenlabs.org/decoders/nfts.md).

The `serde` feature derives `Serialize`/`Deserialize` on every type, `postgres` adds tables and processors for [Postgres](https://carbon.sevenlabs.org/guides/postgres.md), and `graphql` adds a schema for the [GraphQL server](https://carbon.sevenlabs.org/guides/graphql.md).

## Usage

This program crawls recent Metaplex Token Metadata transactions from the public RPC and prints every decoded `CreateMetadataAccountV3` instruction. Add the dependencies:

```sh
cargo add carbon-core@2.0.0 carbon-mpl-token-metadata-decoder@2.0.0 carbon-rpc-transaction-crawler-datasource@2.0.0 carbon-log-metrics@2.0.0 env_logger tokio --features tokio/full
```

`src/main.rs`:

```rust
use {
    carbon_core::{
        error::CarbonResult, instruction::InstructionProcessorInputType, pipeline::Pipeline,
        processor::Processor,
    },
    carbon_log_metrics::LogMetrics,
    carbon_mpl_token_metadata_decoder::{
        instructions::MplTokenMetadataInstruction, MplTokenMetadataDecoder, PROGRAM_ID,
    },
    carbon_rpc_transaction_crawler_datasource::{ConnectionConfig, Filters, RpcTransactionCrawler},
    std::sync::Arc,
};

#[tokio::main]
async fn main() -> CarbonResult<()> {
    env_logger::init();

    // Fetches the program's recent transactions over JSON-RPC, newest first.
    let datasource = RpcTransactionCrawler::new(
        "https://api.mainnet-beta.solana.com".to_string(),
        PROGRAM_ID,
        ConnectionConfig::default(),
        Filters::new(None, None, None),
        None,
    );

    Pipeline::builder()
        .datasource(datasource)
        .metrics(Arc::new(LogMetrics::new()))
        .instruction(MplTokenMetadataDecoder, InstructionLogger)
        .build()?
        .run()
        .await
}

struct InstructionLogger;

impl Processor<InstructionProcessorInputType<'_, MplTokenMetadataInstruction>> for InstructionLogger {
    async fn process(
        &mut self,
        input: &InstructionProcessorInputType<'_, MplTokenMetadataInstruction>,
    ) -> CarbonResult<()> {
        let signature = input.metadata.transaction_metadata.signature;
        if let MplTokenMetadataInstruction::CreateMetadataAccountV3 { data, accounts, .. } = input.decoded_instruction {
            println!("create_metadata_account_v3 {signature}: {data:?} metadata={}", accounts.metadata);
        }
        Ok(())
    }
}
```

```sh
RUST_LOG=info cargo run
```

Each `CreateMetadataAccountV3` instruction prints one line with the transaction signature and the decoded `CreateMetadataAccountV3` data. The public endpoint rate-limits requests, so the first lines can take a while; use your own RPC URL for anything beyond a test. See [stream with RPC](https://carbon.sevenlabs.org/guides/stream-with-rpc.md) for the crawler options.

### Decode accounts

The transaction crawler emits transactions only. To decode accounts, use a datasource that emits account updates. This program subscribes to the program's accounts with `programSubscribe` on the public WebSocket endpoint and prints every decoded `CollectionAuthorityRecord` account as it changes. Add the datasource and the Solana RPC types it takes:

```sh
cargo add carbon-rpc-program-subscribe-datasource@2.0.0 solana-client@4.2.2
```

`src/main.rs`:

```rust
use {
    carbon_core::{
        account::AccountProcessorInputType, error::CarbonResult, pipeline::Pipeline,
        processor::Processor,
    },
    carbon_log_metrics::LogMetrics,
    carbon_mpl_token_metadata_decoder::{
        accounts::MplTokenMetadataAccount, MplTokenMetadataDecoder, PROGRAM_ID,
    },
    carbon_rpc_program_subscribe_datasource::{Filters, RpcProgramSubscribe},
    solana_client::rpc_config::{RpcAccountInfoConfig, RpcProgramAccountsConfig, UiAccountEncoding},
    std::sync::Arc,
};

#[tokio::main]
async fn main() -> CarbonResult<()> {
    env_logger::init();

    // Streams every change to an account owned by the program (programSubscribe).
    let config = RpcProgramAccountsConfig {
        account_config: RpcAccountInfoConfig {
            encoding: Some(UiAccountEncoding::Base64),
            ..Default::default()
        },
        ..Default::default()
    };
    let datasource = RpcProgramSubscribe::new(
        "wss://api.mainnet-beta.solana.com".to_string(),
        Filters::new(PROGRAM_ID, Some(config)),
    );

    Pipeline::builder()
        .datasource(datasource)
        .metrics(Arc::new(LogMetrics::new()))
        .account(MplTokenMetadataDecoder, AccountLogger)
        .build()?
        .run()
        .await
}

struct AccountLogger;

impl Processor<AccountProcessorInputType<'_, MplTokenMetadataAccount>> for AccountLogger {
    async fn process(
        &mut self,
        input: &AccountProcessorInputType<'_, MplTokenMetadataAccount>,
    ) -> CarbonResult<()> {
        if let MplTokenMetadataAccount::CollectionAuthorityRecord(collection_authority_record) = &input.decoded_account.data {
            println!("collection_authority_record {}: {collection_authority_record:?}", input.metadata.pubkey);
        }
        Ok(())
    }
}
```

```sh
RUST_LOG=info cargo run
```

Each update to a `CollectionAuthorityRecord` account prints its address and decoded fields; the program runs until you stop it. Cargo resolves `solana-client` to 4.2.2, the exact version the datasource pins, so both use the same `RpcProgramAccountsConfig` type. To load every existing account once instead of streaming changes, see [load account state](https://carbon.sevenlabs.org/guides/load-account-state.md).

## Instructions

Variants of `MplTokenMetadataInstruction`. Each is `MplTokenMetadataInstruction::<Variant> { program_id, data, accounts }`, where `data` and `accounts` are the types listed under the variant, exported from `carbon_mpl_token_metadata_decoder::instructions`. Discriminators are the leading bytes of the instruction data, in hex.

**How an instruction decodes.** The decoder returns a variant only when all of these hold; otherwise the instruction is skipped and no processor is called:

1. The instruction's program ID is `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`.
2. The data starts with the variant's discriminator, and the rest deserializes into its data type.
3. The instruction has at least as many accounts as the variant requires (the "Required accounts" count under each variant).

**Accounts.** They are matched by position, in the order listed. An account marked _optional_ is `None` only when the instruction ends before it; Anchor programs pass the program ID as a placeholder for an omitted optional account, so check for `Some(PROGRAM_ID)` too. Accounts after the listed ones are in `accounts.remaining` as `AccountMeta`s. The decoder doesn't record whether an account signed or was writable: read that from `input.raw_instruction.accounts[i].is_signer` and `.is_writable`, which follow the same order. It doesn't check signer, writable, owner or PDA constraints either; the program enforced those when the transaction executed, so a decoded instruction from a successful transaction already satisfied them.

### `ApproveCollectionAuthority`

Discriminator `17` · data `ApproveCollectionAuthority` · accounts `ApproveCollectionAuthorityInstructionAccounts`.

No data fields.

Required accounts: 7 (8 listed); extras go to `remaining`.

Fields of `ApproveCollectionAuthorityInstructionAccounts`, in account order:

| #  | Field                         | Type               |
| -- | ----------------------------- | ------------------ |
| 0  | `collection_authority_record` | `Pubkey`           |
| 1  | `new_collection_authority`    | `Pubkey`           |
| 2  | `update_authority`            | `Pubkey`           |
| 3  | `payer`                       | `Pubkey`           |
| 4  | `metadata`                    | `Pubkey`           |
| 5  | `mint`                        | `Pubkey`           |
| 6  | `system_program`              | `Pubkey`           |
| 7  | `rent`                        | `Option<Pubkey>`   |
| 8… | `remaining`                   | `Vec<AccountMeta>` |

### `ApproveUseAuthority`

Discriminator `14` · data `ApproveUseAuthority` · accounts `ApproveUseAuthorityInstructionAccounts`.

| Field                        | Type                                                  |
| ---------------------------- | ----------------------------------------------------- |
| `approve_use_authority_args` | [`ApproveUseAuthorityArgs`](#approveuseauthorityargs) |

Required accounts: 10 (11 listed); extras go to `remaining`.

Fields of `ApproveUseAuthorityInstructionAccounts`, in account order:

| #   | Field                  | Type               |
| --- | ---------------------- | ------------------ |
| 0   | `use_authority_record` | `Pubkey`           |
| 1   | `owner`                | `Pubkey`           |
| 2   | `payer`                | `Pubkey`           |
| 3   | `user`                 | `Pubkey`           |
| 4   | `owner_token_account`  | `Pubkey`           |
| 5   | `metadata`             | `Pubkey`           |
| 6   | `mint`                 | `Pubkey`           |
| 7   | `burner`               | `Pubkey`           |
| 8   | `token_program`        | `Pubkey`           |
| 9   | `system_program`       | `Pubkey`           |
| 10  | `rent`                 | `Option<Pubkey>`   |
| 11… | `remaining`            | `Vec<AccountMeta>` |

### `BubblegumSetCollectionSize`

Discriminator `24` · data `BubblegumSetCollectionSize` · accounts `BubblegumSetCollectionSizeInstructionAccounts`.

| Field                      | Type                                              |
| -------------------------- | ------------------------------------------------- |
| `set_collection_size_args` | [`SetCollectionSizeArgs`](#setcollectionsizeargs) |

Required accounts: 4 (5 listed); extras go to `remaining`.

Fields of `BubblegumSetCollectionSizeInstructionAccounts`, in account order:

| #  | Field                         | Type               |
| -- | ----------------------------- | ------------------ |
| 0  | `collection_metadata`         | `Pubkey`           |
| 1  | `collection_authority`        | `Pubkey`           |
| 2  | `collection_mint`             | `Pubkey`           |
| 3  | `bubblegum_signer`            | `Pubkey`           |
| 4  | `collection_authority_record` | `Option<Pubkey>`   |
| 5… | `remaining`                   | `Vec<AccountMeta>` |

### `Burn`

Discriminator `29` · data `Burn` · accounts `BurnInstructionAccounts`.

| Field       | Type                    |
| ----------- | ----------------------- |
| `burn_args` | [`BurnArgs`](#burnargs) |

Required accounts: 14; extras go to `remaining`.

Fields of `BurnInstructionAccounts`, in account order:

| #   | Field                  | Type               |
| --- | ---------------------- | ------------------ |
| 0   | `authority`            | `Pubkey`           |
| 1   | `collection_metadata`  | `Option<Pubkey>`   |
| 2   | `metadata`             | `Pubkey`           |
| 3   | `edition`              | `Option<Pubkey>`   |
| 4   | `mint`                 | `Pubkey`           |
| 5   | `token`                | `Pubkey`           |
| 6   | `master_edition`       | `Option<Pubkey>`   |
| 7   | `master_edition_mint`  | `Option<Pubkey>`   |
| 8   | `master_edition_token` | `Option<Pubkey>`   |
| 9   | `edition_marker`       | `Option<Pubkey>`   |
| 10  | `token_record`         | `Option<Pubkey>`   |
| 11  | `system_program`       | `Pubkey`           |
| 12  | `sysvar_instructions`  | `Pubkey`           |
| 13  | `spl_token_program`    | `Pubkey`           |
| 14… | `remaining`            | `Vec<AccountMeta>` |

### `BurnEditionNft`

Discriminator `25` · data `BurnEditionNft` · accounts `BurnEditionNftInstructionAccounts`.

No data fields.

Required accounts: 10; extras go to `remaining`.

Fields of `BurnEditionNftInstructionAccounts`, in account order:

| #   | Field                          | Type               |
| --- | ------------------------------ | ------------------ |
| 0   | `metadata`                     | `Pubkey`           |
| 1   | `owner`                        | `Pubkey`           |
| 2   | `print_edition_mint`           | `Pubkey`           |
| 3   | `master_edition_mint`          | `Pubkey`           |
| 4   | `print_edition_token_account`  | `Pubkey`           |
| 5   | `master_edition_token_account` | `Pubkey`           |
| 6   | `master_edition_account`       | `Pubkey`           |
| 7   | `print_edition_account`        | `Pubkey`           |
| 8   | `edition_marker_account`       | `Pubkey`           |
| 9   | `spl_token_program`            | `Pubkey`           |
| 10… | `remaining`                    | `Vec<AccountMeta>` |

### `BurnNft`

Discriminator `1d` · data `BurnNft` · accounts `BurnNftInstructionAccounts`.

No data fields.

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `BurnNftInstructionAccounts`, in account order:

| #  | Field                    | Type               |
| -- | ------------------------ | ------------------ |
| 0  | `metadata`               | `Pubkey`           |
| 1  | `owner`                  | `Pubkey`           |
| 2  | `mint`                   | `Pubkey`           |
| 3  | `token_account`          | `Pubkey`           |
| 4  | `master_edition_account` | `Pubkey`           |
| 5  | `spl_token_program`      | `Pubkey`           |
| 6  | `collection_metadata`    | `Option<Pubkey>`   |
| 7… | `remaining`              | `Vec<AccountMeta>` |

### `CloseAccounts`

Discriminator `39` · data `CloseAccounts` · accounts `CloseAccountsInstructionAccounts`.

No data fields.

Required accounts: 5; extras go to `remaining`.

Fields of `CloseAccountsInstructionAccounts`, in account order:

| #  | Field         | Type               |
| -- | ------------- | ------------------ |
| 0  | `metadata`    | `Pubkey`           |
| 1  | `edition`     | `Pubkey`           |
| 2  | `mint`        | `Pubkey`           |
| 3  | `authority`   | `Pubkey`           |
| 4  | `destination` | `Pubkey`           |
| 5… | `remaining`   | `Vec<AccountMeta>` |

### `CloseEscrowAccount`

Discriminator `27` · data `CloseEscrowAccount` · accounts `CloseEscrowAccountInstructionAccounts`.

No data fields.

Required accounts: 8; extras go to `remaining`.

Fields of `CloseEscrowAccountInstructionAccounts`, in account order:

| #  | Field                 | Type               |
| -- | --------------------- | ------------------ |
| 0  | `escrow`              | `Pubkey`           |
| 1  | `metadata`            | `Pubkey`           |
| 2  | `mint`                | `Pubkey`           |
| 3  | `token_account`       | `Pubkey`           |
| 4  | `edition`             | `Pubkey`           |
| 5  | `payer`               | `Pubkey`           |
| 6  | `system_program`      | `Pubkey`           |
| 7  | `sysvar_instructions` | `Pubkey`           |
| 8… | `remaining`           | `Vec<AccountMeta>` |

### `Collect`

Discriminator `36` · data `Collect` · accounts `CollectInstructionAccounts`.

No data fields.

Required accounts: 2; extras go to `remaining`.

Fields of `CollectInstructionAccounts`, in account order:

| #  | Field       | Type               |
| -- | ----------- | ------------------ |
| 0  | `authority` | `Pubkey`           |
| 1  | `recipient` | `Pubkey`           |
| 2… | `remaining` | `Vec<AccountMeta>` |

### `ConvertMasterEditionV1ToV2`

Discriminator `0c` · data `ConvertMasterEditionV1ToV2` · accounts `ConvertMasterEditionV1ToV2InstructionAccounts`.

No data fields.

Required accounts: 3; extras go to `remaining`.

Fields of `ConvertMasterEditionV1ToV2InstructionAccounts`, in account order:

| #  | Field            | Type               |
| -- | ---------------- | ------------------ |
| 0  | `master_edition` | `Pubkey`           |
| 1  | `one_time_auth`  | `Pubkey`           |
| 2  | `printing_mint`  | `Pubkey`           |
| 3… | `remaining`      | `Vec<AccountMeta>` |

### `Create`

Discriminator `2a` · data `Create` · accounts `CreateInstructionAccounts`.

| Field         | Type                        |
| ------------- | --------------------------- |
| `create_args` | [`CreateArgs`](#createargs) |

Required accounts: 8 (9 listed); extras go to `remaining`.

Fields of `CreateInstructionAccounts`, in account order:

| #  | Field                 | Type               |
| -- | --------------------- | ------------------ |
| 0  | `metadata`            | `Pubkey`           |
| 1  | `master_edition`      | `Option<Pubkey>`   |
| 2  | `mint`                | `Pubkey`           |
| 3  | `authority`           | `Pubkey`           |
| 4  | `payer`               | `Pubkey`           |
| 5  | `update_authority`    | `Pubkey`           |
| 6  | `system_program`      | `Pubkey`           |
| 7  | `sysvar_instructions` | `Pubkey`           |
| 8  | `spl_token_program`   | `Option<Pubkey>`   |
| 9… | `remaining`           | `Vec<AccountMeta>` |

### `CreateEscrowAccount`

Discriminator `26` · data `CreateEscrowAccount` · accounts `CreateEscrowAccountInstructionAccounts`.

No data fields.

Required accounts: 8 (9 listed); extras go to `remaining`.

Fields of `CreateEscrowAccountInstructionAccounts`, in account order:

| #  | Field                 | Type               |
| -- | --------------------- | ------------------ |
| 0  | `escrow`              | `Pubkey`           |
| 1  | `metadata`            | `Pubkey`           |
| 2  | `mint`                | `Pubkey`           |
| 3  | `token_account`       | `Pubkey`           |
| 4  | `edition`             | `Pubkey`           |
| 5  | `payer`               | `Pubkey`           |
| 6  | `system_program`      | `Pubkey`           |
| 7  | `sysvar_instructions` | `Pubkey`           |
| 8  | `authority`           | `Option<Pubkey>`   |
| 9… | `remaining`           | `Vec<AccountMeta>` |

### `CreateMasterEdition`

Discriminator `0a` · data `CreateMasterEdition` · accounts `CreateMasterEditionInstructionAccounts`.

No data fields.

Required accounts: 9; extras go to `remaining`.

Fields of `CreateMasterEditionInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `edition`          | `Pubkey`           |
| 1  | `mint`             | `Pubkey`           |
| 2  | `update_authority` | `Pubkey`           |
| 3  | `mint_authority`   | `Pubkey`           |
| 4  | `payer`            | `Pubkey`           |
| 5  | `metadata`         | `Pubkey`           |
| 6  | `token_program`    | `Pubkey`           |
| 7  | `system_program`   | `Pubkey`           |
| 8  | `rent`             | `Pubkey`           |
| 9… | `remaining`        | `Vec<AccountMeta>` |

### `CreateMasterEditionV3`

Discriminator `11` · data `CreateMasterEditionV3` · accounts `CreateMasterEditionV3InstructionAccounts`.

| Field                        | Type                                                  |
| ---------------------------- | ----------------------------------------------------- |
| `create_master_edition_args` | [`CreateMasterEditionArgs`](#createmastereditionargs) |

Required accounts: 8 (9 listed); extras go to `remaining`.

Fields of `CreateMasterEditionV3InstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `edition`          | `Pubkey`           |
| 1  | `mint`             | `Pubkey`           |
| 2  | `update_authority` | `Pubkey`           |
| 3  | `mint_authority`   | `Pubkey`           |
| 4  | `payer`            | `Pubkey`           |
| 5  | `metadata`         | `Pubkey`           |
| 6  | `token_program`    | `Pubkey`           |
| 7  | `system_program`   | `Pubkey`           |
| 8  | `rent`             | `Option<Pubkey>`   |
| 9… | `remaining`        | `Vec<AccountMeta>` |

### `CreateMetadataAccount`

Discriminator `00` · data `CreateMetadataAccount` · accounts `CreateMetadataAccountInstructionAccounts`.

No data fields.

Required accounts: 7; extras go to `remaining`.

Fields of `CreateMetadataAccountInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `mint`             | `Pubkey`           |
| 2  | `mint_authority`   | `Pubkey`           |
| 3  | `payer`            | `Pubkey`           |
| 4  | `update_authority` | `Pubkey`           |
| 5  | `system_program`   | `Pubkey`           |
| 6  | `rent`             | `Pubkey`           |
| 7… | `remaining`        | `Vec<AccountMeta>` |

### `CreateMetadataAccountV2`

Discriminator `10` · data `CreateMetadataAccountV2` · accounts `CreateMetadataAccountV2InstructionAccounts`.

No data fields.

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `CreateMetadataAccountV2InstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `mint`             | `Pubkey`           |
| 2  | `mint_authority`   | `Pubkey`           |
| 3  | `payer`            | `Pubkey`           |
| 4  | `update_authority` | `Pubkey`           |
| 5  | `system_program`   | `Pubkey`           |
| 6  | `rent`             | `Option<Pubkey>`   |
| 7… | `remaining`        | `Vec<AccountMeta>` |

### `CreateMetadataAccountV3`

Discriminator `21` · data `CreateMetadataAccountV3` · accounts `CreateMetadataAccountV3InstructionAccounts`.

| Field                             | Type                                                          |
| --------------------------------- | ------------------------------------------------------------- |
| `create_metadata_account_args_v3` | [`CreateMetadataAccountArgsV3`](#createmetadataaccountargsv3) |

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `CreateMetadataAccountV3InstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `mint`             | `Pubkey`           |
| 2  | `mint_authority`   | `Pubkey`           |
| 3  | `payer`            | `Pubkey`           |
| 4  | `update_authority` | `Pubkey`           |
| 5  | `system_program`   | `Pubkey`           |
| 6  | `rent`             | `Option<Pubkey>`   |
| 7… | `remaining`        | `Vec<AccountMeta>` |

### `Delegate`

Discriminator `2c` · data `Delegate` · accounts `DelegateInstructionAccounts`.

| Field           | Type                            |
| --------------- | ------------------------------- |
| `delegate_args` | [`DelegateArgs`](#delegateargs) |

Required accounts: 11 (14 listed); extras go to `remaining`.

Fields of `DelegateInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `delegate_record`             | `Option<Pubkey>`   |
| 1   | `delegate`                    | `Pubkey`           |
| 2   | `metadata`                    | `Pubkey`           |
| 3   | `master_edition`              | `Option<Pubkey>`   |
| 4   | `token_record`                | `Option<Pubkey>`   |
| 5   | `mint`                        | `Pubkey`           |
| 6   | `token`                       | `Option<Pubkey>`   |
| 7   | `authority`                   | `Pubkey`           |
| 8   | `payer`                       | `Pubkey`           |
| 9   | `system_program`              | `Pubkey`           |
| 10  | `sysvar_instructions`         | `Pubkey`           |
| 11  | `spl_token_program`           | `Option<Pubkey>`   |
| 12  | `authorization_rules_program` | `Option<Pubkey>`   |
| 13  | `authorization_rules`         | `Option<Pubkey>`   |
| 14… | `remaining`                   | `Vec<AccountMeta>` |

### `DeprecatedCreateMasterEdition`

Discriminator `02` · data `DeprecatedCreateMasterEdition` · accounts `DeprecatedCreateMasterEditionInstructionAccounts`.

No data fields.

Required accounts: 13; extras go to `remaining`.

Fields of `DeprecatedCreateMasterEditionInstructionAccounts`, in account order:

| #   | Field                                            | Type               |
| --- | ------------------------------------------------ | ------------------ |
| 0   | `edition`                                        | `Pubkey`           |
| 1   | `mint`                                           | `Pubkey`           |
| 2   | `printing_mint`                                  | `Pubkey`           |
| 3   | `one_time_printing_authorization_mint`           | `Pubkey`           |
| 4   | `update_authority`                               | `Pubkey`           |
| 5   | `printing_mint_authority`                        | `Pubkey`           |
| 6   | `mint_authority`                                 | `Pubkey`           |
| 7   | `metadata`                                       | `Pubkey`           |
| 8   | `payer`                                          | `Pubkey`           |
| 9   | `token_program`                                  | `Pubkey`           |
| 10  | `system_program`                                 | `Pubkey`           |
| 11  | `rent`                                           | `Pubkey`           |
| 12  | `one_time_printing_authorization_mint_authority` | `Pubkey`           |
| 13… | `remaining`                                      | `Vec<AccountMeta>` |

### `DeprecatedCreateReservationList`

Discriminator `06` · data `DeprecatedCreateReservationList` · accounts `DeprecatedCreateReservationListInstructionAccounts`.

No data fields.

Required accounts: 8; extras go to `remaining`.

Fields of `DeprecatedCreateReservationListInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `reservation_list` | `Pubkey`           |
| 1  | `payer`            | `Pubkey`           |
| 2  | `update_authority` | `Pubkey`           |
| 3  | `master_edition`   | `Pubkey`           |
| 4  | `resource`         | `Pubkey`           |
| 5  | `metadata`         | `Pubkey`           |
| 6  | `system_program`   | `Pubkey`           |
| 7  | `rent`             | `Pubkey`           |
| 8… | `remaining`        | `Vec<AccountMeta>` |

### `DeprecatedMintNewEditionFromMasterEditionViaPrintingToken`

Discriminator `03` · data `DeprecatedMintNewEditionFromMasterEditionViaPrintingToken` · accounts `DeprecatedMintNewEditionFromMasterEditionViaPrintingTokenInstructionAccounts`.

No data fields.

Required accounts: 15 (16 listed); extras go to `remaining`.

Fields of `DeprecatedMintNewEditionFromMasterEditionViaPrintingTokenInstructionAccounts`, in account order:

| #   | Field                     | Type               |
| --- | ------------------------- | ------------------ |
| 0   | `metadata`                | `Pubkey`           |
| 1   | `edition`                 | `Pubkey`           |
| 2   | `master_edition`          | `Pubkey`           |
| 3   | `mint`                    | `Pubkey`           |
| 4   | `mint_authority`          | `Pubkey`           |
| 5   | `printing_mint`           | `Pubkey`           |
| 6   | `master_token_account`    | `Pubkey`           |
| 7   | `edition_marker`          | `Pubkey`           |
| 8   | `burn_authority`          | `Pubkey`           |
| 9   | `payer`                   | `Pubkey`           |
| 10  | `master_update_authority` | `Pubkey`           |
| 11  | `master_metadata`         | `Pubkey`           |
| 12  | `token_program`           | `Pubkey`           |
| 13  | `system_program`          | `Pubkey`           |
| 14  | `rent`                    | `Pubkey`           |
| 15  | `reservation_list`        | `Option<Pubkey>`   |
| 16… | `remaining`               | `Vec<AccountMeta>` |

### `DeprecatedMintPrintingTokens`

Discriminator `09` · data `DeprecatedMintPrintingTokens` · accounts `DeprecatedMintPrintingTokensInstructionAccounts`.

No data fields.

Required accounts: 7; extras go to `remaining`.

Fields of `DeprecatedMintPrintingTokensInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `destination`      | `Pubkey`           |
| 1  | `printing_mint`    | `Pubkey`           |
| 2  | `update_authority` | `Pubkey`           |
| 3  | `metadata`         | `Pubkey`           |
| 4  | `master_edition`   | `Pubkey`           |
| 5  | `token_program`    | `Pubkey`           |
| 6  | `rent`             | `Pubkey`           |
| 7… | `remaining`        | `Vec<AccountMeta>` |

### `DeprecatedMintPrintingTokensViaToken`

Discriminator `08` · data `DeprecatedMintPrintingTokensViaToken` · accounts `DeprecatedMintPrintingTokensViaTokenInstructionAccounts`.

No data fields.

Required accounts: 9; extras go to `remaining`.

Fields of `DeprecatedMintPrintingTokensViaTokenInstructionAccounts`, in account order:

| #  | Field                                  | Type               |
| -- | -------------------------------------- | ------------------ |
| 0  | `destination`                          | `Pubkey`           |
| 1  | `token`                                | `Pubkey`           |
| 2  | `one_time_printing_authorization_mint` | `Pubkey`           |
| 3  | `printing_mint`                        | `Pubkey`           |
| 4  | `burn_authority`                       | `Pubkey`           |
| 5  | `metadata`                             | `Pubkey`           |
| 6  | `master_edition`                       | `Pubkey`           |
| 7  | `token_program`                        | `Pubkey`           |
| 8  | `rent`                                 | `Pubkey`           |
| 9… | `remaining`                            | `Vec<AccountMeta>` |

### `DeprecatedSetReservationList`

Discriminator `05` · data `DeprecatedSetReservationList` · accounts `DeprecatedSetReservationListInstructionAccounts`.

No data fields.

Required accounts: 3; extras go to `remaining`.

Fields of `DeprecatedSetReservationListInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `master_edition`   | `Pubkey`           |
| 1  | `reservation_list` | `Pubkey`           |
| 2  | `resource`         | `Pubkey`           |
| 3… | `remaining`        | `Vec<AccountMeta>` |

### `FreezeDelegatedAccount`

Discriminator `1a` · data `FreezeDelegatedAccount` · accounts `FreezeDelegatedAccountInstructionAccounts`.

No data fields.

Required accounts: 5; extras go to `remaining`.

Fields of `FreezeDelegatedAccountInstructionAccounts`, in account order:

| #  | Field           | Type               |
| -- | --------------- | ------------------ |
| 0  | `delegate`      | `Pubkey`           |
| 1  | `token_account` | `Pubkey`           |
| 2  | `edition`       | `Pubkey`           |
| 3  | `mint`          | `Pubkey`           |
| 4  | `token_program` | `Pubkey`           |
| 5… | `remaining`     | `Vec<AccountMeta>` |

### `Lock`

Discriminator `2e` · data `Lock` · accounts `LockInstructionAccounts`.

| Field       | Type                    |
| ----------- | ----------------------- |
| `lock_args` | [`LockArgs`](#lockargs) |

Required accounts: 10 (13 listed); extras go to `remaining`.

Fields of `LockInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `authority`                   | `Pubkey`           |
| 1   | `token_owner`                 | `Option<Pubkey>`   |
| 2   | `token`                       | `Pubkey`           |
| 3   | `mint`                        | `Pubkey`           |
| 4   | `metadata`                    | `Pubkey`           |
| 5   | `edition`                     | `Option<Pubkey>`   |
| 6   | `token_record`                | `Option<Pubkey>`   |
| 7   | `payer`                       | `Pubkey`           |
| 8   | `system_program`              | `Pubkey`           |
| 9   | `sysvar_instructions`         | `Pubkey`           |
| 10  | `spl_token_program`           | `Option<Pubkey>`   |
| 11  | `authorization_rules_program` | `Option<Pubkey>`   |
| 12  | `authorization_rules`         | `Option<Pubkey>`   |
| 13… | `remaining`                   | `Vec<AccountMeta>` |

### `Migrate`

Discriminator `30` · data `Migrate` · accounts `MigrateInstructionAccounts`.

No data fields.

Required accounts: 13 (15 listed); extras go to `remaining`.

Fields of `MigrateInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `metadata`                    | `Pubkey`           |
| 1   | `edition`                     | `Pubkey`           |
| 2   | `token`                       | `Pubkey`           |
| 3   | `token_owner`                 | `Pubkey`           |
| 4   | `mint`                        | `Pubkey`           |
| 5   | `payer`                       | `Pubkey`           |
| 6   | `authority`                   | `Pubkey`           |
| 7   | `collection_metadata`         | `Pubkey`           |
| 8   | `delegate_record`             | `Pubkey`           |
| 9   | `token_record`                | `Pubkey`           |
| 10  | `system_program`              | `Pubkey`           |
| 11  | `sysvar_instructions`         | `Pubkey`           |
| 12  | `spl_token_program`           | `Pubkey`           |
| 13  | `authorization_rules_program` | `Option<Pubkey>`   |
| 14  | `authorization_rules`         | `Option<Pubkey>`   |
| 15… | `remaining`                   | `Vec<AccountMeta>` |

### `Mint`

Discriminator `2b` · data `Mint` · accounts `MintInstructionAccounts`.

| Field       | Type                    |
| ----------- | ----------------------- |
| `mint_args` | [`MintArgs`](#mintargs) |

Required accounts: 13 (15 listed); extras go to `remaining`.

Fields of `MintInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `token`                       | `Pubkey`           |
| 1   | `token_owner`                 | `Option<Pubkey>`   |
| 2   | `metadata`                    | `Pubkey`           |
| 3   | `master_edition`              | `Option<Pubkey>`   |
| 4   | `token_record`                | `Option<Pubkey>`   |
| 5   | `mint`                        | `Pubkey`           |
| 6   | `authority`                   | `Pubkey`           |
| 7   | `delegate_record`             | `Option<Pubkey>`   |
| 8   | `payer`                       | `Pubkey`           |
| 9   | `system_program`              | `Pubkey`           |
| 10  | `sysvar_instructions`         | `Pubkey`           |
| 11  | `spl_token_program`           | `Pubkey`           |
| 12  | `spl_ata_program`             | `Pubkey`           |
| 13  | `authorization_rules_program` | `Option<Pubkey>`   |
| 14  | `authorization_rules`         | `Option<Pubkey>`   |
| 15… | `remaining`                   | `Vec<AccountMeta>` |

### `MintNewEditionFromMasterEditionViaToken`

Discriminator `0b` · data `MintNewEditionFromMasterEditionViaToken` · accounts `MintNewEditionFromMasterEditionViaTokenInstructionAccounts`.

| Field                                                 | Type                                                                                          |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `mint_new_edition_from_master_edition_via_token_args` | [`MintNewEditionFromMasterEditionViaTokenArgs`](#mintneweditionfrommastereditionviatokenargs) |

Required accounts: 13 (14 listed); extras go to `remaining`.

Fields of `MintNewEditionFromMasterEditionViaTokenInstructionAccounts`, in account order:

| #   | Field                           | Type               |
| --- | ------------------------------- | ------------------ |
| 0   | `new_metadata`                  | `Pubkey`           |
| 1   | `new_edition`                   | `Pubkey`           |
| 2   | `master_edition`                | `Pubkey`           |
| 3   | `new_mint`                      | `Pubkey`           |
| 4   | `edition_mark_pda`              | `Pubkey`           |
| 5   | `new_mint_authority`            | `Pubkey`           |
| 6   | `payer`                         | `Pubkey`           |
| 7   | `token_account_owner`           | `Pubkey`           |
| 8   | `token_account`                 | `Pubkey`           |
| 9   | `new_metadata_update_authority` | `Pubkey`           |
| 10  | `metadata`                      | `Pubkey`           |
| 11  | `token_program`                 | `Pubkey`           |
| 12  | `system_program`                | `Pubkey`           |
| 13  | `rent`                          | `Option<Pubkey>`   |
| 14… | `remaining`                     | `Vec<AccountMeta>` |

### `MintNewEditionFromMasterEditionViaVaultProxy`

Discriminator `0d` · data `MintNewEditionFromMasterEditionViaVaultProxy` · accounts `MintNewEditionFromMasterEditionViaVaultProxyInstructionAccounts`.

| Field                                                 | Type                                                                                          |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `mint_new_edition_from_master_edition_via_token_args` | [`MintNewEditionFromMasterEditionViaTokenArgs`](#mintneweditionfrommastereditionviatokenargs) |

Required accounts: 16 (17 listed); extras go to `remaining`.

Fields of `MintNewEditionFromMasterEditionViaVaultProxyInstructionAccounts`, in account order:

| #   | Field                           | Type               |
| --- | ------------------------------- | ------------------ |
| 0   | `new_metadata`                  | `Pubkey`           |
| 1   | `new_edition`                   | `Pubkey`           |
| 2   | `master_edition`                | `Pubkey`           |
| 3   | `new_mint`                      | `Pubkey`           |
| 4   | `edition_mark_pda`              | `Pubkey`           |
| 5   | `new_mint_authority`            | `Pubkey`           |
| 6   | `payer`                         | `Pubkey`           |
| 7   | `vault_authority`               | `Pubkey`           |
| 8   | `safety_deposit_store`          | `Pubkey`           |
| 9   | `safety_deposit_box`            | `Pubkey`           |
| 10  | `vault`                         | `Pubkey`           |
| 11  | `new_metadata_update_authority` | `Pubkey`           |
| 12  | `metadata`                      | `Pubkey`           |
| 13  | `token_program`                 | `Pubkey`           |
| 14  | `token_vault_program`           | `Pubkey`           |
| 15  | `system_program`                | `Pubkey`           |
| 16  | `rent`                          | `Option<Pubkey>`   |
| 17… | `remaining`                     | `Vec<AccountMeta>` |

### `Print`

Discriminator `37` · data `Print` · accounts `PrintInstructionAccounts`.

| Field        | Type                      |
| ------------ | ------------------------- |
| `print_args` | [`PrintArgs`](#printargs) |

Required accounts: 18; extras go to `remaining`.

Fields of `PrintInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `edition_metadata`            | `Pubkey`           |
| 1   | `edition`                     | `Pubkey`           |
| 2   | `edition_mint`                | `Pubkey`           |
| 3   | `edition_token_account_owner` | `Pubkey`           |
| 4   | `edition_token_account`       | `Pubkey`           |
| 5   | `edition_mint_authority`      | `Pubkey`           |
| 6   | `edition_token_record`        | `Option<Pubkey>`   |
| 7   | `master_edition`              | `Pubkey`           |
| 8   | `edition_marker_pda`          | `Pubkey`           |
| 9   | `payer`                       | `Pubkey`           |
| 10  | `master_token_account_owner`  | `Pubkey`           |
| 11  | `master_token_account`        | `Pubkey`           |
| 12  | `master_metadata`             | `Pubkey`           |
| 13  | `update_authority`            | `Pubkey`           |
| 14  | `spl_token_program`           | `Pubkey`           |
| 15  | `spl_ata_program`             | `Pubkey`           |
| 16  | `sysvar_instructions`         | `Pubkey`           |
| 17  | `system_program`              | `Pubkey`           |
| 18… | `remaining`                   | `Vec<AccountMeta>` |

### `PuffMetadata`

Discriminator `0e` · data `PuffMetadata` · accounts `PuffMetadataInstructionAccounts`.

No data fields.

Required accounts: 1; extras go to `remaining`.

Fields of `PuffMetadataInstructionAccounts`, in account order:

| #  | Field       | Type               |
| -- | ----------- | ------------------ |
| 0  | `metadata`  | `Pubkey`           |
| 1… | `remaining` | `Vec<AccountMeta>` |

### `RemoveCreatorVerification`

Discriminator `1c` · data `RemoveCreatorVerification` · accounts `RemoveCreatorVerificationInstructionAccounts`.

No data fields.

Required accounts: 2; extras go to `remaining`.

Fields of `RemoveCreatorVerificationInstructionAccounts`, in account order:

| #  | Field       | Type               |
| -- | ----------- | ------------------ |
| 0  | `metadata`  | `Pubkey`           |
| 1  | `creator`   | `Pubkey`           |
| 2… | `remaining` | `Vec<AccountMeta>` |

### `Resize`

Discriminator `38` · data `Resize` · accounts `ResizeInstructionAccounts`.

No data fields.

Required accounts: 7; extras go to `remaining`.

Fields of `ResizeInstructionAccounts`, in account order:

| #  | Field            | Type               |
| -- | ---------------- | ------------------ |
| 0  | `metadata`       | `Pubkey`           |
| 1  | `edition`        | `Pubkey`           |
| 2  | `mint`           | `Pubkey`           |
| 3  | `payer`          | `Pubkey`           |
| 4  | `authority`      | `Option<Pubkey>`   |
| 5  | `token`          | `Option<Pubkey>`   |
| 6  | `system_program` | `Pubkey`           |
| 7… | `remaining`      | `Vec<AccountMeta>` |

### `Revoke`

Discriminator `2d` · data `Revoke` · accounts `RevokeInstructionAccounts`.

| Field         | Type                        |
| ------------- | --------------------------- |
| `revoke_args` | [`RevokeArgs`](#revokeargs) |

Required accounts: 11 (14 listed); extras go to `remaining`.

Fields of `RevokeInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `delegate_record`             | `Option<Pubkey>`   |
| 1   | `delegate`                    | `Pubkey`           |
| 2   | `metadata`                    | `Pubkey`           |
| 3   | `master_edition`              | `Option<Pubkey>`   |
| 4   | `token_record`                | `Option<Pubkey>`   |
| 5   | `mint`                        | `Pubkey`           |
| 6   | `token`                       | `Option<Pubkey>`   |
| 7   | `authority`                   | `Pubkey`           |
| 8   | `payer`                       | `Pubkey`           |
| 9   | `system_program`              | `Pubkey`           |
| 10  | `sysvar_instructions`         | `Pubkey`           |
| 11  | `spl_token_program`           | `Option<Pubkey>`   |
| 12  | `authorization_rules_program` | `Option<Pubkey>`   |
| 13  | `authorization_rules`         | `Option<Pubkey>`   |
| 14… | `remaining`                   | `Vec<AccountMeta>` |

### `RevokeCollectionAuthority`

Discriminator `18` · data `RevokeCollectionAuthority` · accounts `RevokeCollectionAuthorityInstructionAccounts`.

No data fields.

Required accounts: 5; extras go to `remaining`.

Fields of `RevokeCollectionAuthorityInstructionAccounts`, in account order:

| #  | Field                         | Type               |
| -- | ----------------------------- | ------------------ |
| 0  | `collection_authority_record` | `Pubkey`           |
| 1  | `delegate_authority`          | `Pubkey`           |
| 2  | `revoke_authority`            | `Pubkey`           |
| 3  | `metadata`                    | `Pubkey`           |
| 4  | `mint`                        | `Pubkey`           |
| 5… | `remaining`                   | `Vec<AccountMeta>` |

### `RevokeUseAuthority`

Discriminator `15` · data `RevokeUseAuthority` · accounts `RevokeUseAuthorityInstructionAccounts`.

No data fields.

Required accounts: 8 (9 listed); extras go to `remaining`.

Fields of `RevokeUseAuthorityInstructionAccounts`, in account order:

| #  | Field                  | Type               |
| -- | ---------------------- | ------------------ |
| 0  | `use_authority_record` | `Pubkey`           |
| 1  | `owner`                | `Pubkey`           |
| 2  | `user`                 | `Pubkey`           |
| 3  | `owner_token_account`  | `Pubkey`           |
| 4  | `mint`                 | `Pubkey`           |
| 5  | `metadata`             | `Pubkey`           |
| 6  | `token_program`        | `Pubkey`           |
| 7  | `system_program`       | `Pubkey`           |
| 8  | `rent`                 | `Option<Pubkey>`   |
| 9… | `remaining`            | `Vec<AccountMeta>` |

### `SetAndVerifyCollection`

Discriminator `19` · data `SetAndVerifyCollection` · accounts `SetAndVerifyCollectionInstructionAccounts`.

No data fields.

Required accounts: 7 (8 listed); extras go to `remaining`.

Fields of `SetAndVerifyCollectionInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `payer`                             | `Pubkey`           |
| 3  | `update_authority`                  | `Pubkey`           |
| 4  | `collection_mint`                   | `Pubkey`           |
| 5  | `collection`                        | `Pubkey`           |
| 6  | `collection_master_edition_account` | `Pubkey`           |
| 7  | `collection_authority_record`       | `Option<Pubkey>`   |
| 8… | `remaining`                         | `Vec<AccountMeta>` |

### `SetAndVerifySizedCollectionItem`

Discriminator `20` · data `SetAndVerifySizedCollectionItem` · accounts `SetAndVerifySizedCollectionItemInstructionAccounts`.

No data fields.

Required accounts: 7 (8 listed); extras go to `remaining`.

Fields of `SetAndVerifySizedCollectionItemInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `payer`                             | `Pubkey`           |
| 3  | `update_authority`                  | `Pubkey`           |
| 4  | `collection_mint`                   | `Pubkey`           |
| 5  | `collection`                        | `Pubkey`           |
| 6  | `collection_master_edition_account` | `Pubkey`           |
| 7  | `collection_authority_record`       | `Option<Pubkey>`   |
| 8… | `remaining`                         | `Vec<AccountMeta>` |

### `SetCollectionSize`

Discriminator `22` · data `SetCollectionSize` · accounts `SetCollectionSizeInstructionAccounts`.

| Field                      | Type                                              |
| -------------------------- | ------------------------------------------------- |
| `set_collection_size_args` | [`SetCollectionSizeArgs`](#setcollectionsizeargs) |

Required accounts: 3 (4 listed); extras go to `remaining`.

Fields of `SetCollectionSizeInstructionAccounts`, in account order:

| #  | Field                         | Type               |
| -- | ----------------------------- | ------------------ |
| 0  | `collection_metadata`         | `Pubkey`           |
| 1  | `collection_authority`        | `Pubkey`           |
| 2  | `collection_mint`             | `Pubkey`           |
| 3  | `collection_authority_record` | `Option<Pubkey>`   |
| 4… | `remaining`                   | `Vec<AccountMeta>` |

### `SetTokenStandard`

Discriminator `23` · data `SetTokenStandard` · accounts `SetTokenStandardInstructionAccounts`.

No data fields.

Required accounts: 3 (4 listed); extras go to `remaining`.

Fields of `SetTokenStandardInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `update_authority` | `Pubkey`           |
| 2  | `mint`             | `Pubkey`           |
| 3  | `edition`          | `Option<Pubkey>`   |
| 4… | `remaining`        | `Vec<AccountMeta>` |

### `SignMetadata`

Discriminator `07` · data `SignMetadata` · accounts `SignMetadataInstructionAccounts`.

No data fields.

Required accounts: 2; extras go to `remaining`.

Fields of `SignMetadataInstructionAccounts`, in account order:

| #  | Field       | Type               |
| -- | ----------- | ------------------ |
| 0  | `metadata`  | `Pubkey`           |
| 1  | `creator`   | `Pubkey`           |
| 2… | `remaining` | `Vec<AccountMeta>` |

### `ThawDelegatedAccount`

Discriminator `1b` · data `ThawDelegatedAccount` · accounts `ThawDelegatedAccountInstructionAccounts`.

No data fields.

Required accounts: 5; extras go to `remaining`.

Fields of `ThawDelegatedAccountInstructionAccounts`, in account order:

| #  | Field           | Type               |
| -- | --------------- | ------------------ |
| 0  | `delegate`      | `Pubkey`           |
| 1  | `token_account` | `Pubkey`           |
| 2  | `edition`       | `Pubkey`           |
| 3  | `mint`          | `Pubkey`           |
| 4  | `token_program` | `Pubkey`           |
| 5… | `remaining`     | `Vec<AccountMeta>` |

### `Transfer`

Discriminator `31` · data `Transfer` · accounts `TransferInstructionAccounts`.

| Field           | Type                            |
| --------------- | ------------------------------- |
| `transfer_args` | [`TransferArgs`](#transferargs) |

Required accounts: 15 (17 listed); extras go to `remaining`.

Fields of `TransferInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `token`                       | `Pubkey`           |
| 1   | `token_owner`                 | `Pubkey`           |
| 2   | `destination`                 | `Pubkey`           |
| 3   | `destination_owner`           | `Pubkey`           |
| 4   | `mint`                        | `Pubkey`           |
| 5   | `metadata`                    | `Pubkey`           |
| 6   | `edition`                     | `Option<Pubkey>`   |
| 7   | `owner_token_record`          | `Option<Pubkey>`   |
| 8   | `destination_token_record`    | `Option<Pubkey>`   |
| 9   | `authority`                   | `Pubkey`           |
| 10  | `payer`                       | `Pubkey`           |
| 11  | `system_program`              | `Pubkey`           |
| 12  | `sysvar_instructions`         | `Pubkey`           |
| 13  | `spl_token_program`           | `Pubkey`           |
| 14  | `spl_ata_program`             | `Pubkey`           |
| 15  | `authorization_rules_program` | `Option<Pubkey>`   |
| 16  | `authorization_rules`         | `Option<Pubkey>`   |
| 17… | `remaining`                   | `Vec<AccountMeta>` |

### `TransferOutOfEscrow`

Discriminator `28` · data `TransferOutOfEscrow` · accounts `TransferOutOfEscrowInstructionAccounts`.

| Field                         | Type                                                  |
| ----------------------------- | ----------------------------------------------------- |
| `transfer_out_of_escrow_args` | [`TransferOutOfEscrowArgs`](#transferoutofescrowargs) |

Required accounts: 12 (13 listed); extras go to `remaining`.

Fields of `TransferOutOfEscrowInstructionAccounts`, in account order:

| #   | Field                 | Type               |
| --- | --------------------- | ------------------ |
| 0   | `escrow`              | `Pubkey`           |
| 1   | `metadata`            | `Pubkey`           |
| 2   | `payer`               | `Pubkey`           |
| 3   | `attribute_mint`      | `Pubkey`           |
| 4   | `attribute_src`       | `Pubkey`           |
| 5   | `attribute_dst`       | `Pubkey`           |
| 6   | `escrow_mint`         | `Pubkey`           |
| 7   | `escrow_account`      | `Pubkey`           |
| 8   | `system_program`      | `Pubkey`           |
| 9   | `ata_program`         | `Pubkey`           |
| 10  | `token_program`       | `Pubkey`           |
| 11  | `sysvar_instructions` | `Pubkey`           |
| 12  | `authority`           | `Option<Pubkey>`   |
| 13… | `remaining`           | `Vec<AccountMeta>` |

### `Unlock`

Discriminator `2f` · data `Unlock` · accounts `UnlockInstructionAccounts`.

| Field         | Type                        |
| ------------- | --------------------------- |
| `unlock_args` | [`UnlockArgs`](#unlockargs) |

Required accounts: 10 (13 listed); extras go to `remaining`.

Fields of `UnlockInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `authority`                   | `Pubkey`           |
| 1   | `token_owner`                 | `Option<Pubkey>`   |
| 2   | `token`                       | `Pubkey`           |
| 3   | `mint`                        | `Pubkey`           |
| 4   | `metadata`                    | `Pubkey`           |
| 5   | `edition`                     | `Option<Pubkey>`   |
| 6   | `token_record`                | `Option<Pubkey>`   |
| 7   | `payer`                       | `Pubkey`           |
| 8   | `system_program`              | `Pubkey`           |
| 9   | `sysvar_instructions`         | `Pubkey`           |
| 10  | `spl_token_program`           | `Option<Pubkey>`   |
| 11  | `authorization_rules_program` | `Option<Pubkey>`   |
| 12  | `authorization_rules`         | `Option<Pubkey>`   |
| 13… | `remaining`                   | `Vec<AccountMeta>` |

### `Unverify`

Discriminator `35` · data `Unverify` · accounts `UnverifyInstructionAccounts`.

| Field               | Type                                    |
| ------------------- | --------------------------------------- |
| `verification_args` | [`VerificationArgs`](#verificationargs) |

Required accounts: 7; extras go to `remaining`.

Fields of `UnverifyInstructionAccounts`, in account order:

| #  | Field                 | Type               |
| -- | --------------------- | ------------------ |
| 0  | `authority`           | `Pubkey`           |
| 1  | `delegate_record`     | `Option<Pubkey>`   |
| 2  | `metadata`            | `Pubkey`           |
| 3  | `collection_mint`     | `Option<Pubkey>`   |
| 4  | `collection_metadata` | `Option<Pubkey>`   |
| 5  | `system_program`      | `Pubkey`           |
| 6  | `sysvar_instructions` | `Pubkey`           |
| 7… | `remaining`           | `Vec<AccountMeta>` |

### `UnverifyCollection`

Discriminator `16` · data `UnverifyCollection` · accounts `UnverifyCollectionInstructionAccounts`.

No data fields.

Required accounts: 5 (6 listed); extras go to `remaining`.

Fields of `UnverifyCollectionInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `collection_mint`                   | `Pubkey`           |
| 3  | `collection`                        | `Pubkey`           |
| 4  | `collection_master_edition_account` | `Pubkey`           |
| 5  | `collection_authority_record`       | `Option<Pubkey>`   |
| 6… | `remaining`                         | `Vec<AccountMeta>` |

### `UnverifySizedCollectionItem`

Discriminator `1f` · data `UnverifySizedCollectionItem` · accounts `UnverifySizedCollectionItemInstructionAccounts`.

No data fields.

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `UnverifySizedCollectionItemInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `payer`                             | `Pubkey`           |
| 3  | `collection_mint`                   | `Pubkey`           |
| 4  | `collection`                        | `Pubkey`           |
| 5  | `collection_master_edition_account` | `Pubkey`           |
| 6  | `collection_authority_record`       | `Option<Pubkey>`   |
| 7… | `remaining`                         | `Vec<AccountMeta>` |

### `Update`

Discriminator `32` · data `Update` · accounts `UpdateInstructionAccounts`.

| Field         | Type                        |
| ------------- | --------------------------- |
| `update_args` | [`UpdateArgs`](#updateargs) |

Required accounts: 9 (11 listed); extras go to `remaining`.

Fields of `UpdateInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `authority`                   | `Pubkey`           |
| 1   | `delegate_record`             | `Option<Pubkey>`   |
| 2   | `token`                       | `Option<Pubkey>`   |
| 3   | `mint`                        | `Pubkey`           |
| 4   | `metadata`                    | `Pubkey`           |
| 5   | `edition`                     | `Option<Pubkey>`   |
| 6   | `payer`                       | `Pubkey`           |
| 7   | `system_program`              | `Pubkey`           |
| 8   | `sysvar_instructions`         | `Pubkey`           |
| 9   | `authorization_rules_program` | `Option<Pubkey>`   |
| 10  | `authorization_rules`         | `Option<Pubkey>`   |
| 11… | `remaining`                   | `Vec<AccountMeta>` |

### `UpdateMetadataAccount`

Discriminator `01` · data `UpdateMetadataAccount` · accounts `UpdateMetadataAccountInstructionAccounts`.

No data fields.

Required accounts: 2; extras go to `remaining`.

Fields of `UpdateMetadataAccountInstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `update_authority` | `Pubkey`           |
| 2… | `remaining`        | `Vec<AccountMeta>` |

### `UpdateMetadataAccountV2`

Discriminator `0f` · data `UpdateMetadataAccountV2` · accounts `UpdateMetadataAccountV2InstructionAccounts`.

| Field                             | Type                                                          |
| --------------------------------- | ------------------------------------------------------------- |
| `update_metadata_account_args_v2` | [`UpdateMetadataAccountArgsV2`](#updatemetadataaccountargsv2) |

Required accounts: 2; extras go to `remaining`.

Fields of `UpdateMetadataAccountV2InstructionAccounts`, in account order:

| #  | Field              | Type               |
| -- | ------------------ | ------------------ |
| 0  | `metadata`         | `Pubkey`           |
| 1  | `update_authority` | `Pubkey`           |
| 2… | `remaining`        | `Vec<AccountMeta>` |

### `UpdatePrimarySaleHappenedViaToken`

Discriminator `04` · data `UpdatePrimarySaleHappenedViaToken` · accounts `UpdatePrimarySaleHappenedViaTokenInstructionAccounts`.

No data fields.

Required accounts: 3; extras go to `remaining`.

Fields of `UpdatePrimarySaleHappenedViaTokenInstructionAccounts`, in account order:

| #  | Field       | Type               |
| -- | ----------- | ------------------ |
| 0  | `metadata`  | `Pubkey`           |
| 1  | `owner`     | `Pubkey`           |
| 2  | `token`     | `Pubkey`           |
| 3… | `remaining` | `Vec<AccountMeta>` |

### `Use`

Discriminator `33` · data `Use` · accounts `UseInstructionAccounts`.

| Field      | Type                  |
| ---------- | --------------------- |
| `use_args` | [`UseArgs`](#useargs) |

Required accounts: 9 (12 listed); extras go to `remaining`.

Fields of `UseInstructionAccounts`, in account order:

| #   | Field                         | Type               |
| --- | ----------------------------- | ------------------ |
| 0   | `authority`                   | `Pubkey`           |
| 1   | `delegate_record`             | `Option<Pubkey>`   |
| 2   | `token`                       | `Option<Pubkey>`   |
| 3   | `mint`                        | `Pubkey`           |
| 4   | `metadata`                    | `Pubkey`           |
| 5   | `edition`                     | `Option<Pubkey>`   |
| 6   | `payer`                       | `Pubkey`           |
| 7   | `system_program`              | `Pubkey`           |
| 8   | `sysvar_instructions`         | `Pubkey`           |
| 9   | `spl_token_program`           | `Option<Pubkey>`   |
| 10  | `authorization_rules_program` | `Option<Pubkey>`   |
| 11  | `authorization_rules`         | `Option<Pubkey>`   |
| 12… | `remaining`                   | `Vec<AccountMeta>` |

### `Utilize`

Discriminator `13` · data `Utilize` · accounts `UtilizeInstructionAccounts`.

| Field          | Type                          |
| -------------- | ----------------------------- |
| `utilize_args` | [`UtilizeArgs`](#utilizeargs) |

Required accounts: 9 (11 listed); extras go to `remaining`.

Fields of `UtilizeInstructionAccounts`, in account order:

| #   | Field                  | Type               |
| --- | ---------------------- | ------------------ |
| 0   | `metadata`             | `Pubkey`           |
| 1   | `token_account`        | `Pubkey`           |
| 2   | `mint`                 | `Pubkey`           |
| 3   | `use_authority`        | `Pubkey`           |
| 4   | `owner`                | `Pubkey`           |
| 5   | `token_program`        | `Pubkey`           |
| 6   | `ata_program`          | `Pubkey`           |
| 7   | `system_program`       | `Pubkey`           |
| 8   | `rent`                 | `Pubkey`           |
| 9   | `use_authority_record` | `Option<Pubkey>`   |
| 10  | `burner`               | `Option<Pubkey>`   |
| 11… | `remaining`            | `Vec<AccountMeta>` |

### `Verify`

Discriminator `34` · data `Verify` · accounts `VerifyInstructionAccounts`.

| Field               | Type                                    |
| ------------------- | --------------------------------------- |
| `verification_args` | [`VerificationArgs`](#verificationargs) |

Required accounts: 8; extras go to `remaining`.

Fields of `VerifyInstructionAccounts`, in account order:

| #  | Field                       | Type               |
| -- | --------------------------- | ------------------ |
| 0  | `authority`                 | `Pubkey`           |
| 1  | `delegate_record`           | `Option<Pubkey>`   |
| 2  | `metadata`                  | `Pubkey`           |
| 3  | `collection_mint`           | `Option<Pubkey>`   |
| 4  | `collection_metadata`       | `Option<Pubkey>`   |
| 5  | `collection_master_edition` | `Option<Pubkey>`   |
| 6  | `system_program`            | `Pubkey`           |
| 7  | `sysvar_instructions`       | `Pubkey`           |
| 8… | `remaining`                 | `Vec<AccountMeta>` |

### `VerifyCollection`

Discriminator `12` · data `VerifyCollection` · accounts `VerifyCollectionInstructionAccounts`.

No data fields.

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `VerifyCollectionInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `payer`                             | `Pubkey`           |
| 3  | `collection_mint`                   | `Pubkey`           |
| 4  | `collection`                        | `Pubkey`           |
| 5  | `collection_master_edition_account` | `Pubkey`           |
| 6  | `collection_authority_record`       | `Option<Pubkey>`   |
| 7… | `remaining`                         | `Vec<AccountMeta>` |

### `VerifySizedCollectionItem`

Discriminator `1e` · data `VerifySizedCollectionItem` · accounts `VerifySizedCollectionItemInstructionAccounts`.

No data fields.

Required accounts: 6 (7 listed); extras go to `remaining`.

Fields of `VerifySizedCollectionItemInstructionAccounts`, in account order:

| #  | Field                               | Type               |
| -- | ----------------------------------- | ------------------ |
| 0  | `metadata`                          | `Pubkey`           |
| 1  | `collection_authority`              | `Pubkey`           |
| 2  | `payer`                             | `Pubkey`           |
| 3  | `collection_mint`                   | `Pubkey`           |
| 4  | `collection`                        | `Pubkey`           |
| 5  | `collection_master_edition_account` | `Pubkey`           |
| 6  | `collection_authority_record`       | `Option<Pubkey>`   |
| 7… | `remaining`                         | `Vec<AccountMeta>` |

## Accounts

Variants of `MplTokenMetadataAccount`. Each wraps a boxed struct from `carbon_mpl_token_metadata_decoder::accounts::<module>`. `decode_account` only considers accounts owned by `PROGRAM_ID` and returns the first variant that matches.

### `CollectionAuthorityRecord`

No discriminator (matched by Borsh layout) · `accounts::collection_authority_record::CollectionAuthorityRecord`.

| Field              | Type             |
| ------------------ | ---------------- |
| `key`              | [`Key`](#key)    |
| `bump`             | `u8`             |
| `update_authority` | `Option<Pubkey>` |

### `Edition`

No discriminator (matched by Borsh layout) · `accounts::edition::Edition`.

| Field     | Type          |
| --------- | ------------- |
| `key`     | [`Key`](#key) |
| `parent`  | `Pubkey`      |
| `edition` | `u64`         |

### `EditionMarker`

No discriminator (matched by Borsh layout) · `accounts::edition_marker::EditionMarker`.

| Field    | Type          |
| -------- | ------------- |
| `key`    | [`Key`](#key) |
| `ledger` | `[u8; 31]`    |

### `EditionMarkerV2`

No discriminator (matched by Borsh layout) · `accounts::edition_marker_v2::EditionMarkerV2`.

| Field    | Type          |
| -------- | ------------- |
| `key`    | [`Key`](#key) |
| `ledger` | `Vec<u8>`     |

### `HolderDelegateRecord`

No discriminator (matched by Borsh layout) · `accounts::holder_delegate_record::HolderDelegateRecord`.

| Field              | Type          |
| ------------------ | ------------- |
| `key`              | [`Key`](#key) |
| `bump`             | `u8`          |
| `mint`             | `Pubkey`      |
| `delegate`         | `Pubkey`      |
| `update_authority` | `Pubkey`      |

### `MasterEditionV1`

No discriminator (matched by Borsh layout) · `accounts::master_edition_v1::MasterEditionV1`.

| Field                                  | Type          |
| -------------------------------------- | ------------- |
| `key`                                  | [`Key`](#key) |
| `supply`                               | `u64`         |
| `max_supply`                           | `Option<u64>` |
| `printing_mint`                        | `Pubkey`      |
| `one_time_printing_authorization_mint` | `Pubkey`      |

### `MasterEditionV2`

No discriminator (matched by Borsh layout) · `accounts::master_edition_v2::MasterEditionV2`.

| Field        | Type          |
| ------------ | ------------- |
| `key`        | [`Key`](#key) |
| `supply`     | `u64`         |
| `max_supply` | `Option<u64>` |

### `Metadata`

No discriminator (matched by Borsh layout) · `accounts::metadata::Metadata`.

| Field                   | Type                                                |
| ----------------------- | --------------------------------------------------- |
| `key`                   | [`Key`](#key)                                       |
| `update_authority`      | `Pubkey`                                            |
| `mint`                  | `Pubkey`                                            |
| `data`                  | [`Data`](#data)                                     |
| `primary_sale_happened` | `bool`                                              |
| `is_mutable`            | `bool`                                              |
| `edition_nonce`         | `Option<u8>`                                        |
| `token_standard`        | [`Option<TokenStandard>`](#tokenstandard)           |
| `collection`            | [`Option<Collection>`](#collection)                 |
| `uses`                  | [`Option<Uses>`](#uses)                             |
| `collection_details`    | [`Option<CollectionDetails>`](#collectiondetails)   |
| `programmable_config`   | [`Option<ProgrammableConfig>`](#programmableconfig) |

### `MetadataDelegateRecord`

No discriminator (matched by Borsh layout) · `accounts::metadata_delegate_record::MetadataDelegateRecord`.

| Field              | Type          |
| ------------------ | ------------- |
| `key`              | [`Key`](#key) |
| `bump`             | `u8`          |
| `mint`             | `Pubkey`      |
| `delegate`         | `Pubkey`      |
| `update_authority` | `Pubkey`      |

### `ReservationListV1`

No discriminator (matched by Borsh layout) · `accounts::reservation_list_v1::ReservationListV1`.

| Field             | Type                                   |
| ----------------- | -------------------------------------- |
| `key`             | [`Key`](#key)                          |
| `master_edition`  | `Pubkey`                               |
| `supply_snapshot` | `Option<u64>`                          |
| `reservations`    | [`Vec<ReservationV1>`](#reservationv1) |

### `ReservationListV2`

No discriminator (matched by Borsh layout) · `accounts::reservation_list_v2::ReservationListV2`.

| Field                       | Type                               |
| --------------------------- | ---------------------------------- |
| `key`                       | [`Key`](#key)                      |
| `master_edition`            | `Pubkey`                           |
| `supply_snapshot`           | `Option<u64>`                      |
| `reservations`              | [`Vec<Reservation>`](#reservation) |
| `total_reservation_spots`   | `u64`                              |
| `current_reservation_spots` | `u64`                              |

### `TokenOwnedEscrow`

No discriminator (matched by Borsh layout) · `accounts::token_owned_escrow::TokenOwnedEscrow`.

| Field        | Type                                  |
| ------------ | ------------------------------------- |
| `key`        | [`Key`](#key)                         |
| `base_token` | `Pubkey`                              |
| `authority`  | [`EscrowAuthority`](#escrowauthority) |
| `bump`       | `u8`                                  |

### `TokenRecord`

No discriminator (matched by Borsh layout) · `accounts::token_record::TokenRecord`.

| Field               | Type                                              |
| ------------------- | ------------------------------------------------- |
| `key`               | [`Key`](#key)                                     |
| `bump`              | `u8`                                              |
| `state`             | [`TokenState`](#tokenstate)                       |
| `rule_set_revision` | `Option<u64>`                                     |
| `delegate`          | `Option<Pubkey>`                                  |
| `delegate_role`     | [`Option<TokenDelegateRole>`](#tokendelegaterole) |
| `locked_transfer`   | `Option<Pubkey>`                                  |

### `UseAuthorityRecord`

No discriminator (matched by Borsh layout) · `accounts::use_authority_record::UseAuthorityRecord`.

| Field          | Type          |
| -------------- | ------------- |
| `key`          | [`Key`](#key) |
| `allowed_uses` | `u64`         |
| `bump`         | `u8`          |

## Types

Types used by the instructions, accounts and events above, exported from `carbon_mpl_token_metadata_decoder::types`.

### `ApproveUseAuthorityArgs`

Struct `types::ApproveUseAuthorityArgs`.

| Field            | Type  |
| ---------------- | ----- |
| `number_of_uses` | `u64` |

### `AssetData`

Struct `types::AssetData`.

| Field                     | Type                                              |
| ------------------------- | ------------------------------------------------- |
| `name`                    | `String`                                          |
| `symbol`                  | `String`                                          |
| `uri`                     | `String`                                          |
| `seller_fee_basis_points` | `u16`                                             |
| `creators`                | [`Option<Vec<Creator>>`](#creator)                |
| `primary_sale_happened`   | `bool`                                            |
| `is_mutable`              | `bool`                                            |
| `token_standard`          | [`TokenStandard`](#tokenstandard)                 |
| `collection`              | [`Option<Collection>`](#collection)               |
| `uses`                    | [`Option<Uses>`](#uses)                           |
| `collection_details`      | [`Option<CollectionDetails>`](#collectiondetails) |
| `rule_set`                | `Option<Pubkey>`                                  |

### `AuthorityType`

Enum `types::AuthorityType`.

| Variant            |
| ------------------ |
| `None`             |
| `Metadata`         |
| `Holder`           |
| `MetadataDelegate` |
| `TokenDelegate`    |

### `AuthorizationData`

Struct `types::AuthorizationData`.

| Field     | Type                  |
| --------- | --------------------- |
| `payload` | [`Payload`](#payload) |

### `BurnArgs`

Enum `types::BurnArgs`.

| Variant | Fields          |
| ------- | --------------- |
| `V1`    | `amount`: `u64` |

### `Collection`

Struct `types::Collection`.

| Field      | Type     |
| ---------- | -------- |
| `verified` | `bool`   |
| `key`      | `Pubkey` |

### `CollectionDetails`

Enum `types::CollectionDetails`.

| Variant | Fields               |
| ------- | -------------------- |
| `V1`    | `size`: `u64`        |
| `V2`    | `padding`: `[u8; 8]` |

### `CollectionDetailsToggle`

Enum `types::CollectionDetailsToggle`.

| Variant | Fields                                    |
| ------- | ----------------------------------------- |
| `None`  |                                           |
| `Clear` |                                           |
| `Set`   | [`CollectionDetails`](#collectiondetails) |

### `CollectionToggle`

Enum `types::CollectionToggle`.

| Variant | Fields                      |
| ------- | --------------------------- |
| `None`  |                             |
| `Clear` |                             |
| `Set`   | [`Collection`](#collection) |

### `CreateArgs`

Enum `types::CreateArgs`.

| Variant | Fields                                                                                                                   |
| ------- | ------------------------------------------------------------------------------------------------------------------------ |
| `V1`    | `asset_data`: [`AssetData`](#assetdata), `decimals`: `Option<u8>`, `print_supply`: [`Option<PrintSupply>`](#printsupply) |

### `CreateMasterEditionArgs`

Struct `types::CreateMasterEditionArgs`.

| Field        | Type          |
| ------------ | ------------- |
| `max_supply` | `Option<u64>` |

### `CreateMetadataAccountArgsV3`

Struct `types::CreateMetadataAccountArgsV3`.

| Field                | Type                                              |
| -------------------- | ------------------------------------------------- |
| `data`               | [`DataV2`](#datav2)                               |
| `is_mutable`         | `bool`                                            |
| `collection_details` | [`Option<CollectionDetails>`](#collectiondetails) |

### `Creator`

Struct `types::Creator`.

| Field      | Type     |
| ---------- | -------- |
| `address`  | `Pubkey` |
| `verified` | `bool`   |
| `share`    | `u8`     |

### `Data`

Struct `types::Data`.

| Field                     | Type                               |
| ------------------------- | ---------------------------------- |
| `name`                    | `String`                           |
| `symbol`                  | `String`                           |
| `uri`                     | `String`                           |
| `seller_fee_basis_points` | `u16`                              |
| `creators`                | [`Option<Vec<Creator>>`](#creator) |

### `DataV2`

Struct `types::DataV2`.

| Field                     | Type                                |
| ------------------------- | ----------------------------------- |
| `name`                    | `String`                            |
| `symbol`                  | `String`                            |
| `uri`                     | `String`                            |
| `seller_fee_basis_points` | `u16`                               |
| `creators`                | [`Option<Vec<Creator>>`](#creator)  |
| `collection`              | [`Option<Collection>`](#collection) |
| `uses`                    | [`Option<Uses>`](#uses)             |

### `DelegateArgs`

Enum `types::DelegateArgs`.

| Variant                    | Fields                                                                                                               |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `CollectionV1`             | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `SaleV1`                   | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                             |
| `TransferV1`               | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                             |
| `DataV1`                   | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `UtilityV1`                | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                             |
| `StakingV1`                | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                             |
| `StandardV1`               | `amount`: `u64`                                                                                                      |
| `LockedTransferV1`         | `amount`: `u64`, `locked_address`: `Pubkey`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |
| `ProgrammableConfigV1`     | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `AuthorityItemV1`          | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `DataItemV1`               | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `CollectionItemV1`         | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `ProgrammableConfigItemV1` | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |
| `PrintDelegateV1`          | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                              |

### `EscrowAuthority`

Enum `types::EscrowAuthority`.

| Variant      | Fields   |
| ------------ | -------- |
| `TokenOwner` |          |
| `Creator`    | `Pubkey` |

### `HolderDelegateRole`

Enum `types::HolderDelegateRole`.

| Variant         |
| --------------- |
| `PrintDelegate` |

### `Key`

Enum `types::Key`.

| Variant                     |
| --------------------------- |
| `Uninitialized`             |
| `EditionV1`                 |
| `MasterEditionV1`           |
| `ReservationListV1`         |
| `MetadataV1`                |
| `ReservationListV2`         |
| `MasterEditionV2`           |
| `EditionMarker`             |
| `UseAuthorityRecord`        |
| `CollectionAuthorityRecord` |
| `TokenOwnedEscrow`          |
| `TokenRecord`               |
| `MetadataDelegate`          |
| `EditionMarkerV2`           |
| `HolderDelegate`            |

### `LockArgs`

Enum `types::LockArgs`.

| Variant | Fields                                                                  |
| ------- | ----------------------------------------------------------------------- |
| `V1`    | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |

### `MetadataDelegateRole`

Enum `types::MetadataDelegateRole`.

| Variant                  |
| ------------------------ |
| `AuthorityItem`          |
| `Collection`             |
| `Use`                    |
| `Data`                   |
| `ProgrammableConfig`     |
| `DataItem`               |
| `CollectionItem`         |
| `ProgrammableConfigItem` |

### `MigrationType`

Enum `types::MigrationType`.

| Variant          |
| ---------------- |
| `CollectionV1`   |
| `ProgrammableV1` |

### `MintArgs`

Enum `types::MintArgs`.

| Variant | Fields                                                                                   |
| ------- | ---------------------------------------------------------------------------------------- |
| `V1`    | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |

### `MintNewEditionFromMasterEditionViaTokenArgs`

Struct `types::MintNewEditionFromMasterEditionViaTokenArgs`.

| Field     | Type  |
| --------- | ----- |
| `edition` | `u64` |

### `Payload`

Struct `types::Payload`.

| Field | Type                                           |
| ----- | ---------------------------------------------- |
| `map` | [`HashMap<String, PayloadType>`](#payloadtype) |

### `PayloadKey`

Enum `types::PayloadKey`.

| Variant            |
| ------------------ |
| `Amount`           |
| `Authority`        |
| `AuthoritySeeds`   |
| `Delegate`         |
| `DelegateSeeds`    |
| `Destination`      |
| `DestinationSeeds` |
| `Holder`           |
| `Source`           |
| `SourceSeeds`      |

### `PayloadType`

Enum `types::PayloadType`.

| Variant       | Fields                    |
| ------------- | ------------------------- |
| `Pubkey`      | `Pubkey`                  |
| `Seeds`       | [`SeedsVec`](#seedsvec)   |
| `MerkleProof` | [`ProofInfo`](#proofinfo) |
| `Number`      | `u64`                     |

### `PrintArgs`

Enum `types::PrintArgs`.

| Variant | Fields           |
| ------- | ---------------- |
| `V1`    | `edition`: `u64` |
| `V2`    | `edition`: `u64` |

### `PrintSupply`

Enum `types::PrintSupply`.

| Variant     | Fields |
| ----------- | ------ |
| `Zero`      |        |
| `Limited`   | `u64`  |
| `Unlimited` |        |

### `ProgrammableConfig`

Enum `types::ProgrammableConfig`.

| Variant | Fields                       |
| ------- | ---------------------------- |
| `V1`    | `rule_set`: `Option<Pubkey>` |

### `ProofInfo`

Struct `types::ProofInfo`.

| Field   | Type            |
| ------- | --------------- |
| `proof` | `Vec<[u8; 32]>` |

### `Reservation`

Struct `types::Reservation`.

| Field             | Type     |
| ----------------- | -------- |
| `address`         | `Pubkey` |
| `spots_remaining` | `u64`    |
| `total_spots`     | `u64`    |

### `ReservationV1`

Struct `types::ReservationV1`.

| Field             | Type     |
| ----------------- | -------- |
| `address`         | `Pubkey` |
| `spots_remaining` | `u8`     |
| `total_spots`     | `u8`     |

### `RevokeArgs`

Enum `types::RevokeArgs`.

| Variant                    |
| -------------------------- |
| `CollectionV1`             |
| `SaleV1`                   |
| `TransferV1`               |
| `DataV1`                   |
| `UtilityV1`                |
| `StakingV1`                |
| `StandardV1`               |
| `LockedTransferV1`         |
| `ProgrammableConfigV1`     |
| `MigrationV1`              |
| `AuthorityItemV1`          |
| `DataItemV1`               |
| `CollectionItemV1`         |
| `ProgrammableConfigItemV1` |
| `PrintDelegateV1`          |

### `RuleSetToggle`

Enum `types::RuleSetToggle`.

| Variant | Fields   |
| ------- | -------- |
| `None`  |          |
| `Clear` |          |
| `Set`   | `Pubkey` |

### `SeedsVec`

Struct `types::SeedsVec`.

| Field   | Type           |
| ------- | -------------- |
| `seeds` | `Vec<Vec<u8>>` |

### `SetCollectionSizeArgs`

Struct `types::SetCollectionSizeArgs`.

| Field  | Type  |
| ------ | ----- |
| `size` | `u64` |

### `TokenDelegateRole`

Enum `types::TokenDelegateRole`.

| Variant          |
| ---------------- |
| `Sale`           |
| `Transfer`       |
| `Utility`        |
| `Staking`        |
| `Standard`       |
| `LockedTransfer` |
| `Migration`      |

### `TokenStandard`

Enum `types::TokenStandard`.

| Variant                          |
| -------------------------------- |
| `NonFungible`                    |
| `FungibleAsset`                  |
| `Fungible`                       |
| `NonFungibleEdition`             |
| `ProgrammableNonFungible`        |
| `ProgrammableNonFungibleEdition` |

### `TokenState`

Enum `types::TokenState`.

| Variant    |
| ---------- |
| `Unlocked` |
| `Locked`   |
| `Listed`   |

### `TransferArgs`

Enum `types::TransferArgs`.

| Variant | Fields                                                                                   |
| ------- | ---------------------------------------------------------------------------------------- |
| `V1`    | `amount`: `u64`, `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |

### `TransferOutOfEscrowArgs`

Struct `types::TransferOutOfEscrowArgs`.

| Field    | Type  |
| -------- | ----- |
| `amount` | `u64` |

### `UnlockArgs`

Enum `types::UnlockArgs`.

| Variant | Fields                                                                  |
| ------- | ----------------------------------------------------------------------- |
| `V1`    | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |

### `UpdateArgs`

Enum `types::UpdateArgs`.

| Variant                              | Fields                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `V1`                                 | `new_update_authority`: `Option<Pubkey>`, `data`: [`Option<Data>`](#data), `primary_sale_happened`: `Option<bool>`, `is_mutable`: `Option<bool>`, `collection`: [`CollectionToggle`](#collectiontoggle), `collection_details`: [`CollectionDetailsToggle`](#collectiondetailstoggle), `uses`: [`UsesToggle`](#usestoggle), `rule_set`: [`RuleSetToggle`](#rulesettoggle), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                              |
| `AsUpdateAuthorityV2`                | `new_update_authority`: `Option<Pubkey>`, `data`: [`Option<Data>`](#data), `primary_sale_happened`: `Option<bool>`, `is_mutable`: `Option<bool>`, `collection`: [`CollectionToggle`](#collectiontoggle), `collection_details`: [`CollectionDetailsToggle`](#collectiondetailstoggle), `uses`: [`UsesToggle`](#usestoggle), `rule_set`: [`RuleSetToggle`](#rulesettoggle), `token_standard`: [`Option<TokenStandard>`](#tokenstandard), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |
| `AsAuthorityItemDelegateV2`          | `new_update_authority`: `Option<Pubkey>`, `primary_sale_happened`: `Option<bool>`, `is_mutable`: `Option<bool>`, `token_standard`: [`Option<TokenStandard>`](#tokenstandard), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                          |
| `AsCollectionDelegateV2`             | `collection`: [`CollectionToggle`](#collectiontoggle), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                 |
| `AsDataDelegateV2`                   | `data`: [`Option<Data>`](#data), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                                       |
| `AsProgrammableConfigDelegateV2`     | `rule_set`: [`RuleSetToggle`](#rulesettoggle), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                         |
| `AsDataItemDelegateV2`               | `data`: [`Option<Data>`](#data), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                                       |
| `AsCollectionItemDelegateV2`         | `collection`: [`CollectionToggle`](#collectiontoggle), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                 |
| `AsProgrammableConfigItemDelegateV2` | `rule_set`: [`RuleSetToggle`](#rulesettoggle), `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata)                                                                                                                                                                                                                                                                                                                                                                                         |

### `UpdateMetadataAccountArgsV2`

Struct `types::UpdateMetadataAccountArgsV2`.

| Field                   | Type                        |
| ----------------------- | --------------------------- |
| `data`                  | [`Option<DataV2>`](#datav2) |
| `update_authority`      | `Option<Pubkey>`            |
| `primary_sale_happened` | `Option<bool>`              |
| `is_mutable`            | `Option<bool>`              |

### `UseArgs`

Enum `types::UseArgs`.

| Variant | Fields                                                                  |
| ------- | ----------------------------------------------------------------------- |
| `V1`    | `authorization_data`: [`Option<AuthorizationData>`](#authorizationdata) |

### `UseMethod`

Enum `types::UseMethod`.

| Variant    |
| ---------- |
| `Burn`     |
| `Multiple` |
| `Single`   |

### `Uses`

Struct `types::Uses`.

| Field        | Type                      |
| ------------ | ------------------------- |
| `use_method` | [`UseMethod`](#usemethod) |
| `remaining`  | `u64`                     |
| `total`      | `u64`                     |

### `UsesToggle`

Enum `types::UsesToggle`.

| Variant | Fields          |
| ------- | --------------- |
| `None`  |                 |
| `Clear` |                 |
| `Set`   | [`Uses`](#uses) |

### `UtilizeArgs`

Struct `types::UtilizeArgs`.

| Field            | Type  |
| ---------------- | ----- |
| `number_of_uses` | `u64` |

### `VerificationArgs`

Enum `types::VerificationArgs`.

| Variant        |
| -------------- |
| `CreatorV1`    |
| `CollectionV1` |

---

Carbon 2.0.0 documentation · Web: https://carbon.sevenlabs.org/decoders/mpl-token-metadata · Last updated 2026-11-09 · Index of all pages: https://carbon.sevenlabs.org/llms.txt
