UNPKG

@renec-foundation/mpl-token-metadata

Version:

MPL Token Metadata JavaScript API.

94 lines 3.64 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MasterEdition = exports.MasterEditionV2Data = exports.MasterEditionV1Data = void 0; const mpl_core_1 = require("@renec-foundation/mpl-core"); const bs58_1 = __importDefault(require("bs58")); const Edition_1 = require("./Edition"); const MetadataProgram_1 = require("../MetadataProgram"); const buffer_1 = require("buffer"); const web3_js_1 = require("@solana/web3.js"); const constants_1 = require("./constants"); class MasterEditionV1Data extends mpl_core_1.Borsh.Data { constructor(args) { super(args); this.key = constants_1.MetadataKey.MasterEditionV1; } } exports.MasterEditionV1Data = MasterEditionV1Data; MasterEditionV1Data.SCHEMA = MasterEditionV1Data.struct([ ['key', 'u8'], ['supply', 'u64'], ['maxSupply', { kind: 'option', type: 'u64' }], ['printingMint', 'pubkeyAsString'], ['oneTimePrintingAuthorizationMint', 'pubkeyAsString'], ]); class MasterEditionV2Data extends mpl_core_1.Borsh.Data { constructor(args) { super(args); this.key = constants_1.MetadataKey.MasterEditionV2; } } exports.MasterEditionV2Data = MasterEditionV2Data; MasterEditionV2Data.SCHEMA = MasterEditionV2Data.struct([ ['key', 'u8'], ['supply', 'u64'], ['maxSupply', { kind: 'option', type: 'u64' }], ]); class MasterEdition extends mpl_core_1.Account { constructor(key, info) { super(key, info); if (!this.assertOwner(MetadataProgram_1.MetadataProgram.PUBKEY)) { throw (0, mpl_core_1.ERROR_INVALID_OWNER)(); } if (MasterEdition.isMasterEditionV1(this.info.data)) { this.data = MasterEditionV1Data.deserialize(this.info.data); } else if (MasterEdition.isMasterEditionV2(this.info.data)) { this.data = MasterEditionV2Data.deserialize(this.info.data); } else { throw (0, mpl_core_1.ERROR_INVALID_ACCOUNT_DATA)(); } } static async getPDA(mint) { return MetadataProgram_1.MetadataProgram.findProgramAddress([ buffer_1.Buffer.from(MetadataProgram_1.MetadataProgram.PREFIX), MetadataProgram_1.MetadataProgram.PUBKEY.toBuffer(), new web3_js_1.PublicKey(mint).toBuffer(), buffer_1.Buffer.from(MasterEdition.EDITION_PREFIX), ]); } static isCompatible(data) { return MasterEdition.isMasterEditionV1(data) || MasterEdition.isMasterEditionV2(data); } static isMasterEditionV1(data) { return data[0] === constants_1.MetadataKey.MasterEditionV1; } static isMasterEditionV2(data) { return data[0] === constants_1.MetadataKey.MasterEditionV2; } async getEditions(connection) { return (await MetadataProgram_1.MetadataProgram.getProgramAccounts(connection, { filters: [ { memcmp: { offset: 0, bytes: bs58_1.default.encode(buffer_1.Buffer.from([constants_1.MetadataKey.EditionV1])), }, }, { memcmp: { offset: 1, bytes: this.pubkey.toBase58(), }, }, ], })).map((account) => Edition_1.Edition.from(account)); } } exports.MasterEdition = MasterEdition; MasterEdition.EDITION_PREFIX = 'edition'; //# sourceMappingURL=MasterEdition.js.map