@hashgraphonline/standards-sdk 0.1.144 → 0.1.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-10/sdk.d.ts +8 -0
- package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-11/client.d.ts +2 -2
- package/dist/cjs/hcs-11/client.d.ts.map +1 -1
- package/dist/cjs/hcs-11/person-builder.d.ts +1 -0
- package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -1
- package/dist/cjs/hcs-11/types.d.ts +1 -0
- package/dist/cjs/hcs-11/types.d.ts.map +1 -1
- package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
- package/dist/cjs/hcs-15/browser.d.ts +2 -0
- package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-15/sdk.d.ts +7 -1
- package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-15/tx.d.ts +4 -0
- package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-15/types.d.ts +16 -1
- package/dist/cjs/hcs-15/types.d.ts.map +1 -1
- package/dist/cjs/hcs-16/browser.d.ts +11 -2
- package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
- package/dist/cjs/hcs-16/sdk.d.ts +62 -1
- package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-16/tx.d.ts +21 -3
- package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-17/base-client.d.ts +1 -0
- package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
- package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-17/tx.d.ts +2 -0
- package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
- package/dist/cjs/hcs-17/types.d.ts +4 -0
- package/dist/cjs/hcs-17/types.d.ts.map +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
- package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
- package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/schemas.d.ts +998 -577
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +20 -1
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
- package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
- package/dist/cjs/utils/dynamic-import.d.ts +5 -1
- package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
- package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/hcs-10/sdk.d.ts +8 -0
- package/dist/es/hcs-10/sdk.d.ts.map +1 -1
- package/dist/es/hcs-11/client.d.ts +2 -2
- package/dist/es/hcs-11/client.d.ts.map +1 -1
- package/dist/es/hcs-11/person-builder.d.ts +1 -0
- package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
- package/dist/es/hcs-11/types.d.ts +1 -0
- package/dist/es/hcs-11/types.d.ts.map +1 -1
- package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
- package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
- package/dist/es/hcs-15/browser.d.ts +2 -0
- package/dist/es/hcs-15/browser.d.ts.map +1 -1
- package/dist/es/hcs-15/sdk.d.ts +7 -1
- package/dist/es/hcs-15/sdk.d.ts.map +1 -1
- package/dist/es/hcs-15/tx.d.ts +4 -0
- package/dist/es/hcs-15/tx.d.ts.map +1 -1
- package/dist/es/hcs-15/types.d.ts +16 -1
- package/dist/es/hcs-15/types.d.ts.map +1 -1
- package/dist/es/hcs-16/browser.d.ts +11 -2
- package/dist/es/hcs-16/browser.d.ts.map +1 -1
- package/dist/es/hcs-16/sdk.d.ts +62 -1
- package/dist/es/hcs-16/sdk.d.ts.map +1 -1
- package/dist/es/hcs-16/tx.d.ts +21 -3
- package/dist/es/hcs-16/tx.d.ts.map +1 -1
- package/dist/es/hcs-17/base-client.d.ts +1 -0
- package/dist/es/hcs-17/base-client.d.ts.map +1 -1
- package/dist/es/hcs-17/sdk.d.ts.map +1 -1
- package/dist/es/hcs-17/tx.d.ts +2 -0
- package/dist/es/hcs-17/tx.d.ts.map +1 -1
- package/dist/es/hcs-17/types.d.ts +4 -0
- package/dist/es/hcs-17/types.d.ts.map +1 -1
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
- package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
- package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
- package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
- package/dist/es/services/registry-broker/schemas.d.ts +998 -577
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +20 -1
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +141 -135
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es10.js +70 -90
- package/dist/es/standards-sdk.es10.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +229 -26
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +109 -228
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +15 -94
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +80 -30
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +27 -80
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +136 -25
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +27 -140
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +20 -27
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +156 -18
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +198 -148
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es11.js +121 -45
- package/dist/es/standards-sdk.es11.js.map +1 -1
- package/dist/es/standards-sdk.es110.js +747 -166
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +9 -786
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +567 -13
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +576 -541
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +12 -601
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +2 -13
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +87 -2
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +37 -80
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +2 -39
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +231 -2
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +60 -159
- package/dist/es/standards-sdk.es12.js.map +1 -1
- package/dist/es/standards-sdk.es120.js +1110 -193
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +225 -1059
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +419 -303
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +351 -418
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +872 -347
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +182 -854
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +1512 -153
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +157 -1547
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +192 -162
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +61 -164
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +200 -60
- package/dist/es/standards-sdk.es13.js.map +1 -1
- package/dist/es/standards-sdk.es130.js +102 -85
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +222 -96
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +153 -220
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +104 -162
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +296 -92
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +432 -294
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +14 -363
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +79 -15
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +79 -59
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +152 -80
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +149 -178
- package/dist/es/standards-sdk.es14.js.map +1 -1
- package/dist/es/standards-sdk.es140.js +7 -159
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +86 -7
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +44 -65
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +30 -65
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +34 -28
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +28 -138
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +133 -37
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +34 -12281
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +12284 -12
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +958 -56
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +152 -151
- package/dist/es/standards-sdk.es15.js.map +1 -1
- package/dist/es/standards-sdk.es150.js +48 -74
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +72 -160
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +13 -318
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +120 -294
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +191 -322
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +294 -279
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +440 -63
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +331 -871
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +68 -231
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +218 -223
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +917 -136
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +247 -0
- package/dist/es/standards-sdk.es160.js.map +1 -0
- package/dist/es/standards-sdk.es17.js +23 -944
- package/dist/es/standards-sdk.es17.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +2422 -24
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +817 -2071
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es2.js +654 -189
- package/dist/es/standards-sdk.es2.js.map +1 -1
- package/dist/es/standards-sdk.es20.js +205 -1091
- package/dist/es/standards-sdk.es20.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +858 -221
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +179 -903
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +164 -179
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es24.js +62 -118
- package/dist/es/standards-sdk.es24.js.map +1 -1
- package/dist/es/standards-sdk.es25.js +377 -52
- package/dist/es/standards-sdk.es25.js.map +1 -1
- package/dist/es/standards-sdk.es26.js +36 -394
- package/dist/es/standards-sdk.es26.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +901 -50
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es28.js +134 -902
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +7 -134
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es3.js +63 -680
- package/dist/es/standards-sdk.es3.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +344 -7
- package/dist/es/standards-sdk.es30.js.map +1 -1
- package/dist/es/standards-sdk.es31.js +302 -287
- package/dist/es/standards-sdk.es31.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +94 -322
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es33.js +458 -101
- package/dist/es/standards-sdk.es33.js.map +1 -1
- package/dist/es/standards-sdk.es34.js +132 -451
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es35.js +216 -130
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +273 -195
- package/dist/es/standards-sdk.es36.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +148 -87
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es38.js +183 -320
- package/dist/es/standards-sdk.es38.js.map +1 -1
- package/dist/es/standards-sdk.es39.js +238 -161
- package/dist/es/standards-sdk.es39.js.map +1 -1
- package/dist/es/standards-sdk.es4.js +425 -63
- package/dist/es/standards-sdk.es4.js.map +1 -1
- package/dist/es/standards-sdk.es40.js +136 -254
- package/dist/es/standards-sdk.es40.js.map +1 -1
- package/dist/es/standards-sdk.es41.js +225 -176
- package/dist/es/standards-sdk.es41.js.map +1 -1
- package/dist/es/standards-sdk.es42.js +199 -261
- package/dist/es/standards-sdk.es42.js.map +1 -1
- package/dist/es/standards-sdk.es43.js +237 -199
- package/dist/es/standards-sdk.es43.js.map +1 -1
- package/dist/es/standards-sdk.es44.js +209 -201
- package/dist/es/standards-sdk.es44.js.map +1 -1
- package/dist/es/standards-sdk.es45.js +305 -201
- package/dist/es/standards-sdk.es45.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +371 -261
- package/dist/es/standards-sdk.es46.js.map +1 -1
- package/dist/es/standards-sdk.es47.js +316 -371
- package/dist/es/standards-sdk.es47.js.map +1 -1
- package/dist/es/standards-sdk.es48.js +404 -336
- package/dist/es/standards-sdk.es48.js.map +1 -1
- package/dist/es/standards-sdk.es49.js +83 -449
- package/dist/es/standards-sdk.es49.js.map +1 -1
- package/dist/es/standards-sdk.es5.js +232 -354
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es50.js +179 -89
- package/dist/es/standards-sdk.es50.js.map +1 -1
- package/dist/es/standards-sdk.es51.js +231 -165
- package/dist/es/standards-sdk.es51.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +25 -262
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +56 -26
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +12 -57
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +49 -12
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +115 -43
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +42 -115
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +52 -43
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +36 -50
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es6.js +125 -246
- package/dist/es/standards-sdk.es6.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +207 -39
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +24 -200
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +87 -25
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +3 -51
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +100 -3
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +61 -62
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +17 -98
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +77 -19
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +458 -77
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +106 -240
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +28 -183
- package/dist/es/standards-sdk.es7.js.map +1 -1
- package/dist/es/standards-sdk.es70.js +170 -286
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +71 -207
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +71 -72
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +143 -71
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +62 -136
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +380 -45
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +222 -130
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +320 -444
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +88 -370
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +125 -89
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +80 -29
- package/dist/es/standards-sdk.es8.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +8 -125
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +45 -6
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +98 -44
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +331 -84
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +93 -160
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +55 -275
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +43 -55
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +145 -22
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +34 -47
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +22 -57
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +104 -80
- package/dist/es/standards-sdk.es9.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +23 -28
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +238 -23
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +265 -152
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +95 -68
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +124 -136
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +42 -138
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +259 -42
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +82 -243
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +48 -47
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +29 -100
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
- package/dist/es/utils/crypto-env.d.ts.map +1 -1
- package/dist/es/utils/dynamic-import.d.ts +5 -1
- package/dist/es/utils/dynamic-import.d.ts.map +1 -1
- package/dist/es/utils/hash-adapter.d.ts.map +1 -1
- package/package.json +8 -7
- package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
- package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
- package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
- package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
|
@@ -1,60 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.resolvers.push(resolver);
|
|
1
|
+
import { optionalImport } from "./standards-sdk.es151.js";
|
|
2
|
+
const hieroResolverModuleId = ["@hiero-did-sdk", "resolver"].join("/");
|
|
3
|
+
let resolverPromise = null;
|
|
4
|
+
async function loadResolveDID() {
|
|
5
|
+
if (!resolverPromise) {
|
|
6
|
+
resolverPromise = optionalImport(
|
|
7
|
+
hieroResolverModuleId
|
|
8
|
+
).then((mod) => mod?.resolveDID ?? null);
|
|
10
9
|
}
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
return resolverPromise;
|
|
11
|
+
}
|
|
12
|
+
class HieroDidResolver {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.meta = {
|
|
15
|
+
id: "hedera/hiero-resolver",
|
|
16
|
+
didMethods: ["hedera"],
|
|
17
|
+
caip2Networks: [
|
|
18
|
+
"hedera:mainnet",
|
|
19
|
+
"hedera:testnet",
|
|
20
|
+
"hedera:previewnet",
|
|
21
|
+
"hedera:devnet"
|
|
22
|
+
],
|
|
23
|
+
caip10Namespaces: ["hedera"],
|
|
24
|
+
displayName: "Hedera (Hiero Resolver)",
|
|
25
|
+
description: "Resolves did:hedera identifiers via Hiero DID resolver.",
|
|
26
|
+
homepage: "https://github.com/hiero-ledger/hiero-did-sdk-js"
|
|
27
|
+
};
|
|
13
28
|
}
|
|
14
|
-
|
|
15
|
-
return
|
|
29
|
+
supports(did) {
|
|
30
|
+
return did.startsWith("did:hedera:");
|
|
16
31
|
}
|
|
17
|
-
async
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
async resolveUaid(uaid) {
|
|
24
|
-
const parsed = parseHcs14Did(uaid);
|
|
25
|
-
if (parsed.method !== "uaid") return null;
|
|
26
|
-
const src = parsed.params["src"];
|
|
27
|
-
if (src) {
|
|
28
|
-
const raw = Buffer.from(multibaseB58btcDecode(src)).toString("utf8");
|
|
29
|
-
return this.resolveDid(raw);
|
|
30
|
-
}
|
|
31
|
-
const id = parsed.id;
|
|
32
|
-
if (id.startsWith("testnet:") || id.startsWith("mainnet:") || id.startsWith("previewnet:") || id.startsWith("devnet:")) {
|
|
33
|
-
const did = `did:hedera:${id}`;
|
|
34
|
-
return this.resolveDid(did);
|
|
35
|
-
}
|
|
36
|
-
const proto = parsed.params["proto"];
|
|
37
|
-
const nativeId = parsed.params["nativeId"];
|
|
38
|
-
if (proto === "hcs-10" && nativeId) {
|
|
39
|
-
const match = nativeId.match(
|
|
40
|
-
/^hedera:(mainnet|testnet|previewnet|devnet):/
|
|
32
|
+
async resolve(did) {
|
|
33
|
+
const resolveDID = await loadResolveDID();
|
|
34
|
+
if (!resolveDID) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
"Hiero resolver unavailable. Ensure @hiero-did-sdk/resolver is installed."
|
|
41
37
|
);
|
|
42
|
-
if (match) {
|
|
43
|
-
const network = match[1];
|
|
44
|
-
const did = `did:hedera:${network}:${id}`;
|
|
45
|
-
return this.resolveDid(did);
|
|
46
|
-
}
|
|
47
38
|
}
|
|
48
|
-
|
|
39
|
+
const res = await resolveDID(did);
|
|
40
|
+
return res && typeof res.id === "string" ? { id: res.id } : null;
|
|
49
41
|
}
|
|
50
42
|
}
|
|
51
|
-
const defaultResolverRegistry = new ResolverRegistry();
|
|
52
|
-
function registerDefaultResolvers() {
|
|
53
|
-
defaultResolverRegistry.register(new HieroDidResolver());
|
|
54
|
-
}
|
|
55
43
|
export {
|
|
56
|
-
|
|
57
|
-
defaultResolverRegistry,
|
|
58
|
-
registerDefaultResolvers
|
|
44
|
+
HieroDidResolver
|
|
59
45
|
};
|
|
60
46
|
//# sourceMappingURL=standards-sdk.es59.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es59.js","sources":["../../src/hcs-14/resolvers/
|
|
1
|
+
{"version":3,"file":"standards-sdk.es59.js","sources":["../../src/hcs-14/resolvers/hiero.ts"],"sourcesContent":["import { DidDocumentMinimal, DidResolver } from './types';\nimport type { AdapterMeta } from '../adapters/types';\nimport { optionalImport } from '../../utils/dynamic-import';\n\ntype ResolveDID = typeof import('@hiero-did-sdk/resolver').resolveDID;\ntype HieroResolverModule = typeof import('@hiero-did-sdk/resolver');\n\nconst hieroResolverModuleId = ['@hiero-did-sdk', 'resolver'].join('/');\n\nlet resolverPromise: Promise<ResolveDID | null> | null = null;\n\nasync function loadResolveDID(): Promise<ResolveDID | null> {\n if (!resolverPromise) {\n resolverPromise = optionalImport<HieroResolverModule>(\n hieroResolverModuleId,\n ).then(mod => mod?.resolveDID ?? null);\n }\n return resolverPromise;\n}\n\nexport class HieroDidResolver implements DidResolver {\n readonly meta: AdapterMeta = {\n id: 'hedera/hiero-resolver',\n didMethods: ['hedera'],\n caip2Networks: [\n 'hedera:mainnet',\n 'hedera:testnet',\n 'hedera:previewnet',\n 'hedera:devnet',\n ],\n caip10Namespaces: ['hedera'],\n displayName: 'Hedera (Hiero Resolver)',\n description: 'Resolves did:hedera identifiers via Hiero DID resolver.',\n homepage: 'https://github.com/hiero-ledger/hiero-did-sdk-js',\n };\n supports(did: string): boolean {\n return did.startsWith('did:hedera:');\n }\n\n async resolve(did: string): Promise<DidDocumentMinimal | null> {\n const resolveDID = await loadResolveDID();\n if (!resolveDID) {\n throw new Error(\n 'Hiero resolver unavailable. Ensure @hiero-did-sdk/resolver is installed.',\n );\n }\n const res = await resolveDID(did as Parameters<ResolveDID>[0]);\n return res && typeof res.id === 'string' ? { id: res.id } : null;\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,wBAAwB,CAAC,kBAAkB,UAAU,EAAE,KAAK,GAAG;AAErE,IAAI,kBAAqD;AAEzD,eAAe,iBAA6C;AAC1D,MAAI,CAAC,iBAAiB;AACpB,sBAAkB;AAAA,MAChB;AAAA,IAAA,EACA,KAAK,CAAA,QAAO,KAAK,cAAc,IAAI;AAAA,EACvC;AACA,SAAO;AACT;AAEO,MAAM,iBAAwC;AAAA,EAA9C,cAAA;AACL,SAAS,OAAoB;AAAA,MAC3B,IAAI;AAAA,MACJ,YAAY,CAAC,QAAQ;AAAA,MACrB,eAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,kBAAkB,CAAC,QAAQ;AAAA,MAC3B,aAAa;AAAA,MACb,aAAa;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,EACZ;AAAA,EACA,SAAS,KAAsB;AAC7B,WAAO,IAAI,WAAW,aAAa;AAAA,EACrC;AAAA,EAEA,MAAM,QAAQ,KAAiD;AAC7D,UAAM,aAAa,MAAM,eAAA;AACzB,QAAI,CAAC,YAAY;AACf,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AACA,UAAM,MAAM,MAAM,WAAW,GAAgC;AAC7D,WAAO,OAAO,OAAO,IAAI,OAAO,WAAW,EAAE,IAAI,IAAI,GAAA,IAAO;AAAA,EAC9D;AACF;"}
|
|
@@ -1,278 +1,157 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
class
|
|
1
|
+
import { Logger } from "./standards-sdk.es105.js";
|
|
2
|
+
import { HederaMirrorNode } from "./standards-sdk.es126.js";
|
|
3
|
+
import { HCS6RegistryType, validateHCS6TTL, generateHCS6RegistryMemo, hcs6MessageSchema, HCS6Operation } from "./standards-sdk.es3.js";
|
|
4
|
+
import { ZodError } from "zod";
|
|
5
|
+
class HCS6BaseClient {
|
|
6
6
|
/**
|
|
7
|
-
* Create a new HCS-6
|
|
7
|
+
* Create a new HCS-6 base client
|
|
8
8
|
* @param config Client configuration
|
|
9
9
|
*/
|
|
10
10
|
constructor(config) {
|
|
11
|
-
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
return accountId;
|
|
24
|
-
}
|
|
25
|
-
getSigner() {
|
|
26
|
-
const explicit = this.signer;
|
|
27
|
-
if (explicit) {
|
|
28
|
-
return explicit;
|
|
29
|
-
}
|
|
30
|
-
this.ensureConnected();
|
|
31
|
-
const dc = this.hwc.dAppConnector;
|
|
32
|
-
const signer = dc?.signers?.[0];
|
|
33
|
-
if (!signer) {
|
|
34
|
-
throw new Error("No active wallet signer");
|
|
35
|
-
}
|
|
36
|
-
return signer;
|
|
11
|
+
this.network = config.network;
|
|
12
|
+
this.logger = config.logger || Logger.getInstance({
|
|
13
|
+
level: config.logLevel || "info",
|
|
14
|
+
module: "HCS6Client",
|
|
15
|
+
silent: config.silent
|
|
16
|
+
});
|
|
17
|
+
this.mirrorNode = new HederaMirrorNode(
|
|
18
|
+
this.network,
|
|
19
|
+
this.logger,
|
|
20
|
+
config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : void 0
|
|
21
|
+
);
|
|
37
22
|
}
|
|
38
23
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @
|
|
42
|
-
* @returns Promise resolving to the transaction result
|
|
24
|
+
* Determine the registry type from a topic memo (HCS-6 specific)
|
|
25
|
+
* @param memo The topic memo
|
|
26
|
+
* @returns The registry type or undefined if not found
|
|
43
27
|
*/
|
|
44
|
-
|
|
28
|
+
parseRegistryTypeFromMemo(memo) {
|
|
45
29
|
try {
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
30
|
+
const regex = /hcs-6:(\d):(\d+)/;
|
|
31
|
+
const match = memo.match(regex);
|
|
32
|
+
if (match && match.length === 3) {
|
|
33
|
+
const registryType = parseInt(match[1]);
|
|
34
|
+
const ttl = parseInt(match[2]);
|
|
35
|
+
if (registryType === HCS6RegistryType.NON_INDEXED && validateHCS6TTL(ttl)) {
|
|
36
|
+
return { registryType, ttl };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return void 0;
|
|
54
40
|
} catch (error) {
|
|
55
|
-
this.logger.error(
|
|
56
|
-
|
|
41
|
+
this.logger.error(
|
|
42
|
+
`Error parsing HCS-6 registry type from memo: ${error}`
|
|
43
|
+
);
|
|
44
|
+
return void 0;
|
|
57
45
|
}
|
|
58
46
|
}
|
|
59
47
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @
|
|
63
|
-
* @param options Registration options
|
|
64
|
-
* @returns Promise resolving to the operation result
|
|
48
|
+
* Generate a memo string for a HCS-6 registry topic
|
|
49
|
+
* @param ttl The time-to-live in seconds
|
|
50
|
+
* @returns The memo string
|
|
65
51
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const valid = await this.validateHCS6Topic(registryTopicId);
|
|
69
|
-
if (!valid) {
|
|
70
|
-
throw new Error(
|
|
71
|
-
`Topic ${registryTopicId} is not a valid HCS-6 registry`
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
const message = this.createRegisterMessage(
|
|
75
|
-
options.targetTopicId,
|
|
76
|
-
options.memo
|
|
77
|
-
);
|
|
78
|
-
const receipt = await this.submitMessage(registryTopicId, message);
|
|
79
|
-
const seqField = receipt.topicSequenceNumber;
|
|
80
|
-
const sequenceNumber = typeof seqField === "number" ? seqField : seqField?.low;
|
|
81
|
-
return { success: true, receipt, sequenceNumber };
|
|
82
|
-
} catch (error) {
|
|
83
|
-
this.logger.error(`Failed to register HCS-6 entry: ${error}`);
|
|
84
|
-
return { success: false, error: String(error) };
|
|
85
|
-
}
|
|
52
|
+
generateRegistryMemo(ttl) {
|
|
53
|
+
return generateHCS6RegistryMemo(ttl);
|
|
86
54
|
}
|
|
87
55
|
/**
|
|
88
|
-
*
|
|
89
|
-
* @param
|
|
90
|
-
* @
|
|
91
|
-
* @returns Promise resolving to the registry information
|
|
56
|
+
* Validate a HCS-6 message
|
|
57
|
+
* @param message The message to validate
|
|
58
|
+
* @returns Validation result
|
|
92
59
|
*/
|
|
93
|
-
|
|
60
|
+
validateMessage(message) {
|
|
94
61
|
try {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
);
|
|
62
|
+
hcs6MessageSchema.parse(message);
|
|
63
|
+
return { valid: true, errors: [] };
|
|
64
|
+
} catch (error) {
|
|
65
|
+
const errors = [];
|
|
66
|
+
if (error instanceof ZodError) {
|
|
67
|
+
error.errors.forEach((err) => {
|
|
68
|
+
const path = err.path.join(".");
|
|
69
|
+
errors.push(`${path ? path + ": " : ""}${err.message}`);
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
errors.push(`Unexpected error: ${error}`);
|
|
104
73
|
}
|
|
105
74
|
this.logger.debug(
|
|
106
|
-
`
|
|
107
|
-
);
|
|
108
|
-
const rawMessagesResult = await this.mirrorNode.getTopicMessages(
|
|
109
|
-
topicId,
|
|
110
|
-
{
|
|
111
|
-
sequenceNumber: options.skip && options.skip > 0 ? `gt:${options.skip}` : void 0,
|
|
112
|
-
limit: options.limit ?? 100,
|
|
113
|
-
order: options.order ?? "asc"
|
|
114
|
-
}
|
|
75
|
+
`HCS-6 message validation failed: ${errors.join(", ")}`
|
|
115
76
|
);
|
|
116
|
-
|
|
117
|
-
this.logger.debug(
|
|
118
|
-
`Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`
|
|
119
|
-
);
|
|
120
|
-
return this.parseRegistryEntries(
|
|
121
|
-
topicId,
|
|
122
|
-
rawMessages,
|
|
123
|
-
memoInfo.registryType,
|
|
124
|
-
memoInfo.ttl
|
|
125
|
-
);
|
|
126
|
-
} catch (error) {
|
|
127
|
-
this.logger.error(`Failed to get HCS-6 registry: ${error}`);
|
|
128
|
-
throw error;
|
|
77
|
+
return { valid: false, errors };
|
|
129
78
|
}
|
|
130
79
|
}
|
|
131
80
|
/**
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
* @param
|
|
135
|
-
* @
|
|
136
|
-
* @returns Promise resolving to the transaction receipt
|
|
81
|
+
* Create a HCS-6 register message
|
|
82
|
+
* @param targetTopicId The target HCS-1 topic ID
|
|
83
|
+
* @param memo Optional memo
|
|
84
|
+
* @returns The register message
|
|
137
85
|
*/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
topicId,
|
|
146
|
-
JSON.stringify(payload)
|
|
147
|
-
);
|
|
148
|
-
return receipt;
|
|
86
|
+
createRegisterMessage(targetTopicId, memo) {
|
|
87
|
+
return {
|
|
88
|
+
p: "hcs-6",
|
|
89
|
+
op: HCS6Operation.REGISTER,
|
|
90
|
+
t_id: targetTopicId,
|
|
91
|
+
m: memo
|
|
92
|
+
};
|
|
149
93
|
}
|
|
150
94
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* @param
|
|
154
|
-
* @
|
|
95
|
+
* Parse HCS-6 registry entries from topic messages
|
|
96
|
+
* @param topicId The topic ID
|
|
97
|
+
* @param messages The messages to parse
|
|
98
|
+
* @param registryType The registry type
|
|
99
|
+
* @param ttl The time-to-live in seconds
|
|
100
|
+
* @returns The parsed registry
|
|
155
101
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return { success: false, error: reg.error };
|
|
191
|
-
registryTopicId = reg.topicId;
|
|
192
|
-
}
|
|
193
|
-
const regRes = await this.registerEntry(registryTopicId, {
|
|
194
|
-
targetTopicId: inscriptionTopicId,
|
|
195
|
-
memo: options.memo || "Initial dynamic hashinal registration"
|
|
196
|
-
});
|
|
197
|
-
if (!regRes.success) return { success: false, error: regRes.error };
|
|
198
|
-
return {
|
|
199
|
-
success: true,
|
|
200
|
-
registryTopicId,
|
|
201
|
-
inscriptionTopicId
|
|
202
|
-
};
|
|
203
|
-
} catch (error) {
|
|
204
|
-
this.logger.error(`Failed to create dynamic hashinal: ${error}`);
|
|
205
|
-
return { success: false, error: String(error) };
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Register a dynamic hashinal with combined inscription and registry creation
|
|
210
|
-
* Note: In browser environment, this would typically be called through a wallet or proxy service
|
|
211
|
-
* @param options Options for registering the dynamic hashinal
|
|
212
|
-
* @returns Promise resolving to the creation response
|
|
213
|
-
*/
|
|
214
|
-
async register(options) {
|
|
215
|
-
try {
|
|
216
|
-
if (!this.signer) {
|
|
217
|
-
return {
|
|
218
|
-
success: false,
|
|
219
|
-
error: "No signer configured for browser register"
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
let input;
|
|
223
|
-
if (options.data?.base64) {
|
|
224
|
-
input = {
|
|
225
|
-
type: "buffer",
|
|
226
|
-
buffer: Buffer.from(options.data.base64, "base64"),
|
|
227
|
-
fileName: "data." + (options.data.mimeType?.split("/")[1] || "bin"),
|
|
228
|
-
mimeType: options.data.mimeType || "application/octet-stream"
|
|
229
|
-
};
|
|
230
|
-
} else if (options.data?.url) {
|
|
231
|
-
input = { type: "url", url: options.data.url };
|
|
232
|
-
} else {
|
|
233
|
-
input = {
|
|
234
|
-
type: "buffer",
|
|
235
|
-
buffer: Buffer.from(JSON.stringify(options.metadata)),
|
|
236
|
-
fileName: "metadata.json",
|
|
237
|
-
mimeType: "application/json"
|
|
102
|
+
parseRegistryEntries(topicId, messages, registryType, ttl) {
|
|
103
|
+
const entries = [];
|
|
104
|
+
let latestEntry;
|
|
105
|
+
this.logger.debug(
|
|
106
|
+
`Parsing ${messages.length} messages for HCS-6 topic ${topicId}`
|
|
107
|
+
);
|
|
108
|
+
for (const msg of messages) {
|
|
109
|
+
try {
|
|
110
|
+
if (!msg.message) {
|
|
111
|
+
this.logger.debug(
|
|
112
|
+
`Message is missing 'message' property: ${JSON.stringify(msg)}`
|
|
113
|
+
);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const decodedMessage = Buffer.from(msg.message, "base64").toString(
|
|
117
|
+
"utf-8"
|
|
118
|
+
);
|
|
119
|
+
const message = JSON.parse(decodedMessage);
|
|
120
|
+
this.logger.debug(
|
|
121
|
+
`Successfully parsed HCS-6 message: ${JSON.stringify(message)}`
|
|
122
|
+
);
|
|
123
|
+
const { valid, errors } = this.validateMessage(message);
|
|
124
|
+
if (!valid) {
|
|
125
|
+
this.logger.warn(`Invalid HCS-6 message: ${errors.join(", ")}`);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const entry = {
|
|
129
|
+
topicId,
|
|
130
|
+
sequence: msg.sequence_number,
|
|
131
|
+
timestamp: msg.consensus_timestamp,
|
|
132
|
+
payer: msg.payer_account_id,
|
|
133
|
+
message,
|
|
134
|
+
consensus_timestamp: msg.consensus_timestamp,
|
|
135
|
+
registry_type: registryType
|
|
238
136
|
};
|
|
137
|
+
entries.push(entry);
|
|
138
|
+
if (!latestEntry || entry.timestamp > latestEntry.timestamp) {
|
|
139
|
+
latestEntry = entry;
|
|
140
|
+
}
|
|
141
|
+
} catch (error) {
|
|
142
|
+
this.logger.warn(`Error parsing HCS-6 message: ${error}`);
|
|
239
143
|
}
|
|
240
|
-
const inscriptionOptions = {
|
|
241
|
-
...options.inscriptionOptions,
|
|
242
|
-
mode: "hashinal",
|
|
243
|
-
metadata: options.metadata,
|
|
244
|
-
waitForConfirmation: true,
|
|
245
|
-
network: this.network
|
|
246
|
-
};
|
|
247
|
-
const res = await inscribeWithSigner(
|
|
248
|
-
input,
|
|
249
|
-
this.signer,
|
|
250
|
-
inscriptionOptions
|
|
251
|
-
);
|
|
252
|
-
const inscriptionTopicId = res.inscription?.jsonTopicId || getTopicId(res.inscription);
|
|
253
|
-
if (!inscriptionTopicId)
|
|
254
|
-
return { success: false, error: "Failed to inscribe data" };
|
|
255
|
-
let registryTopicId = options.registryTopicId;
|
|
256
|
-
if (!registryTopicId) {
|
|
257
|
-
const reg = await this.createRegistry({ ttl: options.ttl });
|
|
258
|
-
if (!reg.success || !reg.topicId)
|
|
259
|
-
return { success: false, error: reg.error };
|
|
260
|
-
registryTopicId = reg.topicId;
|
|
261
|
-
}
|
|
262
|
-
const regRes = await this.registerEntry(registryTopicId, {
|
|
263
|
-
targetTopicId: inscriptionTopicId,
|
|
264
|
-
memo: options.memo || "Dynamic hashinal registration"
|
|
265
|
-
});
|
|
266
|
-
if (!regRes.success) return { success: false, error: regRes.error };
|
|
267
|
-
return {
|
|
268
|
-
success: true,
|
|
269
|
-
registryTopicId,
|
|
270
|
-
inscriptionTopicId
|
|
271
|
-
};
|
|
272
|
-
} catch (error) {
|
|
273
|
-
this.logger.error(`Failed to register dynamic hashinal: ${error}`);
|
|
274
|
-
return { success: false, error: String(error) };
|
|
275
144
|
}
|
|
145
|
+
this.logger.debug(
|
|
146
|
+
`Parsed ${entries.length} valid entries for HCS-6 topic ${topicId}`
|
|
147
|
+
);
|
|
148
|
+
return {
|
|
149
|
+
topicId,
|
|
150
|
+
registryType,
|
|
151
|
+
ttl,
|
|
152
|
+
entries: latestEntry ? [latestEntry] : [],
|
|
153
|
+
latestEntry
|
|
154
|
+
};
|
|
276
155
|
}
|
|
277
156
|
/**
|
|
278
157
|
* Validate that a topic is a valid HCS-6 registry
|
|
@@ -303,6 +182,6 @@ class HCS6BrowserClient extends HCS6BaseClient {
|
|
|
303
182
|
}
|
|
304
183
|
}
|
|
305
184
|
export {
|
|
306
|
-
|
|
185
|
+
HCS6BaseClient
|
|
307
186
|
};
|
|
308
187
|
//# sourceMappingURL=standards-sdk.es6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es6.js","sources":["../../src/hcs-6/browser.ts"],"sourcesContent":["import { HCS6BaseClient } from './base-client';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n HCS6RegistryType,\n} from './types';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { TransactionReceipt } from '@hashgraph/sdk';\nimport {\n inscribeWithSigner,\n type InscriptionInput,\n type InscriptionOptions,\n type InscriptionResponse,\n} from '../inscribe/inscriber';\nimport { getTopicId as getInscriptionTopicId } from '../utils/topic-id-utils';\n\n/**\n * Browser client configuration for HCS-6\n */\nexport interface BrowserHCS6ClientConfig extends HCS6ClientConfig {\n hwc: HashinalsWalletConnectSDK;\n signer?: DAppSigner;\n}\n\n/**\n * Browser client for HCS-6 operations\n * This client is designed to work in browser environments where direct key management is not available\n */\nexport class HCS6BrowserClient extends HCS6BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n private signer?: DAppSigner;\n /**\n * Create a new HCS-6 browser client\n * @param config Client configuration\n */\n constructor(config: BrowserHCS6ClientConfig) {\n super(config);\n this.hwc = config.hwc;\n this.signer = config.signer;\n }\n\n private ensureConnected(): string {\n const info = this.hwc.getAccountInfo();\n const accountId = info?.accountId;\n if (!accountId) {\n throw new Error(\n 'No active wallet connection: wallet integration required to perform write operations',\n );\n }\n return accountId;\n }\n\n public getSigner(): DAppSigner {\n const explicit = this.signer;\n if (explicit) {\n return explicit;\n }\n this.ensureConnected();\n const dc = this.hwc.dAppConnector;\n const signer = dc?.signers?.[0];\n if (!signer) {\n throw new Error('No active wallet signer');\n }\n return signer;\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n async createRegistry(\n options: HCS6CreateRegistryOptions,\n ): Promise<HCS6TopicRegistrationResponse> {\n try {\n this.ensureConnected();\n const ttl = options?.ttl ?? 86400;\n const memo = this.generateRegistryMemo(ttl);\n const topicId = await this.hwc.createTopic(memo);\n this.logger.info(\n `Created HCS-6 registry topic via wallet: ${topicId} (TTL ${ttl})`,\n );\n return { success: true, topicId };\n } catch (error) {\n this.logger.error(`Failed to create HCS-6 registry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a new dynamic hashinal update in the registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n async registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse> {\n try {\n const valid = await this.validateHCS6Topic(registryTopicId);\n if (!valid) {\n throw new Error(\n `Topic ${registryTopicId} is not a valid HCS-6 registry`,\n );\n }\n\n const message = this.createRegisterMessage(\n options.targetTopicId,\n options.memo,\n );\n const receipt = await this.submitMessage(registryTopicId, message);\n const seqField = receipt.topicSequenceNumber as\n | number\n | { low: number }\n | undefined;\n const sequenceNumber =\n typeof seqField === 'number' ? seqField : seqField?.low;\n return { success: true, receipt, sequenceNumber };\n } catch (error) {\n this.logger.error(`Failed to register HCS-6 entry: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n async getRegistry(\n topicId: string,\n options: HCS6QueryRegistryOptions = {},\n ): Promise<HCS6TopicRegistry> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n this.logger.debug(\n `Retrieved topic info for HCS-6 ${topicId}: ${JSON.stringify(topicInfo)}`,\n );\n\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n throw new Error(\n `Topic ${topicId} is not an HCS-6 registry (invalid memo format)`,\n );\n }\n\n this.logger.debug(\n `Retrieving messages for HCS-6 topic ${topicId} with limit ${options.limit ?? 100}`,\n );\n const rawMessagesResult = (await this.mirrorNode.getTopicMessages(\n topicId,\n {\n sequenceNumber:\n options.skip && options.skip > 0 ? `gt:${options.skip}` : undefined,\n limit: options.limit ?? 100,\n order: options.order ?? 'asc',\n },\n )) as unknown as Array<{\n message?: string;\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id: string;\n }>;\n\n const rawMessages = options.limit\n ? rawMessagesResult.slice(0, options.limit)\n : rawMessagesResult;\n\n this.logger.debug(\n `Retrieved ${rawMessagesResult.length} messages, using ${rawMessages.length} after applying limit.`,\n );\n\n return this.parseRegistryEntries(\n topicId,\n rawMessages,\n memoInfo.registryType,\n memoInfo.ttl,\n );\n } catch (error) {\n this.logger.error(`Failed to get HCS-6 registry: ${error}`);\n throw error;\n }\n }\n\n /**\n * Submit a message to a HCS-6 topic\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n async submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt> {\n this.ensureConnected();\n const { valid, errors } = this.validateMessage(payload);\n if (!valid) {\n throw new Error(`Invalid HCS-6 message: ${errors.join(', ')}`);\n }\n const receipt = await this.hwc.submitMessageToTopic(\n topicId,\n JSON.stringify(payload),\n );\n return receipt;\n }\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser createHashinal',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const input: InscriptionInput = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId) {\n return { success: false, error: 'Failed to inscribe metadata' };\n }\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Initial dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to create dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * Note: In browser environment, this would typically be called through a wallet or proxy service\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n async register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse> {\n try {\n if (!this.signer) {\n return {\n success: false,\n error: 'No signer configured for browser register',\n };\n }\n\n let input: InscriptionInput;\n if (options.data?.base64) {\n input = {\n type: 'buffer',\n buffer: Buffer.from(options.data.base64, 'base64'),\n fileName: 'data.' + (options.data.mimeType?.split('/')[1] || 'bin'),\n mimeType: options.data.mimeType || 'application/octet-stream',\n };\n } else if (options.data?.url) {\n input = { type: 'url', url: options.data.url };\n } else {\n input = {\n type: 'buffer',\n buffer: Buffer.from(JSON.stringify(options.metadata)),\n fileName: 'metadata.json',\n mimeType: 'application/json',\n };\n }\n\n const inscriptionOptions: InscriptionOptions = {\n ...(options.inscriptionOptions as InscriptionOptions | undefined),\n mode: 'hashinal',\n metadata: options.metadata,\n waitForConfirmation: true,\n network: this.network,\n };\n\n const res: InscriptionResponse = await inscribeWithSigner(\n input,\n this.signer,\n inscriptionOptions,\n );\n const inscriptionTopicId =\n res.inscription?.jsonTopicId || getInscriptionTopicId(res.inscription);\n if (!inscriptionTopicId)\n return { success: false, error: 'Failed to inscribe data' };\n\n let registryTopicId = options.registryTopicId;\n if (!registryTopicId) {\n const reg = await this.createRegistry({ ttl: options.ttl });\n if (!reg.success || !reg.topicId)\n return { success: false, error: reg.error };\n registryTopicId = reg.topicId;\n }\n\n const regRes = await this.registerEntry(registryTopicId, {\n targetTopicId: inscriptionTopicId,\n memo: options.memo || 'Dynamic hashinal registration',\n });\n if (!regRes.success) return { success: false, error: regRes.error };\n\n return {\n success: true,\n registryTopicId,\n inscriptionTopicId,\n };\n } catch (error) {\n this.logger.error(`Failed to register dynamic hashinal: ${error}`);\n return { success: false, error: String(error) };\n }\n }\n\n /**\n * Validate that a topic is a valid HCS-6 registry\n * @param topicId The topic ID to validate\n * @returns Promise resolving to true if valid, false otherwise\n */\n async validateHCS6Topic(topicId: string): Promise<boolean> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (invalid memo format)`,\n );\n return false;\n }\n\n if (memoInfo.registryType !== HCS6RegistryType.NON_INDEXED) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (must be non-indexed)`,\n );\n return false;\n }\n\n return true;\n } catch (error) {\n this.logger.error(`Error validating HCS-6 topic ${topicId}: ${error}`);\n return false;\n }\n }\n}\n"],"names":["getInscriptionTopicId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es6.js","sources":["../../src/hcs-6/base-client.ts"],"sourcesContent":["import { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport {\n HCS6ClientConfig,\n HCS6Message,\n HCS6Operation,\n HCS6RegisterMessage,\n HCS6RegistryType,\n HCS6TopicRegistrationResponse,\n HCS6RegistryOperationResponse,\n HCS6TopicRegistry,\n HCS6CreateRegistryOptions,\n HCS6RegisterEntryOptions,\n HCS6QueryRegistryOptions,\n HCS6RegistryEntry,\n HCS6CreateHashinalOptions,\n HCS6CreateHashinalResponse,\n HCS6RegisterOptions,\n hcs6MessageSchema,\n validateHCS6TTL,\n generateHCS6RegistryMemo,\n} from './types';\nimport { TransactionReceipt } from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport { ZodError } from 'zod';\n\n/**\n * Base client for HCS-6 operations\n * This abstract class provides shared functionality for both SDK and browser implementations\n */\nexport abstract class HCS6BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n\n /**\n * Create a new HCS-6 base client\n * @param config Client configuration\n */\n constructor(config: HCS6ClientConfig) {\n this.network = config.network;\n\n this.logger =\n config.logger ||\n Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS6Client',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(\n this.network,\n this.logger,\n config.mirrorNodeUrl ? { customUrl: config.mirrorNodeUrl } : undefined,\n );\n }\n\n /**\n * Create a new HCS-6 registry topic (for dynamic hashinals)\n * @param options Registry creation options\n * @returns Promise resolving to the transaction result\n */\n abstract createRegistry(\n options: HCS6CreateRegistryOptions,\n ): Promise<HCS6TopicRegistrationResponse>;\n\n /**\n * Register a new dynamic hashinal update in the registry\n * @param registryTopicId The topic ID of the HCS-6 registry\n * @param options Registration options\n * @returns Promise resolving to the operation result\n */\n abstract registerEntry(\n registryTopicId: string,\n options: HCS6RegisterEntryOptions,\n ): Promise<HCS6RegistryOperationResponse>;\n\n /**\n * Get the latest entry from a HCS-6 registry (non-indexed, so only latest matters)\n * @param topicId The topic ID of the registry\n * @param options Query options\n * @returns Promise resolving to the registry information\n */\n abstract getRegistry(\n topicId: string,\n options?: HCS6QueryRegistryOptions,\n ): Promise<HCS6TopicRegistry>;\n\n /**\n * Submit a message to a HCS-6 topic\n * @param topicId The topic ID to submit to\n * @param payload The message payload\n * @returns Promise resolving to the transaction receipt\n */\n abstract submitMessage(\n topicId: string,\n payload: HCS6Message,\n ): Promise<TransactionReceipt>;\n\n /**\n * Create a complete dynamic hashinal with inscription and registry\n * @param options Options for creating the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n abstract createHashinal(\n options: HCS6CreateHashinalOptions,\n ): Promise<HCS6CreateHashinalResponse>;\n\n /**\n * Register a dynamic hashinal with combined inscription and registry creation\n * @param options Options for registering the dynamic hashinal\n * @returns Promise resolving to the creation response\n */\n abstract register(\n options: HCS6RegisterOptions,\n ): Promise<HCS6CreateHashinalResponse>;\n\n /**\n * Determine the registry type from a topic memo (HCS-6 specific)\n * @param memo The topic memo\n * @returns The registry type or undefined if not found\n */\n protected parseRegistryTypeFromMemo(\n memo: string,\n ): { registryType: HCS6RegistryType; ttl: number } | undefined {\n try {\n const regex = /hcs-6:(\\d):(\\d+)/;\n const match = memo.match(regex);\n\n if (match && match.length === 3) {\n const registryType = parseInt(match[1]) as HCS6RegistryType;\n const ttl = parseInt(match[2]);\n\n if (\n registryType === HCS6RegistryType.NON_INDEXED &&\n validateHCS6TTL(ttl)\n ) {\n return { registryType, ttl };\n }\n }\n\n return undefined;\n } catch (error) {\n this.logger.error(\n `Error parsing HCS-6 registry type from memo: ${error}`,\n );\n return undefined;\n }\n }\n\n /**\n * Generate a memo string for a HCS-6 registry topic\n * @param ttl The time-to-live in seconds\n * @returns The memo string\n */\n protected generateRegistryMemo(ttl: number): string {\n return generateHCS6RegistryMemo(ttl);\n }\n\n /**\n * Validate a HCS-6 message\n * @param message The message to validate\n * @returns Validation result\n */\n protected validateMessage(message: unknown): {\n valid: boolean;\n errors: string[];\n } {\n try {\n hcs6MessageSchema.parse(message);\n return { valid: true, errors: [] };\n } catch (error) {\n const errors: string[] = [];\n\n if (error instanceof ZodError) {\n error.errors.forEach(err => {\n const path = err.path.join('.');\n errors.push(`${path ? path + ': ' : ''}${err.message}`);\n });\n } else {\n errors.push(`Unexpected error: ${error}`);\n }\n\n this.logger.debug(\n `HCS-6 message validation failed: ${errors.join(', ')}`,\n );\n return { valid: false, errors };\n }\n }\n\n /**\n * Create a HCS-6 register message\n * @param targetTopicId The target HCS-1 topic ID\n * @param memo Optional memo\n * @returns The register message\n */\n protected createRegisterMessage(\n targetTopicId: string,\n memo?: string,\n ): HCS6RegisterMessage {\n return {\n p: 'hcs-6',\n op: HCS6Operation.REGISTER,\n t_id: targetTopicId,\n m: memo,\n };\n }\n\n /**\n * Parse HCS-6 registry entries from topic messages\n * @param topicId The topic ID\n * @param messages The messages to parse\n * @param registryType The registry type\n * @param ttl The time-to-live in seconds\n * @returns The parsed registry\n */\n protected parseRegistryEntries(\n topicId: string,\n messages: Array<{\n message?: string;\n sequence_number: number;\n consensus_timestamp: string;\n payer_account_id: string;\n }>,\n registryType: HCS6RegistryType,\n ttl: number,\n ): HCS6TopicRegistry {\n const entries: HCS6RegistryEntry[] = [];\n let latestEntry: HCS6RegistryEntry | undefined;\n\n this.logger.debug(\n `Parsing ${messages.length} messages for HCS-6 topic ${topicId}`,\n );\n\n for (const msg of messages) {\n try {\n if (!msg.message) {\n this.logger.debug(\n `Message is missing 'message' property: ${JSON.stringify(msg)}`,\n );\n continue;\n }\n\n const decodedMessage = Buffer.from(msg.message, 'base64').toString(\n 'utf-8',\n );\n const message = JSON.parse(decodedMessage) as HCS6Message;\n\n this.logger.debug(\n `Successfully parsed HCS-6 message: ${JSON.stringify(message)}`,\n );\n\n const { valid, errors } = this.validateMessage(message);\n if (!valid) {\n this.logger.warn(`Invalid HCS-6 message: ${errors.join(', ')}`);\n continue;\n }\n\n const entry: HCS6RegistryEntry = {\n topicId,\n sequence: msg.sequence_number,\n timestamp: msg.consensus_timestamp,\n payer: msg.payer_account_id,\n message,\n consensus_timestamp: msg.consensus_timestamp,\n registry_type: registryType,\n };\n\n entries.push(entry);\n\n if (!latestEntry || entry.timestamp > latestEntry.timestamp) {\n latestEntry = entry;\n }\n } catch (error) {\n this.logger.warn(`Error parsing HCS-6 message: ${error}`);\n }\n }\n\n this.logger.debug(\n `Parsed ${entries.length} valid entries for HCS-6 topic ${topicId}`,\n );\n\n return {\n topicId,\n registryType,\n ttl,\n entries: latestEntry ? [latestEntry] : [],\n latestEntry,\n };\n }\n\n /**\n * Validate that a topic is a valid HCS-6 registry\n * @param topicId The topic ID to validate\n * @returns Promise resolving to true if valid, false otherwise\n */\n protected async validateHCS6Topic(topicId: string): Promise<boolean> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n const memoInfo = this.parseRegistryTypeFromMemo(topicInfo.memo);\n\n if (!memoInfo) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (invalid memo format)`,\n );\n return false;\n }\n\n if (memoInfo.registryType !== HCS6RegistryType.NON_INDEXED) {\n this.logger.warn(\n `Topic ${topicId} is not a valid HCS-6 registry (must be non-indexed)`,\n );\n return false;\n }\n\n return true;\n } catch (error) {\n this.logger.error(`Error validating HCS-6 topic ${topicId}: ${error}`);\n return false;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|