@hashgraphonline/standards-sdk 0.0.182 → 0.0.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hcs-12/assembly/assembly-engine.d.ts +2 -2
- package/dist/cjs/hcs-12/assembly/assembly-engine.d.ts.map +1 -1
- package/dist/cjs/hcs-12/base-client.d.ts +3 -3
- package/dist/cjs/hcs-12/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-12/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/action-registry.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/action-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/assembly-registry.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/assembly-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/base-registry.d.ts +3 -3
- package/dist/cjs/hcs-12/registries/base-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/block-loader.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/block-loader.d.ts.map +1 -1
- package/dist/cjs/hcs-12/registries/hashlinks-registry.d.ts +2 -2
- package/dist/cjs/hcs-12/registries/hashlinks-registry.d.ts.map +1 -1
- package/dist/cjs/hcs-12/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-12/security/permission-system.d.ts +5 -5
- package/dist/cjs/hcs-12/security/permission-system.d.ts.map +1 -1
- package/dist/cjs/hcs-12/validation/wasm-validator.d.ts +4 -4
- package/dist/cjs/hcs-12/validation/wasm-validator.d.ts.map +1 -1
- package/dist/cjs/{index-5G8lx2OC.cjs → index-Bw4Oab1n.cjs} +21 -21
- package/dist/cjs/{index-5G8lx2OC.cjs.map → index-Bw4Oab1n.cjs.map} +1 -1
- package/dist/cjs/{index-DNOBUKZd-ByWVn3_3.cjs → index-DNOBUKZd-Dr1ocWcA.cjs} +2 -2
- package/dist/cjs/{index-DNOBUKZd-ByWVn3_3.cjs.map → index-DNOBUKZd-Dr1ocWcA.cjs.map} +1 -1
- package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +1 -1
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-BcMEbzeg.cjs → standards-sdk.es47-LpJXpYet-BnuWNzh2.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-BcMEbzeg.cjs.map → standards-sdk.es47-LpJXpYet-BnuWNzh2.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-DeVBWhj9.cjs → standards-sdk.es48-PT6ZHlCU-vjsmk9LW.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-DeVBWhj9.cjs.map → standards-sdk.es48-PT6ZHlCU-vjsmk9LW.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-C2EmnXa-.cjs → standards-sdk.es49-BoFc-ELK-FTU4u19G.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-C2EmnXa-.cjs.map → standards-sdk.es49-BoFc-ELK-FTU4u19G.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-2L3nQXPh.cjs → standards-sdk.es50-miBtNmtl-WpmGw_oZ.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-2L3nQXPh.cjs.map → standards-sdk.es50-miBtNmtl-WpmGw_oZ.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-D0SR8-Nc.cjs → standards-sdk.es51-rS2UvvV5-BQccIjC7.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-D0SR8-Nc.cjs.map → standards-sdk.es51-rS2UvvV5-BQccIjC7.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-DgGZRneG.cjs → standards-sdk.es52-D-lvSMBY-dV3DzoSL.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-DgGZRneG.cjs.map → standards-sdk.es52-D-lvSMBY-dV3DzoSL.cjs.map} +1 -1
- package/dist/es/hcs-12/assembly/assembly-engine.d.ts +2 -2
- package/dist/es/hcs-12/assembly/assembly-engine.d.ts.map +1 -1
- package/dist/es/hcs-12/base-client.d.ts +3 -3
- package/dist/es/hcs-12/base-client.d.ts.map +1 -1
- package/dist/es/hcs-12/browser.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/action-registry.d.ts +2 -2
- package/dist/es/hcs-12/registries/action-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/assembly-registry.d.ts +2 -2
- package/dist/es/hcs-12/registries/assembly-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/base-registry.d.ts +3 -3
- package/dist/es/hcs-12/registries/base-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/block-loader.d.ts +2 -2
- package/dist/es/hcs-12/registries/block-loader.d.ts.map +1 -1
- package/dist/es/hcs-12/registries/hashlinks-registry.d.ts +2 -2
- package/dist/es/hcs-12/registries/hashlinks-registry.d.ts.map +1 -1
- package/dist/es/hcs-12/sdk.d.ts.map +1 -1
- package/dist/es/hcs-12/security/permission-system.d.ts +5 -5
- package/dist/es/hcs-12/security/permission-system.d.ts.map +1 -1
- package/dist/es/hcs-12/validation/wasm-validator.d.ts +4 -4
- package/dist/es/hcs-12/validation/wasm-validator.d.ts.map +1 -1
- package/dist/es/inscribe/inscriber.d.ts.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js.map +1 -1
- package/dist/es/standards-sdk.es25.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +0 -2
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +0 -2
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es52.js +1 -1
- package/dist/es/standards-sdk.es59.js +6 -6
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +35 -7
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +5 -5
- package/dist/es/standards-sdk.es74.js +2 -204
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +2 -172
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +139 -289
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +274 -298
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +262 -369
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +316 -194
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +328 -303
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +302 -72
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +76 -2
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +204 -2
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es80.js","sources":["../../src/utils/transaction-type-registries.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\n\n/**\n * Registry for mapping protobuf transaction body fields to transaction type strings\n * This eliminates the massive if-else chain in detectTransactionTypeFromBody\n */\nexport const protoFieldToTypeRegistry: Partial<\n Record<\n keyof proto.TransactionBody,\n { type: string; humanReadableType: string }\n >\n> = {\n tokenCreation: { type: 'TOKENCREATE', humanReadableType: 'Token Creation' },\n tokenAirdrop: { type: 'TOKENAIRDROP', humanReadableType: 'Token Airdrop' },\n tokenMint: { type: 'TOKENMINT', humanReadableType: 'Token Mint' },\n tokenBurn: { type: 'TOKENBURN', humanReadableType: 'Token Burn' },\n tokenUpdate: { type: 'TOKENUPDATE', humanReadableType: 'Token Update' },\n tokenDeletion: { type: 'TOKENDELETE', humanReadableType: 'Token Deletion' },\n tokenAssociate: {\n type: 'TOKENASSOCIATE',\n humanReadableType: 'Token Association',\n },\n tokenDissociate: {\n type: 'TOKENDISSOCIATE',\n humanReadableType: 'Token Dissociation',\n },\n tokenFreeze: { type: 'TOKENFREEZE', humanReadableType: 'Token Freeze' },\n tokenUnfreeze: { type: 'TOKENUNFREEZE', humanReadableType: 'Token Unfreeze' },\n tokenGrantKyc: {\n type: 'TOKENGRANTKYC',\n humanReadableType: 'Token Grant KYC',\n },\n tokenRevokeKyc: {\n type: 'TOKENREVOKEKYC',\n humanReadableType: 'Token Revoke KYC',\n },\n tokenPause: { type: 'TOKENPAUSE', humanReadableType: 'Token Pause' },\n tokenUnpause: { type: 'TOKENUNPAUSE', humanReadableType: 'Token Unpause' },\n tokenWipe: { type: 'TOKENWIPE', humanReadableType: 'Token Wipe' },\n tokenFeeScheduleUpdate: {\n type: 'TOKENFEESCHEDULEUPDATE',\n humanReadableType: 'Token Fee Schedule Update',\n },\n tokenCancelAirdrop: {\n type: 'TOKENCANCELAIRDROP',\n humanReadableType: 'Cancel Token Airdrop',\n },\n tokenClaimAirdrop: {\n type: 'TOKENCLAIMAIRDROP',\n humanReadableType: 'Claim Token Airdrop',\n },\n tokenReject: { type: 'TOKENREJECT', humanReadableType: 'Token Reject' },\n tokenUpdateNfts: {\n type: 'TOKENUPDATENFTS',\n humanReadableType: 'Update NFT Metadata',\n },\n\n cryptoTransfer: {\n type: 'CRYPTOTRANSFER',\n humanReadableType: 'Crypto Transfer',\n },\n cryptoCreateAccount: {\n type: 'ACCOUNTCREATE',\n humanReadableType: 'Account Creation',\n },\n cryptoUpdateAccount: {\n type: 'ACCOUNTUPDATE',\n humanReadableType: 'Account Update',\n },\n cryptoDelete: {\n type: 'ACCOUNTDELETE',\n humanReadableType: 'Account Deletion',\n },\n cryptoApproveAllowance: {\n type: 'APPROVEALLOWANCE',\n humanReadableType: 'Approve Allowance',\n },\n cryptoDeleteAllowance: {\n type: 'DELETEALLOWANCE',\n humanReadableType: 'Delete Allowance',\n },\n cryptoAddLiveHash: {\n type: 'CRYPTOADDLIVEHASH',\n humanReadableType: 'Add Live Hash',\n },\n cryptoDeleteLiveHash: {\n type: 'CRYPTODELETELIVEHASH',\n humanReadableType: 'Delete Live Hash',\n },\n\n consensusCreateTopic: {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Creation',\n },\n consensusSubmitMessage: {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n },\n consensusUpdateTopic: {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n },\n consensusDeleteTopic: {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Deletion',\n },\n uncheckedSubmit: {\n type: 'UNCHECKEDSUBMIT',\n humanReadableType: 'Unchecked Submit',\n },\n\n contractCall: { type: 'CONTRACTCALL', humanReadableType: 'Contract Call' },\n contractCreateInstance: {\n type: 'CONTRACTCREATE',\n humanReadableType: 'Contract Creation',\n },\n contractUpdateInstance: {\n type: 'CONTRACTUPDATE',\n humanReadableType: 'Contract Update',\n },\n contractDeleteInstance: {\n type: 'CONTRACTDELETE',\n humanReadableType: 'Contract Deletion',\n },\n ethereumTransaction: {\n type: 'ETHEREUMTRANSACTION',\n humanReadableType: 'Ethereum Transaction',\n },\n\n fileCreate: { type: 'FILECREATE', humanReadableType: 'File Creation' },\n fileUpdate: { type: 'FILEUPDATE', humanReadableType: 'File Update' },\n fileDelete: { type: 'FILEDELETE', humanReadableType: 'File Deletion' },\n fileAppend: { type: 'FILEAPPEND', humanReadableType: 'File Append' },\n\n scheduleCreate: {\n type: 'SCHEDULECREATE',\n humanReadableType: 'Schedule Creation',\n },\n scheduleSign: { type: 'SCHEDULESIGN', humanReadableType: 'Schedule Sign' },\n scheduleDelete: {\n type: 'SCHEDULEDELETE',\n humanReadableType: 'Schedule Deletion',\n },\n\n freeze: { type: 'FREEZE', humanReadableType: 'Network Freeze' },\n systemDelete: { type: 'SYSTEMDELETE', humanReadableType: 'System Delete' },\n systemUndelete: {\n type: 'SYSTEMUNDELETE',\n humanReadableType: 'System Undelete',\n },\n\n nodeCreate: { type: 'NODECREATE', humanReadableType: 'Node Creation' },\n nodeUpdate: { type: 'NODEUPDATE', humanReadableType: 'Node Update' },\n nodeDelete: { type: 'NODEDELETE', humanReadableType: 'Node Deletion' },\n nodeStakeUpdate: {\n type: 'NODESTAKEUPDATE',\n humanReadableType: 'Node Stake Update',\n },\n\n utilPrng: { type: 'PRNG', humanReadableType: 'Pseudo Random Number' },\n\n atomicBatch: { type: 'ATOMICBATCH', humanReadableType: 'Atomic Batch' },\n\n stateSignatureTransaction: {\n type: 'STATESIGNATURETRANSACTION',\n humanReadableType: 'State Signature',\n },\n\n historyProofSignature: {\n type: 'HISTORYPROOFSIGNATURE',\n humanReadableType: 'History Proof Signature',\n },\n historyProofKeyPublication: {\n type: 'HISTORYPROOFKEYPUBLICATION',\n humanReadableType: 'History Proof Key Publication',\n },\n historyProofVote: {\n type: 'HISTORYPROOFVOTE',\n humanReadableType: 'History Proof Vote',\n },\n\n hintsPreprocessingVote: {\n type: 'HINTSPREPROCESSINGVOTE',\n humanReadableType: 'Hints Preprocessing Vote',\n },\n hintsKeyPublication: {\n type: 'HINTSKEYPUBLICATION',\n humanReadableType: 'Hints Key Publication',\n },\n hintsPartialSignature: {\n type: 'HINTSPARTIALSIGNATURE',\n humanReadableType: 'Hints Partial Signature',\n },\n\n crsPublication: {\n type: 'CRSPUBLICATION',\n humanReadableType: 'CRS Publication',\n },\n\n transactionID: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n nodeAccountID: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n transactionFee: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n transactionValidDuration: {\n type: 'UNKNOWN',\n humanReadableType: 'Unknown Transaction',\n },\n generateRecord: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n memo: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n batchKey: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n maxCustomFees: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n} as const;\n\n/**\n * Registry for human-readable transaction type names\n * This eliminates the conditional logic in getHumanReadableType\n */\nexport const humanReadableTypeRegistry: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n CRYPTOTRANSFER: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n ACCOUNTCREATE: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n ACCOUNTUPDATE: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoDelete: 'Delete Account',\n ACCOUNTDELETE: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n APPROVEALLOWANCE: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n DELETEALLOWANCE: 'Delete Allowance',\n CRYPTOADDLIVEHASH: 'Add Live Hash',\n CRYPTODELETELIVEHASH: 'Delete Live Hash',\n\n consensusCreateTopic: 'Create Topic',\n TOPICCREATE: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n TOPICUPDATE: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n CONSENSUSSUBMITMESSAGE: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n TOPICDELETE: 'Delete Topic',\n UNCHECKEDSUBMIT: 'Unchecked Submit',\n\n fileCreate: 'Create File',\n FILECREATE: 'Create File',\n fileAppend: 'Append File',\n FILEAPPEND: 'Append File',\n fileUpdate: 'Update File',\n FILEUPDATE: 'Update File',\n fileDelete: 'Delete File',\n FILEDELETE: 'Delete File',\n\n contractCall: 'Contract Call',\n CONTRACTCALL: 'Contract Call',\n contractCreate: 'Create Contract',\n CONTRACTCREATE: 'Create Contract',\n contractUpdate: 'Update Contract',\n CONTRACTUPDATE: 'Update Contract',\n contractDelete: 'Delete Contract',\n CONTRACTDELETE: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n ETHEREUMTRANSACTION: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n TOKENCREATE: 'Create Token',\n tokenUpdate: 'Update Token',\n TOKENUPDATE: 'Update Token',\n tokenDelete: 'Delete Token',\n TOKENDELETE: 'Delete Token',\n tokenAssociate: 'Associate Token',\n TOKENASSOCIATE: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n TOKENDISSOCIATE: 'Dissociate Token',\n tokenMint: 'Mint Token',\n TOKENMINT: 'Mint Token',\n tokenBurn: 'Burn Token',\n TOKENBURN: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n TOKENFEESCHEDULEUPDATE: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n TOKENFREEZE: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n TOKENUNFREEZE: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n TOKENGRANTKYC: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n TOKENREVOKEKYC: 'Revoke KYC',\n tokenPause: 'Pause Token',\n TOKENPAUSE: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n TOKENUNPAUSE: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n TOKENWIPE: 'Wipe Token',\n tokenAirdrop: 'Token Airdrop',\n TOKENAIRDROP: 'Token Airdrop',\n TOKENCANCELAIRDROP: 'Cancel Token Airdrop',\n TOKENCLAIMAIRDROP: 'Claim Token Airdrop',\n TOKENREJECT: 'Token Reject',\n TOKENUPDATENFTS: 'Update NFT Metadata',\n\n scheduleCreate: 'Create Schedule',\n SCHEDULECREATE: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n SCHEDULESIGN: 'Sign Schedule',\n SCHEDULEDELETE: 'Delete Schedule',\n\n FREEZE: 'Network Freeze',\n SYSTEMDELETE: 'System Delete',\n SYSTEMUNDELETE: 'System Undelete',\n\n NODECREATE: 'Create Node',\n NODEUPDATE: 'Update Node',\n NODEDELETE: 'Delete Node',\n NODESTAKEUPDATE: 'Update Node Stake',\n\n utilPrng: 'Generate Random Number',\n PRNG: 'Generate Random Number',\n\n ATOMICBATCH: 'Atomic Batch',\n STATESIGNATURETRANSACTION: 'State Signature',\n HISTORYPROOFSIGNATURE: 'History Proof Signature',\n HISTORYPROOFKEYPUBLICATION: 'History Proof Key Publication',\n HISTORYPROOFVOTE: 'History Proof Vote',\n HINTSPREPROCESSINGVOTE: 'Hints Preprocessing Vote',\n HINTSKEYPUBLICATION: 'Hints Key Publication',\n HINTSPARTIALSIGNATURE: 'Hints Partial Signature',\n CRSPUBLICATION: 'CRS Publication',\n\n unknown: 'Unknown Transaction',\n UNKNOWN: 'Unknown Transaction',\n} as const;\n\n/**\n * Registry for schedulable transaction body field to transaction type mapping\n * This eliminates the conditional logic in getTransactionType\n */\nexport const schedulableTransactionTypeRegistry: Record<string, string> = {\n tokenCreation: 'tokenCreate',\n tokenAirdrop: 'tokenAirdrop',\n cryptoTransfer: 'cryptoTransfer',\n consensusSubmitMessage: 'consensusSubmitMessage',\n contractCall: 'contractCall',\n cryptoCreateAccount: 'cryptoCreateAccount',\n cryptoUpdateAccount: 'cryptoUpdateAccount',\n cryptoApproveAllowance: 'cryptoApproveAllowance',\n cryptoDeleteAllowance: 'cryptoDeleteAllowance',\n cryptoDelete: 'cryptoDelete',\n consensusCreateTopic: 'consensusCreateTopic',\n consensusUpdateTopic: 'consensusUpdateTopic',\n consensusDeleteTopic: 'consensusDeleteTopic',\n fileCreate: 'fileCreate',\n fileAppend: 'fileAppend',\n fileUpdate: 'fileUpdate',\n fileDelete: 'fileDelete',\n contractCreateInstance: 'contractCreate',\n contractUpdateInstance: 'contractUpdate',\n contractDeleteInstance: 'contractDelete',\n tokenUpdate: 'tokenUpdate',\n tokenDeletion: 'tokenDelete',\n tokenAssociate: 'tokenAssociate',\n tokenDissociate: 'tokenDissociate',\n tokenMint: 'tokenMint',\n tokenBurn: 'tokenBurn',\n tokenFeeScheduleUpdate: 'tokenFeeScheduleUpdate',\n tokenFreeze: 'tokenFreeze',\n tokenUnfreeze: 'tokenUnfreeze',\n tokenGrantKyc: 'tokenGrantKyc',\n tokenRevokeKyc: 'tokenRevokeKyc',\n tokenPause: 'tokenPause',\n tokenUnpause: 'tokenUnpause',\n tokenWipe: 'tokenWipe',\n utilPrng: 'utilPrng',\n} as const;\n\n/**\n * Get transaction type and human readable type from protobuf transaction body\n * Replaces the massive if-else chain in detectTransactionTypeFromBody\n */\nexport function getTransactionTypeFromBody(txBody: proto.TransactionBody): {\n type: string;\n humanReadableType: string;\n} {\n for (const [field, typeInfo] of Object.entries(protoFieldToTypeRegistry)) {\n if (txBody[field as keyof proto.TransactionBody]) {\n return typeInfo;\n }\n }\n\n return { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' };\n}\n\n/**\n * Get transaction type from schedulable transaction body\n * Replaces the conditional logic in getTransactionType\n */\nexport function getSchedulableTransactionType(\n txBody: proto.SchedulableTransactionBody,\n): string {\n for (const [field, type] of Object.entries(\n schedulableTransactionTypeRegistry,\n )) {\n if (txBody[field as keyof proto.SchedulableTransactionBody]) {\n return type;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Get human readable transaction type\n * Replaces the conditional logic in getHumanReadableType\n */\nexport function getHumanReadableTransactionType(type: string): string {\n return humanReadableTypeRegistry[type] || 'Unknown Transaction';\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es80.js","sources":["../../src/utils/parsers/util-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { Transaction, Long, FileId, ContractId } from '@hashgraph/sdk';\nimport {\n UtilPrngData,\n NetworkFreezeData,\n SystemDeleteData,\n SystemUndeleteData,\n NodeCreateData,\n NodeUpdateData,\n NodeDeleteData,\n} from '../transaction-parser-types';\nimport {\n parseKey,\n extractTransactionBody,\n hasTransactionType,\n} from './parser-utils';\n\n/**\n * Utility and System Operations Parser\n *\n * Handles parsing for utility and system transaction types including:\n * - Pseudo-random number generation (PRNG)\n * - Network freeze operations\n * - System delete/undelete operations\n * - Node management operations\n * - Proper dual-branch parsing (regular vs signed transactions)\n * - Comprehensive protobuf extraction\n */\nexport class UtilParser {\n /**\n * Parse Utility/System Service transaction using unified dual-branch approach\n * This handles both regular transactions and signed transaction variants\n */\n static parseUtilTransaction(\n transaction: Transaction,\n originalBytes?: Uint8Array,\n ): {\n type?: string;\n humanReadableType?: string;\n utilPrng?: UtilPrngData;\n networkFreeze?: NetworkFreezeData;\n systemDelete?: SystemDeleteData;\n systemUndelete?: SystemUndeleteData;\n nodeCreate?: NodeCreateData;\n nodeUpdate?: NodeUpdateData;\n nodeDelete?: NodeDeleteData;\n [key: string]: unknown;\n } {\n try {\n if (originalBytes || transaction.toBytes) {\n try {\n const bytesToParse = originalBytes || transaction.toBytes();\n const decoded = proto.TransactionList.decode(bytesToParse);\n\n if (decoded.transactionList && decoded.transactionList.length > 0) {\n const tx = decoded.transactionList[0];\n let txBody: proto.ITransactionBody | null = null;\n\n if (tx.bodyBytes && tx.bodyBytes.length > 0) {\n txBody = proto.TransactionBody.decode(tx.bodyBytes);\n } else if (\n tx.signedTransactionBytes &&\n tx.signedTransactionBytes.length > 0\n ) {\n const signedTx = proto.SignedTransaction.decode(\n tx.signedTransactionBytes,\n );\n if (signedTx.bodyBytes) {\n txBody = proto.TransactionBody.decode(signedTx.bodyBytes);\n }\n }\n\n if (txBody) {\n const protoResult = this.parseFromProtobufTxBody(txBody);\n if (protoResult.type && protoResult.type !== 'UNKNOWN') {\n return protoResult;\n }\n }\n }\n } catch (protoError) {}\n }\n\n return this.parseFromTransactionInternals(transaction);\n } catch (error) {\n return {\n type: 'UNKNOWN',\n humanReadableType: 'Unknown Utility Transaction',\n };\n }\n }\n\n /**\n * Parse utility transaction from protobuf TransactionBody\n * Handles all utility operations from decoded protobuf data\n */\n private static parseFromProtobufTxBody(txBody: proto.ITransactionBody): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n if (txBody.utilPrng) {\n const utilPrng = this.parseUtilPrng(txBody.utilPrng);\n if (utilPrng) {\n return {\n type: 'PRNG',\n humanReadableType: 'Pseudo Random Number',\n utilPrng,\n };\n }\n }\n\n if (txBody.freeze) {\n const networkFreeze = this.parseNetworkFreezeFromProto(txBody.freeze);\n if (networkFreeze) {\n return {\n type: 'FREEZE',\n humanReadableType: 'Network Freeze',\n freeze: networkFreeze,\n };\n }\n }\n\n if (txBody.systemDelete) {\n const systemDelete = this.parseSystemDeleteFromProto(txBody.systemDelete);\n if (systemDelete) {\n return {\n type: 'SYSTEMDELETE',\n humanReadableType: 'System Delete',\n systemDelete,\n };\n }\n }\n\n if (txBody.systemUndelete) {\n const systemUndelete = this.parseSystemUndeleteFromProto(\n txBody.systemUndelete,\n );\n if (systemUndelete) {\n return {\n type: 'SYSTEMUNDELETE',\n humanReadableType: 'System Undelete',\n systemUndelete,\n };\n }\n }\n\n if (txBody.nodeCreate) {\n const nodeCreate = this.parseNodeCreateFromProto(txBody.nodeCreate);\n if (nodeCreate) {\n return {\n type: 'NODECREATE',\n humanReadableType: 'Node Create',\n nodeCreate,\n };\n }\n }\n\n if (txBody.nodeUpdate) {\n const nodeUpdate = this.parseNodeUpdateFromProto(txBody.nodeUpdate);\n if (nodeUpdate) {\n return {\n type: 'NODEUPDATE',\n humanReadableType: 'Node Update',\n nodeUpdate,\n };\n }\n }\n\n if (txBody.nodeDelete) {\n const nodeDelete = this.parseNodeDeleteFromProto(txBody.nodeDelete);\n if (nodeDelete) {\n return {\n type: 'NODEDELETE',\n humanReadableType: 'Node Delete',\n nodeDelete,\n };\n }\n }\n\n return {};\n }\n\n /**\n * Extract utility data from Transaction internal fields\n * This handles cases where data is stored in Transaction object internals\n */\n private static parseFromTransactionInternals(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n try {\n const tx = transaction as unknown as {\n _range?: number;\n _startTime?: { toString(): string };\n _endTime?: { toString(): string };\n _updateFile?: { toString(): string };\n _fileHash?: Uint8Array;\n _freezeType?: string;\n _fileId?: { toString(): string };\n _contractId?: { toString(): string };\n _expirationTime?: { toString(): string };\n _nodeId?: number;\n _accountId?: { toString(): string };\n _description?: string;\n _gossipEndpoint?: Array<unknown>;\n _serviceEndpoint?: Array<unknown>;\n _gossipCaCertificate?: Uint8Array;\n _grpcCertificateHash?: Uint8Array;\n _adminKey?: unknown;\n constructor?: { name?: string };\n };\n\n if (hasTransactionType(transaction, 'utilPrng')) {\n const utilPrng: UtilPrngData = {};\n if (tx._range && tx._range !== 0) {\n utilPrng.range = tx._range;\n }\n\n return {\n type: 'PRNG',\n humanReadableType: 'Pseudo Random Number',\n utilPrng,\n };\n }\n\n if (hasTransactionType(transaction, 'freeze')) {\n const networkFreeze: NetworkFreezeData = {};\n\n if (tx._startTime) {\n networkFreeze.startTime = tx._startTime.toString();\n }\n if (tx._endTime) {\n networkFreeze.endTime = tx._endTime.toString();\n }\n if (tx._updateFile) {\n networkFreeze.updateFile = tx._updateFile.toString();\n }\n if (tx._fileHash) {\n networkFreeze.fileHash = Buffer.from(tx._fileHash).toString('hex');\n }\n if (tx._freezeType) {\n networkFreeze.freezeType = tx._freezeType as any;\n }\n\n return {\n type: 'FREEZE',\n humanReadableType: 'Network Freeze',\n freeze: networkFreeze,\n };\n }\n\n if (hasTransactionType(transaction, 'systemDelete')) {\n const systemDelete: SystemDeleteData = {};\n\n if (tx._fileId) {\n systemDelete.fileId = tx._fileId.toString();\n } else if (tx._contractId) {\n systemDelete.contractId = tx._contractId.toString();\n }\n\n if (tx._expirationTime) {\n systemDelete.expirationTime = tx._expirationTime.toString();\n }\n\n return {\n type: 'SYSTEMDELETE',\n humanReadableType: 'System Delete',\n systemDelete,\n };\n }\n\n if (hasTransactionType(transaction, 'systemUndelete')) {\n const systemUndelete: SystemUndeleteData = {};\n\n if (tx._fileId) {\n systemUndelete.fileId = tx._fileId.toString();\n } else if (tx._contractId) {\n systemUndelete.contractId = tx._contractId.toString();\n }\n\n return {\n type: 'SYSTEMUNDELETE',\n humanReadableType: 'System Undelete',\n systemUndelete,\n };\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Parse Network Freeze from protobuf data\n */\n private static parseNetworkFreezeFromProto(\n body: proto.IFreezeTransactionBody,\n ): NetworkFreezeData | undefined {\n if (!body) return undefined;\n\n const data: NetworkFreezeData = {};\n\n if (body.startTime?.seconds) {\n data.startTime = `${Long.fromValue(\n body.startTime.seconds,\n ).toString()}.${body.startTime.nanos ?? 0}`;\n }\n\n if (body.updateFile) {\n data.updateFile = new FileId(\n body.updateFile.shardNum ?? 0,\n body.updateFile.realmNum ?? 0,\n body.updateFile.fileNum ?? 0,\n ).toString();\n }\n\n if (body.fileHash && body.fileHash.length > 0) {\n data.fileHash = Buffer.from(body.fileHash).toString('hex');\n }\n\n if (body.freezeType !== undefined) {\n const freezeTypes = [\n 'FREEZE_ONLY',\n 'PREPARE_UPGRADE',\n 'FREEZE_UPGRADE',\n 'FREEZE_ABORT',\n ];\n data.freezeType = (freezeTypes[body.freezeType] as any) || 'FREEZE_ONLY';\n }\n\n return data;\n }\n\n /**\n * Parse System Delete from protobuf data\n */\n private static parseSystemDeleteFromProto(\n body: proto.ISystemDeleteTransactionBody,\n ): SystemDeleteData | undefined {\n if (!body) return undefined;\n\n const data: SystemDeleteData = {};\n\n if (body.fileID) {\n data.fileId = new FileId(\n body.fileID.shardNum ?? 0,\n body.fileID.realmNum ?? 0,\n body.fileID.fileNum ?? 0,\n ).toString();\n } else if (body.contractID) {\n data.contractId = new ContractId(\n body.contractID.shardNum ?? 0,\n body.contractID.realmNum ?? 0,\n body.contractID.contractNum ?? 0,\n ).toString();\n }\n\n if (body.expirationTime?.seconds) {\n data.expirationTime = Long.fromValue(\n body.expirationTime.seconds,\n ).toString();\n }\n\n return data;\n }\n\n /**\n * Parse System Undelete from protobuf data\n */\n private static parseSystemUndeleteFromProto(\n body: proto.ISystemUndeleteTransactionBody,\n ): SystemUndeleteData | undefined {\n if (!body) return undefined;\n\n const data: SystemUndeleteData = {};\n\n if (body.fileID) {\n data.fileId = new FileId(\n body.fileID.shardNum ?? 0,\n body.fileID.realmNum ?? 0,\n body.fileID.fileNum ?? 0,\n ).toString();\n } else if (body.contractID) {\n data.contractId = new ContractId(\n body.contractID.shardNum ?? 0,\n body.contractID.realmNum ?? 0,\n body.contractID.contractNum ?? 0,\n ).toString();\n }\n\n return data;\n }\n\n /**\n * Parse Node Create from protobuf data\n */\n private static parseNodeCreateFromProto(\n body: any,\n ): NodeCreateData | undefined {\n if (!body) return undefined;\n\n const data: NodeCreateData = {};\n\n if (body.nodeId !== undefined) {\n data.nodeId = Long.fromValue(body.nodeId).toNumber();\n }\n\n return data;\n }\n\n /**\n * Parse Node Update from protobuf data\n */\n private static parseNodeUpdateFromProto(\n body: any,\n ): NodeUpdateData | undefined {\n if (!body) return undefined;\n\n const data: NodeUpdateData = {};\n\n if (body.nodeId !== undefined) {\n data.nodeId = Long.fromValue(body.nodeId).toNumber();\n }\n\n return data;\n }\n\n /**\n * Parse Node Delete from protobuf data\n */\n private static parseNodeDeleteFromProto(\n body: any,\n ): NodeDeleteData | undefined {\n if (!body) return undefined;\n\n const data: NodeDeleteData = {};\n\n if (body.nodeId !== undefined) {\n data.nodeId = Long.fromValue(body.nodeId).toNumber();\n }\n\n return data;\n }\n\n static parseUtilPrng(\n body: proto.IUtilPrngTransactionBody,\n ): UtilPrngData | undefined {\n if (!body) return undefined;\n const data: UtilPrngData = {};\n if (body.range && body.range !== 0) {\n data.range = body.range;\n }\n return data;\n }\n\n static parseFreeze(\n body: proto.IFreezeTransactionBody,\n ): NetworkFreezeData | undefined {\n return this.parseNetworkFreezeFromProto(body);\n }\n\n /**\n * Parse Utility/System Service transaction from Transaction object\n * This is the unified entry point that delegates to the comprehensive parsing logic\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n return this.parseUtilTransaction(transaction);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,79 +1,309 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
1
|
+
const protoFieldToTypeRegistry = {
|
|
2
|
+
tokenCreation: { type: "TOKENCREATE", humanReadableType: "Token Creation" },
|
|
3
|
+
tokenAirdrop: { type: "TOKENAIRDROP", humanReadableType: "Token Airdrop" },
|
|
4
|
+
tokenMint: { type: "TOKENMINT", humanReadableType: "Token Mint" },
|
|
5
|
+
tokenBurn: { type: "TOKENBURN", humanReadableType: "Token Burn" },
|
|
6
|
+
tokenUpdate: { type: "TOKENUPDATE", humanReadableType: "Token Update" },
|
|
7
|
+
tokenDeletion: { type: "TOKENDELETE", humanReadableType: "Token Deletion" },
|
|
8
|
+
tokenAssociate: {
|
|
9
|
+
type: "TOKENASSOCIATE",
|
|
10
|
+
humanReadableType: "Token Association"
|
|
11
|
+
},
|
|
12
|
+
tokenDissociate: {
|
|
13
|
+
type: "TOKENDISSOCIATE",
|
|
14
|
+
humanReadableType: "Token Dissociation"
|
|
15
|
+
},
|
|
16
|
+
tokenFreeze: { type: "TOKENFREEZE", humanReadableType: "Token Freeze" },
|
|
17
|
+
tokenUnfreeze: { type: "TOKENUNFREEZE", humanReadableType: "Token Unfreeze" },
|
|
18
|
+
tokenGrantKyc: {
|
|
19
|
+
type: "TOKENGRANTKYC",
|
|
20
|
+
humanReadableType: "Token Grant KYC"
|
|
21
|
+
},
|
|
22
|
+
tokenRevokeKyc: {
|
|
23
|
+
type: "TOKENREVOKEKYC",
|
|
24
|
+
humanReadableType: "Token Revoke KYC"
|
|
25
|
+
},
|
|
26
|
+
tokenPause: { type: "TOKENPAUSE", humanReadableType: "Token Pause" },
|
|
27
|
+
tokenUnpause: { type: "TOKENUNPAUSE", humanReadableType: "Token Unpause" },
|
|
28
|
+
tokenWipe: { type: "TOKENWIPE", humanReadableType: "Token Wipe" },
|
|
29
|
+
tokenFeeScheduleUpdate: {
|
|
30
|
+
type: "TOKENFEESCHEDULEUPDATE",
|
|
31
|
+
humanReadableType: "Token Fee Schedule Update"
|
|
32
|
+
},
|
|
33
|
+
tokenCancelAirdrop: {
|
|
34
|
+
type: "TOKENCANCELAIRDROP",
|
|
35
|
+
humanReadableType: "Cancel Token Airdrop"
|
|
36
|
+
},
|
|
37
|
+
tokenClaimAirdrop: {
|
|
38
|
+
type: "TOKENCLAIMAIRDROP",
|
|
39
|
+
humanReadableType: "Claim Token Airdrop"
|
|
40
|
+
},
|
|
41
|
+
tokenReject: { type: "TOKENREJECT", humanReadableType: "Token Reject" },
|
|
42
|
+
tokenUpdateNfts: {
|
|
43
|
+
type: "TOKENUPDATENFTS",
|
|
44
|
+
humanReadableType: "Update NFT Metadata"
|
|
45
|
+
},
|
|
46
|
+
cryptoTransfer: {
|
|
47
|
+
type: "CRYPTOTRANSFER",
|
|
48
|
+
humanReadableType: "Crypto Transfer"
|
|
49
|
+
},
|
|
50
|
+
cryptoCreateAccount: {
|
|
51
|
+
type: "ACCOUNTCREATE",
|
|
52
|
+
humanReadableType: "Account Creation"
|
|
53
|
+
},
|
|
54
|
+
cryptoUpdateAccount: {
|
|
55
|
+
type: "ACCOUNTUPDATE",
|
|
56
|
+
humanReadableType: "Account Update"
|
|
57
|
+
},
|
|
58
|
+
cryptoDelete: {
|
|
59
|
+
type: "ACCOUNTDELETE",
|
|
60
|
+
humanReadableType: "Account Deletion"
|
|
61
|
+
},
|
|
62
|
+
cryptoApproveAllowance: {
|
|
63
|
+
type: "APPROVEALLOWANCE",
|
|
64
|
+
humanReadableType: "Approve Allowance"
|
|
65
|
+
},
|
|
66
|
+
cryptoDeleteAllowance: {
|
|
67
|
+
type: "DELETEALLOWANCE",
|
|
68
|
+
humanReadableType: "Delete Allowance"
|
|
69
|
+
},
|
|
70
|
+
cryptoAddLiveHash: {
|
|
71
|
+
type: "CRYPTOADDLIVEHASH",
|
|
72
|
+
humanReadableType: "Add Live Hash"
|
|
73
|
+
},
|
|
74
|
+
cryptoDeleteLiveHash: {
|
|
75
|
+
type: "CRYPTODELETELIVEHASH",
|
|
76
|
+
humanReadableType: "Delete Live Hash"
|
|
77
|
+
},
|
|
78
|
+
consensusCreateTopic: {
|
|
79
|
+
type: "TOPICCREATE",
|
|
80
|
+
humanReadableType: "Topic Creation"
|
|
81
|
+
},
|
|
82
|
+
consensusSubmitMessage: {
|
|
83
|
+
type: "CONSENSUSSUBMITMESSAGE",
|
|
84
|
+
humanReadableType: "Submit Message"
|
|
85
|
+
},
|
|
86
|
+
consensusUpdateTopic: {
|
|
87
|
+
type: "TOPICUPDATE",
|
|
88
|
+
humanReadableType: "Topic Update"
|
|
89
|
+
},
|
|
90
|
+
consensusDeleteTopic: {
|
|
91
|
+
type: "TOPICDELETE",
|
|
92
|
+
humanReadableType: "Topic Deletion"
|
|
93
|
+
},
|
|
94
|
+
uncheckedSubmit: {
|
|
95
|
+
type: "UNCHECKEDSUBMIT",
|
|
96
|
+
humanReadableType: "Unchecked Submit"
|
|
97
|
+
},
|
|
98
|
+
contractCall: { type: "CONTRACTCALL", humanReadableType: "Contract Call" },
|
|
99
|
+
contractCreateInstance: {
|
|
100
|
+
type: "CONTRACTCREATE",
|
|
101
|
+
humanReadableType: "Contract Creation"
|
|
102
|
+
},
|
|
103
|
+
contractUpdateInstance: {
|
|
104
|
+
type: "CONTRACTUPDATE",
|
|
105
|
+
humanReadableType: "Contract Update"
|
|
106
|
+
},
|
|
107
|
+
contractDeleteInstance: {
|
|
108
|
+
type: "CONTRACTDELETE",
|
|
109
|
+
humanReadableType: "Contract Deletion"
|
|
110
|
+
},
|
|
111
|
+
ethereumTransaction: {
|
|
112
|
+
type: "ETHEREUMTRANSACTION",
|
|
113
|
+
humanReadableType: "Ethereum Transaction"
|
|
114
|
+
},
|
|
115
|
+
fileCreate: { type: "FILECREATE", humanReadableType: "File Creation" },
|
|
116
|
+
fileUpdate: { type: "FILEUPDATE", humanReadableType: "File Update" },
|
|
117
|
+
fileDelete: { type: "FILEDELETE", humanReadableType: "File Deletion" },
|
|
118
|
+
fileAppend: { type: "FILEAPPEND", humanReadableType: "File Append" },
|
|
119
|
+
scheduleCreate: {
|
|
120
|
+
type: "SCHEDULECREATE",
|
|
121
|
+
humanReadableType: "Schedule Creation"
|
|
122
|
+
},
|
|
123
|
+
scheduleSign: { type: "SCHEDULESIGN", humanReadableType: "Schedule Sign" },
|
|
124
|
+
scheduleDelete: {
|
|
125
|
+
type: "SCHEDULEDELETE",
|
|
126
|
+
humanReadableType: "Schedule Deletion"
|
|
127
|
+
},
|
|
128
|
+
freeze: { type: "FREEZE", humanReadableType: "Network Freeze" },
|
|
129
|
+
systemDelete: { type: "SYSTEMDELETE", humanReadableType: "System Delete" },
|
|
130
|
+
systemUndelete: {
|
|
131
|
+
type: "SYSTEMUNDELETE",
|
|
132
|
+
humanReadableType: "System Undelete"
|
|
133
|
+
},
|
|
134
|
+
nodeCreate: { type: "NODECREATE", humanReadableType: "Node Creation" },
|
|
135
|
+
nodeUpdate: { type: "NODEUPDATE", humanReadableType: "Node Update" },
|
|
136
|
+
nodeDelete: { type: "NODEDELETE", humanReadableType: "Node Deletion" },
|
|
137
|
+
nodeStakeUpdate: {
|
|
138
|
+
type: "NODESTAKEUPDATE",
|
|
139
|
+
humanReadableType: "Node Stake Update"
|
|
140
|
+
},
|
|
141
|
+
utilPrng: { type: "PRNG", humanReadableType: "Pseudo Random Number" },
|
|
142
|
+
atomicBatch: { type: "ATOMICBATCH", humanReadableType: "Atomic Batch" },
|
|
143
|
+
stateSignatureTransaction: {
|
|
144
|
+
type: "STATESIGNATURETRANSACTION",
|
|
145
|
+
humanReadableType: "State Signature"
|
|
146
|
+
},
|
|
147
|
+
historyProofSignature: {
|
|
148
|
+
type: "HISTORYPROOFSIGNATURE",
|
|
149
|
+
humanReadableType: "History Proof Signature"
|
|
150
|
+
},
|
|
151
|
+
historyProofKeyPublication: {
|
|
152
|
+
type: "HISTORYPROOFKEYPUBLICATION",
|
|
153
|
+
humanReadableType: "History Proof Key Publication"
|
|
154
|
+
},
|
|
155
|
+
historyProofVote: {
|
|
156
|
+
type: "HISTORYPROOFVOTE",
|
|
157
|
+
humanReadableType: "History Proof Vote"
|
|
158
|
+
},
|
|
159
|
+
hintsPreprocessingVote: {
|
|
160
|
+
type: "HINTSPREPROCESSINGVOTE",
|
|
161
|
+
humanReadableType: "Hints Preprocessing Vote"
|
|
162
|
+
},
|
|
163
|
+
hintsKeyPublication: {
|
|
164
|
+
type: "HINTSKEYPUBLICATION",
|
|
165
|
+
humanReadableType: "Hints Key Publication"
|
|
166
|
+
},
|
|
167
|
+
hintsPartialSignature: {
|
|
168
|
+
type: "HINTSPARTIALSIGNATURE",
|
|
169
|
+
humanReadableType: "Hints Partial Signature"
|
|
170
|
+
},
|
|
171
|
+
crsPublication: {
|
|
172
|
+
type: "CRSPUBLICATION",
|
|
173
|
+
humanReadableType: "CRS Publication"
|
|
174
|
+
},
|
|
175
|
+
transactionID: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
176
|
+
nodeAccountID: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
177
|
+
transactionFee: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
178
|
+
transactionValidDuration: {
|
|
179
|
+
type: "UNKNOWN",
|
|
180
|
+
humanReadableType: "Unknown Transaction"
|
|
181
|
+
},
|
|
182
|
+
generateRecord: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
183
|
+
memo: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
184
|
+
batchKey: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" },
|
|
185
|
+
maxCustomFees: { type: "UNKNOWN", humanReadableType: "Unknown Transaction" }
|
|
186
|
+
};
|
|
187
|
+
const humanReadableTypeRegistry = {
|
|
188
|
+
cryptoTransfer: "HBAR Transfer",
|
|
189
|
+
CRYPTOTRANSFER: "HBAR Transfer",
|
|
190
|
+
cryptoCreateAccount: "Create Account",
|
|
191
|
+
ACCOUNTCREATE: "Create Account",
|
|
192
|
+
cryptoUpdateAccount: "Update Account",
|
|
193
|
+
ACCOUNTUPDATE: "Update Account",
|
|
194
|
+
cryptoDeleteAccount: "Delete Account",
|
|
195
|
+
cryptoDelete: "Delete Account",
|
|
196
|
+
ACCOUNTDELETE: "Delete Account",
|
|
197
|
+
cryptoApproveAllowance: "Approve Allowance",
|
|
198
|
+
APPROVEALLOWANCE: "Approve Allowance",
|
|
199
|
+
cryptoDeleteAllowance: "Delete Allowance",
|
|
200
|
+
DELETEALLOWANCE: "Delete Allowance",
|
|
201
|
+
CRYPTOADDLIVEHASH: "Add Live Hash",
|
|
202
|
+
CRYPTODELETELIVEHASH: "Delete Live Hash",
|
|
203
|
+
consensusCreateTopic: "Create Topic",
|
|
204
|
+
TOPICCREATE: "Create Topic",
|
|
205
|
+
consensusUpdateTopic: "Update Topic",
|
|
206
|
+
TOPICUPDATE: "Update Topic",
|
|
207
|
+
consensusSubmitMessage: "Submit Message",
|
|
208
|
+
CONSENSUSSUBMITMESSAGE: "Submit Message",
|
|
209
|
+
consensusDeleteTopic: "Delete Topic",
|
|
210
|
+
TOPICDELETE: "Delete Topic",
|
|
211
|
+
UNCHECKEDSUBMIT: "Unchecked Submit",
|
|
212
|
+
fileCreate: "Create File",
|
|
213
|
+
FILECREATE: "Create File",
|
|
214
|
+
fileAppend: "Append File",
|
|
215
|
+
FILEAPPEND: "Append File",
|
|
216
|
+
fileUpdate: "Update File",
|
|
217
|
+
FILEUPDATE: "Update File",
|
|
218
|
+
fileDelete: "Delete File",
|
|
219
|
+
FILEDELETE: "Delete File",
|
|
220
|
+
contractCall: "Contract Call",
|
|
221
|
+
CONTRACTCALL: "Contract Call",
|
|
222
|
+
contractCreate: "Create Contract",
|
|
223
|
+
CONTRACTCREATE: "Create Contract",
|
|
224
|
+
contractUpdate: "Update Contract",
|
|
225
|
+
CONTRACTUPDATE: "Update Contract",
|
|
226
|
+
contractDelete: "Delete Contract",
|
|
227
|
+
CONTRACTDELETE: "Delete Contract",
|
|
228
|
+
ethereumTransaction: "Ethereum Transaction",
|
|
229
|
+
ETHEREUMTRANSACTION: "Ethereum Transaction",
|
|
230
|
+
tokenCreate: "Create Token",
|
|
231
|
+
TOKENCREATE: "Create Token",
|
|
232
|
+
tokenUpdate: "Update Token",
|
|
233
|
+
TOKENUPDATE: "Update Token",
|
|
234
|
+
tokenDelete: "Delete Token",
|
|
235
|
+
TOKENDELETE: "Delete Token",
|
|
236
|
+
tokenAssociate: "Associate Token",
|
|
237
|
+
TOKENASSOCIATE: "Associate Token",
|
|
238
|
+
tokenDissociate: "Dissociate Token",
|
|
239
|
+
TOKENDISSOCIATE: "Dissociate Token",
|
|
240
|
+
tokenMint: "Mint Token",
|
|
241
|
+
TOKENMINT: "Mint Token",
|
|
242
|
+
tokenBurn: "Burn Token",
|
|
243
|
+
TOKENBURN: "Burn Token",
|
|
244
|
+
tokenFeeScheduleUpdate: "Update Token Fee Schedule",
|
|
245
|
+
TOKENFEESCHEDULEUPDATE: "Update Token Fee Schedule",
|
|
246
|
+
tokenFreeze: "Freeze Token",
|
|
247
|
+
TOKENFREEZE: "Freeze Token",
|
|
248
|
+
tokenUnfreeze: "Unfreeze Token",
|
|
249
|
+
TOKENUNFREEZE: "Unfreeze Token",
|
|
250
|
+
tokenGrantKyc: "Grant KYC",
|
|
251
|
+
TOKENGRANTKYC: "Grant KYC",
|
|
252
|
+
tokenRevokeKyc: "Revoke KYC",
|
|
253
|
+
TOKENREVOKEKYC: "Revoke KYC",
|
|
254
|
+
tokenPause: "Pause Token",
|
|
255
|
+
TOKENPAUSE: "Pause Token",
|
|
256
|
+
tokenUnpause: "Unpause Token",
|
|
257
|
+
TOKENUNPAUSE: "Unpause Token",
|
|
258
|
+
tokenWipe: "Wipe Token",
|
|
259
|
+
TOKENWIPE: "Wipe Token",
|
|
260
|
+
tokenAirdrop: "Token Airdrop",
|
|
261
|
+
TOKENAIRDROP: "Token Airdrop",
|
|
262
|
+
TOKENCANCELAIRDROP: "Cancel Token Airdrop",
|
|
263
|
+
TOKENCLAIMAIRDROP: "Claim Token Airdrop",
|
|
264
|
+
TOKENREJECT: "Token Reject",
|
|
265
|
+
TOKENUPDATENFTS: "Update NFT Metadata",
|
|
266
|
+
scheduleCreate: "Create Schedule",
|
|
267
|
+
SCHEDULECREATE: "Create Schedule",
|
|
268
|
+
scheduleSign: "Sign Schedule",
|
|
269
|
+
SCHEDULESIGN: "Sign Schedule",
|
|
270
|
+
SCHEDULEDELETE: "Delete Schedule",
|
|
271
|
+
FREEZE: "Network Freeze",
|
|
272
|
+
SYSTEMDELETE: "System Delete",
|
|
273
|
+
SYSTEMUNDELETE: "System Undelete",
|
|
274
|
+
NODECREATE: "Create Node",
|
|
275
|
+
NODEUPDATE: "Update Node",
|
|
276
|
+
NODEDELETE: "Delete Node",
|
|
277
|
+
NODESTAKEUPDATE: "Update Node Stake",
|
|
278
|
+
utilPrng: "Generate Random Number",
|
|
279
|
+
PRNG: "Generate Random Number",
|
|
280
|
+
ATOMICBATCH: "Atomic Batch",
|
|
281
|
+
STATESIGNATURETRANSACTION: "State Signature",
|
|
282
|
+
HISTORYPROOFSIGNATURE: "History Proof Signature",
|
|
283
|
+
HISTORYPROOFKEYPUBLICATION: "History Proof Key Publication",
|
|
284
|
+
HISTORYPROOFVOTE: "History Proof Vote",
|
|
285
|
+
HINTSPREPROCESSINGVOTE: "Hints Preprocessing Vote",
|
|
286
|
+
HINTSKEYPUBLICATION: "Hints Key Publication",
|
|
287
|
+
HINTSPARTIALSIGNATURE: "Hints Partial Signature",
|
|
288
|
+
CRSPUBLICATION: "CRS Publication",
|
|
289
|
+
unknown: "Unknown Transaction",
|
|
290
|
+
UNKNOWN: "Unknown Transaction"
|
|
291
|
+
};
|
|
292
|
+
function getTransactionTypeFromBody(txBody) {
|
|
293
|
+
for (const [field, typeInfo] of Object.entries(protoFieldToTypeRegistry)) {
|
|
294
|
+
if (txBody[field]) {
|
|
295
|
+
return typeInfo;
|
|
64
296
|
}
|
|
65
|
-
return null;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
return null;
|
|
68
297
|
}
|
|
298
|
+
return { type: "UNKNOWN", humanReadableType: "Unknown Transaction" };
|
|
69
299
|
}
|
|
70
|
-
function
|
|
71
|
-
|
|
72
|
-
return !!(txBody && txBody[transactionField]);
|
|
300
|
+
function getHumanReadableTransactionType(type) {
|
|
301
|
+
return humanReadableTypeRegistry[type] || "Unknown Transaction";
|
|
73
302
|
}
|
|
74
303
|
export {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
304
|
+
getHumanReadableTransactionType,
|
|
305
|
+
getTransactionTypeFromBody,
|
|
306
|
+
humanReadableTypeRegistry,
|
|
307
|
+
protoFieldToTypeRegistry
|
|
78
308
|
};
|
|
79
309
|
//# sourceMappingURL=standards-sdk.es81.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es81.js","sources":["../../src/utils/parsers/parser-utils.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { ContractId, Transaction } from '@hashgraph/sdk';\nimport { Buffer } from 'buffer';\n\nexport function parseKey(\n key: proto.IKey | null | undefined,\n): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.contractID) {\n return `ContractID: ${new ContractId(\n key.contractID.shardNum ?? 0,\n key.contractID.realmNum ?? 0,\n key.contractID.contractNum ?? 0,\n ).toString()}`;\n }\n if (key.ed25519) {\n return `ED25519: ${Buffer.from(key.ed25519).toString('hex')}`;\n }\n if (key.ECDSASecp256k1) {\n return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(\n 'hex',\n )}`;\n }\n if (key?.keyList?.keys?.length > 0) {\n const keys = key.keyList.keys.map(k => parseKey(k)).filter(Boolean);\n return `KeyList (${keys.length} keys): [${keys.join(', ')}]`;\n }\n if (key?.thresholdKey?.keys?.keys?.length > 0) {\n const keys = key.thresholdKey.keys.keys\n .map(k => parseKey(k))\n .filter(Boolean);\n return `ThresholdKey (${key.thresholdKey.threshold} of ${\n keys.length\n }): [${keys.join(', ')}]`;\n }\n if (key.delegatableContractId) {\n return `DelegatableContractID: ${new ContractId(\n key.delegatableContractId.shardNum ?? 0,\n key.delegatableContractId.realmNum ?? 0,\n key.delegatableContractId.contractNum ?? 0,\n ).toString()}`;\n }\n if (Object.keys(key).length === 0) {\n return 'Empty Key Structure';\n }\n\n return 'Unknown or Unset Key Type';\n}\n\n/**\n * Extract TransactionBody from Transaction object using protobuf parsing\n * This replaces fragile constructor name checking with reliable protobuf data\n */\nexport function extractTransactionBody(\n transaction: Transaction,\n): proto.ITransactionBody | null {\n try {\n const bytes = transaction.toBytes ? transaction.toBytes() : undefined;\n if (!bytes) {\n return null;\n }\n\n const decoded = proto.TransactionList.decode(bytes);\n if (!decoded.transactionList || decoded.transactionList.length === 0) {\n return null;\n }\n\n const tx = decoded.transactionList[0];\n\n if (tx.bodyBytes && tx.bodyBytes.length > 0) {\n return proto.TransactionBody.decode(tx.bodyBytes);\n }\n\n if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {\n const signedTx = proto.SignedTransaction.decode(\n tx.signedTransactionBytes,\n );\n if (signedTx.bodyBytes) {\n return proto.TransactionBody.decode(signedTx.bodyBytes);\n }\n }\n\n return null;\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Check if transaction has specific transaction type using protobuf data\n * This replaces constructor name checking with reliable protobuf field detection\n */\nexport function hasTransactionType(\n transaction: Transaction,\n transactionField: keyof proto.ITransactionBody,\n): boolean {\n const txBody = extractTransactionBody(transaction);\n return !!(txBody && txBody[transactionField]);\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,SACd,KACoB;AACpB,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,MAAI,IAAI,YAAY;AAClB,WAAO,eAAe,IAAI;AAAA,MACxB,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,eAAe;AAAA,IAAA,EAC9B,UAAU;AAAA,EACd;AACA,MAAI,IAAI,SAAS;AACf,WAAO,YAAY,OAAO,KAAK,IAAI,OAAO,EAAE,SAAS,KAAK,CAAC;AAAA,EAC7D;AACA,MAAI,IAAI,gBAAgB;AACtB,WAAO,oBAAoB,OAAO,KAAK,IAAI,cAAc,EAAE;AAAA,MACzD;AAAA,IAAA,CACD;AAAA,EACH;AACA,MAAI,KAAK,SAAS,MAAM,SAAS,GAAG;AAClC,UAAM,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO;AAClE,WAAO,YAAY,KAAK,MAAM,YAAY,KAAK,KAAK,IAAI,CAAC;AAAA,EAC3D;AACA,MAAI,KAAK,cAAc,MAAM,MAAM,SAAS,GAAG;AAC7C,UAAM,OAAO,IAAI,aAAa,KAAK,KAChC,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EACpB,OAAO,OAAO;AACjB,WAAO,iBAAiB,IAAI,aAAa,SAAS,OAChD,KAAK,MACP,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,EACxB;AACA,MAAI,IAAI,uBAAuB;AAC7B,WAAO,0BAA0B,IAAI;AAAA,MACnC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,eAAe;AAAA,IAAA,EACzC,UAAU;AAAA,EACd;AACA,MAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AACjC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMO,SAAS,uBACd,aAC+B;AAC/B,MAAI;AACF,UAAM,QAAQ,YAAY,UAAU,YAAY,YAAY;AAC5D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,MAAM,gBAAgB,OAAO,KAAK;AAClD,QAAI,CAAC,QAAQ,mBAAmB,QAAQ,gBAAgB,WAAW,GAAG;AACpE,aAAO;AAAA,IACT;AAEA,UAAM,KAAK,QAAQ,gBAAgB,CAAC;AAEpC,QAAI,GAAG,aAAa,GAAG,UAAU,SAAS,GAAG;AAC3C,aAAO,MAAM,gBAAgB,OAAO,GAAG,SAAS;AAAA,IAClD;AAEA,QAAI,GAAG,0BAA0B,GAAG,uBAAuB,SAAS,GAAG;AACrE,YAAM,WAAW,MAAM,kBAAkB;AAAA,QACvC,GAAG;AAAA,MAAA;AAEL,UAAI,SAAS,WAAW;AACtB,eAAO,MAAM,gBAAgB,OAAO,SAAS,SAAS;AAAA,MACxD;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;AAMO,SAAS,mBACd,aACA,kBACS;AACT,QAAM,SAAS,uBAAuB,WAAW;AACjD,SAAO,CAAC,EAAE,UAAU,OAAO,gBAAgB;AAC7C;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es81.js","sources":["../../src/utils/transaction-type-registries.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\n\n/**\n * Registry for mapping protobuf transaction body fields to transaction type strings\n * This eliminates the massive if-else chain in detectTransactionTypeFromBody\n */\nexport const protoFieldToTypeRegistry: Partial<\n Record<\n keyof proto.TransactionBody,\n { type: string; humanReadableType: string }\n >\n> = {\n tokenCreation: { type: 'TOKENCREATE', humanReadableType: 'Token Creation' },\n tokenAirdrop: { type: 'TOKENAIRDROP', humanReadableType: 'Token Airdrop' },\n tokenMint: { type: 'TOKENMINT', humanReadableType: 'Token Mint' },\n tokenBurn: { type: 'TOKENBURN', humanReadableType: 'Token Burn' },\n tokenUpdate: { type: 'TOKENUPDATE', humanReadableType: 'Token Update' },\n tokenDeletion: { type: 'TOKENDELETE', humanReadableType: 'Token Deletion' },\n tokenAssociate: {\n type: 'TOKENASSOCIATE',\n humanReadableType: 'Token Association',\n },\n tokenDissociate: {\n type: 'TOKENDISSOCIATE',\n humanReadableType: 'Token Dissociation',\n },\n tokenFreeze: { type: 'TOKENFREEZE', humanReadableType: 'Token Freeze' },\n tokenUnfreeze: { type: 'TOKENUNFREEZE', humanReadableType: 'Token Unfreeze' },\n tokenGrantKyc: {\n type: 'TOKENGRANTKYC',\n humanReadableType: 'Token Grant KYC',\n },\n tokenRevokeKyc: {\n type: 'TOKENREVOKEKYC',\n humanReadableType: 'Token Revoke KYC',\n },\n tokenPause: { type: 'TOKENPAUSE', humanReadableType: 'Token Pause' },\n tokenUnpause: { type: 'TOKENUNPAUSE', humanReadableType: 'Token Unpause' },\n tokenWipe: { type: 'TOKENWIPE', humanReadableType: 'Token Wipe' },\n tokenFeeScheduleUpdate: {\n type: 'TOKENFEESCHEDULEUPDATE',\n humanReadableType: 'Token Fee Schedule Update',\n },\n tokenCancelAirdrop: {\n type: 'TOKENCANCELAIRDROP',\n humanReadableType: 'Cancel Token Airdrop',\n },\n tokenClaimAirdrop: {\n type: 'TOKENCLAIMAIRDROP',\n humanReadableType: 'Claim Token Airdrop',\n },\n tokenReject: { type: 'TOKENREJECT', humanReadableType: 'Token Reject' },\n tokenUpdateNfts: {\n type: 'TOKENUPDATENFTS',\n humanReadableType: 'Update NFT Metadata',\n },\n\n cryptoTransfer: {\n type: 'CRYPTOTRANSFER',\n humanReadableType: 'Crypto Transfer',\n },\n cryptoCreateAccount: {\n type: 'ACCOUNTCREATE',\n humanReadableType: 'Account Creation',\n },\n cryptoUpdateAccount: {\n type: 'ACCOUNTUPDATE',\n humanReadableType: 'Account Update',\n },\n cryptoDelete: {\n type: 'ACCOUNTDELETE',\n humanReadableType: 'Account Deletion',\n },\n cryptoApproveAllowance: {\n type: 'APPROVEALLOWANCE',\n humanReadableType: 'Approve Allowance',\n },\n cryptoDeleteAllowance: {\n type: 'DELETEALLOWANCE',\n humanReadableType: 'Delete Allowance',\n },\n cryptoAddLiveHash: {\n type: 'CRYPTOADDLIVEHASH',\n humanReadableType: 'Add Live Hash',\n },\n cryptoDeleteLiveHash: {\n type: 'CRYPTODELETELIVEHASH',\n humanReadableType: 'Delete Live Hash',\n },\n\n consensusCreateTopic: {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Creation',\n },\n consensusSubmitMessage: {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n },\n consensusUpdateTopic: {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n },\n consensusDeleteTopic: {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Deletion',\n },\n uncheckedSubmit: {\n type: 'UNCHECKEDSUBMIT',\n humanReadableType: 'Unchecked Submit',\n },\n\n contractCall: { type: 'CONTRACTCALL', humanReadableType: 'Contract Call' },\n contractCreateInstance: {\n type: 'CONTRACTCREATE',\n humanReadableType: 'Contract Creation',\n },\n contractUpdateInstance: {\n type: 'CONTRACTUPDATE',\n humanReadableType: 'Contract Update',\n },\n contractDeleteInstance: {\n type: 'CONTRACTDELETE',\n humanReadableType: 'Contract Deletion',\n },\n ethereumTransaction: {\n type: 'ETHEREUMTRANSACTION',\n humanReadableType: 'Ethereum Transaction',\n },\n\n fileCreate: { type: 'FILECREATE', humanReadableType: 'File Creation' },\n fileUpdate: { type: 'FILEUPDATE', humanReadableType: 'File Update' },\n fileDelete: { type: 'FILEDELETE', humanReadableType: 'File Deletion' },\n fileAppend: { type: 'FILEAPPEND', humanReadableType: 'File Append' },\n\n scheduleCreate: {\n type: 'SCHEDULECREATE',\n humanReadableType: 'Schedule Creation',\n },\n scheduleSign: { type: 'SCHEDULESIGN', humanReadableType: 'Schedule Sign' },\n scheduleDelete: {\n type: 'SCHEDULEDELETE',\n humanReadableType: 'Schedule Deletion',\n },\n\n freeze: { type: 'FREEZE', humanReadableType: 'Network Freeze' },\n systemDelete: { type: 'SYSTEMDELETE', humanReadableType: 'System Delete' },\n systemUndelete: {\n type: 'SYSTEMUNDELETE',\n humanReadableType: 'System Undelete',\n },\n\n nodeCreate: { type: 'NODECREATE', humanReadableType: 'Node Creation' },\n nodeUpdate: { type: 'NODEUPDATE', humanReadableType: 'Node Update' },\n nodeDelete: { type: 'NODEDELETE', humanReadableType: 'Node Deletion' },\n nodeStakeUpdate: {\n type: 'NODESTAKEUPDATE',\n humanReadableType: 'Node Stake Update',\n },\n\n utilPrng: { type: 'PRNG', humanReadableType: 'Pseudo Random Number' },\n\n atomicBatch: { type: 'ATOMICBATCH', humanReadableType: 'Atomic Batch' },\n\n stateSignatureTransaction: {\n type: 'STATESIGNATURETRANSACTION',\n humanReadableType: 'State Signature',\n },\n\n historyProofSignature: {\n type: 'HISTORYPROOFSIGNATURE',\n humanReadableType: 'History Proof Signature',\n },\n historyProofKeyPublication: {\n type: 'HISTORYPROOFKEYPUBLICATION',\n humanReadableType: 'History Proof Key Publication',\n },\n historyProofVote: {\n type: 'HISTORYPROOFVOTE',\n humanReadableType: 'History Proof Vote',\n },\n\n hintsPreprocessingVote: {\n type: 'HINTSPREPROCESSINGVOTE',\n humanReadableType: 'Hints Preprocessing Vote',\n },\n hintsKeyPublication: {\n type: 'HINTSKEYPUBLICATION',\n humanReadableType: 'Hints Key Publication',\n },\n hintsPartialSignature: {\n type: 'HINTSPARTIALSIGNATURE',\n humanReadableType: 'Hints Partial Signature',\n },\n\n crsPublication: {\n type: 'CRSPUBLICATION',\n humanReadableType: 'CRS Publication',\n },\n\n transactionID: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n nodeAccountID: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n transactionFee: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n transactionValidDuration: {\n type: 'UNKNOWN',\n humanReadableType: 'Unknown Transaction',\n },\n generateRecord: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n memo: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n batchKey: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n maxCustomFees: { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' },\n} as const;\n\n/**\n * Registry for human-readable transaction type names\n * This eliminates the conditional logic in getHumanReadableType\n */\nexport const humanReadableTypeRegistry: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n CRYPTOTRANSFER: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n ACCOUNTCREATE: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n ACCOUNTUPDATE: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoDelete: 'Delete Account',\n ACCOUNTDELETE: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n APPROVEALLOWANCE: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n DELETEALLOWANCE: 'Delete Allowance',\n CRYPTOADDLIVEHASH: 'Add Live Hash',\n CRYPTODELETELIVEHASH: 'Delete Live Hash',\n\n consensusCreateTopic: 'Create Topic',\n TOPICCREATE: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n TOPICUPDATE: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n CONSENSUSSUBMITMESSAGE: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n TOPICDELETE: 'Delete Topic',\n UNCHECKEDSUBMIT: 'Unchecked Submit',\n\n fileCreate: 'Create File',\n FILECREATE: 'Create File',\n fileAppend: 'Append File',\n FILEAPPEND: 'Append File',\n fileUpdate: 'Update File',\n FILEUPDATE: 'Update File',\n fileDelete: 'Delete File',\n FILEDELETE: 'Delete File',\n\n contractCall: 'Contract Call',\n CONTRACTCALL: 'Contract Call',\n contractCreate: 'Create Contract',\n CONTRACTCREATE: 'Create Contract',\n contractUpdate: 'Update Contract',\n CONTRACTUPDATE: 'Update Contract',\n contractDelete: 'Delete Contract',\n CONTRACTDELETE: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n ETHEREUMTRANSACTION: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n TOKENCREATE: 'Create Token',\n tokenUpdate: 'Update Token',\n TOKENUPDATE: 'Update Token',\n tokenDelete: 'Delete Token',\n TOKENDELETE: 'Delete Token',\n tokenAssociate: 'Associate Token',\n TOKENASSOCIATE: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n TOKENDISSOCIATE: 'Dissociate Token',\n tokenMint: 'Mint Token',\n TOKENMINT: 'Mint Token',\n tokenBurn: 'Burn Token',\n TOKENBURN: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n TOKENFEESCHEDULEUPDATE: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n TOKENFREEZE: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n TOKENUNFREEZE: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n TOKENGRANTKYC: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n TOKENREVOKEKYC: 'Revoke KYC',\n tokenPause: 'Pause Token',\n TOKENPAUSE: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n TOKENUNPAUSE: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n TOKENWIPE: 'Wipe Token',\n tokenAirdrop: 'Token Airdrop',\n TOKENAIRDROP: 'Token Airdrop',\n TOKENCANCELAIRDROP: 'Cancel Token Airdrop',\n TOKENCLAIMAIRDROP: 'Claim Token Airdrop',\n TOKENREJECT: 'Token Reject',\n TOKENUPDATENFTS: 'Update NFT Metadata',\n\n scheduleCreate: 'Create Schedule',\n SCHEDULECREATE: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n SCHEDULESIGN: 'Sign Schedule',\n SCHEDULEDELETE: 'Delete Schedule',\n\n FREEZE: 'Network Freeze',\n SYSTEMDELETE: 'System Delete',\n SYSTEMUNDELETE: 'System Undelete',\n\n NODECREATE: 'Create Node',\n NODEUPDATE: 'Update Node',\n NODEDELETE: 'Delete Node',\n NODESTAKEUPDATE: 'Update Node Stake',\n\n utilPrng: 'Generate Random Number',\n PRNG: 'Generate Random Number',\n\n ATOMICBATCH: 'Atomic Batch',\n STATESIGNATURETRANSACTION: 'State Signature',\n HISTORYPROOFSIGNATURE: 'History Proof Signature',\n HISTORYPROOFKEYPUBLICATION: 'History Proof Key Publication',\n HISTORYPROOFVOTE: 'History Proof Vote',\n HINTSPREPROCESSINGVOTE: 'Hints Preprocessing Vote',\n HINTSKEYPUBLICATION: 'Hints Key Publication',\n HINTSPARTIALSIGNATURE: 'Hints Partial Signature',\n CRSPUBLICATION: 'CRS Publication',\n\n unknown: 'Unknown Transaction',\n UNKNOWN: 'Unknown Transaction',\n} as const;\n\n/**\n * Registry for schedulable transaction body field to transaction type mapping\n * This eliminates the conditional logic in getTransactionType\n */\nexport const schedulableTransactionTypeRegistry: Record<string, string> = {\n tokenCreation: 'tokenCreate',\n tokenAirdrop: 'tokenAirdrop',\n cryptoTransfer: 'cryptoTransfer',\n consensusSubmitMessage: 'consensusSubmitMessage',\n contractCall: 'contractCall',\n cryptoCreateAccount: 'cryptoCreateAccount',\n cryptoUpdateAccount: 'cryptoUpdateAccount',\n cryptoApproveAllowance: 'cryptoApproveAllowance',\n cryptoDeleteAllowance: 'cryptoDeleteAllowance',\n cryptoDelete: 'cryptoDelete',\n consensusCreateTopic: 'consensusCreateTopic',\n consensusUpdateTopic: 'consensusUpdateTopic',\n consensusDeleteTopic: 'consensusDeleteTopic',\n fileCreate: 'fileCreate',\n fileAppend: 'fileAppend',\n fileUpdate: 'fileUpdate',\n fileDelete: 'fileDelete',\n contractCreateInstance: 'contractCreate',\n contractUpdateInstance: 'contractUpdate',\n contractDeleteInstance: 'contractDelete',\n tokenUpdate: 'tokenUpdate',\n tokenDeletion: 'tokenDelete',\n tokenAssociate: 'tokenAssociate',\n tokenDissociate: 'tokenDissociate',\n tokenMint: 'tokenMint',\n tokenBurn: 'tokenBurn',\n tokenFeeScheduleUpdate: 'tokenFeeScheduleUpdate',\n tokenFreeze: 'tokenFreeze',\n tokenUnfreeze: 'tokenUnfreeze',\n tokenGrantKyc: 'tokenGrantKyc',\n tokenRevokeKyc: 'tokenRevokeKyc',\n tokenPause: 'tokenPause',\n tokenUnpause: 'tokenUnpause',\n tokenWipe: 'tokenWipe',\n utilPrng: 'utilPrng',\n} as const;\n\n/**\n * Get transaction type and human readable type from protobuf transaction body\n * Replaces the massive if-else chain in detectTransactionTypeFromBody\n */\nexport function getTransactionTypeFromBody(txBody: proto.TransactionBody): {\n type: string;\n humanReadableType: string;\n} {\n for (const [field, typeInfo] of Object.entries(protoFieldToTypeRegistry)) {\n if (txBody[field as keyof proto.TransactionBody]) {\n return typeInfo;\n }\n }\n\n return { type: 'UNKNOWN', humanReadableType: 'Unknown Transaction' };\n}\n\n/**\n * Get transaction type from schedulable transaction body\n * Replaces the conditional logic in getTransactionType\n */\nexport function getSchedulableTransactionType(\n txBody: proto.SchedulableTransactionBody,\n): string {\n for (const [field, type] of Object.entries(\n schedulableTransactionTypeRegistry,\n )) {\n if (txBody[field as keyof proto.SchedulableTransactionBody]) {\n return type;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Get human readable transaction type\n * Replaces the conditional logic in getHumanReadableType\n */\nexport function getHumanReadableTransactionType(type: string): string {\n return humanReadableTypeRegistry[type] || 'Unknown Transaction';\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,79 @@
|
|
|
1
|
-
|
|
1
|
+
import { proto } from "@hashgraph/proto";
|
|
2
|
+
import { ContractId } from "@hashgraph/sdk";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
function parseKey(key) {
|
|
5
|
+
if (!key) {
|
|
6
|
+
return void 0;
|
|
7
|
+
}
|
|
8
|
+
if (key.contractID) {
|
|
9
|
+
return `ContractID: ${new ContractId(
|
|
10
|
+
key.contractID.shardNum ?? 0,
|
|
11
|
+
key.contractID.realmNum ?? 0,
|
|
12
|
+
key.contractID.contractNum ?? 0
|
|
13
|
+
).toString()}`;
|
|
14
|
+
}
|
|
15
|
+
if (key.ed25519) {
|
|
16
|
+
return `ED25519: ${Buffer.from(key.ed25519).toString("hex")}`;
|
|
17
|
+
}
|
|
18
|
+
if (key.ECDSASecp256k1) {
|
|
19
|
+
return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(
|
|
20
|
+
"hex"
|
|
21
|
+
)}`;
|
|
22
|
+
}
|
|
23
|
+
if (key?.keyList?.keys?.length > 0) {
|
|
24
|
+
const keys = key.keyList.keys.map((k) => parseKey(k)).filter(Boolean);
|
|
25
|
+
return `KeyList (${keys.length} keys): [${keys.join(", ")}]`;
|
|
26
|
+
}
|
|
27
|
+
if (key?.thresholdKey?.keys?.keys?.length > 0) {
|
|
28
|
+
const keys = key.thresholdKey.keys.keys.map((k) => parseKey(k)).filter(Boolean);
|
|
29
|
+
return `ThresholdKey (${key.thresholdKey.threshold} of ${keys.length}): [${keys.join(", ")}]`;
|
|
30
|
+
}
|
|
31
|
+
if (key.delegatableContractId) {
|
|
32
|
+
return `DelegatableContractID: ${new ContractId(
|
|
33
|
+
key.delegatableContractId.shardNum ?? 0,
|
|
34
|
+
key.delegatableContractId.realmNum ?? 0,
|
|
35
|
+
key.delegatableContractId.contractNum ?? 0
|
|
36
|
+
).toString()}`;
|
|
37
|
+
}
|
|
38
|
+
if (Object.keys(key).length === 0) {
|
|
39
|
+
return "Empty Key Structure";
|
|
40
|
+
}
|
|
41
|
+
return "Unknown or Unset Key Type";
|
|
42
|
+
}
|
|
43
|
+
function extractTransactionBody(transaction) {
|
|
44
|
+
try {
|
|
45
|
+
const bytes = transaction.toBytes ? transaction.toBytes() : void 0;
|
|
46
|
+
if (!bytes) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const decoded = proto.TransactionList.decode(bytes);
|
|
50
|
+
if (!decoded.transactionList || decoded.transactionList.length === 0) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const tx = decoded.transactionList[0];
|
|
54
|
+
if (tx.bodyBytes && tx.bodyBytes.length > 0) {
|
|
55
|
+
return proto.TransactionBody.decode(tx.bodyBytes);
|
|
56
|
+
}
|
|
57
|
+
if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
|
|
58
|
+
const signedTx = proto.SignedTransaction.decode(
|
|
59
|
+
tx.signedTransactionBytes
|
|
60
|
+
);
|
|
61
|
+
if (signedTx.bodyBytes) {
|
|
62
|
+
return proto.TransactionBody.decode(signedTx.bodyBytes);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
} catch (error) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function hasTransactionType(transaction, transactionField) {
|
|
71
|
+
const txBody = extractTransactionBody(transaction);
|
|
72
|
+
return !!(txBody && txBody[transactionField]);
|
|
73
|
+
}
|
|
2
74
|
export {
|
|
3
|
-
|
|
75
|
+
extractTransactionBody,
|
|
76
|
+
hasTransactionType,
|
|
77
|
+
parseKey
|
|
4
78
|
};
|
|
5
79
|
//# sourceMappingURL=standards-sdk.es82.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es82.js","sources":["../../src/utils/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es82.js","sources":["../../src/utils/parsers/parser-utils.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { ContractId, Transaction } from '@hashgraph/sdk';\nimport { Buffer } from 'buffer';\n\nexport function parseKey(\n key: proto.IKey | null | undefined,\n): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.contractID) {\n return `ContractID: ${new ContractId(\n key.contractID.shardNum ?? 0,\n key.contractID.realmNum ?? 0,\n key.contractID.contractNum ?? 0,\n ).toString()}`;\n }\n if (key.ed25519) {\n return `ED25519: ${Buffer.from(key.ed25519).toString('hex')}`;\n }\n if (key.ECDSASecp256k1) {\n return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(\n 'hex',\n )}`;\n }\n if (key?.keyList?.keys?.length > 0) {\n const keys = key.keyList.keys.map(k => parseKey(k)).filter(Boolean);\n return `KeyList (${keys.length} keys): [${keys.join(', ')}]`;\n }\n if (key?.thresholdKey?.keys?.keys?.length > 0) {\n const keys = key.thresholdKey.keys.keys\n .map(k => parseKey(k))\n .filter(Boolean);\n return `ThresholdKey (${key.thresholdKey.threshold} of ${\n keys.length\n }): [${keys.join(', ')}]`;\n }\n if (key.delegatableContractId) {\n return `DelegatableContractID: ${new ContractId(\n key.delegatableContractId.shardNum ?? 0,\n key.delegatableContractId.realmNum ?? 0,\n key.delegatableContractId.contractNum ?? 0,\n ).toString()}`;\n }\n if (Object.keys(key).length === 0) {\n return 'Empty Key Structure';\n }\n\n return 'Unknown or Unset Key Type';\n}\n\n/**\n * Extract TransactionBody from Transaction object using protobuf parsing\n * This replaces fragile constructor name checking with reliable protobuf data\n */\nexport function extractTransactionBody(\n transaction: Transaction,\n): proto.ITransactionBody | null {\n try {\n const bytes = transaction.toBytes ? transaction.toBytes() : undefined;\n if (!bytes) {\n return null;\n }\n\n const decoded = proto.TransactionList.decode(bytes);\n if (!decoded.transactionList || decoded.transactionList.length === 0) {\n return null;\n }\n\n const tx = decoded.transactionList[0];\n\n if (tx.bodyBytes && tx.bodyBytes.length > 0) {\n return proto.TransactionBody.decode(tx.bodyBytes);\n }\n\n if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {\n const signedTx = proto.SignedTransaction.decode(\n tx.signedTransactionBytes,\n );\n if (signedTx.bodyBytes) {\n return proto.TransactionBody.decode(signedTx.bodyBytes);\n }\n }\n\n return null;\n } catch (error) {\n return null;\n }\n}\n\n/**\n * Check if transaction has specific transaction type using protobuf data\n * This replaces constructor name checking with reliable protobuf field detection\n */\nexport function hasTransactionType(\n transaction: Transaction,\n transactionField: keyof proto.ITransactionBody,\n): boolean {\n const txBody = extractTransactionBody(transaction);\n return !!(txBody && txBody[transactionField]);\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,SACd,KACoB;AACpB,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,MAAI,IAAI,YAAY;AAClB,WAAO,eAAe,IAAI;AAAA,MACxB,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,eAAe;AAAA,IAAA,EAC9B,UAAU;AAAA,EACd;AACA,MAAI,IAAI,SAAS;AACf,WAAO,YAAY,OAAO,KAAK,IAAI,OAAO,EAAE,SAAS,KAAK,CAAC;AAAA,EAC7D;AACA,MAAI,IAAI,gBAAgB;AACtB,WAAO,oBAAoB,OAAO,KAAK,IAAI,cAAc,EAAE;AAAA,MACzD;AAAA,IAAA,CACD;AAAA,EACH;AACA,MAAI,KAAK,SAAS,MAAM,SAAS,GAAG;AAClC,UAAM,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO;AAClE,WAAO,YAAY,KAAK,MAAM,YAAY,KAAK,KAAK,IAAI,CAAC;AAAA,EAC3D;AACA,MAAI,KAAK,cAAc,MAAM,MAAM,SAAS,GAAG;AAC7C,UAAM,OAAO,IAAI,aAAa,KAAK,KAChC,IAAI,CAAA,MAAK,SAAS,CAAC,CAAC,EACpB,OAAO,OAAO;AACjB,WAAO,iBAAiB,IAAI,aAAa,SAAS,OAChD,KAAK,MACP,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,EACxB;AACA,MAAI,IAAI,uBAAuB;AAC7B,WAAO,0BAA0B,IAAI;AAAA,MACnC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,eAAe;AAAA,IAAA,EACzC,UAAU;AAAA,EACd;AACA,MAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AACjC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMO,SAAS,uBACd,aAC+B;AAC/B,MAAI;AACF,UAAM,QAAQ,YAAY,UAAU,YAAY,YAAY;AAC5D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,MAAM,gBAAgB,OAAO,KAAK;AAClD,QAAI,CAAC,QAAQ,mBAAmB,QAAQ,gBAAgB,WAAW,GAAG;AACpE,aAAO;AAAA,IACT;AAEA,UAAM,KAAK,QAAQ,gBAAgB,CAAC;AAEpC,QAAI,GAAG,aAAa,GAAG,UAAU,SAAS,GAAG;AAC3C,aAAO,MAAM,gBAAgB,OAAO,GAAG,SAAS;AAAA,IAClD;AAEA,QAAI,GAAG,0BAA0B,GAAG,uBAAuB,SAAS,GAAG;AACrE,YAAM,WAAW,MAAM,kBAAkB;AAAA,QACvC,GAAG;AAAA,MAAA;AAEL,UAAI,SAAS,WAAW;AACtB,eAAO,MAAM,gBAAgB,OAAO,SAAS,SAAS;AAAA,MACxD;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;AAMO,SAAS,mBACd,aACA,kBACS;AACT,QAAM,SAAS,uBAAuB,WAAW;AACjD,SAAO,CAAC,EAAE,UAAU,OAAO,gBAAgB;AAC7C;"}
|