@macalinao/clients-mpl-bubblegum 0.0.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/README.md +15 -1
  2. package/dist/generated/accounts/index.d.ts +2 -0
  3. package/dist/generated/accounts/treeConfig.d.ts +48 -0
  4. package/dist/generated/accounts/treeConfig.d.ts.map +1 -0
  5. package/dist/generated/accounts/treeConfig.js +84 -0
  6. package/dist/generated/accounts/treeConfig.js.map +1 -0
  7. package/dist/generated/accounts/voucher.d.ts +39 -0
  8. package/dist/generated/accounts/voucher.d.ts.map +1 -0
  9. package/dist/generated/accounts/voucher.js +75 -0
  10. package/dist/generated/accounts/voucher.js.map +1 -0
  11. package/dist/generated/errors/bubblegum.d.ts +131 -0
  12. package/dist/generated/errors/bubblegum.d.ts.map +1 -0
  13. package/dist/generated/errors/bubblegum.js +188 -0
  14. package/dist/generated/errors/bubblegum.js.map +1 -0
  15. package/dist/generated/errors/index.d.ts +1 -0
  16. package/dist/generated/index.d.ts +63 -0
  17. package/dist/generated/instructions/burn.d.ts +76 -0
  18. package/dist/generated/instructions/burn.d.ts.map +1 -0
  19. package/dist/generated/instructions/burn.js +176 -0
  20. package/dist/generated/instructions/burn.js.map +1 -0
  21. package/dist/generated/instructions/burnV2.d.ts +113 -0
  22. package/dist/generated/instructions/burnV2.d.ts.map +1 -0
  23. package/dist/generated/instructions/burnV2.js +247 -0
  24. package/dist/generated/instructions/burnV2.js.map +1 -0
  25. package/dist/generated/instructions/cancelRedeem.d.ts +60 -0
  26. package/dist/generated/instructions/cancelRedeem.d.ts.map +1 -0
  27. package/dist/generated/instructions/cancelRedeem.js +162 -0
  28. package/dist/generated/instructions/cancelRedeem.js.map +1 -0
  29. package/dist/generated/instructions/closeTreeV2.d.ts +69 -0
  30. package/dist/generated/instructions/closeTreeV2.d.ts.map +1 -0
  31. package/dist/generated/instructions/closeTreeV2.js +160 -0
  32. package/dist/generated/instructions/closeTreeV2.js.map +1 -0
  33. package/dist/generated/instructions/collectV2.d.ts +33 -0
  34. package/dist/generated/instructions/collectV2.d.ts.map +1 -0
  35. package/dist/generated/instructions/collectV2.js +72 -0
  36. package/dist/generated/instructions/collectV2.js.map +1 -0
  37. package/dist/generated/instructions/compress.d.ts +76 -0
  38. package/dist/generated/instructions/compress.d.ts.map +1 -0
  39. package/dist/generated/instructions/compress.js +241 -0
  40. package/dist/generated/instructions/compress.js.map +1 -0
  41. package/dist/generated/instructions/createTree.d.ts +68 -0
  42. package/dist/generated/instructions/createTree.d.ts.map +1 -0
  43. package/dist/generated/instructions/createTree.js +172 -0
  44. package/dist/generated/instructions/createTree.js.map +1 -0
  45. package/dist/generated/instructions/createTreeV2.d.ts +70 -0
  46. package/dist/generated/instructions/createTreeV2.d.ts.map +1 -0
  47. package/dist/generated/instructions/createTreeV2.js +176 -0
  48. package/dist/generated/instructions/createTreeV2.js.map +1 -0
  49. package/dist/generated/instructions/decompressV1.d.ts +79 -0
  50. package/dist/generated/instructions/decompressV1.d.ts.map +1 -0
  51. package/dist/generated/instructions/decompressV1.js +259 -0
  52. package/dist/generated/instructions/decompressV1.js.map +1 -0
  53. package/dist/generated/instructions/delegate.d.ts +79 -0
  54. package/dist/generated/instructions/delegate.d.ts.map +1 -0
  55. package/dist/generated/instructions/delegate.js +187 -0
  56. package/dist/generated/instructions/delegate.js.map +1 -0
  57. package/dist/generated/instructions/delegateAndFreezeV2.d.ts +98 -0
  58. package/dist/generated/instructions/delegateAndFreezeV2.d.ts.map +1 -0
  59. package/dist/generated/instructions/delegateAndFreezeV2.js +208 -0
  60. package/dist/generated/instructions/delegateAndFreezeV2.js.map +1 -0
  61. package/dist/generated/instructions/delegateV2.d.ts +98 -0
  62. package/dist/generated/instructions/delegateV2.d.ts.map +1 -0
  63. package/dist/generated/instructions/delegateV2.js +208 -0
  64. package/dist/generated/instructions/delegateV2.js.map +1 -0
  65. package/dist/generated/instructions/freezeV2.d.ts +105 -0
  66. package/dist/generated/instructions/freezeV2.d.ts.map +1 -0
  67. package/dist/generated/instructions/freezeV2.js +217 -0
  68. package/dist/generated/instructions/freezeV2.js.map +1 -0
  69. package/dist/generated/instructions/index.d.ts +36 -0
  70. package/dist/generated/instructions/mintToCollectionV1.d.ts +100 -0
  71. package/dist/generated/instructions/mintToCollectionV1.d.ts.map +1 -0
  72. package/dist/generated/instructions/mintToCollectionV1.js +284 -0
  73. package/dist/generated/instructions/mintToCollectionV1.js.map +1 -0
  74. package/dist/generated/instructions/mintV1.d.ts +67 -0
  75. package/dist/generated/instructions/mintV1.d.ts.map +1 -0
  76. package/dist/generated/instructions/mintV1.js +185 -0
  77. package/dist/generated/instructions/mintV1.js.map +1 -0
  78. package/dist/generated/instructions/mintV2.d.ts +92 -0
  79. package/dist/generated/instructions/mintV2.d.ts.map +1 -0
  80. package/dist/generated/instructions/mintV2.js +252 -0
  81. package/dist/generated/instructions/mintV2.js.map +1 -0
  82. package/dist/generated/instructions/redeem.d.ts +79 -0
  83. package/dist/generated/instructions/redeem.d.ts.map +1 -0
  84. package/dist/generated/instructions/redeem.js +187 -0
  85. package/dist/generated/instructions/redeem.js.map +1 -0
  86. package/dist/generated/instructions/setAndVerifyCollection.d.ts +139 -0
  87. package/dist/generated/instructions/setAndVerifyCollection.d.ts.map +1 -0
  88. package/dist/generated/instructions/setAndVerifyCollection.js +302 -0
  89. package/dist/generated/instructions/setAndVerifyCollection.js.map +1 -0
  90. package/dist/generated/instructions/setCollectionV2.d.ts +131 -0
  91. package/dist/generated/instructions/setCollectionV2.d.ts.map +1 -0
  92. package/dist/generated/instructions/setCollectionV2.js +264 -0
  93. package/dist/generated/instructions/setCollectionV2.js.map +1 -0
  94. package/dist/generated/instructions/setDecompressableState.d.ts +38 -0
  95. package/dist/generated/instructions/setDecompressableState.d.ts.map +1 -0
  96. package/dist/generated/instructions/setDecompressableState.js +74 -0
  97. package/dist/generated/instructions/setDecompressableState.js.map +1 -0
  98. package/dist/generated/instructions/setDecompressibleState.d.ts +38 -0
  99. package/dist/generated/instructions/setDecompressibleState.d.ts.map +1 -0
  100. package/dist/generated/instructions/setDecompressibleState.js +74 -0
  101. package/dist/generated/instructions/setDecompressibleState.js.map +1 -0
  102. package/dist/generated/instructions/setNonTransferableV2.d.ts +107 -0
  103. package/dist/generated/instructions/setNonTransferableV2.d.ts.map +1 -0
  104. package/dist/generated/instructions/setNonTransferableV2.js +217 -0
  105. package/dist/generated/instructions/setNonTransferableV2.js.map +1 -0
  106. package/dist/generated/instructions/setTreeDelegate.d.ts +49 -0
  107. package/dist/generated/instructions/setTreeDelegate.d.ts.map +1 -0
  108. package/dist/generated/instructions/setTreeDelegate.js +134 -0
  109. package/dist/generated/instructions/setTreeDelegate.js.map +1 -0
  110. package/dist/generated/instructions/thawAndRevokeV2.d.ts +93 -0
  111. package/dist/generated/instructions/thawAndRevokeV2.d.ts.map +1 -0
  112. package/dist/generated/instructions/thawAndRevokeV2.js +197 -0
  113. package/dist/generated/instructions/thawAndRevokeV2.js.map +1 -0
  114. package/dist/generated/instructions/thawV2.d.ts +105 -0
  115. package/dist/generated/instructions/thawV2.d.ts.map +1 -0
  116. package/dist/generated/instructions/thawV2.js +217 -0
  117. package/dist/generated/instructions/thawV2.js.map +1 -0
  118. package/dist/generated/instructions/transfer.d.ts +79 -0
  119. package/dist/generated/instructions/transfer.d.ts.map +1 -0
  120. package/dist/generated/instructions/transfer.js +187 -0
  121. package/dist/generated/instructions/transfer.js.map +1 -0
  122. package/dist/generated/instructions/transferV2.d.ts +110 -0
  123. package/dist/generated/instructions/transferV2.d.ts.map +1 -0
  124. package/dist/generated/instructions/transferV2.js +228 -0
  125. package/dist/generated/instructions/transferV2.js.map +1 -0
  126. package/dist/generated/instructions/unverifyCollection.d.ts +135 -0
  127. package/dist/generated/instructions/unverifyCollection.d.ts.map +1 -0
  128. package/dist/generated/instructions/unverifyCollection.js +300 -0
  129. package/dist/generated/instructions/unverifyCollection.js.map +1 -0
  130. package/dist/generated/instructions/unverifyCreator.d.ts +87 -0
  131. package/dist/generated/instructions/unverifyCreator.d.ts.map +1 -0
  132. package/dist/generated/instructions/unverifyCreator.js +201 -0
  133. package/dist/generated/instructions/unverifyCreator.js.map +1 -0
  134. package/dist/generated/instructions/unverifyCreatorV2.d.ts +91 -0
  135. package/dist/generated/instructions/unverifyCreatorV2.d.ts.map +1 -0
  136. package/dist/generated/instructions/unverifyCreatorV2.js +205 -0
  137. package/dist/generated/instructions/unverifyCreatorV2.js.map +1 -0
  138. package/dist/generated/instructions/updateAssetDataV2.d.ts +114 -0
  139. package/dist/generated/instructions/updateAssetDataV2.d.ts.map +1 -0
  140. package/dist/generated/instructions/updateAssetDataV2.js +222 -0
  141. package/dist/generated/instructions/updateAssetDataV2.js.map +1 -0
  142. package/dist/generated/instructions/updateMetadata.d.ts +112 -0
  143. package/dist/generated/instructions/updateMetadata.d.ts.map +1 -0
  144. package/dist/generated/instructions/updateMetadata.js +250 -0
  145. package/dist/generated/instructions/updateMetadata.js.map +1 -0
  146. package/dist/generated/instructions/updateMetadataV2.d.ts +109 -0
  147. package/dist/generated/instructions/updateMetadataV2.d.ts.map +1 -0
  148. package/dist/generated/instructions/updateMetadataV2.js +219 -0
  149. package/dist/generated/instructions/updateMetadataV2.js.map +1 -0
  150. package/dist/generated/instructions/verifyCollection.d.ts +135 -0
  151. package/dist/generated/instructions/verifyCollection.d.ts.map +1 -0
  152. package/dist/generated/instructions/verifyCollection.js +300 -0
  153. package/dist/generated/instructions/verifyCollection.js.map +1 -0
  154. package/dist/generated/instructions/verifyCreator.d.ts +87 -0
  155. package/dist/generated/instructions/verifyCreator.d.ts.map +1 -0
  156. package/dist/generated/instructions/verifyCreator.js +201 -0
  157. package/dist/generated/instructions/verifyCreator.js.map +1 -0
  158. package/dist/generated/instructions/verifyCreatorV2.d.ts +91 -0
  159. package/dist/generated/instructions/verifyCreatorV2.d.ts.map +1 -0
  160. package/dist/generated/instructions/verifyCreatorV2.js +205 -0
  161. package/dist/generated/instructions/verifyCreatorV2.js.map +1 -0
  162. package/dist/generated/pdas/assetId.d.ts +16 -0
  163. package/dist/generated/pdas/assetId.d.ts.map +1 -0
  164. package/dist/generated/pdas/assetId.js +18 -0
  165. package/dist/generated/pdas/assetId.js.map +1 -0
  166. package/dist/generated/pdas/bubblegumSigner.d.ts +10 -0
  167. package/dist/generated/pdas/bubblegumSigner.d.ts.map +1 -0
  168. package/dist/generated/pdas/bubblegumSigner.js +14 -0
  169. package/dist/generated/pdas/bubblegumSigner.js.map +1 -0
  170. package/dist/generated/pdas/index.d.ts +7 -0
  171. package/dist/generated/pdas/masterEdition.d.ts +14 -0
  172. package/dist/generated/pdas/masterEdition.d.ts.map +1 -0
  173. package/dist/generated/pdas/masterEdition.js +19 -0
  174. package/dist/generated/pdas/masterEdition.js.map +1 -0
  175. package/dist/generated/pdas/metadata.d.ts +14 -0
  176. package/dist/generated/pdas/metadata.d.ts.map +1 -0
  177. package/dist/generated/pdas/metadata.js +18 -0
  178. package/dist/generated/pdas/metadata.js.map +1 -0
  179. package/dist/generated/pdas/mintAuthority.d.ts +14 -0
  180. package/dist/generated/pdas/mintAuthority.d.ts.map +1 -0
  181. package/dist/generated/pdas/mintAuthority.js +14 -0
  182. package/dist/generated/pdas/mintAuthority.js.map +1 -0
  183. package/dist/generated/pdas/treeConfig.d.ts +14 -0
  184. package/dist/generated/pdas/treeConfig.d.ts.map +1 -0
  185. package/dist/generated/pdas/treeConfig.js +14 -0
  186. package/dist/generated/pdas/treeConfig.js.map +1 -0
  187. package/dist/generated/pdas/voucher.d.ts +16 -0
  188. package/dist/generated/pdas/voucher.d.ts.map +1 -0
  189. package/dist/generated/pdas/voucher.js +18 -0
  190. package/dist/generated/pdas/voucher.js.map +1 -0
  191. package/dist/generated/programs/bubblegum.d.ts +232 -0
  192. package/dist/generated/programs/bubblegum.d.ts.map +1 -0
  193. package/dist/generated/programs/bubblegum.js +844 -0
  194. package/dist/generated/programs/bubblegum.js.map +1 -0
  195. package/dist/generated/programs/index.d.ts +2 -0
  196. package/dist/generated/programs/mplTokenMetadata.d.ts +20 -0
  197. package/dist/generated/programs/mplTokenMetadata.d.ts.map +1 -0
  198. package/dist/generated/programs/mplTokenMetadata.js +17 -0
  199. package/dist/generated/programs/mplTokenMetadata.js.map +1 -0
  200. package/dist/generated/types/assetDataSchema.d.ts +15 -0
  201. package/dist/generated/types/assetDataSchema.d.ts.map +1 -0
  202. package/dist/generated/types/assetDataSchema.js +21 -0
  203. package/dist/generated/types/assetDataSchema.js.map +1 -0
  204. package/dist/generated/types/bubblegumEventType.d.ts +14 -0
  205. package/dist/generated/types/bubblegumEventType.d.ts.map +1 -0
  206. package/dist/generated/types/bubblegumEventType.js +20 -0
  207. package/dist/generated/types/bubblegumEventType.js.map +1 -0
  208. package/dist/generated/types/collection.d.ts +14 -0
  209. package/dist/generated/types/collection.d.ts.map +1 -0
  210. package/dist/generated/types/collection.js +15 -0
  211. package/dist/generated/types/collection.js.map +1 -0
  212. package/dist/generated/types/creator.d.ts +20 -0
  213. package/dist/generated/types/creator.d.ts.map +1 -0
  214. package/dist/generated/types/creator.js +23 -0
  215. package/dist/generated/types/creator.js.map +1 -0
  216. package/dist/generated/types/decompressibleState.d.ts +14 -0
  217. package/dist/generated/types/decompressibleState.d.ts.map +1 -0
  218. package/dist/generated/types/decompressibleState.js +20 -0
  219. package/dist/generated/types/decompressibleState.js.map +1 -0
  220. package/dist/generated/types/index.d.ts +15 -0
  221. package/dist/generated/types/instructionName.d.ts +47 -0
  222. package/dist/generated/types/instructionName.d.ts.map +1 -0
  223. package/dist/generated/types/instructionName.js +53 -0
  224. package/dist/generated/types/instructionName.js.map +1 -0
  225. package/dist/generated/types/leafSchema.d.ts +54 -0
  226. package/dist/generated/types/leafSchema.d.ts.map +1 -0
  227. package/dist/generated/types/leafSchema.js +61 -0
  228. package/dist/generated/types/leafSchema.js.map +1 -0
  229. package/dist/generated/types/metadataArgs.d.ts +62 -0
  230. package/dist/generated/types/metadataArgs.d.ts.map +1 -0
  231. package/dist/generated/types/metadataArgs.js +46 -0
  232. package/dist/generated/types/metadataArgs.js.map +1 -0
  233. package/dist/generated/types/metadataArgsV2.d.ts +51 -0
  234. package/dist/generated/types/metadataArgsV2.d.ts.map +1 -0
  235. package/dist/generated/types/metadataArgsV2.js +37 -0
  236. package/dist/generated/types/metadataArgsV2.js.map +1 -0
  237. package/dist/generated/types/tokenProgramVersion.d.ts +14 -0
  238. package/dist/generated/types/tokenProgramVersion.d.ts.map +1 -0
  239. package/dist/generated/types/tokenProgramVersion.js +20 -0
  240. package/dist/generated/types/tokenProgramVersion.js.map +1 -0
  241. package/dist/generated/types/tokenStandard.d.ts +16 -0
  242. package/dist/generated/types/tokenStandard.d.ts.map +1 -0
  243. package/dist/generated/types/tokenStandard.js +22 -0
  244. package/dist/generated/types/tokenStandard.js.map +1 -0
  245. package/dist/generated/types/updateArgs.d.ts +28 -0
  246. package/dist/generated/types/updateArgs.d.ts.map +1 -0
  247. package/dist/generated/types/updateArgs.js +32 -0
  248. package/dist/generated/types/updateArgs.js.map +1 -0
  249. package/dist/generated/types/useMethod.d.ts +15 -0
  250. package/dist/generated/types/useMethod.d.ts.map +1 -0
  251. package/dist/generated/types/useMethod.js +21 -0
  252. package/dist/generated/types/useMethod.js.map +1 -0
  253. package/dist/generated/types/uses.d.ts +20 -0
  254. package/dist/generated/types/uses.d.ts.map +1 -0
  255. package/dist/generated/types/uses.js +24 -0
  256. package/dist/generated/types/uses.js.map +1 -0
  257. package/dist/generated/types/version.d.ts +14 -0
  258. package/dist/generated/types/version.d.ts.map +1 -0
  259. package/dist/generated/types/version.js +20 -0
  260. package/dist/generated/types/version.js.map +1 -0
  261. package/dist/index.d.ts +64 -0
  262. package/dist/index.js +64 -0
  263. package/package.json +53 -5
  264. package/src/generated/accounts/index.ts +10 -0
  265. package/src/generated/accounts/treeConfig.ts +197 -0
  266. package/src/generated/accounts/voucher.ts +166 -0
  267. package/src/generated/errors/bubblegum.ts +309 -0
  268. package/src/generated/errors/index.ts +9 -0
  269. package/src/generated/index.ts +14 -0
  270. package/src/generated/instructions/burn.ts +454 -0
  271. package/src/generated/instructions/burnV2.ts +641 -0
  272. package/src/generated/instructions/cancelRedeem.ts +432 -0
  273. package/src/generated/instructions/closeTreeV2.ts +424 -0
  274. package/src/generated/instructions/collectV2.ts +184 -0
  275. package/src/generated/instructions/compress.ts +589 -0
  276. package/src/generated/instructions/createTree.ts +448 -0
  277. package/src/generated/instructions/createTreeV2.ts +459 -0
  278. package/src/generated/instructions/decompressV1.ts +646 -0
  279. package/src/generated/instructions/delegate.ts +492 -0
  280. package/src/generated/instructions/delegateAndFreezeV2.ts +568 -0
  281. package/src/generated/instructions/delegateV2.ts +562 -0
  282. package/src/generated/instructions/freezeV2.ts +566 -0
  283. package/src/generated/instructions/index.ts +44 -0
  284. package/src/generated/instructions/mintToCollectionV1.ts +732 -0
  285. package/src/generated/instructions/mintV1.ts +476 -0
  286. package/src/generated/instructions/mintV2.ts +649 -0
  287. package/src/generated/instructions/redeem.ts +480 -0
  288. package/src/generated/instructions/setAndVerifyCollection.ts +792 -0
  289. package/src/generated/instructions/setCollectionV2.ts +711 -0
  290. package/src/generated/instructions/setDecompressableState.ts +218 -0
  291. package/src/generated/instructions/setDecompressibleState.ts +218 -0
  292. package/src/generated/instructions/setNonTransferableV2.ts +575 -0
  293. package/src/generated/instructions/setTreeDelegate.ts +344 -0
  294. package/src/generated/instructions/thawAndRevokeV2.ts +526 -0
  295. package/src/generated/instructions/thawV2.ts +566 -0
  296. package/src/generated/instructions/transfer.ts +476 -0
  297. package/src/generated/instructions/transferV2.ts +591 -0
  298. package/src/generated/instructions/unverifyCollection.ts +781 -0
  299. package/src/generated/instructions/unverifyCreator.ts +515 -0
  300. package/src/generated/instructions/unverifyCreatorV2.ts +538 -0
  301. package/src/generated/instructions/updateAssetDataV2.ts +599 -0
  302. package/src/generated/instructions/updateMetadata.ts +665 -0
  303. package/src/generated/instructions/updateMetadataV2.ts +582 -0
  304. package/src/generated/instructions/verifyCollection.ts +779 -0
  305. package/src/generated/instructions/verifyCreator.ts +516 -0
  306. package/src/generated/instructions/verifyCreatorV2.ts +538 -0
  307. package/src/generated/pdas/assetId.ts +40 -0
  308. package/src/generated/pdas/bubblegumSigner.ts +23 -0
  309. package/src/generated/pdas/index.ts +15 -0
  310. package/src/generated/pdas/masterEdition.ts +38 -0
  311. package/src/generated/pdas/metadata.ts +37 -0
  312. package/src/generated/pdas/mintAuthority.ts +29 -0
  313. package/src/generated/pdas/treeConfig.ts +29 -0
  314. package/src/generated/pdas/voucher.ts +40 -0
  315. package/src/generated/programs/bubblegum.ts +1509 -0
  316. package/src/generated/programs/index.ts +10 -0
  317. package/src/generated/programs/mplTokenMetadata.ts +42 -0
  318. package/src/generated/types/assetDataSchema.ts +37 -0
  319. package/src/generated/types/bubblegumEventType.ts +39 -0
  320. package/src/generated/types/collection.ts +51 -0
  321. package/src/generated/types/creator.ts +58 -0
  322. package/src/generated/types/decompressibleState.ts +39 -0
  323. package/src/generated/types/index.ts +23 -0
  324. package/src/generated/types/instructionName.ts +69 -0
  325. package/src/generated/types/leafSchema.ts +166 -0
  326. package/src/generated/types/metadataArgs.ts +148 -0
  327. package/src/generated/types/metadataArgsV2.ts +126 -0
  328. package/src/generated/types/tokenProgramVersion.ts +39 -0
  329. package/src/generated/types/tokenStandard.ts +38 -0
  330. package/src/generated/types/updateArgs.ts +102 -0
  331. package/src/generated/types/useMethod.ts +34 -0
  332. package/src/generated/types/uses.ts +54 -0
  333. package/src/generated/types/version.ts +33 -0
  334. package/src/index.ts +8 -0
@@ -0,0 +1,792 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+
9
+ import type {
10
+ AccountMeta,
11
+ AccountSignerMeta,
12
+ Address,
13
+ Codec,
14
+ Decoder,
15
+ Encoder,
16
+ Instruction,
17
+ InstructionWithAccounts,
18
+ InstructionWithData,
19
+ ReadonlyAccount,
20
+ ReadonlySignerAccount,
21
+ ReadonlyUint8Array,
22
+ TransactionSigner,
23
+ WritableAccount,
24
+ } from "@solana/kit";
25
+ import type { ResolvedInstructionAccount } from "@solana/program-client-core";
26
+ import type { MetadataArgs, MetadataArgsArgs } from "../types/index.js";
27
+ import {
28
+ address,
29
+ combineCodec,
30
+ fixDecoderSize,
31
+ fixEncoderSize,
32
+ getAddressDecoder,
33
+ getAddressEncoder,
34
+ getArrayDecoder,
35
+ getArrayEncoder,
36
+ getBytesDecoder,
37
+ getBytesEncoder,
38
+ getStructDecoder,
39
+ getStructEncoder,
40
+ getU8Decoder,
41
+ getU8Encoder,
42
+ getU32Decoder,
43
+ getU32Encoder,
44
+ getU64Decoder,
45
+ getU64Encoder,
46
+ SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
47
+ SolanaError,
48
+ transformEncoder,
49
+ } from "@solana/kit";
50
+ import {
51
+ getAccountMetaFactory,
52
+ getAddressFromResolvedInstructionAccount,
53
+ } from "@solana/program-client-core";
54
+ import {
55
+ findBubblegumSignerPda,
56
+ findMasterEditionPda,
57
+ findMetadataPda,
58
+ findTreeConfigPda,
59
+ } from "../pdas/index.js";
60
+ import { BUBBLEGUM_PROGRAM_ADDRESS } from "../programs/index.js";
61
+ import {
62
+ getMetadataArgsDecoder,
63
+ getMetadataArgsEncoder,
64
+ } from "../types/index.js";
65
+
66
+ export const SET_AND_VERIFY_COLLECTION_DISCRIMINATOR: ReadonlyUint8Array =
67
+ new Uint8Array([235, 242, 121, 216, 158, 234, 180, 234]);
68
+
69
+ export function getSetAndVerifyCollectionDiscriminatorBytes(): ReadonlyUint8Array {
70
+ return fixEncoderSize(getBytesEncoder(), 8).encode(
71
+ SET_AND_VERIFY_COLLECTION_DISCRIMINATOR,
72
+ );
73
+ }
74
+
75
+ export type SetAndVerifyCollectionInstruction<
76
+ TProgram extends string = typeof BUBBLEGUM_PROGRAM_ADDRESS,
77
+ TAccountTreeAuthority extends string | AccountMeta<string> = string,
78
+ TAccountLeafOwner extends string | AccountMeta<string> = string,
79
+ TAccountLeafDelegate extends string | AccountMeta<string> = string,
80
+ TAccountMerkleTree extends string | AccountMeta<string> = string,
81
+ TAccountPayer extends string | AccountMeta<string> = string,
82
+ TAccountTreeDelegate extends string | AccountMeta<string> = string,
83
+ TAccountCollectionAuthority extends string | AccountMeta<string> = string,
84
+ TAccountCollectionAuthorityRecordPda extends
85
+ | string
86
+ | AccountMeta<string> = "BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY",
87
+ TAccountCollectionMint extends string | AccountMeta<string> = string,
88
+ TAccountCollectionMetadata extends string | AccountMeta<string> = string,
89
+ TAccountEditionAccount extends string | AccountMeta<string> = string,
90
+ TAccountBubblegumSigner extends string | AccountMeta<string> = string,
91
+ TAccountLogWrapper extends
92
+ | string
93
+ | AccountMeta<string> = "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV",
94
+ TAccountCompressionProgram extends
95
+ | string
96
+ | AccountMeta<string> = "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK",
97
+ TAccountTokenMetadataProgram extends
98
+ | string
99
+ | AccountMeta<string> = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
100
+ TAccountSystemProgram extends
101
+ | string
102
+ | AccountMeta<string> = "11111111111111111111111111111111",
103
+ TRemainingAccounts extends readonly AccountMeta<string>[] = [],
104
+ > = Instruction<TProgram> &
105
+ InstructionWithData<ReadonlyUint8Array> &
106
+ InstructionWithAccounts<
107
+ [
108
+ TAccountTreeAuthority extends string
109
+ ? ReadonlyAccount<TAccountTreeAuthority>
110
+ : TAccountTreeAuthority,
111
+ TAccountLeafOwner extends string
112
+ ? ReadonlyAccount<TAccountLeafOwner>
113
+ : TAccountLeafOwner,
114
+ TAccountLeafDelegate extends string
115
+ ? ReadonlyAccount<TAccountLeafDelegate>
116
+ : TAccountLeafDelegate,
117
+ TAccountMerkleTree extends string
118
+ ? WritableAccount<TAccountMerkleTree>
119
+ : TAccountMerkleTree,
120
+ TAccountPayer extends string
121
+ ? ReadonlySignerAccount<TAccountPayer> &
122
+ AccountSignerMeta<TAccountPayer>
123
+ : TAccountPayer,
124
+ TAccountTreeDelegate extends string
125
+ ? ReadonlyAccount<TAccountTreeDelegate>
126
+ : TAccountTreeDelegate,
127
+ TAccountCollectionAuthority extends string
128
+ ? ReadonlySignerAccount<TAccountCollectionAuthority> &
129
+ AccountSignerMeta<TAccountCollectionAuthority>
130
+ : TAccountCollectionAuthority,
131
+ TAccountCollectionAuthorityRecordPda extends string
132
+ ? ReadonlyAccount<TAccountCollectionAuthorityRecordPda>
133
+ : TAccountCollectionAuthorityRecordPda,
134
+ TAccountCollectionMint extends string
135
+ ? ReadonlyAccount<TAccountCollectionMint>
136
+ : TAccountCollectionMint,
137
+ TAccountCollectionMetadata extends string
138
+ ? WritableAccount<TAccountCollectionMetadata>
139
+ : TAccountCollectionMetadata,
140
+ TAccountEditionAccount extends string
141
+ ? ReadonlyAccount<TAccountEditionAccount>
142
+ : TAccountEditionAccount,
143
+ TAccountBubblegumSigner extends string
144
+ ? ReadonlyAccount<TAccountBubblegumSigner>
145
+ : TAccountBubblegumSigner,
146
+ TAccountLogWrapper extends string
147
+ ? ReadonlyAccount<TAccountLogWrapper>
148
+ : TAccountLogWrapper,
149
+ TAccountCompressionProgram extends string
150
+ ? ReadonlyAccount<TAccountCompressionProgram>
151
+ : TAccountCompressionProgram,
152
+ TAccountTokenMetadataProgram extends string
153
+ ? ReadonlyAccount<TAccountTokenMetadataProgram>
154
+ : TAccountTokenMetadataProgram,
155
+ TAccountSystemProgram extends string
156
+ ? ReadonlyAccount<TAccountSystemProgram>
157
+ : TAccountSystemProgram,
158
+ ...TRemainingAccounts,
159
+ ]
160
+ >;
161
+
162
+ export interface SetAndVerifyCollectionInstructionData {
163
+ discriminator: ReadonlyUint8Array;
164
+ root: number[];
165
+ dataHash: number[];
166
+ creatorHash: number[];
167
+ nonce: bigint;
168
+ index: number;
169
+ message: MetadataArgs;
170
+ collection: Address;
171
+ }
172
+
173
+ export interface SetAndVerifyCollectionInstructionDataArgs {
174
+ root: number[];
175
+ dataHash: number[];
176
+ creatorHash: number[];
177
+ nonce: number | bigint;
178
+ index: number;
179
+ message: MetadataArgsArgs;
180
+ collection: Address;
181
+ }
182
+
183
+ export function getSetAndVerifyCollectionInstructionDataEncoder(): Encoder<SetAndVerifyCollectionInstructionDataArgs> {
184
+ return transformEncoder(
185
+ getStructEncoder([
186
+ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
187
+ ["root", getArrayEncoder(getU8Encoder(), { size: 32 })],
188
+ ["dataHash", getArrayEncoder(getU8Encoder(), { size: 32 })],
189
+ ["creatorHash", getArrayEncoder(getU8Encoder(), { size: 32 })],
190
+ ["nonce", getU64Encoder()],
191
+ ["index", getU32Encoder()],
192
+ ["message", getMetadataArgsEncoder()],
193
+ ["collection", getAddressEncoder()],
194
+ ]),
195
+ (value) => ({
196
+ ...value,
197
+ discriminator: SET_AND_VERIFY_COLLECTION_DISCRIMINATOR,
198
+ }),
199
+ );
200
+ }
201
+
202
+ export function getSetAndVerifyCollectionInstructionDataDecoder(): Decoder<SetAndVerifyCollectionInstructionData> {
203
+ return getStructDecoder([
204
+ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
205
+ ["root", getArrayDecoder(getU8Decoder(), { size: 32 })],
206
+ ["dataHash", getArrayDecoder(getU8Decoder(), { size: 32 })],
207
+ ["creatorHash", getArrayDecoder(getU8Decoder(), { size: 32 })],
208
+ ["nonce", getU64Decoder()],
209
+ ["index", getU32Decoder()],
210
+ ["message", getMetadataArgsDecoder()],
211
+ ["collection", getAddressDecoder()],
212
+ ]);
213
+ }
214
+
215
+ export function getSetAndVerifyCollectionInstructionDataCodec(): Codec<
216
+ SetAndVerifyCollectionInstructionDataArgs,
217
+ SetAndVerifyCollectionInstructionData
218
+ > {
219
+ return combineCodec(
220
+ getSetAndVerifyCollectionInstructionDataEncoder(),
221
+ getSetAndVerifyCollectionInstructionDataDecoder(),
222
+ );
223
+ }
224
+
225
+ export interface SetAndVerifyCollectionAsyncInput<
226
+ TAccountTreeAuthority extends string = string,
227
+ TAccountLeafOwner extends string = string,
228
+ TAccountLeafDelegate extends string = string,
229
+ TAccountMerkleTree extends string = string,
230
+ TAccountPayer extends string = string,
231
+ TAccountTreeDelegate extends string = string,
232
+ TAccountCollectionAuthority extends string = string,
233
+ TAccountCollectionAuthorityRecordPda extends string = string,
234
+ TAccountCollectionMint extends string = string,
235
+ TAccountCollectionMetadata extends string = string,
236
+ TAccountEditionAccount extends string = string,
237
+ TAccountBubblegumSigner extends string = string,
238
+ TAccountLogWrapper extends string = string,
239
+ TAccountCompressionProgram extends string = string,
240
+ TAccountTokenMetadataProgram extends string = string,
241
+ TAccountSystemProgram extends string = string,
242
+ > {
243
+ treeAuthority?: Address<TAccountTreeAuthority>;
244
+ leafOwner: Address<TAccountLeafOwner>;
245
+ leafDelegate: Address<TAccountLeafDelegate>;
246
+ merkleTree: Address<TAccountMerkleTree>;
247
+ payer: TransactionSigner<TAccountPayer>;
248
+ /**
249
+ * This account is checked to be a signer in
250
+ * the case of `set_and_verify_collection` where
251
+ * we are actually changing the NFT metadata.
252
+ */
253
+ treeDelegate: Address<TAccountTreeDelegate>;
254
+ collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;
255
+ /**
256
+ * If there is no collecton authority record PDA then
257
+ * this must be the Bubblegum program address.
258
+ */
259
+ collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;
260
+ collectionMint: Address<TAccountCollectionMint>;
261
+ collectionMetadata?: Address<TAccountCollectionMetadata>;
262
+ editionAccount?: Address<TAccountEditionAccount>;
263
+ bubblegumSigner?: Address<TAccountBubblegumSigner>;
264
+ logWrapper?: Address<TAccountLogWrapper>;
265
+ compressionProgram?: Address<TAccountCompressionProgram>;
266
+ tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;
267
+ systemProgram?: Address<TAccountSystemProgram>;
268
+ root: SetAndVerifyCollectionInstructionDataArgs["root"];
269
+ dataHash: SetAndVerifyCollectionInstructionDataArgs["dataHash"];
270
+ creatorHash: SetAndVerifyCollectionInstructionDataArgs["creatorHash"];
271
+ nonce: SetAndVerifyCollectionInstructionDataArgs["nonce"];
272
+ index: SetAndVerifyCollectionInstructionDataArgs["index"];
273
+ message: SetAndVerifyCollectionInstructionDataArgs["message"];
274
+ collection: SetAndVerifyCollectionInstructionDataArgs["collection"];
275
+ }
276
+
277
+ export async function getSetAndVerifyCollectionInstructionAsync<
278
+ TAccountTreeAuthority extends string,
279
+ TAccountLeafOwner extends string,
280
+ TAccountLeafDelegate extends string,
281
+ TAccountMerkleTree extends string,
282
+ TAccountPayer extends string,
283
+ TAccountTreeDelegate extends string,
284
+ TAccountCollectionAuthority extends string,
285
+ TAccountCollectionAuthorityRecordPda extends string,
286
+ TAccountCollectionMint extends string,
287
+ TAccountCollectionMetadata extends string,
288
+ TAccountEditionAccount extends string,
289
+ TAccountBubblegumSigner extends string,
290
+ TAccountLogWrapper extends string,
291
+ TAccountCompressionProgram extends string,
292
+ TAccountTokenMetadataProgram extends string,
293
+ TAccountSystemProgram extends string,
294
+ TProgramAddress extends Address = typeof BUBBLEGUM_PROGRAM_ADDRESS,
295
+ >(
296
+ input: SetAndVerifyCollectionAsyncInput<
297
+ TAccountTreeAuthority,
298
+ TAccountLeafOwner,
299
+ TAccountLeafDelegate,
300
+ TAccountMerkleTree,
301
+ TAccountPayer,
302
+ TAccountTreeDelegate,
303
+ TAccountCollectionAuthority,
304
+ TAccountCollectionAuthorityRecordPda,
305
+ TAccountCollectionMint,
306
+ TAccountCollectionMetadata,
307
+ TAccountEditionAccount,
308
+ TAccountBubblegumSigner,
309
+ TAccountLogWrapper,
310
+ TAccountCompressionProgram,
311
+ TAccountTokenMetadataProgram,
312
+ TAccountSystemProgram
313
+ >,
314
+ config?: { programAddress?: TProgramAddress },
315
+ ): Promise<
316
+ SetAndVerifyCollectionInstruction<
317
+ TProgramAddress,
318
+ TAccountTreeAuthority,
319
+ TAccountLeafOwner,
320
+ TAccountLeafDelegate,
321
+ TAccountMerkleTree,
322
+ TAccountPayer,
323
+ TAccountTreeDelegate,
324
+ TAccountCollectionAuthority,
325
+ TAccountCollectionAuthorityRecordPda,
326
+ TAccountCollectionMint,
327
+ TAccountCollectionMetadata,
328
+ TAccountEditionAccount,
329
+ TAccountBubblegumSigner,
330
+ TAccountLogWrapper,
331
+ TAccountCompressionProgram,
332
+ TAccountTokenMetadataProgram,
333
+ TAccountSystemProgram
334
+ >
335
+ > {
336
+ // Program address.
337
+ const programAddress = config?.programAddress ?? BUBBLEGUM_PROGRAM_ADDRESS;
338
+
339
+ // Original accounts.
340
+ const originalAccounts = {
341
+ treeAuthority: { value: input.treeAuthority ?? null, isWritable: false },
342
+ leafOwner: { value: input.leafOwner ?? null, isWritable: false },
343
+ leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },
344
+ merkleTree: { value: input.merkleTree ?? null, isWritable: true },
345
+ payer: { value: input.payer ?? null, isWritable: false },
346
+ treeDelegate: { value: input.treeDelegate ?? null, isWritable: false },
347
+ collectionAuthority: {
348
+ value: input.collectionAuthority ?? null,
349
+ isWritable: false,
350
+ },
351
+ collectionAuthorityRecordPda: {
352
+ value: input.collectionAuthorityRecordPda ?? null,
353
+ isWritable: false,
354
+ },
355
+ collectionMint: { value: input.collectionMint ?? null, isWritable: false },
356
+ collectionMetadata: {
357
+ value: input.collectionMetadata ?? null,
358
+ isWritable: true,
359
+ },
360
+ editionAccount: { value: input.editionAccount ?? null, isWritable: false },
361
+ bubblegumSigner: {
362
+ value: input.bubblegumSigner ?? null,
363
+ isWritable: false,
364
+ },
365
+ logWrapper: { value: input.logWrapper ?? null, isWritable: false },
366
+ compressionProgram: {
367
+ value: input.compressionProgram ?? null,
368
+ isWritable: false,
369
+ },
370
+ tokenMetadataProgram: {
371
+ value: input.tokenMetadataProgram ?? null,
372
+ isWritable: false,
373
+ },
374
+ systemProgram: { value: input.systemProgram ?? null, isWritable: false },
375
+ };
376
+ const accounts = originalAccounts as Record<
377
+ keyof typeof originalAccounts,
378
+ ResolvedInstructionAccount
379
+ >;
380
+
381
+ // Original args.
382
+ const args = { ...input };
383
+
384
+ // Resolve default values.
385
+ if (!accounts.treeAuthority.value) {
386
+ accounts.treeAuthority.value = await findTreeConfigPda({
387
+ merkleTree: getAddressFromResolvedInstructionAccount(
388
+ "merkleTree",
389
+ accounts.merkleTree.value,
390
+ ),
391
+ });
392
+ }
393
+ if (!accounts.collectionAuthorityRecordPda.value) {
394
+ accounts.collectionAuthorityRecordPda.value = programAddress;
395
+ accounts.collectionAuthorityRecordPda.isWritable = false;
396
+ }
397
+ if (!accounts.collectionMetadata.value) {
398
+ accounts.collectionMetadata.value = await findMetadataPda({
399
+ programId: address("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),
400
+ mint: getAddressFromResolvedInstructionAccount(
401
+ "collectionMint",
402
+ accounts.collectionMint.value,
403
+ ),
404
+ });
405
+ }
406
+ if (!accounts.editionAccount.value) {
407
+ accounts.editionAccount.value = await findMasterEditionPda({
408
+ programId: address("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),
409
+ mint: getAddressFromResolvedInstructionAccount(
410
+ "collectionMint",
411
+ accounts.collectionMint.value,
412
+ ),
413
+ });
414
+ }
415
+ if (!accounts.bubblegumSigner.value) {
416
+ accounts.bubblegumSigner.value = await findBubblegumSignerPda();
417
+ }
418
+ if (!accounts.logWrapper.value) {
419
+ accounts.logWrapper.value =
420
+ "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV" as Address<"noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV">;
421
+ }
422
+ if (!accounts.compressionProgram.value) {
423
+ accounts.compressionProgram.value =
424
+ "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK" as Address<"cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK">;
425
+ }
426
+ if (!accounts.tokenMetadataProgram.value) {
427
+ accounts.tokenMetadataProgram.value =
428
+ "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" as Address<"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s">;
429
+ }
430
+ if (!accounts.systemProgram.value) {
431
+ accounts.systemProgram.value =
432
+ "11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
433
+ }
434
+
435
+ const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
436
+ return Object.freeze({
437
+ accounts: [
438
+ getAccountMeta("treeAuthority", accounts.treeAuthority),
439
+ getAccountMeta("leafOwner", accounts.leafOwner),
440
+ getAccountMeta("leafDelegate", accounts.leafDelegate),
441
+ getAccountMeta("merkleTree", accounts.merkleTree),
442
+ getAccountMeta("payer", accounts.payer),
443
+ getAccountMeta("treeDelegate", accounts.treeDelegate),
444
+ getAccountMeta("collectionAuthority", accounts.collectionAuthority),
445
+ getAccountMeta(
446
+ "collectionAuthorityRecordPda",
447
+ accounts.collectionAuthorityRecordPda,
448
+ ),
449
+ getAccountMeta("collectionMint", accounts.collectionMint),
450
+ getAccountMeta("collectionMetadata", accounts.collectionMetadata),
451
+ getAccountMeta("editionAccount", accounts.editionAccount),
452
+ getAccountMeta("bubblegumSigner", accounts.bubblegumSigner),
453
+ getAccountMeta("logWrapper", accounts.logWrapper),
454
+ getAccountMeta("compressionProgram", accounts.compressionProgram),
455
+ getAccountMeta("tokenMetadataProgram", accounts.tokenMetadataProgram),
456
+ getAccountMeta("systemProgram", accounts.systemProgram),
457
+ ],
458
+ data: getSetAndVerifyCollectionInstructionDataEncoder().encode(
459
+ args as SetAndVerifyCollectionInstructionDataArgs,
460
+ ),
461
+ programAddress,
462
+ } as SetAndVerifyCollectionInstruction<
463
+ TProgramAddress,
464
+ TAccountTreeAuthority,
465
+ TAccountLeafOwner,
466
+ TAccountLeafDelegate,
467
+ TAccountMerkleTree,
468
+ TAccountPayer,
469
+ TAccountTreeDelegate,
470
+ TAccountCollectionAuthority,
471
+ TAccountCollectionAuthorityRecordPda,
472
+ TAccountCollectionMint,
473
+ TAccountCollectionMetadata,
474
+ TAccountEditionAccount,
475
+ TAccountBubblegumSigner,
476
+ TAccountLogWrapper,
477
+ TAccountCompressionProgram,
478
+ TAccountTokenMetadataProgram,
479
+ TAccountSystemProgram
480
+ >);
481
+ }
482
+
483
+ export interface SetAndVerifyCollectionInput<
484
+ TAccountTreeAuthority extends string = string,
485
+ TAccountLeafOwner extends string = string,
486
+ TAccountLeafDelegate extends string = string,
487
+ TAccountMerkleTree extends string = string,
488
+ TAccountPayer extends string = string,
489
+ TAccountTreeDelegate extends string = string,
490
+ TAccountCollectionAuthority extends string = string,
491
+ TAccountCollectionAuthorityRecordPda extends string = string,
492
+ TAccountCollectionMint extends string = string,
493
+ TAccountCollectionMetadata extends string = string,
494
+ TAccountEditionAccount extends string = string,
495
+ TAccountBubblegumSigner extends string = string,
496
+ TAccountLogWrapper extends string = string,
497
+ TAccountCompressionProgram extends string = string,
498
+ TAccountTokenMetadataProgram extends string = string,
499
+ TAccountSystemProgram extends string = string,
500
+ > {
501
+ treeAuthority: Address<TAccountTreeAuthority>;
502
+ leafOwner: Address<TAccountLeafOwner>;
503
+ leafDelegate: Address<TAccountLeafDelegate>;
504
+ merkleTree: Address<TAccountMerkleTree>;
505
+ payer: TransactionSigner<TAccountPayer>;
506
+ /**
507
+ * This account is checked to be a signer in
508
+ * the case of `set_and_verify_collection` where
509
+ * we are actually changing the NFT metadata.
510
+ */
511
+ treeDelegate: Address<TAccountTreeDelegate>;
512
+ collectionAuthority: TransactionSigner<TAccountCollectionAuthority>;
513
+ /**
514
+ * If there is no collecton authority record PDA then
515
+ * this must be the Bubblegum program address.
516
+ */
517
+ collectionAuthorityRecordPda?: Address<TAccountCollectionAuthorityRecordPda>;
518
+ collectionMint: Address<TAccountCollectionMint>;
519
+ collectionMetadata: Address<TAccountCollectionMetadata>;
520
+ editionAccount: Address<TAccountEditionAccount>;
521
+ bubblegumSigner: Address<TAccountBubblegumSigner>;
522
+ logWrapper?: Address<TAccountLogWrapper>;
523
+ compressionProgram?: Address<TAccountCompressionProgram>;
524
+ tokenMetadataProgram?: Address<TAccountTokenMetadataProgram>;
525
+ systemProgram?: Address<TAccountSystemProgram>;
526
+ root: SetAndVerifyCollectionInstructionDataArgs["root"];
527
+ dataHash: SetAndVerifyCollectionInstructionDataArgs["dataHash"];
528
+ creatorHash: SetAndVerifyCollectionInstructionDataArgs["creatorHash"];
529
+ nonce: SetAndVerifyCollectionInstructionDataArgs["nonce"];
530
+ index: SetAndVerifyCollectionInstructionDataArgs["index"];
531
+ message: SetAndVerifyCollectionInstructionDataArgs["message"];
532
+ collection: SetAndVerifyCollectionInstructionDataArgs["collection"];
533
+ }
534
+
535
+ export function getSetAndVerifyCollectionInstruction<
536
+ TAccountTreeAuthority extends string,
537
+ TAccountLeafOwner extends string,
538
+ TAccountLeafDelegate extends string,
539
+ TAccountMerkleTree extends string,
540
+ TAccountPayer extends string,
541
+ TAccountTreeDelegate extends string,
542
+ TAccountCollectionAuthority extends string,
543
+ TAccountCollectionAuthorityRecordPda extends string,
544
+ TAccountCollectionMint extends string,
545
+ TAccountCollectionMetadata extends string,
546
+ TAccountEditionAccount extends string,
547
+ TAccountBubblegumSigner extends string,
548
+ TAccountLogWrapper extends string,
549
+ TAccountCompressionProgram extends string,
550
+ TAccountTokenMetadataProgram extends string,
551
+ TAccountSystemProgram extends string,
552
+ TProgramAddress extends Address = typeof BUBBLEGUM_PROGRAM_ADDRESS,
553
+ >(
554
+ input: SetAndVerifyCollectionInput<
555
+ TAccountTreeAuthority,
556
+ TAccountLeafOwner,
557
+ TAccountLeafDelegate,
558
+ TAccountMerkleTree,
559
+ TAccountPayer,
560
+ TAccountTreeDelegate,
561
+ TAccountCollectionAuthority,
562
+ TAccountCollectionAuthorityRecordPda,
563
+ TAccountCollectionMint,
564
+ TAccountCollectionMetadata,
565
+ TAccountEditionAccount,
566
+ TAccountBubblegumSigner,
567
+ TAccountLogWrapper,
568
+ TAccountCompressionProgram,
569
+ TAccountTokenMetadataProgram,
570
+ TAccountSystemProgram
571
+ >,
572
+ config?: { programAddress?: TProgramAddress },
573
+ ): SetAndVerifyCollectionInstruction<
574
+ TProgramAddress,
575
+ TAccountTreeAuthority,
576
+ TAccountLeafOwner,
577
+ TAccountLeafDelegate,
578
+ TAccountMerkleTree,
579
+ TAccountPayer,
580
+ TAccountTreeDelegate,
581
+ TAccountCollectionAuthority,
582
+ TAccountCollectionAuthorityRecordPda,
583
+ TAccountCollectionMint,
584
+ TAccountCollectionMetadata,
585
+ TAccountEditionAccount,
586
+ TAccountBubblegumSigner,
587
+ TAccountLogWrapper,
588
+ TAccountCompressionProgram,
589
+ TAccountTokenMetadataProgram,
590
+ TAccountSystemProgram
591
+ > {
592
+ // Program address.
593
+ const programAddress = config?.programAddress ?? BUBBLEGUM_PROGRAM_ADDRESS;
594
+
595
+ // Original accounts.
596
+ const originalAccounts = {
597
+ treeAuthority: { value: input.treeAuthority ?? null, isWritable: false },
598
+ leafOwner: { value: input.leafOwner ?? null, isWritable: false },
599
+ leafDelegate: { value: input.leafDelegate ?? null, isWritable: false },
600
+ merkleTree: { value: input.merkleTree ?? null, isWritable: true },
601
+ payer: { value: input.payer ?? null, isWritable: false },
602
+ treeDelegate: { value: input.treeDelegate ?? null, isWritable: false },
603
+ collectionAuthority: {
604
+ value: input.collectionAuthority ?? null,
605
+ isWritable: false,
606
+ },
607
+ collectionAuthorityRecordPda: {
608
+ value: input.collectionAuthorityRecordPda ?? null,
609
+ isWritable: false,
610
+ },
611
+ collectionMint: { value: input.collectionMint ?? null, isWritable: false },
612
+ collectionMetadata: {
613
+ value: input.collectionMetadata ?? null,
614
+ isWritable: true,
615
+ },
616
+ editionAccount: { value: input.editionAccount ?? null, isWritable: false },
617
+ bubblegumSigner: {
618
+ value: input.bubblegumSigner ?? null,
619
+ isWritable: false,
620
+ },
621
+ logWrapper: { value: input.logWrapper ?? null, isWritable: false },
622
+ compressionProgram: {
623
+ value: input.compressionProgram ?? null,
624
+ isWritable: false,
625
+ },
626
+ tokenMetadataProgram: {
627
+ value: input.tokenMetadataProgram ?? null,
628
+ isWritable: false,
629
+ },
630
+ systemProgram: { value: input.systemProgram ?? null, isWritable: false },
631
+ };
632
+ const accounts = originalAccounts as Record<
633
+ keyof typeof originalAccounts,
634
+ ResolvedInstructionAccount
635
+ >;
636
+
637
+ // Original args.
638
+ const args = { ...input };
639
+
640
+ // Resolve default values.
641
+ if (!accounts.collectionAuthorityRecordPda.value) {
642
+ accounts.collectionAuthorityRecordPda.value = programAddress;
643
+ accounts.collectionAuthorityRecordPda.isWritable = false;
644
+ }
645
+ if (!accounts.logWrapper.value) {
646
+ accounts.logWrapper.value =
647
+ "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV" as Address<"noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV">;
648
+ }
649
+ if (!accounts.compressionProgram.value) {
650
+ accounts.compressionProgram.value =
651
+ "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK" as Address<"cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK">;
652
+ }
653
+ if (!accounts.tokenMetadataProgram.value) {
654
+ accounts.tokenMetadataProgram.value =
655
+ "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" as Address<"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s">;
656
+ }
657
+ if (!accounts.systemProgram.value) {
658
+ accounts.systemProgram.value =
659
+ "11111111111111111111111111111111" as Address<"11111111111111111111111111111111">;
660
+ }
661
+
662
+ const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
663
+ return Object.freeze({
664
+ accounts: [
665
+ getAccountMeta("treeAuthority", accounts.treeAuthority),
666
+ getAccountMeta("leafOwner", accounts.leafOwner),
667
+ getAccountMeta("leafDelegate", accounts.leafDelegate),
668
+ getAccountMeta("merkleTree", accounts.merkleTree),
669
+ getAccountMeta("payer", accounts.payer),
670
+ getAccountMeta("treeDelegate", accounts.treeDelegate),
671
+ getAccountMeta("collectionAuthority", accounts.collectionAuthority),
672
+ getAccountMeta(
673
+ "collectionAuthorityRecordPda",
674
+ accounts.collectionAuthorityRecordPda,
675
+ ),
676
+ getAccountMeta("collectionMint", accounts.collectionMint),
677
+ getAccountMeta("collectionMetadata", accounts.collectionMetadata),
678
+ getAccountMeta("editionAccount", accounts.editionAccount),
679
+ getAccountMeta("bubblegumSigner", accounts.bubblegumSigner),
680
+ getAccountMeta("logWrapper", accounts.logWrapper),
681
+ getAccountMeta("compressionProgram", accounts.compressionProgram),
682
+ getAccountMeta("tokenMetadataProgram", accounts.tokenMetadataProgram),
683
+ getAccountMeta("systemProgram", accounts.systemProgram),
684
+ ],
685
+ data: getSetAndVerifyCollectionInstructionDataEncoder().encode(
686
+ args as SetAndVerifyCollectionInstructionDataArgs,
687
+ ),
688
+ programAddress,
689
+ } as SetAndVerifyCollectionInstruction<
690
+ TProgramAddress,
691
+ TAccountTreeAuthority,
692
+ TAccountLeafOwner,
693
+ TAccountLeafDelegate,
694
+ TAccountMerkleTree,
695
+ TAccountPayer,
696
+ TAccountTreeDelegate,
697
+ TAccountCollectionAuthority,
698
+ TAccountCollectionAuthorityRecordPda,
699
+ TAccountCollectionMint,
700
+ TAccountCollectionMetadata,
701
+ TAccountEditionAccount,
702
+ TAccountBubblegumSigner,
703
+ TAccountLogWrapper,
704
+ TAccountCompressionProgram,
705
+ TAccountTokenMetadataProgram,
706
+ TAccountSystemProgram
707
+ >);
708
+ }
709
+
710
+ export interface ParsedSetAndVerifyCollectionInstruction<
711
+ TProgram extends string = typeof BUBBLEGUM_PROGRAM_ADDRESS,
712
+ TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
713
+ > {
714
+ programAddress: Address<TProgram>;
715
+ accounts: {
716
+ treeAuthority: TAccountMetas[0];
717
+ leafOwner: TAccountMetas[1];
718
+ leafDelegate: TAccountMetas[2];
719
+ merkleTree: TAccountMetas[3];
720
+ payer: TAccountMetas[4];
721
+ /**
722
+ * This account is checked to be a signer in
723
+ * the case of `set_and_verify_collection` where
724
+ * we are actually changing the NFT metadata.
725
+ */
726
+ treeDelegate: TAccountMetas[5];
727
+ collectionAuthority: TAccountMetas[6];
728
+ /**
729
+ * If there is no collecton authority record PDA then
730
+ * this must be the Bubblegum program address.
731
+ */
732
+ collectionAuthorityRecordPda: TAccountMetas[7];
733
+ collectionMint: TAccountMetas[8];
734
+ collectionMetadata: TAccountMetas[9];
735
+ editionAccount: TAccountMetas[10];
736
+ bubblegumSigner: TAccountMetas[11];
737
+ logWrapper: TAccountMetas[12];
738
+ compressionProgram: TAccountMetas[13];
739
+ tokenMetadataProgram: TAccountMetas[14];
740
+ systemProgram: TAccountMetas[15];
741
+ };
742
+ data: SetAndVerifyCollectionInstructionData;
743
+ }
744
+
745
+ export function parseSetAndVerifyCollectionInstruction<
746
+ TProgram extends string,
747
+ TAccountMetas extends readonly AccountMeta[],
748
+ >(
749
+ instruction: Instruction<TProgram> &
750
+ InstructionWithAccounts<TAccountMetas> &
751
+ InstructionWithData<ReadonlyUint8Array>,
752
+ ): ParsedSetAndVerifyCollectionInstruction<TProgram, TAccountMetas> {
753
+ if (instruction.accounts.length < 16) {
754
+ throw new SolanaError(
755
+ SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,
756
+ {
757
+ actualAccountMetas: instruction.accounts.length,
758
+ expectedAccountMetas: 16,
759
+ },
760
+ );
761
+ }
762
+ let accountIndex = 0;
763
+ const getNextAccount = () => {
764
+ const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
765
+ accountIndex += 1;
766
+ return accountMeta;
767
+ };
768
+ return {
769
+ programAddress: instruction.programAddress,
770
+ accounts: {
771
+ treeAuthority: getNextAccount(),
772
+ leafOwner: getNextAccount(),
773
+ leafDelegate: getNextAccount(),
774
+ merkleTree: getNextAccount(),
775
+ payer: getNextAccount(),
776
+ treeDelegate: getNextAccount(),
777
+ collectionAuthority: getNextAccount(),
778
+ collectionAuthorityRecordPda: getNextAccount(),
779
+ collectionMint: getNextAccount(),
780
+ collectionMetadata: getNextAccount(),
781
+ editionAccount: getNextAccount(),
782
+ bubblegumSigner: getNextAccount(),
783
+ logWrapper: getNextAccount(),
784
+ compressionProgram: getNextAccount(),
785
+ tokenMetadataProgram: getNextAccount(),
786
+ systemProgram: getNextAccount(),
787
+ },
788
+ data: getSetAndVerifyCollectionInstructionDataDecoder().decode(
789
+ instruction.data,
790
+ ),
791
+ };
792
+ }