@hashgraphonline/standards-sdk 0.1.137 → 0.1.138

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 (229) hide show
  1. package/dist/cjs/hcs-21/base-client.d.ts +31 -0
  2. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -0
  3. package/dist/cjs/hcs-21/browser.d.ts +20 -0
  4. package/dist/cjs/hcs-21/browser.d.ts.map +1 -0
  5. package/dist/cjs/hcs-21/errors.d.ts +6 -0
  6. package/dist/cjs/hcs-21/errors.d.ts.map +1 -0
  7. package/dist/cjs/hcs-21/index.d.ts +7 -0
  8. package/dist/cjs/hcs-21/index.d.ts.map +1 -0
  9. package/dist/cjs/hcs-21/sdk.d.ts +48 -0
  10. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -0
  11. package/dist/cjs/hcs-21/tx.d.ts +20 -0
  12. package/dist/cjs/hcs-21/tx.d.ts.map +1 -0
  13. package/dist/cjs/hcs-21/types.d.ts +72 -0
  14. package/dist/cjs/hcs-21/types.d.ts.map +1 -0
  15. package/dist/cjs/index.d.ts +1 -0
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  18. package/dist/cjs/services/types.d.ts +1 -1
  19. package/dist/cjs/services/types.d.ts.map +1 -1
  20. package/dist/cjs/standards-sdk.cjs +2 -2
  21. package/dist/cjs/standards-sdk.cjs.map +1 -1
  22. package/dist/es/hcs-21/base-client.d.ts +31 -0
  23. package/dist/es/hcs-21/base-client.d.ts.map +1 -0
  24. package/dist/es/hcs-21/browser.d.ts +20 -0
  25. package/dist/es/hcs-21/browser.d.ts.map +1 -0
  26. package/dist/es/hcs-21/errors.d.ts +6 -0
  27. package/dist/es/hcs-21/errors.d.ts.map +1 -0
  28. package/dist/es/hcs-21/index.d.ts +7 -0
  29. package/dist/es/hcs-21/index.d.ts.map +1 -0
  30. package/dist/es/hcs-21/sdk.d.ts +48 -0
  31. package/dist/es/hcs-21/sdk.d.ts.map +1 -0
  32. package/dist/es/hcs-21/tx.d.ts +20 -0
  33. package/dist/es/hcs-21/tx.d.ts.map +1 -0
  34. package/dist/es/hcs-21/types.d.ts +72 -0
  35. package/dist/es/hcs-21/types.d.ts.map +1 -0
  36. package/dist/es/index.d.ts +1 -0
  37. package/dist/es/index.d.ts.map +1 -1
  38. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  39. package/dist/es/services/types.d.ts +1 -1
  40. package/dist/es/services/types.d.ts.map +1 -1
  41. package/dist/es/standards-sdk.es.js +66 -48
  42. package/dist/es/standards-sdk.es.js.map +1 -1
  43. package/dist/es/standards-sdk.es10.js +2 -2
  44. package/dist/es/standards-sdk.es100.js +231 -28
  45. package/dist/es/standards-sdk.es100.js.map +1 -1
  46. package/dist/es/standards-sdk.es101.js +109 -18
  47. package/dist/es/standards-sdk.es101.js.map +1 -1
  48. package/dist/es/standards-sdk.es102.js +32 -158
  49. package/dist/es/standards-sdk.es102.js.map +1 -1
  50. package/dist/es/standards-sdk.es103.js +80 -204
  51. package/dist/es/standards-sdk.es103.js.map +1 -1
  52. package/dist/es/standards-sdk.es104.js +21 -780
  53. package/dist/es/standards-sdk.es104.js.map +1 -1
  54. package/dist/es/standards-sdk.es105.js +140 -11
  55. package/dist/es/standards-sdk.es105.js.map +1 -1
  56. package/dist/es/standards-sdk.es106.js +29 -567
  57. package/dist/es/standards-sdk.es106.js.map +1 -1
  58. package/dist/es/standards-sdk.es107.js +17 -597
  59. package/dist/es/standards-sdk.es107.js.map +1 -1
  60. package/dist/es/standards-sdk.es108.js +159 -12
  61. package/dist/es/standards-sdk.es108.js.map +1 -1
  62. package/dist/es/standards-sdk.es109.js +208 -2
  63. package/dist/es/standards-sdk.es109.js.map +1 -1
  64. package/dist/es/standards-sdk.es110.js +774 -67
  65. package/dist/es/standards-sdk.es110.js.map +1 -1
  66. package/dist/es/standards-sdk.es111.js +11 -37
  67. package/dist/es/standards-sdk.es111.js.map +1 -1
  68. package/dist/es/standards-sdk.es112.js +567 -2
  69. package/dist/es/standards-sdk.es112.js.map +1 -1
  70. package/dist/es/standards-sdk.es113.js +576 -197
  71. package/dist/es/standards-sdk.es113.js.map +1 -1
  72. package/dist/es/standards-sdk.es114.js +12 -1139
  73. package/dist/es/standards-sdk.es114.js.map +1 -1
  74. package/dist/es/standards-sdk.es115.js +2 -306
  75. package/dist/es/standards-sdk.es115.js.map +1 -1
  76. package/dist/es/standards-sdk.es116.js +79 -418
  77. package/dist/es/standards-sdk.es116.js.map +1 -1
  78. package/dist/es/standards-sdk.es117.js +35 -351
  79. package/dist/es/standards-sdk.es117.js.map +1 -1
  80. package/dist/es/standards-sdk.es118.js +2 -761
  81. package/dist/es/standards-sdk.es118.js.map +1 -1
  82. package/dist/es/standards-sdk.es119.js +204 -185
  83. package/dist/es/standards-sdk.es119.js.map +1 -1
  84. package/dist/es/standards-sdk.es12.js +1 -1
  85. package/dist/es/standards-sdk.es120.js +1055 -1482
  86. package/dist/es/standards-sdk.es120.js.map +1 -1
  87. package/dist/es/standards-sdk.es121.js +265 -2024
  88. package/dist/es/standards-sdk.es121.js.map +1 -1
  89. package/dist/es/standards-sdk.es122.js +420 -50
  90. package/dist/es/standards-sdk.es122.js.map +1 -1
  91. package/dist/es/standards-sdk.es123.js +350 -82
  92. package/dist/es/standards-sdk.es123.js.map +1 -1
  93. package/dist/es/standards-sdk.es124.js +741 -139
  94. package/dist/es/standards-sdk.es124.js.map +1 -1
  95. package/dist/es/standards-sdk.es125.js +204 -7
  96. package/dist/es/standards-sdk.es125.js.map +1 -1
  97. package/dist/es/standards-sdk.es126.js +1533 -52
  98. package/dist/es/standards-sdk.es126.js.map +1 -1
  99. package/dist/es/standards-sdk.es127.js +2077 -59
  100. package/dist/es/standards-sdk.es127.js.map +1 -1
  101. package/dist/es/standards-sdk.es128.js +52 -28
  102. package/dist/es/standards-sdk.es128.js.map +1 -1
  103. package/dist/es/standards-sdk.es129.js +80 -131
  104. package/dist/es/standards-sdk.es129.js.map +1 -1
  105. package/dist/es/standards-sdk.es13.js +1 -1
  106. package/dist/es/standards-sdk.es130.js +152 -35
  107. package/dist/es/standards-sdk.es130.js.map +1 -1
  108. package/dist/es/standards-sdk.es131.js +7 -17
  109. package/dist/es/standards-sdk.es131.js.map +1 -1
  110. package/dist/es/standards-sdk.es132.js +53 -12241
  111. package/dist/es/standards-sdk.es132.js.map +1 -1
  112. package/dist/es/standards-sdk.es133.js +65 -694
  113. package/dist/es/standards-sdk.es133.js.map +1 -1
  114. package/dist/es/standards-sdk.es134.js +28 -172
  115. package/dist/es/standards-sdk.es134.js.map +1 -1
  116. package/dist/es/standards-sdk.es135.js +115 -299
  117. package/dist/es/standards-sdk.es135.js.map +1 -1
  118. package/dist/es/standards-sdk.es136.js +36 -340
  119. package/dist/es/standards-sdk.es136.js.map +1 -1
  120. package/dist/es/standards-sdk.es137.js +55 -452
  121. package/dist/es/standards-sdk.es137.js.map +1 -1
  122. package/dist/es/standards-sdk.es138.js +52 -319
  123. package/dist/es/standards-sdk.es138.js.map +1 -1
  124. package/dist/es/standards-sdk.es139.js +694 -76
  125. package/dist/es/standards-sdk.es139.js.map +1 -1
  126. package/dist/es/standards-sdk.es14.js +1 -1
  127. package/dist/es/standards-sdk.es140.js +15 -54
  128. package/dist/es/standards-sdk.es140.js.map +1 -1
  129. package/dist/es/standards-sdk.es141.js +12254 -44
  130. package/dist/es/standards-sdk.es141.js.map +1 -1
  131. package/dist/es/standards-sdk.es142.js +175 -0
  132. package/dist/es/standards-sdk.es142.js.map +1 -0
  133. package/dist/es/standards-sdk.es143.js +325 -0
  134. package/dist/es/standards-sdk.es143.js.map +1 -0
  135. package/dist/es/standards-sdk.es144.js +349 -0
  136. package/dist/es/standards-sdk.es144.js.map +1 -0
  137. package/dist/es/standards-sdk.es145.js +456 -0
  138. package/dist/es/standards-sdk.es145.js.map +1 -0
  139. package/dist/es/standards-sdk.es146.js +334 -0
  140. package/dist/es/standards-sdk.es146.js.map +1 -0
  141. package/dist/es/standards-sdk.es147.js +79 -0
  142. package/dist/es/standards-sdk.es147.js.map +1 -0
  143. package/dist/es/standards-sdk.es15.js +1 -1
  144. package/dist/es/standards-sdk.es16.js +1 -1
  145. package/dist/es/standards-sdk.es17.js +5 -5
  146. package/dist/es/standards-sdk.es19.js +12 -12
  147. package/dist/es/standards-sdk.es20.js +9 -9
  148. package/dist/es/standards-sdk.es21.js +1 -1
  149. package/dist/es/standards-sdk.es22.js +1 -1
  150. package/dist/es/standards-sdk.es23.js +1 -1
  151. package/dist/es/standards-sdk.es24.js +1 -1
  152. package/dist/es/standards-sdk.es25.js +1 -1
  153. package/dist/es/standards-sdk.es26.js +1 -1
  154. package/dist/es/standards-sdk.es27.js +1 -1
  155. package/dist/es/standards-sdk.es28.js +12 -12
  156. package/dist/es/standards-sdk.es3.js +2 -2
  157. package/dist/es/standards-sdk.es31.js +2 -2
  158. package/dist/es/standards-sdk.es32.js +4 -4
  159. package/dist/es/standards-sdk.es33.js +1 -1
  160. package/dist/es/standards-sdk.es36.js +6 -6
  161. package/dist/es/standards-sdk.es37.js +4 -4
  162. package/dist/es/standards-sdk.es38.js +2 -2
  163. package/dist/es/standards-sdk.es39.js +2 -2
  164. package/dist/es/standards-sdk.es40.js +1 -1
  165. package/dist/es/standards-sdk.es41.js +1 -1
  166. package/dist/es/standards-sdk.es42.js +2 -2
  167. package/dist/es/standards-sdk.es47.js +1 -1
  168. package/dist/es/standards-sdk.es5.js +2 -2
  169. package/dist/es/standards-sdk.es52.js +1 -1
  170. package/dist/es/standards-sdk.es54.js +1 -1
  171. package/dist/es/standards-sdk.es57.js +2 -2
  172. package/dist/es/standards-sdk.es59.js +1 -1
  173. package/dist/es/standards-sdk.es6.js +2 -2
  174. package/dist/es/standards-sdk.es60.js +1 -1
  175. package/dist/es/standards-sdk.es61.js +7 -7
  176. package/dist/es/standards-sdk.es63.js +1 -1
  177. package/dist/es/standards-sdk.es65.js +2 -2
  178. package/dist/es/standards-sdk.es66.js +3 -3
  179. package/dist/es/standards-sdk.es69.js +2 -2
  180. package/dist/es/standards-sdk.es7.js +2 -2
  181. package/dist/es/standards-sdk.es70.js +3 -3
  182. package/dist/es/standards-sdk.es71.js +2 -2
  183. package/dist/es/standards-sdk.es72.js +1 -1
  184. package/dist/es/standards-sdk.es75.js +2 -2
  185. package/dist/es/standards-sdk.es77.js +2 -2
  186. package/dist/es/standards-sdk.es78.js +4 -4
  187. package/dist/es/standards-sdk.es79.js +1 -1
  188. package/dist/es/standards-sdk.es8.js +1 -1
  189. package/dist/es/standards-sdk.es80.js +25 -27
  190. package/dist/es/standards-sdk.es80.js.map +1 -1
  191. package/dist/es/standards-sdk.es81.js +6 -78
  192. package/dist/es/standards-sdk.es81.js.map +1 -1
  193. package/dist/es/standards-sdk.es82.js +27 -64
  194. package/dist/es/standards-sdk.es82.js.map +1 -1
  195. package/dist/es/standards-sdk.es83.js +67 -23
  196. package/dist/es/standards-sdk.es83.js.map +1 -1
  197. package/dist/es/standards-sdk.es84.js +165 -23
  198. package/dist/es/standards-sdk.es84.js.map +1 -1
  199. package/dist/es/standards-sdk.es85.js +31 -166
  200. package/dist/es/standards-sdk.es85.js.map +1 -1
  201. package/dist/es/standards-sdk.es86.js +24 -127
  202. package/dist/es/standards-sdk.es86.js.map +1 -1
  203. package/dist/es/standards-sdk.es87.js +65 -142
  204. package/dist/es/standards-sdk.es87.js.map +1 -1
  205. package/dist/es/standards-sdk.es88.js +52 -127
  206. package/dist/es/standards-sdk.es88.js.map +1 -1
  207. package/dist/es/standards-sdk.es89.js +26 -41
  208. package/dist/es/standards-sdk.es89.js.map +1 -1
  209. package/dist/es/standards-sdk.es90.js +23 -261
  210. package/dist/es/standards-sdk.es90.js.map +1 -1
  211. package/dist/es/standards-sdk.es91.js +162 -93
  212. package/dist/es/standards-sdk.es91.js.map +1 -1
  213. package/dist/es/standards-sdk.es92.js +112 -83
  214. package/dist/es/standards-sdk.es92.js.map +1 -1
  215. package/dist/es/standards-sdk.es93.js +156 -28
  216. package/dist/es/standards-sdk.es93.js.map +1 -1
  217. package/dist/es/standards-sdk.es94.js +133 -225
  218. package/dist/es/standards-sdk.es94.js.map +1 -1
  219. package/dist/es/standards-sdk.es95.js +40 -108
  220. package/dist/es/standards-sdk.es95.js.map +1 -1
  221. package/dist/es/standards-sdk.es96.js +253 -24
  222. package/dist/es/standards-sdk.es96.js.map +1 -1
  223. package/dist/es/standards-sdk.es97.js +96 -80
  224. package/dist/es/standards-sdk.es97.js.map +1 -1
  225. package/dist/es/standards-sdk.es98.js +91 -21
  226. package/dist/es/standards-sdk.es98.js.map +1 -1
  227. package/dist/es/standards-sdk.es99.js +28 -141
  228. package/dist/es/standards-sdk.es99.js.map +1 -1
  229. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es102.js","sources":["../../src/utils/progress-reporter.ts"],"sourcesContent":["import { Logger, ILogger } from './logger';\n\nexport type ProgressStage =\n | 'preparing'\n | 'submitting'\n | 'confirming'\n | 'verifying'\n | 'completed'\n | 'failed';\n\nexport interface ProgressData {\n stage: ProgressStage;\n message: string;\n progressPercent: number;\n details?: Record<string, any>;\n}\n\nexport type ProgressCallback = (data: ProgressData) => void;\n\nexport interface ProgressReporterOptions {\n module?: string;\n callback?: ProgressCallback;\n logger?: ILogger;\n logProgress?: boolean;\n minPercent?: number;\n maxPercent?: number;\n}\n\n/**\n * ProgressReporter is a singleton class that reports progress of a task.\n * Can be used in a generalized fashion.\n */\nexport class ProgressReporter {\n private static instance: ProgressReporter;\n private module: string;\n private callback?: ProgressCallback;\n private logger: ILogger;\n private logProgress: boolean;\n private minPercent: number;\n private maxPercent: number;\n private lastReportedPercent: number;\n private lastReportedTime: number;\n private throttleMs: number;\n\n constructor(options: ProgressReporterOptions = {}) {\n this.module = options.module || 'Progress';\n this.callback = options.callback;\n this.logger =\n options.logger ||\n new Logger({\n level: 'info',\n module: 'ProgressReporter',\n });\n this.logProgress = options.logProgress ?? true;\n this.minPercent = options.minPercent ?? 0;\n this.maxPercent = options.maxPercent ?? 100;\n this.lastReportedPercent = -1;\n this.lastReportedTime = 0;\n this.throttleMs = 100;\n }\n\n static getInstance(options: ProgressReporterOptions = {}): ProgressReporter {\n if (!ProgressReporter.instance) {\n ProgressReporter.instance = new ProgressReporter(options);\n } else {\n if (options.callback) {\n ProgressReporter.instance.setCallback(options.callback);\n }\n if (options.module) {\n ProgressReporter.instance.setModule(options.module);\n }\n if (options.logger) {\n ProgressReporter.instance.setLogger(options.logger);\n }\n if (options.minPercent !== undefined) {\n ProgressReporter.instance.setMinPercent(options.minPercent);\n }\n if (options.maxPercent !== undefined) {\n ProgressReporter.instance.setMaxPercent(options.maxPercent);\n }\n }\n return ProgressReporter.instance;\n }\n\n setCallback(callback: ProgressCallback): void {\n this.callback = callback;\n }\n\n setModule(module: string): void {\n this.module = module;\n }\n\n setLogger(logger: ILogger): void {\n this.logger = logger;\n }\n\n setMinPercent(minPercent: number): void {\n this.minPercent = minPercent;\n }\n\n setMaxPercent(maxPercent: number): void {\n this.maxPercent = maxPercent;\n }\n\n createSubProgress(options: {\n minPercent: number;\n maxPercent: number;\n logPrefix?: string;\n }): ProgressReporter {\n const subReporter = new ProgressReporter({\n module: this.module,\n logger: this.logger,\n logProgress: this.logProgress,\n minPercent: options.minPercent,\n maxPercent: options.maxPercent,\n });\n\n const logPrefix = options.logPrefix || '';\n\n subReporter.setCallback(data => {\n const scaledPercent = this.scalePercent(\n data.progressPercent,\n options.minPercent,\n options.maxPercent,\n );\n\n let formattedMessage = data.message;\n if (logPrefix && !formattedMessage.startsWith(logPrefix)) {\n formattedMessage = `${logPrefix}: ${formattedMessage}`;\n }\n\n this.report({\n stage: data.stage,\n message: formattedMessage,\n progressPercent: scaledPercent,\n details: data.details,\n });\n });\n\n return subReporter;\n }\n\n report(data: ProgressData): void {\n const rawPercent = data.progressPercent;\n const percent = Math.max(0, Math.min(100, rawPercent));\n\n const scaledPercent = this.scalePercent(percent, 0, 100);\n\n const now = Date.now();\n if (\n scaledPercent === this.lastReportedPercent &&\n now - this.lastReportedTime < this.throttleMs &&\n data.stage !== 'completed' &&\n data.stage !== 'failed'\n ) {\n return;\n }\n\n this.lastReportedPercent = scaledPercent;\n this.lastReportedTime = now;\n\n const progressData = {\n ...data,\n progressPercent: scaledPercent,\n };\n\n if (this.logProgress) {\n this.logger.debug(\n `[${this.module}] [${data.stage.toUpperCase()}] ${\n data.message\n } (${scaledPercent.toFixed(1)}%)`,\n data.details,\n );\n }\n\n if (this.callback) {\n try {\n this.callback(progressData);\n } catch (err) {\n this.logger.warn(`Error in progress callback: ${err}`);\n }\n }\n }\n\n private scalePercent(\n percent: number,\n sourceMin: number,\n sourceMax: number,\n ): number {\n const range = this.maxPercent - this.minPercent;\n const sourceRange = sourceMax - sourceMin;\n const scaleFactor = range / sourceRange;\n\n return this.minPercent + (percent - sourceMin) * scaleFactor;\n }\n\n preparing(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'preparing',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n submitting(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'submitting',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n confirming(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'confirming',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n verifying(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'verifying',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n completed(message: string, details?: Record<string, any>): void {\n this.report({ stage: 'completed', message, progressPercent: 100, details });\n }\n\n failed(message: string, details?: Record<string, any>): void {\n this.report({\n stage: 'failed',\n message,\n progressPercent: this.lastReportedPercent,\n details,\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es102.js","sources":["../../src/hcs-18/browser.ts"],"sourcesContent":["import type { TransactionReceipt } from '@hashgraph/sdk';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport type {\n DiscoveryMessage,\n AnnounceData,\n ProposeData,\n RespondData,\n CompleteMessage,\n WithdrawMessage,\n} from './types';\nimport {\n buildHcs18AnnounceMessage,\n buildHcs18ProposeMessage,\n buildHcs18RespondMessage,\n buildHcs18CompleteMessage,\n buildHcs18WithdrawMessage,\n} from './tx';\n\nexport interface BrowserHCS18ClientConfig {\n network: 'testnet' | 'mainnet';\n hwc: HashinalsWalletConnectSDK;\n}\n\nexport class HCS18BrowserClient {\n private readonly hwc: HashinalsWalletConnectSDK;\n\n constructor(config: BrowserHCS18ClientConfig) {\n this.hwc = config.hwc;\n }\n\n async submit(\n discoveryTopicId: string,\n message: DiscoveryMessage,\n ): Promise<TransactionReceipt> {\n const receipt = await this.hwc.submitMessageToTopic(\n discoveryTopicId,\n JSON.stringify(message),\n );\n return receipt;\n }\n\n async announce(params: {\n discoveryTopicId: string;\n data: AnnounceData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18AnnounceMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async propose(params: {\n discoveryTopicId: string;\n data: ProposeData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18ProposeMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async respond(params: {\n discoveryTopicId: string;\n data: RespondData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18RespondMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async complete(params: {\n discoveryTopicId: string;\n data: CompleteMessage['data'];\n }): Promise<TransactionReceipt> {\n const message = buildHcs18CompleteMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async withdraw(params: {\n discoveryTopicId: string;\n data: WithdrawMessage['data'];\n }): Promise<TransactionReceipt> {\n const message = buildHcs18WithdrawMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n}\n"],"names":[],"mappings":";AAuBO,MAAM,mBAAmB;AAAA,EAG9B,YAAY,QAAkC;AAC5C,SAAK,MAAM,OAAO;AAAA,EACpB;AAAA,EAEA,MAAM,OACJ,kBACA,SAC6B;AAC7B,UAAM,UAAU,MAAM,KAAK,IAAI;AAAA,MAC7B;AAAA,MACA,KAAK,UAAU,OAAO;AAAA,IAAA;AAExB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,QAAQ,QAGkB;AAC9B,UAAM,UAAU,yBAAyB,OAAO,IAAI;AACpD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,QAAQ,QAGkB;AAC9B,UAAM,UAAU,yBAAyB,OAAO,IAAI;AACpD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AACF;"}
@@ -1,211 +1,87 @@
1
- import axios from "axios";
2
- import { Logger } from "./standards-sdk.es99.js";
3
- import { HederaMirrorNode } from "./standards-sdk.es120.js";
4
- import "node:path";
5
- import "node:buffer";
6
- import "node:crypto";
7
- import "@noble/curves/secp256k1.js";
8
- import "./standards-sdk.es123.js";
9
- import "viem/accounts";
10
- import "viem/chains";
11
- import "x402-axios";
12
- import "x402/types";
13
- import "./standards-sdk.es133.js";
14
- import "zod";
15
- import "@hashgraph/sdk";
16
- class HRLResolver {
17
- constructor(logLevel = "info") {
18
- this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
19
- this.logger = Logger.getInstance({
20
- level: logLevel,
21
- module: "HRLResolver"
22
- });
1
+ import { TopicMessageSubmitTransaction } from "@hashgraph/sdk";
2
+ import { DiscoveryOperation } from "./standards-sdk.es100.js";
3
+ import { buildTopicCreateTx } from "./standards-sdk.es136.js";
4
+ function buildHcs18DiscoveryMemo(ttlSeconds, memoOverride) {
5
+ if (memoOverride && memoOverride.trim().length > 0) {
6
+ return memoOverride;
23
7
  }
24
- /**
25
- * Determines if a MIME type represents binary content
26
- */
27
- isBinaryContentType(mimeType) {
28
- const binaryTypes = [
29
- "image/",
30
- "audio/",
31
- "video/",
32
- "application/octet-stream",
33
- "application/pdf",
34
- "application/zip",
35
- "application/gzip",
36
- "application/x-binary",
37
- "application/vnd.ms-",
38
- "application/x-msdownload",
39
- "application/x-shockwave-flash",
40
- "font/",
41
- "application/wasm"
42
- ];
43
- return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
8
+ if (ttlSeconds && ttlSeconds > 0) {
9
+ return `hcs-18:0:${ttlSeconds}`;
44
10
  }
45
- /**
46
- * Parses an HRL string into its components
47
- */
48
- parseHRL(hrl) {
49
- if (!hrl) {
50
- return null;
51
- }
52
- const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
53
- const match = hrl.match(hrlPattern);
54
- if (!match) {
55
- return null;
56
- }
57
- return {
58
- standard: match[1],
59
- topicId: match[2]
60
- };
61
- }
62
- /**
63
- * Validates if a string is a valid HRL
64
- */
65
- isValidHRL(hrl) {
66
- if (!hrl || typeof hrl !== "string") {
67
- return false;
68
- }
69
- const parsed = this.parseHRL(hrl);
70
- if (!parsed) {
71
- return false;
72
- }
73
- const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
74
- if (!topicIdPattern.test(parsed.topicId)) {
75
- return false;
76
- }
77
- return true;
78
- }
79
- /**
80
- * Validates if a string is a valid topic ID
81
- */
82
- isValidTopicId(topicId) {
83
- const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
84
- return topicIdPattern.test(topicId);
85
- }
86
- /**
87
- * Resolves content from either an HRL or a topic ID
88
- * If a topic ID is provided, it queries the topic memo to determine the HCS standard
89
- */
90
- async resolve(hrlOrTopicId, options) {
91
- if (this.isValidHRL(hrlOrTopicId)) {
92
- return this.resolveHRL(hrlOrTopicId, options);
93
- }
94
- if (!this.isValidTopicId(hrlOrTopicId)) {
95
- throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);
96
- }
97
- try {
98
- const mirrorNode = new HederaMirrorNode(options.network, this.logger);
99
- const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);
100
- const memo = topicInfo?.memo || "";
101
- let standard = "1";
102
- if (memo) {
103
- const hcsMatch = memo.match(/^hcs-(\d+)/);
104
- if (hcsMatch && hcsMatch[1]) {
105
- standard = hcsMatch[1];
106
- }
107
- }
108
- const hrl = `hcs://${standard}/${hrlOrTopicId}`;
109
- return this.resolveHRL(hrl, options);
110
- } catch (error) {
111
- this.logger.error(
112
- `Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
113
- );
114
- const hrl = `hcs://1/${hrlOrTopicId}`;
115
- return this.resolveHRL(hrl, options);
116
- }
117
- }
118
- async getContentWithType(hrl, options) {
119
- if (!this.isValidHRL(hrl)) {
120
- return {
121
- content: hrl,
122
- contentType: "text/plain",
123
- isBinary: false
124
- };
125
- }
126
- try {
127
- const result = await this.resolveHRL(hrl, options);
128
- return {
129
- content: result.content,
130
- contentType: result.contentType,
131
- isBinary: result.isBinary
132
- };
133
- } catch (e) {
134
- const error = e;
135
- const logMessage = `Error resolving HRL for content and type: ${error.message}`;
136
- this.logger.error(logMessage);
137
- throw new Error(logMessage);
138
- }
139
- }
140
- /**
141
- * Resolves HRL content with proper content type detection
142
- */
143
- async resolveHRL(hrl, options) {
144
- const parsed = this.parseHRL(hrl);
145
- if (!parsed) {
146
- throw new Error(`Invalid HRL format: ${hrl}`);
147
- }
148
- const { standard, topicId } = parsed;
149
- this.logger.debug(
150
- `Resolving HRL reference: standard=${standard}, topicId=${topicId}`
151
- );
152
- try {
153
- const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
154
- const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
155
- this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
156
- const headResponse = await axios.head(cdnUrl);
157
- const contentType = headResponse.headers["content-type"] || "";
158
- const isBinary = this.isBinaryContentType(contentType);
159
- if (isBinary || options.returnRaw) {
160
- const response2 = await axios.get(cdnUrl, {
161
- responseType: "arraybuffer"
162
- });
163
- return {
164
- content: response2.data,
165
- contentType,
166
- topicId,
167
- isBinary: true
168
- };
169
- }
170
- if (contentType === "application/json") {
171
- const response2 = await axios.get(cdnUrl, {
172
- responseType: "json"
173
- });
174
- if (!response2.data) {
175
- throw new Error(`Failed to fetch content from topic: ${topicId}`);
176
- }
177
- return {
178
- content: response2.data,
179
- contentType,
180
- topicId,
181
- isBinary: false
182
- };
183
- }
184
- const response = await axios.get(cdnUrl);
185
- if (!response.data) {
186
- throw new Error(`Failed to fetch content from topic: ${topicId}`);
187
- }
188
- let content;
189
- if (typeof response.data === "object") {
190
- content = response.data.content || response.data.text || JSON.stringify(response.data);
191
- } else {
192
- content = response.data;
193
- }
194
- return {
195
- content,
196
- contentType,
197
- topicId,
198
- isBinary: false
199
- };
200
- } catch (e) {
201
- const error = e;
202
- const logMessage = `Error resolving HRL reference: ${error.message}`;
203
- this.logger.error(logMessage);
204
- throw new Error(logMessage);
205
- }
11
+ return "hcs-18:0";
12
+ }
13
+ function buildHcs18CreateDiscoveryTopicTx(params) {
14
+ const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);
15
+ return buildTopicCreateTx({
16
+ memo,
17
+ adminKey: params.adminKey,
18
+ submitKey: params.submitKey,
19
+ operatorPublicKey: params.operatorPublicKey
20
+ });
21
+ }
22
+ function opCode(op) {
23
+ switch (op) {
24
+ case DiscoveryOperation.ANNOUNCE:
25
+ return 0;
26
+ case DiscoveryOperation.PROPOSE:
27
+ return 1;
28
+ case DiscoveryOperation.RESPOND:
29
+ return 2;
30
+ case DiscoveryOperation.COMPLETE:
31
+ return 3;
32
+ case DiscoveryOperation.WITHDRAW:
33
+ return 4;
34
+ default:
35
+ return 0;
206
36
  }
207
37
  }
38
+ function buildHcs18SubmitDiscoveryMessageTx(params) {
39
+ const memo = typeof params.transactionMemo === "string" && params.transactionMemo.length > 0 ? params.transactionMemo : `hcs-18:op:${opCode(params.message.op)}`;
40
+ return new TopicMessageSubmitTransaction().setTopicId(params.topicId).setMessage(JSON.stringify(params.message)).setTransactionMemo(memo);
41
+ }
42
+ function buildHcs18AnnounceMessage(data) {
43
+ return {
44
+ p: "hcs-18",
45
+ op: DiscoveryOperation.ANNOUNCE,
46
+ data
47
+ };
48
+ }
49
+ function buildHcs18ProposeMessage(data) {
50
+ return {
51
+ p: "hcs-18",
52
+ op: DiscoveryOperation.PROPOSE,
53
+ data
54
+ };
55
+ }
56
+ function buildHcs18RespondMessage(data) {
57
+ return {
58
+ p: "hcs-18",
59
+ op: DiscoveryOperation.RESPOND,
60
+ data
61
+ };
62
+ }
63
+ function buildHcs18CompleteMessage(data) {
64
+ return {
65
+ p: "hcs-18",
66
+ op: DiscoveryOperation.COMPLETE,
67
+ data
68
+ };
69
+ }
70
+ function buildHcs18WithdrawMessage(data) {
71
+ return {
72
+ p: "hcs-18",
73
+ op: DiscoveryOperation.WITHDRAW,
74
+ data
75
+ };
76
+ }
208
77
  export {
209
- HRLResolver
78
+ buildHcs18AnnounceMessage,
79
+ buildHcs18CompleteMessage,
80
+ buildHcs18CreateDiscoveryTopicTx,
81
+ buildHcs18DiscoveryMemo,
82
+ buildHcs18ProposeMessage,
83
+ buildHcs18RespondMessage,
84
+ buildHcs18SubmitDiscoveryMessageTx,
85
+ buildHcs18WithdrawMessage
210
86
  };
211
87
  //# sourceMappingURL=standards-sdk.es103.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es103.js","sources":["../../src/utils/hrl-resolver.ts"],"sourcesContent":["import axios from 'axios';\nimport { Logger, LogLevel, ILogger } from './logger';\nimport { NetworkType } from './types';\nimport { HederaMirrorNode } from '../services';\n\n/**\n * Options for HRL resolution\n */\nexport interface HRLResolutionOptions {\n network: NetworkType;\n returnRaw?: boolean;\n cdnEndpoint?: string;\n}\n\n/**\n * Result of an HRL resolution operation\n */\nexport interface HRLResolutionResult {\n content: string | ArrayBuffer;\n contentType: string;\n topicId: string;\n isBinary: boolean;\n}\n\nexport interface ContentWithType {\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n}\n\n/**\n * Utility class for resolving Hedera Resource Locators across the SDK\n */\nexport class HRLResolver {\n private logger: ILogger;\n private defaultEndpoint = 'https://kiloscribe.com/api/inscription-cdn';\n\n constructor(logLevel: LogLevel = 'info') {\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HRLResolver',\n });\n }\n\n /**\n * Determines if a MIME type represents binary content\n */\n private isBinaryContentType(mimeType: string): boolean {\n const binaryTypes = [\n 'image/',\n 'audio/',\n 'video/',\n 'application/octet-stream',\n 'application/pdf',\n 'application/zip',\n 'application/gzip',\n 'application/x-binary',\n 'application/vnd.ms-',\n 'application/x-msdownload',\n 'application/x-shockwave-flash',\n 'font/',\n 'application/wasm',\n ];\n\n return binaryTypes.some(prefix => mimeType.startsWith(prefix));\n }\n\n /**\n * Parses an HRL string into its components\n */\n public parseHRL(hrl: string): { standard: string; topicId: string } | null {\n if (!hrl) {\n return null;\n }\n\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/;\n const match = hrl.match(hrlPattern);\n\n if (!match) {\n return null;\n }\n\n return {\n standard: match[1],\n topicId: match[2],\n };\n }\n\n /**\n * Validates if a string is a valid HRL\n */\n public isValidHRL(hrl: string): boolean {\n if (!hrl || typeof hrl !== 'string') {\n return false;\n }\n\n const parsed = this.parseHRL(hrl);\n if (!parsed) {\n return false;\n }\n\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n if (!topicIdPattern.test(parsed.topicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validates if a string is a valid topic ID\n */\n public isValidTopicId(topicId: string): boolean {\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n return topicIdPattern.test(topicId);\n }\n\n /**\n * Resolves content from either an HRL or a topic ID\n * If a topic ID is provided, it queries the topic memo to determine the HCS standard\n */\n public async resolve(\n hrlOrTopicId: string,\n options: HRLResolutionOptions,\n ): Promise<HRLResolutionResult> {\n if (this.isValidHRL(hrlOrTopicId)) {\n return this.resolveHRL(hrlOrTopicId, options);\n }\n\n if (!this.isValidTopicId(hrlOrTopicId)) {\n throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);\n }\n\n try {\n const mirrorNode = new HederaMirrorNode(options.network, this.logger);\n const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);\n const memo = topicInfo?.memo || '';\n\n let standard = '1';\n if (memo) {\n const hcsMatch = memo.match(/^hcs-(\\d+)/);\n if (hcsMatch && hcsMatch[1]) {\n standard = hcsMatch[1];\n }\n }\n\n const hrl = `hcs://${standard}/${hrlOrTopicId}`;\n return this.resolveHRL(hrl, options);\n } catch (error: any) {\n this.logger.error(\n `Failed to get topic info for ${hrlOrTopicId}: ${error.message}`,\n );\n const hrl = `hcs://1/${hrlOrTopicId}`;\n return this.resolveHRL(hrl, options);\n }\n }\n\n public async getContentWithType(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<ContentWithType> {\n if (!this.isValidHRL(hrl)) {\n return {\n content: hrl,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const result = await this.resolveHRL(hrl, options);\n return {\n content: result.content,\n contentType: result.contentType,\n isBinary: result.isBinary,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL for content and type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Resolves HRL content with proper content type detection\n */\n public async resolveHRL(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<HRLResolutionResult> {\n const parsed = this.parseHRL(hrl);\n\n if (!parsed) {\n throw new Error(`Invalid HRL format: ${hrl}`);\n }\n\n const { standard, topicId } = parsed;\n\n this.logger.debug(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`,\n );\n\n try {\n const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;\n const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;\n\n this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);\n const headResponse = await axios.head(cdnUrl);\n const contentType = headResponse.headers['content-type'] || '';\n const isBinary = this.isBinaryContentType(contentType);\n\n if (isBinary || options.returnRaw) {\n const response = await axios.get(cdnUrl, {\n responseType: 'arraybuffer',\n });\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: true,\n };\n }\n\n if (contentType === 'application/json') {\n const response = await axios.get(cdnUrl, {\n responseType: 'json',\n });\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: false,\n };\n }\n\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n let content: string;\n\n if (typeof response.data === 'object') {\n content =\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data);\n } else {\n content = response.data;\n }\n\n return {\n content,\n contentType,\n topicId,\n isBinary: false,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n}\n"],"names":["response"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es103.js","sources":["../../src/hcs-18/tx.ts"],"sourcesContent":["import {\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PublicKey,\n} from '@hashgraph/sdk';\nimport type {\n DiscoveryMessage,\n AnnounceData,\n ProposeData,\n RespondData,\n CompleteMessage,\n WithdrawMessage,\n AnnounceMessage,\n ProposeMessage,\n RespondMessage,\n} from './types';\nimport { DiscoveryOperation } from './types';\nimport type { MaybeKey } from '../common/tx/tx-utils';\nimport { buildTopicCreateTx } from '../common/tx/tx-utils';\n\nexport function buildHcs18DiscoveryMemo(\n ttlSeconds?: number,\n memoOverride?: string,\n): string {\n if (memoOverride && memoOverride.trim().length > 0) {\n return memoOverride;\n }\n if (ttlSeconds && ttlSeconds > 0) {\n return `hcs-18:0:${ttlSeconds}`;\n }\n return 'hcs-18:0';\n}\n\nexport function buildHcs18CreateDiscoveryTopicTx(params: {\n ttlSeconds?: number;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n memoOverride?: string;\n}): TopicCreateTransaction {\n const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nfunction opCode(op: DiscoveryOperation): number {\n switch (op) {\n case DiscoveryOperation.ANNOUNCE:\n return 0;\n case DiscoveryOperation.PROPOSE:\n return 1;\n case DiscoveryOperation.RESPOND:\n return 2;\n case DiscoveryOperation.COMPLETE:\n return 3;\n case DiscoveryOperation.WITHDRAW:\n return 4;\n default:\n return 0;\n }\n}\n\nexport function buildHcs18SubmitDiscoveryMessageTx(params: {\n topicId: string;\n message: DiscoveryMessage;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const memo =\n typeof params.transactionMemo === 'string' &&\n params.transactionMemo.length > 0\n ? params.transactionMemo\n : `hcs-18:op:${opCode(params.message.op)}`;\n return new TopicMessageSubmitTransaction()\n .setTopicId(params.topicId)\n .setMessage(JSON.stringify(params.message))\n .setTransactionMemo(memo);\n}\n\nexport function buildHcs18AnnounceMessage(data: AnnounceData): AnnounceMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.ANNOUNCE,\n data,\n } as AnnounceMessage;\n}\n\nexport function buildHcs18ProposeMessage(data: ProposeData): ProposeMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.PROPOSE,\n data,\n } as ProposeMessage;\n}\n\nexport function buildHcs18RespondMessage(data: RespondData): RespondMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.RESPOND,\n data,\n } as RespondMessage;\n}\n\nexport function buildHcs18CompleteMessage(\n data: CompleteMessage['data'],\n): CompleteMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.COMPLETE,\n data,\n } as CompleteMessage;\n}\n\nexport function buildHcs18WithdrawMessage(\n data: WithdrawMessage['data'],\n): WithdrawMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.WITHDRAW,\n data,\n } as WithdrawMessage;\n}\n"],"names":[],"mappings":";;;AAoBO,SAAS,wBACd,YACA,cACQ;AACR,MAAI,gBAAgB,aAAa,KAAA,EAAO,SAAS,GAAG;AAClD,WAAO;AAAA,EACT;AACA,MAAI,cAAc,aAAa,GAAG;AAChC,WAAO,YAAY,UAAU;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,SAAS,iCAAiC,QAMtB;AACzB,QAAM,OAAO,wBAAwB,OAAO,YAAY,OAAO,YAAY;AAC3E,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,OAAO,IAAgC;AAC9C,UAAQ,IAAA;AAAA,IACN,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,mCAAmC,QAIjB;AAChC,QAAM,OACJ,OAAO,OAAO,oBAAoB,YAClC,OAAO,gBAAgB,SAAS,IAC5B,OAAO,kBACP,aAAa,OAAO,OAAO,QAAQ,EAAE,CAAC;AAC5C,SAAO,IAAI,8BAAA,EACR,WAAW,OAAO,OAAO,EACzB,WAAW,KAAK,UAAU,OAAO,OAAO,CAAC,EACzC,mBAAmB,IAAI;AAC5B;AAEO,SAAS,0BAA0B,MAAqC;AAC7E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;"}