token.ts 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /**
  2. * This code was AUTOGENERATED using the kinobi library.
  3. * Please DO NOT EDIT THIS FILE, instead use visitors
  4. * to add features, then rerun kinobi to update it.
  5. *
  6. * @see https://github.com/metaplex-foundation/kinobi
  7. */
  8. import { Address, containsBytes, getU8Encoder } from '@solana/web3.js';
  9. import {
  10. ParsedAmountToUiAmountInstruction,
  11. ParsedApproveTokenDelegateCheckedInstruction,
  12. ParsedApproveTokenDelegateInstruction,
  13. ParsedBurnTokenCheckedInstruction,
  14. ParsedBurnTokenInstruction,
  15. ParsedCloseTokenInstruction,
  16. ParsedFreezeTokenInstruction,
  17. ParsedGetTokenDataSizeInstruction,
  18. ParsedInitializeImmutableOwnerInstruction,
  19. ParsedInitializeMint2Instruction,
  20. ParsedInitializeMintInstruction,
  21. ParsedInitializeMultisig2Instruction,
  22. ParsedInitializeMultisigInstruction,
  23. ParsedInitializeToken2Instruction,
  24. ParsedInitializeToken3Instruction,
  25. ParsedInitializeTokenInstruction,
  26. ParsedMintTokensToCheckedInstruction,
  27. ParsedMintTokensToInstruction,
  28. ParsedRevokeTokenDelegateInstruction,
  29. ParsedSetAuthorityInstruction,
  30. ParsedSyncNativeInstruction,
  31. ParsedThawTokenInstruction,
  32. ParsedTransferTokensCheckedInstruction,
  33. ParsedTransferTokensInstruction,
  34. ParsedUiAmountToAmountInstruction,
  35. } from '../instructions';
  36. export const TOKEN_PROGRAM_ADDRESS =
  37. 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
  38. export enum TokenAccount {
  39. Mint,
  40. Token,
  41. Multisig,
  42. }
  43. export enum TokenInstruction {
  44. InitializeMint,
  45. InitializeToken,
  46. InitializeMultisig,
  47. TransferTokens,
  48. ApproveTokenDelegate,
  49. RevokeTokenDelegate,
  50. SetAuthority,
  51. MintTokensTo,
  52. BurnToken,
  53. CloseToken,
  54. FreezeToken,
  55. ThawToken,
  56. TransferTokensChecked,
  57. ApproveTokenDelegateChecked,
  58. MintTokensToChecked,
  59. BurnTokenChecked,
  60. InitializeToken2,
  61. SyncNative,
  62. InitializeToken3,
  63. InitializeMultisig2,
  64. InitializeMint2,
  65. GetTokenDataSize,
  66. InitializeImmutableOwner,
  67. AmountToUiAmount,
  68. UiAmountToAmount,
  69. }
  70. export function identifyTokenInstruction(
  71. instruction: { data: Uint8Array } | Uint8Array
  72. ): TokenInstruction {
  73. const data =
  74. instruction instanceof Uint8Array ? instruction : instruction.data;
  75. if (containsBytes(data, getU8Encoder().encode(0), 0)) {
  76. return TokenInstruction.InitializeMint;
  77. }
  78. if (containsBytes(data, getU8Encoder().encode(1), 0)) {
  79. return TokenInstruction.InitializeToken;
  80. }
  81. if (containsBytes(data, getU8Encoder().encode(2), 0)) {
  82. return TokenInstruction.InitializeMultisig;
  83. }
  84. if (containsBytes(data, getU8Encoder().encode(3), 0)) {
  85. return TokenInstruction.TransferTokens;
  86. }
  87. if (containsBytes(data, getU8Encoder().encode(4), 0)) {
  88. return TokenInstruction.ApproveTokenDelegate;
  89. }
  90. if (containsBytes(data, getU8Encoder().encode(5), 0)) {
  91. return TokenInstruction.RevokeTokenDelegate;
  92. }
  93. if (containsBytes(data, getU8Encoder().encode(6), 0)) {
  94. return TokenInstruction.SetAuthority;
  95. }
  96. if (containsBytes(data, getU8Encoder().encode(7), 0)) {
  97. return TokenInstruction.MintTokensTo;
  98. }
  99. if (containsBytes(data, getU8Encoder().encode(8), 0)) {
  100. return TokenInstruction.BurnToken;
  101. }
  102. if (containsBytes(data, getU8Encoder().encode(9), 0)) {
  103. return TokenInstruction.CloseToken;
  104. }
  105. if (containsBytes(data, getU8Encoder().encode(10), 0)) {
  106. return TokenInstruction.FreezeToken;
  107. }
  108. if (containsBytes(data, getU8Encoder().encode(11), 0)) {
  109. return TokenInstruction.ThawToken;
  110. }
  111. if (containsBytes(data, getU8Encoder().encode(12), 0)) {
  112. return TokenInstruction.TransferTokensChecked;
  113. }
  114. if (containsBytes(data, getU8Encoder().encode(13), 0)) {
  115. return TokenInstruction.ApproveTokenDelegateChecked;
  116. }
  117. if (containsBytes(data, getU8Encoder().encode(14), 0)) {
  118. return TokenInstruction.MintTokensToChecked;
  119. }
  120. if (containsBytes(data, getU8Encoder().encode(15), 0)) {
  121. return TokenInstruction.BurnTokenChecked;
  122. }
  123. if (containsBytes(data, getU8Encoder().encode(16), 0)) {
  124. return TokenInstruction.InitializeToken2;
  125. }
  126. if (containsBytes(data, getU8Encoder().encode(17), 0)) {
  127. return TokenInstruction.SyncNative;
  128. }
  129. if (containsBytes(data, getU8Encoder().encode(18), 0)) {
  130. return TokenInstruction.InitializeToken3;
  131. }
  132. if (containsBytes(data, getU8Encoder().encode(19), 0)) {
  133. return TokenInstruction.InitializeMultisig2;
  134. }
  135. if (containsBytes(data, getU8Encoder().encode(20), 0)) {
  136. return TokenInstruction.InitializeMint2;
  137. }
  138. if (containsBytes(data, getU8Encoder().encode(21), 0)) {
  139. return TokenInstruction.GetTokenDataSize;
  140. }
  141. if (containsBytes(data, getU8Encoder().encode(22), 0)) {
  142. return TokenInstruction.InitializeImmutableOwner;
  143. }
  144. if (containsBytes(data, getU8Encoder().encode(23), 0)) {
  145. return TokenInstruction.AmountToUiAmount;
  146. }
  147. if (containsBytes(data, getU8Encoder().encode(24), 0)) {
  148. return TokenInstruction.UiAmountToAmount;
  149. }
  150. throw new Error(
  151. 'The provided instruction could not be identified as a token instruction.'
  152. );
  153. }
  154. export type ParsedTokenInstruction<
  155. TProgram extends string = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
  156. > =
  157. | ({
  158. instructionType: TokenInstruction.InitializeMint;
  159. } & ParsedInitializeMintInstruction<TProgram>)
  160. | ({
  161. instructionType: TokenInstruction.InitializeToken;
  162. } & ParsedInitializeTokenInstruction<TProgram>)
  163. | ({
  164. instructionType: TokenInstruction.InitializeMultisig;
  165. } & ParsedInitializeMultisigInstruction<TProgram>)
  166. | ({
  167. instructionType: TokenInstruction.TransferTokens;
  168. } & ParsedTransferTokensInstruction<TProgram>)
  169. | ({
  170. instructionType: TokenInstruction.ApproveTokenDelegate;
  171. } & ParsedApproveTokenDelegateInstruction<TProgram>)
  172. | ({
  173. instructionType: TokenInstruction.RevokeTokenDelegate;
  174. } & ParsedRevokeTokenDelegateInstruction<TProgram>)
  175. | ({
  176. instructionType: TokenInstruction.SetAuthority;
  177. } & ParsedSetAuthorityInstruction<TProgram>)
  178. | ({
  179. instructionType: TokenInstruction.MintTokensTo;
  180. } & ParsedMintTokensToInstruction<TProgram>)
  181. | ({
  182. instructionType: TokenInstruction.BurnToken;
  183. } & ParsedBurnTokenInstruction<TProgram>)
  184. | ({
  185. instructionType: TokenInstruction.CloseToken;
  186. } & ParsedCloseTokenInstruction<TProgram>)
  187. | ({
  188. instructionType: TokenInstruction.FreezeToken;
  189. } & ParsedFreezeTokenInstruction<TProgram>)
  190. | ({
  191. instructionType: TokenInstruction.ThawToken;
  192. } & ParsedThawTokenInstruction<TProgram>)
  193. | ({
  194. instructionType: TokenInstruction.TransferTokensChecked;
  195. } & ParsedTransferTokensCheckedInstruction<TProgram>)
  196. | ({
  197. instructionType: TokenInstruction.ApproveTokenDelegateChecked;
  198. } & ParsedApproveTokenDelegateCheckedInstruction<TProgram>)
  199. | ({
  200. instructionType: TokenInstruction.MintTokensToChecked;
  201. } & ParsedMintTokensToCheckedInstruction<TProgram>)
  202. | ({
  203. instructionType: TokenInstruction.BurnTokenChecked;
  204. } & ParsedBurnTokenCheckedInstruction<TProgram>)
  205. | ({
  206. instructionType: TokenInstruction.InitializeToken2;
  207. } & ParsedInitializeToken2Instruction<TProgram>)
  208. | ({
  209. instructionType: TokenInstruction.SyncNative;
  210. } & ParsedSyncNativeInstruction<TProgram>)
  211. | ({
  212. instructionType: TokenInstruction.InitializeToken3;
  213. } & ParsedInitializeToken3Instruction<TProgram>)
  214. | ({
  215. instructionType: TokenInstruction.InitializeMultisig2;
  216. } & ParsedInitializeMultisig2Instruction<TProgram>)
  217. | ({
  218. instructionType: TokenInstruction.InitializeMint2;
  219. } & ParsedInitializeMint2Instruction<TProgram>)
  220. | ({
  221. instructionType: TokenInstruction.GetTokenDataSize;
  222. } & ParsedGetTokenDataSizeInstruction<TProgram>)
  223. | ({
  224. instructionType: TokenInstruction.InitializeImmutableOwner;
  225. } & ParsedInitializeImmutableOwnerInstruction<TProgram>)
  226. | ({
  227. instructionType: TokenInstruction.AmountToUiAmount;
  228. } & ParsedAmountToUiAmountInstruction<TProgram>)
  229. | ({
  230. instructionType: TokenInstruction.UiAmountToAmount;
  231. } & ParsedUiAmountToAmountInstruction<TProgram>);