@protokol/nft-exchange-crypto
Version:
Transaction Builders For Exchange NFT Transaction Types
114 lines • 4.18 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NFTAuctionTransaction = void 0;
const crypto_1 = require("@arkecosystem/crypto");
const core_nft_crypto_1 = require("@protokol/core-nft-crypto");
const utils_1 = require("@protokol/utils");
const bytebuffer_1 = __importDefault(require("bytebuffer"));
const defaults_1 = require("../defaults");
const enums_1 = require("../enums");
class NFTAuctionTransaction extends core_nft_crypto_1.AbstractNFTTransaction {
static getAssetSchema() {
return {
type: "object",
required: ["nftAuction"],
properties: {
nftAuction: {
type: "object",
required: ["nftIds", "startAmount", "expiration"],
properties: {
nftIds: {
type: "array",
minItems: defaults_1.defaults.nftAuction.minItems,
maxItems: defaults_1.defaults.nftAuction.maxItems,
uniqueItems: true,
items: {
$ref: "transactionId",
},
},
startAmount: {
bignumber: { minimum: 1 },
},
expiration: {
type: "object",
required: ["blockHeight"],
properties: {
blockHeight: {
type: "integer",
minimum: 1,
},
},
},
},
},
},
};
}
serialize() {
var _a;
const { data } = this;
utils_1.Asserts.assert.defined((_a = data.asset) === null || _a === void 0 ? void 0 : _a.nftAuction);
const nftAuctionAsset = data.asset.nftAuction;
const buffer = new bytebuffer_1.default(32 * nftAuctionAsset.nftIds.length + 8 + 8, true);
buffer.writeByte(nftAuctionAsset.nftIds.length);
for (const nftId of nftAuctionAsset.nftIds) {
buffer.append(nftId, "hex");
}
buffer.writeUint64(nftAuctionAsset.startAmount.toString());
buffer.writeUint32(nftAuctionAsset.expiration.blockHeight);
return buffer;
}
deserialize(buf) {
const { data } = this;
const numberOfNfts = buf.readUint8();
const nftIds = [];
for (let i = 0; i < numberOfNfts; i++) {
nftIds.push(buf.readBytes(32).toString("hex"));
}
const nftAuction = {
nftIds,
startAmount: crypto_1.Utils.BigNumber.make(buf.readUint64().toString()),
expiration: {
blockHeight: buf.readUint32(),
},
};
data.asset = {
nftAuction,
};
}
}
exports.NFTAuctionTransaction = NFTAuctionTransaction;
Object.defineProperty(NFTAuctionTransaction, "typeGroup", {
enumerable: true,
configurable: true,
writable: true,
value: enums_1.NFTExchangeTransactionsTypeGroup
});
Object.defineProperty(NFTAuctionTransaction, "type", {
enumerable: true,
configurable: true,
writable: true,
value: enums_1.NFTTransactionTypes.NFTAuction
});
Object.defineProperty(NFTAuctionTransaction, "key", {
enumerable: true,
configurable: true,
writable: true,
value: "NFTAuction"
});
Object.defineProperty(NFTAuctionTransaction, "version", {
enumerable: true,
configurable: true,
writable: true,
value: enums_1.NFTExchangeTransactionVersion
});
Object.defineProperty(NFTAuctionTransaction, "defaultStaticFee", {
enumerable: true,
configurable: true,
writable: true,
value: crypto_1.Utils.BigNumber.make(enums_1.NFTStaticFees.NFTAuction)
});
//# sourceMappingURL=nft-auction.js.map