UNPKG

@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
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