@hashgraphonline/standards-sdk 0.0.169 → 0.0.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.
- package/dist/cjs/hcs-6/client.d.ts.map +1 -1
- package/dist/cjs/{index-DNOBUKZd-B_dnZCcg.cjs → index-DNOBUKZd-BFEd3mWR.cjs} +2 -2
- package/dist/cjs/{index-DNOBUKZd-B_dnZCcg.cjs.map → index-DNOBUKZd-BFEd3mWR.cjs.map} +1 -1
- package/dist/cjs/{index-BKc2xWJH.cjs → index-UbCWCGL4.cjs} +8 -8
- package/dist/cjs/{index-BKc2xWJH.cjs.map → index-UbCWCGL4.cjs.map} +1 -1
- package/dist/cjs/standards-sdk.cjs +1 -1
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-nxSloSwP.cjs → standards-sdk.es47-LpJXpYet-CKqpG_J5.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es47-LpJXpYet-nxSloSwP.cjs.map → standards-sdk.es47-LpJXpYet-CKqpG_J5.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-0YU49EOG.cjs → standards-sdk.es48-PT6ZHlCU-BWtPlntu.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es48-PT6ZHlCU-0YU49EOG.cjs.map → standards-sdk.es48-PT6ZHlCU-BWtPlntu.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-H5GQcZNT.cjs → standards-sdk.es49-BoFc-ELK-tASq8drA.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es49-BoFc-ELK-H5GQcZNT.cjs.map → standards-sdk.es49-BoFc-ELK-tASq8drA.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-B_2VXWiq.cjs → standards-sdk.es50-miBtNmtl-D5AVZMh3.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es50-miBtNmtl-B_2VXWiq.cjs.map → standards-sdk.es50-miBtNmtl-D5AVZMh3.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-DDguvYXL.cjs → standards-sdk.es51-rS2UvvV5-Dd8syPnY.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es51-rS2UvvV5-DDguvYXL.cjs.map → standards-sdk.es51-rS2UvvV5-Dd8syPnY.cjs.map} +1 -1
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-LyBuN_hz.cjs → standards-sdk.es52-D-lvSMBY-CAlqMca1.cjs} +2 -2
- package/dist/cjs/{standards-sdk.es52-D-lvSMBY-LyBuN_hz.cjs.map → standards-sdk.es52-D-lvSMBY-CAlqMca1.cjs.map} +1 -1
- package/dist/es/hcs-6/client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es4.js +0 -2
- package/dist/es/standards-sdk.es4.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/hcs-6/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EAEV,kBAAkB,EAClB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,WAAW,EAEX,6BAA6B,EAC7B,6BAA6B,EAC7B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EAExB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAqCjB;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAsB;IAErC;;;OAGG;gBACS,MAAM,EAAE,mBAAmB;IAgDvC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACU,cAAc,CACzB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC;IAmEzC;;;;;OAKG;IACU,aAAa,CACxB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAIzC;;;;;;OAMG;YACW,oBAAoB;IA0ClC;;;;;OAKG;IACU,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC;IA4G7B;;;;;OAKG;IACU,aAAa,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;;;;;OAMG;YACW,oBAAoB;IAoClC;;;;OAIG;IACU,cAAc,CACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/hcs-6/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EAEV,kBAAkB,EAClB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,WAAW,EAEX,6BAA6B,EAC7B,6BAA6B,EAC7B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EAExB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAqCjB;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAsB;IAErC;;;OAGG;gBACS,MAAM,EAAE,mBAAmB;IAgDvC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACU,cAAc,CACzB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,6BAA6B,CAAC;IAmEzC;;;;;OAKG;IACU,aAAa,CACxB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAIzC;;;;;;OAMG;YACW,oBAAoB;IA0ClC;;;;;OAKG;IACU,WAAW,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC;IA4G7B;;;;;OAKG;IACU,aAAa,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;;;;;OAMG;YACW,oBAAoB;IAoClC;;;;OAIG;IACU,cAAc,CACzB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,0BAA0B,CAAC;IA+GtC;;;;;OAKG;IACU,QAAQ,CACnB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,0BAA0B,CAAC;IAoItC;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAClD,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IASF;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACI,UAAU,IAAI,SAAS,GAAG,OAAO;IAIxC;;OAEG;IACI,cAAc,IAAI,UAAU;CAGpC"}
|
|
@@ -330,7 +330,6 @@ class HCS6Client extends HCS6BaseClient {
|
|
|
330
330
|
} else {
|
|
331
331
|
const registryResponse = await this.createRegistry({
|
|
332
332
|
ttl: options.ttl,
|
|
333
|
-
adminKey: true,
|
|
334
333
|
submitKey: true
|
|
335
334
|
});
|
|
336
335
|
if (!registryResponse.success || !registryResponse.topicId) {
|
|
@@ -430,7 +429,6 @@ class HCS6Client extends HCS6BaseClient {
|
|
|
430
429
|
} else {
|
|
431
430
|
const registryResponse = await this.createRegistry({
|
|
432
431
|
ttl: options.ttl,
|
|
433
|
-
adminKey: true,
|
|
434
432
|
submitKey: true
|
|
435
433
|
});
|
|
436
434
|
if (!registryResponse.success || !registryResponse.topicId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es4.js","sources":["../../src/hcs-6/client.ts"],"sourcesContent":["import {\n Client,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n TopicId,\n TransactionReceipt,\n AccountId,\n PublicKey,\n} from '@hashgraph/sdk';\nimport { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6RegistryType,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6RegistryEntry,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n} from './types';\nimport { NetworkType } from '../utils/types';\nimport { detectKeyTypeFromString } from '../utils/key-type-detector';\nimport {\n inscribe,\n InscriptionInput,\n InscriptionResponse,\n} from '../inscribe/inscriber';\nimport { InscriptionOptions } from '../inscribe/types';\n\n/**\n * Mirror node message format for HCS-6 registry entries\n */\ninterface MirrorNodeMessage {\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id?: string;\n payer?: string;\n op?: string;\n t_id?: string;\n m?: string;\n}\n\n/**\n * Type guard to validate mirror node message format\n */\nfunction isMirrorNodeMessage(obj: unknown): obj is MirrorNodeMessage {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'sequence_number' in obj &&\n 'consensus_timestamp' in obj &&\n typeof (obj as Record<string, unknown>).sequence_number === 'number' &&\n typeof (obj as Record<string, unknown>).consensus_timestamp === 'string'\n );\n}\n\n/**\n * SDK client configuration for HCS-6\n */\nexport interface SDKHCS6ClientConfig extends HCS6ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * SDK client for HCS-6 operations\n */\nexport class HCS6Client extends HCS6BaseClient {\n private client: Client;\n private operatorId: AccountId;\n private operatorKey: PrivateKey;\n private initialized = false;\n private keyType: 'ed25519' | 'ecdsa';\n\n /**\n * Create a new HCS-6 client\n * @param config Client configuration\n */\n constructor(config: SDKHCS6ClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n silent: config.silent,\n mirrorNodeUrl: config.mirrorNodeUrl,\n logger: config.logger,\n });\n\n this.operatorId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n\n if (config.keyType) {\n this.keyType = config.keyType;\n this.operatorKey =\n typeof config.operatorKey === 'string'\n ? this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(config.operatorKey)\n : PrivateKey.fromStringED25519(config.operatorKey)\n : config.operatorKey;\n } else if (typeof config.operatorKey === 'string') {\n try {\n const keyDetection = detectKeyTypeFromString(config.operatorKey);\n this.operatorKey = keyDetection.privateKey;\n this.keyType = keyDetection.detectedType;\n\n if (keyDetection.warning) {\n this.logger.warn(keyDetection.warning);\n }\n } catch (error) {\n this.logger.warn(\n 'Failed to detect key type from private key format, defaulting to ECDSA',\n );\n this.keyType = 'ecdsa';\n this.operatorKey = PrivateKey.fromStringECDSA(config.operatorKey);\n }\n } else {\n this.operatorKey = config.operatorKey;\n this.keyType = 'ecdsa';\n }\n\n this.client = this.createClient(config.network);\n\n this.initializeClient();\n }\n\n /**\n * Initialize the Hedera client with operator information\n */\n private initializeClient(): void {\n try {\n this.client.setOperator(this.operatorId, this.operatorKey);\n this.initialized = true;\n this.logger.info(\n `HCS-6 client initialized successfully with key type: ${this.keyType}`,\n );\n } catch (error) {\n this.logger.error(`Failed to initialize HCS-6 client: ${error}`);\n throw error;\n }\n }\n\n /**\n * Create a Hedera client for the specified network\n * @param network The network to connect to\n * @returns The Hedera client\n */\n private createClient(network: NetworkType): Client {\n if (network === 'mainnet') {\n return Client.forMainnet();\n } else {\n return Client.forTestnet();\n }\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n public async createRegistry(\n options: HCS6CreateRegistryOptions = {},\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n const ttl = options.ttl ?? 86400;\n\n if (!validateHCS6TTL(ttl)) {\n throw new Error('TTL must be at least 3600 seconds (1 hour)');\n }\n\n const memo = this.generateRegistryMemo(ttl);\n\n let transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n\n\n let submitKeyPrivate: PrivateKey | undefined;\n if (options.submitKey) {\n let submitPublicKey: PublicKey;\n if (typeof options.submitKey === 'string') {\n submitPublicKey = PublicKey.fromString(options.submitKey);\n } else if (typeof options.submitKey === 'boolean') {\n submitPublicKey = this.operatorKey.publicKey;\n } else {\n submitPublicKey = options.submitKey.publicKey;\n submitKeyPrivate = options.submitKey;\n }\n transaction = transaction.setSubmitKey(submitPublicKey);\n }\n\n const frozenTx = await transaction.freezeWith(this.client);\n\n\n\n if (submitKeyPrivate) {\n await frozenTx.sign(submitKeyPrivate);\n }\n\n const txResponse = await frozenTx.execute(this.client);\n\n const receipt = await txResponse.getReceipt(this.client);\n const topicId = receipt.topicId;\n\n if (!topicId) {\n throw new Error(\n 'Failed to create HCS-6 registry: No topic ID in receipt',\n );\n }\n\n const topicIdStr = topicId.toString();\n\n this.logger.info(\n `Created HCS-6 registry topic: ${topicIdStr} (Non-indexed, TTL: ${ttl}s)`,\n );\n\n return {\n success: true,\n topicId: topicIdStr,\n transactionId: txResponse.transactionId.toString(),\n };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return {\n success: false,\n error: `Failed to create HCS-6 registry: ${error}`,\n };\n }\n }\n\n /**\n * Register a new dynamic hashinal update in the registry\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n public async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n return this.registerEntryWithKey(registryTopicId, options, undefined);\n }\n\n /**\n * Register a new dynamic hashinal update in the registry with custom submit key\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @param submitKey Optional submit key for the registry topic\n * @returns Promise resolving to the operation result\n */\n private async registerEntryWithKey(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n submitKey?: string | PrivateKey,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n\n const receipt = await this.submitMessageWithKey(\n registryTopicId,\n message,\n submitKey,\n );\n\n this.logger.info(\n `Registered dynamic hashinal update in registry ${registryTopicId} pointing to HCS-1 topic ${options.targetTopicId}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return {\n success: false,\n error: `Failed to register HCS-6 entry: ${error}`,\n };\n }\n }\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n public async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`,\n );\n\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`,\n );\n const rawMessagesResponse = await this.mirrorNode.getTopicMessages(\n topicId,\n {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n },\n );\n\n if (!Array.isArray(rawMessagesResponse)) {\n throw new Error(\n 'Invalid response format from mirror node: expected array',\n );\n }\n\n const rawMessagesResult = rawMessagesResponse.filter(isMirrorNodeMessage);\n if (rawMessagesResult.length !== rawMessagesResponse.length) {\n this.logger.warn(\n `Some messages from mirror node had invalid format. Expected ${rawMessagesResponse.length}, got ${rawMessagesResult.length} valid messages.`,\n );\n }\n\n const rawMessages = options.limit\n ? rawMessagesResult.slice(0, options.limit)\n : rawMessagesResult;\n\n this.logger.debug(\n `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`,\n );\n\n const entries: HCS6RegistryEntry[] = [];\n let latestEntry: HCS6RegistryEntry | undefined;\n\n for (const msg of rawMessages) {\n try {\n const mirrorMsg = msg as MirrorNodeMessage;\n\n const message: HCS6Message = {\n p: 'hcs-6',\n op: mirrorMsg.op,\n t_id: mirrorMsg.t_id,\n m: mirrorMsg.m,\n } as HCS6Message;\n\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n this.logger.warn(`Invalid HCS-6 message: ${errors.join(', ')}`);\n continue;\n }\n\n const entry: HCS6RegistryEntry = {\n topicId,\n sequence: mirrorMsg.sequence_number,\n timestamp: mirrorMsg.consensus_timestamp,\n payer: mirrorMsg.payer_account_id || mirrorMsg.payer || '',\n message,\n consensus_timestamp: mirrorMsg.consensus_timestamp,\n registry_type: memoInfo.registryType,\n };\n\n entries.push(entry);\n\n if (!latestEntry || entry.timestamp > latestEntry.timestamp) {\n latestEntry = entry;\n }\n } catch (error) {\n this.logger.warn(`Error processing HCS-6 message: ${error}`);\n }\n }\n\n this.logger.debug(\n `Processed ${entries.length} valid entries for HCS-6 registry ${topicId}`,\n );\n\n const registry: HCS6TopicRegistry = {\n topicId,\n registryType: memoInfo.registryType,\n ttl: memoInfo.ttl,\n entries: latestEntry ? [latestEntry] : [],\n latestEntry,\n };\n\n return registry;\n } catch (error) {\n this.logger.error(`Failed to get HCS-6 registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Submit a message to a HCS-6 topic\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n public async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n return this.submitMessageWithKey(topicId, payload, undefined);\n }\n\n /**\n * Submit a message to a HCS-6 topic with custom submit key\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @param submitKey Optional submit key for the topic\n * @returns Promise resolving to the transaction receipt\n */\n private async submitMessageWithKey(\n topicId: string,\n payload: HCS6Message,\n submitKey?: string | PrivateKey,\n ): Promise<TransactionReceipt> {\n try {\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n\n let transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(JSON.stringify(payload));\n\n if (submitKey) {\n const privateKey =\n typeof submitKey === 'string'\n ? PrivateKey.fromString(submitKey)\n : submitKey;\n\n const frozenTx = await transaction.freezeWith(this.client);\n await frozenTx.sign(privateKey);\n transaction = frozenTx;\n }\n\n const txResponse = await transaction.execute(this.client);\n const receipt = await txResponse.getReceipt(this.client);\n\n return receipt;\n } catch (error) {\n this.logger.error(`Failed to submit HCS-6 message: ${error}`);\n throw error;\n }\n }\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n public async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n this.logger.info('Starting dynamic hashinal creation process');\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n this.logger.info(\n `Using existing HCS-6 registry topic: ${options.registryTopicId}`,\n );\n registryTopicId = options.registryTopicId;\n\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const registryResponse = await this.createRegistry({\n ttl: options.ttl,\n adminKey: true,\n submitKey: true,\n });\n\n if (!registryResponse.success || !registryResponse.topicId) {\n throw new Error(\n `Failed to create HCS-6 registry: ${registryResponse.error}`,\n );\n }\n\n registryTopicId = registryResponse.topicId;\n registryTransactionId = registryResponse.transactionId;\n this.logger.info(`Created HCS-6 registry topic: ${registryTopicId}`);\n }\n\n let inscriptionTopicId: string | undefined;\n\n if (options.inscriptionOptions) {\n const inscriptionInput: InscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n\n const inscriptionOptions: InscriptionOptions = {\n ...options.inscriptionOptions,\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const inscriptionResponse = await inscribe(\n inscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorKey.toString(),\n network: this.network,\n },\n inscriptionOptions,\n );\n\n if (inscriptionResponse.confirmed && inscriptionResponse.inscription) {\n inscriptionTopicId =\n inscriptionResponse.inscription.jsonTopicId ||\n inscriptionResponse.inscription.topic_id;\n this.logger.info(\n `Inscribed metadata to topic: ${inscriptionTopicId}`,\n );\n } else {\n throw new Error('Failed to inscribe metadata');\n }\n }\n\n if (!inscriptionTopicId) {\n throw new Error('No inscription topic ID available for registration');\n }\n\n const registerResponse = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Initial dynamic hashinal registration',\n },\n options.submitKey,\n );\n\n if (!registerResponse.success) {\n throw new Error(\n `Failed to register in HCS-6: ${registerResponse.error}`,\n );\n }\n\n this.logger.info('Successfully created dynamic hashinal');\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n transactionId: registryTransactionId,\n };\n } catch (error) {\n this.logger.error(`Failed to create dynamic hashinal: ${error}`);\n return {\n success: false,\n error: `Failed to create dynamic hashinal: ${error}`,\n };\n }\n }\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * This method combines createHashinal and registerEntry into a single operation\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n public async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n this.logger.info('Starting dynamic hashinal registration process');\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n this.logger.info(\n `Using existing HCS-6 registry topic: ${options.registryTopicId}`,\n );\n registryTopicId = options.registryTopicId;\n\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const registryResponse = await this.createRegistry({\n ttl: options.ttl,\n adminKey: true,\n submitKey: true,\n });\n\n if (!registryResponse.success || !registryResponse.topicId) {\n throw new Error(\n `Failed to create HCS-6 registry: ${registryResponse.error}`,\n );\n }\n\n registryTopicId = registryResponse.topicId;\n registryTransactionId = registryResponse.transactionId;\n this.logger.info(`Created HCS-6 registry topic: ${registryTopicId}`);\n }\n\n let inscriptionInput: InscriptionInput;\n\n if (options.data?.base64) {\n const buffer = Buffer.from(options.data.base64, 'base64');\n inscriptionInput = {\n type: 'buffer',\n buffer: buffer,\n fileName: 'data.' + (options.data.mimeType?.split('/')[1] || 'bin'),\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n inscriptionInput = {\n type: 'url',\n url: options.data.url,\n };\n } else {\n inscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...options.inscriptionOptions,\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const inscriptionResponse = await inscribe(\n inscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorKey.toString(),\n network: this.network,\n },\n inscriptionOptions,\n );\n\n if (!inscriptionResponse.confirmed || !inscriptionResponse.inscription) {\n throw new Error('Failed to inscribe data');\n }\n\n const metadataTopicId =\n inscriptionResponse.inscription.jsonTopicId ||\n inscriptionResponse.inscription.topic_id;\n this.logger.info(\n `Inscribed image to topic: ${inscriptionResponse.inscription.topic_id}`,\n );\n if (inscriptionResponse.inscription.jsonTopicId) {\n this.logger.info(\n `Inscribed metadata to topic: ${inscriptionResponse.inscription.jsonTopicId}`,\n );\n this.logger.info(\n `Using metadata topic ID ${metadataTopicId} for HCS-6 registry`,\n );\n } else {\n this.logger.info(\n `No separate metadata topic, using data topic ${metadataTopicId} for HCS-6 registry`,\n );\n }\n\n const registerResponse = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: metadataTopicId,\n memo: options.memo || 'Dynamic hashinal registration',\n },\n options.submitKey,\n );\n\n if (!registerResponse.success) {\n throw new Error(\n `Failed to register in HCS-6: ${registerResponse.error}`,\n );\n }\n\n this.logger.info('Successfully registered dynamic hashinal');\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId: metadataTopicId,\n transactionId: registryTransactionId,\n };\n } catch (error) {\n this.logger.error(`Failed to register dynamic hashinal: ${error}`);\n return {\n success: false,\n error: `Failed to register dynamic hashinal: ${error}`,\n };\n }\n }\n\n /**\n * @param topicId The topic ID to query\n * @returns Promise resolving to the topic information\n */\n public async getTopicInfo(topicId: string): Promise<{\n memo: string;\n admin_key?: string;\n submit_key?: string;\n }> {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n return {\n memo: topicInfo.memo,\n admin_key: topicInfo.admin_key?.key,\n submit_key: topicInfo.submit_key?.key,\n };\n }\n\n /**\n * Close the client and release resources\n */\n public close(): void {\n this.logger.info('HCS-6 client closed.');\n }\n\n /**\n * Get the configured key type (ed25519 or ecdsa)\n */\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.keyType;\n }\n\n /**\n * Get the configured operator private key\n */\n public getOperatorKey(): PrivateKey {\n return this.operatorKey;\n }\n}\n\nfunction validateHCS6TTL(ttl: number): boolean {\n return ttl >= 3600;\n}\n"],"names":[],"mappings":";;;;AAmDA,SAAS,oBAAoB,KAAwC;AACnE,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,qBAAqB,OACrB,yBAAyB,OACzB,OAAQ,IAAgC,oBAAoB,YAC5D,OAAQ,IAAgC,wBAAwB;AAEpE;AAcO,MAAM,mBAAmB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAW7C,YAAY,QAA6B;AACvC,UAAM;AAAA,MACJ,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO;AAAA,MACf,eAAe,OAAO;AAAA,MACtB,QAAQ,OAAO;AAAA,IAAA,CAChB;AAdH,SAAQ,cAAc;AAgBpB,SAAK,aACH,OAAO,OAAO,eAAe,WACzB,UAAU,WAAW,OAAO,UAAU,IACtC,OAAO;AAEb,QAAI,OAAO,SAAS;AAClB,WAAK,UAAU,OAAO;AACtB,WAAK,cACH,OAAO,OAAO,gBAAgB,WAC1B,KAAK,YAAY,UACf,WAAW,gBAAgB,OAAO,WAAW,IAC7C,WAAW,kBAAkB,OAAO,WAAW,IACjD,OAAO;AAAA,IACf,WAAW,OAAO,OAAO,gBAAgB,UAAU;AACjD,UAAI;AACF,cAAM,eAAe,wBAAwB,OAAO,WAAW;AAC/D,aAAK,cAAc,aAAa;AAChC,aAAK,UAAU,aAAa;AAE5B,YAAI,aAAa,SAAS;AACxB,eAAK,OAAO,KAAK,aAAa,OAAO;AAAA,QACvC;AAAA,MACF,SAAS,OAAO;AACd,aAAK,OAAO;AAAA,UACV;AAAA,QAAA;AAEF,aAAK,UAAU;AACf,aAAK,cAAc,WAAW,gBAAgB,OAAO,WAAW;AAAA,MAClE;AAAA,IACF,OAAO;AACL,WAAK,cAAc,OAAO;AAC1B,WAAK,UAAU;AAAA,IACjB;AAEA,SAAK,SAAS,KAAK,aAAa,OAAO,OAAO;AAE9C,SAAK,iBAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAyB;AAC/B,QAAI;AACF,WAAK,OAAO,YAAY,KAAK,YAAY,KAAK,WAAW;AACzD,WAAK,cAAc;AACnB,WAAK,OAAO;AAAA,QACV,wDAAwD,KAAK,OAAO;AAAA,MAAA;AAAA,IAExE,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,sCAAsC,KAAK,EAAE;AAC/D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,aAAa,SAA8B;AACjD,QAAI,YAAY,WAAW;AACzB,aAAO,OAAO,WAAA;AAAA,IAChB,OAAO;AACL,aAAO,OAAO,WAAA;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,eACX,UAAqC,IACG;AACxC,QAAI;AACF,YAAM,MAAM,QAAQ,OAAO;AAE3B,UAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,cAAM,IAAI,MAAM,4CAA4C;AAAA,MAC9D;AAEA,YAAM,OAAO,KAAK,qBAAqB,GAAG;AAE1C,UAAI,cAAc,IAAI,yBAAyB,aAAa,IAAI;AAIhE,UAAI;AACJ,UAAI,QAAQ,WAAW;AACrB,YAAI;AACJ,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,4BAAkB,UAAU,WAAW,QAAQ,SAAS;AAAA,QAC1D,WAAW,OAAO,QAAQ,cAAc,WAAW;AACjD,4BAAkB,KAAK,YAAY;AAAA,QACrC,OAAO;AACL,4BAAkB,QAAQ,UAAU;AACpC,6BAAmB,QAAQ;AAAA,QAC7B;AACA,sBAAc,YAAY,aAAa,eAAe;AAAA,MACxD;AAEA,YAAM,WAAW,MAAM,YAAY,WAAW,KAAK,MAAM;AAIzD,UAAI,kBAAkB;AACpB,cAAM,SAAS,KAAK,gBAAgB;AAAA,MACtC;AAEA,YAAM,aAAa,MAAM,SAAS,QAAQ,KAAK,MAAM;AAErD,YAAM,UAAU,MAAM,WAAW,WAAW,KAAK,MAAM;AACvD,YAAM,UAAU,QAAQ;AAExB,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAEA,YAAM,aAAa,QAAQ,SAAA;AAE3B,WAAK,OAAO;AAAA,QACV,iCAAiC,UAAU,uBAAuB,GAAG;AAAA,MAAA;AAGvE,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS;AAAA,QACT,eAAe,WAAW,cAAc,SAAA;AAAA,MAAS;AAAA,IAErD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,oCAAoC,KAAK,EAAE;AAC7D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,oCAAoC,KAAK;AAAA,MAAA;AAAA,IAEpD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,cACX,iBACA,SACwC;AACxC,WAAO,KAAK,qBAAqB,iBAAiB,SAAS,MAAS;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAc,qBACZ,iBACA,SACA,WACwC;AACxC,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,kBAAkB,eAAe;AAC5D,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI;AAAA,UACR,SAAS,eAAe;AAAA,QAAA;AAAA,MAE5B;AAEA,YAAM,UAAU,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAGV,YAAM,UAAU,MAAM,KAAK;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO;AAAA,QACV,kDAAkD,eAAe,4BAA4B,QAAQ,aAAa;AAAA,MAAA;AAGpH,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,gBAAgB,QAAQ,qBAAqB,OAAO;AAAA,MAAA;AAAA,IAExD,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,mCAAmC,KAAK,EAAE;AAC5D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,mCAAmC,KAAK;AAAA,MAAA;AAAA,IAEnD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,YACX,SACA,UAAoC,IACR;AAC5B,QAAI;AACF,YAAM,YAAY,MAAM,KAAK,WAAW,aAAa,OAAO;AAC5D,WAAK,OAAO;AAAA,QACV,kCAAkC,OAAO,KAAK,KAAK,UAAU,SAAS,CAAC;AAAA,MAAA;AAGzE,YAAM,WAAW,KAAK,0BAA0B,UAAU,IAAI;AAE9D,UAAI,CAAC,UAAU;AACb,cAAM,IAAI;AAAA,UACR,SAAS,OAAO;AAAA,QAAA;AAAA,MAEpB;AAEA,WAAK,OAAO;AAAA,QACV,uCAAuC,OAAO,eAAe,QAAQ,SAAS,GAAG;AAAA,MAAA;AAEnF,YAAM,sBAAsB,MAAM,KAAK,WAAW;AAAA,QAChD;AAAA,QACA;AAAA,UACE,gBACE,QAAQ,QAAQ,QAAQ,OAAO,IAAI,MAAM,QAAQ,IAAI,KAAK;AAAA,UAC5D,OAAO,QAAQ,SAAS;AAAA,UACxB,OAAO,QAAQ,SAAS;AAAA,QAAA;AAAA,MAC1B;AAGF,UAAI,CAAC,MAAM,QAAQ,mBAAmB,GAAG;AACvC,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAEA,YAAM,oBAAoB,oBAAoB,OAAO,mBAAmB;AACxE,UAAI,kBAAkB,WAAW,oBAAoB,QAAQ;AAC3D,aAAK,OAAO;AAAA,UACV,+DAA+D,oBAAoB,MAAM,SAAS,kBAAkB,MAAM;AAAA,QAAA;AAAA,MAE9H;AAEA,YAAM,cAAc,QAAQ,QACxB,kBAAkB,MAAM,GAAG,QAAQ,KAAK,IACxC;AAEJ,WAAK,OAAO;AAAA,QACV,aAAa,kBAAkB,MAAM,oBAAoB,YAAY,MAAM;AAAA,MAAA;AAG7E,YAAM,UAA+B,CAAA;AACrC,UAAI;AAEJ,iBAAW,OAAO,aAAa;AAC7B,YAAI;AACF,gBAAM,YAAY;AAElB,gBAAM,UAAuB;AAAA,YAC3B,GAAG;AAAA,YACH,IAAI,UAAU;AAAA,YACd,MAAM,UAAU;AAAA,YAChB,GAAG,UAAU;AAAA,UAAA;AAGf,gBAAM,EAAE,OAAO,OAAA,IAAW,KAAK,gBAAgB,OAAO;AACtD,cAAI,CAAC,OAAO;AACV,iBAAK,OAAO,KAAK,0BAA0B,OAAO,KAAK,IAAI,CAAC,EAAE;AAC9D;AAAA,UACF;AAEA,gBAAM,QAA2B;AAAA,YAC/B;AAAA,YACA,UAAU,UAAU;AAAA,YACpB,WAAW,UAAU;AAAA,YACrB,OAAO,UAAU,oBAAoB,UAAU,SAAS;AAAA,YACxD;AAAA,YACA,qBAAqB,UAAU;AAAA,YAC/B,eAAe,SAAS;AAAA,UAAA;AAG1B,kBAAQ,KAAK,KAAK;AAElB,cAAI,CAAC,eAAe,MAAM,YAAY,YAAY,WAAW;AAC3D,0BAAc;AAAA,UAChB;AAAA,QACF,SAAS,OAAO;AACd,eAAK,OAAO,KAAK,mCAAmC,KAAK,EAAE;AAAA,QAC7D;AAAA,MACF;AAEA,WAAK,OAAO;AAAA,QACV,aAAa,QAAQ,MAAM,qCAAqC,OAAO;AAAA,MAAA;AAGzE,YAAM,WAA8B;AAAA,QAClC;AAAA,QACA,cAAc,SAAS;AAAA,QACvB,KAAK,SAAS;AAAA,QACd,SAAS,cAAc,CAAC,WAAW,IAAI,CAAA;AAAA,QACvC;AAAA,MAAA;AAGF,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,iCAAiC,KAAK,EAAE;AAC1D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,cACX,SACA,SAC6B;AAC7B,WAAO,KAAK,qBAAqB,SAAS,SAAS,MAAS;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAc,qBACZ,SACA,SACA,WAC6B;AAC7B,QAAI;AACF,YAAM,EAAE,OAAO,OAAA,IAAW,KAAK,gBAAgB,OAAO;AACtD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MAAM,0BAA0B,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,MAC/D;AAEA,UAAI,cAAc,IAAI,gCACnB,WAAW,QAAQ,WAAW,OAAO,CAAC,EACtC,WAAW,KAAK,UAAU,OAAO,CAAC;AAErC,UAAI,WAAW;AACb,cAAM,aACJ,OAAO,cAAc,WACjB,WAAW,WAAW,SAAS,IAC/B;AAEN,cAAM,WAAW,MAAM,YAAY,WAAW,KAAK,MAAM;AACzD,cAAM,SAAS,KAAK,UAAU;AAC9B,sBAAc;AAAA,MAChB;AAEA,YAAM,aAAa,MAAM,YAAY,QAAQ,KAAK,MAAM;AACxD,YAAM,UAAU,MAAM,WAAW,WAAW,KAAK,MAAM;AAEvD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,mCAAmC,KAAK,EAAE;AAC5D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,eACX,SACqC;AACrC,QAAI;AACF,WAAK,OAAO,KAAK,4CAA4C;AAE7D,UAAI;AACJ,UAAI;AAEJ,UAAI,QAAQ,iBAAiB;AAC3B,aAAK,OAAO;AAAA,UACV,wCAAwC,QAAQ,eAAe;AAAA,QAAA;AAEjE,0BAAkB,QAAQ;AAExB,cAAM,UAAU,MAAM,KAAK,kBAAkB,eAAe;AAC9D,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAI;AAAA,YACR,SAAS,eAAe;AAAA,UAAA;AAAA,QAE5B;AAAA,MACF,OAAO;AACL,cAAM,mBAAmB,MAAM,KAAK,eAAe;AAAA,UACjD,KAAK,QAAQ;AAAA,UACb,UAAU;AAAA,UACV,WAAW;AAAA,QAAA,CACZ;AAED,YAAI,CAAC,iBAAiB,WAAW,CAAC,iBAAiB,SAAS;AAC1D,gBAAM,IAAI;AAAA,YACR,oCAAoC,iBAAiB,KAAK;AAAA,UAAA;AAAA,QAE9D;AAEA,0BAAkB,iBAAiB;AACnC,gCAAwB,iBAAiB;AACzC,aAAK,OAAO,KAAK,iCAAiC,eAAe,EAAE;AAAA,MACrE;AAEA,UAAI;AAEJ,UAAI,QAAQ,oBAAoB;AAC9B,cAAM,mBAAqC;AAAA,UACzC,MAAM;AAAA,UACN,QAAQ,OAAO,KAAK,KAAK,UAAU,QAAQ,QAAQ,CAAC;AAAA,UACpD,UAAU;AAAA,UACV,UAAU;AAAA,QAAA;AAGZ,cAAM,qBAAyC;AAAA,UAC7C,GAAG,QAAQ;AAAA,UACX,MAAM;AAAA,UACN,UAAU,QAAQ;AAAA,UAClB,qBAAqB;AAAA,QAAA;AAGvB,cAAM,sBAAsB,MAAM;AAAA,UAChC;AAAA,UACA;AAAA,YACE,WAAW,KAAK,WAAW,SAAA;AAAA,YAC3B,YAAY,KAAK,YAAY,SAAA;AAAA,YAC7B,SAAS,KAAK;AAAA,UAAA;AAAA,UAEhB;AAAA,QAAA;AAGF,YAAI,oBAAoB,aAAa,oBAAoB,aAAa;AACpE,+BACE,oBAAoB,YAAY,eAChC,oBAAoB,YAAY;AAClC,eAAK,OAAO;AAAA,YACV,gCAAgC,kBAAkB;AAAA,UAAA;AAAA,QAEtD,OAAO;AACL,gBAAM,IAAI,MAAM,6BAA6B;AAAA,QAC/C;AAAA,MACF;AAEA,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,MAAM,oDAAoD;AAAA,MACtE;AAEA,YAAM,mBAAmB,MAAM,KAAK;AAAA,QAClC;AAAA,QACA;AAAA,UACE,eAAe;AAAA,UACf,MAAM,QAAQ,QAAQ;AAAA,QAAA;AAAA,QAExB,QAAQ;AAAA,MAAA;AAGV,UAAI,CAAC,iBAAiB,SAAS;AAC7B,cAAM,IAAI;AAAA,UACR,gCAAgC,iBAAiB,KAAK;AAAA,QAAA;AAAA,MAE1D;AAEA,WAAK,OAAO,KAAK,uCAAuC;AAExD,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,IAEnB,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,sCAAsC,KAAK,EAAE;AAC/D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,sCAAsC,KAAK;AAAA,MAAA;AAAA,IAEtD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,SACX,SACqC;AACrC,QAAI;AACF,WAAK,OAAO,KAAK,gDAAgD;AAEjE,UAAI;AACJ,UAAI;AAEJ,UAAI,QAAQ,iBAAiB;AAC3B,aAAK,OAAO;AAAA,UACV,wCAAwC,QAAQ,eAAe;AAAA,QAAA;AAEjE,0BAAkB,QAAQ;AAExB,cAAM,UAAU,MAAM,KAAK,kBAAkB,eAAe;AAC9D,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAI;AAAA,YACR,SAAS,eAAe;AAAA,UAAA;AAAA,QAE5B;AAAA,MACF,OAAO;AACL,cAAM,mBAAmB,MAAM,KAAK,eAAe;AAAA,UACjD,KAAK,QAAQ;AAAA,UACb,UAAU;AAAA,UACV,WAAW;AAAA,QAAA,CACZ;AAED,YAAI,CAAC,iBAAiB,WAAW,CAAC,iBAAiB,SAAS;AAC1D,gBAAM,IAAI;AAAA,YACR,oCAAoC,iBAAiB,KAAK;AAAA,UAAA;AAAA,QAE9D;AAEA,0BAAkB,iBAAiB;AACnC,gCAAwB,iBAAiB;AACzC,aAAK,OAAO,KAAK,iCAAiC,eAAe,EAAE;AAAA,MACrE;AAEA,UAAI;AAEJ,UAAI,QAAQ,MAAM,QAAQ;AACxB,cAAM,SAAS,OAAO,KAAK,QAAQ,KAAK,QAAQ,QAAQ;AACxD,2BAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA,UAAU,WAAW,QAAQ,KAAK,UAAU,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,UAC7D,UAAU,QAAQ,KAAK,YAAY;AAAA,QAAA;AAAA,MAEvC,WAAW,QAAQ,MAAM,KAAK;AAC5B,2BAAmB;AAAA,UACjB,MAAM;AAAA,UACN,KAAK,QAAQ,KAAK;AAAA,QAAA;AAAA,MAEtB,OAAO;AACL,2BAAmB;AAAA,UACjB,MAAM;AAAA,UACN,QAAQ,OAAO,KAAK,KAAK,UAAU,QAAQ,QAAQ,CAAC;AAAA,UACpD,UAAU;AAAA,UACV,UAAU;AAAA,QAAA;AAAA,MAEd;AAEA,YAAM,qBAAyC;AAAA,QAC7C,GAAG,QAAQ;AAAA,QACX,MAAM;AAAA,QACN,UAAU,QAAQ;AAAA,QAClB,qBAAqB;AAAA,MAAA;AAGvB,YAAM,sBAAsB,MAAM;AAAA,QAChC;AAAA,QACA;AAAA,UACE,WAAW,KAAK,WAAW,SAAA;AAAA,UAC3B,YAAY,KAAK,YAAY,SAAA;AAAA,UAC7B,SAAS,KAAK;AAAA,QAAA;AAAA,QAEhB;AAAA,MAAA;AAGF,UAAI,CAAC,oBAAoB,aAAa,CAAC,oBAAoB,aAAa;AACtE,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AAEA,YAAM,kBACJ,oBAAoB,YAAY,eAChC,oBAAoB,YAAY;AAClC,WAAK,OAAO;AAAA,QACV,6BAA6B,oBAAoB,YAAY,QAAQ;AAAA,MAAA;AAEvE,UAAI,oBAAoB,YAAY,aAAa;AAC/C,aAAK,OAAO;AAAA,UACV,gCAAgC,oBAAoB,YAAY,WAAW;AAAA,QAAA;AAE7E,aAAK,OAAO;AAAA,UACV,2BAA2B,eAAe;AAAA,QAAA;AAAA,MAE9C,OAAO;AACL,aAAK,OAAO;AAAA,UACV,gDAAgD,eAAe;AAAA,QAAA;AAAA,MAEnE;AAEA,YAAM,mBAAmB,MAAM,KAAK;AAAA,QAClC;AAAA,QACA;AAAA,UACE,eAAe;AAAA,UACf,MAAM,QAAQ,QAAQ;AAAA,QAAA;AAAA,QAExB,QAAQ;AAAA,MAAA;AAGV,UAAI,CAAC,iBAAiB,SAAS;AAC7B,cAAM,IAAI;AAAA,UACR,gCAAgC,iBAAiB,KAAK;AAAA,QAAA;AAAA,MAE1D;AAEA,WAAK,OAAO,KAAK,0CAA0C;AAE3D,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACA,oBAAoB;AAAA,QACpB,eAAe;AAAA,MAAA;AAAA,IAEnB,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,wCAAwC,KAAK,EAAE;AACjE,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,wCAAwC,KAAK;AAAA,MAAA;AAAA,IAExD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAa,aAAa,SAIvB;AACD,UAAM,YAAY,MAAM,KAAK,WAAW,aAAa,OAAO;AAC5D,WAAO;AAAA,MACL,MAAM,UAAU;AAAA,MAChB,WAAW,UAAU,WAAW;AAAA,MAChC,YAAY,UAAU,YAAY;AAAA,IAAA;AAAA,EAEtC;AAAA;AAAA;AAAA;AAAA,EAKO,QAAc;AACnB,SAAK,OAAO,KAAK,sBAAsB;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKO,aAAkC;AACvC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKO,iBAA6B;AAClC,WAAO,KAAK;AAAA,EACd;AACF;AAEA,SAAS,gBAAgB,KAAsB;AAC7C,SAAO,OAAO;AAChB;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es4.js","sources":["../../src/hcs-6/client.ts"],"sourcesContent":["import {\n Client,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n TopicId,\n TransactionReceipt,\n AccountId,\n PublicKey,\n} from '@hashgraph/sdk';\nimport { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6RegistryType,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6RegistryEntry,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n} from './types';\nimport { NetworkType } from '../utils/types';\nimport { detectKeyTypeFromString } from '../utils/key-type-detector';\nimport {\n inscribe,\n InscriptionInput,\n InscriptionResponse,\n} from '../inscribe/inscriber';\nimport { InscriptionOptions } from '../inscribe/types';\n\n/**\n * Mirror node message format for HCS-6 registry entries\n */\ninterface MirrorNodeMessage {\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id?: string;\n payer?: string;\n op?: string;\n t_id?: string;\n m?: string;\n}\n\n/**\n * Type guard to validate mirror node message format\n */\nfunction isMirrorNodeMessage(obj: unknown): obj is MirrorNodeMessage {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'sequence_number' in obj &&\n 'consensus_timestamp' in obj &&\n typeof (obj as Record<string, unknown>).sequence_number === 'number' &&\n typeof (obj as Record<string, unknown>).consensus_timestamp === 'string'\n );\n}\n\n/**\n * SDK client configuration for HCS-6\n */\nexport interface SDKHCS6ClientConfig extends HCS6ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * SDK client for HCS-6 operations\n */\nexport class HCS6Client extends HCS6BaseClient {\n private client: Client;\n private operatorId: AccountId;\n private operatorKey: PrivateKey;\n private initialized = false;\n private keyType: 'ed25519' | 'ecdsa';\n\n /**\n * Create a new HCS-6 client\n * @param config Client configuration\n */\n constructor(config: SDKHCS6ClientConfig) {\n super({\n network: config.network,\n logLevel: config.logLevel,\n silent: config.silent,\n mirrorNodeUrl: config.mirrorNodeUrl,\n logger: config.logger,\n });\n\n this.operatorId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n\n if (config.keyType) {\n this.keyType = config.keyType;\n this.operatorKey =\n typeof config.operatorKey === 'string'\n ? this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(config.operatorKey)\n : PrivateKey.fromStringED25519(config.operatorKey)\n : config.operatorKey;\n } else if (typeof config.operatorKey === 'string') {\n try {\n const keyDetection = detectKeyTypeFromString(config.operatorKey);\n this.operatorKey = keyDetection.privateKey;\n this.keyType = keyDetection.detectedType;\n\n if (keyDetection.warning) {\n this.logger.warn(keyDetection.warning);\n }\n } catch (error) {\n this.logger.warn(\n 'Failed to detect key type from private key format, defaulting to ECDSA',\n );\n this.keyType = 'ecdsa';\n this.operatorKey = PrivateKey.fromStringECDSA(config.operatorKey);\n }\n } else {\n this.operatorKey = config.operatorKey;\n this.keyType = 'ecdsa';\n }\n\n this.client = this.createClient(config.network);\n\n this.initializeClient();\n }\n\n /**\n * Initialize the Hedera client with operator information\n */\n private initializeClient(): void {\n try {\n this.client.setOperator(this.operatorId, this.operatorKey);\n this.initialized = true;\n this.logger.info(\n `HCS-6 client initialized successfully with key type: ${this.keyType}`,\n );\n } catch (error) {\n this.logger.error(`Failed to initialize HCS-6 client: ${error}`);\n throw error;\n }\n }\n\n /**\n * Create a Hedera client for the specified network\n * @param network The network to connect to\n * @returns The Hedera client\n */\n private createClient(network: NetworkType): Client {\n if (network === 'mainnet') {\n return Client.forMainnet();\n } else {\n return Client.forTestnet();\n }\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n public async createRegistry(\n options: HCS6CreateRegistryOptions = {},\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n const ttl = options.ttl ?? 86400;\n\n if (!validateHCS6TTL(ttl)) {\n throw new Error('TTL must be at least 3600 seconds (1 hour)');\n }\n\n const memo = this.generateRegistryMemo(ttl);\n\n let transaction = new TopicCreateTransaction().setTopicMemo(memo);\n\n\n\n let submitKeyPrivate: PrivateKey | undefined;\n if (options.submitKey) {\n let submitPublicKey: PublicKey;\n if (typeof options.submitKey === 'string') {\n submitPublicKey = PublicKey.fromString(options.submitKey);\n } else if (typeof options.submitKey === 'boolean') {\n submitPublicKey = this.operatorKey.publicKey;\n } else {\n submitPublicKey = options.submitKey.publicKey;\n submitKeyPrivate = options.submitKey;\n }\n transaction = transaction.setSubmitKey(submitPublicKey);\n }\n\n const frozenTx = await transaction.freezeWith(this.client);\n\n\n\n if (submitKeyPrivate) {\n await frozenTx.sign(submitKeyPrivate);\n }\n\n const txResponse = await frozenTx.execute(this.client);\n\n const receipt = await txResponse.getReceipt(this.client);\n const topicId = receipt.topicId;\n\n if (!topicId) {\n throw new Error(\n 'Failed to create HCS-6 registry: No topic ID in receipt',\n );\n }\n\n const topicIdStr = topicId.toString();\n\n this.logger.info(\n `Created HCS-6 registry topic: ${topicIdStr} (Non-indexed, TTL: ${ttl}s)`,\n );\n\n return {\n success: true,\n topicId: topicIdStr,\n transactionId: txResponse.transactionId.toString(),\n };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return {\n success: false,\n error: `Failed to create HCS-6 registry: ${error}`,\n };\n }\n }\n\n /**\n * Register a new dynamic hashinal update in the registry\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n public async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n return this.registerEntryWithKey(registryTopicId, options, undefined);\n }\n\n /**\n * Register a new dynamic hashinal update in the registry with custom submit key\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @param submitKey Optional submit key for the registry topic\n * @returns Promise resolving to the operation result\n */\n private async registerEntryWithKey(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n submitKey?: string | PrivateKey,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n\n const receipt = await this.submitMessageWithKey(\n registryTopicId,\n message,\n submitKey,\n );\n\n this.logger.info(\n `Registered dynamic hashinal update in registry ${registryTopicId} pointing to HCS-1 topic ${options.targetTopicId}`,\n );\n\n return {\n success: true,\n receipt,\n sequenceNumber: receipt.topicSequenceNumber?.low ?? undefined,\n };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return {\n success: false,\n error: `Failed to register HCS-6 entry: ${error}`,\n };\n }\n }\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n public async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`,\n );\n\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`,\n );\n const rawMessagesResponse = await this.mirrorNode.getTopicMessages(\n topicId,\n {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n },\n );\n\n if (!Array.isArray(rawMessagesResponse)) {\n throw new Error(\n 'Invalid response format from mirror node: expected array',\n );\n }\n\n const rawMessagesResult = rawMessagesResponse.filter(isMirrorNodeMessage);\n if (rawMessagesResult.length !== rawMessagesResponse.length) {\n this.logger.warn(\n `Some messages from mirror node had invalid format. Expected ${rawMessagesResponse.length}, got ${rawMessagesResult.length} valid messages.`,\n );\n }\n\n const rawMessages = options.limit\n ? rawMessagesResult.slice(0, options.limit)\n : rawMessagesResult;\n\n this.logger.debug(\n `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`,\n );\n\n const entries: HCS6RegistryEntry[] = [];\n let latestEntry: HCS6RegistryEntry | undefined;\n\n for (const msg of rawMessages) {\n try {\n const mirrorMsg = msg as MirrorNodeMessage;\n\n const message: HCS6Message = {\n p: 'hcs-6',\n op: mirrorMsg.op,\n t_id: mirrorMsg.t_id,\n m: mirrorMsg.m,\n } as HCS6Message;\n\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n this.logger.warn(`Invalid HCS-6 message: ${errors.join(', ')}`);\n continue;\n }\n\n const entry: HCS6RegistryEntry = {\n topicId,\n sequence: mirrorMsg.sequence_number,\n timestamp: mirrorMsg.consensus_timestamp,\n payer: mirrorMsg.payer_account_id || mirrorMsg.payer || '',\n message,\n consensus_timestamp: mirrorMsg.consensus_timestamp,\n registry_type: memoInfo.registryType,\n };\n\n entries.push(entry);\n\n if (!latestEntry || entry.timestamp > latestEntry.timestamp) {\n latestEntry = entry;\n }\n } catch (error) {\n this.logger.warn(`Error processing HCS-6 message: ${error}`);\n }\n }\n\n this.logger.debug(\n `Processed ${entries.length} valid entries for HCS-6 registry ${topicId}`,\n );\n\n const registry: HCS6TopicRegistry = {\n topicId,\n registryType: memoInfo.registryType,\n ttl: memoInfo.ttl,\n entries: latestEntry ? [latestEntry] : [],\n latestEntry,\n };\n\n return registry;\n } catch (error) {\n this.logger.error(`Failed to get HCS-6 registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Submit a message to a HCS-6 topic\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n public async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n return this.submitMessageWithKey(topicId, payload, undefined);\n }\n\n /**\n * Submit a message to a HCS-6 topic with custom submit key\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @param submitKey Optional submit key for the topic\n * @returns Promise resolving to the transaction receipt\n */\n private async submitMessageWithKey(\n topicId: string,\n payload: HCS6Message,\n submitKey?: string | PrivateKey,\n ): Promise<TransactionReceipt> {\n try {\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n\n let transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(JSON.stringify(payload));\n\n if (submitKey) {\n const privateKey =\n typeof submitKey === 'string'\n ? PrivateKey.fromString(submitKey)\n : submitKey;\n\n const frozenTx = await transaction.freezeWith(this.client);\n await frozenTx.sign(privateKey);\n transaction = frozenTx;\n }\n\n const txResponse = await transaction.execute(this.client);\n const receipt = await txResponse.getReceipt(this.client);\n\n return receipt;\n } catch (error) {\n this.logger.error(`Failed to submit HCS-6 message: ${error}`);\n throw error;\n }\n }\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n public async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n this.logger.info('Starting dynamic hashinal creation process');\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n this.logger.info(\n `Using existing HCS-6 registry topic: ${options.registryTopicId}`,\n );\n registryTopicId = options.registryTopicId;\n\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const registryResponse = await this.createRegistry({\n ttl: options.ttl,\n submitKey: true,\n });\n\n if (!registryResponse.success || !registryResponse.topicId) {\n throw new Error(\n `Failed to create HCS-6 registry: ${registryResponse.error}`,\n );\n }\n\n registryTopicId = registryResponse.topicId;\n registryTransactionId = registryResponse.transactionId;\n this.logger.info(`Created HCS-6 registry topic: ${registryTopicId}`);\n }\n\n let inscriptionTopicId: string | undefined;\n\n if (options.inscriptionOptions) {\n const inscriptionInput: InscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n\n const inscriptionOptions: InscriptionOptions = {\n ...options.inscriptionOptions,\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const inscriptionResponse = await inscribe(\n inscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorKey.toString(),\n network: this.network,\n },\n inscriptionOptions,\n );\n\n if (inscriptionResponse.confirmed && inscriptionResponse.inscription) {\n inscriptionTopicId =\n inscriptionResponse.inscription.jsonTopicId ||\n inscriptionResponse.inscription.topic_id;\n this.logger.info(\n `Inscribed metadata to topic: ${inscriptionTopicId}`,\n );\n } else {\n throw new Error('Failed to inscribe metadata');\n }\n }\n\n if (!inscriptionTopicId) {\n throw new Error('No inscription topic ID available for registration');\n }\n\n const registerResponse = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Initial dynamic hashinal registration',\n },\n options.submitKey,\n );\n\n if (!registerResponse.success) {\n throw new Error(\n `Failed to register in HCS-6: ${registerResponse.error}`,\n );\n }\n\n this.logger.info('Successfully created dynamic hashinal');\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n transactionId: registryTransactionId,\n };\n } catch (error) {\n this.logger.error(`Failed to create dynamic hashinal: ${error}`);\n return {\n success: false,\n error: `Failed to create dynamic hashinal: ${error}`,\n };\n }\n }\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * This method combines createHashinal and registerEntry into a single operation\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n public async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n this.logger.info('Starting dynamic hashinal registration process');\n\n let registryTopicId: string;\n let registryTransactionId: string | undefined;\n\n if (options.registryTopicId) {\n this.logger.info(\n `Using existing HCS-6 registry topic: ${options.registryTopicId}`,\n );\n registryTopicId = options.registryTopicId;\n\n const isValid = await this.validateHCS6Topic(registryTopicId);\n if (!isValid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n } else {\n const registryResponse = await this.createRegistry({\n ttl: options.ttl,\n submitKey: true,\n });\n\n if (!registryResponse.success || !registryResponse.topicId) {\n throw new Error(\n `Failed to create HCS-6 registry: ${registryResponse.error}`,\n );\n }\n\n registryTopicId = registryResponse.topicId;\n registryTransactionId = registryResponse.transactionId;\n this.logger.info(`Created HCS-6 registry topic: ${registryTopicId}`);\n }\n\n let inscriptionInput: InscriptionInput;\n\n if (options.data?.base64) {\n const buffer = Buffer.from(options.data.base64, 'base64');\n inscriptionInput = {\n type: 'buffer',\n buffer: buffer,\n fileName: 'data.' + (options.data.mimeType?.split('/')[1] || 'bin'),\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n inscriptionInput = {\n type: 'url',\n url: options.data.url,\n };\n } else {\n inscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...options.inscriptionOptions,\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n };\n\n const inscriptionResponse = await inscribe(\n inscriptionInput,\n {\n accountId: this.operatorId.toString(),\n privateKey: this.operatorKey.toString(),\n network: this.network,\n },\n inscriptionOptions,\n );\n\n if (!inscriptionResponse.confirmed || !inscriptionResponse.inscription) {\n throw new Error('Failed to inscribe data');\n }\n\n const metadataTopicId =\n inscriptionResponse.inscription.jsonTopicId ||\n inscriptionResponse.inscription.topic_id;\n this.logger.info(\n `Inscribed image to topic: ${inscriptionResponse.inscription.topic_id}`,\n );\n if (inscriptionResponse.inscription.jsonTopicId) {\n this.logger.info(\n `Inscribed metadata to topic: ${inscriptionResponse.inscription.jsonTopicId}`,\n );\n this.logger.info(\n `Using metadata topic ID ${metadataTopicId} for HCS-6 registry`,\n );\n } else {\n this.logger.info(\n `No separate metadata topic, using data topic ${metadataTopicId} for HCS-6 registry`,\n );\n }\n\n const registerResponse = await this.registerEntryWithKey(\n registryTopicId,\n {\n targetTopicId: metadataTopicId,\n memo: options.memo || 'Dynamic hashinal registration',\n },\n options.submitKey,\n );\n\n if (!registerResponse.success) {\n throw new Error(\n `Failed to register in HCS-6: ${registerResponse.error}`,\n );\n }\n\n this.logger.info('Successfully registered dynamic hashinal');\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId: metadataTopicId,\n transactionId: registryTransactionId,\n };\n } catch (error) {\n this.logger.error(`Failed to register dynamic hashinal: ${error}`);\n return {\n success: false,\n error: `Failed to register dynamic hashinal: ${error}`,\n };\n }\n }\n\n /**\n * @param topicId The topic ID to query\n * @returns Promise resolving to the topic information\n */\n public async getTopicInfo(topicId: string): Promise<{\n memo: string;\n admin_key?: string;\n submit_key?: string;\n }> {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n return {\n memo: topicInfo.memo,\n admin_key: topicInfo.admin_key?.key,\n submit_key: topicInfo.submit_key?.key,\n };\n }\n\n /**\n * Close the client and release resources\n */\n public close(): void {\n this.logger.info('HCS-6 client closed.');\n }\n\n /**\n * Get the configured key type (ed25519 or ecdsa)\n */\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.keyType;\n }\n\n /**\n * Get the configured operator private key\n */\n public getOperatorKey(): PrivateKey {\n return this.operatorKey;\n }\n}\n\nfunction validateHCS6TTL(ttl: number): boolean {\n return ttl >= 3600;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashgraphonline/standards-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.170",
|
|
4
4
|
"description": "The Hashgraph Online Standards SDK provides a complete implementation of the Hashgraph Consensus Standards (HCS), giving developers all the tools needed to build applications on Hedera.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|