UNPKG

tronweb

Version:

JavaScript SDK that encapsulates the TRON HTTP API

240 lines 11.1 kB
"use strict"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck Object.defineProperty(exports, "__esModule", { value: true }); exports.deserializeTransaction = void 0; require("../protocol/core/Tron_pb.cjs"); const { Transaction } = globalThis.TronWebProto; require("../protocol/core/contract/balance_contract_pb.cjs"); const { TransferContract, WithdrawBalanceContract, WitnessCreateContract, FreezeBalanceV2Contract, UnfreezeBalanceV2Contract, CancelAllUnfreezeV2Contract, WithdrawExpireUnfreezeContract, DelegateResourceContract, UnDelegateResourceContract, } = globalThis.TronWebProto; require("../protocol/core/contract/smart_contract_pb.cjs"); const { TriggerSmartContract } = globalThis.TronWebProto; const bytes_js_1 = require("./bytes.js"); const code_js_1 = require("./code.js"); const validations_js_1 = require("./validations.js"); const ContractTypeMap = { '0': 'AccountCreateContract', '1': 'TransferContract', '2': 'TransferAssetContract', '4': 'VoteWitnessContract', '5': 'WitnessCreateContract', '6': 'AssetIssueContract', '9': 'ParticipateAssetIssueContract', '10': 'AccountUpdateContract', '11': 'FreezeBalanceContract', '12': 'UnfreezeBalanceContract', '13': 'WithdrawBalanceContract', '15': 'UpdateAssetContract', '16': 'ProposalCreateContract', '17': 'ProposalApproveContract', '18': 'ProposalDeleteContract', '19': 'SetAccountIdContract', '30': 'CreateSmartContract', '31': 'TriggerSmartContract', '33': 'UpdateSettingContract', '41': 'ExchangeCreateContract', '42': 'ExchangeInjectContract', '43': 'ExchangeWithdrawContract', '44': 'ExchangeTransactionContract', '45': 'UpdateEnergyLimitContract', '46': 'AccountPermissionUpdateContract', '48': 'ClearABIContract', '49': 'UpdateBrokerageContract', '54': 'FreezeBalanceV2Contract', '55': 'UnfreezeBalanceV2Contract', '56': 'WithdrawExpireUnfreezeContract', '57': 'DelegateResourceContract', '58': 'UnDelegateResourceContract', '59': 'CancelAllUnfreezeV2Contract', }; const getAuthsList = (pb) => { const authsList = pb.getAuthsList(); return authsList.map((authPb) => { const permission_name = (0, bytes_js_1.byteArray2hexStr)(authPb.getPermissionName_asU8()); const accountPb = authPb.getAccount(); const account = { name: (0, bytes_js_1.byteArray2hexStr)(accountPb.getName_asU8()), address: (0, bytes_js_1.byteArray2hexStr)(accountPb.getAddress_asU8()), }; return { permission_name, account, }; }); }; const DCommonData = (type, rawDataHex) => { const pb = Transaction.raw.deserializeBinary((0, code_js_1.hexStr2byteArray)(rawDataHex)); const contract = pb.getContractList()[0]; const valuePb = contract.getParameter().getValue(); const contractType = ContractTypeMap[contract.getType()]; if (type !== contractType) { throw new Error(`type ${type} dismatches with rawDataHex type ${contractType}`); } return [ { contract: [ { parameter: { value: {}, type_url: contract.getParameter().getTypeUrl(), }, type, Permission_id: contract.getPermissionId(), }, ], data: (0, bytes_js_1.byteArray2hexStr)(pb.getData()), fee_limit: pb.getFeeLimit(), ref_block_bytes: (0, bytes_js_1.byteArray2hexStr)(pb.getRefBlockBytes_asU8()), ref_block_hash: (0, bytes_js_1.byteArray2hexStr)(pb.getRefBlockHash_asU8()), expiration: pb.getExpiration(), timestamp: pb.getTimestamp(), scripts: (0, bytes_js_1.byteArray2hexStr)(pb.getScripts_asU8()), auths: getAuthsList(pb), }, valuePb, ]; }; const DTriggerSmartContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const triggerSmartContract = TriggerSmartContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(triggerSmartContract.getOwnerAddress_asU8()), contract_address: (0, bytes_js_1.byteArray2hexStr)(triggerSmartContract.getContractAddress_asU8()), call_value: triggerSmartContract.getCallValue(), data: (0, bytes_js_1.byteArray2hexStr)(triggerSmartContract.getData_asU8()), call_token_value: triggerSmartContract.getCallTokenValue(), token_id: triggerSmartContract.getTokenId(), }; return commonData; }; const getResourceName = (type) => { switch (type) { case 0: return 'BANDWIDTH'; case 1: return 'ENERGY'; default: return 'BANDWIDTH'; } }; const DFreezeBalanceV2Contract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const freezeBalanceV2Contract = FreezeBalanceV2Contract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(freezeBalanceV2Contract.getOwnerAddress_asU8()), frozen_balance: freezeBalanceV2Contract.getFrozenBalance(), resource: getResourceName(freezeBalanceV2Contract.getResource()), }; return commonData; }; const DUnfreezeBalanceV2Contract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const unfreezeBalanceV2Contract = UnfreezeBalanceV2Contract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(unfreezeBalanceV2Contract.getOwnerAddress_asU8()), unfreeze_balance: unfreezeBalanceV2Contract.getUnfreezeBalance(), resource: getResourceName(unfreezeBalanceV2Contract.getResource()), }; return commonData; }; const DCancelAllUnfreezeV2Contract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const cancelAllUnfreezeV2Contract = CancelAllUnfreezeV2Contract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(cancelAllUnfreezeV2Contract.getOwnerAddress_asU8()), }; return commonData; }; const DDelegateResourceContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const delegateResourceContract = DelegateResourceContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(delegateResourceContract.getOwnerAddress_asU8()), balance: delegateResourceContract.getBalance(), lock: delegateResourceContract.getLock(), lock_period: delegateResourceContract.getLockPeriod(), receiver_address: (0, bytes_js_1.byteArray2hexStr)(delegateResourceContract.getReceiverAddress_asU8()), resource: getResourceName(delegateResourceContract.getResource()), }; return commonData; }; const DUnDelegateResourceContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const undelegateResourceContract = UnDelegateResourceContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(undelegateResourceContract.getOwnerAddress_asU8()), balance: undelegateResourceContract.getBalance(), receiver_address: (0, bytes_js_1.byteArray2hexStr)(undelegateResourceContract.getReceiverAddress_asU8()), resource: getResourceName(undelegateResourceContract.getResource()), }; return commonData; }; const DWithdrawExpireUnfreezeContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const withdrawExpireUnfreezeContract = WithdrawExpireUnfreezeContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(withdrawExpireUnfreezeContract.getOwnerAddress_asU8()), }; return commonData; }; const DTransferContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const transferContract = TransferContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(transferContract.getOwnerAddress_asU8()), to_address: (0, bytes_js_1.byteArray2hexStr)(transferContract.getToAddress_asU8()), amount: transferContract.getAmount(), }; return commonData; }; const DWithdrawBalanceContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const withdrawBalanceContract = WithdrawBalanceContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(withdrawBalanceContract.getOwnerAddress_asU8()), }; return commonData; }; const DWitnessCreateContract = (type, rawDataHex) => { const [commonData, valuePb] = DCommonData(type, rawDataHex); const witnessCreateContract = WitnessCreateContract.deserializeBinary(valuePb); commonData.contract[0].parameter.value = { owner_address: (0, bytes_js_1.byteArray2hexStr)(witnessCreateContract.getOwnerAddress_asU8()), url: String.fromCharCode(...witnessCreateContract.getUrl_asU8()), }; return commonData; }; const deserializeTransaction = (type, rawDataHex) => { if (!rawDataHex) { throw new Error('rawDataHex cannot be empty'); } if (!(0, validations_js_1.isHex)(rawDataHex)) { throw new Error('rawDataHex is not a valid hex string'); } switch (type) { case 'TriggerSmartContract': return DTriggerSmartContract(type, rawDataHex); case 'FreezeBalanceV2Contract': return DFreezeBalanceV2Contract(type, rawDataHex); case 'UnfreezeBalanceV2Contract': return DUnfreezeBalanceV2Contract(type, rawDataHex); case 'CancelAllUnfreezeV2Contract': return DCancelAllUnfreezeV2Contract(type, rawDataHex); case 'DelegateResourceContract': return DDelegateResourceContract(type, rawDataHex); case 'UnDelegateResourceContract': return DUnDelegateResourceContract(type, rawDataHex); case 'WithdrawExpireUnfreezeContract': return DWithdrawExpireUnfreezeContract(type, rawDataHex); case 'TransferContract': return DTransferContract(type, rawDataHex); case 'WithdrawBalanceContract': return DWithdrawBalanceContract(type, rawDataHex); case 'WitnessCreateContract': return DWitnessCreateContract(type, rawDataHex); default: throw new Error(`trasaction ${type} not supported`); } }; exports.deserializeTransaction = deserializeTransaction; //# sourceMappingURL=deserializeTx.js.map