@hashgraphonline/standards-sdk 0.1.171 → 0.1.173
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/browser/browser-root.d.ts +3 -0
- package/dist/browser/browser-root.d.ts.map +1 -0
- package/dist/browser/hcs-11/client.d.ts +30 -30
- package/dist/browser/hcs-11/client.d.ts.map +1 -1
- package/dist/browser/hcs-21/types.d.ts +23 -23
- package/dist/browser/inscribe/inscriber.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client/base-client.d.ts +4 -2
- package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client/encryption.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client/search.d.ts +2 -1
- package/dist/browser/services/registry-broker/client/search.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client.d.ts +1 -0
- package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/schemas.d.ts +17760 -95
- package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/types.d.ts +36 -1
- package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +5369 -8954
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser/utils/dynamic-import.d.ts.map +1 -1
- package/dist/browser-root/browser-root.d.ts +3 -0
- package/dist/browser-root/browser-root.d.ts.map +1 -0
- package/dist/browser-root/browser.d.ts +8 -0
- package/dist/browser-root/browser.d.ts.map +1 -0
- package/dist/browser-root/common/node-operator-resolver.d.ts +58 -0
- package/dist/browser-root/common/node-operator-resolver.d.ts.map +1 -0
- package/dist/browser-root/common/tx/tx-utils.d.ts +15 -0
- package/dist/browser-root/common/tx/tx-utils.d.ts.map +1 -0
- package/dist/browser-root/content-store/ContentResolverRegistry.d.ts +38 -0
- package/dist/browser-root/content-store/ContentResolverRegistry.d.ts.map +1 -0
- package/dist/browser-root/content-store/ContentStoreService.d.ts +40 -0
- package/dist/browser-root/content-store/ContentStoreService.d.ts.map +1 -0
- package/dist/browser-root/content-store/index.d.ts +9 -0
- package/dist/browser-root/content-store/index.d.ts.map +1 -0
- package/dist/browser-root/content-store/types.d.ts +41 -0
- package/dist/browser-root/content-store/types.d.ts.map +1 -0
- package/dist/browser-root/fees/fee-config-builder.d.ts +115 -0
- package/dist/browser-root/fees/fee-config-builder.d.ts.map +1 -0
- package/dist/browser-root/fees/index.d.ts +3 -0
- package/dist/browser-root/fees/index.d.ts.map +1 -0
- package/dist/browser-root/fees/types.d.ts +26 -0
- package/dist/browser-root/fees/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/base-client.d.ts +312 -0
- package/dist/browser-root/hcs-10/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/browser.d.ts +129 -0
- package/dist/browser-root/hcs-10/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/connections-manager.d.ts +367 -0
- package/dist/browser-root/hcs-10/connections-manager.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/errors.d.ts +14 -0
- package/dist/browser-root/hcs-10/errors.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/index.d.ts +9 -0
- package/dist/browser-root/hcs-10/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/registrations.d.ts +49 -0
- package/dist/browser-root/hcs-10/registrations.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/sdk.d.ts +293 -0
- package/dist/browser-root/hcs-10/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/tx.d.ts +85 -0
- package/dist/browser-root/hcs-10/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-10/types.d.ts +286 -0
- package/dist/browser-root/hcs-10/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/agent-builder.d.ts +57 -0
- package/dist/browser-root/hcs-11/agent-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/client.d.ts +1199 -0
- package/dist/browser-root/hcs-11/client.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/flora-builder.d.ts +24 -0
- package/dist/browser-root/hcs-11/flora-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/index.d.ts +7 -0
- package/dist/browser-root/hcs-11/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/mcp-server-builder.d.ts +227 -0
- package/dist/browser-root/hcs-11/mcp-server-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/person-builder.d.ts +30 -0
- package/dist/browser-root/hcs-11/person-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-11/types.d.ts +239 -0
- package/dist/browser-root/hcs-11/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/assembly/assembly-engine.d.ts +83 -0
- package/dist/browser-root/hcs-12/assembly/assembly-engine.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/assembly/index.d.ts +7 -0
- package/dist/browser-root/hcs-12/assembly/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/base-client.d.ts +152 -0
- package/dist/browser-root/hcs-12/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/browser.d.ts +135 -0
- package/dist/browser-root/hcs-12/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/builders/action-builder.d.ts +112 -0
- package/dist/browser-root/hcs-12/builders/action-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/builders/assembly-builder.d.ts +98 -0
- package/dist/browser-root/hcs-12/builders/assembly-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/builders/block-builder.d.ts +135 -0
- package/dist/browser-root/hcs-12/builders/block-builder.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/builders/index.d.ts +7 -0
- package/dist/browser-root/hcs-12/builders/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/constants.d.ts +35 -0
- package/dist/browser-root/hcs-12/constants.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/index.d.ts +21 -0
- package/dist/browser-root/hcs-12/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/action-registry.d.ts +69 -0
- package/dist/browser-root/hcs-12/registries/action-registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/assembly-registry.d.ts +62 -0
- package/dist/browser-root/hcs-12/registries/assembly-registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/base-registry.d.ts +76 -0
- package/dist/browser-root/hcs-12/registries/base-registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/block-loader.d.ts +43 -0
- package/dist/browser-root/hcs-12/registries/block-loader.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/hashlinks-registry.d.ts +57 -0
- package/dist/browser-root/hcs-12/registries/hashlinks-registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/registries/index.d.ts +9 -0
- package/dist/browser-root/hcs-12/registries/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/block-renderer.d.ts +111 -0
- package/dist/browser-root/hcs-12/rendering/block-renderer.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/block-state-manager.d.ts +158 -0
- package/dist/browser-root/hcs-12/rendering/block-state-manager.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/gutenberg-bridge.d.ts +59 -0
- package/dist/browser-root/hcs-12/rendering/gutenberg-bridge.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/hashlink-resolver.d.ts +69 -0
- package/dist/browser-root/hcs-12/rendering/hashlink-resolver.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/hashlink-scanner.d.ts +35 -0
- package/dist/browser-root/hcs-12/rendering/hashlink-scanner.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/index.d.ts +14 -0
- package/dist/browser-root/hcs-12/rendering/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/resource-manager.d.ts +134 -0
- package/dist/browser-root/hcs-12/rendering/resource-manager.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/rendering/template-engine.d.ts +108 -0
- package/dist/browser-root/hcs-12/rendering/template-engine.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/sdk.d.ts +114 -0
- package/dist/browser-root/hcs-12/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/security/hash-verifier.d.ts +195 -0
- package/dist/browser-root/hcs-12/security/hash-verifier.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/security/permission-system.d.ts +254 -0
- package/dist/browser-root/hcs-12/security/permission-system.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/security/signature-verifier.d.ts +192 -0
- package/dist/browser-root/hcs-12/security/signature-verifier.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/tx.d.ts +34 -0
- package/dist/browser-root/hcs-12/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/types.d.ts +546 -0
- package/dist/browser-root/hcs-12/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/validation/index.d.ts +6 -0
- package/dist/browser-root/hcs-12/validation/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/validation/schemas.d.ts +361 -0
- package/dist/browser-root/hcs-12/validation/schemas.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/validation/wasm-validator.d.ts +81 -0
- package/dist/browser-root/hcs-12/validation/wasm-validator.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/wasm/index.d.ts +2 -0
- package/dist/browser-root/hcs-12/wasm/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-12/wasm/wasm-executor.d.ts +44 -0
- package/dist/browser-root/hcs-12/wasm/wasm-executor.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/adapters/types.d.ts +24 -0
- package/dist/browser-root/hcs-14/adapters/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/base58.d.ts +7 -0
- package/dist/browser-root/hcs-14/base58.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/browser.d.ts +5 -0
- package/dist/browser-root/hcs-14/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/caip.d.ts +14 -0
- package/dist/browser-root/hcs-14/caip.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/canonical.d.ts +3 -0
- package/dist/browser-root/hcs-14/canonical.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/did.d.ts +7 -0
- package/dist/browser-root/hcs-14/did.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/index.d.ts +18 -0
- package/dist/browser-root/hcs-14/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/issuers/hiero.d.ts +8 -0
- package/dist/browser-root/hcs-14/issuers/hiero.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/issuers/registry.d.ts +15 -0
- package/dist/browser-root/hcs-14/issuers/registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/issuers/types.d.ts +28 -0
- package/dist/browser-root/hcs-14/issuers/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/aid-dns-web-profile.d.ts +38 -0
- package/dist/browser-root/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts +23 -0
- package/dist/browser-root/hcs-14/resolvers/ans-dns-web-profile-utils.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/ans-dns-web-profile.d.ts +32 -0
- package/dist/browser-root/hcs-14/resolvers/ans-dns-web-profile.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/dns.d.ts +3 -0
- package/dist/browser-root/hcs-14/resolvers/dns.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/hcs-11-profile.d.ts +9 -0
- package/dist/browser-root/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/hiero.d.ts +9 -0
- package/dist/browser-root/hcs-14/resolvers/hiero.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/profile-utils.d.ts +9 -0
- package/dist/browser-root/hcs-14/resolvers/profile-utils.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/registry.d.ts +70 -0
- package/dist/browser-root/hcs-14/resolvers/registry.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/types.d.ts +166 -0
- package/dist/browser-root/hcs-14/resolvers/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +11 -0
- package/dist/browser-root/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/resolvers/uaid-dns-web-profile.d.ts +23 -0
- package/dist/browser-root/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/sdk.d.ts +125 -0
- package/dist/browser-root/hcs-14/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-14/types.d.ts +45 -0
- package/dist/browser-root/hcs-14/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/base-client.d.ts +22 -0
- package/dist/browser-root/hcs-15/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/browser.d.ts +36 -0
- package/dist/browser-root/hcs-15/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/index.d.ts +6 -0
- package/dist/browser-root/hcs-15/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/sdk.d.ts +45 -0
- package/dist/browser-root/hcs-15/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/tx.d.ts +26 -0
- package/dist/browser-root/hcs-15/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-15/types.d.ts +86 -0
- package/dist/browser-root/hcs-15/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/base-client.d.ts +67 -0
- package/dist/browser-root/hcs-16/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/browser.d.ts +119 -0
- package/dist/browser-root/hcs-16/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/index.d.ts +7 -0
- package/dist/browser-root/hcs-16/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/sdk.d.ts +164 -0
- package/dist/browser-root/hcs-16/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/tx.d.ts +142 -0
- package/dist/browser-root/hcs-16/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-16/types.d.ts +151 -0
- package/dist/browser-root/hcs-16/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/base-client.d.ts +86 -0
- package/dist/browser-root/hcs-17/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/browser.d.ts +41 -0
- package/dist/browser-root/hcs-17/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/index.d.ts +6 -0
- package/dist/browser-root/hcs-17/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/sdk.d.ts +40 -0
- package/dist/browser-root/hcs-17/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/tx.d.ts +27 -0
- package/dist/browser-root/hcs-17/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-17/types.d.ts +141 -0
- package/dist/browser-root/hcs-17/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/base-client.d.ts +28 -0
- package/dist/browser-root/hcs-18/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/browser.d.ts +33 -0
- package/dist/browser-root/hcs-18/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/index.d.ts +12 -0
- package/dist/browser-root/hcs-18/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/sdk.d.ts +60 -0
- package/dist/browser-root/hcs-18/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/tx.d.ts +22 -0
- package/dist/browser-root/hcs-18/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-18/types.d.ts +211 -0
- package/dist/browser-root/hcs-18/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/base-client.d.ts +138 -0
- package/dist/browser-root/hcs-2/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/browser.d.ts +76 -0
- package/dist/browser-root/hcs-2/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/client.d.ts +112 -0
- package/dist/browser-root/hcs-2/client.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/index.d.ts +6 -0
- package/dist/browser-root/hcs-2/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/tx.d.ts +40 -0
- package/dist/browser-root/hcs-2/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-2/types.d.ts +379 -0
- package/dist/browser-root/hcs-2/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/base-client.d.ts +56 -0
- package/dist/browser-root/hcs-20/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/browser.d.ts +53 -0
- package/dist/browser-root/hcs-20/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/errors.d.ts +126 -0
- package/dist/browser-root/hcs-20/errors.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/index.d.ts +17 -0
- package/dist/browser-root/hcs-20/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/points-indexer.d.ts +92 -0
- package/dist/browser-root/hcs-20/points-indexer.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/sdk.d.ts +53 -0
- package/dist/browser-root/hcs-20/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/tx.d.ts +46 -0
- package/dist/browser-root/hcs-20/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-20/types.d.ts +527 -0
- package/dist/browser-root/hcs-20/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/base-client.d.ts +35 -0
- package/dist/browser-root/hcs-21/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/browser.d.ts +30 -0
- package/dist/browser-root/hcs-21/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/errors.d.ts +6 -0
- package/dist/browser-root/hcs-21/errors.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/index.d.ts +8 -0
- package/dist/browser-root/hcs-21/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/sdk.d.ts +113 -0
- package/dist/browser-root/hcs-21/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/tx.d.ts +24 -0
- package/dist/browser-root/hcs-21/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/types.d.ts +774 -0
- package/dist/browser-root/hcs-21/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-21/verify.d.ts +6 -0
- package/dist/browser-root/hcs-21/verify.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/base-client.d.ts +83 -0
- package/dist/browser-root/hcs-26/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/browser.d.ts +11 -0
- package/dist/browser-root/hcs-26/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/index.d.ts +7 -0
- package/dist/browser-root/hcs-26/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/memos.d.ts +28 -0
- package/dist/browser-root/hcs-26/memos.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/resolver.d.ts +60 -0
- package/dist/browser-root/hcs-26/resolver.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/sdk.d.ts +10 -0
- package/dist/browser-root/hcs-26/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-26/types.d.ts +2752 -0
- package/dist/browser-root/hcs-26/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/base-client.d.ts +41 -0
- package/dist/browser-root/hcs-27/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/index.d.ts +6 -0
- package/dist/browser-root/hcs-27/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/memos.d.ts +5 -0
- package/dist/browser-root/hcs-27/memos.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/merkle.d.ts +23 -0
- package/dist/browser-root/hcs-27/merkle.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/sdk.d.ts +23 -0
- package/dist/browser-root/hcs-27/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-27/types.d.ts +1611 -0
- package/dist/browser-root/hcs-27/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-3/index.d.ts +2 -0
- package/dist/browser-root/hcs-3/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-3/src/index.d.ts +46 -0
- package/dist/browser-root/hcs-3/src/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-3/src/types.d.ts +64 -0
- package/dist/browser-root/hcs-3/src/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/base-client.d.ts +17 -0
- package/dist/browser-root/hcs-5/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/browser.d.ts +20 -0
- package/dist/browser-root/hcs-5/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/index.d.ts +5 -0
- package/dist/browser-root/hcs-5/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/sdk.d.ts +12 -0
- package/dist/browser-root/hcs-5/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/tx.d.ts +12 -0
- package/dist/browser-root/hcs-5/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-5/types.d.ts +53 -0
- package/dist/browser-root/hcs-5/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/base-client.d.ts +110 -0
- package/dist/browser-root/hcs-6/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/browser.d.ts +78 -0
- package/dist/browser-root/hcs-6/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/client.d.ts +2 -0
- package/dist/browser-root/hcs-6/client.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/index.d.ts +6 -0
- package/dist/browser-root/hcs-6/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/sdk.d.ts +34 -0
- package/dist/browser-root/hcs-6/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/tx.d.ts +16 -0
- package/dist/browser-root/hcs-6/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-6/types.d.ts +254 -0
- package/dist/browser-root/hcs-6/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/base-client.d.ts +22 -0
- package/dist/browser-root/hcs-7/base-client.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/browser.d.ts +16 -0
- package/dist/browser-root/hcs-7/browser.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/evm-bridge.d.ts +33 -0
- package/dist/browser-root/hcs-7/evm-bridge.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/index.d.ts +9 -0
- package/dist/browser-root/hcs-7/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/redis-cache.d.ts +26 -0
- package/dist/browser-root/hcs-7/redis-cache.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/sdk.d.ts +18 -0
- package/dist/browser-root/hcs-7/sdk.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/tx.d.ts +31 -0
- package/dist/browser-root/hcs-7/tx.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/types.d.ts +386 -0
- package/dist/browser-root/hcs-7/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-7/wasm-bridge.d.ts +72 -0
- package/dist/browser-root/hcs-7/wasm-bridge.d.ts.map +1 -0
- package/dist/browser-root/index.d.ts +23 -0
- package/dist/browser-root/index.d.ts.map +1 -0
- package/dist/browser-root/inscribe/index.d.ts +4 -0
- package/dist/browser-root/inscribe/index.d.ts.map +1 -0
- package/dist/browser-root/inscribe/inscriber.d.ts +132 -0
- package/dist/browser-root/inscribe/inscriber.d.ts.map +1 -0
- package/dist/browser-root/inscribe/inscription-cost.d.ts +12 -0
- package/dist/browser-root/inscribe/inscription-cost.d.ts.map +1 -0
- package/dist/browser-root/inscribe/quote-cache.d.ts +23 -0
- package/dist/browser-root/inscribe/quote-cache.d.ts.map +1 -0
- package/dist/browser-root/inscribe/types.d.ts +130 -0
- package/dist/browser-root/inscribe/types.d.ts.map +1 -0
- package/dist/browser-root/services/index.d.ts +4 -0
- package/dist/browser-root/services/index.d.ts.map +1 -0
- package/dist/browser-root/services/mirror-node.d.ts +472 -0
- package/dist/browser-root/services/mirror-node.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/agent-communicator.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/agent-communicator.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/index.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/index.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/types.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/agent-communicator/types.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/adapters.d.ts +17 -0
- package/dist/browser-root/services/registry-broker/client/adapters.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/agents.d.ts +13 -0
- package/dist/browser-root/services/registry-broker/client/agents.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts +240 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/chat-history.d.ts +19 -0
- package/dist/browser-root/services/registry-broker/client/chat-history.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/chat.d.ts +32 -0
- package/dist/browser-root/services/registry-broker/client/chat.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/credits.d.ts +36 -0
- package/dist/browser-root/services/registry-broker/client/credits.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/encrypted-chat-manager.d.ts +30 -0
- package/dist/browser-root/services/registry-broker/client/encrypted-chat-manager.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/encryption.d.ts +35 -0
- package/dist/browser-root/services/registry-broker/client/encryption.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/errors.d.ts +19 -0
- package/dist/browser-root/services/registry-broker/client/errors.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/feedback.d.ts +2 -0
- package/dist/browser-root/services/registry-broker/client/feedback.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/ledger-auth.d.ts +7 -0
- package/dist/browser-root/services/registry-broker/client/ledger-auth.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/search.d.ts +17 -0
- package/dist/browser-root/services/registry-broker/client/search.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/skills.d.ts +51 -0
- package/dist/browser-root/services/registry-broker/client/skills.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/utils.d.ts +21 -0
- package/dist/browser-root/services/registry-broker/client/utils.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/verification.d.ts +16 -0
- package/dist/browser-root/services/registry-broker/client/verification.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client.d.ts +4 -0
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/hol-chat-ops.d.ts +24 -0
- package/dist/browser-root/services/registry-broker/hol-chat-ops.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/index.d.ts +6 -0
- package/dist/browser-root/services/registry-broker/index.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/ledger-network.d.ts +12 -0
- package/dist/browser-root/services/registry-broker/ledger-network.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/private-key-signer.d.ts +9 -0
- package/dist/browser-root/services/registry-broker/private-key-signer.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/schemas.d.ts +47886 -0
- package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/types.d.ts +603 -0
- package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -0
- package/dist/browser-root/services/types.d.ts +614 -0
- package/dist/browser-root/services/types.d.ts.map +1 -0
- package/dist/browser-root/standards-sdk.root-browser.js +41763 -0
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -0
- package/dist/browser-root/utils/crypto-abstraction.d.ts +89 -0
- package/dist/browser-root/utils/crypto-abstraction.d.ts.map +1 -0
- package/dist/browser-root/utils/crypto-env.d.ts +25 -0
- package/dist/browser-root/utils/crypto-env.d.ts.map +1 -0
- package/dist/browser-root/utils/dynamic-import.d.ts +7 -0
- package/dist/browser-root/utils/dynamic-import.d.ts.map +1 -0
- package/dist/browser-root/utils/hash-adapter.d.ts +46 -0
- package/dist/browser-root/utils/hash-adapter.d.ts.map +1 -0
- package/dist/browser-root/utils/hrl-resolver.d.ts +62 -0
- package/dist/browser-root/utils/hrl-resolver.d.ts.map +1 -0
- package/dist/browser-root/utils/index.d.ts +22 -0
- package/dist/browser-root/utils/index.d.ts.map +1 -0
- package/dist/browser-root/utils/interactive-terminal.d.ts +42 -0
- package/dist/browser-root/utils/interactive-terminal.d.ts.map +1 -0
- package/dist/browser-root/utils/is-browser.d.ts +5 -0
- package/dist/browser-root/utils/is-browser.d.ts.map +1 -0
- package/dist/browser-root/utils/is-dapp-signer.d.ts +4 -0
- package/dist/browser-root/utils/is-dapp-signer.d.ts.map +1 -0
- package/dist/browser-root/utils/key-type-detector.d.ts +194 -0
- package/dist/browser-root/utils/key-type-detector.d.ts.map +1 -0
- package/dist/browser-root/utils/logger-adapter.d.ts +17 -0
- package/dist/browser-root/utils/logger-adapter.d.ts.map +1 -0
- package/dist/browser-root/utils/logger.d.ts +51 -0
- package/dist/browser-root/utils/logger.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/crypto-parser.d.ts +51 -0
- package/dist/browser-root/utils/parsers/crypto-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/file-parser.d.ts +55 -0
- package/dist/browser-root/utils/parsers/file-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/hcs-parser.d.ts +19 -0
- package/dist/browser-root/utils/parsers/hcs-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/hts-parser.d.ts +56 -0
- package/dist/browser-root/utils/parsers/hts-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/parser-utils.d.ts +14 -0
- package/dist/browser-root/utils/parsers/parser-utils.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/schedule-parser.d.ts +89 -0
- package/dist/browser-root/utils/parsers/schedule-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/scs-parser.d.ts +60 -0
- package/dist/browser-root/utils/parsers/scs-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/parsers/util-parser.d.ts +78 -0
- package/dist/browser-root/utils/parsers/util-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/progress-reporter.d.ts +54 -0
- package/dist/browser-root/utils/progress-reporter.d.ts.map +1 -0
- package/dist/browser-root/utils/sleep.d.ts +2 -0
- package/dist/browser-root/utils/sleep.d.ts.map +1 -0
- package/dist/browser-root/utils/topic-fee-utils.d.ts +12 -0
- package/dist/browser-root/utils/topic-fee-utils.d.ts.map +1 -0
- package/dist/browser-root/utils/topic-id-utils.d.ts +5 -0
- package/dist/browser-root/utils/topic-id-utils.d.ts.map +1 -0
- package/dist/browser-root/utils/transaction-parser-registry.d.ts +31 -0
- package/dist/browser-root/utils/transaction-parser-registry.d.ts.map +1 -0
- package/dist/browser-root/utils/transaction-parser-types.d.ts +568 -0
- package/dist/browser-root/utils/transaction-parser-types.d.ts.map +1 -0
- package/dist/browser-root/utils/transaction-parser.d.ts +147 -0
- package/dist/browser-root/utils/transaction-parser.d.ts.map +1 -0
- package/dist/browser-root/utils/transaction-summary-registry.d.ts +12 -0
- package/dist/browser-root/utils/transaction-summary-registry.d.ts.map +1 -0
- package/dist/browser-root/utils/transaction-type-registries.d.ts +38 -0
- package/dist/browser-root/utils/transaction-type-registries.d.ts.map +1 -0
- package/dist/browser-root/utils/types.d.ts +5 -0
- package/dist/browser-root/utils/types.d.ts.map +1 -0
- package/dist/cjs/browser-root.d.ts +3 -0
- package/dist/cjs/browser-root.d.ts.map +1 -0
- package/dist/cjs/hcs-11/client.d.ts +30 -30
- package/dist/cjs/hcs-11/client.d.ts.map +1 -1
- package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +4 -2
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/encryption.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/search.d.ts +2 -1
- package/dist/cjs/services/registry-broker/client/search.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts +1 -0
- package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/schemas.d.ts +17814 -149
- package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/types.d.ts +36 -1
- package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +3 -3
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
- package/dist/es/browser-root.d.ts +3 -0
- package/dist/es/browser-root.d.ts.map +1 -0
- package/dist/es/hcs-11/client.d.ts +30 -30
- package/dist/es/hcs-11/client.d.ts.map +1 -1
- package/dist/es/inscribe/inscriber.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/base-client.d.ts +4 -2
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/encryption.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/search.d.ts +2 -1
- package/dist/es/services/registry-broker/client/search.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client.d.ts +1 -0
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/schemas.d.ts +17814 -149
- package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
- package/dist/es/services/registry-broker/types.d.ts +36 -1
- package/dist/es/services/registry-broker/types.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +14 -8
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +1 -1
- package/dist/es/standards-sdk.es121.js +1 -1
- package/dist/es/standards-sdk.es127.js +2 -4
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +5 -5
- package/dist/es/standards-sdk.es138.js +1 -1
- package/dist/es/standards-sdk.es139.js +1 -1
- package/dist/es/standards-sdk.es140.js +5 -5
- package/dist/es/standards-sdk.es142.js +5 -4
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +1 -1
- package/dist/es/standards-sdk.es145.js +951 -1500
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +250 -78
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +83 -934
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +2 -4
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +1543 -12461
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +12413 -481
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +15 -71
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +31 -11
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +71 -15
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +538 -160
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +139 -289
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +274 -298
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +262 -369
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +316 -194
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +319 -64
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +61 -157
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +112 -195
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +300 -208
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +246 -106
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +175 -105
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +77 -119
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +3 -5
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es180.js +128 -161
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +110 -123
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +152 -298
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +218 -242
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +232 -145
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +3 -5
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es27.js +24 -7
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +1 -1
- package/dist/es/standards-sdk.es31.js +1 -1
- package/dist/es/standards-sdk.es35.js +2 -5
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +1 -1
- package/dist/es/standards-sdk.es37.js +1 -1
- package/dist/es/standards-sdk.es67.js +2 -4
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +1 -1
- package/dist/es/standards-sdk.es72.js +1 -1
- package/dist/es/standards-sdk.es75.js +1 -1
- package/dist/es/standards-sdk.es84.js +2 -4
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/utils/dynamic-import.d.ts.map +1 -1
- package/package.json +105 -76
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es149.js","sources":["../../src/services/registry-broker/client/base-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n createCipheriv,\n createDecipheriv,\n createHash,\n randomBytes,\n} from 'crypto';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { ZodError, z } from 'zod';\nimport type {\n AgentFeedbackEligibilityRequest,\n AgentFeedbackEligibilityResponse,\n AgentFeedbackIndexResponse,\n AgentFeedbackEntriesIndexResponse,\n AgentFeedbackQuery,\n AgentFeedbackResponse,\n AgentFeedbackSubmissionRequest,\n AgentFeedbackSubmissionResponse,\n AutoTopUpOptions,\n ClientEncryptionOptions,\n CreateSessionRequestPayload,\n DeriveSharedSecretOptions,\n DecryptCipherEnvelopeOptions,\n EncryptCipherEnvelopeOptions,\n EphemeralKeyPair,\n HistoryAutoTopUpOptions,\n InitializeAgentClientOptions,\n JsonObject,\n JsonValue,\n RegisterAgentResponse,\n RegisterAgentPartialResponse,\n RegisterAgentPendingResponse,\n RegisterAgentSuccessResponse,\n RegistryBrokerClientOptions,\n AcceptConversationOptions,\n AcceptEncryptedChatSessionOptions,\n AdapterDetailsResponse,\n AdapterRegistryAdaptersResponse,\n AdapterRegistryCategoriesResponse,\n AdapterRegistryCategory,\n AdapterRegistrySubmitAdapterAcceptedResponse,\n AdapterRegistrySubmissionStatusResponse,\n AdaptersResponse,\n AdditionalRegistryCatalogResponse,\n AgentAuthConfig,\n AgentRegistrationRequest,\n ChatConversationHandle,\n ChatHistoryCompactionResponse,\n ChatHistoryEntry,\n ChatHistoryFetchOptions,\n ChatHistorySnapshotResponse,\n ChatHistorySnapshotWithDecryptedEntries,\n CipherEnvelope,\n CompactHistoryRequestPayload,\n CreateAdapterRegistryCategoryRequest,\n CreateSessionResponse,\n CreditPurchaseResponse,\n DashboardStatsResponse,\n DetectProtocolResponse,\n EncryptionHandshakeRecord,\n EncryptionHandshakeSubmissionPayload,\n EncryptedChatSessionHandle,\n EnsureAgentKeyOptions,\n LedgerAuthenticationOptions,\n LedgerChallengeRequest,\n LedgerChallengeResponse,\n LedgerCredentialAuthOptions,\n LedgerVerifyRequest,\n LedgerVerifyResponse,\n MetricsSummaryResponse,\n MoltbookOwnerRegistrationUpdateRequest,\n MoltbookOwnerRegistrationUpdateResponse,\n PopularSearchesResponse,\n ProtocolDetectionMessage,\n ProtocolsResponse,\n RegisterAgentOptions,\n RegisterAgentQuoteResponse,\n RegisterEncryptionKeyPayload,\n RegisterEncryptionKeyResponse,\n RegistriesResponse,\n RegisterStatusResponse,\n RegistrationProgressRecord,\n RegistrationProgressWaitOptions,\n RegistrySearchByNamespaceResponse,\n RegistryStatsResponse,\n ResolvedAgentResponse,\n SearchFacetsResponse,\n SearchParams,\n SearchResult,\n SearchStatusResponse,\n SendMessageRequestPayload,\n SendMessageResponse,\n SessionEncryptionStatusResponse,\n SessionEncryptionSummary,\n SharedSecretInput,\n StartChatOptions,\n StartConversationOptions,\n StartEncryptedChatSessionOptions,\n SubmitAdapterRegistryAdapterRequest,\n UaidConnectionStatus,\n UaidValidationResponse,\n VectorSearchRequest,\n VectorSearchResponse,\n WebsocketStatsResponse,\n VerificationChallengeDetailsResponse,\n VerificationChallengeResponse,\n VerificationDnsStatusQuery,\n VerificationDnsStatusResponse,\n VerificationDnsVerifyRequest,\n VerificationOwnershipResponse,\n VerificationStatusResponse,\n VerificationVerifyResponse,\n VerificationVerifySenderResponse,\n X402MinimumsResponse,\n SkillRegistryConfigResponse,\n SkillSecurityBreakdownRequest,\n SkillSecurityBreakdownResponse,\n SkillBadgeQuery,\n SkillBadgeResponse,\n SkillCatalogQueryOptions,\n SkillCatalogResponse,\n SkillDeprecationRecord,\n SkillDeprecationSetRequest,\n SkillDeprecationsResponse,\n SkillRegistryJobStatusResponse,\n SkillListOptions,\n SkillRegistryListResponse,\n SkillRegistryCategoriesResponse,\n SkillRegistryMineResponse,\n SkillRegistryMyListResponse,\n SkillRegistryOwnershipResponse,\n SkillRegistryPublishRequest,\n SkillRegistryPublishResponse,\n SkillRegistryQuoteRequest,\n SkillRegistryQuoteResponse,\n SkillRegistryTagsResponse,\n SkillRegistryVoteRequest,\n SkillRegistryVoteStatusResponse,\n SkillRecommendedVersionResponse,\n SkillRecommendedVersionSetRequest,\n SkillResolverManifestResponse,\n SkillRegistryVersionsResponse,\n SkillVerificationDomainProofChallengeRequest,\n SkillVerificationDomainProofChallengeResponse,\n SkillVerificationDomainProofVerifyRequest,\n SkillVerificationDomainProofVerifyResponse,\n SkillVerificationRequestCreateRequest,\n SkillVerificationRequestCreateResponse,\n SkillVerificationStatusResponse,\n} from '../types';\nimport {\n agentFeedbackEligibilityResponseSchema,\n agentFeedbackEntriesIndexResponseSchema,\n agentFeedbackIndexResponseSchema,\n agentFeedbackResponseSchema,\n agentFeedbackSubmissionResponseSchema,\n registerAgentResponseSchema,\n} from '../schemas';\nimport type {\n ConversationContextInput,\n ConversationContextState,\n} from './chat-history';\nimport {\n attachDecryptedHistory as attachDecryptedHistoryImpl,\n decryptHistoryEntryFromContext as decryptHistoryEntryFromContextImpl,\n fetchHistorySnapshot as fetchHistorySnapshotImpl,\n registerConversationContextForEncryption as registerConversationContextForEncryptionImpl,\n resolveDecryptionContext as resolveDecryptionContextImpl,\n} from './chat-history';\nimport type { RegistryBrokerChatApi } from './chat';\nimport {\n acceptConversation as acceptConversationImpl,\n compactHistory as compactHistoryImpl,\n createChatApi,\n createPlaintextConversationHandle as createPlaintextConversationHandleImpl,\n createSession as createSessionImpl,\n endSession as endSessionImpl,\n fetchEncryptionStatus as fetchEncryptionStatusImpl,\n postEncryptionHandshake as postEncryptionHandshakeImpl,\n sendMessage as sendMessageImpl,\n startChat as startChatImpl,\n startConversation as startConversationImpl,\n} from './chat';\nimport { EncryptedChatManager } from './encrypted-chat-manager';\nimport type { RegistryBrokerEncryptionApi } from './encryption';\nimport {\n bootstrapEncryptionOptions as bootstrapEncryptionOptionsImpl,\n createEncryptionApi,\n generateEncryptionKeyPair as generateEncryptionKeyPairImpl,\n} from './encryption';\nimport {\n adapters as adaptersImpl,\n adaptersDetailed as adaptersDetailedImpl,\n adapterRegistryAdapters as adapterRegistryAdaptersImpl,\n adapterRegistryCategories as adapterRegistryCategoriesImpl,\n adapterRegistrySubmissionStatus as adapterRegistrySubmissionStatusImpl,\n createAdapterRegistryCategory as createAdapterRegistryCategoryImpl,\n submitAdapterRegistryAdapter as submitAdapterRegistryAdapterImpl,\n} from './adapters';\nimport {\n closeUaidConnection as closeUaidConnectionImpl,\n dashboardStats as dashboardStatsImpl,\n getRegistrationProgress as getRegistrationProgressImpl,\n getRegistrationQuote as getRegistrationQuoteImpl,\n getUaidConnectionStatus as getUaidConnectionStatusImpl,\n resolveUaid as resolveUaidImpl,\n updateAgent as updateAgentImpl,\n validateUaid as validateUaidImpl,\n waitForRegistrationCompletion as waitForRegistrationCompletionImpl,\n} from './agents';\nimport {\n createVerificationChallenge as createVerificationChallengeImpl,\n getRegisterStatus as getRegisterStatusImpl,\n getVerificationChallenge as getVerificationChallengeImpl,\n getVerificationDnsStatus as getVerificationDnsStatusImpl,\n getVerificationOwnership as getVerificationOwnershipImpl,\n getVerificationStatus as getVerificationStatusImpl,\n registerOwnedMoltbookAgent as registerOwnedMoltbookAgentImpl,\n verifyUaidDnsTxt as verifyUaidDnsTxtImpl,\n verifySenderOwnership as verifySenderOwnershipImpl,\n verifyVerificationChallenge as verifyVerificationChallengeImpl,\n} from './verification';\nimport type {\n BuyCreditsWithX402Params,\n PurchaseCreditsWithX402Params,\n X402PurchaseResult,\n} from './credits';\nimport {\n buyCreditsWithX402 as buyCreditsWithX402Impl,\n getX402Minimums as getX402MinimumsImpl,\n purchaseCreditsWithHbar as purchaseCreditsWithHbarImpl,\n purchaseCreditsWithX402 as purchaseCreditsWithX402Impl,\n} from './credits';\nimport {\n authenticateWithLedger as authenticateWithLedgerImpl,\n authenticateWithLedgerCredentials as authenticateWithLedgerCredentialsImpl,\n createLedgerChallenge as createLedgerChallengeImpl,\n verifyLedgerChallenge as verifyLedgerChallengeImpl,\n} from './ledger-auth';\nimport {\n detectProtocol as detectProtocolImpl,\n facets as facetsImpl,\n getAdditionalRegistries as getAdditionalRegistriesImpl,\n listProtocols as listProtocolsImpl,\n metricsSummary as metricsSummaryImpl,\n popularSearches as popularSearchesImpl,\n registries as registriesImpl,\n registrySearchByNamespace as registrySearchByNamespaceImpl,\n search as searchImpl,\n searchStatus as searchStatusImpl,\n stats as statsImpl,\n vectorSearch as vectorSearchImpl,\n websocketStats as websocketStatsImpl,\n} from './search';\nimport {\n createSkillDomainProofChallenge as createSkillDomainProofChallengeImpl,\n getRecommendedSkillVersion as getRecommendedSkillVersionImpl,\n getSkillBadge as getSkillBadgeImpl,\n getSkillDeprecations as getSkillDeprecationsImpl,\n getSkillOwnership as getSkillOwnershipImpl,\n getSkillPublishJob as getSkillPublishJobImpl,\n getSkillVerificationStatus as getSkillVerificationStatusImpl,\n getSkillVoteStatus as getSkillVoteStatusImpl,\n getSkillSecurityBreakdown as getSkillSecurityBreakdownImpl,\n getSkillsCatalog as getSkillsCatalogImpl,\n getMySkillsList as getMySkillsListImpl,\n listSkillCategories as listSkillCategoriesImpl,\n listSkillTags as listSkillTagsImpl,\n listSkills as listSkillsImpl,\n listMySkills as listMySkillsImpl,\n listSkillVersions as listSkillVersionsImpl,\n publishSkill as publishSkillImpl,\n quoteSkillPublish as quoteSkillPublishImpl,\n resolveSkillManifest as resolveSkillManifestImpl,\n resolveSkillMarkdown as resolveSkillMarkdownImpl,\n requestSkillVerification as requestSkillVerificationImpl,\n setRecommendedSkillVersion as setRecommendedSkillVersionImpl,\n setSkillDeprecation as setSkillDeprecationImpl,\n setSkillVote as setSkillVoteImpl,\n skillsConfig as skillsConfigImpl,\n verifySkillDomainProof as verifySkillDomainProofImpl,\n} from './skills';\nimport {\n createAbortError,\n DEFAULT_BASE_URL,\n DEFAULT_HISTORY_TOP_UP_HBAR,\n DEFAULT_USER_AGENT,\n JSON_CONTENT_TYPE,\n MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,\n isJsonObject,\n isBrowserRuntime,\n normaliseBaseUrl,\n normaliseHeaderName,\n serialiseAgentRegistrationRequest,\n} from './utils';\nimport {\n RegistryBrokerError,\n RegistryBrokerParseError,\n type ErrorDetails,\n} from './errors';\nexport interface InitializedAgentClient {\n client: RegistryBrokerClient;\n encryption?: { publicKey: string; privateKey?: string } | null;\n}\nexport interface GenerateEncryptionKeyPairOptions {\n keyType?: 'secp256k1';\n envVar?: string;\n envPath?: string;\n overwrite?: boolean;\n}\nexport interface RequestConfig {\n method?: string;\n body?: unknown;\n headers?: Record<string, string>;\n}\nexport class RegistryBrokerClient {\n static async initializeAgent(\n options: InitializeAgentClientOptions,\n ): Promise<InitializedAgentClient> {\n const { uaid, ensureEncryptionKey = true, ...clientOptions } = options;\n const client = new RegistryBrokerClient(clientOptions);\n let encryption: { publicKey: string; privateKey?: string } | null = null;\n if (ensureEncryptionKey) {\n const ensureOptions =\n typeof ensureEncryptionKey === 'object'\n ? ensureEncryptionKey\n : { generateIfMissing: true };\n encryption = await client.encryption.ensureAgentKey({\n uaid,\n ...ensureOptions,\n });\n }\n return { client, encryption };\n }\n readonly baseUrl: string;\n readonly fetchImpl: typeof fetch;\n readonly defaultHeaders: Record<string, string>;\n readonly registrationAutoTopUp?: AutoTopUpOptions;\n readonly historyAutoTopUp?: HistoryAutoTopUpOptions;\n readonly encryptionOptions?: ClientEncryptionOptions;\n encryptionBootstrapPromise: Promise<void> | null = null;\n private chatApi: RegistryBrokerChatApi | null = null;\n private encryptedChatManager: EncryptedChatManager | null = null;\n private encryptionApi: RegistryBrokerEncryptionApi | null = null;\n private conversationContexts = new Map<string, ConversationContextState[]>();\n constructor(options: RegistryBrokerClientOptions = {}) {\n const {\n baseUrl = DEFAULT_BASE_URL,\n fetchImplementation,\n defaultHeaders,\n apiKey,\n accountId,\n ledgerApiKey,\n registrationAutoTopUp,\n historyAutoTopUp,\n encryption,\n } = options;\n this.baseUrl = normaliseBaseUrl(baseUrl);\n const resolvedFetch =\n fetchImplementation ??\n (typeof globalThis.fetch === 'function' ? globalThis.fetch : null);\n if (!resolvedFetch) {\n throw new Error(\n 'A fetch implementation is required for RegistryBrokerClient',\n );\n }\n this.fetchImpl = resolvedFetch;\n this.defaultHeaders = {\n ...(defaultHeaders ?? {}),\n };\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n const headerName = normaliseHeaderName(key);\n if (headerName !== key) {\n delete this.defaultHeaders[key];\n this.defaultHeaders[headerName] = value;\n }\n });\n const existingLedgerHeader =\n this.defaultHeaders['x-ledger-api-key']?.trim();\n if (!this.defaultHeaders['x-api-key'] && existingLedgerHeader) {\n this.defaultHeaders['x-api-key'] = existingLedgerHeader;\n }\n if (apiKey) {\n this.defaultHeaders['x-api-key'] = apiKey;\n }\n if (typeof accountId === 'string' && accountId.trim().length > 0) {\n this.defaultHeaders['x-account-id'] = accountId.trim();\n }\n if (ledgerApiKey) {\n if (!this.defaultHeaders['x-api-key']) {\n this.defaultHeaders['x-api-key'] = ledgerApiKey;\n }\n }\n this.registrationAutoTopUp = registrationAutoTopUp;\n this.historyAutoTopUp = historyAutoTopUp;\n this.encryptionOptions = encryption;\n\n if (this.encryptionOptions) {\n this.encryptionBootstrapPromise = this.initializeEncryptionBootstrap(\n this.encryptionOptions,\n );\n }\n }\n\n get chat(): RegistryBrokerChatApi {\n if (this.chatApi) {\n return this.chatApi;\n }\n const api = createChatApi(this, this.getEncryptedChatManager());\n this.chatApi = api;\n return api;\n }\n\n get encryption(): RegistryBrokerEncryptionApi {\n if (this.encryptionApi) {\n return this.encryptionApi;\n }\n const api = createEncryptionApi(this);\n this.encryptionApi = api;\n return api;\n }\n\n setApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-api-key', apiKey);\n }\n\n setLedgerApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-api-key', apiKey);\n delete this.defaultHeaders['x-ledger-api-key'];\n }\n\n setDefaultHeader(name: string, value?: string | null): void {\n if (!name || name.trim().length === 0) {\n return;\n }\n const headerName = normaliseHeaderName(name);\n if (!value || value.trim().length === 0) {\n delete this.defaultHeaders[headerName];\n return;\n }\n this.defaultHeaders[headerName] = value.trim();\n }\n\n getDefaultHeaders(): Record<string, string> {\n return { ...this.defaultHeaders };\n }\n\n async encryptionReady(): Promise<void> {\n if (!this.encryptionBootstrapPromise) {\n return;\n }\n await this.encryptionBootstrapPromise;\n }\n\n buildUrl(path: string): string {\n const normalisedPath = path.startsWith('/') ? path : `/${path}`;\n return `${this.baseUrl}${normalisedPath}`;\n }\n\n async request(path: string, config: RequestConfig): Promise<Response> {\n const headers = new Headers();\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n if (!headers.has('accept')) {\n headers.set('accept', 'application/json');\n }\n if (!headers.has('user-agent') && !isBrowserRuntime()) {\n headers.set('user-agent', DEFAULT_USER_AGENT);\n }\n\n const init: RequestInit = {\n method: config.method ?? 'GET',\n headers,\n };\n\n if (config.body !== undefined) {\n init.body = JSON.stringify(config.body);\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n }\n\n const response = await this.fetchImpl(this.buildUrl(path), init);\n if (response.ok) {\n return response;\n }\n const errorBody = await this.extractErrorBody(response);\n throw new RegistryBrokerError('Registry broker request failed', {\n status: response.status,\n statusText: response.statusText,\n body: errorBody,\n });\n }\n\n async requestJson<T extends JsonValue = JsonValue>(\n path: string,\n config: RequestConfig,\n ): Promise<T> {\n const response = await this.request(path, config);\n const contentType = response.headers?.get('content-type') ?? '';\n if (!JSON_CONTENT_TYPE.test(contentType)) {\n const body = await response.text();\n throw new RegistryBrokerParseError(\n 'Expected JSON response from registry broker',\n body,\n );\n }\n return (await response.json()) as T;\n }\n\n async getAgentFeedback(\n uaid: string,\n options: AgentFeedbackQuery = {},\n ): Promise<AgentFeedbackResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const query = options.includeRevoked === true ? '?includeRevoked=true' : '';\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback${query}`,\n { method: 'GET' },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackResponseSchema,\n 'agent feedback response',\n );\n }\n\n async listAgentFeedbackIndex(\n options: { page?: number; limit?: number; registries?: string[] } = {},\n ): Promise<AgentFeedbackIndexResponse> {\n const params = new URLSearchParams();\n if (typeof options.page === 'number' && Number.isFinite(options.page)) {\n params.set('page', String(Math.trunc(options.page)));\n }\n if (typeof options.limit === 'number' && Number.isFinite(options.limit)) {\n params.set('limit', String(Math.trunc(options.limit)));\n }\n if (options.registries?.length) {\n params.set('registry', options.registries.join(','));\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n\n const raw = await this.requestJson<JsonValue>(`/agents/feedback${suffix}`, {\n method: 'GET',\n });\n return this.parseWithSchema(\n raw,\n agentFeedbackIndexResponseSchema,\n 'agent feedback index response',\n );\n }\n\n async listAgentFeedbackEntriesIndex(\n options: { page?: number; limit?: number; registries?: string[] } = {},\n ): Promise<AgentFeedbackEntriesIndexResponse> {\n const params = new URLSearchParams();\n if (typeof options.page === 'number' && Number.isFinite(options.page)) {\n params.set('page', String(Math.trunc(options.page)));\n }\n if (typeof options.limit === 'number' && Number.isFinite(options.limit)) {\n params.set('limit', String(Math.trunc(options.limit)));\n }\n if (options.registries?.length) {\n params.set('registry', options.registries.join(','));\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n\n const raw = await this.requestJson<JsonValue>(\n `/agents/feedback/entries${suffix}`,\n { method: 'GET' },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackEntriesIndexResponseSchema,\n 'agent feedback entries index response',\n );\n }\n\n async checkAgentFeedbackEligibility(\n uaid: string,\n payload: AgentFeedbackEligibilityRequest,\n ): Promise<AgentFeedbackEligibilityResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback/eligibility`,\n {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackEligibilityResponseSchema,\n 'agent feedback eligibility response',\n );\n }\n\n async submitAgentFeedback(\n uaid: string,\n payload: AgentFeedbackSubmissionRequest,\n ): Promise<AgentFeedbackSubmissionResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback`,\n {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackSubmissionResponseSchema,\n 'agent feedback submission response',\n );\n }\n\n async search(params: SearchParams = {}): Promise<SearchResult> {\n return searchImpl(this, params);\n }\n\n async searchErc8004ByAgentId(params: {\n chainId: number;\n agentId: number | bigint | string;\n limit?: number;\n page?: number;\n sortBy?: string;\n sortOrder?: 'asc' | 'desc' | string;\n }): Promise<SearchResult> {\n const chainId = Math.floor(params.chainId);\n if (!Number.isFinite(chainId) || chainId <= 0) {\n throw new Error('chainId must be a positive integer');\n }\n\n const rawAgentId =\n typeof params.agentId === 'bigint'\n ? params.agentId.toString()\n : String(params.agentId);\n const agentId = rawAgentId.trim();\n if (!agentId) {\n throw new Error('agentId is required');\n }\n\n const nativeId = `${chainId}:${agentId}`;\n\n return searchImpl(this, {\n registries: ['erc-8004'],\n limit: params.limit ?? 1,\n ...(typeof params.page === 'number' ? { page: params.page } : {}),\n ...(typeof params.sortBy === 'string' ? { sortBy: params.sortBy } : {}),\n ...(typeof params.sortOrder === 'string'\n ? { sortOrder: params.sortOrder }\n : {}),\n metadata: {\n nativeId: [nativeId],\n networkKey: [`eip155:${chainId}`],\n },\n });\n }\n\n async stats(): Promise<RegistryStatsResponse> {\n return statsImpl(this);\n }\n\n async registries(): Promise<RegistriesResponse> {\n return registriesImpl(this);\n }\n\n async getAdditionalRegistries(): Promise<AdditionalRegistryCatalogResponse> {\n return getAdditionalRegistriesImpl(this);\n }\n\n async popularSearches(): Promise<PopularSearchesResponse> {\n return popularSearchesImpl(this);\n }\n\n async listProtocols(): Promise<ProtocolsResponse> {\n return listProtocolsImpl(this);\n }\n\n async detectProtocol(\n message: ProtocolDetectionMessage,\n ): Promise<DetectProtocolResponse> {\n return detectProtocolImpl(this, message);\n }\n\n async registrySearchByNamespace(\n registry: string,\n query?: string,\n ): Promise<RegistrySearchByNamespaceResponse> {\n return registrySearchByNamespaceImpl(this, registry, query);\n }\n\n async vectorSearch(\n request: VectorSearchRequest,\n ): Promise<VectorSearchResponse> {\n return vectorSearchImpl(this, request);\n }\n\n async searchStatus(): Promise<SearchStatusResponse> {\n return searchStatusImpl(this);\n }\n\n async websocketStats(): Promise<WebsocketStatsResponse> {\n return websocketStatsImpl(this);\n }\n\n async metricsSummary(): Promise<MetricsSummaryResponse> {\n return metricsSummaryImpl(this);\n }\n\n async facets(adapter?: string): Promise<SearchFacetsResponse> {\n return facetsImpl(this, adapter);\n }\n\n async adapters(): Promise<AdaptersResponse> {\n return adaptersImpl(this);\n }\n\n async skillsConfig(): Promise<SkillRegistryConfigResponse> {\n return skillsConfigImpl(this);\n }\n\n async listSkills(\n options?: SkillListOptions,\n ): Promise<SkillRegistryListResponse> {\n return listSkillsImpl(this, options);\n }\n\n async getSkillSecurityBreakdown(\n params: SkillSecurityBreakdownRequest,\n ): Promise<SkillSecurityBreakdownResponse> {\n return getSkillSecurityBreakdownImpl(this, params);\n }\n\n async getSkillsCatalog(\n options?: SkillCatalogQueryOptions,\n ): Promise<SkillCatalogResponse> {\n return getSkillsCatalogImpl(this, options);\n }\n\n async listSkillVersions(params: {\n name: string;\n }): Promise<SkillRegistryVersionsResponse> {\n return listSkillVersionsImpl(this, params);\n }\n\n async listMySkills(params?: {\n limit?: number;\n }): Promise<SkillRegistryMineResponse> {\n return listMySkillsImpl(this, params);\n }\n\n async getMySkillsList(params?: {\n limit?: number;\n cursor?: string;\n accountId?: string;\n }): Promise<SkillRegistryMyListResponse> {\n return getMySkillsListImpl(this, params);\n }\n\n async quoteSkillPublish(\n payload: SkillRegistryQuoteRequest,\n ): Promise<SkillRegistryQuoteResponse> {\n return quoteSkillPublishImpl(this, payload);\n }\n\n async publishSkill(\n payload: SkillRegistryPublishRequest,\n ): Promise<SkillRegistryPublishResponse> {\n return publishSkillImpl(this, payload);\n }\n\n async getSkillPublishJob(\n jobId: string,\n params?: { accountId?: string },\n ): Promise<SkillRegistryJobStatusResponse> {\n return getSkillPublishJobImpl(this, jobId, params);\n }\n\n async getSkillOwnership(params: {\n name: string;\n accountId?: string;\n }): Promise<SkillRegistryOwnershipResponse> {\n return getSkillOwnershipImpl(this, params);\n }\n\n async getRecommendedSkillVersion(params: {\n name: string;\n }): Promise<SkillRecommendedVersionResponse> {\n return getRecommendedSkillVersionImpl(this, params);\n }\n\n async setRecommendedSkillVersion(\n payload: SkillRecommendedVersionSetRequest,\n ): Promise<SkillRecommendedVersionResponse> {\n return setRecommendedSkillVersionImpl(this, payload);\n }\n\n async getSkillDeprecations(params: {\n name: string;\n }): Promise<SkillDeprecationsResponse> {\n return getSkillDeprecationsImpl(this, params);\n }\n\n async setSkillDeprecation(\n payload: SkillDeprecationSetRequest,\n ): Promise<SkillDeprecationRecord> {\n return setSkillDeprecationImpl(this, payload);\n }\n\n async getSkillBadge(params: SkillBadgeQuery): Promise<SkillBadgeResponse> {\n return getSkillBadgeImpl(this, params);\n }\n\n async listSkillTags(): Promise<SkillRegistryTagsResponse> {\n return listSkillTagsImpl(this);\n }\n\n async listSkillCategories(): Promise<SkillRegistryCategoriesResponse> {\n return listSkillCategoriesImpl(this);\n }\n\n async resolveSkillMarkdown(skillRef: string): Promise<string> {\n return resolveSkillMarkdownImpl(this, skillRef);\n }\n\n async resolveSkillManifest(\n skillRef: string,\n ): Promise<SkillResolverManifestResponse> {\n return resolveSkillManifestImpl(this, skillRef);\n }\n\n async getSkillVoteStatus(params: {\n name: string;\n }): Promise<SkillRegistryVoteStatusResponse> {\n return getSkillVoteStatusImpl(this, params);\n }\n\n async setSkillVote(\n payload: SkillRegistryVoteRequest,\n ): Promise<SkillRegistryVoteStatusResponse> {\n return setSkillVoteImpl(this, payload);\n }\n\n async requestSkillVerification(\n payload: SkillVerificationRequestCreateRequest,\n ): Promise<SkillVerificationRequestCreateResponse> {\n return requestSkillVerificationImpl(this, payload);\n }\n\n async getSkillVerificationStatus(params: {\n name: string;\n version?: string;\n }): Promise<SkillVerificationStatusResponse> {\n return getSkillVerificationStatusImpl(this, params);\n }\n\n async createSkillDomainProofChallenge(\n payload: SkillVerificationDomainProofChallengeRequest,\n ): Promise<SkillVerificationDomainProofChallengeResponse> {\n return createSkillDomainProofChallengeImpl(this, payload);\n }\n\n async verifySkillDomainProof(\n payload: SkillVerificationDomainProofVerifyRequest,\n ): Promise<SkillVerificationDomainProofVerifyResponse> {\n return verifySkillDomainProofImpl(this, payload);\n }\n\n async adaptersDetailed(): Promise<AdapterDetailsResponse> {\n return adaptersDetailedImpl(this);\n }\n\n async adapterRegistryCategories(): Promise<AdapterRegistryCategoriesResponse> {\n return adapterRegistryCategoriesImpl(this);\n }\n\n async adapterRegistryAdapters(filters?: {\n category?: string;\n entity?: string;\n keywords?: string[];\n query?: string;\n limit?: number;\n offset?: number;\n }): Promise<AdapterRegistryAdaptersResponse> {\n return adapterRegistryAdaptersImpl(this, filters);\n }\n\n async createAdapterRegistryCategory(\n payload: CreateAdapterRegistryCategoryRequest,\n ): Promise<AdapterRegistryCategory> {\n return createAdapterRegistryCategoryImpl(this, payload);\n }\n\n async submitAdapterRegistryAdapter(\n payload: SubmitAdapterRegistryAdapterRequest,\n ): Promise<AdapterRegistrySubmitAdapterAcceptedResponse> {\n return submitAdapterRegistryAdapterImpl(this, payload);\n }\n\n async adapterRegistrySubmissionStatus(\n submissionId: string,\n ): Promise<AdapterRegistrySubmissionStatusResponse> {\n return adapterRegistrySubmissionStatusImpl(this, submissionId);\n }\n\n async resolveUaid(uaid: string): Promise<ResolvedAgentResponse> {\n return resolveUaidImpl(this, uaid);\n }\n\n async performRegisterAgent(\n payload: AgentRegistrationRequest,\n ): Promise<RegisterAgentResponse> {\n const raw = await this.requestJson<JsonValue>('/register', {\n method: 'POST',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n });\n return this.parseWithSchema(\n raw,\n registerAgentResponseSchema,\n 'register agent response',\n );\n }\n\n private calculateHbarAmount(\n creditsToPurchase: number,\n creditsPerHbar: number,\n ): number {\n if (creditsPerHbar <= 0) {\n throw new Error('creditsPerHbar must be positive');\n }\n if (creditsToPurchase <= 0) {\n throw new Error('creditsToPurchase must be positive');\n }\n const rawHbar = creditsToPurchase / creditsPerHbar;\n const tinybars = Math.ceil(rawHbar * 1e8);\n return tinybars / 1e8;\n }\n\n private resolveCreditsToPurchase(shortfallCredits: number): number {\n if (!Number.isFinite(shortfallCredits) || shortfallCredits <= 0) {\n return 0;\n }\n return Math.max(\n Math.ceil(shortfallCredits),\n MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,\n );\n }\n\n async ensureCreditsForRegistration(\n payload: AgentRegistrationRequest,\n autoTopUp: RegisterAgentOptions['autoTopUp'],\n ): Promise<void> {\n const details = autoTopUp ?? null;\n if (!details) {\n return;\n }\n\n if (!details.accountId || !details.accountId.trim()) {\n throw new Error('autoTopUp.accountId is required');\n }\n\n if (!details.privateKey || !details.privateKey.trim()) {\n throw new Error('autoTopUp.privateKey is required');\n }\n\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const quote = await this.getRegistrationQuote(payload);\n const shortfall = quote.shortfallCredits ?? 0;\n if (shortfall <= 0) {\n return;\n }\n const creditsToPurchase = this.resolveCreditsToPurchase(shortfall);\n if (creditsToPurchase <= 0) {\n return;\n }\n\n const creditsPerHbar = quote.creditsPerHbar ?? null;\n if (!creditsPerHbar || creditsPerHbar <= 0) {\n throw new Error('Unable to determine credits per HBAR for auto top-up');\n }\n\n const hbarAmount = this.calculateHbarAmount(\n creditsToPurchase,\n creditsPerHbar,\n );\n\n await this.purchaseCreditsWithHbar({\n accountId: details.accountId.trim(),\n privateKey: details.privateKey.trim(),\n hbarAmount,\n memo: details.memo ?? 'Registry Broker auto top-up',\n metadata: {\n shortfallCredits: shortfall,\n requiredCredits: quote.requiredCredits,\n purchasedCredits: creditsToPurchase,\n },\n });\n }\n\n const finalQuote = await this.getRegistrationQuote(payload);\n if ((finalQuote.shortfallCredits ?? 0) > 0) {\n throw new Error('Unable to purchase sufficient credits for registration');\n }\n }\n\n async registerAgent(\n payload: AgentRegistrationRequest,\n options?: RegisterAgentOptions,\n ): Promise<RegisterAgentResponse> {\n const autoTopUp = options?.autoTopUp ?? this.registrationAutoTopUp;\n\n if (!autoTopUp) {\n return this.performRegisterAgent(payload);\n }\n\n await this.ensureCreditsForRegistration(payload, autoTopUp);\n\n let retried = false;\n while (true) {\n try {\n return await this.performRegisterAgent(payload);\n } catch (error) {\n const shortfall = this.extractInsufficientCreditsDetails(error);\n if (shortfall && !retried) {\n await this.ensureCreditsForRegistration(payload, autoTopUp);\n retried = true;\n continue;\n }\n throw error;\n }\n }\n }\n\n async getRegistrationQuote(\n payload: AgentRegistrationRequest,\n ): Promise<RegisterAgentQuoteResponse> {\n return getRegistrationQuoteImpl(this, payload);\n }\n\n async updateAgent(\n uaid: string,\n payload: AgentRegistrationRequest,\n ): Promise<RegisterAgentResponse> {\n return updateAgentImpl(this, uaid, payload);\n }\n\n async getRegisterStatus(uaid: string): Promise<RegisterStatusResponse> {\n return getRegisterStatusImpl(this, uaid);\n }\n\n async registerOwnedMoltbookAgent(\n uaid: string,\n payload: MoltbookOwnerRegistrationUpdateRequest,\n ): Promise<MoltbookOwnerRegistrationUpdateResponse> {\n return registerOwnedMoltbookAgentImpl(this, uaid, payload);\n }\n\n async getRegistrationProgress(\n attemptId: string,\n ): Promise<RegistrationProgressRecord | null> {\n return getRegistrationProgressImpl(this, attemptId);\n }\n\n async waitForRegistrationCompletion(\n attemptId: string,\n options?: RegistrationProgressWaitOptions,\n ): Promise<RegistrationProgressRecord> {\n return waitForRegistrationCompletionImpl(this, attemptId, options);\n }\n\n async validateUaid(uaid: string): Promise<UaidValidationResponse> {\n return validateUaidImpl(this, uaid);\n }\n\n async getUaidConnectionStatus(uaid: string): Promise<UaidConnectionStatus> {\n return getUaidConnectionStatusImpl(this, uaid);\n }\n\n async closeUaidConnection(uaid: string): Promise<void> {\n return closeUaidConnectionImpl(this, uaid);\n }\n\n async dashboardStats(): Promise<DashboardStatsResponse> {\n return dashboardStatsImpl(this);\n }\n\n async purchaseCreditsWithHbar(params: {\n accountId: string;\n privateKey: string;\n hbarAmount: number;\n memo?: string;\n metadata?: JsonObject;\n }): Promise<CreditPurchaseResponse> {\n return purchaseCreditsWithHbarImpl(this, params);\n }\n\n async getX402Minimums(): Promise<X402MinimumsResponse> {\n return getX402MinimumsImpl(this);\n }\n\n async purchaseCreditsWithX402(\n params: PurchaseCreditsWithX402Params,\n ): Promise<X402PurchaseResult> {\n return purchaseCreditsWithX402Impl(this, params);\n }\n\n async buyCreditsWithX402(\n params: BuyCreditsWithX402Params,\n ): Promise<X402PurchaseResult> {\n return buyCreditsWithX402Impl(this, params);\n }\n\n async generateEncryptionKeyPair(\n options: GenerateEncryptionKeyPairOptions = {},\n ): Promise<{\n privateKey: string;\n publicKey: string;\n envPath?: string;\n envVar: string;\n }> {\n return generateEncryptionKeyPairImpl(this, options);\n }\n\n async createLedgerChallenge(\n payload: LedgerChallengeRequest,\n ): Promise<LedgerChallengeResponse> {\n return createLedgerChallengeImpl(this, payload);\n }\n\n async verifyLedgerChallenge(\n payload: LedgerVerifyRequest,\n ): Promise<LedgerVerifyResponse> {\n return verifyLedgerChallengeImpl(this, payload);\n }\n\n async authenticateWithLedger(\n options: LedgerAuthenticationOptions,\n ): Promise<LedgerVerifyResponse> {\n return authenticateWithLedgerImpl(this, options);\n }\n\n async authenticateWithLedgerCredentials(\n options: LedgerCredentialAuthOptions,\n ): Promise<LedgerVerifyResponse> {\n return authenticateWithLedgerCredentialsImpl(this, options);\n }\n\n async getVerificationStatus(\n uaid: string,\n ): Promise<VerificationStatusResponse> {\n return getVerificationStatusImpl(this, uaid);\n }\n\n async createVerificationChallenge(\n uaid: string,\n ): Promise<VerificationChallengeResponse> {\n return createVerificationChallengeImpl(this, uaid);\n }\n\n async getVerificationChallenge(\n challengeId: string,\n ): Promise<VerificationChallengeDetailsResponse> {\n return getVerificationChallengeImpl(this, challengeId);\n }\n\n async verifyVerificationChallenge(params: {\n challengeId: string;\n method?: 'moltbook-post' | string;\n }): Promise<VerificationVerifyResponse> {\n return verifyVerificationChallengeImpl(this, params);\n }\n\n async getVerificationOwnership(\n uaid: string,\n ): Promise<VerificationOwnershipResponse> {\n return getVerificationOwnershipImpl(this, uaid);\n }\n\n async verifySenderOwnership(\n uaid: string,\n ): Promise<VerificationVerifySenderResponse> {\n return verifySenderOwnershipImpl(this, uaid);\n }\n\n async verifyUaidDnsTxt(\n payload: VerificationDnsVerifyRequest,\n ): Promise<VerificationDnsStatusResponse> {\n return verifyUaidDnsTxtImpl(this, payload);\n }\n\n async getVerificationDnsStatus(\n uaid: string,\n query?: VerificationDnsStatusQuery,\n ): Promise<VerificationDnsStatusResponse> {\n return getVerificationDnsStatusImpl(this, uaid, query);\n }\n\n async fetchHistorySnapshot(\n sessionId: string,\n options?: ChatHistoryFetchOptions,\n ): Promise<ChatHistorySnapshotWithDecryptedEntries> {\n return fetchHistorySnapshotImpl(\n this.conversationContexts,\n this,\n sessionId,\n options,\n );\n }\n\n attachDecryptedHistory(\n sessionId: string,\n snapshot: ChatHistorySnapshotResponse,\n options?: ChatHistoryFetchOptions,\n ): ChatHistorySnapshotWithDecryptedEntries {\n return attachDecryptedHistoryImpl(\n this.conversationContexts,\n this,\n sessionId,\n snapshot,\n options,\n );\n }\n\n registerConversationContextForEncryption(\n context: ConversationContextInput,\n ): void {\n registerConversationContextForEncryptionImpl(\n this.conversationContexts,\n context,\n );\n }\n\n resolveDecryptionContext(\n sessionId: string,\n options?: ChatHistoryFetchOptions,\n ): ConversationContextState | null {\n return resolveDecryptionContextImpl(\n this.conversationContexts,\n this,\n sessionId,\n options,\n );\n }\n\n decryptHistoryEntryFromContext(\n _sessionId: string,\n entry: ChatHistoryEntry,\n context: ConversationContextState,\n ): string | null {\n return decryptHistoryEntryFromContextImpl(this, entry, context);\n }\n\n async createSession(\n payload: CreateSessionRequestPayload,\n allowHistoryAutoTopUp = true,\n ): Promise<CreateSessionResponse> {\n return createSessionImpl(this, payload, allowHistoryAutoTopUp);\n }\n\n async startChat(options: StartChatOptions): Promise<ChatConversationHandle> {\n return startChatImpl(this, this.getEncryptedChatManager(), options);\n }\n\n async startConversation(\n options: StartConversationOptions,\n ): Promise<ChatConversationHandle> {\n return startConversationImpl(this, this.getEncryptedChatManager(), options);\n }\n\n async acceptConversation(\n options: AcceptConversationOptions,\n ): Promise<ChatConversationHandle> {\n return acceptConversationImpl(\n this,\n this.getEncryptedChatManager(),\n options,\n );\n }\n\n compactHistory(\n payload: CompactHistoryRequestPayload,\n ): Promise<ChatHistoryCompactionResponse> {\n return compactHistoryImpl(this, payload);\n }\n\n fetchEncryptionStatus(\n sessionId: string,\n ): Promise<SessionEncryptionStatusResponse> {\n return fetchEncryptionStatusImpl(this, sessionId);\n }\n\n postEncryptionHandshake(\n sessionId: string,\n payload: EncryptionHandshakeSubmissionPayload,\n ): Promise<EncryptionHandshakeRecord> {\n return postEncryptionHandshakeImpl(this, sessionId, payload);\n }\n\n sendMessage(\n payload: SendMessageRequestPayload,\n ): Promise<SendMessageResponse> {\n return sendMessageImpl(this, payload);\n }\n\n endSession(sessionId: string): Promise<void> {\n return endSessionImpl(this, sessionId);\n }\n\n createPlaintextConversationHandle(\n sessionId: string,\n summary: SessionEncryptionSummary | null,\n defaultAuth?: AgentAuthConfig,\n context?: { uaid?: string; agentUrl?: string },\n ): ChatConversationHandle {\n return createPlaintextConversationHandleImpl(\n this,\n sessionId,\n summary,\n defaultAuth,\n context,\n );\n }\n\n private getEncryptedChatManager(): EncryptedChatManager {\n if (this.encryptedChatManager) {\n return this.encryptedChatManager;\n }\n const manager = new EncryptedChatManager(this);\n this.encryptedChatManager = manager;\n return manager;\n }\n\n private async extractErrorBody(response: Response): Promise<JsonValue> {\n const contentType = response.headers?.get('content-type') ?? '';\n if (JSON_CONTENT_TYPE.test(contentType)) {\n try {\n return (await response.json()) as JsonValue;\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n try {\n return await response.text();\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n\n parseWithSchema<T>(\n value: JsonValue,\n schema: z.ZodSchema<T>,\n context: string,\n ): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new RegistryBrokerParseError(\n `Failed to parse ${context}`,\n error instanceof ZodError || error instanceof Error\n ? error\n : String(error),\n value,\n );\n }\n }\n\n async delay(ms: number, signal?: AbortSignal): Promise<void> {\n if (ms <= 0) {\n if (signal?.aborted) {\n throw createAbortError();\n }\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n resolve();\n }, ms);\n\n const onAbort = (): void => {\n clearTimeout(timer);\n signal?.removeEventListener('abort', onAbort);\n reject(createAbortError());\n };\n\n if (signal) {\n if (signal.aborted) {\n clearTimeout(timer);\n reject(createAbortError());\n return;\n }\n signal.addEventListener('abort', onAbort, { once: true });\n }\n });\n }\n\n assertNodeRuntime(feature: string): void {\n if (typeof process === 'undefined' || !process.versions?.node) {\n throw new Error(`${feature} is only available in Node.js environments`);\n }\n }\n\n createEphemeralKeyPair(): EphemeralKeyPair {\n this.assertNodeRuntime('generateEphemeralKeyPair');\n const privateKeyBytes = randomBytes(32);\n const publicKey = secp256k1.getPublicKey(privateKeyBytes, true);\n return {\n privateKey: Buffer.from(privateKeyBytes).toString('hex'),\n publicKey: Buffer.from(publicKey).toString('hex'),\n };\n }\n\n deriveSharedSecret(options: DeriveSharedSecretOptions): Buffer {\n this.assertNodeRuntime('deriveSharedSecret');\n const privateKey = this.hexToBuffer(options.privateKey);\n const peerPublicKey = this.hexToBuffer(options.peerPublicKey);\n const shared = secp256k1.getSharedSecret(privateKey, peerPublicKey, true);\n return createHash('sha256').update(Buffer.from(shared)).digest();\n }\n\n buildCipherEnvelope(options: EncryptCipherEnvelopeOptions): CipherEnvelope {\n this.assertNodeRuntime('encryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const iv = randomBytes(12);\n const cipher = createCipheriv('aes-256-gcm', sharedSecret, iv);\n const aadSource = options.associatedData ?? options.sessionId;\n const associatedDataEncoded = aadSource\n ? Buffer.from(aadSource, 'utf8').toString('base64')\n : undefined;\n if (aadSource) {\n cipher.setAAD(Buffer.from(aadSource, 'utf8'));\n }\n const ciphertext = Buffer.concat([\n cipher.update(Buffer.from(options.plaintext, 'utf8')),\n cipher.final(),\n ]);\n const tag = cipher.getAuthTag();\n const payload = Buffer.concat([ciphertext, tag]);\n\n return {\n algorithm: 'aes-256-gcm',\n ciphertext: payload.toString('base64'),\n nonce: iv.toString('base64'),\n associatedData: associatedDataEncoded,\n keyLocator: {\n sessionId: options.sessionId,\n revision: options.revision ?? 1,\n },\n recipients: options.recipients.map(recipient => ({\n ...recipient,\n encryptedShare: '',\n })),\n };\n }\n\n openCipherEnvelope(options: DecryptCipherEnvelopeOptions): string {\n this.assertNodeRuntime('decryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const payload = Buffer.from(options.envelope.ciphertext, 'base64');\n const nonce = Buffer.from(options.envelope.nonce, 'base64');\n const ciphertext = payload.slice(0, payload.length - 16);\n const tag = payload.slice(payload.length - 16);\n const decipher = createDecipheriv('aes-256-gcm', sharedSecret, nonce);\n if (options.envelope.associatedData) {\n decipher.setAAD(Buffer.from(options.envelope.associatedData, 'base64'));\n }\n decipher.setAuthTag(tag);\n const plaintext = Buffer.concat([\n decipher.update(ciphertext),\n decipher.final(),\n ]);\n return plaintext.toString(options.encoding ?? 'utf8');\n }\n\n normalizeSharedSecret(input: SharedSecretInput): Buffer {\n if (Buffer.isBuffer(input)) {\n return Buffer.from(input);\n }\n if (input instanceof Uint8Array) {\n return Buffer.from(input);\n }\n if (typeof input === 'string') {\n return this.bufferFromString(input);\n }\n throw new Error('Unsupported shared secret input');\n }\n\n bufferFromString(value: string): Buffer {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error('sharedSecret string cannot be empty');\n }\n const normalized = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;\n if (/^[0-9a-fA-F]+$/.test(normalized) && normalized.length % 2 === 0) {\n return Buffer.from(normalized, 'hex');\n }\n return Buffer.from(trimmed, 'base64');\n }\n\n hexToBuffer(value: string): Uint8Array {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n if (!/^[0-9a-fA-F]+$/.test(normalized) || normalized.length % 2 !== 0) {\n throw new Error('Expected hex-encoded value');\n }\n return Buffer.from(normalized, 'hex');\n }\n\n extractInsufficientCreditsDetails(error: unknown): {\n shortfallCredits: number;\n } | null {\n if (!(error instanceof RegistryBrokerError) || error.status !== 402) {\n return null;\n }\n\n const body = error.body;\n if (!body || typeof body !== 'object' || Array.isArray(body)) {\n return null;\n }\n\n const maybeShortfall = (body as JsonObject)['shortfallCredits'];\n if (typeof maybeShortfall !== 'number' || maybeShortfall <= 0) {\n return null;\n }\n\n return { shortfallCredits: maybeShortfall };\n }\n\n private extractErrorMessage(body: JsonValue): string | undefined {\n if (typeof body === 'string') {\n return body;\n }\n if (isJsonObject(body) && typeof body.error === 'string') {\n return body.error;\n }\n if (isJsonObject(body) && typeof body.message === 'string') {\n return body.message;\n }\n return undefined;\n }\n\n shouldAutoTopUpHistory(\n payload: CreateSessionRequestPayload,\n error: Error | null,\n ): boolean {\n if (!this.historyAutoTopUp || payload.historyTtlSeconds === undefined) {\n return false;\n }\n if (!(error instanceof RegistryBrokerError)) {\n return false;\n }\n if (error.status !== 402) {\n return false;\n }\n const message = this.extractErrorMessage(error.body);\n if (!message) {\n return true;\n }\n const normalised = message.toLowerCase();\n return (\n normalised.includes('history') || normalised.includes('chat history')\n );\n }\n\n async executeHistoryAutoTopUp(reason: string): Promise<void> {\n if (!this.historyAutoTopUp) {\n return;\n }\n const hbarAmount =\n this.historyAutoTopUp.hbarAmount && this.historyAutoTopUp.hbarAmount > 0\n ? this.historyAutoTopUp.hbarAmount\n : DEFAULT_HISTORY_TOP_UP_HBAR;\n await this.purchaseCreditsWithHbar({\n accountId: this.historyAutoTopUp.accountId,\n privateKey: this.historyAutoTopUp.privateKey,\n hbarAmount,\n memo:\n this.historyAutoTopUp.memo ??\n 'registry-broker-client:chat-history-topup',\n metadata: {\n purpose: 'chat-history',\n reason,\n },\n });\n }\n\n initializeEncryptionBootstrap(\n options: ClientEncryptionOptions,\n ): Promise<void> {\n return this.bootstrapEncryptionOptions(options).then((): void => undefined);\n }\n\n bootstrapEncryptionOptions(\n options?: ClientEncryptionOptions,\n ): Promise<{ publicKey: string; privateKey?: string } | null> {\n return bootstrapEncryptionOptionsImpl(this, options);\n }\n}\n\nexport const isPendingRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPendingResponse => response.status === 'pending';\n\nexport const isPartialRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPartialResponse =>\n response.status === 'partial' && response.success === false;\n\nexport const isSuccessRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentSuccessResponse =>\n response.success === true && response.status !== 'pending';\n"],"names":["searchImpl","statsImpl","registriesImpl","getAdditionalRegistriesImpl","popularSearchesImpl","listProtocolsImpl","detectProtocolImpl","registrySearchByNamespaceImpl","vectorSearchImpl","searchStatusImpl","websocketStatsImpl","metricsSummaryImpl","facetsImpl","adaptersImpl","skillsConfigImpl","listSkillsImpl","getSkillSecurityBreakdownImpl","getSkillsCatalogImpl","listSkillVersionsImpl","listMySkillsImpl","getMySkillsListImpl","quoteSkillPublishImpl","publishSkillImpl","getSkillPublishJobImpl","getSkillOwnershipImpl","getRecommendedSkillVersionImpl","setRecommendedSkillVersionImpl","getSkillDeprecationsImpl","setSkillDeprecationImpl","getSkillBadgeImpl","listSkillTagsImpl","listSkillCategoriesImpl","resolveSkillMarkdownImpl","resolveSkillManifestImpl","getSkillVoteStatusImpl","setSkillVoteImpl","requestSkillVerificationImpl","getSkillVerificationStatusImpl","createSkillDomainProofChallengeImpl","verifySkillDomainProofImpl","adaptersDetailedImpl","adapterRegistryCategoriesImpl","adapterRegistryAdaptersImpl","createAdapterRegistryCategoryImpl","submitAdapterRegistryAdapterImpl","adapterRegistrySubmissionStatusImpl","resolveUaidImpl","getRegistrationQuoteImpl","updateAgentImpl","getRegisterStatusImpl","registerOwnedMoltbookAgentImpl","getRegistrationProgressImpl","waitForRegistrationCompletionImpl","validateUaidImpl","getUaidConnectionStatusImpl","closeUaidConnectionImpl","dashboardStatsImpl","purchaseCreditsWithHbarImpl","getX402MinimumsImpl","purchaseCreditsWithX402Impl","buyCreditsWithX402Impl","generateEncryptionKeyPairImpl","createLedgerChallengeImpl","verifyLedgerChallengeImpl","authenticateWithLedgerImpl","authenticateWithLedgerCredentialsImpl","getVerificationStatusImpl","createVerificationChallengeImpl","getVerificationChallengeImpl","verifyVerificationChallengeImpl","getVerificationOwnershipImpl","verifySenderOwnershipImpl","verifyUaidDnsTxtImpl","getVerificationDnsStatusImpl","fetchHistorySnapshotImpl","attachDecryptedHistoryImpl","registerConversationContextForEncryptionImpl","resolveDecryptionContextImpl","decryptHistoryEntryFromContextImpl","createSessionImpl","startChatImpl","startConversationImpl","acceptConversationImpl","compactHistoryImpl","fetchEncryptionStatusImpl","postEncryptionHandshakeImpl","sendMessageImpl","endSessionImpl","createPlaintextConversationHandleImpl","bootstrapEncryptionOptionsImpl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es149.js","sources":["../../src/services/registry-broker/ledger-network.ts"],"sourcesContent":["type HederaNetwork = 'mainnet' | 'testnet';\ntype LedgerNetworkKind = 'hedera' | 'evm';\n\nexport interface CanonicalLedgerNetwork {\n canonical: string;\n kind: LedgerNetworkKind;\n hederaNetwork?: HederaNetwork;\n chainId?: number;\n legacyName?: string;\n}\n\nconst normalise = (value: string): string => value.trim().toLowerCase();\n\nconst HEDERA_NETWORK_ALIASES = new Map<\n string,\n { canonical: `hedera:${HederaNetwork}`; hederaNetwork: HederaNetwork }\n>([\n ['hedera:mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera-mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera_mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera:testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['hedera-testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['hedera_testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n]);\n\nconst EVM_NETWORK_CHAIN_IDS: Record<string, number> = {\n abstract: 2741,\n 'abstract-testnet': 11124,\n base: 8453,\n 'base-sepolia': 84532,\n avalanche: 43114,\n 'avalanche-fuji': 43113,\n iotex: 4689,\n sei: 1329,\n 'sei-testnet': 1328,\n polygon: 137,\n 'polygon-amoy': 80002,\n peaq: 3338,\n};\n\nconst CHAIN_ID_TO_ALIAS = new Map<number, string>(\n Object.entries(EVM_NETWORK_CHAIN_IDS).map(([alias, id]) => [id, alias]),\n);\n\nconst parseChainId = (value: string): number | undefined => {\n if (/^eip155:\\d+$/i.test(value)) {\n return Number.parseInt(value.split(':')[1]!, 10);\n }\n if (/^\\d+$/.test(value)) {\n return Number.parseInt(value, 10);\n }\n return undefined;\n};\n\nconst normaliseEvmNetwork = (value: string): CanonicalLedgerNetwork => {\n const trimmed = normalise(value);\n let chainId = parseChainId(trimmed);\n let alias: string | undefined;\n\n if (chainId === undefined) {\n const mapped = EVM_NETWORK_CHAIN_IDS[trimmed];\n if (mapped !== undefined) {\n chainId = mapped;\n alias = trimmed;\n }\n } else if (CHAIN_ID_TO_ALIAS.has(chainId)) {\n alias = CHAIN_ID_TO_ALIAS.get(chainId);\n }\n\n if (chainId === undefined) {\n throw new Error(\n 'Unsupported EVM ledger network. Provide an alias like \"base-sepolia\" or a canonical eip155:<chainId> string.',\n );\n }\n\n return {\n canonical: `eip155:${chainId}`,\n kind: 'evm',\n chainId,\n legacyName: alias,\n };\n};\n\nconst normaliseHederaNetwork = (value: string): CanonicalLedgerNetwork => {\n const trimmed = normalise(value);\n const mapping = HEDERA_NETWORK_ALIASES.get(trimmed);\n if (!mapping) {\n throw new Error(\n 'Unsupported Hedera network. Use hedera:mainnet or hedera:testnet (legacy \"mainnet\"/\"testnet\" also accepted).',\n );\n }\n return {\n canonical: mapping.canonical,\n kind: 'hedera',\n hederaNetwork: mapping.hederaNetwork,\n };\n};\n\nexport const canonicalizeLedgerNetwork = (\n network: string,\n): CanonicalLedgerNetwork => {\n if (typeof network !== 'string' || network.trim().length === 0) {\n throw new Error('Ledger network is required.');\n }\n const trimmed = normalise(network);\n if (\n trimmed.startsWith('hedera:') ||\n trimmed.includes('hedera-') ||\n trimmed.includes('hedera_') ||\n trimmed === 'mainnet' ||\n trimmed === 'testnet'\n ) {\n return normaliseHederaNetwork(trimmed);\n }\n return normaliseEvmNetwork(trimmed);\n};\n"],"names":[],"mappings":"AAWA,MAAM,YAAY,CAAC,UAA0B,MAAM,KAAA,EAAO,YAAA;AAE1D,MAAM,6CAA6B,IAGjC;AAAA,EACA,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,WAAW,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EACrE,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,WAAW,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EACrE,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAC9E,CAAC;AAED,MAAM,wBAAgD;AAAA,EACpD,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,MAAM;AACR;AAEA,MAAM,oBAAoB,IAAI;AAAA,EAC5B,OAAO,QAAQ,qBAAqB,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;AACxE;AAEA,MAAM,eAAe,CAAC,UAAsC;AAC1D,MAAI,gBAAgB,KAAK,KAAK,GAAG;AAC/B,WAAO,OAAO,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC,GAAI,EAAE;AAAA,EACjD;AACA,MAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,WAAO,OAAO,SAAS,OAAO,EAAE;AAAA,EAClC;AACA,SAAO;AACT;AAEA,MAAM,sBAAsB,CAAC,UAA0C;AACrE,QAAM,UAAU,UAAU,KAAK;AAC/B,MAAI,UAAU,aAAa,OAAO;AAClC,MAAI;AAEJ,MAAI,YAAY,QAAW;AACzB,UAAM,SAAS,sBAAsB,OAAO;AAC5C,QAAI,WAAW,QAAW;AACxB,gBAAU;AACV,cAAQ;AAAA,IACV;AAAA,EACF,WAAW,kBAAkB,IAAI,OAAO,GAAG;AACzC,YAAQ,kBAAkB,IAAI,OAAO;AAAA,EACvC;AAEA,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL,WAAW,UAAU,OAAO;AAAA,IAC5B,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,EAAA;AAEhB;AAEA,MAAM,yBAAyB,CAAC,UAA0C;AACxE,QAAM,UAAU,UAAU,KAAK;AAC/B,QAAM,UAAU,uBAAuB,IAAI,OAAO;AAClD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO;AAAA,IACL,WAAW,QAAQ;AAAA,IACnB,MAAM;AAAA,IACN,eAAe,QAAQ;AAAA,EAAA;AAE3B;AAEO,MAAM,4BAA4B,CACvC,YAC2B;AAC3B,MAAI,OAAO,YAAY,YAAY,QAAQ,KAAA,EAAO,WAAW,GAAG;AAC9D,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,QAAM,UAAU,UAAU,OAAO;AACjC,MACE,QAAQ,WAAW,SAAS,KAC5B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,YAAY,aACZ,YAAY,WACZ;AACA,WAAO,uBAAuB,OAAO;AAAA,EACvC;AACA,SAAO,oBAAoB,OAAO;AACpC;"}
|
|
@@ -3,13 +3,11 @@ import { Registration } from "./standards-sdk.es20.js";
|
|
|
3
3
|
import { HCS11Client } from "./standards-sdk.es27.js";
|
|
4
4
|
import { PublicKey } from "@hashgraph/sdk";
|
|
5
5
|
import { HederaMirrorNode } from "./standards-sdk.es144.js";
|
|
6
|
-
import "path";
|
|
7
6
|
import "buffer";
|
|
8
|
-
import "crypto";
|
|
9
7
|
import "@noble/curves/secp256k1.js";
|
|
10
|
-
import "./standards-sdk.es145.js";
|
|
11
|
-
import "./standards-sdk.es147.js";
|
|
12
8
|
import "zod";
|
|
9
|
+
import "./standards-sdk.es160.js";
|
|
10
|
+
import "./standards-sdk.es149.js";
|
|
13
11
|
import { buildHcs10SubmitConnectionRequestTx, buildHcs10OutboundConnectionRequestRecordTx, buildHcs10OutboundConnectionCreatedRecordTx } from "./standards-sdk.es22.js";
|
|
14
12
|
import { HRLResolver } from "./standards-sdk.es127.js";
|
|
15
13
|
var Hcs10MemoType = /* @__PURE__ */ ((Hcs10MemoType2) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es16.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel, ILogger } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport {\n AccountResponse,\n HCSMessageWithCommonFields,\n TopicResponse,\n} from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport {\n TransactionReceipt,\n PrivateKey,\n PublicKey,\n TopicMessageSubmitTransaction,\n} from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode, MirrorNodeConfig } from '../services';\nimport {\n WaitForConnectionConfirmationResponse,\n TransactMessage,\n} from './types';\nimport {\n buildHcs10SubmitConnectionRequestTx,\n buildHcs10OutboundConnectionRequestRecordTx,\n buildHcs10OutboundConnectionCreatedRecordTx,\n} from './tx';\nimport { HRLResolver } from '../utils/hrl-resolver';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n REGISTRY = 'registry',\n}\n\n/**\n * Configuration for HCS-10 client.\n *\n * @example\n * // Using default Hedera mirror nodes\n * const config = {\n * network: 'testnet',\n * logLevel: 'info'\n * };\n *\n * @example\n * // Using HGraph custom mirror node provider\n * const config = {\n * network: 'mainnet',\n * logLevel: 'info',\n * mirrorNode: {\n * customUrl: 'https://mainnet.hedera.api.hgraph.dev/v1/<API-KEY>',\n * apiKey: 'your-hgraph-api-key'\n * }\n * };\n *\n * @example\n * // Using custom mirror node with headers\n * const config = {\n * network: 'testnet',\n * mirrorNode: {\n * customUrl: 'https://custom-mirror.example.com',\n * apiKey: 'your-api-key',\n * headers: {\n * 'X-Custom-Header': 'value'\n * }\n * }\n * };\n */\nexport interface HCS10Config {\n /** The Hedera network to connect to */\n network: 'mainnet' | 'testnet';\n /** Log level for the client */\n logLevel?: LogLevel;\n /** Whether to pretty print logs */\n prettyPrint?: boolean;\n /** Fee amount for transactions that require fees */\n feeAmount?: number;\n /** Custom mirror node configuration */\n mirrorNode?: MirrorNodeConfig;\n /** Whether to run logger in silent mode */\n silent?: boolean;\n /** The key type to use for the operator */\n keyType?: 'ed25519' | 'ecdsa';\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected logger: ILogger;\n protected feeAmount: number;\n public mirrorNode: HederaMirrorNode;\n public network: string;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n silent: config.silent,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger,\n config.mirrorNode,\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicOrTransaction: string | TopicMessageSubmitTransaction,\n payload?: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean,\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n /**\n * Updates the mirror node configuration.\n * @param config The new mirror node configuration.\n */\n public configureMirrorNode(config: MirrorNodeConfig): void {\n this.mirrorNode.configureMirrorNode(config);\n this.logger.info('Mirror node configuration updated');\n }\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @param options Optional filtering options for messages\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<{ messages: HCSMessageWithCommonFields[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n const validOps = ['message', 'close_connection', 'transaction'];\n\n const filteredMessages = messages.filter(msg => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message' || msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n\n if (msg.op === 'message' && !msg.data) {\n return false;\n }\n }\n\n if (msg.op === 'transaction') {\n if (!msg.operator_id || !msg.schedule_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error,\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string,\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey,\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @param options Optional filtering options for messages\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<{ messages: HCSMessageWithCommonFields[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n\n const validatedMessages = messages.filter(msg => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n if (!account) {\n throw new Error('Account ID is required');\n }\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @param retryOptions Optional retry configuration\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean,\n retryOptions?: {\n maxRetries?: number;\n retryDelay?: number;\n },\n ): Promise<ProfileResponse> {\n const maxRetries = retryOptions?.maxRetries ?? 0;\n const retryDelay = retryOptions?.retryDelay ?? 3000;\n let retryCount = 0;\n\n while (retryCount <= maxRetries) {\n this.logger.debug(\n `Retrieving profile for account: ${accountId}${retryCount > 0 ? ` (attempt ${retryCount + 1}/${maxRetries + 1})` : ''}`,\n );\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache && retryCount === 0) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0',\n },\n logLevel: this.logger.getLevel(),\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network,\n );\n\n if (!profileResult?.success) {\n if (retryCount < maxRetries) {\n this.logger.info(\n `Profile not found for account ${accountId}, retrying in ${retryDelay}ms... (${profileResult?.error})`,\n );\n retryCount++;\n await new Promise(resolve => setTimeout(resolve, retryDelay));\n continue;\n }\n\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error,\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult?.profile;\n let topicInfo: TopicInfo | null = null;\n const inboundTopic =\n profileResult?.topicInfo?.inboundTopic ||\n profile?.inboundTopicId ||\n '';\n const outboundTopic =\n profileResult?.topicInfo?.outboundTopic ||\n profile?.outboundTopicId ||\n '';\n const profileTopicId = profileResult?.topicInfo?.profileTopicId || '';\n if (inboundTopic && outboundTopic) {\n topicInfo = {\n inboundTopic,\n outboundTopic,\n profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (e: any) {\n if (retryCount < maxRetries) {\n this.logger.info(\n `Error retrieving profile for account ${accountId}, retrying in ${retryDelay}ms... (${e.message})`,\n );\n retryCount++;\n await new Promise(resolve => setTimeout(resolve, retryDelay));\n continue;\n }\n\n const error = e as Error;\n const logMessage = `Failed to retrieve profile: ${error.message}`;\n this.logger.error(logMessage);\n return {\n profile: null,\n success: false,\n error: logMessage,\n };\n }\n }\n\n return {\n profile: null,\n success: false,\n error: 'Unexpected error in profile retrieval',\n };\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string,\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @param retryOptions Optional retry configuration\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean,\n retryOptions?: {\n maxRetries?: number;\n retryDelay?: number;\n },\n ): Promise<TopicInfo> {\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache,\n retryOptions,\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile) {\n throw new Error(\n `Profile is null or undefined for account ${accountId}`,\n );\n }\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`,\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`,\n );\n }\n\n return profileResponse.topicInfo;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve topic info: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @param options Optional filtering options for messages\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<HCSMessageWithCommonFields[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`,\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic, options);\n return response.messages.filter(\n msg =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message'),\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve outbound messages: ${error.message}`;\n this.logger.error(logMessage);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number,\n ): Promise<boolean> {\n try {\n const outBoundTopic =\n await this.retrieveCommunicationTopics(agentAccountId);\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic,\n );\n return messages.some(\n msg =>\n msg.op === 'connection_created' && msg.connection_id === connectionId,\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to check connection created: ${error.message}`;\n this.logger.error(logMessage);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content\n */\n async getMessageContent(\n data: string,\n forceRaw = false,\n ): Promise<string | ArrayBuffer> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return data;\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n if (!resolver.isValidHRL(data)) {\n return data;\n }\n\n const result = await resolver.resolveHRL(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n\n return result.content;\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 /**\n * Gets message content with its content type, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content along with content type information\n */\n async getMessageContentWithType(\n data: string,\n forceRaw = false,\n ): Promise<{\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n }> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return {\n content: data,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n return await resolver.getContentWithType(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference with type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string,\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId,\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner =\n await this.retrieveInboundAccountId(inboundTopicId);\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const requiresFee = submissionCheck.requiresFee;\n\n const connectionRequestTx = buildHcs10SubmitConnectionRequestTx({\n inboundTopicId,\n operatorId,\n memo,\n });\n\n const response = await this.submitPayload(\n connectionRequestTx,\n undefined,\n undefined,\n requiresFee,\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`,\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n const outboundRecordTx = buildHcs10OutboundConnectionRequestRecordTx({\n outboundTopicId: outboundTopic.outboundTopic,\n operatorId: requestorOperatorId,\n connectionRequestId: responseSequenceNumber,\n memo,\n });\n\n await this.submitPayload(outboundRecordTx);\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const transaction = buildHcs10OutboundConnectionCreatedRecordTx({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionTopicId,\n confirmedRequestId,\n connectionRequestId,\n operatorId,\n memo,\n });\n return await this.submitPayload(transaction);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true,\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`,\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId, {\n order: 'desc',\n limit: 100,\n });\n\n const connectionCreatedMessages = messages.filter(\n m => m.op === 'connection_created',\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`,\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy,\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult,\n );\n\n if (recordConfirmation) {\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`,\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse?.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile?.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n if (!profile?.topicInfo?.inboundTopic) {\n throw new Error('Failed to retrieve inbound topic');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string,\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n },\n ): string {\n const ttl = options.ttl ?? 60;\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo',\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n /**\n * Reads a topic's memo and determines its HCS-10 type\n * @param topicId The topic ID to check\n * @returns The HCS-10 memo type or null if not an HCS-10 topic\n */\n public async getTopicMemoType(\n topicId: string,\n ): Promise<Hcs10MemoType | null> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo?.memo) {\n this.logger.debug(`No memo found for topic ${topicId}`);\n return null;\n }\n\n const memo = topicInfo.memo.toString();\n\n if (!memo.startsWith('hcs-10:')) {\n this.logger.debug(`Topic ${topicId} is not an HCS-10 topic`);\n return null;\n }\n\n const parts = memo.split(':');\n if (parts.length < 4) {\n this.logger.warn(\n `Invalid HCS-10 memo format for topic ${topicId}: ${memo}`,\n );\n return null;\n }\n\n const typeEnum = parts[3];\n\n switch (typeEnum) {\n case '0':\n return Hcs10MemoType.INBOUND;\n case '1':\n return Hcs10MemoType.OUTBOUND;\n case '2':\n return Hcs10MemoType.CONNECTION;\n case '3':\n return Hcs10MemoType.REGISTRY;\n default:\n this.logger.warn(\n `Unknown HCS-10 type enum: ${typeEnum} for topic ${topicId}`,\n );\n return null;\n }\n } catch (error) {\n this.logger.error(`Error getting topic memo type for ${topicId}:`, error);\n return null;\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string,\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`,\n );\n }\n\n return await response.json();\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error checking registration status: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieves all transaction requests from a topic\n * @param topicId The topic ID to retrieve transactions from\n * @param options Optional filtering and retrieval options\n * @returns Array of transaction requests sorted by timestamp (newest first)\n */\n public async getTransactionRequests(\n topicId: string,\n options?: {\n limit?: number;\n sequenceNumber?: string | number;\n order?: 'asc' | 'desc';\n },\n ): Promise<TransactMessage[]> {\n this.logger.debug(`Retrieving transaction requests from topic ${topicId}`);\n\n const { messages } = await this.getMessageStream(topicId, {\n limit: options?.limit,\n sequenceNumber: options?.sequenceNumber,\n order: options?.order || 'desc',\n });\n\n const transactOperations = (\n messages\n .filter(m => m.op === 'transaction' && m.schedule_id)\n .map(m => ({\n operator_id: m.operator_id || '',\n schedule_id: m.schedule_id || '',\n data: m.data || '',\n memo: m.m,\n sequence_number: Number(m.sequence_number),\n })) as unknown as TransactMessage[]\n ).sort((a, b) => {\n if (a.sequence_number && b.sequence_number) {\n return b.sequence_number - a.sequence_number;\n }\n return 0;\n });\n\n const result = options?.limit\n ? transactOperations.slice(0, options.limit)\n : transactOperations;\n\n return result;\n }\n\n /**\n * Gets the HCS-10 transaction memo for analytics based on the operation type\n * @param payload The operation payload\n * @returns The transaction memo in format hcs-10:op:{operation_enum}:{topic_type_enum}\n */\n protected getHcs10TransactionMemo(payload: object | string): string | null {\n if (typeof payload !== 'object' || !('op' in payload)) {\n return null;\n }\n\n const typedPayload = payload as HCSMessageWithCommonFields;\n const operation = typedPayload.op;\n let operationEnum: string;\n let topicTypeEnum: string;\n\n switch (operation) {\n case 'register':\n operationEnum = '0';\n topicTypeEnum = '0';\n break;\n case 'delete':\n operationEnum = '1';\n topicTypeEnum = '0';\n break;\n case 'migrate':\n operationEnum = '2';\n topicTypeEnum = '0';\n break;\n case 'connection_request':\n operationEnum = '3';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '1';\n break;\n case 'connection_created':\n operationEnum = '4';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '1';\n break;\n case 'connection_closed':\n operationEnum = '5';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '3';\n break;\n case 'message':\n operationEnum = '6';\n topicTypeEnum = '3';\n break;\n case 'close_connection':\n operationEnum = '5';\n topicTypeEnum = '3';\n break;\n case 'transaction':\n operationEnum = '6';\n topicTypeEnum = '3';\n break;\n default:\n operationEnum = '6';\n topicTypeEnum = '3';\n }\n\n return `hcs-10:op:${operationEnum}:${topicTypeEnum}`;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es16.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel, ILogger } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport {\n AccountResponse,\n HCSMessageWithCommonFields,\n TopicResponse,\n} from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport {\n TransactionReceipt,\n PrivateKey,\n PublicKey,\n TopicMessageSubmitTransaction,\n} from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode, MirrorNodeConfig } from '../services';\nimport {\n WaitForConnectionConfirmationResponse,\n TransactMessage,\n} from './types';\nimport {\n buildHcs10SubmitConnectionRequestTx,\n buildHcs10OutboundConnectionRequestRecordTx,\n buildHcs10OutboundConnectionCreatedRecordTx,\n} from './tx';\nimport { HRLResolver } from '../utils/hrl-resolver';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n REGISTRY = 'registry',\n}\n\n/**\n * Configuration for HCS-10 client.\n *\n * @example\n * // Using default Hedera mirror nodes\n * const config = {\n * network: 'testnet',\n * logLevel: 'info'\n * };\n *\n * @example\n * // Using HGraph custom mirror node provider\n * const config = {\n * network: 'mainnet',\n * logLevel: 'info',\n * mirrorNode: {\n * customUrl: 'https://mainnet.hedera.api.hgraph.dev/v1/<API-KEY>',\n * apiKey: 'your-hgraph-api-key'\n * }\n * };\n *\n * @example\n * // Using custom mirror node with headers\n * const config = {\n * network: 'testnet',\n * mirrorNode: {\n * customUrl: 'https://custom-mirror.example.com',\n * apiKey: 'your-api-key',\n * headers: {\n * 'X-Custom-Header': 'value'\n * }\n * }\n * };\n */\nexport interface HCS10Config {\n /** The Hedera network to connect to */\n network: 'mainnet' | 'testnet';\n /** Log level for the client */\n logLevel?: LogLevel;\n /** Whether to pretty print logs */\n prettyPrint?: boolean;\n /** Fee amount for transactions that require fees */\n feeAmount?: number;\n /** Custom mirror node configuration */\n mirrorNode?: MirrorNodeConfig;\n /** Whether to run logger in silent mode */\n silent?: boolean;\n /** The key type to use for the operator */\n keyType?: 'ed25519' | 'ecdsa';\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected logger: ILogger;\n protected feeAmount: number;\n public mirrorNode: HederaMirrorNode;\n public network: string;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n silent: config.silent,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger,\n config.mirrorNode,\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicOrTransaction: string | TopicMessageSubmitTransaction,\n payload?: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean,\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n /**\n * Updates the mirror node configuration.\n * @param config The new mirror node configuration.\n */\n public configureMirrorNode(config: MirrorNodeConfig): void {\n this.mirrorNode.configureMirrorNode(config);\n this.logger.info('Mirror node configuration updated');\n }\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @param options Optional filtering options for messages\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<{ messages: HCSMessageWithCommonFields[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n const validOps = ['message', 'close_connection', 'transaction'];\n\n const filteredMessages = messages.filter(msg => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message' || msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n\n if (msg.op === 'message' && !msg.data) {\n return false;\n }\n }\n\n if (msg.op === 'transaction') {\n if (!msg.operator_id || !msg.schedule_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error,\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string,\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey,\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @param options Optional filtering options for messages\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<{ messages: HCSMessageWithCommonFields[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n\n const validatedMessages = messages.filter(msg => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n if (!account) {\n throw new Error('Account ID is required');\n }\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @param retryOptions Optional retry configuration\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean,\n retryOptions?: {\n maxRetries?: number;\n retryDelay?: number;\n },\n ): Promise<ProfileResponse> {\n const maxRetries = retryOptions?.maxRetries ?? 0;\n const retryDelay = retryOptions?.retryDelay ?? 3000;\n let retryCount = 0;\n\n while (retryCount <= maxRetries) {\n this.logger.debug(\n `Retrieving profile for account: ${accountId}${retryCount > 0 ? ` (attempt ${retryCount + 1}/${maxRetries + 1})` : ''}`,\n );\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache && retryCount === 0) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0',\n },\n logLevel: this.logger.getLevel(),\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network,\n );\n\n if (!profileResult?.success) {\n if (retryCount < maxRetries) {\n this.logger.info(\n `Profile not found for account ${accountId}, retrying in ${retryDelay}ms... (${profileResult?.error})`,\n );\n retryCount++;\n await new Promise(resolve => setTimeout(resolve, retryDelay));\n continue;\n }\n\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error,\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult?.profile;\n let topicInfo: TopicInfo | null = null;\n const inboundTopic =\n profileResult?.topicInfo?.inboundTopic ||\n profile?.inboundTopicId ||\n '';\n const outboundTopic =\n profileResult?.topicInfo?.outboundTopic ||\n profile?.outboundTopicId ||\n '';\n const profileTopicId = profileResult?.topicInfo?.profileTopicId || '';\n if (inboundTopic && outboundTopic) {\n topicInfo = {\n inboundTopic,\n outboundTopic,\n profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (e: any) {\n if (retryCount < maxRetries) {\n this.logger.info(\n `Error retrieving profile for account ${accountId}, retrying in ${retryDelay}ms... (${e.message})`,\n );\n retryCount++;\n await new Promise(resolve => setTimeout(resolve, retryDelay));\n continue;\n }\n\n const error = e as Error;\n const logMessage = `Failed to retrieve profile: ${error.message}`;\n this.logger.error(logMessage);\n return {\n profile: null,\n success: false,\n error: logMessage,\n };\n }\n }\n\n return {\n profile: null,\n success: false,\n error: 'Unexpected error in profile retrieval',\n };\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string,\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @param retryOptions Optional retry configuration\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean,\n retryOptions?: {\n maxRetries?: number;\n retryDelay?: number;\n },\n ): Promise<TopicInfo> {\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache,\n retryOptions,\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile) {\n throw new Error(\n `Profile is null or undefined for account ${accountId}`,\n );\n }\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`,\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`,\n );\n }\n\n return profileResponse.topicInfo;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve topic info: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @param options Optional filtering options for messages\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<HCSMessageWithCommonFields[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`,\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic, options);\n return response.messages.filter(\n msg =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message'),\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve outbound messages: ${error.message}`;\n this.logger.error(logMessage);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number,\n ): Promise<boolean> {\n try {\n const outBoundTopic =\n await this.retrieveCommunicationTopics(agentAccountId);\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic,\n );\n return messages.some(\n msg =>\n msg.op === 'connection_created' && msg.connection_id === connectionId,\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to check connection created: ${error.message}`;\n this.logger.error(logMessage);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content\n */\n async getMessageContent(\n data: string,\n forceRaw = false,\n ): Promise<string | ArrayBuffer> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return data;\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n if (!resolver.isValidHRL(data)) {\n return data;\n }\n\n const result = await resolver.resolveHRL(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n\n return result.content;\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 /**\n * Gets message content with its content type, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content along with content type information\n */\n async getMessageContentWithType(\n data: string,\n forceRaw = false,\n ): Promise<{\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n }> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return {\n content: data,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n return await resolver.getContentWithType(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference with type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string,\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId,\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner =\n await this.retrieveInboundAccountId(inboundTopicId);\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const requiresFee = submissionCheck.requiresFee;\n\n const connectionRequestTx = buildHcs10SubmitConnectionRequestTx({\n inboundTopicId,\n operatorId,\n memo,\n });\n\n const response = await this.submitPayload(\n connectionRequestTx,\n undefined,\n undefined,\n requiresFee,\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`,\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n const outboundRecordTx = buildHcs10OutboundConnectionRequestRecordTx({\n outboundTopicId: outboundTopic.outboundTopic,\n operatorId: requestorOperatorId,\n connectionRequestId: responseSequenceNumber,\n memo,\n });\n\n await this.submitPayload(outboundRecordTx);\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const transaction = buildHcs10OutboundConnectionCreatedRecordTx({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionTopicId,\n confirmedRequestId,\n connectionRequestId,\n operatorId,\n memo,\n });\n return await this.submitPayload(transaction);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true,\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`,\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId, {\n order: 'desc',\n limit: 100,\n });\n\n const connectionCreatedMessages = messages.filter(\n m => m.op === 'connection_created',\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`,\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy,\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult,\n );\n\n if (recordConfirmation) {\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`,\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse?.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile?.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n if (!profile?.topicInfo?.inboundTopic) {\n throw new Error('Failed to retrieve inbound topic');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string,\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n },\n ): string {\n const ttl = options.ttl ?? 60;\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo',\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n /**\n * Reads a topic's memo and determines its HCS-10 type\n * @param topicId The topic ID to check\n * @returns The HCS-10 memo type or null if not an HCS-10 topic\n */\n public async getTopicMemoType(\n topicId: string,\n ): Promise<Hcs10MemoType | null> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo?.memo) {\n this.logger.debug(`No memo found for topic ${topicId}`);\n return null;\n }\n\n const memo = topicInfo.memo.toString();\n\n if (!memo.startsWith('hcs-10:')) {\n this.logger.debug(`Topic ${topicId} is not an HCS-10 topic`);\n return null;\n }\n\n const parts = memo.split(':');\n if (parts.length < 4) {\n this.logger.warn(\n `Invalid HCS-10 memo format for topic ${topicId}: ${memo}`,\n );\n return null;\n }\n\n const typeEnum = parts[3];\n\n switch (typeEnum) {\n case '0':\n return Hcs10MemoType.INBOUND;\n case '1':\n return Hcs10MemoType.OUTBOUND;\n case '2':\n return Hcs10MemoType.CONNECTION;\n case '3':\n return Hcs10MemoType.REGISTRY;\n default:\n this.logger.warn(\n `Unknown HCS-10 type enum: ${typeEnum} for topic ${topicId}`,\n );\n return null;\n }\n } catch (error) {\n this.logger.error(`Error getting topic memo type for ${topicId}:`, error);\n return null;\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string,\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`,\n );\n }\n\n return await response.json();\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error checking registration status: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieves all transaction requests from a topic\n * @param topicId The topic ID to retrieve transactions from\n * @param options Optional filtering and retrieval options\n * @returns Array of transaction requests sorted by timestamp (newest first)\n */\n public async getTransactionRequests(\n topicId: string,\n options?: {\n limit?: number;\n sequenceNumber?: string | number;\n order?: 'asc' | 'desc';\n },\n ): Promise<TransactMessage[]> {\n this.logger.debug(`Retrieving transaction requests from topic ${topicId}`);\n\n const { messages } = await this.getMessageStream(topicId, {\n limit: options?.limit,\n sequenceNumber: options?.sequenceNumber,\n order: options?.order || 'desc',\n });\n\n const transactOperations = (\n messages\n .filter(m => m.op === 'transaction' && m.schedule_id)\n .map(m => ({\n operator_id: m.operator_id || '',\n schedule_id: m.schedule_id || '',\n data: m.data || '',\n memo: m.m,\n sequence_number: Number(m.sequence_number),\n })) as unknown as TransactMessage[]\n ).sort((a, b) => {\n if (a.sequence_number && b.sequence_number) {\n return b.sequence_number - a.sequence_number;\n }\n return 0;\n });\n\n const result = options?.limit\n ? transactOperations.slice(0, options.limit)\n : transactOperations;\n\n return result;\n }\n\n /**\n * Gets the HCS-10 transaction memo for analytics based on the operation type\n * @param payload The operation payload\n * @returns The transaction memo in format hcs-10:op:{operation_enum}:{topic_type_enum}\n */\n protected getHcs10TransactionMemo(payload: object | string): string | null {\n if (typeof payload !== 'object' || !('op' in payload)) {\n return null;\n }\n\n const typedPayload = payload as HCSMessageWithCommonFields;\n const operation = typedPayload.op;\n let operationEnum: string;\n let topicTypeEnum: string;\n\n switch (operation) {\n case 'register':\n operationEnum = '0';\n topicTypeEnum = '0';\n break;\n case 'delete':\n operationEnum = '1';\n topicTypeEnum = '0';\n break;\n case 'migrate':\n operationEnum = '2';\n topicTypeEnum = '0';\n break;\n case 'connection_request':\n operationEnum = '3';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '1';\n break;\n case 'connection_created':\n operationEnum = '4';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '1';\n break;\n case 'connection_closed':\n operationEnum = '5';\n topicTypeEnum = typedPayload.outbound_topic_id ? '2' : '3';\n break;\n case 'message':\n operationEnum = '6';\n topicTypeEnum = '3';\n break;\n case 'close_connection':\n operationEnum = '5';\n topicTypeEnum = '3';\n break;\n case 'transaction':\n operationEnum = '6';\n topicTypeEnum = '3';\n break;\n default:\n operationEnum = '6';\n topicTypeEnum = '3';\n }\n\n return `hcs-10:op:${operationEnum}:${topicTypeEnum}`;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
|