@hashgraphonline/standards-sdk
Version:
The Hashgraph Online Standards SDK provides a complete implementation of the Hashgraph Consensus Standards (HCS), giving developers all the tools needed to build applications on Hedera.
505 lines (504 loc) • 16 kB
JavaScript
import { proto } from "@hashgraph/proto";
import { AccountId, Long, TokenId } from "@hashgraph/sdk";
import { parseKey } from "./standards-sdk.es44.js";
import { Buffer } from "buffer";
class HTSParser {
static parseTokenCreate(body) {
if (!body) return void 0;
const data = {};
if (body.name) {
data.tokenName = body.name;
}
if (body.symbol) {
data.tokenSymbol = body.symbol;
}
if (body.treasury) {
data.treasuryAccountId = new AccountId(
body.treasury.shardNum ?? 0,
body.treasury.realmNum ?? 0,
body.treasury.accountNum ?? 0
).toString();
}
if (body.initialSupply) {
data.initialSupply = Long.fromValue(body.initialSupply).toString();
}
if (body.decimals !== void 0 && body.decimals !== null) {
data.decimals = Long.fromValue(body.decimals).toNumber();
}
if (body.maxSupply) {
data.maxSupply = Long.fromValue(body.maxSupply).toString();
}
if (body.memo) {
data.memo = body.memo;
}
if (body.tokenType !== null && body.tokenType !== void 0) {
data.tokenType = proto.TokenType[body.tokenType];
}
if (body.supplyType !== null && body.supplyType !== void 0) {
data.supplyType = proto.TokenSupplyType[body.supplyType];
}
data.adminKey = parseKey(body.adminKey);
data.kycKey = parseKey(body.kycKey);
data.freezeKey = parseKey(body.freezeKey);
data.wipeKey = parseKey(body.wipeKey);
data.supplyKey = parseKey(body.supplyKey);
data.feeScheduleKey = parseKey(body.feeScheduleKey);
data.pauseKey = parseKey(body.pauseKey);
if (body.autoRenewAccount) {
data.autoRenewAccount = new AccountId(
body.autoRenewAccount.shardNum ?? 0,
body.autoRenewAccount.realmNum ?? 0,
body.autoRenewAccount.accountNum ?? 0
).toString();
}
if (body.autoRenewPeriod?.seconds) {
data.autoRenewPeriod = Long.fromValue(
body.autoRenewPeriod.seconds
).toString();
}
if (body.customFees && body.customFees.length > 0) {
data.customFees = body.customFees.map((fee) => {
const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
fee.feeCollectorAccountId.shardNum ?? 0,
fee.feeCollectorAccountId.realmNum ?? 0,
fee.feeCollectorAccountId.accountNum ?? 0
).toString() : "Not Set";
const commonFeeData = {
feeCollectorAccountId,
allCollectorsAreExempt: fee.allCollectorsAreExempt || false
};
if (fee.fixedFee) {
return {
...commonFeeData,
feeType: "FIXED_FEE",
fixedFee: {
amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
fee.fixedFee.denominatingTokenId.shardNum ?? 0,
fee.fixedFee.denominatingTokenId.realmNum ?? 0,
fee.fixedFee.denominatingTokenId.tokenNum ?? 0
).toString() : void 0
}
};
} else if (fee.fractionalFee) {
return {
...commonFeeData,
feeType: "FRACTIONAL_FEE",
fractionalFee: {
numerator: Long.fromValue(
fee.fractionalFee.fractionalAmount?.numerator || 0
).toString(),
denominator: Long.fromValue(
fee.fractionalFee.fractionalAmount?.denominator || 1
).toString(),
minimumAmount: Long.fromValue(
fee.fractionalFee.minimumAmount || 0
).toString(),
maximumAmount: Long.fromValue(
fee.fractionalFee.maximumAmount || 0
).toString(),
netOfTransfers: fee.fractionalFee.netOfTransfers || false
}
};
} else if (fee.royaltyFee) {
let fallbackFeeData = void 0;
if (fee.royaltyFee.fallbackFee) {
fallbackFeeData = {
amount: Long.fromValue(
fee.royaltyFee.fallbackFee.amount || 0
).toString(),
denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
).toString() : void 0
};
}
return {
...commonFeeData,
feeType: "ROYALTY_FEE",
royaltyFee: {
numerator: Long.fromValue(
fee.royaltyFee.exchangeValueFraction?.numerator || 0
).toString(),
denominator: Long.fromValue(
fee.royaltyFee.exchangeValueFraction?.denominator || 1
).toString(),
fallbackFee: fallbackFeeData
}
};
}
return {
...commonFeeData,
feeType: "FIXED_FEE",
fixedFee: { amount: "0" }
};
});
}
return data;
}
static parseTokenMint(body) {
if (!body || !body.token || body.amount === null || body.amount === void 0) {
return void 0;
}
const data = {
tokenId: new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString(),
amount: Long.fromValue(body.amount).toNumber()
};
if (body.metadata && body.metadata.length > 0) {
data.metadata = body.metadata.map(
(meta) => Buffer.from(meta).toString("base64")
);
}
return data;
}
static parseTokenBurn(body) {
if (!body || !body.token || body.amount === null || body.amount === void 0) {
return void 0;
}
const data = {
tokenId: new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString(),
amount: Long.fromValue(body.amount).toNumber()
};
if (body.serialNumbers && body.serialNumbers.length > 0) {
data.serialNumbers = body.serialNumbers.map(
(sn) => Long.fromValue(sn).toNumber()
);
}
return data;
}
static parseTokenUpdate(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.name) {
data.name = body.name;
}
if (body.symbol) {
data.symbol = body.symbol;
}
if (body.treasury) {
data.treasuryAccountId = new AccountId(
body.treasury.shardNum ?? 0,
body.treasury.realmNum ?? 0,
body.treasury.accountNum ?? 0
).toString();
}
data.adminKey = parseKey(body.adminKey);
data.kycKey = parseKey(body.kycKey);
data.freezeKey = parseKey(body.freezeKey);
data.wipeKey = parseKey(body.wipeKey);
data.supplyKey = parseKey(body.supplyKey);
data.feeScheduleKey = parseKey(body.feeScheduleKey);
data.pauseKey = parseKey(body.pauseKey);
if (body.autoRenewAccount) {
data.autoRenewAccountId = new AccountId(
body.autoRenewAccount.shardNum ?? 0,
body.autoRenewAccount.realmNum ?? 0,
body.autoRenewAccount.accountNum ?? 0
).toString();
}
if (body.autoRenewPeriod?.seconds) {
data.autoRenewPeriod = Long.fromValue(
body.autoRenewPeriod.seconds
).toString();
}
if (body.memo?.value !== void 0) {
data.memo = body.memo.value;
}
if (body.expiry?.seconds) {
data.expiry = `${Long.fromValue(body.expiry.seconds).toString()}.${body.expiry.nanos}`;
}
return data;
}
static parseTokenFeeScheduleUpdate(body) {
if (!body) return void 0;
const data = {};
if (body.tokenId) {
data.tokenId = new TokenId(
body.tokenId.shardNum ?? 0,
body.tokenId.realmNum ?? 0,
body.tokenId.tokenNum ?? 0
).toString();
}
if (body.customFees && body.customFees.length > 0) {
data.customFees = body.customFees.map((fee) => {
const feeCollectorAccountId = fee.feeCollectorAccountId ? new AccountId(
fee.feeCollectorAccountId.shardNum ?? 0,
fee.feeCollectorAccountId.realmNum ?? 0,
fee.feeCollectorAccountId.accountNum ?? 0
).toString() : "Not Set";
const commonFeeData = {
feeCollectorAccountId,
allCollectorsAreExempt: fee.allCollectorsAreExempt || false
};
if (fee.fixedFee) {
return {
...commonFeeData,
feeType: "FIXED_FEE",
fixedFee: {
amount: Long.fromValue(fee.fixedFee.amount || 0).toString(),
denominatingTokenId: fee.fixedFee.denominatingTokenId ? new TokenId(
fee.fixedFee.denominatingTokenId.shardNum ?? 0,
fee.fixedFee.denominatingTokenId.realmNum ?? 0,
fee.fixedFee.denominatingTokenId.tokenNum ?? 0
).toString() : void 0
}
};
} else if (fee.fractionalFee) {
return {
...commonFeeData,
feeType: "FRACTIONAL_FEE",
fractionalFee: {
numerator: Long.fromValue(
fee.fractionalFee.fractionalAmount?.numerator || 0
).toString(),
denominator: Long.fromValue(
fee.fractionalFee.fractionalAmount?.denominator || 1
).toString(),
minimumAmount: Long.fromValue(
fee.fractionalFee.minimumAmount || 0
).toString(),
maximumAmount: Long.fromValue(
fee.fractionalFee.maximumAmount || 0
).toString(),
netOfTransfers: fee.fractionalFee.netOfTransfers || false
}
};
} else if (fee.royaltyFee) {
let fallbackFeeData = void 0;
if (fee.royaltyFee.fallbackFee) {
fallbackFeeData = {
amount: Long.fromValue(
fee.royaltyFee.fallbackFee.amount || 0
).toString(),
denominatingTokenId: fee.royaltyFee.fallbackFee.denominatingTokenId ? new TokenId(
fee.royaltyFee.fallbackFee.denominatingTokenId.shardNum ?? 0,
fee.royaltyFee.fallbackFee.denominatingTokenId.realmNum ?? 0,
fee.royaltyFee.fallbackFee.denominatingTokenId.tokenNum ?? 0
).toString() : void 0
};
}
return {
...commonFeeData,
feeType: "ROYALTY_FEE",
royaltyFee: {
numerator: Long.fromValue(
fee.royaltyFee.exchangeValueFraction?.numerator || 0
).toString(),
denominator: Long.fromValue(
fee.royaltyFee.exchangeValueFraction?.denominator || 1
).toString(),
fallbackFee: fallbackFeeData
}
};
}
return {
...commonFeeData,
feeType: "FIXED_FEE",
fixedFee: { amount: "0" }
};
});
}
return data;
}
static parseTokenFreeze(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
return data;
}
static parseTokenUnfreeze(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
return data;
}
static parseTokenGrantKyc(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
return data;
}
static parseTokenRevokeKyc(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
return data;
}
static parseTokenPause(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
return data;
}
static parseTokenUnpause(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
return data;
}
static parseTokenWipeAccount(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
if (body.serialNumbers && body.serialNumbers.length > 0) {
data.serialNumbers = body.serialNumbers.map(
(sn) => Long.fromValue(sn).toString()
);
}
if (body.amount) {
data.amount = Long.fromValue(body.amount).toString();
}
return data;
}
static parseTokenDelete(body) {
if (!body) return void 0;
const data = {};
if (body.token) {
data.tokenId = new TokenId(
body.token.shardNum ?? 0,
body.token.realmNum ?? 0,
body.token.tokenNum ?? 0
).toString();
}
return data;
}
static parseTokenAssociate(body) {
if (!body) return void 0;
const data = {};
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
if (body.tokens && body.tokens.length > 0) {
data.tokenIds = body.tokens.map(
(t) => new TokenId(
t.shardNum ?? 0,
t.realmNum ?? 0,
t.tokenNum ?? 0
).toString()
);
}
return data;
}
static parseTokenDissociate(body) {
if (!body) return void 0;
const data = {};
if (body.account) {
data.accountId = new AccountId(
body.account.shardNum ?? 0,
body.account.realmNum ?? 0,
body.account.accountNum ?? 0
).toString();
}
if (body.tokens && body.tokens.length > 0) {
data.tokenIds = body.tokens.map(
(t) => new TokenId(
t.shardNum ?? 0,
t.realmNum ?? 0,
t.tokenNum ?? 0
).toString()
);
}
return data;
}
}
export {
HTSParser
};
//# sourceMappingURL=standards-sdk.es34.js.map