/** * This code was AUTOGENERATED using the kinobi library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun kinobi to update it. * * @see https://github.com/metaplex-foundation/kinobi */ import { Address, containsBytes, getU8Encoder } from '@solana/web3.js'; import { ParsedAmountToUiAmountInstruction, ParsedApproveTokenDelegateCheckedInstruction, ParsedApproveTokenDelegateInstruction, ParsedBurnTokenCheckedInstruction, ParsedBurnTokenInstruction, ParsedCloseTokenInstruction, ParsedFreezeTokenInstruction, ParsedGetTokenDataSizeInstruction, ParsedInitializeImmutableOwnerInstruction, ParsedInitializeMint2Instruction, ParsedInitializeMintInstruction, ParsedInitializeMultisig2Instruction, ParsedInitializeMultisigInstruction, ParsedInitializeToken2Instruction, ParsedInitializeToken3Instruction, ParsedInitializeTokenInstruction, ParsedMintTokensToCheckedInstruction, ParsedMintTokensToInstruction, ParsedRevokeTokenDelegateInstruction, ParsedSetAuthorityInstruction, ParsedSyncNativeInstruction, ParsedThawTokenInstruction, ParsedTransferTokensCheckedInstruction, ParsedTransferTokensInstruction, ParsedUiAmountToAmountInstruction, } from '../instructions'; export const TOKEN_PROGRAM_ADDRESS = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>; export enum TokenAccount { Mint, Token, Multisig, } export enum TokenInstruction { InitializeMint, InitializeToken, InitializeMultisig, TransferTokens, ApproveTokenDelegate, RevokeTokenDelegate, SetAuthority, MintTokensTo, BurnToken, CloseToken, FreezeToken, ThawToken, TransferTokensChecked, ApproveTokenDelegateChecked, MintTokensToChecked, BurnTokenChecked, InitializeToken2, SyncNative, InitializeToken3, InitializeMultisig2, InitializeMint2, GetTokenDataSize, InitializeImmutableOwner, AmountToUiAmount, UiAmountToAmount, } export function identifyTokenInstruction( instruction: { data: Uint8Array } | Uint8Array ): TokenInstruction { const data = instruction instanceof Uint8Array ? instruction : instruction.data; if (containsBytes(data, getU8Encoder().encode(0), 0)) { return TokenInstruction.InitializeMint; } if (containsBytes(data, getU8Encoder().encode(1), 0)) { return TokenInstruction.InitializeToken; } if (containsBytes(data, getU8Encoder().encode(2), 0)) { return TokenInstruction.InitializeMultisig; } if (containsBytes(data, getU8Encoder().encode(3), 0)) { return TokenInstruction.TransferTokens; } if (containsBytes(data, getU8Encoder().encode(4), 0)) { return TokenInstruction.ApproveTokenDelegate; } if (containsBytes(data, getU8Encoder().encode(5), 0)) { return TokenInstruction.RevokeTokenDelegate; } if (containsBytes(data, getU8Encoder().encode(6), 0)) { return TokenInstruction.SetAuthority; } if (containsBytes(data, getU8Encoder().encode(7), 0)) { return TokenInstruction.MintTokensTo; } if (containsBytes(data, getU8Encoder().encode(8), 0)) { return TokenInstruction.BurnToken; } if (containsBytes(data, getU8Encoder().encode(9), 0)) { return TokenInstruction.CloseToken; } if (containsBytes(data, getU8Encoder().encode(10), 0)) { return TokenInstruction.FreezeToken; } if (containsBytes(data, getU8Encoder().encode(11), 0)) { return TokenInstruction.ThawToken; } if (containsBytes(data, getU8Encoder().encode(12), 0)) { return TokenInstruction.TransferTokensChecked; } if (containsBytes(data, getU8Encoder().encode(13), 0)) { return TokenInstruction.ApproveTokenDelegateChecked; } if (containsBytes(data, getU8Encoder().encode(14), 0)) { return TokenInstruction.MintTokensToChecked; } if (containsBytes(data, getU8Encoder().encode(15), 0)) { return TokenInstruction.BurnTokenChecked; } if (containsBytes(data, getU8Encoder().encode(16), 0)) { return TokenInstruction.InitializeToken2; } if (containsBytes(data, getU8Encoder().encode(17), 0)) { return TokenInstruction.SyncNative; } if (containsBytes(data, getU8Encoder().encode(18), 0)) { return TokenInstruction.InitializeToken3; } if (containsBytes(data, getU8Encoder().encode(19), 0)) { return TokenInstruction.InitializeMultisig2; } if (containsBytes(data, getU8Encoder().encode(20), 0)) { return TokenInstruction.InitializeMint2; } if (containsBytes(data, getU8Encoder().encode(21), 0)) { return TokenInstruction.GetTokenDataSize; } if (containsBytes(data, getU8Encoder().encode(22), 0)) { return TokenInstruction.InitializeImmutableOwner; } if (containsBytes(data, getU8Encoder().encode(23), 0)) { return TokenInstruction.AmountToUiAmount; } if (containsBytes(data, getU8Encoder().encode(24), 0)) { return TokenInstruction.UiAmountToAmount; } throw new Error( 'The provided instruction could not be identified as a token instruction.' ); } export type ParsedTokenInstruction< TProgram extends string = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', > = | ({ instructionType: TokenInstruction.InitializeMint; } & ParsedInitializeMintInstruction) | ({ instructionType: TokenInstruction.InitializeToken; } & ParsedInitializeTokenInstruction) | ({ instructionType: TokenInstruction.InitializeMultisig; } & ParsedInitializeMultisigInstruction) | ({ instructionType: TokenInstruction.TransferTokens; } & ParsedTransferTokensInstruction) | ({ instructionType: TokenInstruction.ApproveTokenDelegate; } & ParsedApproveTokenDelegateInstruction) | ({ instructionType: TokenInstruction.RevokeTokenDelegate; } & ParsedRevokeTokenDelegateInstruction) | ({ instructionType: TokenInstruction.SetAuthority; } & ParsedSetAuthorityInstruction) | ({ instructionType: TokenInstruction.MintTokensTo; } & ParsedMintTokensToInstruction) | ({ instructionType: TokenInstruction.BurnToken; } & ParsedBurnTokenInstruction) | ({ instructionType: TokenInstruction.CloseToken; } & ParsedCloseTokenInstruction) | ({ instructionType: TokenInstruction.FreezeToken; } & ParsedFreezeTokenInstruction) | ({ instructionType: TokenInstruction.ThawToken; } & ParsedThawTokenInstruction) | ({ instructionType: TokenInstruction.TransferTokensChecked; } & ParsedTransferTokensCheckedInstruction) | ({ instructionType: TokenInstruction.ApproveTokenDelegateChecked; } & ParsedApproveTokenDelegateCheckedInstruction) | ({ instructionType: TokenInstruction.MintTokensToChecked; } & ParsedMintTokensToCheckedInstruction) | ({ instructionType: TokenInstruction.BurnTokenChecked; } & ParsedBurnTokenCheckedInstruction) | ({ instructionType: TokenInstruction.InitializeToken2; } & ParsedInitializeToken2Instruction) | ({ instructionType: TokenInstruction.SyncNative; } & ParsedSyncNativeInstruction) | ({ instructionType: TokenInstruction.InitializeToken3; } & ParsedInitializeToken3Instruction) | ({ instructionType: TokenInstruction.InitializeMultisig2; } & ParsedInitializeMultisig2Instruction) | ({ instructionType: TokenInstruction.InitializeMint2; } & ParsedInitializeMint2Instruction) | ({ instructionType: TokenInstruction.GetTokenDataSize; } & ParsedGetTokenDataSizeInstruction) | ({ instructionType: TokenInstruction.InitializeImmutableOwner; } & ParsedInitializeImmutableOwnerInstruction) | ({ instructionType: TokenInstruction.AmountToUiAmount; } & ParsedAmountToUiAmountInstruction) | ({ instructionType: TokenInstruction.UiAmountToAmount; } & ParsedUiAmountToAmountInstruction);