{"version":3,"sources":["../../src/programs/compute-budget/utils.ts","../../src/core/utils.ts","../../src/programs/token/addresses.ts","../../src/core/create-transaction.ts","../../src/core/accounts.ts","../../src/programs/token-metadata/generated/types/assetData.ts","../../src/programs/token-metadata/generated/types/collection.ts","../../src/programs/token-metadata/generated/types/collectionDetails.ts","../../src/programs/token-metadata/generated/types/collectionDetailsToggle.ts","../../src/programs/token-metadata/generated/types/collectionToggle.ts","../../src/programs/token-metadata/generated/types/createArgs.ts","../../src/programs/token-metadata/generated/types/creator.ts","../../src/programs/token-metadata/generated/types/data.ts","../../src/programs/token-metadata/generated/types/dataV2.ts","../../src/programs/token-metadata/generated/types/delegateArgs.ts","../../src/programs/token-metadata/generated/types/escrowAuthority.ts","../../src/programs/token-metadata/generated/types/key.ts","../../src/programs/token-metadata/generated/types/mintArgs.ts","../../src/programs/token-metadata/generated/types/payload.ts","../../src/programs/token-metadata/generated/types/programmableConfig.ts","../../src/programs/token-metadata/generated/types/reservation.ts","../../src/programs/token-metadata/generated/types/tokenStandard.ts","../../src/programs/token-metadata/generated/types/updateArgs.ts","../../src/programs/token-metadata/generated/types/uses.ts","../../src/programs/token-metadata/generated/types/useMethod.ts","../../src/programs/token-metadata/generated/types/usesToggle.ts","../../src/programs/token-metadata/generated/types/ruleSetToggle.ts","../../src/programs/token-metadata/generated/types/authorizationData.ts","../../src/programs/token-metadata/generated/types/payloadType.ts","../../src/programs/token-metadata/generated/types/seedsVec.ts","../../src/programs/token-metadata/generated/types/proofInfo.ts","../../src/programs/token-metadata/generated/types/printSupply.ts","../../src/programs/token-metadata/generated/accounts/metadata.ts","../../src/programs/token-metadata/generated/programs/tokenMetadata.ts","../../src/programs/shared/index.ts","../../src/programs/token-metadata/generated/instructions/createMetadataAccountV3.ts","../../src/programs/token-metadata/generated/instructions/updateMetadataAccountV2.ts","../../src/programs/token-metadata/addresses.ts","../../src/programs/token/instructions/create-token.ts","../../src/programs/token/instructions/mint-tokens.ts","../../src/programs/token/instructions/transfer-tokens.ts","../../src/programs/token/transactions/create-token.ts","../../src/programs/token/transactions/mint-tokens.ts","../../src/programs/token/transactions/transfer-tokens.ts","../../src/programs/token/ui-amount.ts","../../src/programs/memo/generated/programs/memo.ts","../../src/programs/memo/generated/instructions/addMemo.ts"],"names":["isInstructionForProgram","COMPUTE_BUDGET_PROGRAM_ADDRESS","isInstructionWithData","ComputeBudgetInstruction","createNoopSigner","isTransactionSigner","assertIsTransactionSigner","findAssociatedTokenPda","isAddress","TOKEN_2022_PROGRAM_ADDRESS","pipe","createTransactionMessage","setTransactionMessageLifetimeUsingBlockhash","setTransactionMessageFeePayerSigner","setTransactionMessageFeePayer","appendTransactionMessageInstruction","getSetComputeUnitLimitInstruction","getSetComputeUnitPriceInstruction","appendTransactionMessageInstructions","getStructEncoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getU16Encoder","getOptionEncoder","getArrayEncoder","getBooleanEncoder","getAddressEncoder","getStructDecoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getU16Decoder","getOptionDecoder","getArrayDecoder","getBooleanDecoder","getAddressDecoder","combineCodec","getDiscriminatedUnionEncoder","getU64Encoder","fixEncoderSize","getBytesEncoder","getDiscriminatedUnionDecoder","getU64Decoder","fixDecoderSize","getBytesDecoder","getUnitEncoder","getTupleEncoder","getUnitDecoder","getTupleDecoder","getU8Encoder","getU8Decoder","Key","getEnumEncoder","getEnumDecoder","getMapEncoder","getMapDecoder","TokenStandard","UseMethod","decodeAccount","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","TokenMetadataAccount","TokenMetadataInstruction","AccountRole","upgradeRoleToSigner","web3JsIsTransactionSigner","transformEncoder","getProgramDerivedAddress","extension","getCreateAccountInstruction","getMintSize","getInitializeMetadataPointerInstruction","getInitializeMintInstruction","getInitializeTokenMetadataInstruction","getCreateAssociatedTokenIdempotentInstruction","getMintToInstruction","getTransferInstruction","feePayer","MemoInstruction"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import { COMPUTE_BUDGET_PROGRAM_ADDRESS, ComputeBudgetInstruction } from \"@solana-program/compute-budget\";\nimport type { IInstruction, IInstructionWithData, TransactionMessage } from \"@solana/kit\";\nimport { isInstructionForProgram, isInstructionWithData } from \"@solana/kit\";\n\n/**\n * Check if a given instruction is a `SetComputeUnitLimit` instruction\n */\nexport function isSetComputeLimitInstruction(\n  instruction: IInstruction,\n): instruction is IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> & IInstructionWithData<Uint8Array> {\n  return (\n    isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) &&\n    isInstructionWithData(instruction) &&\n    instruction.data[0] === ComputeBudgetInstruction.SetComputeUnitLimit\n  );\n}\n\n/**\n * Check if a given transaction contains a `SetComputeUnitLimit` instruction\n */\nexport function hasSetComputeLimitInstruction(tx: TransactionMessage): boolean {\n  return tx.instructions.filter(isSetComputeLimitInstruction).length == 1;\n}\n\n/**\n * Check if a given instruction is a `SetComputeUnitPrice` instruction\n */\nexport function isSetComputeUnitPriceInstruction(\n  instruction: IInstruction,\n): instruction is IInstruction<typeof COMPUTE_BUDGET_PROGRAM_ADDRESS> & IInstructionWithData<Uint8Array> {\n  return (\n    isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) &&\n    isInstructionWithData(instruction) &&\n    instruction.data[0] === ComputeBudgetInstruction.SetComputeUnitPrice\n  );\n}\n\n/**\n * Check if a given transaction contains a `SetComputeUnitPrice` instruction\n */\nexport function hasSetComputeUnitPriceInstruction(tx: TransactionMessage): boolean {\n  return tx.instructions.filter(isSetComputeUnitPriceInstruction).length == 1;\n}\n","import {\n  assertIsTransactionSigner,\n  createNoopSigner,\n  isTransactionSigner,\n  type Address,\n  type TransactionSigner,\n} from \"@solana/kit\";\nimport type { SolanaClusterMoniker } from \"../types\";\nimport { GENESIS_HASH } from \"./const\";\n\n/**\n * Determine the Solana moniker from its genesis hash\n *\n * If the hash is NOT known, returns `unknown`\n */\nexport function getMonikerFromGenesisHash(hash: string): SolanaClusterMoniker | \"unknown\" {\n  switch (hash) {\n    case GENESIS_HASH.mainnet:\n      return \"mainnet\";\n    case GENESIS_HASH.devnet:\n      return \"devnet\";\n    case GENESIS_HASH.testnet:\n      return \"testnet\";\n    default:\n      return \"unknown\";\n  }\n}\n\nexport function checkedAddress<TAddress extends string = string>(\n  input: Address<TAddress> | TransactionSigner<TAddress>,\n): Address<TAddress> {\n  return typeof input == \"string\" ? input : input.address;\n}\n\nexport function checkedTransactionSigner<TAddress extends string = string>(\n  input: Address<TAddress> | TransactionSigner<TAddress>,\n): TransactionSigner<TAddress> {\n  if (typeof input === \"string\" || \"address\" in input == false) input = createNoopSigner(input);\n  if (!isTransactionSigner(input)) throw new Error(\"A signer or address is required\");\n  assertIsTransactionSigner(input);\n  return input;\n}\n\n/**\n * Convert a lamport number to the human readable string of a SOL value\n */\nexport function lamportsToSol(lamports: bigint | number): string {\n  // @ts-expect-error This format is valid\n  return new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 9 }).format(`${lamports}E-9`);\n}\n","import { findAssociatedTokenPda, TOKEN_2022_PROGRAM_ADDRESS } from \"@solana-program/token-2022\";\nimport { isAddress, type Address, type TransactionSigner } from \"@solana/kit\";\nimport { checkedAddress } from \"../../core/utils\";\n\nexport type LegacyTokenProgramMonikers = \"legacy\" | \"token\";\n\nexport type TokenExtensionProgramMonikers = \"token22\" | \"tokenExtension\" | \"tokenExtensions\" | \"token2022\";\n\nexport type TokenProgramMonikers = LegacyTokenProgramMonikers | TokenExtensionProgramMonikers;\n\nexport const TOKEN_PROGRAM_ADDRESS =\n  \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n\n/**\n * Derive the associated token account (ata) address for an owner and mint/tokenProgram\n *\n * @argument `mint` - the token mint itself\n * @argument `owner` - destination wallet address to own tokens from `mint`\n * @argument `tokenProgram` - token program that the token `mint` was created with\n *\n * - (default) {@link TOKEN_PROGRAM_ADDRESS} - the original SPL Token Program\n * - {@link TOKEN_2022_PROGRAM_ADDRESS} - the SPL Token Extensions Program (aka Token22)\n */\nexport async function getAssociatedTokenAccountAddress(\n  mint: Address | TransactionSigner,\n  owner: Address | TransactionSigner,\n  tokenProgram?: Address,\n): Promise<Address> {\n  return (\n    await findAssociatedTokenPda({\n      mint: checkedAddress(mint),\n      owner: checkedAddress(owner),\n      tokenProgram: checkedTokenProgramAddress(tokenProgram),\n    })\n  )[0];\n}\n\nexport function parseTokenProgramAddressOrMoniker(tokenProgram: Address | TokenProgramMonikers): Address {\n  if (!isAddress(tokenProgram)) {\n    tokenProgram = tokenProgram.toLowerCase() as TokenProgramMonikers;\n  }\n  switch (tokenProgram) {\n    case \"legacy\":\n    case \"token\":\n    case TOKEN_PROGRAM_ADDRESS: {\n      return TOKEN_PROGRAM_ADDRESS;\n    }\n    case \"token22\":\n    case \"token2022\":\n    case \"tokenextension\":\n    case \"tokenextensions\":\n    case TOKEN_2022_PROGRAM_ADDRESS: {\n      return TOKEN_2022_PROGRAM_ADDRESS;\n    }\n    default:\n      throw Error(\"Unsupported token program. Try 'TOKEN_PROGRAM_ADDRESS' or 'TOKEN_2022_PROGRAM_ADDRESS'\");\n  }\n}\n\nexport function assertIsSupportedTokenProgram(\n  tokenProgram: Address,\n): asserts tokenProgram is Address<typeof tokenProgram> {\n  if (tokenProgram !== TOKEN_PROGRAM_ADDRESS && tokenProgram !== TOKEN_2022_PROGRAM_ADDRESS) {\n    throw Error(\"Unsupported token program. Try 'TOKEN_PROGRAM_ADDRESS' or 'TOKEN_2022_PROGRAM_ADDRESS'\");\n  }\n}\n\n/**\n * Check the provided program is one of the supported token programs.\n * Including setting the default to {@link TOKEN_PROGRAM_ADDRESS} (the original SPL token program)\n *\n * @example\n * ```\n * args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n * ```\n */\nexport function checkedTokenProgramAddress(tokenProgram?: Address | TokenProgramMonikers): Address {\n  if (!tokenProgram) return TOKEN_PROGRAM_ADDRESS;\n  tokenProgram = parseTokenProgramAddressOrMoniker(tokenProgram);\n  assertIsSupportedTokenProgram(tokenProgram);\n  return tokenProgram;\n}\n","import type { Simplify } from \"../types\";\n\nimport { getSetComputeUnitLimitInstruction, getSetComputeUnitPriceInstruction } from \"@solana-program/compute-budget\";\nimport type {\n  Address,\n  ITransactionMessageWithFeePayer,\n  ITransactionMessageWithFeePayerSigner,\n  TransactionMessageWithBlockhashLifetime,\n  TransactionSigner,\n  TransactionVersion,\n} from \"@solana/kit\";\nimport {\n  appendTransactionMessageInstruction,\n  appendTransactionMessageInstructions,\n  createTransactionMessage,\n  isTransactionSigner,\n  pipe,\n  setTransactionMessageFeePayer,\n  setTransactionMessageFeePayerSigner,\n  setTransactionMessageLifetimeUsingBlockhash,\n} from \"@solana/kit\";\n\nimport type { CreateTransactionInput, FullTransaction } from \"../types/transactions\";\n\n/**\n * Simple interface for creating a Solana transaction\n */\nexport function createTransaction<TVersion extends TransactionVersion, TFeePayer extends TransactionSigner>(\n  props: CreateTransactionInput<TVersion, TFeePayer>,\n): FullTransaction<TVersion, ITransactionMessageWithFeePayerSigner>;\nexport function createTransaction<TVersion extends TransactionVersion, TFeePayer extends Address>(\n  props: CreateTransactionInput<TVersion, TFeePayer>,\n): FullTransaction<TVersion, ITransactionMessageWithFeePayer>;\nexport function createTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends TransactionSigner,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  props: CreateTransactionInput<TVersion, TFeePayer, TLifetimeConstraint>,\n): Simplify<FullTransaction<TVersion, ITransactionMessageWithFeePayerSigner, TransactionMessageWithBlockhashLifetime>>;\nexport function createTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends Address,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  props: CreateTransactionInput<TVersion, TFeePayer, TLifetimeConstraint>,\n): Simplify<FullTransaction<TVersion, ITransactionMessageWithFeePayer, TransactionMessageWithBlockhashLifetime>>;\nexport function createTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends Address | TransactionSigner,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  props: CreateTransactionInput<TVersion, TFeePayer, TLifetimeConstraint>,\n): Simplify<FullTransaction<TVersion, ITransactionMessageWithFeePayer, TransactionMessageWithBlockhashLifetime>>;\nexport function createTransaction<TVersion extends TransactionVersion, TFeePayer extends Address | TransactionSigner>({\n  version,\n  feePayer,\n  instructions,\n  latestBlockhash,\n  computeUnitLimit,\n  computeUnitPrice,\n}: CreateTransactionInput<TVersion, TFeePayer>): FullTransaction<\n  TVersion,\n  ITransactionMessageWithFeePayer | ITransactionMessageWithFeePayerSigner\n> {\n  return pipe(\n    createTransactionMessage({ version }),\n    (tx) => {\n      if (latestBlockhash) {\n        tx = setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx);\n      }\n      if (typeof feePayer !== \"string\" && \"address\" in feePayer && isTransactionSigner(feePayer)) {\n        return setTransactionMessageFeePayerSigner(feePayer, tx);\n      } else return setTransactionMessageFeePayer(feePayer, tx);\n    },\n    (tx) => {\n      if (typeof computeUnitLimit !== \"undefined\") {\n        tx = appendTransactionMessageInstruction(\n          getSetComputeUnitLimitInstruction({ units: Number(computeUnitLimit) }),\n          tx,\n        );\n      }\n\n      if (typeof computeUnitPrice !== \"undefined\") {\n        tx = appendTransactionMessageInstruction(\n          getSetComputeUnitPriceInstruction({ microLamports: Number(computeUnitPrice) }),\n          tx,\n        );\n      }\n\n      return appendTransactionMessageInstructions(instructions, tx);\n    },\n  );\n}\n","/**\n * Calculate the total rent needed for to create an account, with or without extra data stored in it\n */\nexport function getMinimumBalanceForRentExemption(space: bigint | number = 0) {\n  /**\n   * Default values for Rent calculations\n   *\n   * Values taken from: https://github.com/anza-xyz/solana-sdk/blob/c07f692e41d757057c8700211a9300cdcd6d33b1/rent/src/lib.rs#L93-L97\n   * \n   */\n  const RENT = {\n    /**\n     * Account storage overhead for calculation of base rent. (aka the number of bytes required to store an account with no data.\n     */\n    ACCOUNT_STORAGE_OVERHEAD: 128n,\n    /**\n     * Amount of time (in years) a balance must include rent for the account to\n     * be rent exempt.\n     */\n    DEFAULT_EXEMPTION_THRESHOLD: BigInt(Math.floor(2.0 * 1000)) / 1000n,\n    /**\n     * Default rental rate in lamports/byte-year. This calculation is based on:\n     * - 10^9 lamports per SOL\n     * - $1 per SOL\n     * - $0.01 per megabyte day\n     * - $3.65 per megabyte year\n     */\n    DEFAULT_LAMPORTS_PER_BYTE_YEAR: BigInt(\n      Math.floor(((1_000_000_000 / 100) * 365) / (1024 * 1024)),\n    ),\n  };\n\n  return (\n    ((RENT.ACCOUNT_STORAGE_OVERHEAD + BigInt(space)) *\n      RENT.DEFAULT_LAMPORTS_PER_BYTE_YEAR *\n      RENT.DEFAULT_EXEMPTION_THRESHOLD) /\n    1n\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCollectionDecoder,\n  getCollectionDetailsDecoder,\n  getCollectionDetailsEncoder,\n  getCollectionEncoder,\n  getCreatorDecoder,\n  getCreatorEncoder,\n  getTokenStandardDecoder,\n  getTokenStandardEncoder,\n  getUsesDecoder,\n  getUsesEncoder,\n  type Collection,\n  type CollectionArgs,\n  type CollectionDetails,\n  type CollectionDetailsArgs,\n  type Creator,\n  type CreatorArgs,\n  type TokenStandard,\n  type TokenStandardArgs,\n  type Uses,\n  type UsesArgs,\n} from '.';\n\nexport type AssetData = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: Option<Array<Creator>>;\n  primarySaleHappened: boolean;\n  isMutable: boolean;\n  tokenStandard: TokenStandard;\n  collection: Option<Collection>;\n  uses: Option<Uses>;\n  collectionDetails: Option<CollectionDetails>;\n  ruleSet: Option<Address>;\n};\n\nexport type AssetDataArgs = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: OptionOrNullable<Array<CreatorArgs>>;\n  primarySaleHappened: boolean;\n  isMutable: boolean;\n  tokenStandard: TokenStandardArgs;\n  collection: OptionOrNullable<CollectionArgs>;\n  uses: OptionOrNullable<UsesArgs>;\n  collectionDetails: OptionOrNullable<CollectionDetailsArgs>;\n  ruleSet: OptionOrNullable<Address>;\n};\n\nexport function getAssetDataEncoder(): Encoder<AssetDataArgs> {\n  return getStructEncoder([\n    ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['sellerFeeBasisPoints', getU16Encoder()],\n    ['creators', getOptionEncoder(getArrayEncoder(getCreatorEncoder()))],\n    ['primarySaleHappened', getBooleanEncoder()],\n    ['isMutable', getBooleanEncoder()],\n    ['tokenStandard', getTokenStandardEncoder()],\n    ['collection', getOptionEncoder(getCollectionEncoder())],\n    ['uses', getOptionEncoder(getUsesEncoder())],\n    ['collectionDetails', getOptionEncoder(getCollectionDetailsEncoder())],\n    ['ruleSet', getOptionEncoder(getAddressEncoder())],\n  ]);\n}\n\nexport function getAssetDataDecoder(): Decoder<AssetData> {\n  return getStructDecoder([\n    ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['sellerFeeBasisPoints', getU16Decoder()],\n    ['creators', getOptionDecoder(getArrayDecoder(getCreatorDecoder()))],\n    ['primarySaleHappened', getBooleanDecoder()],\n    ['isMutable', getBooleanDecoder()],\n    ['tokenStandard', getTokenStandardDecoder()],\n    ['collection', getOptionDecoder(getCollectionDecoder())],\n    ['uses', getOptionDecoder(getUsesDecoder())],\n    ['collectionDetails', getOptionDecoder(getCollectionDetailsDecoder())],\n    ['ruleSet', getOptionDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getAssetDataCodec(): Codec<AssetDataArgs, AssetData> {\n  return combineCodec(getAssetDataEncoder(), getAssetDataDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from \"@solana/kit\";\n\nexport type Collection = { verified: boolean; key: Address };\n\nexport type CollectionArgs = Collection;\n\nexport function getCollectionEncoder(): Encoder<CollectionArgs> {\n  return getStructEncoder([\n    [\"verified\", getBooleanEncoder()],\n    [\"key\", getAddressEncoder()],\n  ]);\n}\n\nexport function getCollectionDecoder(): Decoder<Collection> {\n  return getStructDecoder([\n    [\"verified\", getBooleanDecoder()],\n    [\"key\", getAddressDecoder()],\n  ]);\n}\n\nexport function getCollectionCodec(): Codec<CollectionArgs, Collection> {\n  return combineCodec(getCollectionEncoder(), getCollectionDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type CollectionDetails =\n  | { __kind: 'V1'; size: bigint }\n  | { __kind: 'V2'; padding: ReadonlyUint8Array };\n\nexport type CollectionDetailsArgs =\n  | { __kind: 'V1'; size: number | bigint }\n  | { __kind: 'V2'; padding: ReadonlyUint8Array };\n\nexport function getCollectionDetailsEncoder(): Encoder<CollectionDetailsArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['V1', getStructEncoder([['size', getU64Encoder()]])],\n    [\n      'V2',\n      getStructEncoder([['padding', fixEncoderSize(getBytesEncoder(), 8)]]),\n    ],\n  ]);\n}\n\nexport function getCollectionDetailsDecoder(): Decoder<CollectionDetails> {\n  return getDiscriminatedUnionDecoder([\n    ['V1', getStructDecoder([['size', getU64Decoder()]])],\n    [\n      'V2',\n      getStructDecoder([['padding', fixDecoderSize(getBytesDecoder(), 8)]]),\n    ],\n  ]);\n}\n\nexport function getCollectionDetailsCodec(): Codec<\n  CollectionDetailsArgs,\n  CollectionDetails\n> {\n  return combineCodec(\n    getCollectionDetailsEncoder(),\n    getCollectionDetailsDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function collectionDetails(\n  kind: 'V1',\n  data: GetDiscriminatedUnionVariantContent<\n    CollectionDetailsArgs,\n    '__kind',\n    'V1'\n  >\n): GetDiscriminatedUnionVariant<CollectionDetailsArgs, '__kind', 'V1'>;\nexport function collectionDetails(\n  kind: 'V2',\n  data: GetDiscriminatedUnionVariantContent<\n    CollectionDetailsArgs,\n    '__kind',\n    'V2'\n  >\n): GetDiscriminatedUnionVariant<CollectionDetailsArgs, '__kind', 'V2'>;\nexport function collectionDetails<\n  K extends CollectionDetailsArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCollectionDetails<K extends CollectionDetails['__kind']>(\n  kind: K,\n  value: CollectionDetails\n): value is CollectionDetails & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getCollectionDetailsDecoder,\n  getCollectionDetailsEncoder,\n  type CollectionDetails,\n  type CollectionDetailsArgs,\n} from '.';\n\nexport type CollectionDetailsToggle =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [CollectionDetails] };\n\nexport type CollectionDetailsToggleArgs =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [CollectionDetailsArgs] };\n\nexport function getCollectionDetailsToggleEncoder(): Encoder<CollectionDetailsToggleArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['None', getUnitEncoder()],\n    ['Clear', getUnitEncoder()],\n    [\n      'Set',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getCollectionDetailsEncoder()])],\n      ]),\n    ],\n  ]);\n}\n\nexport function getCollectionDetailsToggleDecoder(): Decoder<CollectionDetailsToggle> {\n  return getDiscriminatedUnionDecoder([\n    ['None', getUnitDecoder()],\n    ['Clear', getUnitDecoder()],\n    [\n      'Set',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getCollectionDetailsDecoder()])],\n      ]),\n    ],\n  ]);\n}\n\nexport function getCollectionDetailsToggleCodec(): Codec<\n  CollectionDetailsToggleArgs,\n  CollectionDetailsToggle\n> {\n  return combineCodec(\n    getCollectionDetailsToggleEncoder(),\n    getCollectionDetailsToggleDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function collectionDetailsToggle(\n  kind: 'None'\n): GetDiscriminatedUnionVariant<CollectionDetailsToggleArgs, '__kind', 'None'>;\nexport function collectionDetailsToggle(\n  kind: 'Clear'\n): GetDiscriminatedUnionVariant<CollectionDetailsToggleArgs, '__kind', 'Clear'>;\nexport function collectionDetailsToggle(\n  kind: 'Set',\n  data: GetDiscriminatedUnionVariantContent<\n    CollectionDetailsToggleArgs,\n    '__kind',\n    'Set'\n  >['fields']\n): GetDiscriminatedUnionVariant<CollectionDetailsToggleArgs, '__kind', 'Set'>;\nexport function collectionDetailsToggle<\n  K extends CollectionDetailsToggleArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCollectionDetailsToggle<\n  K extends CollectionDetailsToggle['__kind'],\n>(\n  kind: K,\n  value: CollectionDetailsToggle\n): value is CollectionDetailsToggle & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getCollectionDecoder,\n  getCollectionEncoder,\n  type Collection,\n  type CollectionArgs,\n} from '.';\n\nexport type CollectionToggle =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [Collection] };\n\nexport type CollectionToggleArgs =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [CollectionArgs] };\n\nexport function getCollectionToggleEncoder(): Encoder<CollectionToggleArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['None', getUnitEncoder()],\n    ['Clear', getUnitEncoder()],\n    [\n      'Set',\n      getStructEncoder([['fields', getTupleEncoder([getCollectionEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getCollectionToggleDecoder(): Decoder<CollectionToggle> {\n  return getDiscriminatedUnionDecoder([\n    ['None', getUnitDecoder()],\n    ['Clear', getUnitDecoder()],\n    [\n      'Set',\n      getStructDecoder([['fields', getTupleDecoder([getCollectionDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getCollectionToggleCodec(): Codec<\n  CollectionToggleArgs,\n  CollectionToggle\n> {\n  return combineCodec(\n    getCollectionToggleEncoder(),\n    getCollectionToggleDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function collectionToggle(\n  kind: 'None'\n): GetDiscriminatedUnionVariant<CollectionToggleArgs, '__kind', 'None'>;\nexport function collectionToggle(\n  kind: 'Clear'\n): GetDiscriminatedUnionVariant<CollectionToggleArgs, '__kind', 'Clear'>;\nexport function collectionToggle(\n  kind: 'Set',\n  data: GetDiscriminatedUnionVariantContent<\n    CollectionToggleArgs,\n    '__kind',\n    'Set'\n  >['fields']\n): GetDiscriminatedUnionVariant<CollectionToggleArgs, '__kind', 'Set'>;\nexport function collectionToggle<\n  K extends CollectionToggleArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCollectionToggle<K extends CollectionToggle['__kind']>(\n  kind: K,\n  value: CollectionToggle\n): value is CollectionToggle & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getAssetDataDecoder,\n  getAssetDataEncoder,\n  getPrintSupplyDecoder,\n  getPrintSupplyEncoder,\n  type AssetData,\n  type AssetDataArgs,\n  type PrintSupply,\n  type PrintSupplyArgs,\n} from '.';\n\nexport type CreateArgs = {\n  __kind: 'V1';\n  assetData: AssetData;\n  decimals: Option<number>;\n  printSupply: Option<PrintSupply>;\n};\n\nexport type CreateArgsArgs = {\n  __kind: 'V1';\n  assetData: AssetDataArgs;\n  decimals: OptionOrNullable<number>;\n  printSupply: OptionOrNullable<PrintSupplyArgs>;\n};\n\nexport function getCreateArgsEncoder(): Encoder<CreateArgsArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'V1',\n      getStructEncoder([\n        ['assetData', getAssetDataEncoder()],\n        ['decimals', getOptionEncoder(getU8Encoder())],\n        ['printSupply', getOptionEncoder(getPrintSupplyEncoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getCreateArgsDecoder(): Decoder<CreateArgs> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'V1',\n      getStructDecoder([\n        ['assetData', getAssetDataDecoder()],\n        ['decimals', getOptionDecoder(getU8Decoder())],\n        ['printSupply', getOptionDecoder(getPrintSupplyDecoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getCreateArgsCodec(): Codec<CreateArgsArgs, CreateArgs> {\n  return combineCodec(getCreateArgsEncoder(), getCreateArgsDecoder());\n}\n\n// Data Enum Helpers.\nexport function createArgs(\n  kind: 'V1',\n  data: GetDiscriminatedUnionVariantContent<CreateArgsArgs, '__kind', 'V1'>\n): GetDiscriminatedUnionVariant<CreateArgsArgs, '__kind', 'V1'>;\nexport function createArgs<K extends CreateArgsArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCreateArgs<K extends CreateArgs['__kind']>(\n  kind: K,\n  value: CreateArgs\n): value is CreateArgs & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport type Creator = { address: Address; verified: boolean; share: number };\n\nexport type CreatorArgs = Creator;\n\nexport function getCreatorEncoder(): Encoder<CreatorArgs> {\n  return getStructEncoder([\n    ['address', getAddressEncoder()],\n    ['verified', getBooleanEncoder()],\n    ['share', getU8Encoder()],\n  ]);\n}\n\nexport function getCreatorDecoder(): Decoder<Creator> {\n  return getStructDecoder([\n    ['address', getAddressDecoder()],\n    ['verified', getBooleanDecoder()],\n    ['share', getU8Decoder()],\n  ]);\n}\n\nexport function getCreatorCodec(): Codec<CreatorArgs, Creator> {\n  return combineCodec(getCreatorEncoder(), getCreatorDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCreatorDecoder,\n  getCreatorEncoder,\n  type Creator,\n  type CreatorArgs,\n} from '.';\n\nexport type Data = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: Option<Array<Creator>>;\n};\n\nexport type DataArgs = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: OptionOrNullable<Array<CreatorArgs>>;\n};\n\nexport function getDataEncoder(): Encoder<DataArgs> {\n  return getStructEncoder([\n    ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['sellerFeeBasisPoints', getU16Encoder()],\n    ['creators', getOptionEncoder(getArrayEncoder(getCreatorEncoder()))],\n  ]);\n}\n\nexport function getDataDecoder(): Decoder<Data> {\n  return getStructDecoder([\n    ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['sellerFeeBasisPoints', getU16Decoder()],\n    ['creators', getOptionDecoder(getArrayDecoder(getCreatorDecoder()))],\n  ]);\n}\n\nexport function getDataCodec(): Codec<DataArgs, Data> {\n  return combineCodec(getDataEncoder(), getDataDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getCollectionDecoder,\n  getCollectionEncoder,\n  getCreatorDecoder,\n  getCreatorEncoder,\n  getUsesDecoder,\n  getUsesEncoder,\n  type Collection,\n  type CollectionArgs,\n  type Creator,\n  type CreatorArgs,\n  type Uses,\n  type UsesArgs,\n} from '.';\n\nexport type DataV2 = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: Option<Array<Creator>>;\n  collection: Option<Collection>;\n  uses: Option<Uses>;\n};\n\nexport type DataV2Args = {\n  name: string;\n  symbol: string;\n  uri: string;\n  sellerFeeBasisPoints: number;\n  creators: OptionOrNullable<Array<CreatorArgs>>;\n  collection: OptionOrNullable<CollectionArgs>;\n  uses: OptionOrNullable<UsesArgs>;\n};\n\nexport function getDataV2Encoder(): Encoder<DataV2Args> {\n  return getStructEncoder([\n    ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['sellerFeeBasisPoints', getU16Encoder()],\n    ['creators', getOptionEncoder(getArrayEncoder(getCreatorEncoder()))],\n    ['collection', getOptionEncoder(getCollectionEncoder())],\n    ['uses', getOptionEncoder(getUsesEncoder())],\n  ]);\n}\n\nexport function getDataV2Decoder(): Decoder<DataV2> {\n  return getStructDecoder([\n    ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['sellerFeeBasisPoints', getU16Decoder()],\n    ['creators', getOptionDecoder(getArrayDecoder(getCreatorDecoder()))],\n    ['collection', getOptionDecoder(getCollectionDecoder())],\n    ['uses', getOptionDecoder(getUsesDecoder())],\n  ]);\n}\n\nexport function getDataV2Codec(): Codec<DataV2Args, DataV2> {\n  return combineCodec(getDataV2Encoder(), getDataV2Decoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getAuthorizationDataDecoder,\n  getAuthorizationDataEncoder,\n  type AuthorizationData,\n  type AuthorizationDataArgs,\n} from '.';\n\nexport type DelegateArgs =\n  | { __kind: 'CollectionV1'; authorizationData: Option<AuthorizationData> }\n  | {\n      __kind: 'SaleV1';\n      amount: bigint;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'TransferV1';\n      amount: bigint;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | { __kind: 'DataV1'; authorizationData: Option<AuthorizationData> }\n  | {\n      __kind: 'UtilityV1';\n      amount: bigint;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'StakingV1';\n      amount: bigint;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | { __kind: 'StandardV1'; amount: bigint }\n  | {\n      __kind: 'LockedTransferV1';\n      amount: bigint;\n      lockedAddress: Address;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'ProgrammableConfigV1';\n      authorizationData: Option<AuthorizationData>;\n    }\n  | { __kind: 'AuthorityItemV1'; authorizationData: Option<AuthorizationData> }\n  | { __kind: 'DataItemV1'; authorizationData: Option<AuthorizationData> }\n  | { __kind: 'CollectionItemV1'; authorizationData: Option<AuthorizationData> }\n  | {\n      __kind: 'ProgrammableConfigItemV1';\n      authorizationData: Option<AuthorizationData>;\n    }\n  | { __kind: 'PrintDelegateV1'; authorizationData: Option<AuthorizationData> };\n\nexport type DelegateArgsArgs =\n  | {\n      __kind: 'CollectionV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'SaleV1';\n      amount: number | bigint;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'TransferV1';\n      amount: number | bigint;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'DataV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'UtilityV1';\n      amount: number | bigint;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'StakingV1';\n      amount: number | bigint;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | { __kind: 'StandardV1'; amount: number | bigint }\n  | {\n      __kind: 'LockedTransferV1';\n      amount: number | bigint;\n      lockedAddress: Address;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'ProgrammableConfigV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AuthorityItemV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'DataItemV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'CollectionItemV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'ProgrammableConfigItemV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'PrintDelegateV1';\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    };\n\nexport function getDelegateArgsEncoder(): Encoder<DelegateArgsArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'CollectionV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'SaleV1',\n      getStructEncoder([\n        ['amount', getU64Encoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'TransferV1',\n      getStructEncoder([\n        ['amount', getU64Encoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'DataV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'UtilityV1',\n      getStructEncoder([\n        ['amount', getU64Encoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'StakingV1',\n      getStructEncoder([\n        ['amount', getU64Encoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    ['StandardV1', getStructEncoder([['amount', getU64Encoder()]])],\n    [\n      'LockedTransferV1',\n      getStructEncoder([\n        ['amount', getU64Encoder()],\n        ['lockedAddress', getAddressEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'ProgrammableConfigV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AuthorityItemV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'DataItemV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'CollectionItemV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'ProgrammableConfigItemV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'PrintDelegateV1',\n      getStructEncoder([\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDelegateArgsDecoder(): Decoder<DelegateArgs> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'CollectionV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'SaleV1',\n      getStructDecoder([\n        ['amount', getU64Decoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'TransferV1',\n      getStructDecoder([\n        ['amount', getU64Decoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'DataV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'UtilityV1',\n      getStructDecoder([\n        ['amount', getU64Decoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'StakingV1',\n      getStructDecoder([\n        ['amount', getU64Decoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    ['StandardV1', getStructDecoder([['amount', getU64Decoder()]])],\n    [\n      'LockedTransferV1',\n      getStructDecoder([\n        ['amount', getU64Decoder()],\n        ['lockedAddress', getAddressDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'ProgrammableConfigV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AuthorityItemV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'DataItemV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'CollectionItemV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'ProgrammableConfigItemV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'PrintDelegateV1',\n      getStructDecoder([\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDelegateArgsCodec(): Codec<DelegateArgsArgs, DelegateArgs> {\n  return combineCodec(getDelegateArgsEncoder(), getDelegateArgsDecoder());\n}\n\n// Data Enum Helpers.\nexport function delegateArgs(\n  kind: 'CollectionV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'CollectionV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'CollectionV1'>;\nexport function delegateArgs(\n  kind: 'SaleV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'SaleV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'SaleV1'>;\nexport function delegateArgs(\n  kind: 'TransferV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'TransferV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'TransferV1'>;\nexport function delegateArgs(\n  kind: 'DataV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'DataV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'DataV1'>;\nexport function delegateArgs(\n  kind: 'UtilityV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'UtilityV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'UtilityV1'>;\nexport function delegateArgs(\n  kind: 'StakingV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'StakingV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'StakingV1'>;\nexport function delegateArgs(\n  kind: 'StandardV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'StandardV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'StandardV1'>;\nexport function delegateArgs(\n  kind: 'LockedTransferV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'LockedTransferV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'LockedTransferV1'>;\nexport function delegateArgs(\n  kind: 'ProgrammableConfigV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'ProgrammableConfigV1'\n  >\n): GetDiscriminatedUnionVariant<\n  DelegateArgsArgs,\n  '__kind',\n  'ProgrammableConfigV1'\n>;\nexport function delegateArgs(\n  kind: 'AuthorityItemV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'AuthorityItemV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'AuthorityItemV1'>;\nexport function delegateArgs(\n  kind: 'DataItemV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'DataItemV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'DataItemV1'>;\nexport function delegateArgs(\n  kind: 'CollectionItemV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'CollectionItemV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'CollectionItemV1'>;\nexport function delegateArgs(\n  kind: 'ProgrammableConfigItemV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'ProgrammableConfigItemV1'\n  >\n): GetDiscriminatedUnionVariant<\n  DelegateArgsArgs,\n  '__kind',\n  'ProgrammableConfigItemV1'\n>;\nexport function delegateArgs(\n  kind: 'PrintDelegateV1',\n  data: GetDiscriminatedUnionVariantContent<\n    DelegateArgsArgs,\n    '__kind',\n    'PrintDelegateV1'\n  >\n): GetDiscriminatedUnionVariant<DelegateArgsArgs, '__kind', 'PrintDelegateV1'>;\nexport function delegateArgs<K extends DelegateArgsArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isDelegateArgs<K extends DelegateArgs['__kind']>(\n  kind: K,\n  value: DelegateArgs\n): value is DelegateArgs & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type EscrowAuthority =\n  | { __kind: 'TokenOwner' }\n  | { __kind: 'Creator'; fields: readonly [Address] };\n\nexport type EscrowAuthorityArgs = EscrowAuthority;\n\nexport function getEscrowAuthorityEncoder(): Encoder<EscrowAuthorityArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['TokenOwner', getUnitEncoder()],\n    [\n      'Creator',\n      getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getEscrowAuthorityDecoder(): Decoder<EscrowAuthority> {\n  return getDiscriminatedUnionDecoder([\n    ['TokenOwner', getUnitDecoder()],\n    [\n      'Creator',\n      getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getEscrowAuthorityCodec(): Codec<\n  EscrowAuthorityArgs,\n  EscrowAuthority\n> {\n  return combineCodec(getEscrowAuthorityEncoder(), getEscrowAuthorityDecoder());\n}\n\n// Data Enum Helpers.\nexport function escrowAuthority(\n  kind: 'TokenOwner'\n): GetDiscriminatedUnionVariant<EscrowAuthorityArgs, '__kind', 'TokenOwner'>;\nexport function escrowAuthority(\n  kind: 'Creator',\n  data: GetDiscriminatedUnionVariantContent<\n    EscrowAuthorityArgs,\n    '__kind',\n    'Creator'\n  >['fields']\n): GetDiscriminatedUnionVariant<EscrowAuthorityArgs, '__kind', 'Creator'>;\nexport function escrowAuthority<K extends EscrowAuthorityArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isEscrowAuthority<K extends EscrowAuthority['__kind']>(\n  kind: K,\n  value: EscrowAuthority\n): value is EscrowAuthority & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum Key {\n  Uninitialized,\n  EditionV1,\n  MasterEditionV1,\n  ReservationListV1,\n  MetadataV1,\n  ReservationListV2,\n  MasterEditionV2,\n  EditionMarker,\n  UseAuthorityRecord,\n  CollectionAuthorityRecord,\n  TokenOwnedEscrow,\n  TokenRecord,\n  MetadataDelegate,\n  EditionMarkerV2,\n  HolderDelegate,\n}\n\nexport type KeyArgs = Key;\n\nexport function getKeyEncoder(): Encoder<KeyArgs> {\n  return getEnumEncoder(Key);\n}\n\nexport function getKeyDecoder(): Decoder<Key> {\n  return getEnumDecoder(Key);\n}\n\nexport function getKeyCodec(): Codec<KeyArgs, Key> {\n  return combineCodec(getKeyEncoder(), getKeyDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from \"@solana/kit\";\nimport {\n  getAuthorizationDataDecoder,\n  getAuthorizationDataEncoder,\n  type AuthorizationData,\n  type AuthorizationDataArgs,\n} from \".\";\n\nexport type MetadataMintArgs = {\n  __kind: \"V1\";\n  amount: bigint;\n  authorizationData: Option<AuthorizationData>;\n};\n\nexport type MintArgsArgs = {\n  __kind: \"V1\";\n  amount: number | bigint;\n  authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n};\n\nexport function getMintArgsEncoder(): Encoder<MintArgsArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      \"V1\",\n      getStructEncoder([\n        [\"amount\", getU64Encoder()],\n        [\"authorizationData\", getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMintArgsDecoder(): Decoder<MetadataMintArgs> {\n  return getDiscriminatedUnionDecoder([\n    [\n      \"V1\",\n      getStructDecoder([\n        [\"amount\", getU64Decoder()],\n        [\"authorizationData\", getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getMintArgsCodec(): Codec<MintArgsArgs, MetadataMintArgs> {\n  return combineCodec(getMintArgsEncoder(), getMintArgsDecoder());\n}\n\n// Data Enum Helpers.\nexport function mintArgs(\n  kind: \"V1\",\n  data: GetDiscriminatedUnionVariantContent<MintArgsArgs, \"__kind\", \"V1\">,\n): GetDiscriminatedUnionVariant<MintArgsArgs, \"__kind\", \"V1\">;\nexport function mintArgs<K extends MintArgsArgs[\"__kind\"], Data>(kind: K, data?: Data) {\n  return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isMintArgs<K extends MetadataMintArgs[\"__kind\"]>(\n  kind: K,\n  value: MetadataMintArgs,\n): value is MetadataMintArgs & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getMapDecoder,\n  getMapEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\nimport {\n  getPayloadTypeDecoder,\n  getPayloadTypeEncoder,\n  type PayloadType,\n  type PayloadTypeArgs,\n} from '.';\n\nexport type Payload = { map: Map<string, PayloadType> };\n\nexport type PayloadArgs = { map: Map<string, PayloadTypeArgs> };\n\nexport function getPayloadEncoder(): Encoder<PayloadArgs> {\n  return getStructEncoder([\n    [\n      'map',\n      getMapEncoder(\n        addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n        getPayloadTypeEncoder()\n      ),\n    ],\n  ]);\n}\n\nexport function getPayloadDecoder(): Decoder<Payload> {\n  return getStructDecoder([\n    [\n      'map',\n      getMapDecoder(\n        addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n        getPayloadTypeDecoder()\n      ),\n    ],\n  ]);\n}\n\nexport function getPayloadCodec(): Codec<PayloadArgs, Payload> {\n  return combineCodec(getPayloadEncoder(), getPayloadDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\n\nexport type ProgrammableConfig = { __kind: 'V1'; ruleSet: Option<Address> };\n\nexport type ProgrammableConfigArgs = {\n  __kind: 'V1';\n  ruleSet: OptionOrNullable<Address>;\n};\n\nexport function getProgrammableConfigEncoder(): Encoder<ProgrammableConfigArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'V1',\n      getStructEncoder([['ruleSet', getOptionEncoder(getAddressEncoder())]]),\n    ],\n  ]);\n}\n\nexport function getProgrammableConfigDecoder(): Decoder<ProgrammableConfig> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'V1',\n      getStructDecoder([['ruleSet', getOptionDecoder(getAddressDecoder())]]),\n    ],\n  ]);\n}\n\nexport function getProgrammableConfigCodec(): Codec<\n  ProgrammableConfigArgs,\n  ProgrammableConfig\n> {\n  return combineCodec(\n    getProgrammableConfigEncoder(),\n    getProgrammableConfigDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function programmableConfig(\n  kind: 'V1',\n  data: GetDiscriminatedUnionVariantContent<\n    ProgrammableConfigArgs,\n    '__kind',\n    'V1'\n  >\n): GetDiscriminatedUnionVariant<ProgrammableConfigArgs, '__kind', 'V1'>;\nexport function programmableConfig<\n  K extends ProgrammableConfigArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isProgrammableConfig<K extends ProgrammableConfig['__kind']>(\n  kind: K,\n  value: ProgrammableConfig\n): value is ProgrammableConfig & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport type Reservation = {\n  address: Address;\n  spotsRemaining: bigint;\n  totalSpots: bigint;\n};\n\nexport type ReservationArgs = {\n  address: Address;\n  spotsRemaining: number | bigint;\n  totalSpots: number | bigint;\n};\n\nexport function getReservationEncoder(): Encoder<ReservationArgs> {\n  return getStructEncoder([\n    ['address', getAddressEncoder()],\n    ['spotsRemaining', getU64Encoder()],\n    ['totalSpots', getU64Encoder()],\n  ]);\n}\n\nexport function getReservationDecoder(): Decoder<Reservation> {\n  return getStructDecoder([\n    ['address', getAddressDecoder()],\n    ['spotsRemaining', getU64Decoder()],\n    ['totalSpots', getU64Decoder()],\n  ]);\n}\n\nexport function getReservationCodec(): Codec<ReservationArgs, Reservation> {\n  return combineCodec(getReservationEncoder(), getReservationDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, getEnumDecoder, getEnumEncoder, type Codec, type Decoder, type Encoder } from \"@solana/kit\";\n\nexport enum TokenStandard {\n  NonFungible,\n  FungibleAsset,\n  Fungible,\n  NonFungibleEdition,\n  ProgrammableNonFungible,\n  ProgrammableNonFungibleEdition,\n}\n\nexport type TokenStandardArgs = TokenStandard;\n\nexport function getTokenStandardEncoder(): Encoder<TokenStandardArgs> {\n  return getEnumEncoder(TokenStandard);\n}\n\nexport function getTokenStandardDecoder(): Decoder<TokenStandard> {\n  return getEnumDecoder(TokenStandard);\n}\n\nexport function getTokenStandardCodec(): Codec<TokenStandardArgs, TokenStandard> {\n  return combineCodec(getTokenStandardEncoder(), getTokenStandardDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getAuthorizationDataDecoder,\n  getAuthorizationDataEncoder,\n  getCollectionDetailsToggleDecoder,\n  getCollectionDetailsToggleEncoder,\n  getCollectionToggleDecoder,\n  getCollectionToggleEncoder,\n  getDataDecoder,\n  getDataEncoder,\n  getRuleSetToggleDecoder,\n  getRuleSetToggleEncoder,\n  getTokenStandardDecoder,\n  getTokenStandardEncoder,\n  getUsesToggleDecoder,\n  getUsesToggleEncoder,\n  type AuthorizationData,\n  type AuthorizationDataArgs,\n  type CollectionDetailsToggle,\n  type CollectionDetailsToggleArgs,\n  type CollectionToggle,\n  type CollectionToggleArgs,\n  type Data,\n  type DataArgs,\n  type RuleSetToggle,\n  type RuleSetToggleArgs,\n  type TokenStandard,\n  type TokenStandardArgs,\n  type UsesToggle,\n  type UsesToggleArgs,\n} from '.';\n\nexport type UpdateArgs =\n  | {\n      __kind: 'V1';\n      newUpdateAuthority: Option<Address>;\n      data: Option<Data>;\n      primarySaleHappened: Option<boolean>;\n      isMutable: Option<boolean>;\n      collection: CollectionToggle;\n      collectionDetails: CollectionDetailsToggle;\n      uses: UsesToggle;\n      ruleSet: RuleSetToggle;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsUpdateAuthorityV2';\n      newUpdateAuthority: Option<Address>;\n      data: Option<Data>;\n      primarySaleHappened: Option<boolean>;\n      isMutable: Option<boolean>;\n      collection: CollectionToggle;\n      collectionDetails: CollectionDetailsToggle;\n      uses: UsesToggle;\n      ruleSet: RuleSetToggle;\n      tokenStandard: Option<TokenStandard>;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsAuthorityItemDelegateV2';\n      newUpdateAuthority: Option<Address>;\n      primarySaleHappened: Option<boolean>;\n      isMutable: Option<boolean>;\n      tokenStandard: Option<TokenStandard>;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsCollectionDelegateV2';\n      collection: CollectionToggle;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsDataDelegateV2';\n      data: Option<Data>;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsProgrammableConfigDelegateV2';\n      ruleSet: RuleSetToggle;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsDataItemDelegateV2';\n      data: Option<Data>;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsCollectionItemDelegateV2';\n      collection: CollectionToggle;\n      authorizationData: Option<AuthorizationData>;\n    }\n  | {\n      __kind: 'AsProgrammableConfigItemDelegateV2';\n      ruleSet: RuleSetToggle;\n      authorizationData: Option<AuthorizationData>;\n    };\n\nexport type UpdateArgsArgs =\n  | {\n      __kind: 'V1';\n      newUpdateAuthority: OptionOrNullable<Address>;\n      data: OptionOrNullable<DataArgs>;\n      primarySaleHappened: OptionOrNullable<boolean>;\n      isMutable: OptionOrNullable<boolean>;\n      collection: CollectionToggleArgs;\n      collectionDetails: CollectionDetailsToggleArgs;\n      uses: UsesToggleArgs;\n      ruleSet: RuleSetToggleArgs;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsUpdateAuthorityV2';\n      newUpdateAuthority: OptionOrNullable<Address>;\n      data: OptionOrNullable<DataArgs>;\n      primarySaleHappened: OptionOrNullable<boolean>;\n      isMutable: OptionOrNullable<boolean>;\n      collection: CollectionToggleArgs;\n      collectionDetails: CollectionDetailsToggleArgs;\n      uses: UsesToggleArgs;\n      ruleSet: RuleSetToggleArgs;\n      tokenStandard: OptionOrNullable<TokenStandardArgs>;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsAuthorityItemDelegateV2';\n      newUpdateAuthority: OptionOrNullable<Address>;\n      primarySaleHappened: OptionOrNullable<boolean>;\n      isMutable: OptionOrNullable<boolean>;\n      tokenStandard: OptionOrNullable<TokenStandardArgs>;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsCollectionDelegateV2';\n      collection: CollectionToggleArgs;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsDataDelegateV2';\n      data: OptionOrNullable<DataArgs>;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsProgrammableConfigDelegateV2';\n      ruleSet: RuleSetToggleArgs;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsDataItemDelegateV2';\n      data: OptionOrNullable<DataArgs>;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsCollectionItemDelegateV2';\n      collection: CollectionToggleArgs;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    }\n  | {\n      __kind: 'AsProgrammableConfigItemDelegateV2';\n      ruleSet: RuleSetToggleArgs;\n      authorizationData: OptionOrNullable<AuthorizationDataArgs>;\n    };\n\nexport function getUpdateArgsEncoder(): Encoder<UpdateArgsArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'V1',\n      getStructEncoder([\n        ['newUpdateAuthority', getOptionEncoder(getAddressEncoder())],\n        ['data', getOptionEncoder(getDataEncoder())],\n        ['primarySaleHappened', getOptionEncoder(getBooleanEncoder())],\n        ['isMutable', getOptionEncoder(getBooleanEncoder())],\n        ['collection', getCollectionToggleEncoder()],\n        ['collectionDetails', getCollectionDetailsToggleEncoder()],\n        ['uses', getUsesToggleEncoder()],\n        ['ruleSet', getRuleSetToggleEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsUpdateAuthorityV2',\n      getStructEncoder([\n        ['newUpdateAuthority', getOptionEncoder(getAddressEncoder())],\n        ['data', getOptionEncoder(getDataEncoder())],\n        ['primarySaleHappened', getOptionEncoder(getBooleanEncoder())],\n        ['isMutable', getOptionEncoder(getBooleanEncoder())],\n        ['collection', getCollectionToggleEncoder()],\n        ['collectionDetails', getCollectionDetailsToggleEncoder()],\n        ['uses', getUsesToggleEncoder()],\n        ['ruleSet', getRuleSetToggleEncoder()],\n        ['tokenStandard', getOptionEncoder(getTokenStandardEncoder())],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsAuthorityItemDelegateV2',\n      getStructEncoder([\n        ['newUpdateAuthority', getOptionEncoder(getAddressEncoder())],\n        ['primarySaleHappened', getOptionEncoder(getBooleanEncoder())],\n        ['isMutable', getOptionEncoder(getBooleanEncoder())],\n        ['tokenStandard', getOptionEncoder(getTokenStandardEncoder())],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsCollectionDelegateV2',\n      getStructEncoder([\n        ['collection', getCollectionToggleEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsDataDelegateV2',\n      getStructEncoder([\n        ['data', getOptionEncoder(getDataEncoder())],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsProgrammableConfigDelegateV2',\n      getStructEncoder([\n        ['ruleSet', getRuleSetToggleEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsDataItemDelegateV2',\n      getStructEncoder([\n        ['data', getOptionEncoder(getDataEncoder())],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsCollectionItemDelegateV2',\n      getStructEncoder([\n        ['collection', getCollectionToggleEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n    [\n      'AsProgrammableConfigItemDelegateV2',\n      getStructEncoder([\n        ['ruleSet', getRuleSetToggleEncoder()],\n        ['authorizationData', getOptionEncoder(getAuthorizationDataEncoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpdateArgsDecoder(): Decoder<UpdateArgs> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'V1',\n      getStructDecoder([\n        ['newUpdateAuthority', getOptionDecoder(getAddressDecoder())],\n        ['data', getOptionDecoder(getDataDecoder())],\n        ['primarySaleHappened', getOptionDecoder(getBooleanDecoder())],\n        ['isMutable', getOptionDecoder(getBooleanDecoder())],\n        ['collection', getCollectionToggleDecoder()],\n        ['collectionDetails', getCollectionDetailsToggleDecoder()],\n        ['uses', getUsesToggleDecoder()],\n        ['ruleSet', getRuleSetToggleDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsUpdateAuthorityV2',\n      getStructDecoder([\n        ['newUpdateAuthority', getOptionDecoder(getAddressDecoder())],\n        ['data', getOptionDecoder(getDataDecoder())],\n        ['primarySaleHappened', getOptionDecoder(getBooleanDecoder())],\n        ['isMutable', getOptionDecoder(getBooleanDecoder())],\n        ['collection', getCollectionToggleDecoder()],\n        ['collectionDetails', getCollectionDetailsToggleDecoder()],\n        ['uses', getUsesToggleDecoder()],\n        ['ruleSet', getRuleSetToggleDecoder()],\n        ['tokenStandard', getOptionDecoder(getTokenStandardDecoder())],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsAuthorityItemDelegateV2',\n      getStructDecoder([\n        ['newUpdateAuthority', getOptionDecoder(getAddressDecoder())],\n        ['primarySaleHappened', getOptionDecoder(getBooleanDecoder())],\n        ['isMutable', getOptionDecoder(getBooleanDecoder())],\n        ['tokenStandard', getOptionDecoder(getTokenStandardDecoder())],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsCollectionDelegateV2',\n      getStructDecoder([\n        ['collection', getCollectionToggleDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsDataDelegateV2',\n      getStructDecoder([\n        ['data', getOptionDecoder(getDataDecoder())],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsProgrammableConfigDelegateV2',\n      getStructDecoder([\n        ['ruleSet', getRuleSetToggleDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsDataItemDelegateV2',\n      getStructDecoder([\n        ['data', getOptionDecoder(getDataDecoder())],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsCollectionItemDelegateV2',\n      getStructDecoder([\n        ['collection', getCollectionToggleDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n    [\n      'AsProgrammableConfigItemDelegateV2',\n      getStructDecoder([\n        ['ruleSet', getRuleSetToggleDecoder()],\n        ['authorizationData', getOptionDecoder(getAuthorizationDataDecoder())],\n      ]),\n    ],\n  ]);\n}\n\nexport function getUpdateArgsCodec(): Codec<UpdateArgsArgs, UpdateArgs> {\n  return combineCodec(getUpdateArgsEncoder(), getUpdateArgsDecoder());\n}\n\n// Data Enum Helpers.\nexport function updateArgs(\n  kind: 'V1',\n  data: GetDiscriminatedUnionVariantContent<UpdateArgsArgs, '__kind', 'V1'>\n): GetDiscriminatedUnionVariant<UpdateArgsArgs, '__kind', 'V1'>;\nexport function updateArgs(\n  kind: 'AsUpdateAuthorityV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsUpdateAuthorityV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsUpdateAuthorityV2'\n>;\nexport function updateArgs(\n  kind: 'AsAuthorityItemDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsAuthorityItemDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsAuthorityItemDelegateV2'\n>;\nexport function updateArgs(\n  kind: 'AsCollectionDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsCollectionDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsCollectionDelegateV2'\n>;\nexport function updateArgs(\n  kind: 'AsDataDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsDataDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<UpdateArgsArgs, '__kind', 'AsDataDelegateV2'>;\nexport function updateArgs(\n  kind: 'AsProgrammableConfigDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsProgrammableConfigDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsProgrammableConfigDelegateV2'\n>;\nexport function updateArgs(\n  kind: 'AsDataItemDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsDataItemDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsDataItemDelegateV2'\n>;\nexport function updateArgs(\n  kind: 'AsCollectionItemDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsCollectionItemDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsCollectionItemDelegateV2'\n>;\nexport function updateArgs(\n  kind: 'AsProgrammableConfigItemDelegateV2',\n  data: GetDiscriminatedUnionVariantContent<\n    UpdateArgsArgs,\n    '__kind',\n    'AsProgrammableConfigItemDelegateV2'\n  >\n): GetDiscriminatedUnionVariant<\n  UpdateArgsArgs,\n  '__kind',\n  'AsProgrammableConfigItemDelegateV2'\n>;\nexport function updateArgs<K extends UpdateArgsArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUpdateArgs<K extends UpdateArgs['__kind']>(\n  kind: K,\n  value: UpdateArgs\n): value is UpdateArgs & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\nimport {\n  getUseMethodDecoder,\n  getUseMethodEncoder,\n  type UseMethod,\n  type UseMethodArgs,\n} from '.';\n\nexport type Uses = { useMethod: UseMethod; remaining: bigint; total: bigint };\n\nexport type UsesArgs = {\n  useMethod: UseMethodArgs;\n  remaining: number | bigint;\n  total: number | bigint;\n};\n\nexport function getUsesEncoder(): Encoder<UsesArgs> {\n  return getStructEncoder([\n    ['useMethod', getUseMethodEncoder()],\n    ['remaining', getU64Encoder()],\n    ['total', getU64Encoder()],\n  ]);\n}\n\nexport function getUsesDecoder(): Decoder<Uses> {\n  return getStructDecoder([\n    ['useMethod', getUseMethodDecoder()],\n    ['remaining', getU64Decoder()],\n    ['total', getU64Decoder()],\n  ]);\n}\n\nexport function getUsesCodec(): Codec<UsesArgs, Uses> {\n  return combineCodec(getUsesEncoder(), getUsesDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport enum UseMethod {\n  Burn,\n  Multiple,\n  Single,\n}\n\nexport type UseMethodArgs = UseMethod;\n\nexport function getUseMethodEncoder(): Encoder<UseMethodArgs> {\n  return getEnumEncoder(UseMethod);\n}\n\nexport function getUseMethodDecoder(): Decoder<UseMethod> {\n  return getEnumDecoder(UseMethod);\n}\n\nexport function getUseMethodCodec(): Codec<UseMethodArgs, UseMethod> {\n  return combineCodec(getUseMethodEncoder(), getUseMethodDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport { getUsesDecoder, getUsesEncoder, type Uses, type UsesArgs } from '.';\n\nexport type UsesToggle =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [Uses] };\n\nexport type UsesToggleArgs =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [UsesArgs] };\n\nexport function getUsesToggleEncoder(): Encoder<UsesToggleArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['None', getUnitEncoder()],\n    ['Clear', getUnitEncoder()],\n    [\n      'Set',\n      getStructEncoder([['fields', getTupleEncoder([getUsesEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getUsesToggleDecoder(): Decoder<UsesToggle> {\n  return getDiscriminatedUnionDecoder([\n    ['None', getUnitDecoder()],\n    ['Clear', getUnitDecoder()],\n    [\n      'Set',\n      getStructDecoder([['fields', getTupleDecoder([getUsesDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getUsesToggleCodec(): Codec<UsesToggleArgs, UsesToggle> {\n  return combineCodec(getUsesToggleEncoder(), getUsesToggleDecoder());\n}\n\n// Data Enum Helpers.\nexport function usesToggle(\n  kind: 'None'\n): GetDiscriminatedUnionVariant<UsesToggleArgs, '__kind', 'None'>;\nexport function usesToggle(\n  kind: 'Clear'\n): GetDiscriminatedUnionVariant<UsesToggleArgs, '__kind', 'Clear'>;\nexport function usesToggle(\n  kind: 'Set',\n  data: GetDiscriminatedUnionVariantContent<\n    UsesToggleArgs,\n    '__kind',\n    'Set'\n  >['fields']\n): GetDiscriminatedUnionVariant<UsesToggleArgs, '__kind', 'Set'>;\nexport function usesToggle<K extends UsesToggleArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isUsesToggle<K extends UsesToggle['__kind']>(\n  kind: K,\n  value: UsesToggle\n): value is UsesToggle & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type RuleSetToggle =\n  | { __kind: 'None' }\n  | { __kind: 'Clear' }\n  | { __kind: 'Set'; fields: readonly [Address] };\n\nexport type RuleSetToggleArgs = RuleSetToggle;\n\nexport function getRuleSetToggleEncoder(): Encoder<RuleSetToggleArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['None', getUnitEncoder()],\n    ['Clear', getUnitEncoder()],\n    [\n      'Set',\n      getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]]),\n    ],\n  ]);\n}\n\nexport function getRuleSetToggleDecoder(): Decoder<RuleSetToggle> {\n  return getDiscriminatedUnionDecoder([\n    ['None', getUnitDecoder()],\n    ['Clear', getUnitDecoder()],\n    [\n      'Set',\n      getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]]),\n    ],\n  ]);\n}\n\nexport function getRuleSetToggleCodec(): Codec<\n  RuleSetToggleArgs,\n  RuleSetToggle\n> {\n  return combineCodec(getRuleSetToggleEncoder(), getRuleSetToggleDecoder());\n}\n\n// Data Enum Helpers.\nexport function ruleSetToggle(\n  kind: 'None'\n): GetDiscriminatedUnionVariant<RuleSetToggleArgs, '__kind', 'None'>;\nexport function ruleSetToggle(\n  kind: 'Clear'\n): GetDiscriminatedUnionVariant<RuleSetToggleArgs, '__kind', 'Clear'>;\nexport function ruleSetToggle(\n  kind: 'Set',\n  data: GetDiscriminatedUnionVariantContent<\n    RuleSetToggleArgs,\n    '__kind',\n    'Set'\n  >['fields']\n): GetDiscriminatedUnionVariant<RuleSetToggleArgs, '__kind', 'Set'>;\nexport function ruleSetToggle<K extends RuleSetToggleArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isRuleSetToggle<K extends RuleSetToggle['__kind']>(\n  kind: K,\n  value: RuleSetToggle\n): value is RuleSetToggle & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\nimport {\n  getPayloadDecoder,\n  getPayloadEncoder,\n  type Payload,\n  type PayloadArgs,\n} from '.';\n\nexport type AuthorizationData = { payload: Payload };\n\nexport type AuthorizationDataArgs = { payload: PayloadArgs };\n\nexport function getAuthorizationDataEncoder(): Encoder<AuthorizationDataArgs> {\n  return getStructEncoder([['payload', getPayloadEncoder()]]);\n}\n\nexport function getAuthorizationDataDecoder(): Decoder<AuthorizationData> {\n  return getStructDecoder([['payload', getPayloadDecoder()]]);\n}\n\nexport function getAuthorizationDataCodec(): Codec<\n  AuthorizationDataArgs,\n  AuthorizationData\n> {\n  return combineCodec(\n    getAuthorizationDataEncoder(),\n    getAuthorizationDataDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getProofInfoDecoder,\n  getProofInfoEncoder,\n  getSeedsVecDecoder,\n  getSeedsVecEncoder,\n  type ProofInfo,\n  type ProofInfoArgs,\n  type SeedsVec,\n  type SeedsVecArgs,\n} from '.';\n\nexport type PayloadType =\n  | { __kind: 'Pubkey'; fields: readonly [Address] }\n  | { __kind: 'Seeds'; fields: readonly [SeedsVec] }\n  | { __kind: 'MerkleProof'; fields: readonly [ProofInfo] }\n  | { __kind: 'Number'; fields: readonly [bigint] };\n\nexport type PayloadTypeArgs =\n  | { __kind: 'Pubkey'; fields: readonly [Address] }\n  | { __kind: 'Seeds'; fields: readonly [SeedsVecArgs] }\n  | { __kind: 'MerkleProof'; fields: readonly [ProofInfoArgs] }\n  | { __kind: 'Number'; fields: readonly [number | bigint] };\n\nexport function getPayloadTypeEncoder(): Encoder<PayloadTypeArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'Pubkey',\n      getStructEncoder([['fields', getTupleEncoder([getAddressEncoder()])]]),\n    ],\n    [\n      'Seeds',\n      getStructEncoder([['fields', getTupleEncoder([getSeedsVecEncoder()])]]),\n    ],\n    [\n      'MerkleProof',\n      getStructEncoder([['fields', getTupleEncoder([getProofInfoEncoder()])]]),\n    ],\n    [\n      'Number',\n      getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]]),\n    ],\n  ]);\n}\n\nexport function getPayloadTypeDecoder(): Decoder<PayloadType> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'Pubkey',\n      getStructDecoder([['fields', getTupleDecoder([getAddressDecoder()])]]),\n    ],\n    [\n      'Seeds',\n      getStructDecoder([['fields', getTupleDecoder([getSeedsVecDecoder()])]]),\n    ],\n    [\n      'MerkleProof',\n      getStructDecoder([['fields', getTupleDecoder([getProofInfoDecoder()])]]),\n    ],\n    [\n      'Number',\n      getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]]),\n    ],\n  ]);\n}\n\nexport function getPayloadTypeCodec(): Codec<PayloadTypeArgs, PayloadType> {\n  return combineCodec(getPayloadTypeEncoder(), getPayloadTypeDecoder());\n}\n\n// Data Enum Helpers.\nexport function payloadType(\n  kind: 'Pubkey',\n  data: GetDiscriminatedUnionVariantContent<\n    PayloadTypeArgs,\n    '__kind',\n    'Pubkey'\n  >['fields']\n): GetDiscriminatedUnionVariant<PayloadTypeArgs, '__kind', 'Pubkey'>;\nexport function payloadType(\n  kind: 'Seeds',\n  data: GetDiscriminatedUnionVariantContent<\n    PayloadTypeArgs,\n    '__kind',\n    'Seeds'\n  >['fields']\n): GetDiscriminatedUnionVariant<PayloadTypeArgs, '__kind', 'Seeds'>;\nexport function payloadType(\n  kind: 'MerkleProof',\n  data: GetDiscriminatedUnionVariantContent<\n    PayloadTypeArgs,\n    '__kind',\n    'MerkleProof'\n  >['fields']\n): GetDiscriminatedUnionVariant<PayloadTypeArgs, '__kind', 'MerkleProof'>;\nexport function payloadType(\n  kind: 'Number',\n  data: GetDiscriminatedUnionVariantContent<\n    PayloadTypeArgs,\n    '__kind',\n    'Number'\n  >['fields']\n): GetDiscriminatedUnionVariant<PayloadTypeArgs, '__kind', 'Number'>;\nexport function payloadType<K extends PayloadTypeArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isPayloadType<K extends PayloadType['__kind']>(\n  kind: K,\n  value: PayloadType\n): value is PayloadType & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type SeedsVec = { seeds: Array<ReadonlyUint8Array> };\n\nexport type SeedsVecArgs = SeedsVec;\n\nexport function getSeedsVecEncoder(): Encoder<SeedsVecArgs> {\n  return getStructEncoder([\n    [\n      'seeds',\n      getArrayEncoder(addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())),\n    ],\n  ]);\n}\n\nexport function getSeedsVecDecoder(): Decoder<SeedsVec> {\n  return getStructDecoder([\n    [\n      'seeds',\n      getArrayDecoder(addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())),\n    ],\n  ]);\n}\n\nexport function getSeedsVecCodec(): Codec<SeedsVecArgs, SeedsVec> {\n  return combineCodec(getSeedsVecEncoder(), getSeedsVecDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type ProofInfo = { proof: Array<ReadonlyUint8Array> };\n\nexport type ProofInfoArgs = ProofInfo;\n\nexport function getProofInfoEncoder(): Encoder<ProofInfoArgs> {\n  return getStructEncoder([\n    ['proof', getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n  ]);\n}\n\nexport function getProofInfoDecoder(): Decoder<ProofInfo> {\n  return getStructDecoder([\n    ['proof', getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n  ]);\n}\n\nexport function getProofInfoCodec(): Codec<ProofInfoArgs, ProofInfo> {\n  return combineCodec(getProofInfoEncoder(), getProofInfoDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type PrintSupply =\n  | { __kind: 'Zero' }\n  | { __kind: 'Limited'; fields: readonly [bigint] }\n  | { __kind: 'Unlimited' };\n\nexport type PrintSupplyArgs =\n  | { __kind: 'Zero' }\n  | { __kind: 'Limited'; fields: readonly [number | bigint] }\n  | { __kind: 'Unlimited' };\n\nexport function getPrintSupplyEncoder(): Encoder<PrintSupplyArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['Zero', getUnitEncoder()],\n    [\n      'Limited',\n      getStructEncoder([['fields', getTupleEncoder([getU64Encoder()])]]),\n    ],\n    ['Unlimited', getUnitEncoder()],\n  ]);\n}\n\nexport function getPrintSupplyDecoder(): Decoder<PrintSupply> {\n  return getDiscriminatedUnionDecoder([\n    ['Zero', getUnitDecoder()],\n    [\n      'Limited',\n      getStructDecoder([['fields', getTupleDecoder([getU64Decoder()])]]),\n    ],\n    ['Unlimited', getUnitDecoder()],\n  ]);\n}\n\nexport function getPrintSupplyCodec(): Codec<PrintSupplyArgs, PrintSupply> {\n  return combineCodec(getPrintSupplyEncoder(), getPrintSupplyDecoder());\n}\n\n// Data Enum Helpers.\nexport function printSupply(\n  kind: 'Zero'\n): GetDiscriminatedUnionVariant<PrintSupplyArgs, '__kind', 'Zero'>;\nexport function printSupply(\n  kind: 'Limited',\n  data: GetDiscriminatedUnionVariantContent<\n    PrintSupplyArgs,\n    '__kind',\n    'Limited'\n  >['fields']\n): GetDiscriminatedUnionVariant<PrintSupplyArgs, '__kind', 'Limited'>;\nexport function printSupply(\n  kind: 'Unlimited'\n): GetDiscriminatedUnionVariant<PrintSupplyArgs, '__kind', 'Unlimited'>;\nexport function printSupply<K extends PrintSupplyArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isPrintSupply<K extends PrintSupply['__kind']>(\n  kind: K,\n  value: PrintSupply\n): value is PrintSupply & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Account,\n  type Address,\n  type Codec,\n  type Decoder,\n  type EncodedAccount,\n  type Encoder,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type Option,\n  type OptionOrNullable,\n} from \"@solana/kit\";\nimport {\n  getCollectionDecoder,\n  getCollectionDetailsDecoder,\n  getCollectionDetailsEncoder,\n  getCollectionEncoder,\n  getDataDecoder,\n  getDataEncoder,\n  getKeyDecoder,\n  getKeyEncoder,\n  getProgrammableConfigDecoder,\n  getProgrammableConfigEncoder,\n  getTokenStandardDecoder,\n  getTokenStandardEncoder,\n  getUsesDecoder,\n  getUsesEncoder,\n  type Collection,\n  type CollectionArgs,\n  type CollectionDetails,\n  type CollectionDetailsArgs,\n  type Data,\n  type DataArgs,\n  type Key,\n  type KeyArgs,\n  type ProgrammableConfig,\n  type ProgrammableConfigArgs,\n  type TokenStandard,\n  type TokenStandardArgs,\n  type Uses,\n  type UsesArgs,\n} from \"../types\";\n\nexport type Metadata = {\n  key: Key;\n  updateAuthority: Address;\n  mint: Address;\n  data: Data;\n  primarySaleHappened: boolean;\n  isMutable: boolean;\n  editionNonce: Option<number>;\n  tokenStandard: Option<TokenStandard>;\n  collection: Option<Collection>;\n  uses: Option<Uses>;\n  collectionDetails: Option<CollectionDetails>;\n  programmableConfig: Option<ProgrammableConfig>;\n};\n\nexport type MetadataArgs = {\n  key: KeyArgs;\n  updateAuthority: Address;\n  mint: Address;\n  data: DataArgs;\n  primarySaleHappened: boolean;\n  isMutable: boolean;\n  editionNonce: OptionOrNullable<number>;\n  tokenStandard: OptionOrNullable<TokenStandardArgs>;\n  collection: OptionOrNullable<CollectionArgs>;\n  uses: OptionOrNullable<UsesArgs>;\n  collectionDetails: OptionOrNullable<CollectionDetailsArgs>;\n  programmableConfig: OptionOrNullable<ProgrammableConfigArgs>;\n};\n\nexport function getMetadataEncoder(): Encoder<MetadataArgs> {\n  return getStructEncoder([\n    [\"key\", getKeyEncoder()],\n    [\"updateAuthority\", getAddressEncoder()],\n    [\"mint\", getAddressEncoder()],\n    [\"data\", getDataEncoder()],\n    [\"primarySaleHappened\", getBooleanEncoder()],\n    [\"isMutable\", getBooleanEncoder()],\n    [\"editionNonce\", getOptionEncoder(getU8Encoder())],\n    [\"tokenStandard\", getOptionEncoder(getTokenStandardEncoder())],\n    [\"collection\", getOptionEncoder(getCollectionEncoder())],\n    [\"uses\", getOptionEncoder(getUsesEncoder())],\n    [\"collectionDetails\", getOptionEncoder(getCollectionDetailsEncoder())],\n    [\"programmableConfig\", getOptionEncoder(getProgrammableConfigEncoder())],\n  ]);\n}\n\nexport function getMetadataDecoder(): Decoder<Metadata> {\n  return getStructDecoder([\n    [\"key\", getKeyDecoder()],\n    [\"updateAuthority\", getAddressDecoder()],\n    [\"mint\", getAddressDecoder()],\n    [\"data\", getDataDecoder()],\n    [\"primarySaleHappened\", getBooleanDecoder()],\n    [\"isMutable\", getBooleanDecoder()],\n    [\"editionNonce\", getOptionDecoder(getU8Decoder())],\n    [\"tokenStandard\", getOptionDecoder(getTokenStandardDecoder())],\n    [\"collection\", getOptionDecoder(getCollectionDecoder())],\n    [\"uses\", getOptionDecoder(getUsesDecoder())],\n    [\"collectionDetails\", getOptionDecoder(getCollectionDetailsDecoder())],\n    [\"programmableConfig\", getOptionDecoder(getProgrammableConfigDecoder())],\n  ]);\n}\n\nexport function getMetadataCodec(): Codec<MetadataArgs, Metadata> {\n  return combineCodec(getMetadataEncoder(), getMetadataDecoder());\n}\n\nexport function decodeMetadata<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Metadata, TAddress>;\nexport function decodeMetadata<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Metadata, TAddress>;\nexport function decodeMetadata<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Metadata, TAddress> | MaybeAccount<Metadata, TAddress> {\n  return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getMetadataDecoder());\n}\n\nexport async function fetchMetadata<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Metadata, TAddress>> {\n  const maybeAccount = await fetchMaybeMetadata(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeMetadata<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Metadata, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeMetadata(maybeAccount);\n}\n\nexport async function fetchAllMetadata(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Metadata>[]> {\n  const maybeAccounts = await fetchAllMaybeMetadata(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMetadata(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Metadata>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeMetadata(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { type Address } from \"@solana/kit\";\n\nexport const TOKEN_METADATA_PROGRAM_ADDRESS =\n  \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\" as Address<\"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\">;\n\nexport enum TokenMetadataAccount {\n  CollectionAuthorityRecord,\n  MetadataDelegateRecord,\n  HolderDelegateRecord,\n  Edition,\n  EditionMarker,\n  EditionMarkerV2,\n  TokenOwnedEscrow,\n  MasterEditionV2,\n  MasterEditionV1,\n  Metadata,\n  TokenRecord,\n  ReservationListV2,\n  ReservationListV1,\n  UseAuthorityRecord,\n}\n\nexport enum TokenMetadataInstruction {\n  CreateMetadataAccount,\n  UpdateMetadataAccount,\n  DeprecatedCreateMasterEdition,\n  DeprecatedMintNewEditionFromMasterEditionViaPrintingToken,\n  UpdatePrimarySaleHappenedViaToken,\n  DeprecatedSetReservationList,\n  DeprecatedCreateReservationList,\n  SignMetadata,\n  DeprecatedMintPrintingTokensViaToken,\n  DeprecatedMintPrintingTokens,\n  CreateMasterEdition,\n  MintNewEditionFromMasterEditionViaToken,\n  ConvertMasterEditionV1ToV2,\n  MintNewEditionFromMasterEditionViaVaultProxy,\n  PuffMetadata,\n  UpdateMetadataAccountV2,\n  CreateMetadataAccountV2,\n  CreateMasterEditionV3,\n  VerifyCollection,\n  Utilize,\n  ApproveUseAuthority,\n  RevokeUseAuthority,\n  UnverifyCollection,\n  ApproveCollectionAuthority,\n  RevokeCollectionAuthority,\n  SetAndVerifyCollection,\n  FreezeDelegatedAccount,\n  ThawDelegatedAccount,\n  RemoveCreatorVerification,\n  BurnNft,\n  VerifySizedCollectionItem,\n  UnverifySizedCollectionItem,\n  SetAndVerifySizedCollectionItem,\n  CreateMetadataAccountV3,\n  SetCollectionSize,\n  SetTokenStandard,\n  BubblegumSetCollectionSize,\n  BurnEditionNft,\n  CreateEscrowAccount,\n  CloseEscrowAccount,\n  TransferOutOfEscrow,\n  Burn,\n  Create,\n  Mint,\n  Delegate,\n  Revoke,\n  Lock,\n  Unlock,\n  Migrate,\n  Transfer,\n  Update,\n  Use,\n  Verify,\n  Unverify,\n  Collect,\n  Print,\n  Resize,\n  CloseAccounts,\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * And vendored in from various codama generated client to help\n * minimize redundancy and bundle sizes\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { isProgramDerivedAddress, type Address, type ProgramDerivedAddress } from \"@solana/kit\";\nimport { AccountRole, type IAccountMeta, upgradeRoleToSigner } from \"@solana/kit\";\nimport {\n  isTransactionSigner as web3JsIsTransactionSigner,\n  type IAccountSignerMeta,\n  type TransactionSigner,\n} from \"@solana/kit\";\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n  if (value == null) {\n    throw new Error(\"Expected a value but received null or undefined.\");\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n  value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): Address<T> {\n  if (!value) {\n    throw new Error(\"Expected a Address.\");\n  }\n  if (typeof value === \"object\" && \"address\" in value) {\n    return value.address;\n  }\n  if (Array.isArray(value)) {\n    return value[0];\n  }\n  return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n  value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): ProgramDerivedAddress<T> {\n  if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n    throw new Error(\"Expected a ProgramDerivedAddress.\");\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n  value: Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null | undefined,\n): TransactionSigner<T> {\n  if (!value || !isTransactionSigner(value)) {\n    throw new Error(\"Expected a TransactionSigner.\");\n  }\n  return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n  T extends string = string,\n  U extends Address<T> | ProgramDerivedAddress<T> | TransactionSigner<T> | null =\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null,\n> = {\n  isWritable: boolean;\n  value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type IInstructionWithByteDelta = {\n  byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(programAddress: Address, optionalAccountStrategy: \"omitted\" | \"programId\") {\n  return (account: ResolvedAccount): IAccountMeta | IAccountSignerMeta | undefined => {\n    if (!account.value) {\n      if (optionalAccountStrategy === \"omitted\") return;\n      return Object.freeze({\n        address: programAddress,\n        role: AccountRole.READONLY,\n      });\n    }\n\n    const writableRole = account.isWritable ? AccountRole.WRITABLE : AccountRole.READONLY;\n    return Object.freeze({\n      address: expectAddress(account.value),\n      role: isTransactionSigner(account.value) ? upgradeRoleToSigner(writableRole) : writableRole,\n      ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n    });\n  };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n  value: Address<TAddress> | ProgramDerivedAddress<TAddress> | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n  return !!value && typeof value === \"object\" && \"address\" in value && web3JsIsTransactionSigner(value);\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyUint8Array,\n} from \"@solana/codecs\";\nimport type {\n  Address,\n  IAccountMeta,\n  IAccountSignerMeta,\n  IInstruction,\n  IInstructionWithAccounts,\n  IInstructionWithData,\n  ReadonlyAccount,\n  ReadonlySignerAccount,\n  TransactionSigner,\n  WritableAccount,\n  WritableSignerAccount,\n} from \"@solana/kit\";\n\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../../../shared\";\nimport { TOKEN_METADATA_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n  getCollectionDetailsDecoder,\n  getCollectionDetailsEncoder,\n  getDataV2Decoder,\n  getDataV2Encoder,\n  type CollectionDetails,\n  type CollectionDetailsArgs,\n  type DataV2,\n  type DataV2Args,\n} from \"../types\";\n\nexport const CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR = 33;\n\nexport function getCreateMetadataAccountV3DiscriminatorBytes(): ReadonlyUint8Array {\n  return getU8Encoder().encode(CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR);\n}\n\nexport type CreateMetadataAccountV3Instruction<\n  TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n  TAccountMetadata extends string | IAccountMeta<string> = string,\n  TAccountMint extends string | IAccountMeta<string> = string,\n  TAccountMintAuthority extends string | IAccountMeta<string> = string,\n  TAccountPayer extends string | IAccountMeta<string> = string,\n  TAccountUpdateAuthority extends string | IAccountMeta<string> = string,\n  TAccountSystemProgram extends string | IAccountMeta<string> = \"11111111111111111111111111111111\",\n  TAccountRent extends string | IAccountMeta<string> | undefined = undefined,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n      TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint,\n      TAccountMintAuthority extends string\n        ? ReadonlySignerAccount<TAccountMintAuthority> & IAccountSignerMeta<TAccountMintAuthority>\n        : TAccountMintAuthority,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> & IAccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountUpdateAuthority extends string ? ReadonlyAccount<TAccountUpdateAuthority> : TAccountUpdateAuthority,\n      TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram,\n      ...(TAccountRent extends undefined\n        ? []\n        : [TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent]),\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CreateMetadataAccountV3InstructionData = {\n  discriminator: number;\n  data: DataV2;\n  isMutable: boolean;\n  collectionDetails: Option<CollectionDetails>;\n};\n\nexport type CreateMetadataAccountV3InstructionDataArgs = {\n  data: DataV2Args;\n  isMutable: boolean;\n  collectionDetails: OptionOrNullable<CollectionDetailsArgs>;\n};\n\nexport function getCreateMetadataAccountV3InstructionDataEncoder(): Encoder<CreateMetadataAccountV3InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      [\"discriminator\", getU8Encoder()],\n      [\"data\", getDataV2Encoder()],\n      [\"isMutable\", getBooleanEncoder()],\n      [\"collectionDetails\", getOptionEncoder(getCollectionDetailsEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: CREATE_METADATA_ACCOUNT_V3_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getCreateMetadataAccountV3InstructionDataDecoder(): Decoder<CreateMetadataAccountV3InstructionData> {\n  return getStructDecoder([\n    [\"discriminator\", getU8Decoder()],\n    [\"data\", getDataV2Decoder()],\n    [\"isMutable\", getBooleanDecoder()],\n    [\"collectionDetails\", getOptionDecoder(getCollectionDetailsDecoder())],\n  ]);\n}\n\nexport function getCreateMetadataAccountV3InstructionDataCodec(): Codec<\n  CreateMetadataAccountV3InstructionDataArgs,\n  CreateMetadataAccountV3InstructionData\n> {\n  return combineCodec(\n    getCreateMetadataAccountV3InstructionDataEncoder(),\n    getCreateMetadataAccountV3InstructionDataDecoder(),\n  );\n}\n\nexport type CreateMetadataAccountV3Input<\n  TAccountMetadata extends string = string,\n  TAccountMint extends string = string,\n  TAccountMintAuthority extends string = string,\n  TAccountPayer extends string = string,\n  TAccountUpdateAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  /** Metadata key (pda of ['metadata', program id, mint id]) */\n  metadata: Address<TAccountMetadata>;\n  /** Mint of token asset */\n  mint: Address<TAccountMint>;\n  /** Mint authority */\n  mintAuthority: TransactionSigner<TAccountMintAuthority>;\n  /** payer */\n  payer: TransactionSigner<TAccountPayer>;\n  /** update authority info */\n  updateAuthority: Address<TAccountUpdateAuthority> | TransactionSigner<TAccountUpdateAuthority>;\n  /** System program */\n  systemProgram?: Address<TAccountSystemProgram>;\n  /** Rent info */\n  rent?: Address<TAccountRent>;\n  data: CreateMetadataAccountV3InstructionDataArgs[\"data\"];\n  isMutable: CreateMetadataAccountV3InstructionDataArgs[\"isMutable\"];\n  collectionDetails: CreateMetadataAccountV3InstructionDataArgs[\"collectionDetails\"];\n};\n\nexport function getCreateMetadataAccountV3Instruction<\n  TAccountMetadata extends string,\n  TAccountMint extends string,\n  TAccountMintAuthority extends string,\n  TAccountPayer extends string,\n  TAccountUpdateAuthority extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n>(\n  input: CreateMetadataAccountV3Input<\n    TAccountMetadata,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountPayer,\n    TAccountUpdateAuthority,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress },\n): CreateMetadataAccountV3Instruction<\n  TProgramAddress,\n  TAccountMetadata,\n  TAccountMint,\n  TAccountMintAuthority,\n  TAccountPayer,\n  (typeof input)[\"updateAuthority\"] extends TransactionSigner<TAccountUpdateAuthority>\n    ? ReadonlySignerAccount<TAccountUpdateAuthority> & IAccountSignerMeta<TAccountUpdateAuthority>\n    : TAccountUpdateAuthority,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? TOKEN_METADATA_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    metadata: { value: input.metadata ?? null, isWritable: true },\n    mint: { value: input.mint ?? null, isWritable: false },\n    mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    updateAuthority: {\n      value: input.updateAuthority ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value = \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, \"omitted\");\n  const instruction = {\n    accounts: [\n      getAccountMeta(accounts.metadata),\n      getAccountMeta(accounts.mint),\n      getAccountMeta(accounts.mintAuthority),\n      getAccountMeta(accounts.payer),\n      getAccountMeta(accounts.updateAuthority),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ].filter(<T>(x: T | undefined): x is T => x !== undefined),\n    programAddress,\n    data: getCreateMetadataAccountV3InstructionDataEncoder().encode(args as CreateMetadataAccountV3InstructionDataArgs),\n  } as CreateMetadataAccountV3Instruction<\n    TProgramAddress,\n    TAccountMetadata,\n    TAccountMint,\n    TAccountMintAuthority,\n    TAccountPayer,\n    (typeof input)[\"updateAuthority\"] extends TransactionSigner<TAccountUpdateAuthority>\n      ? ReadonlySignerAccount<TAccountUpdateAuthority> & IAccountSignerMeta<TAccountUpdateAuthority>\n      : TAccountUpdateAuthority,\n    TAccountSystemProgram,\n    TAccountRent\n  >;\n\n  return instruction;\n}\n\nexport type ParsedCreateMetadataAccountV3Instruction<\n  TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Metadata key (pda of ['metadata', program id, mint id]) */\n    metadata: TAccountMetas[0];\n    /** Mint of token asset */\n    mint: TAccountMetas[1];\n    /** Mint authority */\n    mintAuthority: TAccountMetas[2];\n    /** payer */\n    payer: TAccountMetas[3];\n    /** update authority info */\n    updateAuthority: TAccountMetas[4];\n    /** System program */\n    systemProgram: TAccountMetas[5];\n    /** Rent info */\n    rent?: TAccountMetas[6] | undefined;\n  };\n  data: CreateMetadataAccountV3InstructionData;\n};\n\nexport function parseCreateMetadataAccountV3Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>,\n): ParsedCreateMetadataAccountV3Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error(\"Not enough accounts\");\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  let optionalAccountsRemaining = instruction.accounts.length - 6;\n  const getNextOptionalAccount = () => {\n    if (optionalAccountsRemaining === 0) return undefined;\n    optionalAccountsRemaining -= 1;\n    return getNextAccount();\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      metadata: getNextAccount(),\n      mint: getNextAccount(),\n      mintAuthority: getNextAccount(),\n      payer: getNextAccount(),\n      updateAuthority: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextOptionalAccount(),\n    },\n    data: getCreateMetadataAccountV3InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type IAccountMeta,\n  type IAccountSignerMeta,\n  type IInstruction,\n  type IInstructionWithAccounts,\n  type IInstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlySignerAccount,\n  type TransactionSigner,\n  type WritableAccount,\n} from \"@solana/kit\";\nimport { getAccountMetaFactory, ResolvedAccount } from \"../../../shared\";\nimport { TOKEN_METADATA_PROGRAM_ADDRESS } from \"../programs\";\nimport { getDataV2Decoder, getDataV2Encoder, type DataV2, type DataV2Args } from \"../types\";\n\nexport const UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR = 15;\n\nexport function getUpdateMetadataAccountV2DiscriminatorBytes() {\n  return getU8Encoder().encode(UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR);\n}\n\nexport type UpdateMetadataAccountV2Instruction<\n  TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n  TAccountMetadata extends string | IAccountMeta<string> = string,\n  TAccountUpdateAuthority extends string | IAccountMeta<string> = string,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n  IInstructionWithData<Uint8Array> &\n  IInstructionWithAccounts<\n    [\n      TAccountMetadata extends string ? WritableAccount<TAccountMetadata> : TAccountMetadata,\n      TAccountUpdateAuthority extends string\n        ? ReadonlySignerAccount<TAccountUpdateAuthority> & IAccountSignerMeta<TAccountUpdateAuthority>\n        : TAccountUpdateAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UpdateMetadataAccountV2InstructionData = {\n  discriminator: number;\n  data: Option<DataV2>;\n  updateAuthority: Option<Address>;\n  primarySaleHappened: Option<boolean>;\n  isMutable: Option<boolean>;\n};\n\nexport type UpdateMetadataAccountV2InstructionDataArgs = {\n  data: OptionOrNullable<DataV2Args>;\n  updateAuthority: OptionOrNullable<Address>;\n  primarySaleHappened: OptionOrNullable<boolean>;\n  isMutable: OptionOrNullable<boolean>;\n};\n\nexport function getUpdateMetadataAccountV2InstructionDataEncoder(): Encoder<UpdateMetadataAccountV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      [\"discriminator\", getU8Encoder()],\n      [\"data\", getOptionEncoder(getDataV2Encoder())],\n      [\"updateAuthority\", getOptionEncoder(getAddressEncoder())],\n      [\"primarySaleHappened\", getOptionEncoder(getBooleanEncoder())],\n      [\"isMutable\", getOptionEncoder(getBooleanEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: UPDATE_METADATA_ACCOUNT_V2_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getUpdateMetadataAccountV2InstructionDataDecoder(): Decoder<UpdateMetadataAccountV2InstructionData> {\n  return getStructDecoder([\n    [\"discriminator\", getU8Decoder()],\n    [\"data\", getOptionDecoder(getDataV2Decoder())],\n    [\"updateAuthority\", getOptionDecoder(getAddressDecoder())],\n    [\"primarySaleHappened\", getOptionDecoder(getBooleanDecoder())],\n    [\"isMutable\", getOptionDecoder(getBooleanDecoder())],\n  ]);\n}\n\nexport function getUpdateMetadataAccountV2InstructionDataCodec(): Codec<\n  UpdateMetadataAccountV2InstructionDataArgs,\n  UpdateMetadataAccountV2InstructionData\n> {\n  return combineCodec(\n    getUpdateMetadataAccountV2InstructionDataEncoder(),\n    getUpdateMetadataAccountV2InstructionDataDecoder(),\n  );\n}\n\nexport type UpdateMetadataAccountV2Input<\n  TAccountMetadata extends string = string,\n  TAccountUpdateAuthority extends string = string,\n> = {\n  /** Metadata account */\n  metadata: Address<TAccountMetadata>;\n  /** Update authority key */\n  updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n  data: UpdateMetadataAccountV2InstructionDataArgs[\"data\"];\n  updateAuthorityArg: UpdateMetadataAccountV2InstructionDataArgs[\"updateAuthority\"];\n  primarySaleHappened: UpdateMetadataAccountV2InstructionDataArgs[\"primarySaleHappened\"];\n  isMutable: UpdateMetadataAccountV2InstructionDataArgs[\"isMutable\"];\n};\n\nexport function getUpdateMetadataAccountV2Instruction<\n  TAccountMetadata extends string,\n  TAccountUpdateAuthority extends string,\n  TProgramAddress extends Address = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n>(\n  input: UpdateMetadataAccountV2Input<TAccountMetadata, TAccountUpdateAuthority>,\n  config?: { programAddress?: TProgramAddress },\n): UpdateMetadataAccountV2Instruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority> {\n  // Program address.\n  const programAddress = config?.programAddress ?? TOKEN_METADATA_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    metadata: { value: input.metadata ?? null, isWritable: true },\n    updateAuthority: {\n      value: input.updateAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;\n\n  // Original args.\n  const args = { ...input, updateAuthority: input.updateAuthorityArg };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n  const instruction = {\n    accounts: [getAccountMeta(accounts.metadata), getAccountMeta(accounts.updateAuthority)],\n    programAddress,\n    data: getUpdateMetadataAccountV2InstructionDataEncoder().encode(args as UpdateMetadataAccountV2InstructionDataArgs),\n  } as UpdateMetadataAccountV2Instruction<TProgramAddress, TAccountMetadata, TAccountUpdateAuthority>;\n\n  return instruction;\n}\n\nexport type ParsedUpdateMetadataAccountV2Instruction<\n  TProgram extends string = typeof TOKEN_METADATA_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Metadata account */\n    metadata: TAccountMetas[0];\n    /** Update authority key */\n    updateAuthority: TAccountMetas[1];\n  };\n  data: UpdateMetadataAccountV2InstructionData;\n};\n\nexport function parseUpdateMetadataAccountV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly IAccountMeta[],\n>(\n  instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>,\n): ParsedUpdateMetadataAccountV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error(\"Not enough accounts\");\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = instruction.accounts![accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      metadata: getNextAccount(),\n      updateAuthority: getNextAccount(),\n    },\n    data: getUpdateMetadataAccountV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","import { type Address, type KeyPairSigner, getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { checkedAddress } from \"../../core/utils\";\nimport { TOKEN_METADATA_PROGRAM_ADDRESS } from \"./generated\";\n\n/**\n * Derive the Token Metadata address from a token's mint address\n *\n * @param `mint` - `Address` or `KeyPairSigner` of the token mint\n */\nexport async function getTokenMetadataAddress(mint: Address | KeyPairSigner): Promise<Address> {\n  return (\n    await getProgramDerivedAddress({\n      programAddress: TOKEN_METADATA_PROGRAM_ADDRESS,\n      seeds: [\n        Buffer.from(\"metadata\"),\n        getAddressEncoder().encode(TOKEN_METADATA_PROGRAM_ADDRESS),\n        getAddressEncoder().encode(checkedAddress(mint)),\n      ],\n    })\n  )[0];\n}\n","import { getCreateAccountInstruction } from \"@solana-program/system\";\nimport type { Address, IInstruction, KeyPairSigner, TransactionSigner } from \"@solana/kit\";\nimport { checkedAddress, checkedTransactionSigner, getMinimumBalanceForRentExemption } from \"../../../core\";\nimport { getCreateMetadataAccountV3Instruction, getTokenMetadataAddress } from \"../../token-metadata\";\n\nimport {\n  extension,\n  getInitializeMetadataPointerInstruction,\n  getInitializeMintInstruction,\n  getInitializeTokenMetadataInstruction,\n  getMintSize,\n  TOKEN_2022_PROGRAM_ADDRESS,\n} from \"@solana-program/token-2022\";\nimport { checkedTokenProgramAddress } from \"../addresses\";\nimport type { TokenInstructionBase } from \"./types\";\n\nexport type GetCreateTokenInstructionsArgs = TokenInstructionBase<KeyPairSigner> & {\n  /**\n   * The number of decimal places this token should have\n   *\n   * @default `9` - the most commonly used decimals value\n   **/\n  decimals?: bigint | number;\n  /**\n   * Authority address that is allowed to mint new tokens\n   *\n   * When not provided, defaults to: `feePayer`\n   **/\n  mintAuthority?: TransactionSigner;\n  /**\n   * Authority address that is able to freeze (and thaw) user owned token accounts.\n   * When a user's token account is frozen, they will not be able to transfer their tokens.\n   *\n   * When not provided, defaults to: `null`\n   **/\n  freezeAuthority?: Address | TransactionSigner;\n  /**\n   * Authority address that is allowed to update the metadata\n   *\n   * When not provided, defaults to: `feePayer`\n   **/\n  updateAuthority?: TransactionSigner;\n  /**\n   * Optional (but highly recommended) metadata to attach to this token\n   */\n  metadata: {\n    /** Name of this token */\n    name: string;\n    /** Symbol for this token */\n    symbol: string;\n    /** URI pointing to additional metadata for this token. Typically an offchain json file. */\n    uri: string;\n    /** Whether or not the onchain metadata will be editable after minting */\n    isMutable: boolean;\n  };\n  /**\n   * Metadata address for this token\n   *\n   * @example\n   * For `TOKEN_PROGRAM_ADDRESS` use the {@link getTokenMetadataAddress} function:\n   * ```\n   * metadataAddress: await getTokenMetadataAddress(mint.address);\n   * ```\n   *\n   * @example\n   * For `TOKEN_2022_PROGRAM_ADDRESS` use the mint's address:\n   * ```\n   * metadataAddress: mint.address;\n   * ```\n   * */\n  metadataAddress: Address;\n  // extensions // todo\n};\n\n/**\n * Create the instructions required to initialize a new token's mint\n */\nexport function getCreateTokenInstructions(args: GetCreateTokenInstructionsArgs): IInstruction[] {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n\n  if (args.decimals == null) args.decimals = 9;\n  if (!args.mintAuthority) args.mintAuthority = args.feePayer;\n  if (!args.updateAuthority) args.updateAuthority = args.feePayer;\n  if (args.freezeAuthority) args.freezeAuthority = checkedAddress(args.freezeAuthority);\n\n  if (args.tokenProgram === TOKEN_2022_PROGRAM_ADDRESS) {\n    const metadataPointer = extension(\"MetadataPointer\", {\n      metadataAddress: args.mint.address,\n      authority: args.updateAuthority.address,\n    });\n\n    const metadataExtensionData = extension(\"TokenMetadata\", {\n      updateAuthority: args.updateAuthority.address,\n      mint: args.mint.address,\n      name: args.metadata.name,\n      symbol: args.metadata.symbol,\n      uri: args.metadata.uri,\n      // todo: support token22 additional metadata\n      additionalMetadata: new Map(),\n    });\n\n    return [\n      getCreateAccountInstruction({\n        payer: args.feePayer,\n        newAccount: args.mint,\n        /**\n         * token22 requires only the pre-mint-initialization extensions (like metadata pointer)\n         * to be the `space`. then it will extend the account's space for each applicable extension\n         * */\n        space: BigInt(getMintSize([metadataPointer])),\n        /**\n         * token22 requires the total lamport balance for all extensions,\n         * including pre-initialization and post-initialization\n         */\n        lamports: getMinimumBalanceForRentExemption(BigInt(getMintSize([metadataPointer, metadataExtensionData]))),\n        programAddress: args.tokenProgram,\n      }),\n      getInitializeMetadataPointerInstruction({\n        authority: args.mintAuthority.address,\n        metadataAddress: args.metadataAddress,\n        mint: args.mint.address,\n      }),\n      getInitializeMintInstruction(\n        {\n          mint: args.mint.address,\n          decimals: Number(args.decimals),\n          mintAuthority: args.mintAuthority.address,\n          freezeAuthority: args.freezeAuthority || null,\n        },\n        {\n          programAddress: args.tokenProgram,\n        },\n      ),\n      getInitializeTokenMetadataInstruction({\n        metadata: args.mint.address,\n        mint: args.mint.address,\n        mintAuthority: args.mintAuthority,\n        name: args.metadata.name,\n        symbol: args.metadata.symbol,\n        uri: args.metadata.uri,\n        updateAuthority: args.updateAuthority.address,\n      }),\n      // todo: support token22 additional metadata by adding that instruction(s) here\n    ];\n  } else {\n    // the token22 `getMintSize` is fully compatible with the original token program\n    const space: bigint = BigInt(getMintSize());\n\n    return [\n      getCreateAccountInstruction({\n        payer: args.feePayer,\n        newAccount: args.mint,\n        lamports: getMinimumBalanceForRentExemption(space),\n        space,\n        programAddress: args.tokenProgram,\n      }),\n      getInitializeMintInstruction(\n        {\n          mint: args.mint.address,\n          decimals: Number(args.decimals),\n          mintAuthority: args.mintAuthority.address,\n          freezeAuthority: args.freezeAuthority || null,\n        },\n        {\n          programAddress: args.tokenProgram,\n        },\n      ),\n      getCreateMetadataAccountV3Instruction({\n        metadata: args.metadataAddress,\n        mint: args.mint.address,\n        mintAuthority: args.mintAuthority,\n        payer: args.feePayer,\n        updateAuthority: args.updateAuthority,\n        data: {\n          name: args.metadata.name,\n          symbol: args.metadata.symbol,\n          uri: args.metadata.uri,\n          sellerFeeBasisPoints: 0,\n          creators: null,\n          collection: null,\n          uses: null,\n        },\n        isMutable: args.metadata.isMutable,\n        collectionDetails: null,\n      }),\n    ];\n  }\n}\n","import type { Address, IInstruction, TransactionSigner } from \"@solana/kit\";\n\nimport { getCreateAssociatedTokenIdempotentInstruction, getMintToInstruction } from \"@solana-program/token-2022\";\nimport { checkedAddress, checkedTransactionSigner } from \"../../../core\";\nimport { checkedTokenProgramAddress } from \"../addresses\";\nimport type { TokenInstructionBase } from \"./types\";\n\nexport type GetMintTokensInstructionsArgs = TokenInstructionBase & {\n  /**\n   * The authority address capable of authorizing minting of new tokens.\n   *\n   * - this should normally by a `TransactionSigner`\n   * - only for multi-sig authorities (like Squads Protocol), should you supply an `Address`\n   * */\n  mintAuthority: TransactionSigner | Address;\n  /** Wallet address to receive the tokens being minted, via their associated token account (ata) */\n  destination: TransactionSigner | Address;\n  /**\n   * Associated token account (ata) address for `destination` and this `mint`\n   *\n   * See {@link getAssociatedTokenAccountAddress}\n   *\n   * @example\n   * ```\n   * getAssociatedTokenAccountAddress(mint, destination, tokenProgram);\n   * ```\n   * */\n  ata: Address;\n  /** Amount of tokens to mint to the `owner` via their `ata` */\n  amount: bigint | number;\n};\n\n/**\n * Create the instructions required to mint tokens to any wallet/owner,\n * including creating their ATA if it does not exist\n *\n * @example\n *\n * ```\n * const mint = await generateKeyPairSigner();\n * const destination = address(\"nicktrLHhYzLmoVbuZQzHUTicd2sfP571orwo9jfc8c\");\n *\n * const instructions = getMintTokensInstructions({\n *   mint,\n *   feePayer: signer,\n *   mintAuthority: signer,\n *   amount: 1000, // note: be sure to consider the mint's `decimals` value\n *   // if decimals=2 => this will mint 10.00 tokens\n *   // if decimals=4 => this will mint 0.100 tokens\n *   destination,\n *   // be sure to set the correct token program when getting the `ata`\n *   ata: await getAssociatedTokenAccountAddress(mint, destination, tokenProgram),\n *   // tokenProgram: TOKEN_PROGRAM_ADDRESS, // default\n *   // tokenProgram: TOKEN_2022_PROGRAM_ADDRESS,\n * });\n * ```\n */\nexport function getMintTokensInstructions(args: GetMintTokensInstructionsArgs): IInstruction[] {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n  args.mint = checkedAddress(args.mint);\n\n  return [\n    // create idempotent will gracefully fail if the ata already exists. this is the gold standard!\n    getCreateAssociatedTokenIdempotentInstruction({\n      owner: checkedAddress(args.destination),\n      mint: args.mint,\n      ata: args.ata,\n      payer: args.feePayer,\n      tokenProgram: args.tokenProgram,\n    }),\n    getMintToInstruction(\n      {\n        mint: args.mint,\n        mintAuthority: args.mintAuthority,\n        token: args.ata,\n        amount: args.amount,\n      },\n      {\n        programAddress: args.tokenProgram,\n      },\n    ),\n  ];\n}\n","import type { Address, IInstruction, TransactionSigner } from \"@solana/kit\";\n\nimport { getCreateAssociatedTokenIdempotentInstruction, getTransferInstruction } from \"@solana-program/token-2022\";\nimport { checkedAddress, checkedTransactionSigner } from \"../../../core\";\nimport { checkedTokenProgramAddress } from \"../addresses\";\nimport type { TokenInstructionBase } from \"./types\";\n\nexport type GetTransferTokensInstructionsArgs = TokenInstructionBase & {\n  /**\n   * The source account's owner/delegate or its multi-signature account:\n   * - this should normally by a `TransactionSigner`\n   * - only for multi-sig authorities (like Squads Protocol), should you supply an `Address`\n   * */\n  authority: TransactionSigner | Address;\n  /**\n   * Associated token account (ata) address for `authority` and this `mint`\n   *\n   * See {@link getAssociatedTokenAccountAddress}\n   *\n   * @example\n   * ```\n   * getAssociatedTokenAccountAddress(mint, authority, tokenProgram);\n   * ```\n   * */\n  sourceAta: Address;\n  /** Wallet address to receive the tokens, via their associated token account: `destinationAta` */\n  destination: TransactionSigner | Address;\n  /**\n   * Associated token account (ata) address for `destination` and this `mint`\n   *\n   * See {@link getAssociatedTokenAccountAddress}\n   *\n   * @example\n   * ```\n   * getAssociatedTokenAccountAddress(mint, destination, tokenProgram);\n   * ```\n   * */\n  destinationAta: Address;\n  /** Amount of tokens to be transferred to the `destination` via their `destinationAta` */\n  amount: bigint | number;\n};\n\n/**\n * Create the instructions required to transfer tokens from one wallet to another,\n * including creating the destination ATA if it does not exist\n *\n * @example\n *\n * ```\n * const sourceAta = await getAssociatedTokenAccountAddress(mint, authority, tokenProgram);\n *\n * const destination = address(...);\n * const destinationAta = await getAssociatedTokenAccountAddress(mint, destination, tokenProgram);\n *\n * const instructions = getTransferTokensInstructions({\n *    feePayer: signer,\n *    mint,\n *    amount: 10,\n *    authority: signer, // the source wallet for the tokens to be transferred\n *    sourceAta, // normally derived from the `authority`\n *    destination,\n *    destinationAta, // derived from the `destination`\n *    tokenProgram,\n * });\n * ```\n */\nexport function getTransferTokensInstructions(args: GetTransferTokensInstructionsArgs): IInstruction[] {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n  args.mint = checkedAddress(args.mint);\n\n  return [\n    // create idempotent will gracefully fail if the ata already exists. this is the gold standard!\n    getCreateAssociatedTokenIdempotentInstruction({\n      owner: checkedAddress(args.destination),\n      mint: args.mint,\n      ata: args.destinationAta,\n      payer: args.feePayer,\n      tokenProgram: args.tokenProgram,\n    }),\n    getTransferInstruction(\n      {\n        authority: args.authority,\n        source: args.sourceAta,\n        destination: args.destinationAta,\n        amount: args.amount,\n      },\n      {\n        programAddress: args.tokenProgram,\n      },\n    ),\n  ];\n}\n","import { TOKEN_2022_PROGRAM_ADDRESS } from \"@solana-program/token-2022\";\nimport type {\n  ITransactionMessageWithFeePayer,\n  KeyPairSigner,\n  TransactionMessageWithBlockhashLifetime,\n  TransactionSigner,\n  TransactionVersion,\n} from \"@solana/kit\";\nimport { checkedTransactionSigner, createTransaction } from \"../../../core\";\nimport type { FullTransaction, Simplify } from \"../../../types\";\nimport { getTokenMetadataAddress } from \"../../token-metadata\";\nimport { checkedTokenProgramAddress, TOKEN_PROGRAM_ADDRESS } from \"../addresses\";\nimport { getCreateTokenInstructions, type GetCreateTokenInstructionsArgs } from \"../instructions/create-token\";\nimport type { TransactionBuilderInput } from \"./types\";\n\ntype GetCreateTokenTransactionInput = Simplify<\n  Omit<GetCreateTokenInstructionsArgs, \"metadataAddress\"> &\n    Partial<Pick<GetCreateTokenInstructionsArgs, \"metadataAddress\">>\n>;\n\n/**\n * Create a transaction that can create a token with metadata\n *\n * The transaction has the following defaults:\n * - Default `version` = `legacy`\n * - Default `computeUnitLimit`:\n *    - for TOKEN_PROGRAM_ADDRESS => `60_000`\n *    - for TOKEN_2022_PROGRAM_ADDRESS => `10_000`\n *\n * @example\n *\n * ```\n * const mint = await generateKeyPairSigner();\n *\n * const transaction = await buildCreateTokenTransaction({\n *   feePayer: signer,\n *   latestBlockhash,\n *   mint,\n *   metadata: {\n *     name: \"Test Token\",\n *     symbol: \"TEST\",\n *     uri: \"https://example.com/metadata.json\",\n *     isMutable: true,\n *   },\n *   // tokenProgram: TOKEN_PROGRAM_ADDRESS, // default\n *   // tokenProgram: TOKEN_2022_PROGRAM_ADDRESS,\n * });\n * ```\n */\nexport async function buildCreateTokenTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer> & GetCreateTokenTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer>>;\nexport async function buildCreateTokenTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n  TLifetimeConstraint extends\n    TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"] = TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetCreateTokenTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer, TransactionMessageWithBlockhashLifetime>>;\nexport async function buildCreateTokenTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends TransactionSigner,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetCreateTokenTransactionInput) {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n\n  let metadataAddress = args.mint.address;\n\n  if (args.tokenProgram === TOKEN_PROGRAM_ADDRESS) {\n    metadataAddress = await getTokenMetadataAddress(args.mint);\n\n    // default a reasonably low computeUnitLimit based on simulation data\n    if (!args.computeUnitLimit) {\n      // creating the token's mint is around 3219cu (and stable?)\n      // token metadata is the rest... and fluctuates a lot based on the pda and amount of metadata\n      args.computeUnitLimit = 60_000;\n    }\n  } else if (args.tokenProgram === TOKEN_2022_PROGRAM_ADDRESS) {\n    if (!args.computeUnitLimit) {\n      // token22 token creation, with metadata is (seemingly stable) around 7647cu,\n      // but consume more with more metadata provided\n      args.computeUnitLimit = 10_000;\n    }\n  }\n\n  return createTransaction(\n    (({ feePayer, version, computeUnitLimit, computeUnitPrice, latestBlockhash }: typeof args) => ({\n      feePayer,\n      version: version || \"legacy\",\n      computeUnitLimit,\n      computeUnitPrice,\n      latestBlockhash,\n      instructions: getCreateTokenInstructions(\n        (({\n          decimals,\n          mintAuthority,\n          freezeAuthority,\n          updateAuthority,\n          metadata,\n          feePayer,\n          tokenProgram,\n          mint,\n        }: typeof args) => ({\n          mint: mint as KeyPairSigner,\n          feePayer,\n          metadataAddress,\n          metadata,\n          decimals,\n          mintAuthority,\n          freezeAuthority,\n          updateAuthority,\n          tokenProgram,\n        }))(args),\n      ),\n    }))(args),\n  );\n}\n","import type {\n  Address,\n  ITransactionMessageWithFeePayer,\n  TransactionMessageWithBlockhashLifetime,\n  TransactionSigner,\n  TransactionVersion,\n} from \"@solana/kit\";\nimport { checkedAddress, checkedTransactionSigner, createTransaction } from \"../../../core\";\nimport type { FullTransaction, Simplify } from \"../../../types\";\nimport { checkedTokenProgramAddress, getAssociatedTokenAccountAddress } from \"../addresses\";\nimport { getMintTokensInstructions, type GetMintTokensInstructionsArgs } from \"../instructions/mint-tokens\";\nimport type { TransactionBuilderInput } from \"./types\";\n\ntype GetCreateTokenTransactionInput = Simplify<\n  Omit<GetMintTokensInstructionsArgs, \"ata\"> & Partial<Pick<GetMintTokensInstructionsArgs, \"ata\">>\n>;\n\n/**\n * Create a transaction that can mint tokens to the desired wallet/owner,\n * including creating their ATA if it does not exist\n *\n * The transaction has the following defaults:\n * - Default `version` = `legacy`\n * - Default `computeUnitLimit` = `31_000`\n *\n * @remarks\n *\n * - minting without creating the ata is generally < 10_000cu\n * - validating the ata onchain during creation results in a ~5000cu fluctuation\n *\n * @example\n * ```\n * const destination = address(\"nicktrLHhYzLmoVbuZQzHUTicd2sfP571orwo9jfc8c\");\n *\n * const mint = address(...);\n * // or mint can be a keypair from a freshly created token\n *\n * const transaction = await buildMintTokensTransaction({\n *   feePayer: signer,\n *   latestBlockhash,\n *   mint,\n *   mintAuthority: signer,\n *   amount: 1000, // note: be sure to consider the mint's `decimals` value\n *   // if decimals=2 => this will mint 10.00 tokens\n *   // if decimals=4 => this will mint 0.100 tokens\n *   destination,\n *   // tokenProgram: TOKEN_PROGRAM_ADDRESS, // default\n *   // tokenProgram: TOKEN_2022_PROGRAM_ADDRESS,\n * });\n * ```\n */\nexport async function buildMintTokensTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer> & GetCreateTokenTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer>>;\nexport async function buildMintTokensTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n  TLifetimeConstraint extends\n    TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"] = TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetCreateTokenTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer, TransactionMessageWithBlockhashLifetime>>;\nexport async function buildMintTokensTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends TransactionSigner,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetCreateTokenTransactionInput) {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n  args.mint = checkedAddress(args.mint);\n\n  if (!args.ata) {\n    args.ata = await getAssociatedTokenAccountAddress(args.mint, args.destination, args.tokenProgram);\n  }\n\n  // default a reasonably low computeUnitLimit based on simulation data\n  if (!args.computeUnitLimit) {\n    /**\n     * for TOKEN_PROGRAM_ADDRESS and multiple simulation attempts,\n     * minting tokens costs the following:\n     * - when not creating the ata: 9156cu\n     * - when creating the ata: 26535cu\n     *\n     * for TOKEN_2022_PROGRAM_ADDRESS and multiple simulation attempts,\n     * minting tokens costs the following:\n     * - when not creating the ata: 8978cu\n     * - when creating the ata: 22567cu\n     */\n    args.computeUnitLimit = 31_000;\n  }\n\n  return createTransaction(\n    (({ feePayer, version, computeUnitLimit, computeUnitPrice, latestBlockhash }: typeof args) => ({\n      feePayer,\n      version: version || \"legacy\",\n      computeUnitLimit,\n      computeUnitPrice,\n      latestBlockhash,\n      instructions: getMintTokensInstructions(\n        (({ tokenProgram, feePayer, mint, ata, mintAuthority, amount, destination }: typeof args) => ({\n          tokenProgram,\n          feePayer,\n          mint,\n          mintAuthority,\n          ata: ata as Address,\n          amount,\n          destination,\n        }))(args),\n      ),\n    }))(args),\n  );\n}\n","import type {\n  Address,\n  ITransactionMessageWithFeePayer,\n  TransactionMessageWithBlockhashLifetime,\n  TransactionSigner,\n  TransactionVersion,\n} from \"@solana/kit\";\nimport { checkedAddress, checkedTransactionSigner, createTransaction } from \"../../../core\";\nimport type { FullTransaction, Simplify } from \"../../../types\";\nimport { checkedTokenProgramAddress, getAssociatedTokenAccountAddress } from \"../addresses\";\nimport { getTransferTokensInstructions, type GetTransferTokensInstructionsArgs } from \"../instructions\";\nimport type { TransactionBuilderInput } from \"./types\";\n\ntype GetTransferTokensTransactionInput = Simplify<\n  Omit<GetTransferTokensInstructionsArgs, \"sourceAta\" | \"destinationAta\"> &\n    Partial<Pick<GetTransferTokensInstructionsArgs, \"sourceAta\" | \"destinationAta\">>\n>;\n\n/**\n * Create a transaction that can transfer tokens to the desired wallet/owner,\n * including creating their ATA if it does not exist\n *\n * The transaction has the following defaults:\n * - Default `version` = `legacy`\n * - Default `computeUnitLimit` = `31_000`\n *\n * @remarks\n *\n * - transferring without creating the ata is generally < 10_000cu\n * - validating the ata onchain during creation results in a ~15000cu fluctuation\n *\n * @example\n * ```\n * const destination = address(...);\n *\n * const transferTokensTx = await buildTransferTokensTransaction({\n *   feePayer: signer,\n *   latestBlockhash,\n *   mint,\n *   authority: signer,\n *   amount: 900, // note: be sure to consider the mint's `decimals` value\n *   // if decimals=2 => this will transfer 9.00 tokens\n *   // if decimals=4 => this will transfer 0.090 tokens\n *   destination,\n *   // use the correct token program for the `mint`\n *   tokenProgram, // default=TOKEN_PROGRAM_ADDRESS\n *   // default cu limit set to be optimized, but can be overridden here\n *   // computeUnitLimit?: number,\n *   // obtain from your favorite priority fee api\n *   // computeUnitPrice?: number, // no default set\n * });\n * ```\n */\nexport async function buildTransferTokensTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer> & GetTransferTokensTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer>>;\nexport async function buildTransferTokensTransaction<\n  TVersion extends TransactionVersion = \"legacy\",\n  TFeePayer extends TransactionSigner = TransactionSigner,\n  TLifetimeConstraint extends\n    TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"] = TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(\n  args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetTransferTokensTransactionInput,\n): Promise<FullTransaction<TVersion, ITransactionMessageWithFeePayer, TransactionMessageWithBlockhashLifetime>>;\nexport async function buildTransferTokensTransaction<\n  TVersion extends TransactionVersion,\n  TFeePayer extends Address | TransactionSigner,\n  TLifetimeConstraint extends TransactionMessageWithBlockhashLifetime[\"lifetimeConstraint\"],\n>(args: TransactionBuilderInput<TVersion, TFeePayer, TLifetimeConstraint> & GetTransferTokensTransactionInput) {\n  args.tokenProgram = checkedTokenProgramAddress(args.tokenProgram);\n  args.feePayer = checkedTransactionSigner(args.feePayer);\n  args.mint = checkedAddress(args.mint);\n\n  [args.destinationAta, args.sourceAta] = await Promise.all([\n    !args.destinationAta\n      ? getAssociatedTokenAccountAddress(args.mint, args.destination, args.tokenProgram)\n      : args.destinationAta,\n    !args.sourceAta ? getAssociatedTokenAccountAddress(args.mint, args.authority, args.tokenProgram) : args.sourceAta,\n  ]);\n\n  // default a reasonably low computeUnitLimit based on simulation data\n  if (!args.computeUnitLimit) {\n    /**\n     * for TOKEN_PROGRAM_ADDRESS and multiple simulation attempts,\n     * minting tokens costs the following:\n     * - when not creating the ata: 6336cu - 12336cu\n     * - when creating the ata: 19428cu - 25034cu\n     *\n     * for TOKEN_2022_PROGRAM_ADDRESS and multiple simulation attempts,\n     * minting tokens costs the following:\n     * - when not creating the ata: 6157cu - 15157cu\n     * - when creating the ata: 18722cu - 27722cu\n     */\n    args.computeUnitLimit = 31_000;\n  }\n\n  return createTransaction(\n    (({ feePayer, version, computeUnitLimit, computeUnitPrice, latestBlockhash }: typeof args) => ({\n      feePayer,\n      version: version || \"legacy\",\n      computeUnitLimit,\n      computeUnitPrice,\n      latestBlockhash,\n      instructions: getTransferTokensInstructions(\n        (({\n          tokenProgram,\n          feePayer,\n          mint,\n          amount,\n          destination,\n          authority,\n          destinationAta,\n          sourceAta,\n        }: typeof args) => ({\n          tokenProgram,\n          feePayer,\n          mint,\n          amount,\n          authority,\n          destination,\n          sourceAta: sourceAta as Address,\n          destinationAta: destinationAta as Address,\n        }))(args),\n      ),\n    }))(args),\n  );\n}\n","/**\n * Converts a UI amount (human-readable) to raw amount (BigInt)\n * @param uiAmount The human-readable token amount (e.g., 1.5)\n * @param decimals The number of decimals for the token\n * @returns BigInt representation of the amount\n */\nexport function tokenUiAmountToAmount(uiAmount: number, decimals: number): bigint {\n  // Handle potential scientific notation by using the built-in toFixed\n  // This ensures we get a decimal string representation without scientific notation\n  const uiAmountStr = uiAmount.toFixed(decimals);\n\n  // Find decimal point position\n  const decimalPointIndex = uiAmountStr.indexOf(\".\");\n\n  let wholeNumber: string;\n  let fractionalPart: string;\n\n  if (decimalPointIndex === -1) {\n    // No decimal point\n    wholeNumber = uiAmountStr;\n    fractionalPart = \"\";\n  } else {\n    wholeNumber = uiAmountStr.substring(0, decimalPointIndex);\n    fractionalPart = uiAmountStr.substring(decimalPointIndex + 1);\n  }\n\n  // Pad or truncate fractional part based on decimals\n  if (fractionalPart.length > decimals) {\n    fractionalPart = fractionalPart.substring(0, decimals);\n  } else {\n    fractionalPart = fractionalPart.padEnd(decimals, \"0\");\n  }\n\n  // Combine and convert to BigInt, stripping any potential leading zeros\n  const rawAmountStr = wholeNumber + fractionalPart;\n  if (rawAmountStr.replace(/0/g, \"\") === \"\") {\n    return BigInt(0);\n  }\n  return BigInt(rawAmountStr);\n}\n\n/**\n * Converts a raw amount (BigInt) to UI amount (human-readable)\n * @param amount The raw token amount as BigInt\n * @param decimals The number of decimals for the token\n * @returns UI representation of the amount as a number\n */\nexport function tokenAmountToUiAmount(amount: bigint, decimals: number): number {\n  // Convert to string for easier manipulation\n  let amountStr = amount.toString();\n\n  // Pad with leading zeros if necessary\n  if (amountStr.length <= decimals) {\n    amountStr = amountStr.padStart(decimals + 1, \"0\");\n  }\n\n  // Split into whole and fractional parts\n  const wholePartLength = amountStr.length - decimals;\n  const wholePart = amountStr.substring(0, wholePartLength);\n  const fractionalPart = amountStr.substring(wholePartLength);\n\n  // Combine with decimal point\n  const uiAmountStr = `${wholePart || \"0\"}.${fractionalPart}`;\n\n  // Convert back to number\n  return parseFloat(uiAmountStr);\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { type Address } from \"@solana/kit\";\nimport { type ParsedAddMemoInstruction } from \"../instructions\";\n\nexport const MEMO_PROGRAM_ADDRESS =\n  \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\" as Address<\"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\">;\n\nexport enum MemoInstruction {\n  AddMemo,\n}\n\nexport type ParsedMemoInstruction<TProgram extends string = \"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\"> = {\n  instructionType: MemoInstruction.AddMemo;\n} & ParsedAddMemoInstruction<TProgram>;\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from \"@solana/codecs\";\nimport type {\n  Address,\n  IAccountMeta,\n  IInstruction,\n  IInstructionWithAccounts,\n  IInstructionWithData,\n  TransactionSigner,\n} from \"@solana/kit\";\nimport { AccountRole } from \"@solana/kit\";\nimport { MEMO_PROGRAM_ADDRESS } from \"../programs\";\n\nexport type AddMemoInstruction<\n  TProgram extends string = typeof MEMO_PROGRAM_ADDRESS,\n  TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> & IInstructionWithData<Uint8Array> & IInstructionWithAccounts<TRemainingAccounts>;\n\nexport type AddMemoInstructionData = { memo: string };\n\nexport type AddMemoInstructionDataArgs = AddMemoInstructionData;\n\nexport function getAddMemoInstructionDataEncoder(): Encoder<AddMemoInstructionDataArgs> {\n  return getStructEncoder([[\"memo\", getUtf8Encoder()]]);\n}\n\nexport function getAddMemoInstructionDataDecoder(): Decoder<AddMemoInstructionData> {\n  return getStructDecoder([[\"memo\", getUtf8Decoder()]]);\n}\n\nexport function getAddMemoInstructionDataCodec(): Codec<AddMemoInstructionDataArgs, AddMemoInstructionData> {\n  return combineCodec(getAddMemoInstructionDataEncoder(), getAddMemoInstructionDataDecoder());\n}\n\nexport type AddMemoInput = {\n  memo: AddMemoInstructionDataArgs[\"memo\"];\n  signers?: Array<TransactionSigner>;\n};\n\nexport function getAddMemoInstruction<TProgramAddress extends Address = typeof MEMO_PROGRAM_ADDRESS>(\n  input: AddMemoInput,\n  config?: { programAddress?: TProgramAddress },\n): AddMemoInstruction<TProgramAddress> {\n  // Program address.\n  const programAddress = config?.programAddress ?? MEMO_PROGRAM_ADDRESS;\n\n  // Original args.\n  const args = { ...input };\n\n  // Remaining accounts.\n  const remainingAccounts: IAccountMeta[] = (args.signers ?? []).map((signer) => ({\n    address: signer.address,\n    role: AccountRole.READONLY_SIGNER,\n    signer,\n  }));\n\n  const instruction = {\n    accounts: remainingAccounts,\n    programAddress,\n    data: getAddMemoInstructionDataEncoder().encode(args as AddMemoInstructionDataArgs),\n  } as AddMemoInstruction<TProgramAddress>;\n\n  return instruction;\n}\n\nexport type ParsedAddMemoInstruction<TProgram extends string = typeof MEMO_PROGRAM_ADDRESS> = {\n  programAddress: Address<TProgram>;\n  data: AddMemoInstructionData;\n};\n\nexport function parseAddMemoInstruction<TProgram extends string>(\n  instruction: IInstruction<TProgram> & IInstructionWithData<Uint8Array>,\n): ParsedAddMemoInstruction<TProgram> {\n  return {\n    programAddress: instruction.programAddress,\n    data: getAddMemoInstructionDataDecoder().decode(instruction.data),\n  };\n}\n"]}