@hashgraphonline/standards-agent-kit 0.2.149 → 0.2.151

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/cjs/standards-agent-kit.cjs +1 -1
  2. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  3. package/dist/cjs/types/inscription-response.d.ts +0 -5
  4. package/dist/cjs/utils/inscription-utils.d.ts +1 -1
  5. package/dist/es/standards-agent-kit.es24.js +1 -1
  6. package/dist/es/standards-agent-kit.es25.js +1 -1
  7. package/dist/es/standards-agent-kit.es26.js +1 -1
  8. package/dist/es/standards-agent-kit.es27.js +1 -1
  9. package/dist/es/standards-agent-kit.es28.js +1 -1
  10. package/dist/es/standards-agent-kit.es31.js +1 -1
  11. package/dist/es/standards-agent-kit.es32.js +1 -1
  12. package/dist/es/standards-agent-kit.es33.js +1 -1
  13. package/dist/es/standards-agent-kit.es36.js +1 -1
  14. package/dist/es/standards-agent-kit.es37.js +1 -1
  15. package/dist/es/standards-agent-kit.es38.js +3 -3
  16. package/dist/es/standards-agent-kit.es39.js +5 -7
  17. package/dist/es/standards-agent-kit.es39.js.map +1 -1
  18. package/dist/es/standards-agent-kit.es50.js +3 -20
  19. package/dist/es/standards-agent-kit.es50.js.map +1 -1
  20. package/dist/es/standards-agent-kit.es51.js +17 -50
  21. package/dist/es/standards-agent-kit.es51.js.map +1 -1
  22. package/dist/es/standards-agent-kit.es52.js +54 -3
  23. package/dist/es/standards-agent-kit.es52.js.map +1 -1
  24. package/dist/es/standards-agent-kit.es53.js +2 -39
  25. package/dist/es/standards-agent-kit.es53.js.map +1 -1
  26. package/dist/es/standards-agent-kit.es54.js +38 -17
  27. package/dist/es/standards-agent-kit.es54.js.map +1 -1
  28. package/dist/es/standards-agent-kit.es55.js +16 -81
  29. package/dist/es/standards-agent-kit.es55.js.map +1 -1
  30. package/dist/es/standards-agent-kit.es56.js +73 -3
  31. package/dist/es/standards-agent-kit.es56.js.map +1 -1
  32. package/dist/es/standards-agent-kit.es8.js +10 -0
  33. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  34. package/dist/es/types/inscription-response.d.ts +0 -5
  35. package/dist/es/utils/inscription-utils.d.ts +1 -1
  36. package/dist/umd/standards-agent-kit.umd.js +1 -1
  37. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  38. package/dist/umd/types/inscription-response.d.ts +0 -5
  39. package/dist/umd/utils/inscription-utils.d.ts +1 -1
  40. package/package.json +1 -1
  41. package/src/builders/inscriber/inscriber-builder.ts +10 -0
  42. package/src/tools/inscriber/InscribeHashinalTool.ts +0 -2
  43. package/src/types/inscription-response.ts +1 -16
  44. package/src/utils/inscription-utils.ts +2 -4
@@ -1,43 +1,6 @@
1
1
  import { z } from "zod";
2
- const hip412FileSchema = z.object({
3
- uri: z.string().describe("URI of the file"),
4
- checksum: z.string().optional().describe("SHA-256 checksum of the file"),
5
- is_default_file: z.boolean().optional().describe("Whether this is the default file"),
6
- type: z.string().describe("MIME type of the file")
7
- });
8
- const hip412AttributeSchema = z.object({
9
- trait_type: z.string().describe("The trait type"),
10
- value: z.union([z.string(), z.number()]).describe("The trait value"),
11
- display_type: z.string().optional().describe("Display type for the attribute")
12
- });
13
- const hip412MetadataSchema = z.object({
14
- name: z.string().describe("Token name (required by HIP-412)"),
15
- description: z.string().describe("Human readable description (required by HIP-412)"),
16
- image: z.string().describe("Preview image URI (required by HIP-412)"),
17
- type: z.string().describe("MIME type (required by HIP-412)"),
18
- creator: z.string().optional().describe("Creator name or comma-separated names"),
19
- creatorDID: z.string().optional().describe("Decentralized identifier for creator"),
20
- checksum: z.string().optional().describe("SHA-256 checksum of the image"),
21
- format: z.string().optional().default("HIP412@2.0.0").describe("Metadata format version"),
22
- files: z.array(hip412FileSchema).optional().describe("Array of files for multi-file NFTs"),
23
- attributes: z.array(hip412AttributeSchema).optional().describe("NFT attributes/traits"),
24
- properties: z.record(z.unknown()).optional().describe("Additional properties")
25
- });
26
- function validateHIP412Metadata(metadata) {
27
- try {
28
- return hip412MetadataSchema.parse(metadata);
29
- } catch (error) {
30
- if (error instanceof z.ZodError) {
31
- const issues = error.errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("; ");
32
- throw new Error(`HIP-412 metadata validation failed: ${issues}`);
33
- }
34
- throw error;
35
- }
36
- }
2
+ const contentRefSchema = z.string().regex(/^content-ref:[a-zA-Z0-9_-]+$/, 'Content reference must be in format "content-ref:[alphanumeric-id]"').describe('Content reference in format "content-ref:[id]"');
37
3
  export {
38
- hip412AttributeSchema,
39
- hip412FileSchema,
40
- hip412MetadataSchema,
41
- validateHIP412Metadata
4
+ contentRefSchema
42
5
  };
43
6
  //# sourceMappingURL=standards-agent-kit.es53.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es53.js","sources":["../../src/validation/hip412-schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * HIP-412 file schema for multi-file NFTs\n */\nexport const hip412FileSchema = z.object({\n uri: z.string().describe('URI of the file'),\n checksum: z.string().optional().describe('SHA-256 checksum of the file'),\n is_default_file: z.boolean().optional().describe('Whether this is the default file'),\n type: z.string().describe('MIME type of the file'),\n});\n\n/**\n * HIP-412 attribute schema for NFT traits\n */\nexport const hip412AttributeSchema = z.object({\n trait_type: z.string().describe('The trait type'),\n value: z.union([z.string(), z.number()]).describe('The trait value'),\n display_type: z.string().optional().describe('Display type for the attribute'),\n});\n\n/**\n * HIP-412 compliant metadata schema for Hedera NFTs\n */\nexport const hip412MetadataSchema = z.object({\n name: z.string().describe('Token name (required by HIP-412)'),\n description: z.string().describe('Human readable description (required by HIP-412)'),\n image: z.string().describe('Preview image URI (required by HIP-412)'),\n type: z.string().describe('MIME type (required by HIP-412)'),\n creator: z.string().optional().describe('Creator name or comma-separated names'),\n creatorDID: z.string().optional().describe('Decentralized identifier for creator'),\n checksum: z.string().optional().describe('SHA-256 checksum of the image'),\n format: z.string().optional().default('HIP412@2.0.0').describe('Metadata format version'),\n files: z.array(hip412FileSchema).optional().describe('Array of files for multi-file NFTs'),\n attributes: z.array(hip412AttributeSchema).optional().describe('NFT attributes/traits'),\n properties: z.record(z.unknown()).optional().describe('Additional properties'),\n});\n\n/**\n * Validates metadata against HIP-412 standard\n */\nexport function validateHIP412Metadata(metadata: unknown): z.infer<typeof hip412MetadataSchema> {\n try {\n return hip412MetadataSchema.parse(metadata);\n } catch (error) {\n if (error instanceof z.ZodError) {\n const issues = error.errors.map(err => `${err.path.join('.')}: ${err.message}`).join('; ');\n throw new Error(`HIP-412 metadata validation failed: ${issues}`);\n }\n throw error;\n }\n}"],"names":[],"mappings":";AAKO,MAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,KAAK,EAAE,SAAS,SAAS,iBAAiB;AAAA,EAC1C,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,8BAA8B;AAAA,EACvE,iBAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,SAAS,kCAAkC;AAAA,EACnF,MAAM,EAAE,OAAA,EAAS,SAAS,uBAAuB;AACnD,CAAC;AAKM,MAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,YAAY,EAAE,SAAS,SAAS,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,CAAC,EAAE,OAAA,GAAU,EAAE,OAAA,CAAQ,CAAC,EAAE,SAAS,iBAAiB;AAAA,EACnE,cAAc,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,gCAAgC;AAC/E,CAAC;AAKM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,SAAS,SAAS,kCAAkC;AAAA,EAC5D,aAAa,EAAE,SAAS,SAAS,kDAAkD;AAAA,EACnF,OAAO,EAAE,SAAS,SAAS,yCAAyC;AAAA,EACpE,MAAM,EAAE,SAAS,SAAS,iCAAiC;AAAA,EAC3D,SAAS,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,uCAAuC;AAAA,EAC/E,YAAY,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,sCAAsC;AAAA,EACjF,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,+BAA+B;AAAA,EACxE,QAAQ,EAAE,OAAA,EAAS,SAAA,EAAW,QAAQ,cAAc,EAAE,SAAS,yBAAyB;AAAA,EACxF,OAAO,EAAE,MAAM,gBAAgB,EAAE,SAAA,EAAW,SAAS,oCAAoC;AAAA,EACzF,YAAY,EAAE,MAAM,qBAAqB,EAAE,SAAA,EAAW,SAAS,uBAAuB;AAAA,EACtF,YAAY,EAAE,OAAO,EAAE,QAAA,CAAS,EAAE,WAAW,SAAS,uBAAuB;AAC/E,CAAC;AAKM,SAAS,uBAAuB,UAAyD;AAC9F,MAAI;AACF,WAAO,qBAAqB,MAAM,QAAQ;AAAA,EAC5C,SAAS,OAAO;AACd,QAAI,iBAAiB,EAAE,UAAU;AAC/B,YAAM,SAAS,MAAM,OAAO,IAAI,CAAA,QAAO,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE,KAAK,IAAI;AACzF,YAAM,IAAI,MAAM,uCAAuC,MAAM,EAAE;AAAA,IACjE;AACA,UAAM;AAAA,EACR;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es53.js","sources":["../../src/validation/content-ref-schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * Validates content reference format\n */\nexport const contentRefSchema = z\n .string()\n .regex(/^content-ref:[a-zA-Z0-9_-]+$/, 'Content reference must be in format \"content-ref:[alphanumeric-id]\"')\n .describe('Content reference in format \"content-ref:[id]\"');\n\n/**\n * Validates content reference or returns error for dumber models\n */\nexport function validateContentRef(input: string): string {\n try {\n return contentRefSchema.parse(input);\n } catch (error) {\n throw new Error(`Invalid content reference format. Expected \"content-ref:[alphanumeric-id]\" but got \"${input}\"`);\n }\n}"],"names":[],"mappings":";AAKO,MAAM,mBAAmB,EAC7B,SACA,MAAM,gCAAgC,qEAAqE,EAC3G,SAAS,gDAAgD;"}
@@ -1,22 +1,43 @@
1
- function generateDefaultMetadata(params) {
2
- const defaultName = params.fileName?.replace(/\.[^/.]+$/, "") || "Hashinal NFT";
3
- let defaultType = "media";
4
- if (params.mimeType?.startsWith("image/")) {
5
- defaultType = "image";
6
- } else if (params.mimeType?.startsWith("video/")) {
7
- defaultType = "video";
8
- } else if (params.mimeType?.startsWith("audio/")) {
9
- defaultType = "audio";
1
+ import { z } from "zod";
2
+ const hip412FileSchema = z.object({
3
+ uri: z.string().describe("URI of the file"),
4
+ checksum: z.string().optional().describe("SHA-256 checksum of the file"),
5
+ is_default_file: z.boolean().optional().describe("Whether this is the default file"),
6
+ type: z.string().describe("MIME type of the file")
7
+ });
8
+ const hip412AttributeSchema = z.object({
9
+ trait_type: z.string().describe("The trait type"),
10
+ value: z.union([z.string(), z.number()]).describe("The trait value"),
11
+ display_type: z.string().optional().describe("Display type for the attribute")
12
+ });
13
+ const hip412MetadataSchema = z.object({
14
+ name: z.string().describe("Token name (required by HIP-412)"),
15
+ description: z.string().describe("Human readable description (required by HIP-412)"),
16
+ image: z.string().describe("Preview image URI (required by HIP-412)"),
17
+ type: z.string().describe("MIME type (required by HIP-412)"),
18
+ creator: z.string().optional().describe("Creator name or comma-separated names"),
19
+ creatorDID: z.string().optional().describe("Decentralized identifier for creator"),
20
+ checksum: z.string().optional().describe("SHA-256 checksum of the image"),
21
+ format: z.string().optional().default("HIP412@2.0.0").describe("Metadata format version"),
22
+ files: z.array(hip412FileSchema).optional().describe("Array of files for multi-file NFTs"),
23
+ attributes: z.array(hip412AttributeSchema).optional().describe("NFT attributes/traits"),
24
+ properties: z.record(z.unknown()).optional().describe("Additional properties")
25
+ });
26
+ function validateHIP412Metadata(metadata) {
27
+ try {
28
+ return hip412MetadataSchema.parse(metadata);
29
+ } catch (error) {
30
+ if (error instanceof z.ZodError) {
31
+ const issues = error.errors.map((err) => `${err.path.join(".")}: ${err.message}`).join("; ");
32
+ throw new Error(`HIP-412 metadata validation failed: ${issues}`);
33
+ }
34
+ throw error;
10
35
  }
11
- return {
12
- name: params.name || defaultName,
13
- creator: params.creator || params.operatorAccount,
14
- description: params.description || `${defaultType.charAt(0).toUpperCase() + defaultType.slice(1)} NFT inscribed as Hashinal`,
15
- type: params.type || defaultType,
16
- image: ""
17
- };
18
36
  }
19
37
  export {
20
- generateDefaultMetadata
38
+ hip412AttributeSchema,
39
+ hip412FileSchema,
40
+ hip412MetadataSchema,
41
+ validateHIP412Metadata
21
42
  };
22
43
  //# sourceMappingURL=standards-agent-kit.es54.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es54.js","sources":["../../src/utils/metadata-defaults.ts"],"sourcesContent":["/**\n * Generates default metadata for NFT inscription\n */\nexport function generateDefaultMetadata(params: {\n name?: string;\n creator?: string;\n description?: string;\n type?: string;\n fileName?: string;\n mimeType?: string;\n operatorAccount: string;\n}): {\n name: string;\n creator: string;\n description: string;\n type: string;\n image: string;\n} {\n const defaultName = params.fileName?.replace(/\\.[^/.]+$/, '') || 'Hashinal NFT';\n let defaultType = 'media';\n if (params.mimeType?.startsWith('image/')) {\n defaultType = 'image';\n } else if (params.mimeType?.startsWith('video/')) {\n defaultType = 'video';\n } else if (params.mimeType?.startsWith('audio/')) {\n defaultType = 'audio';\n }\n\n return {\n name: params.name || defaultName,\n creator: params.creator || params.operatorAccount,\n description: params.description || `${defaultType.charAt(0).toUpperCase() + defaultType.slice(1)} NFT inscribed as Hashinal`,\n type: params.type || defaultType,\n image: '',\n };\n}"],"names":[],"mappings":"AAGO,SAAS,wBAAwB,QActC;AACA,QAAM,cAAc,OAAO,UAAU,QAAQ,aAAa,EAAE,KAAK;AACjE,MAAI,cAAc;AAClB,MAAI,OAAO,UAAU,WAAW,QAAQ,GAAG;AACzC,kBAAc;AAAA,EAChB,WAAW,OAAO,UAAU,WAAW,QAAQ,GAAG;AAChD,kBAAc;AAAA,EAChB,WAAW,OAAO,UAAU,WAAW,QAAQ,GAAG;AAChD,kBAAc;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,MAAM,OAAO,QAAQ;AAAA,IACrB,SAAS,OAAO,WAAW,OAAO;AAAA,IAClC,aAAa,OAAO,eAAe,GAAG,YAAY,OAAO,CAAC,EAAE,YAAA,IAAgB,YAAY,MAAM,CAAC,CAAC;AAAA,IAChG,MAAM,OAAO,QAAQ;AAAA,IACrB,OAAO;AAAA,EAAA;AAEX;"}
1
+ {"version":3,"file":"standards-agent-kit.es54.js","sources":["../../src/validation/hip412-schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * HIP-412 file schema for multi-file NFTs\n */\nexport const hip412FileSchema = z.object({\n uri: z.string().describe('URI of the file'),\n checksum: z.string().optional().describe('SHA-256 checksum of the file'),\n is_default_file: z.boolean().optional().describe('Whether this is the default file'),\n type: z.string().describe('MIME type of the file'),\n});\n\n/**\n * HIP-412 attribute schema for NFT traits\n */\nexport const hip412AttributeSchema = z.object({\n trait_type: z.string().describe('The trait type'),\n value: z.union([z.string(), z.number()]).describe('The trait value'),\n display_type: z.string().optional().describe('Display type for the attribute'),\n});\n\n/**\n * HIP-412 compliant metadata schema for Hedera NFTs\n */\nexport const hip412MetadataSchema = z.object({\n name: z.string().describe('Token name (required by HIP-412)'),\n description: z.string().describe('Human readable description (required by HIP-412)'),\n image: z.string().describe('Preview image URI (required by HIP-412)'),\n type: z.string().describe('MIME type (required by HIP-412)'),\n creator: z.string().optional().describe('Creator name or comma-separated names'),\n creatorDID: z.string().optional().describe('Decentralized identifier for creator'),\n checksum: z.string().optional().describe('SHA-256 checksum of the image'),\n format: z.string().optional().default('HIP412@2.0.0').describe('Metadata format version'),\n files: z.array(hip412FileSchema).optional().describe('Array of files for multi-file NFTs'),\n attributes: z.array(hip412AttributeSchema).optional().describe('NFT attributes/traits'),\n properties: z.record(z.unknown()).optional().describe('Additional properties'),\n});\n\n/**\n * Validates metadata against HIP-412 standard\n */\nexport function validateHIP412Metadata(metadata: unknown): z.infer<typeof hip412MetadataSchema> {\n try {\n return hip412MetadataSchema.parse(metadata);\n } catch (error) {\n if (error instanceof z.ZodError) {\n const issues = error.errors.map(err => `${err.path.join('.')}: ${err.message}`).join('; ');\n throw new Error(`HIP-412 metadata validation failed: ${issues}`);\n }\n throw error;\n }\n}"],"names":[],"mappings":";AAKO,MAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,KAAK,EAAE,SAAS,SAAS,iBAAiB;AAAA,EAC1C,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,8BAA8B;AAAA,EACvE,iBAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,SAAS,kCAAkC;AAAA,EACnF,MAAM,EAAE,OAAA,EAAS,SAAS,uBAAuB;AACnD,CAAC;AAKM,MAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,YAAY,EAAE,SAAS,SAAS,gBAAgB;AAAA,EAChD,OAAO,EAAE,MAAM,CAAC,EAAE,OAAA,GAAU,EAAE,OAAA,CAAQ,CAAC,EAAE,SAAS,iBAAiB;AAAA,EACnE,cAAc,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,gCAAgC;AAC/E,CAAC;AAKM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,SAAS,SAAS,kCAAkC;AAAA,EAC5D,aAAa,EAAE,SAAS,SAAS,kDAAkD;AAAA,EACnF,OAAO,EAAE,SAAS,SAAS,yCAAyC;AAAA,EACpE,MAAM,EAAE,SAAS,SAAS,iCAAiC;AAAA,EAC3D,SAAS,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,uCAAuC;AAAA,EAC/E,YAAY,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,sCAAsC;AAAA,EACjF,UAAU,EAAE,OAAA,EAAS,SAAA,EAAW,SAAS,+BAA+B;AAAA,EACxE,QAAQ,EAAE,OAAA,EAAS,SAAA,EAAW,QAAQ,cAAc,EAAE,SAAS,yBAAyB;AAAA,EACxF,OAAO,EAAE,MAAM,gBAAgB,EAAE,SAAA,EAAW,SAAS,oCAAoC;AAAA,EACzF,YAAY,EAAE,MAAM,qBAAqB,EAAE,SAAA,EAAW,SAAS,uBAAuB;AAAA,EACtF,YAAY,EAAE,OAAO,EAAE,QAAA,CAAS,EAAE,WAAW,SAAS,uBAAuB;AAC/E,CAAC;AAKM,SAAS,uBAAuB,UAAyD;AAC9F,MAAI;AACF,WAAO,qBAAqB,MAAM,QAAQ;AAAA,EAC5C,SAAS,OAAO;AACd,QAAI,iBAAiB,EAAE,UAAU;AAC/B,YAAM,SAAS,MAAM,OAAO,IAAI,CAAA,QAAO,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE,KAAK,IAAI;AACzF,YAAM,IAAI,MAAM,uCAAuC,MAAM,EAAE;AAAA,IACjE;AACA,UAAM;AAAA,EACR;AACF;"}
@@ -1,87 +1,22 @@
1
- function createInscriptionSuccess(params) {
2
- const {
3
- hrl,
4
- topicId,
5
- jsonTopicId,
6
- standard,
7
- cdnUrl,
8
- transactionId,
9
- metadata
10
- } = params;
1
+ function generateDefaultMetadata(params) {
2
+ const defaultName = params.fileName?.replace(/\.[^/.]+$/, "") || "Hashinal NFT";
3
+ let defaultType = "media";
4
+ if (params.mimeType?.startsWith("image/")) {
5
+ defaultType = "image";
6
+ } else if (params.mimeType?.startsWith("video/")) {
7
+ defaultType = "video";
8
+ } else if (params.mimeType?.startsWith("audio/")) {
9
+ defaultType = "audio";
10
+ }
11
11
  return {
12
- success: true,
13
- type: "inscription",
14
- title: `${standard} Hashinal Inscription Complete`,
15
- message: `Successfully inscribed "${metadata.name || "your content"}" as a ${standard} Hashinal. The content is now ready for NFT minting.`,
16
- inscription: {
17
- hrl,
18
- topicId,
19
- jsonTopicId,
20
- standard,
21
- cdnUrl,
22
- transactionId
23
- },
24
- jsonTopicId,
25
- metadata,
26
- nextSteps: {
27
- primary: "CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.",
28
- context: 'The metadata parameter for minting should be exactly: ["' + hrl + '"] - just the HRL string in an array, nothing else.',
29
- mintingMetadata: hrl
30
- }
31
- };
32
- }
33
- function createInscriptionQuote(params) {
34
- const { totalCostHbar, validUntil, breakdown, content } = params;
35
- return {
36
- success: true,
37
- type: "quote",
38
- title: "Inscription Cost Quote",
39
- message: `Estimated cost to inscribe "${content.name || "your content"}" is ${totalCostHbar} HBAR.`,
40
- quote: {
41
- totalCostHbar,
42
- validUntil,
43
- breakdown
44
- },
45
- content
46
- };
47
- }
48
- function createInscriptionError(params) {
49
- const { code, details, suggestions } = params;
50
- return {
51
- success: false,
52
- type: "error",
53
- title: "Inscription Failed",
54
- message: `Unable to complete inscription: ${details}`,
55
- error: {
56
- code,
57
- details,
58
- suggestions
59
- }
60
- };
61
- }
62
- function createInscriptionPending(params) {
63
- const { transactionId, details, suggestions } = params;
64
- const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;
65
- return {
66
- success: false,
67
- type: "error",
68
- title: "Inscription Submitted (Pending)",
69
- message: d,
70
- error: {
71
- code: "INSCRIPTION_PENDING",
72
- details: d,
73
- suggestions: suggestions || [
74
- "Wait a few moments for confirmation",
75
- "Check the transaction status on a Hedera explorer",
76
- "Try the inscription again if it doesn't confirm within 5 minutes"
77
- ]
78
- }
12
+ name: params.name || defaultName,
13
+ creator: params.creator || params.operatorAccount,
14
+ description: params.description || `${defaultType.charAt(0).toUpperCase() + defaultType.slice(1)} NFT inscribed as Hashinal`,
15
+ type: params.type || defaultType,
16
+ image: ""
79
17
  };
80
18
  }
81
19
  export {
82
- createInscriptionError,
83
- createInscriptionPending,
84
- createInscriptionQuote,
85
- createInscriptionSuccess
20
+ generateDefaultMetadata
86
21
  };
87
22
  //# sourceMappingURL=standards-agent-kit.es55.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es55.js","sources":["../../src/types/inscription-response.ts"],"sourcesContent":["/**\n * Structured response interface for inscription tools\n * Provides a consistent, user-friendly format for inscription results\n */\n\nexport interface InscriptionSuccessResponse {\n success: true;\n type: 'inscription';\n title: string;\n message: string;\n inscription: {\n /** The HRL (Hashinal Reference Link) for minting - e.g., \"hcs://1/0.0.123456\" */\n hrl: string;\n /** Topic ID where the inscription was stored */\n topicId: string;\n /** Topic ID containing the JSON metadata when available */\n jsonTopicId?: string;\n /** Type of Hashinal - Static (HCS-5) or Dynamic (HCS-6) */\n standard: 'Static' | 'Dynamic';\n /** CDN URL for direct access to the inscribed content */\n cdnUrl?: string;\n /** Transaction ID of the inscription */\n transactionId?: string;\n };\n /** Topic ID used for metadata lookups */\n jsonTopicId?: string;\n metadata: {\n /** Name/title of the inscribed content */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Description of the content */\n description?: string;\n /** Content type (image, text, etc.) */\n type?: string;\n /** Additional attributes */\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n nextSteps: {\n /** Primary action the user should take next */\n primary: string;\n /** Additional context or options */\n context?: string;\n /** Specific metadata value to use for minting */\n mintingMetadata: string;\n };\n /** HashLink block data (only present when withHashLinkBlocks=true) */\n hashLinkBlock?: {\n /** Block topic ID on HCS */\n blockId: string;\n /** HashLink reference to the block */\n hashLink: string;\n /** Template topic ID */\n template: string;\n /** Block attributes for rendering */\n attributes: BlockAttributes;\n };\n}\n\nexport interface InscriptionQuoteResponse {\n success: true;\n type: 'quote';\n title: string;\n message: string;\n quote: {\n /** Total cost in HBAR */\n totalCostHbar: string;\n /** When the quote expires */\n validUntil: string;\n /** Cost breakdown details */\n breakdown?: CostBreakdown;\n };\n content: {\n /** Name of the content to be inscribed */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Type of content */\n type?: string;\n };\n}\n\nexport interface InscriptionErrorResponse {\n success: false;\n type: 'error';\n title: string;\n message: string;\n error: {\n /** Error code for programmatic handling */\n code: string;\n /** Detailed error message */\n details: string;\n /** Suggestions for fixing the error */\n suggestions?: string[];\n };\n}\n\nexport type InscriptionResponse =\n | InscriptionSuccessResponse\n | InscriptionQuoteResponse\n | InscriptionErrorResponse;\n\n/**\n * Helper function to create a successful inscription response\n */\nexport function createInscriptionSuccess(params: {\n hrl: string;\n topicId: string;\n jsonTopicId?: string;\n standard: 'Static' | 'Dynamic';\n cdnUrl?: string;\n transactionId?: string;\n metadata: {\n name?: string;\n creator?: string;\n description?: string;\n type?: string;\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n}): InscriptionSuccessResponse {\n const {\n hrl,\n topicId,\n jsonTopicId,\n standard,\n cdnUrl,\n transactionId,\n metadata,\n } = params;\n\n return {\n success: true,\n type: 'inscription',\n title: `${standard} Hashinal Inscription Complete`,\n message: `Successfully inscribed \"${\n metadata.name || 'your content'\n }\" as a ${standard} Hashinal. The content is now ready for NFT minting.`,\n inscription: {\n hrl,\n topicId,\n jsonTopicId,\n standard,\n cdnUrl,\n transactionId,\n },\n jsonTopicId,\n metadata,\n nextSteps: {\n primary: 'CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.',\n context:\n 'The metadata parameter for minting should be exactly: [\"' + hrl + '\"] - just the HRL string in an array, nothing else.',\n mintingMetadata: hrl,\n },\n };\n}\n\n/**\n * Block attributes for HashLink rendering\n */\ninterface BlockAttributes {\n /** Display name */\n name?: string;\n /** Description text */\n description?: string;\n /** Image URL */\n image?: string;\n /** Content type */\n contentType?: string;\n /** Size in bytes */\n size?: number;\n /** Custom metadata */\n metadata?: Record<string, string | number | boolean>;\n}\n\n/**\n * Transfer details in cost breakdown\n */\ninterface TransferDetails {\n to: string;\n amount: string;\n description: string;\n}\n\n/**\n * Cost breakdown details for inscription quote\n */\ninterface CostBreakdown {\n transfers: TransferDetails[];\n baseFee?: number;\n sizeFee?: number;\n networkFee?: number;\n serviceFee?: number;\n totalFee?: number;\n currency?: string;\n}\n\n/**\n * Helper function to create a quote response\n */\nexport function createInscriptionQuote(params: {\n totalCostHbar: string;\n validUntil: string;\n breakdown?: CostBreakdown;\n content: {\n name?: string;\n creator?: string;\n type?: string;\n };\n}): InscriptionQuoteResponse {\n const { totalCostHbar, validUntil, breakdown, content } = params;\n\n return {\n success: true,\n type: 'quote',\n title: 'Inscription Cost Quote',\n message: `Estimated cost to inscribe \"${\n content.name || 'your content'\n }\" is ${totalCostHbar} HBAR.`,\n quote: {\n totalCostHbar,\n validUntil,\n breakdown,\n },\n content,\n };\n}\n\n/**\n * Helper function to create an error response\n */\nexport function createInscriptionError(params: {\n code: string;\n details: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { code, details, suggestions } = params;\n\n return {\n success: false,\n type: 'error',\n title: 'Inscription Failed',\n message: `Unable to complete inscription: ${details}`,\n error: {\n code,\n details,\n suggestions,\n },\n };\n}\n\n/**\n * Helper for pending inscription state (submitted but not yet confirmed)\n */\nexport function createInscriptionPending(params: {\n transactionId: string;\n details?: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { transactionId, details, suggestions } = params;\n const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;\n return {\n success: false,\n type: 'error',\n title: 'Inscription Submitted (Pending)',\n message: d,\n error: {\n code: 'INSCRIPTION_PENDING',\n details: d,\n suggestions: suggestions || [\n 'Wait a few moments for confirmation',\n 'Check the transaction status on a Hedera explorer',\n \"Try the inscription again if it doesn't confirm within 5 minutes\",\n ],\n },\n };\n}\n"],"names":[],"mappings":"AAyGO,SAAS,yBAAyB,QAcV;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO,GAAG,QAAQ;AAAA,IAClB,SAAS,2BACP,SAAS,QAAQ,cACnB,UAAU,QAAQ;AAAA,IAClB,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACT,SAAS;AAAA,MACT,SACE,6DAA6D,MAAM;AAAA,MACrE,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AA6CO,SAAS,uBAAuB,QASV;AAC3B,QAAM,EAAE,eAAe,YAAY,WAAW,YAAY;AAE1D,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,+BACP,QAAQ,QAAQ,cAClB,QAAQ,aAAa;AAAA,IACrB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,EAAA;AAEJ;AAKO,SAAS,uBAAuB,QAIV;AAC3B,QAAM,EAAE,MAAM,SAAS,YAAA,IAAgB;AAEvC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,mCAAmC,OAAO;AAAA,IACnD,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AAKO,SAAS,yBAAyB,QAIZ;AAC3B,QAAM,EAAE,eAAe,SAAS,YAAA,IAAgB;AAChD,QAAM,IAAI,WAAW,gEAAgE,aAAa;AAClG,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa,eAAe;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"standards-agent-kit.es55.js","sources":["../../src/utils/metadata-defaults.ts"],"sourcesContent":["/**\n * Generates default metadata for NFT inscription\n */\nexport function generateDefaultMetadata(params: {\n name?: string;\n creator?: string;\n description?: string;\n type?: string;\n fileName?: string;\n mimeType?: string;\n operatorAccount: string;\n}): {\n name: string;\n creator: string;\n description: string;\n type: string;\n image: string;\n} {\n const defaultName = params.fileName?.replace(/\\.[^/.]+$/, '') || 'Hashinal NFT';\n let defaultType = 'media';\n if (params.mimeType?.startsWith('image/')) {\n defaultType = 'image';\n } else if (params.mimeType?.startsWith('video/')) {\n defaultType = 'video';\n } else if (params.mimeType?.startsWith('audio/')) {\n defaultType = 'audio';\n }\n\n return {\n name: params.name || defaultName,\n creator: params.creator || params.operatorAccount,\n description: params.description || `${defaultType.charAt(0).toUpperCase() + defaultType.slice(1)} NFT inscribed as Hashinal`,\n type: params.type || defaultType,\n image: '',\n };\n}"],"names":[],"mappings":"AAGO,SAAS,wBAAwB,QActC;AACA,QAAM,cAAc,OAAO,UAAU,QAAQ,aAAa,EAAE,KAAK;AACjE,MAAI,cAAc;AAClB,MAAI,OAAO,UAAU,WAAW,QAAQ,GAAG;AACzC,kBAAc;AAAA,EAChB,WAAW,OAAO,UAAU,WAAW,QAAQ,GAAG;AAChD,kBAAc;AAAA,EAChB,WAAW,OAAO,UAAU,WAAW,QAAQ,GAAG;AAChD,kBAAc;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,MAAM,OAAO,QAAQ;AAAA,IACrB,SAAS,OAAO,WAAW,OAAO;AAAA,IAClC,aAAa,OAAO,eAAe,GAAG,YAAY,OAAO,CAAC,EAAE,YAAA,IAAgB,YAAY,MAAM,CAAC,CAAC;AAAA,IAChG,MAAM,OAAO,QAAQ;AAAA,IACrB,OAAO;AAAA,EAAA;AAEX;"}
@@ -1,7 +1,77 @@
1
- function isWalletBytesResponse(value) {
2
- return !!value && typeof value.transactionBytes === "string";
1
+ function createInscriptionSuccess(params) {
2
+ const { hrl, topicId, standard, cdnUrl, transactionId, metadata } = params;
3
+ return {
4
+ success: true,
5
+ type: "inscription",
6
+ title: `${standard} Hashinal Inscription Complete`,
7
+ message: `Successfully inscribed "${metadata.name || "your content"}" as a ${standard} Hashinal. The content is now ready for NFT minting.`,
8
+ inscription: {
9
+ hrl,
10
+ topicId,
11
+ standard,
12
+ cdnUrl,
13
+ transactionId
14
+ },
15
+ metadata,
16
+ nextSteps: {
17
+ primary: "CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.",
18
+ context: 'The metadata parameter for minting should be exactly: ["' + hrl + '"] - just the HRL string in an array, nothing else.',
19
+ mintingMetadata: hrl
20
+ }
21
+ };
22
+ }
23
+ function createInscriptionQuote(params) {
24
+ const { totalCostHbar, validUntil, breakdown, content } = params;
25
+ return {
26
+ success: true,
27
+ type: "quote",
28
+ title: "Inscription Cost Quote",
29
+ message: `Estimated cost to inscribe "${content.name || "your content"}" is ${totalCostHbar} HBAR.`,
30
+ quote: {
31
+ totalCostHbar,
32
+ validUntil,
33
+ breakdown
34
+ },
35
+ content
36
+ };
37
+ }
38
+ function createInscriptionError(params) {
39
+ const { code, details, suggestions } = params;
40
+ return {
41
+ success: false,
42
+ type: "error",
43
+ title: "Inscription Failed",
44
+ message: `Unable to complete inscription: ${details}`,
45
+ error: {
46
+ code,
47
+ details,
48
+ suggestions
49
+ }
50
+ };
51
+ }
52
+ function createInscriptionPending(params) {
53
+ const { transactionId, details, suggestions } = params;
54
+ const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;
55
+ return {
56
+ success: false,
57
+ type: "error",
58
+ title: "Inscription Submitted (Pending)",
59
+ message: d,
60
+ error: {
61
+ code: "INSCRIPTION_PENDING",
62
+ details: d,
63
+ suggestions: suggestions || [
64
+ "Wait a few moments for confirmation",
65
+ "Check the transaction status on a Hedera explorer",
66
+ "Try the inscription again if it doesn't confirm within 5 minutes"
67
+ ]
68
+ }
69
+ };
3
70
  }
4
71
  export {
5
- isWalletBytesResponse
72
+ createInscriptionError,
73
+ createInscriptionPending,
74
+ createInscriptionQuote,
75
+ createInscriptionSuccess
6
76
  };
7
77
  //# sourceMappingURL=standards-agent-kit.es56.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es56.js","sources":["../../src/types/tx-results.ts"],"sourcesContent":["import type { TopicRegistrationResponse, RegistryOperationResponse, HCS6TopicRegistrationResponse, HCS6RegistryOperationResponse, HCS6CreateHashinalResponse } from '@hashgraphonline/standards-sdk';\n\nexport interface WalletBytesResponse {\n success: true;\n transactionBytes: string;\n}\n\nexport function isWalletBytesResponse(value: unknown): value is WalletBytesResponse {\n return !!value && typeof (value as any).transactionBytes === 'string';\n}\n\nexport type TopicRegistrationResult = TopicRegistrationResponse | WalletBytesResponse;\nexport type RegistryOperationResult = RegistryOperationResponse | WalletBytesResponse;\nexport type SubmitMessageResult = { success: true; transactionId?: string } | WalletBytesResponse;\n\nexport type HCS6TopicRegistrationResult = HCS6TopicRegistrationResponse | WalletBytesResponse;\nexport type HCS6RegistryOperationResult = HCS6RegistryOperationResponse | WalletBytesResponse;\nexport type HCS6CreateHashinalResult = HCS6CreateHashinalResponse | WalletBytesResponse;\n"],"names":[],"mappings":"AAOO,SAAS,sBAAsB,OAA8C;AAClF,SAAO,CAAC,CAAC,SAAS,OAAQ,MAAc,qBAAqB;AAC/D;"}
1
+ {"version":3,"file":"standards-agent-kit.es56.js","sources":["../../src/types/inscription-response.ts"],"sourcesContent":["/**\n * Structured response interface for inscription tools\n * Provides a consistent, user-friendly format for inscription results\n */\n\nexport interface InscriptionSuccessResponse {\n success: true;\n type: 'inscription';\n title: string;\n message: string;\n inscription: {\n /** The HRL (Hashinal Reference Link) for minting - e.g., \"hcs://1/0.0.123456\" */\n hrl: string;\n /** Topic ID where the inscription was stored */\n topicId: string;\n /** Type of Hashinal - Static (HCS-5) or Dynamic (HCS-6) */\n standard: 'Static' | 'Dynamic';\n /** CDN URL for direct access to the inscribed content */\n cdnUrl?: string;\n /** Transaction ID of the inscription */\n transactionId?: string;\n };\n metadata: {\n /** Name/title of the inscribed content */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Description of the content */\n description?: string;\n /** Content type (image, text, etc.) */\n type?: string;\n /** Additional attributes */\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n nextSteps: {\n /** Primary action the user should take next */\n primary: string;\n /** Additional context or options */\n context?: string;\n /** Specific metadata value to use for minting */\n mintingMetadata: string;\n };\n /** HashLink block data (only present when withHashLinkBlocks=true) */\n hashLinkBlock?: {\n /** Block topic ID on HCS */\n blockId: string;\n /** HashLink reference to the block */\n hashLink: string;\n /** Template topic ID */\n template: string;\n /** Block attributes for rendering */\n attributes: BlockAttributes;\n };\n}\n\nexport interface InscriptionQuoteResponse {\n success: true;\n type: 'quote';\n title: string;\n message: string;\n quote: {\n /** Total cost in HBAR */\n totalCostHbar: string;\n /** When the quote expires */\n validUntil: string;\n /** Cost breakdown details */\n breakdown?: CostBreakdown;\n };\n content: {\n /** Name of the content to be inscribed */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Type of content */\n type?: string;\n };\n}\n\nexport interface InscriptionErrorResponse {\n success: false;\n type: 'error';\n title: string;\n message: string;\n error: {\n /** Error code for programmatic handling */\n code: string;\n /** Detailed error message */\n details: string;\n /** Suggestions for fixing the error */\n suggestions?: string[];\n };\n}\n\nexport type InscriptionResponse =\n | InscriptionSuccessResponse\n | InscriptionQuoteResponse\n | InscriptionErrorResponse;\n\n/**\n * Helper function to create a successful inscription response\n */\nexport function createInscriptionSuccess(params: {\n hrl: string;\n topicId: string;\n standard: 'Static' | 'Dynamic';\n cdnUrl?: string;\n transactionId?: string;\n metadata: {\n name?: string;\n creator?: string;\n description?: string;\n type?: string;\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n}): InscriptionSuccessResponse {\n const { hrl, topicId, standard, cdnUrl, transactionId, metadata } = params;\n\n return {\n success: true,\n type: 'inscription',\n title: `${standard} Hashinal Inscription Complete`,\n message: `Successfully inscribed \"${\n metadata.name || 'your content'\n }\" as a ${standard} Hashinal. The content is now ready for NFT minting.`,\n inscription: {\n hrl,\n topicId,\n standard,\n cdnUrl,\n transactionId,\n },\n metadata,\n nextSteps: {\n primary: 'CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.',\n context:\n 'The metadata parameter for minting should be exactly: [\"' + hrl + '\"] - just the HRL string in an array, nothing else.',\n mintingMetadata: hrl,\n },\n };\n}\n\n/**\n * Block attributes for HashLink rendering\n */\ninterface BlockAttributes {\n /** Display name */\n name?: string;\n /** Description text */\n description?: string;\n /** Image URL */\n image?: string;\n /** Content type */\n contentType?: string;\n /** Size in bytes */\n size?: number;\n /** Custom metadata */\n metadata?: Record<string, string | number | boolean>;\n}\n\n/**\n * Transfer details in cost breakdown\n */\ninterface TransferDetails {\n to: string;\n amount: string;\n description: string;\n}\n\n/**\n * Cost breakdown details for inscription quote\n */\ninterface CostBreakdown {\n transfers: TransferDetails[];\n baseFee?: number;\n sizeFee?: number;\n networkFee?: number;\n serviceFee?: number;\n totalFee?: number;\n currency?: string;\n}\n\n/**\n * Helper function to create a quote response\n */\nexport function createInscriptionQuote(params: {\n totalCostHbar: string;\n validUntil: string;\n breakdown?: CostBreakdown;\n content: {\n name?: string;\n creator?: string;\n type?: string;\n };\n}): InscriptionQuoteResponse {\n const { totalCostHbar, validUntil, breakdown, content } = params;\n\n return {\n success: true,\n type: 'quote',\n title: 'Inscription Cost Quote',\n message: `Estimated cost to inscribe \"${\n content.name || 'your content'\n }\" is ${totalCostHbar} HBAR.`,\n quote: {\n totalCostHbar,\n validUntil,\n breakdown,\n },\n content,\n };\n}\n\n/**\n * Helper function to create an error response\n */\nexport function createInscriptionError(params: {\n code: string;\n details: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { code, details, suggestions } = params;\n\n return {\n success: false,\n type: 'error',\n title: 'Inscription Failed',\n message: `Unable to complete inscription: ${details}`,\n error: {\n code,\n details,\n suggestions,\n },\n };\n}\n\n/**\n * Helper for pending inscription state (submitted but not yet confirmed)\n */\nexport function createInscriptionPending(params: {\n transactionId: string;\n details?: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { transactionId, details, suggestions } = params;\n const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;\n return {\n success: false,\n type: 'error',\n title: 'Inscription Submitted (Pending)',\n message: d,\n error: {\n code: 'INSCRIPTION_PENDING',\n details: d,\n suggestions: suggestions || [\n 'Wait a few moments for confirmation',\n 'Check the transaction status on a Hedera explorer',\n \"Try the inscription again if it doesn't confirm within 5 minutes\",\n ],\n },\n };\n}\n"],"names":[],"mappings":"AAqGO,SAAS,yBAAyB,QAaV;AAC7B,QAAM,EAAE,KAAK,SAAS,UAAU,QAAQ,eAAe,aAAa;AAEpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO,GAAG,QAAQ;AAAA,IAClB,SAAS,2BACP,SAAS,QAAQ,cACnB,UAAU,QAAQ;AAAA,IAClB,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACA,WAAW;AAAA,MACT,SAAS;AAAA,MACT,SACE,6DAA6D,MAAM;AAAA,MACrE,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AA6CO,SAAS,uBAAuB,QASV;AAC3B,QAAM,EAAE,eAAe,YAAY,WAAW,YAAY;AAE1D,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,+BACP,QAAQ,QAAQ,cAClB,QAAQ,aAAa;AAAA,IACrB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,EAAA;AAEJ;AAKO,SAAS,uBAAuB,QAIV;AAC3B,QAAM,EAAE,MAAM,SAAS,YAAA,IAAgB;AAEvC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,mCAAmC,OAAO;AAAA,IACnD,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AAKO,SAAS,yBAAyB,QAIZ;AAC3B,QAAM,EAAE,eAAe,SAAS,YAAA,IAAgB;AAChD,QAAM,IAAI,WAAW,gEAAgE,aAAa;AAClG,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa,eAAe;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -134,6 +134,10 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
134
134
  const isCompletedResponse = Boolean(completedStart?.inscription) && completedStart?.confirmed;
135
135
  if (isCompletedResponse) {
136
136
  const completed = start;
137
+ this.logger.info(
138
+ "inscription already completed, short circuiting",
139
+ start
140
+ );
137
141
  return {
138
142
  quote: false,
139
143
  confirmed: completed.confirmed === true,
@@ -152,6 +156,7 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
152
156
  const transactionId = exec?.transactionId || "";
153
157
  const shouldWait = options.quoteOnly ? false : options.waitForConfirmation ?? true;
154
158
  if (shouldWait) {
159
+ this.logger.debug("Will be retrieving inscription");
155
160
  const maxAttempts = options.waitMaxAttempts ?? 60;
156
161
  const intervalMs = options.waitIntervalMs ?? 5e3;
157
162
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
@@ -174,6 +179,11 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
174
179
  },
175
180
  inscription: retrieved
176
181
  };
182
+ this.logger.debug(
183
+ "retrieved inscription",
184
+ resultConfirmed,
185
+ retrieved
186
+ );
177
187
  return resultConfirmed;
178
188
  }
179
189
  } catch {
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n} from '@hashgraphonline/standards-sdk';\nimport { InscriptionResult, InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport type { AgentOperationalMode } from 'hedera-agent-kit';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDK;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\n private static walletExecutor?: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>;\n /** When true, do not allow server fallback; require a wallet path in Provide Bytes */\n private static preferWalletOnly = false;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n public getOperationalMode(): AgentOperationalMode {\n return this.hederaKit.operationalMode as AgentOperationalMode;\n }\n\n static setSignerProvider(\n provider: () => Promise<DAppSigner | null> | DAppSigner | null\n ): void {\n InscriberBuilder.signerProvider = provider;\n }\n\n static setWalletInfoResolver(\n resolver: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null\n ): void {\n InscriberBuilder.walletInfoResolver = resolver;\n }\n\n static setStartInscriptionDelegate(\n delegate: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>\n ): void {\n InscriberBuilder.walletExecutor = executor;\n }\n\n /**\n * Control fallback behavior. When true, wallet must be available for execution paths.\n */\n static setPreferWalletOnly(flag: boolean): void {\n InscriberBuilder.preferWalletOnly = !!flag;\n }\n\n async getSigner(): Promise<DAppSigner | null> {\n const provider = InscriberBuilder.signerProvider;\n if (!provider) return null;\n try {\n const maybe = provider();\n return maybe && typeof (maybe as Promise<unknown>).then === 'function'\n ? await (maybe as Promise<DAppSigner | null>)\n : (maybe as DAppSigner | null);\n } catch {\n return null;\n }\n }\n\n /**\n * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDK | null> {\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(\n input,\n signer as unknown as Parameters<typeof inscribeWithSigner>[1],\n options\n );\n }\n\n async inscribeAuto(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const signer = await this.getSigner();\n if (signer) {\n return this.inscribeWithSigner(input, signer, options);\n }\n\n type WalletInfo = { accountId: string; network: 'mainnet' | 'testnet' };\n\n type WalletExecutorResponse = { transactionId: string };\n\n const infoMaybe: WalletInfo | null = InscriberBuilder.walletInfoResolver\n ? await InscriberBuilder.walletInfoResolver()\n : null;\n\n if (InscriberBuilder.preferWalletOnly && !infoMaybe) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n\n if (\n infoMaybe &&\n InscriberBuilder.startInscriptionDelegate &&\n InscriberBuilder.walletExecutor\n ) {\n const holderId = infoMaybe.accountId;\n const network: 'mainnet' | 'testnet' = infoMaybe.network;\n\n type InscriptionOptionsExt = InscriptionOptions & {\n fileStandard?: string;\n chunkSize?: number;\n jsonFileURL?: string;\n metadata?: Record<string, unknown> & {\n creator?: string;\n description?: string;\n };\n };\n const ext = options as InscriptionOptionsExt;\n\n const baseRequest: Record<string, unknown> = {\n holderId,\n metadata: ext.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n };\n if (typeof ext.fileStandard !== 'undefined') {\n (baseRequest as { fileStandard?: string }).fileStandard =\n ext.fileStandard;\n }\n if (typeof ext.chunkSize !== 'undefined') {\n (baseRequest as { chunkSize?: number }).chunkSize = ext.chunkSize;\n }\n\n let request: Record<string, unknown> = { ...baseRequest };\n switch (input.type) {\n case 'url':\n request = { ...baseRequest, file: { type: 'url', url: input.url } };\n break;\n case 'file':\n request = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\n break;\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n (request as { metadataObject?: unknown }).metadataObject = ext.metadata;\n (request as { creator?: string }).creator =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n ext.metadata?.description;\n if (typeof ext.jsonFileURL === 'string' && ext.jsonFileURL.length > 0) {\n (request as { jsonFileURL?: string }).jsonFileURL = ext.jsonFileURL;\n }\n }\n\n const start = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n if (shouldWait) {\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const retrieved: RetrievedInscriptionResult =\n await this.retrieveInscription(transactionId, options);\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const status: string | undefined = (\n retrieved as { status?: string }\n ).status;\n const isDone = status === 'completed' || !!topicId;\n if (isDone) {\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n return resultConfirmed;\n }\n } catch {}\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n return this.inscribe(input, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n} from '@hashgraphonline/standards-sdk';\nimport { InscriptionResult, InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport type { AgentOperationalMode } from 'hedera-agent-kit';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDK;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\n private static walletExecutor?: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>;\n /** When true, do not allow server fallback; require a wallet path in Provide Bytes */\n private static preferWalletOnly = false;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n public getOperationalMode(): AgentOperationalMode {\n return this.hederaKit.operationalMode as AgentOperationalMode;\n }\n\n static setSignerProvider(\n provider: () => Promise<DAppSigner | null> | DAppSigner | null\n ): void {\n InscriberBuilder.signerProvider = provider;\n }\n\n static setWalletInfoResolver(\n resolver: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null\n ): void {\n InscriberBuilder.walletInfoResolver = resolver;\n }\n\n static setStartInscriptionDelegate(\n delegate: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>\n ): void {\n InscriberBuilder.walletExecutor = executor;\n }\n\n /**\n * Control fallback behavior. When true, wallet must be available for execution paths.\n */\n static setPreferWalletOnly(flag: boolean): void {\n InscriberBuilder.preferWalletOnly = !!flag;\n }\n\n async getSigner(): Promise<DAppSigner | null> {\n const provider = InscriberBuilder.signerProvider;\n if (!provider) return null;\n try {\n const maybe = provider();\n return maybe && typeof (maybe as Promise<unknown>).then === 'function'\n ? await (maybe as Promise<DAppSigner | null>)\n : (maybe as DAppSigner | null);\n } catch {\n return null;\n }\n }\n\n /**\n * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDK | null> {\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(\n input,\n signer as unknown as Parameters<typeof inscribeWithSigner>[1],\n options\n );\n }\n\n async inscribeAuto(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const signer = await this.getSigner();\n if (signer) {\n return this.inscribeWithSigner(input, signer, options);\n }\n\n type WalletInfo = { accountId: string; network: 'mainnet' | 'testnet' };\n\n type WalletExecutorResponse = { transactionId: string };\n\n const infoMaybe: WalletInfo | null = InscriberBuilder.walletInfoResolver\n ? await InscriberBuilder.walletInfoResolver()\n : null;\n\n if (InscriberBuilder.preferWalletOnly && !infoMaybe) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n\n if (\n infoMaybe &&\n InscriberBuilder.startInscriptionDelegate &&\n InscriberBuilder.walletExecutor\n ) {\n const holderId = infoMaybe.accountId;\n const network: 'mainnet' | 'testnet' = infoMaybe.network;\n\n type InscriptionOptionsExt = InscriptionOptions & {\n fileStandard?: string;\n chunkSize?: number;\n jsonFileURL?: string;\n metadata?: Record<string, unknown> & {\n creator?: string;\n description?: string;\n };\n };\n const ext = options as InscriptionOptionsExt;\n\n const baseRequest: Record<string, unknown> = {\n holderId,\n metadata: ext.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n };\n if (typeof ext.fileStandard !== 'undefined') {\n (baseRequest as { fileStandard?: string }).fileStandard =\n ext.fileStandard;\n }\n if (typeof ext.chunkSize !== 'undefined') {\n (baseRequest as { chunkSize?: number }).chunkSize = ext.chunkSize;\n }\n\n let request: Record<string, unknown> = { ...baseRequest };\n switch (input.type) {\n case 'url':\n request = { ...baseRequest, file: { type: 'url', url: input.url } };\n break;\n case 'file':\n request = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\n break;\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n (request as { metadataObject?: unknown }).metadataObject = ext.metadata;\n (request as { creator?: string }).creator =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n ext.metadata?.description;\n if (typeof ext.jsonFileURL === 'string' && ext.jsonFileURL.length > 0) {\n (request as { jsonFileURL?: string }).jsonFileURL = ext.jsonFileURL;\n }\n }\n\n const start = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n this.logger.info(\n 'inscription already completed, short circuiting',\n start\n );\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n if (shouldWait) {\n this.logger.debug('Will be retrieving inscription');\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const retrieved: RetrievedInscriptionResult =\n await this.retrieveInscription(transactionId, options);\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const status: string | undefined = (\n retrieved as { status?: string }\n ).status;\n const isDone = status === 'completed' || !!topicId;\n if (isDone) {\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n this.logger.debug(\n 'retrieved inscription',\n resultConfirmed,\n retrieved\n );\n return resultConfirmed;\n }\n } catch {}\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n return this.inscribe(input, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -12,8 +12,6 @@ export interface InscriptionSuccessResponse {
12
12
  hrl: string;
13
13
  /** Topic ID where the inscription was stored */
14
14
  topicId: string;
15
- /** Topic ID containing the JSON metadata when available */
16
- jsonTopicId?: string;
17
15
  /** Type of Hashinal - Static (HCS-5) or Dynamic (HCS-6) */
18
16
  standard: 'Static' | 'Dynamic';
19
17
  /** CDN URL for direct access to the inscribed content */
@@ -21,8 +19,6 @@ export interface InscriptionSuccessResponse {
21
19
  /** Transaction ID of the inscription */
22
20
  transactionId?: string;
23
21
  };
24
- /** Topic ID used for metadata lookups */
25
- jsonTopicId?: string;
26
22
  metadata: {
27
23
  /** Name/title of the inscribed content */
28
24
  name?: string;
@@ -101,7 +97,6 @@ export type InscriptionResponse = InscriptionSuccessResponse | InscriptionQuoteR
101
97
  export declare function createInscriptionSuccess(params: {
102
98
  hrl: string;
103
99
  topicId: string;
104
- jsonTopicId?: string;
105
100
  standard: 'Static' | 'Dynamic';
106
101
  cdnUrl?: string;
107
102
  transactionId?: string;
@@ -9,7 +9,7 @@ export interface TopicIds {
9
9
  * - Prefers jsonTopicId when present (for CDN linking)
10
10
  * - Collects topic_id/topicId from either inscription or result
11
11
  */
12
- export declare function extractTopicIds(inscription?: RetrievedInscriptionResult, result?: unknown): TopicIds;
12
+ export declare function extractTopicIds(inscription: RetrievedInscriptionResult, result?: unknown): TopicIds;
13
13
  /**
14
14
  * Build HRL/CDN URLs from extracted topic ids.
15
15
  * - HRL prefers jsonTopicId, falls back to topicId