@hashgraphonline/standards-sdk 0.1.169 → 0.1.170

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.
Files changed (44) hide show
  1. package/dist/es/standards-sdk.es128.js +5 -5
  2. package/dist/es/standards-sdk.es138.js +1 -1
  3. package/dist/es/standards-sdk.es139.js +1 -1
  4. package/dist/es/standards-sdk.es140.js +5 -5
  5. package/dist/es/standards-sdk.es142.js +1 -1
  6. package/dist/es/standards-sdk.es148.js +1 -1
  7. package/dist/es/standards-sdk.es161.js +54 -15
  8. package/dist/es/standards-sdk.es161.js.map +1 -1
  9. package/dist/es/standards-sdk.es162.js +76 -48
  10. package/dist/es/standards-sdk.es162.js.map +1 -1
  11. package/dist/es/standards-sdk.es163.js +66 -69
  12. package/dist/es/standards-sdk.es163.js.map +1 -1
  13. package/dist/es/standards-sdk.es164.js +180 -61
  14. package/dist/es/standards-sdk.es164.js.map +1 -1
  15. package/dist/es/standards-sdk.es165.js +14 -197
  16. package/dist/es/standards-sdk.es165.js.map +1 -1
  17. package/dist/es/standards-sdk.es167.js +165 -66
  18. package/dist/es/standards-sdk.es167.js.map +1 -1
  19. package/dist/es/standards-sdk.es168.js +289 -139
  20. package/dist/es/standards-sdk.es168.js.map +1 -1
  21. package/dist/es/standards-sdk.es169.js +298 -274
  22. package/dist/es/standards-sdk.es169.js.map +1 -1
  23. package/dist/es/standards-sdk.es170.js +369 -262
  24. package/dist/es/standards-sdk.es170.js.map +1 -1
  25. package/dist/es/standards-sdk.es171.js +194 -316
  26. package/dist/es/standards-sdk.es171.js.map +1 -1
  27. package/dist/es/standards-sdk.es172.js +64 -319
  28. package/dist/es/standards-sdk.es172.js.map +1 -1
  29. package/dist/es/standards-sdk.es173.js +63 -66
  30. package/dist/es/standards-sdk.es173.js.map +1 -1
  31. package/dist/es/standards-sdk.es174.js +1 -1
  32. package/dist/es/standards-sdk.es178.js +1 -1
  33. package/dist/es/standards-sdk.es56.js +1 -1
  34. package/dist/es/standards-sdk.es59.js +1 -1
  35. package/dist/es/standards-sdk.es60.js +1 -1
  36. package/dist/es/standards-sdk.es62.js +1 -1
  37. package/dist/es/standards-sdk.es63.js +2 -2
  38. package/dist/es/standards-sdk.es64.js +1 -1
  39. package/dist/es/standards-sdk.es65.js +1 -1
  40. package/dist/es/standards-sdk.es66.js +1 -1
  41. package/dist/es/standards-sdk.es69.js +1 -1
  42. package/dist/es/standards-sdk.es71.js +1 -1
  43. package/dist/es/standards-sdk.es72.js +1 -1
  44. package/package.json +1 -1
@@ -1,76 +1,175 @@
1
- import BigNumber from "bignumber.js";
2
- const TINYBAR_DIVISOR = 1e8;
3
- function safePositiveTransfers(transfers) {
4
- if (!Array.isArray(transfers)) {
5
- return [];
6
- }
7
- return transfers.filter(
8
- (transfer) => typeof transfer.amount === "number" && transfer.amount > 0
9
- ).map((transfer) => ({
10
- account: transfer.account,
11
- amountTinybar: transfer.amount
12
- }));
13
- }
14
- function resolvePayerDebitTinybar(transfers, payerAccountId) {
15
- if (!Array.isArray(transfers)) {
16
- return null;
17
- }
18
- const payerDebit = transfers.find(
19
- (transfer) => transfer.account === payerAccountId && typeof transfer.amount === "number" && transfer.amount < 0
20
- );
21
- if (!payerDebit || typeof payerDebit.amount !== "number") {
22
- return null;
23
- }
24
- return Math.abs(payerDebit.amount);
25
- }
26
- function toHbarString(tinybar) {
27
- return new BigNumber(tinybar).dividedBy(TINYBAR_DIVISOR).toFixed();
28
- }
29
- function fallbackFeeTinybar(chargedTxFee) {
30
- if (typeof chargedTxFee !== "number" || !Number.isFinite(chargedTxFee)) {
31
- return null;
1
+ import { Long, AccountId } from "@hashgraph/sdk";
2
+ import { parseKey } from "./standards-sdk.es172.js";
3
+ import { Buffer } from "buffer";
4
+ class HCSParser {
5
+ static parseConsensusCreateTopic(body) {
6
+ if (!body) return void 0;
7
+ const data = {};
8
+ if (body.memo) {
9
+ data.memo = body.memo;
10
+ }
11
+ data.adminKey = parseKey(body.adminKey);
12
+ data.submitKey = parseKey(body.submitKey);
13
+ if (body.autoRenewPeriod?.seconds) {
14
+ data.autoRenewPeriod = Long.fromValue(
15
+ body.autoRenewPeriod.seconds
16
+ ).toString();
17
+ }
18
+ if (body.autoRenewAccount) {
19
+ data.autoRenewAccountId = new AccountId(
20
+ body.autoRenewAccount.shardNum ?? 0,
21
+ body.autoRenewAccount.realmNum ?? 0,
22
+ body.autoRenewAccount.accountNum ?? 0
23
+ ).toString();
24
+ }
25
+ return data;
32
26
  }
33
- if (chargedTxFee <= 0) {
34
- return null;
27
+ static parseConsensusSubmitMessage(body) {
28
+ if (!body) return void 0;
29
+ const data = {};
30
+ if (body.topicID) {
31
+ data.topicId = `${body.topicID.shardNum ?? 0}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
32
+ }
33
+ if (body.message?.length > 0) {
34
+ const messageBuffer = Buffer.from(body.message);
35
+ const utf8String = messageBuffer.toString("utf8");
36
+ if (/[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(utf8String) || utf8String.includes("�")) {
37
+ data.message = messageBuffer.toString("base64");
38
+ data.messageEncoding = "base64";
39
+ } else {
40
+ data.message = utf8String;
41
+ data.messageEncoding = "utf8";
42
+ }
43
+ }
44
+ if (body.chunkInfo) {
45
+ if (body.chunkInfo.initialTransactionID) {
46
+ const txId = body.chunkInfo.initialTransactionID.accountID;
47
+ const taValidStart = body.chunkInfo.initialTransactionID.transactionValidStart;
48
+ if (txId && taValidStart) {
49
+ data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${txId.realmNum ?? 0}.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${taValidStart.nanos ?? 0}`;
50
+ }
51
+ }
52
+ if (body.chunkInfo.number !== void 0 && body.chunkInfo.number !== null) {
53
+ data.chunkInfoNumber = body.chunkInfo.number;
54
+ }
55
+ if (body.chunkInfo.total !== void 0 && body.chunkInfo.total !== null) {
56
+ data.chunkInfoTotal = body.chunkInfo.total;
57
+ }
58
+ }
59
+ return data;
35
60
  }
36
- return chargedTxFee;
37
- }
38
- function computeInscriptionCostSummary(params) {
39
- const { txn, payerAccountId } = params;
40
- const positiveTransfers = safePositiveTransfers(txn.transfers);
41
- const payerDebitTinybar = resolvePayerDebitTinybar(
42
- txn.transfers,
43
- payerAccountId
44
- );
45
- const transferOutflowTinybar = payerDebitTinybar ?? positiveTransfers.reduce((sum, t) => sum + t.amountTinybar, 0);
46
- const chargedFeeTinybar = fallbackFeeTinybar(txn.charged_tx_fee);
47
- const resolvedTotalTinybar = transferOutflowTinybar > 0 ? transferOutflowTinybar : chargedFeeTinybar;
48
- if (!resolvedTotalTinybar || resolvedTotalTinybar <= 0) {
49
- return null;
61
+ static parseConsensusUpdateTopic(body) {
62
+ if (!body) return void 0;
63
+ const data = {};
64
+ if (body.topicID) {
65
+ data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
66
+ }
67
+ if (body.memo?.value !== void 0) {
68
+ data.memo = body.memo.value;
69
+ }
70
+ if (body.adminKey === null) {
71
+ data.clearAdminKey = true;
72
+ data.adminKey = void 0;
73
+ } else if (body.adminKey) {
74
+ data.adminKey = parseKey(body.adminKey);
75
+ } else {
76
+ data.adminKey = void 0;
77
+ }
78
+ if (body.submitKey === null) {
79
+ data.clearSubmitKey = true;
80
+ data.submitKey = void 0;
81
+ } else if (body.submitKey) {
82
+ data.submitKey = parseKey(body.submitKey);
83
+ } else {
84
+ data.submitKey = void 0;
85
+ }
86
+ if (body.autoRenewPeriod?.seconds) {
87
+ data.autoRenewPeriod = Long.fromValue(
88
+ body.autoRenewPeriod.seconds
89
+ ).toString();
90
+ }
91
+ if (body.autoRenewAccount) {
92
+ data.autoRenewAccountId = new AccountId(
93
+ body.autoRenewAccount.shardNum ?? 0,
94
+ body.autoRenewAccount.realmNum ?? 0,
95
+ body.autoRenewAccount.accountNum ?? 0
96
+ ).toString();
97
+ }
98
+ return data;
50
99
  }
51
- const totalCostHbar = toHbarString(resolvedTotalTinybar);
52
- const breakdownTransfers = positiveTransfers.length > 0 ? positiveTransfers.map((transfer) => ({
53
- to: transfer.account,
54
- amount: toHbarString(transfer.amountTinybar),
55
- description: `HBAR transfer from ${payerAccountId}`
56
- })) : [
57
- {
58
- to: "Hedera network",
59
- amount: totalCostHbar,
60
- description: `Transaction fee debited from ${payerAccountId}`
100
+ static parseConsensusDeleteTopic(body) {
101
+ if (!body) return void 0;
102
+ const data = {};
103
+ if (body.topicID) {
104
+ data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
61
105
  }
62
- ];
63
- return {
64
- totalTinybar: resolvedTotalTinybar,
65
- summary: {
66
- totalCostHbar,
67
- breakdown: {
68
- transfers: breakdownTransfers
106
+ return data;
107
+ }
108
+ /**
109
+ * Parse HCS transaction from Transaction object with comprehensive extraction
110
+ * This is the unified entry point that handles both protobuf and internal field extraction
111
+ */
112
+ static parseFromTransactionObject(transaction) {
113
+ try {
114
+ const transactionBody = transaction._transactionBody;
115
+ if (!transactionBody) {
116
+ return {};
117
+ }
118
+ if (transactionBody.consensusCreateTopic) {
119
+ const consensusCreateTopic = this.parseConsensusCreateTopic(
120
+ transactionBody.consensusCreateTopic
121
+ );
122
+ if (consensusCreateTopic) {
123
+ return {
124
+ type: "TOPICCREATE",
125
+ humanReadableType: "Topic Create",
126
+ consensusCreateTopic
127
+ };
128
+ }
129
+ }
130
+ if (transactionBody.consensusSubmitMessage) {
131
+ const consensusSubmitMessage = this.parseConsensusSubmitMessage(
132
+ transactionBody.consensusSubmitMessage
133
+ );
134
+ if (consensusSubmitMessage) {
135
+ return {
136
+ type: "CONSENSUSSUBMITMESSAGE",
137
+ humanReadableType: "Submit Message",
138
+ consensusSubmitMessage
139
+ };
140
+ }
69
141
  }
142
+ if (transactionBody.consensusUpdateTopic) {
143
+ const consensusUpdateTopic = this.parseConsensusUpdateTopic(
144
+ transactionBody.consensusUpdateTopic
145
+ );
146
+ if (consensusUpdateTopic) {
147
+ return {
148
+ type: "TOPICUPDATE",
149
+ humanReadableType: "Topic Update",
150
+ consensusUpdateTopic
151
+ };
152
+ }
153
+ }
154
+ if (transactionBody.consensusDeleteTopic) {
155
+ const consensusDeleteTopic = this.parseConsensusDeleteTopic(
156
+ transactionBody.consensusDeleteTopic
157
+ );
158
+ if (consensusDeleteTopic) {
159
+ return {
160
+ type: "TOPICDELETE",
161
+ humanReadableType: "Topic Delete",
162
+ consensusDeleteTopic
163
+ };
164
+ }
165
+ }
166
+ return {};
167
+ } catch (error) {
168
+ return {};
70
169
  }
71
- };
170
+ }
72
171
  }
73
172
  export {
74
- computeInscriptionCostSummary
173
+ HCSParser
75
174
  };
76
175
  //# sourceMappingURL=standards-sdk.es167.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es167.js","sources":["../../src/inscribe/inscription-cost.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { Transaction } from '../services/types';\nimport { QuoteResult, InscriptionCostSummary } from './types';\n\nconst TINYBAR_DIVISOR = 100000000;\n\ntype MirrorNodeTransactionLike = Pick<\n Transaction,\n 'charged_tx_fee' | 'transfers'\n>;\n\ntype CostTransfer = QuoteResult['breakdown']['transfers'][number];\n\nfunction safePositiveTransfers(\n transfers: Transaction['transfers'] | undefined,\n): Array<{ account: string; amountTinybar: number }> {\n if (!Array.isArray(transfers)) {\n return [];\n }\n\n return transfers\n .filter(\n transfer => typeof transfer.amount === 'number' && transfer.amount > 0,\n )\n .map(transfer => ({\n account: transfer.account,\n amountTinybar: transfer.amount,\n }));\n}\n\nfunction resolvePayerDebitTinybar(\n transfers: Transaction['transfers'] | undefined,\n payerAccountId: string,\n): number | null {\n if (!Array.isArray(transfers)) {\n return null;\n }\n\n const payerDebit = transfers.find(\n transfer =>\n transfer.account === payerAccountId &&\n typeof transfer.amount === 'number' &&\n transfer.amount < 0,\n );\n\n if (!payerDebit || typeof payerDebit.amount !== 'number') {\n return null;\n }\n\n return Math.abs(payerDebit.amount);\n}\n\nfunction toHbarString(tinybar: number): string {\n return new BigNumber(tinybar).dividedBy(TINYBAR_DIVISOR).toFixed();\n}\n\nfunction fallbackFeeTinybar(chargedTxFee: unknown): number | null {\n if (typeof chargedTxFee !== 'number' || !Number.isFinite(chargedTxFee)) {\n return null;\n }\n if (chargedTxFee <= 0) {\n return null;\n }\n return chargedTxFee;\n}\n\nexport function computeInscriptionCostSummary(params: {\n txn: MirrorNodeTransactionLike;\n payerAccountId: string;\n}): { summary: InscriptionCostSummary; totalTinybar: number } | null {\n const { txn, payerAccountId } = params;\n\n const positiveTransfers = safePositiveTransfers(txn.transfers);\n const payerDebitTinybar = resolvePayerDebitTinybar(\n txn.transfers,\n payerAccountId,\n );\n\n const transferOutflowTinybar =\n payerDebitTinybar ??\n positiveTransfers.reduce((sum, t) => sum + t.amountTinybar, 0);\n const chargedFeeTinybar = fallbackFeeTinybar(txn.charged_tx_fee);\n\n const resolvedTotalTinybar =\n transferOutflowTinybar > 0 ? transferOutflowTinybar : chargedFeeTinybar;\n\n if (!resolvedTotalTinybar || resolvedTotalTinybar <= 0) {\n return null;\n }\n\n const totalCostHbar = toHbarString(resolvedTotalTinybar);\n\n const breakdownTransfers: CostTransfer[] =\n positiveTransfers.length > 0\n ? positiveTransfers.map(transfer => ({\n to: transfer.account,\n amount: toHbarString(transfer.amountTinybar),\n description: `HBAR transfer from ${payerAccountId}`,\n }))\n : [\n {\n to: 'Hedera network',\n amount: totalCostHbar,\n description: `Transaction fee debited from ${payerAccountId}`,\n },\n ];\n\n return {\n totalTinybar: resolvedTotalTinybar,\n summary: {\n totalCostHbar,\n breakdown: {\n transfers: breakdownTransfers,\n },\n },\n };\n}\n"],"names":[],"mappings":";AAIA,MAAM,kBAAkB;AASxB,SAAS,sBACP,WACmD;AACnD,MAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,WAAO,CAAA;AAAA,EACT;AAEA,SAAO,UACJ;AAAA,IACC,cAAY,OAAO,SAAS,WAAW,YAAY,SAAS,SAAS;AAAA,EAAA,EAEtE,IAAI,CAAA,cAAa;AAAA,IAChB,SAAS,SAAS;AAAA,IAClB,eAAe,SAAS;AAAA,EAAA,EACxB;AACN;AAEA,SAAS,yBACP,WACA,gBACe;AACf,MAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,UAAU;AAAA,IAC3B,CAAA,aACE,SAAS,YAAY,kBACrB,OAAO,SAAS,WAAW,YAC3B,SAAS,SAAS;AAAA,EAAA;AAGtB,MAAI,CAAC,cAAc,OAAO,WAAW,WAAW,UAAU;AACxD,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,IAAI,WAAW,MAAM;AACnC;AAEA,SAAS,aAAa,SAAyB;AAC7C,SAAO,IAAI,UAAU,OAAO,EAAE,UAAU,eAAe,EAAE,QAAA;AAC3D;AAEA,SAAS,mBAAmB,cAAsC;AAChE,MAAI,OAAO,iBAAiB,YAAY,CAAC,OAAO,SAAS,YAAY,GAAG;AACtE,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,GAAG;AACrB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,8BAA8B,QAGuB;AACnE,QAAM,EAAE,KAAK,eAAA,IAAmB;AAEhC,QAAM,oBAAoB,sBAAsB,IAAI,SAAS;AAC7D,QAAM,oBAAoB;AAAA,IACxB,IAAI;AAAA,IACJ;AAAA,EAAA;AAGF,QAAM,yBACJ,qBACA,kBAAkB,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,eAAe,CAAC;AAC/D,QAAM,oBAAoB,mBAAmB,IAAI,cAAc;AAE/D,QAAM,uBACJ,yBAAyB,IAAI,yBAAyB;AAExD,MAAI,CAAC,wBAAwB,wBAAwB,GAAG;AACtD,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,aAAa,oBAAoB;AAEvD,QAAM,qBACJ,kBAAkB,SAAS,IACvB,kBAAkB,IAAI,CAAA,cAAa;AAAA,IACjC,IAAI,SAAS;AAAA,IACb,QAAQ,aAAa,SAAS,aAAa;AAAA,IAC3C,aAAa,sBAAsB,cAAc;AAAA,EAAA,EACjD,IACF;AAAA,IACE;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa,gCAAgC,cAAc;AAAA,IAAA;AAAA,EAC7D;AAGR,SAAO;AAAA,IACL,cAAc;AAAA,IACd,SAAS;AAAA,MACP;AAAA,MACA,WAAW;AAAA,QACT,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es167.js","sources":["../../src/utils/parsers/hcs-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { AccountId, Long, Transaction } from '@hashgraph/sdk';\nimport {\n ConsensusCreateTopicData,\n ConsensusSubmitMessageData,\n ConsensusUpdateTopicData,\n ConsensusDeleteTopicData,\n} from '../transaction-parser-types';\nimport { parseKey } from './parser-utils';\nimport { Buffer } from 'buffer';\n\nexport class HCSParser {\n static parseConsensusCreateTopic(\n body: proto.IConsensusCreateTopicTransactionBody,\n ): ConsensusCreateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusCreateTopicData = {};\n if (body.memo) {\n data.memo = body.memo;\n }\n data.adminKey = parseKey(body.adminKey);\n data.submitKey = parseKey(body.submitKey);\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusSubmitMessage(\n body: proto.IConsensusSubmitMessageTransactionBody,\n ): ConsensusSubmitMessageData | undefined {\n if (!body) return undefined;\n const data: ConsensusSubmitMessageData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum ?? 0}.${\n body.topicID.realmNum ?? 0\n }.${body.topicID.topicNum ?? 0}`;\n }\n if (body.message?.length > 0) {\n const messageBuffer = Buffer.from(body.message);\n const utf8String = messageBuffer.toString('utf8');\n if (\n /[\\x00-\\x08\\x0B\\x0E-\\x1F\\x7F]/.test(utf8String) ||\n utf8String.includes('\\uFFFD')\n ) {\n data.message = messageBuffer.toString('base64');\n data.messageEncoding = 'base64';\n } else {\n data.message = utf8String;\n data.messageEncoding = 'utf8';\n }\n }\n if (body.chunkInfo) {\n if (body.chunkInfo.initialTransactionID) {\n const txId = body.chunkInfo.initialTransactionID.accountID;\n const taValidStart =\n body.chunkInfo.initialTransactionID.transactionValidStart;\n if (txId && taValidStart) {\n data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${\n txId.realmNum ?? 0\n }.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${\n taValidStart.nanos ?? 0\n }`;\n }\n }\n if (\n body.chunkInfo.number !== undefined &&\n body.chunkInfo.number !== null\n ) {\n data.chunkInfoNumber = body.chunkInfo.number;\n }\n if (body.chunkInfo.total !== undefined && body.chunkInfo.total !== null) {\n data.chunkInfoTotal = body.chunkInfo.total;\n }\n }\n return data;\n }\n\n static parseConsensusUpdateTopic(\n body: proto.IConsensusUpdateTopicTransactionBody,\n ): ConsensusUpdateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusUpdateTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.adminKey === null) {\n data.clearAdminKey = true;\n data.adminKey = undefined;\n } else if (body.adminKey) {\n data.adminKey = parseKey(body.adminKey);\n } else {\n data.adminKey = undefined;\n }\n if (body.submitKey === null) {\n data.clearSubmitKey = true;\n data.submitKey = undefined;\n } else if (body.submitKey) {\n data.submitKey = parseKey(body.submitKey);\n } else {\n data.submitKey = undefined;\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusDeleteTopic(\n body: proto.IConsensusDeleteTopicTransactionBody,\n ): ConsensusDeleteTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusDeleteTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${\n body.topicID.topicNum ?? 0\n }`;\n }\n return data;\n }\n\n /**\n * Parse HCS transaction from Transaction object with comprehensive extraction\n * This is the unified entry point that handles both protobuf and internal field extraction\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: unknown }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (!transactionBody) {\n return {};\n }\n\n if (transactionBody.consensusCreateTopic) {\n const consensusCreateTopic = this.parseConsensusCreateTopic(\n transactionBody.consensusCreateTopic,\n );\n if (consensusCreateTopic) {\n return {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Create',\n consensusCreateTopic,\n };\n }\n }\n\n if (transactionBody.consensusSubmitMessage) {\n const consensusSubmitMessage = this.parseConsensusSubmitMessage(\n transactionBody.consensusSubmitMessage,\n );\n if (consensusSubmitMessage) {\n return {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n consensusSubmitMessage,\n };\n }\n }\n\n if (transactionBody.consensusUpdateTopic) {\n const consensusUpdateTopic = this.parseConsensusUpdateTopic(\n transactionBody.consensusUpdateTopic,\n );\n if (consensusUpdateTopic) {\n return {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n consensusUpdateTopic,\n };\n }\n }\n\n if (transactionBody.consensusDeleteTopic) {\n const consensusDeleteTopic = this.parseConsensusDeleteTopic(\n transactionBody.consensusDeleteTopic,\n );\n if (consensusDeleteTopic) {\n return {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Delete',\n consensusDeleteTopic,\n };\n }\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n}\n"],"names":[],"mappings":";;;AAWO,MAAM,UAAU;AAAA,EACrB,OAAO,0BACL,MACsC;AACtC,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,OAAiC,CAAA;AACvC,QAAI,KAAK,MAAM;AACb,WAAK,OAAO,KAAK;AAAA,IACnB;AACA,SAAK,WAAW,SAAS,KAAK,QAAQ;AACtC,SAAK,YAAY,SAAS,KAAK,SAAS;AACxC,QAAI,KAAK,iBAAiB,SAAS;AACjC,WAAK,kBAAkB,KAAK;AAAA,QAC1B,KAAK,gBAAgB;AAAA,MAAA,EACrB,SAAA;AAAA,IACJ;AACA,QAAI,KAAK,kBAAkB;AACzB,WAAK,qBAAqB,IAAI;AAAA,QAC5B,KAAK,iBAAiB,YAAY;AAAA,QAClC,KAAK,iBAAiB,YAAY;AAAA,QAClC,KAAK,iBAAiB,cAAc;AAAA,MAAA,EACpC,SAAA;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,4BACL,MACwC;AACxC,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,OAAmC,CAAA;AACzC,QAAI,KAAK,SAAS;AAChB,WAAK,UAAU,GAAG,KAAK,QAAQ,YAAY,CAAC,IAC1C,KAAK,QAAQ,YAAY,CAC3B,IAAI,KAAK,QAAQ,YAAY,CAAC;AAAA,IAChC;AACA,QAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,YAAM,gBAAgB,OAAO,KAAK,KAAK,OAAO;AAC9C,YAAM,aAAa,cAAc,SAAS,MAAM;AAChD,UACE,+BAA+B,KAAK,UAAU,KAC9C,WAAW,SAAS,GAAQ,GAC5B;AACA,aAAK,UAAU,cAAc,SAAS,QAAQ;AAC9C,aAAK,kBAAkB;AAAA,MACzB,OAAO;AACL,aAAK,UAAU;AACf,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AACA,QAAI,KAAK,WAAW;AAClB,UAAI,KAAK,UAAU,sBAAsB;AACvC,cAAM,OAAO,KAAK,UAAU,qBAAqB;AACjD,cAAM,eACJ,KAAK,UAAU,qBAAqB;AACtC,YAAI,QAAQ,cAAc;AACxB,eAAK,gCAAgC,GAAG,KAAK,YAAY,CAAC,IACxD,KAAK,YAAY,CACnB,IAAI,KAAK,cAAc,CAAC,IAAI,aAAa,WAAW,CAAC,IACnD,aAAa,SAAS,CACxB;AAAA,QACF;AAAA,MACF;AACA,UACE,KAAK,UAAU,WAAW,UAC1B,KAAK,UAAU,WAAW,MAC1B;AACA,aAAK,kBAAkB,KAAK,UAAU;AAAA,MACxC;AACA,UAAI,KAAK,UAAU,UAAU,UAAa,KAAK,UAAU,UAAU,MAAM;AACvE,aAAK,iBAAiB,KAAK,UAAU;AAAA,MACvC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,0BACL,MACsC;AACtC,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,OAAiC,CAAA;AACvC,QAAI,KAAK,SAAS;AAChB,WAAK,UAAU,GAAG,KAAK,QAAQ,QAAQ,IAAI,KAAK,QAAQ,QAAQ,IAAI,KAAK,QAAQ,QAAQ;AAAA,IAC3F;AACA,QAAI,KAAK,MAAM,UAAU,QAAW;AAClC,WAAK,OAAO,KAAK,KAAK;AAAA,IACxB;AACA,QAAI,KAAK,aAAa,MAAM;AAC1B,WAAK,gBAAgB;AACrB,WAAK,WAAW;AAAA,IAClB,WAAW,KAAK,UAAU;AACxB,WAAK,WAAW,SAAS,KAAK,QAAQ;AAAA,IACxC,OAAO;AACL,WAAK,WAAW;AAAA,IAClB;AACA,QAAI,KAAK,cAAc,MAAM;AAC3B,WAAK,iBAAiB;AACtB,WAAK,YAAY;AAAA,IACnB,WAAW,KAAK,WAAW;AACzB,WAAK,YAAY,SAAS,KAAK,SAAS;AAAA,IAC1C,OAAO;AACL,WAAK,YAAY;AAAA,IACnB;AACA,QAAI,KAAK,iBAAiB,SAAS;AACjC,WAAK,kBAAkB,KAAK;AAAA,QAC1B,KAAK,gBAAgB;AAAA,MAAA,EACrB,SAAA;AAAA,IACJ;AACA,QAAI,KAAK,kBAAkB;AACzB,WAAK,qBAAqB,IAAI;AAAA,QAC5B,KAAK,iBAAiB,YAAY;AAAA,QAClC,KAAK,iBAAiB,YAAY;AAAA,QAClC,KAAK,iBAAiB,cAAc;AAAA,MAAA,EACpC,SAAA;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,0BACL,MACsC;AACtC,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,OAAiC,CAAA;AACvC,QAAI,KAAK,SAAS;AAChB,WAAK,UAAU,GAAG,KAAK,QAAQ,QAAQ,IAAI,KAAK,QAAQ,YAAY,CAAC,IACnE,KAAK,QAAQ,YAAY,CAC3B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,2BAA2B,aAIhC;AACA,QAAI;AACF,YAAM,kBACJ,YACA;AAEF,UAAI,CAAC,iBAAiB;AACpB,eAAO,CAAA;AAAA,MACT;AAEA,UAAI,gBAAgB,sBAAsB;AACxC,cAAM,uBAAuB,KAAK;AAAA,UAChC,gBAAgB;AAAA,QAAA;AAElB,YAAI,sBAAsB;AACxB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,mBAAmB;AAAA,YACnB;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAEA,UAAI,gBAAgB,wBAAwB;AAC1C,cAAM,yBAAyB,KAAK;AAAA,UAClC,gBAAgB;AAAA,QAAA;AAElB,YAAI,wBAAwB;AAC1B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,mBAAmB;AAAA,YACnB;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAEA,UAAI,gBAAgB,sBAAsB;AACxC,cAAM,uBAAuB,KAAK;AAAA,UAChC,gBAAgB;AAAA,QAAA;AAElB,YAAI,sBAAsB;AACxB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,mBAAmB;AAAA,YACnB;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAEA,UAAI,gBAAgB,sBAAsB;AACxC,cAAM,uBAAuB,KAAK;AAAA,UAChC,gBAAgB;AAAA,QAAA;AAElB,YAAI,sBAAsB;AACxB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,mBAAmB;AAAA,YACnB;AAAA,UAAA;AAAA,QAEJ;AAAA,MACF;AAEA,aAAO,CAAA;AAAA,IACT,SAAS,OAAO;AACd,aAAO,CAAA;AAAA,IACT;AAAA,EACF;AACF;"}