@hashgraphonline/standards-sdk 0.1.186 → 0.1.188
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/README.md +3 -0
- package/dist/browser/services/registry-broker/client/agent-network.d.ts +974 -0
- package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser/services/registry-broker/client/base-client.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/standards-sdk.browser.js +149 -0
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +974 -0
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +404 -15
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts +974 -0
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/cjs/services/registry-broker/client/base-client.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/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/services/registry-broker/client/agent-network.d.ts +974 -0
- package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/es/services/registry-broker/client/base-client.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/standards-sdk.es.js +50 -27
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es116.js +2 -2
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +4 -4
- package/dist/es/standards-sdk.es121.js +11 -11
- package/dist/es/standards-sdk.es126.js +1 -1
- package/dist/es/standards-sdk.es132.js +3 -2
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +2 -2
- package/dist/es/standards-sdk.es148.js +1 -1
- package/dist/es/standards-sdk.es150.js +23 -14
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +372 -248
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +259 -4
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +4 -81
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +71 -77
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +80 -53
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +59 -2546
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +2547 -159
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +159 -7
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +3 -2
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +7 -86
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +64 -43
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +57 -186
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +188 -20
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +22 -54
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +41 -78
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +81 -35
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +36 -191
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +191 -43
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +46 -39
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +37 -44
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +46 -39
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +29 -102
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +104 -36
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +43 -33
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +44 -72
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +65 -61
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +63 -39
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +44 -36
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +36 -30
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +6 -5
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es180.js +30 -34
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +34 -48
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +48 -138
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +133 -37
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +34 -12474
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +12477 -12
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +55 -671
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +71 -63
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +192 -48
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +4 -3
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es190.js +15 -79
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es191.js +659 -187
- package/dist/es/standards-sdk.es191.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +60 -126
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +104 -482
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es200.js +480 -222
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +239 -176
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +178 -101
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +75 -108
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +116 -148
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +146 -646
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +661 -162
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +156 -206
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +219 -223
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +242 -0
- package/dist/es/standards-sdk.es209.js.map +1 -0
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es27.js +6 -5
- 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 +4 -3
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +3 -3
- package/dist/es/standards-sdk.es37.js +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +1 -1
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es67.js +4 -3
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +1 -1
- package/dist/es/standards-sdk.es72.js +2 -2
- package/dist/es/standards-sdk.es75.js +3 -3
- package/dist/es/standards-sdk.es76.js +1 -1
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es83.js +1 -1
- package/dist/es/standards-sdk.es84.js +3 -2
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es90.js +1 -1
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
const DEFAULT_USER_AGENT = "@hol-org/rb-client";
|
|
2
|
+
const DEFAULT_PROGRESS_INTERVAL_MS = 1500;
|
|
3
|
+
const DEFAULT_PROGRESS_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
4
|
+
const DEFAULT_BASE_URL = "https://hol.org/registry/api/v1";
|
|
5
|
+
const JSON_CONTENT_TYPE = /application\/json/i;
|
|
6
|
+
const DEFAULT_HISTORY_TOP_UP_HBAR = 0.25;
|
|
7
|
+
const MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS = 1;
|
|
8
|
+
const stripTrailingSlashes = (value) => {
|
|
9
|
+
let end = value.length;
|
|
10
|
+
while (end > 0 && value.charCodeAt(end - 1) === 47) {
|
|
11
|
+
end -= 1;
|
|
12
|
+
}
|
|
13
|
+
return end === value.length ? value : value.slice(0, end);
|
|
14
|
+
};
|
|
15
|
+
const createAbortError = () => typeof DOMException === "function" ? new DOMException("Aborted", "AbortError") : new Error("The operation was aborted");
|
|
16
|
+
const normaliseHeaderName = (name) => name.trim().toLowerCase();
|
|
17
|
+
const isBrowserRuntime = () => typeof window !== "undefined" && typeof window.fetch === "function";
|
|
18
|
+
const toJsonValue = (value) => {
|
|
19
|
+
if (value === null) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (value instanceof Date) {
|
|
23
|
+
return value.toISOString();
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
if (Array.isArray(value)) {
|
|
29
|
+
return value.map((item) => item === void 0 ? null : toJsonValue(item));
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === "object") {
|
|
32
|
+
const result = {};
|
|
33
|
+
Object.entries(value).forEach(
|
|
34
|
+
([key, entryValue]) => {
|
|
35
|
+
if (entryValue !== void 0) {
|
|
36
|
+
result[key] = toJsonValue(entryValue);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
throw new TypeError("Only JSON-compatible values are supported");
|
|
43
|
+
};
|
|
44
|
+
const isJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
45
|
+
const toJsonObject = (value) => {
|
|
46
|
+
const normalised = toJsonValue(value);
|
|
47
|
+
if (isJsonObject(normalised)) {
|
|
48
|
+
return normalised;
|
|
49
|
+
}
|
|
50
|
+
throw new TypeError("Expected JSON object value");
|
|
51
|
+
};
|
|
52
|
+
const serialiseAuthConfig = (auth) => {
|
|
53
|
+
const authPayload = {};
|
|
54
|
+
if (auth.type) {
|
|
55
|
+
authPayload.type = auth.type;
|
|
56
|
+
}
|
|
57
|
+
if (auth.token) {
|
|
58
|
+
authPayload.token = auth.token;
|
|
59
|
+
}
|
|
60
|
+
if (auth.username) {
|
|
61
|
+
authPayload.username = auth.username;
|
|
62
|
+
}
|
|
63
|
+
if (auth.password) {
|
|
64
|
+
authPayload.password = auth.password;
|
|
65
|
+
}
|
|
66
|
+
if (auth.headerName) {
|
|
67
|
+
authPayload.headerName = auth.headerName;
|
|
68
|
+
}
|
|
69
|
+
if (auth.headerValue) {
|
|
70
|
+
authPayload.headerValue = auth.headerValue;
|
|
71
|
+
}
|
|
72
|
+
if (auth.headers) {
|
|
73
|
+
authPayload.headers = { ...auth.headers };
|
|
74
|
+
}
|
|
75
|
+
return authPayload;
|
|
76
|
+
};
|
|
77
|
+
const serialiseAgentRegistrationRequest = (payload) => {
|
|
78
|
+
const body = {
|
|
79
|
+
profile: toJsonObject(payload.profile)
|
|
80
|
+
};
|
|
81
|
+
if (payload.endpoint !== void 0) {
|
|
82
|
+
body.endpoint = payload.endpoint;
|
|
83
|
+
}
|
|
84
|
+
if (payload.protocol !== void 0) {
|
|
85
|
+
body.protocol = payload.protocol;
|
|
86
|
+
}
|
|
87
|
+
if (payload.communicationProtocol !== void 0) {
|
|
88
|
+
body.communicationProtocol = payload.communicationProtocol;
|
|
89
|
+
}
|
|
90
|
+
if (payload.registry !== void 0) {
|
|
91
|
+
body.registry = payload.registry;
|
|
92
|
+
}
|
|
93
|
+
if (payload.additionalRegistries !== void 0) {
|
|
94
|
+
body.additionalRegistries = payload.additionalRegistries;
|
|
95
|
+
}
|
|
96
|
+
if (payload.metadata !== void 0) {
|
|
97
|
+
body.metadata = toJsonObject(payload.metadata);
|
|
98
|
+
}
|
|
99
|
+
return body;
|
|
100
|
+
};
|
|
101
|
+
const normalizeHexPrivateKey = (value) => {
|
|
102
|
+
const trimmed = value.trim();
|
|
103
|
+
if (!trimmed) {
|
|
104
|
+
throw new Error("evmPrivateKey is required");
|
|
105
|
+
}
|
|
106
|
+
return trimmed.startsWith("0x") ? trimmed : `0x${trimmed}`;
|
|
107
|
+
};
|
|
108
|
+
function normaliseBaseUrl(input) {
|
|
109
|
+
const trimmed = input?.trim();
|
|
110
|
+
let baseCandidate = trimmed && trimmed.length > 0 ? trimmed : DEFAULT_BASE_URL;
|
|
111
|
+
try {
|
|
112
|
+
const url = new URL(stripTrailingSlashes(baseCandidate));
|
|
113
|
+
const hostname = url.hostname.toLowerCase();
|
|
114
|
+
const ensureRegistryPrefix = () => {
|
|
115
|
+
if (!url.pathname.startsWith("/registry")) {
|
|
116
|
+
url.pathname = url.pathname === "/" ? "/registry" : `/registry${url.pathname}`;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
if (hostname === "hol.org") {
|
|
120
|
+
ensureRegistryPrefix();
|
|
121
|
+
baseCandidate = url.toString();
|
|
122
|
+
} else if (hostname === "registry.hashgraphonline.com" || hostname === "hashgraphonline.com") {
|
|
123
|
+
ensureRegistryPrefix();
|
|
124
|
+
url.hostname = "hol.org";
|
|
125
|
+
baseCandidate = url.toString();
|
|
126
|
+
}
|
|
127
|
+
} catch {
|
|
128
|
+
}
|
|
129
|
+
const withoutTrailing = stripTrailingSlashes(baseCandidate);
|
|
130
|
+
if (/\/api\/v\d+$/i.test(withoutTrailing)) {
|
|
131
|
+
return withoutTrailing;
|
|
132
|
+
}
|
|
133
|
+
if (/\/api$/i.test(withoutTrailing)) {
|
|
134
|
+
return `${withoutTrailing}/v1`;
|
|
135
|
+
}
|
|
136
|
+
return `${withoutTrailing}/api/v1`;
|
|
137
|
+
}
|
|
138
|
+
function buildSearchQuery(params) {
|
|
139
|
+
const query = new URLSearchParams();
|
|
140
|
+
const appendList = (key, values) => {
|
|
141
|
+
if (!values) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
values.forEach((value) => {
|
|
145
|
+
if (typeof value === "string") {
|
|
146
|
+
const trimmed = value.trim();
|
|
147
|
+
if (trimmed.length > 0) {
|
|
148
|
+
query.append(key, trimmed);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
if (params.q) {
|
|
154
|
+
const trimmed = params.q.trim();
|
|
155
|
+
if (trimmed.length > 0) {
|
|
156
|
+
query.set("q", trimmed);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (typeof params.page === "number") {
|
|
160
|
+
query.set("page", params.page.toString());
|
|
161
|
+
}
|
|
162
|
+
if (typeof params.limit === "number") {
|
|
163
|
+
query.set("limit", params.limit.toString());
|
|
164
|
+
}
|
|
165
|
+
if (params.registry) {
|
|
166
|
+
const trimmed = params.registry.trim();
|
|
167
|
+
if (trimmed.length > 0) {
|
|
168
|
+
query.set("registry", trimmed);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
appendList("registries", params.registries);
|
|
172
|
+
if (typeof params.minTrust === "number") {
|
|
173
|
+
query.set("minTrust", params.minTrust.toString());
|
|
174
|
+
}
|
|
175
|
+
appendList("capabilities", params.capabilities);
|
|
176
|
+
appendList("protocols", params.protocols);
|
|
177
|
+
appendList("adapters", params.adapters);
|
|
178
|
+
if (params.metadata) {
|
|
179
|
+
Object.entries(params.metadata).forEach(([key, values]) => {
|
|
180
|
+
if (!key || !Array.isArray(values) || values.length === 0) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const trimmedKey = key.trim();
|
|
184
|
+
if (trimmedKey.length === 0) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
values.forEach((value) => {
|
|
188
|
+
if (value === void 0 || value === null) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
query.append(`metadata.${trimmedKey}`, String(value));
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
if (params.type) {
|
|
196
|
+
const trimmedType = params.type.trim();
|
|
197
|
+
if (trimmedType.length > 0 && trimmedType.toLowerCase() !== "all") {
|
|
198
|
+
query.set("type", trimmedType);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (params.verified === true) {
|
|
202
|
+
query.set("verified", "true");
|
|
203
|
+
}
|
|
204
|
+
if (params.online === true) {
|
|
205
|
+
query.set("online", "true");
|
|
206
|
+
}
|
|
207
|
+
if (params.sortBy) {
|
|
208
|
+
const trimmedSort = params.sortBy.trim();
|
|
209
|
+
if (trimmedSort.length > 0) {
|
|
210
|
+
query.set("sortBy", trimmedSort);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (params.sortOrder) {
|
|
214
|
+
const lowered = params.sortOrder.toLowerCase();
|
|
215
|
+
if (lowered === "asc" || lowered === "desc") {
|
|
216
|
+
query.set("sortOrder", lowered);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const queryString = query.toString();
|
|
220
|
+
return queryString.length > 0 ? `?${queryString}` : "";
|
|
221
|
+
}
|
|
222
|
+
export {
|
|
223
|
+
DEFAULT_BASE_URL,
|
|
224
|
+
DEFAULT_HISTORY_TOP_UP_HBAR,
|
|
225
|
+
DEFAULT_PROGRESS_INTERVAL_MS,
|
|
226
|
+
DEFAULT_PROGRESS_TIMEOUT_MS,
|
|
227
|
+
DEFAULT_USER_AGENT,
|
|
228
|
+
JSON_CONTENT_TYPE,
|
|
229
|
+
MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,
|
|
230
|
+
buildSearchQuery,
|
|
231
|
+
createAbortError,
|
|
232
|
+
isBrowserRuntime,
|
|
233
|
+
isJsonObject,
|
|
234
|
+
normaliseBaseUrl,
|
|
235
|
+
normaliseHeaderName,
|
|
236
|
+
normalizeHexPrivateKey,
|
|
237
|
+
serialiseAgentRegistrationRequest,
|
|
238
|
+
serialiseAuthConfig,
|
|
239
|
+
toJsonObject,
|
|
240
|
+
toJsonValue
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=standards-sdk.es209.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es209.js","sources":["../../src/services/registry-broker/client/utils.ts"],"sourcesContent":["import type {\n AgentAuthConfig,\n AgentRegistrationRequest,\n JsonObject,\n JsonValue,\n SearchParams,\n} from '../types';\n\nexport const DEFAULT_USER_AGENT = '@hol-org/rb-client';\nexport const DEFAULT_PROGRESS_INTERVAL_MS = 1_500;\nexport const DEFAULT_PROGRESS_TIMEOUT_MS = 5 * 60 * 1_000;\nexport const DEFAULT_BASE_URL = 'https://hol.org/registry/api/v1';\nexport const JSON_CONTENT_TYPE = /application\\/json/i;\nexport const DEFAULT_HISTORY_TOP_UP_HBAR = 0.25;\nexport const MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS = 1;\n\nconst stripTrailingSlashes = (value: string): string => {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 47) {\n end -= 1;\n }\n return end === value.length ? value : value.slice(0, end);\n};\n\nexport const createAbortError = (): Error =>\n typeof DOMException === 'function'\n ? new DOMException('Aborted', 'AbortError')\n : new Error('The operation was aborted');\n\nexport const normaliseHeaderName = (name: string): string =>\n name.trim().toLowerCase();\n\nexport const isBrowserRuntime = (): boolean =>\n typeof window !== 'undefined' && typeof window.fetch === 'function';\n\nexport const toJsonValue = (value: unknown): JsonValue => {\n if (value === null) {\n return null;\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(item => (item === undefined ? null : toJsonValue(item)));\n }\n if (typeof value === 'object') {\n const result: JsonObject = {};\n Object.entries(value as Record<string, unknown>).forEach(\n ([key, entryValue]) => {\n if (entryValue !== undefined) {\n result[key] = toJsonValue(entryValue);\n }\n },\n );\n return result;\n }\n throw new TypeError('Only JSON-compatible values are supported');\n};\n\nexport const isJsonObject = (value: JsonValue): value is JsonObject =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const toJsonObject = (value: unknown): JsonObject => {\n const normalised = toJsonValue(value);\n if (isJsonObject(normalised)) {\n return normalised;\n }\n throw new TypeError('Expected JSON object value');\n};\n\nexport const serialiseAuthConfig = (auth: AgentAuthConfig): JsonObject => {\n const authPayload: JsonObject = {};\n if (auth.type) {\n authPayload.type = auth.type;\n }\n if (auth.token) {\n authPayload.token = auth.token;\n }\n if (auth.username) {\n authPayload.username = auth.username;\n }\n if (auth.password) {\n authPayload.password = auth.password;\n }\n if (auth.headerName) {\n authPayload.headerName = auth.headerName;\n }\n if (auth.headerValue) {\n authPayload.headerValue = auth.headerValue;\n }\n if (auth.headers) {\n authPayload.headers = { ...auth.headers };\n }\n return authPayload;\n};\n\nexport const serialiseAgentRegistrationRequest = (\n payload: AgentRegistrationRequest,\n): JsonObject => {\n const body: JsonObject = {\n profile: toJsonObject(payload.profile),\n };\n if (payload.endpoint !== undefined) {\n body.endpoint = payload.endpoint;\n }\n if (payload.protocol !== undefined) {\n body.protocol = payload.protocol;\n }\n if (payload.communicationProtocol !== undefined) {\n body.communicationProtocol = payload.communicationProtocol;\n }\n if (payload.registry !== undefined) {\n body.registry = payload.registry;\n }\n if (payload.additionalRegistries !== undefined) {\n body.additionalRegistries = payload.additionalRegistries;\n }\n if (payload.metadata !== undefined) {\n body.metadata = toJsonObject(payload.metadata);\n }\n return body;\n};\n\nexport type X402NetworkId = 'base' | 'base-sepolia';\n\nexport const normalizeHexPrivateKey = (value: string): `0x${string}` => {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error('evmPrivateKey is required');\n }\n return trimmed.startsWith('0x')\n ? (trimmed as `0x${string}`)\n : (`0x${trimmed}` as `0x${string}`);\n};\n\nexport function normaliseBaseUrl(input?: string): string {\n const trimmed = input?.trim();\n let baseCandidate =\n trimmed && trimmed.length > 0 ? trimmed : DEFAULT_BASE_URL;\n\n try {\n const url = new URL(stripTrailingSlashes(baseCandidate));\n const hostname = url.hostname.toLowerCase();\n const ensureRegistryPrefix = (): void => {\n if (!url.pathname.startsWith('/registry')) {\n url.pathname =\n url.pathname === '/' ? '/registry' : `/registry${url.pathname}`;\n }\n };\n\n if (hostname === 'hol.org') {\n ensureRegistryPrefix();\n baseCandidate = url.toString();\n } else if (\n hostname === 'registry.hashgraphonline.com' ||\n hostname === 'hashgraphonline.com'\n ) {\n ensureRegistryPrefix();\n url.hostname = 'hol.org';\n baseCandidate = url.toString();\n }\n } catch {}\n\n const withoutTrailing = stripTrailingSlashes(baseCandidate);\n if (/\\/api\\/v\\d+$/i.test(withoutTrailing)) {\n return withoutTrailing;\n }\n if (/\\/api$/i.test(withoutTrailing)) {\n return `${withoutTrailing}/v1`;\n }\n return `${withoutTrailing}/api/v1`;\n}\n\nexport function buildSearchQuery(params: SearchParams): string {\n const query = new URLSearchParams();\n const appendList = (key: string, values?: string[]) => {\n if (!values) {\n return;\n }\n values.forEach(value => {\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n query.append(key, trimmed);\n }\n }\n });\n };\n\n if (params.q) {\n const trimmed = params.q.trim();\n if (trimmed.length > 0) {\n query.set('q', trimmed);\n }\n }\n if (typeof params.page === 'number') {\n query.set('page', params.page.toString());\n }\n if (typeof params.limit === 'number') {\n query.set('limit', params.limit.toString());\n }\n if (params.registry) {\n const trimmed = params.registry.trim();\n if (trimmed.length > 0) {\n query.set('registry', trimmed);\n }\n }\n appendList('registries', params.registries);\n if (typeof params.minTrust === 'number') {\n query.set('minTrust', params.minTrust.toString());\n }\n appendList('capabilities', params.capabilities);\n appendList('protocols', params.protocols);\n appendList('adapters', params.adapters);\n\n if (params.metadata) {\n Object.entries(params.metadata).forEach(([key, values]) => {\n if (!key || !Array.isArray(values) || values.length === 0) {\n return;\n }\n const trimmedKey = key.trim();\n if (trimmedKey.length === 0) {\n return;\n }\n values.forEach(value => {\n if (value === undefined || value === null) {\n return;\n }\n query.append(`metadata.${trimmedKey}`, String(value));\n });\n });\n }\n\n if (params.type) {\n const trimmedType = params.type.trim();\n if (trimmedType.length > 0 && trimmedType.toLowerCase() !== 'all') {\n query.set('type', trimmedType);\n }\n }\n\n if (params.verified === true) {\n query.set('verified', 'true');\n }\n\n if (params.online === true) {\n query.set('online', 'true');\n }\n\n if (params.sortBy) {\n const trimmedSort = params.sortBy.trim();\n if (trimmedSort.length > 0) {\n query.set('sortBy', trimmedSort);\n }\n }\n\n if (params.sortOrder) {\n const lowered = params.sortOrder.toLowerCase();\n if (lowered === 'asc' || lowered === 'desc') {\n query.set('sortOrder', lowered);\n }\n }\n const queryString = query.toString();\n return queryString.length > 0 ? `?${queryString}` : '';\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Client, Status, PrivateKey, AccountUpdateTransaction } from "@hashgraph/sdk";
|
|
2
2
|
import { inscribeWithSigner, inscribe } from "./standards-sdk.es147.js";
|
|
3
|
-
import "./standards-sdk.
|
|
3
|
+
import "./standards-sdk.es185.js";
|
|
4
4
|
import { Logger } from "./standards-sdk.es128.js";
|
|
5
5
|
import { HederaMirrorNode } from "./standards-sdk.es149.js";
|
|
6
6
|
import { ProgressReporter } from "./standards-sdk.es131.js";
|
|
@@ -8,15 +8,16 @@ import "axios";
|
|
|
8
8
|
import "buffer";
|
|
9
9
|
import "@noble/curves/secp256k1.js";
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
import "./standards-sdk.
|
|
12
|
-
import "./standards-sdk.
|
|
11
|
+
import "./standards-sdk.es158.js";
|
|
12
|
+
import "./standards-sdk.es152.js";
|
|
13
|
+
import "./standards-sdk.es156.js";
|
|
13
14
|
import "@hashgraph/proto";
|
|
14
15
|
import "ethers";
|
|
15
16
|
import "./standards-sdk.es145.js";
|
|
16
17
|
import "./standards-sdk.es136.js";
|
|
17
18
|
import { getTopicId } from "./standards-sdk.es137.js";
|
|
18
19
|
import { isHederaNetwork, toHederaCaip10 } from "./standards-sdk.es57.js";
|
|
19
|
-
import { createNodeOperatorContext } from "./standards-sdk.
|
|
20
|
+
import { createNodeOperatorContext } from "./standards-sdk.es183.js";
|
|
20
21
|
import { AIAgentCapability, AIAgentType, VerificationType, MCPServerCapability, ProfileType, capabilityNameToCapabilityMap } from "./standards-sdk.es28.js";
|
|
21
22
|
const SocialLinkSchema = z.object({
|
|
22
23
|
platform: z.string().min(1),
|
|
@@ -610,7 +611,7 @@ class HCS11Client {
|
|
|
610
611
|
return;
|
|
611
612
|
}
|
|
612
613
|
try {
|
|
613
|
-
const { HCS14Client } = await import("./standards-sdk.
|
|
614
|
+
const { HCS14Client } = await import("./standards-sdk.es182.js");
|
|
614
615
|
const hcs14 = new HCS14Client({ client: this.client });
|
|
615
616
|
const did = await hcs14.createDid({
|
|
616
617
|
method: "hedera",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es27.js","sources":["../../src/hcs-11/client.ts"],"sourcesContent":["import {\n AccountId,\n AccountUpdateTransaction,\n Client,\n PrivateKey,\n Status,\n Transaction,\n} from '@hashgraph/sdk';\nimport {\n inscribe,\n inscribeWithSigner,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResult,\n} from '../inscribe';\nimport { Logger, ILogger, getTopicId } from '../utils';\nimport { z, ZodIssue } from 'zod';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { ProgressReporter } from '../utils/progress-reporter';\nimport { HederaMirrorNode } from '../services';\nimport { isHederaNetwork, toHederaCaip10 } from '../hcs-14/caip';\nimport { TopicInfo } from '../services/types';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { NetworkType } from '../utils/types';\nimport {\n ProfileType,\n AIAgentType,\n AIAgentCapability,\n SocialLink,\n PersonalProfile,\n AIAgentProfile,\n HCS11Profile,\n HCS11Auth,\n HCS11ClientConfig,\n TransactionResult,\n InscribeProfileResponse,\n InscribeImageResponse,\n AgentMetadata,\n InscribeImageOptions,\n InscribeProfileOptions,\n capabilityNameToCapabilityMap,\n MCPServerDetails,\n MCPServerProfile,\n MCPServerCapability,\n VerificationType,\n} from './types';\n\nexport const SocialLinkSchema = z.object({\n platform: z.string().min(1),\n handle: z.string().min(1),\n});\n\nexport const AIAgentDetailsSchema = z.object({\n type: z.nativeEnum(AIAgentType),\n capabilities: z.array(z.nativeEnum(AIAgentCapability)).min(1),\n model: z.string().min(1),\n creator: z.string().optional(),\n});\n\nexport const MCPServerConnectionInfoSchema = z.object({\n url: z.string().min(1),\n transport: z.enum(['stdio', 'sse']),\n});\n\nexport const MCPServerVerificationSchema = z.object({\n type: z.nativeEnum(VerificationType),\n value: z.string(),\n dns_field: z.string().optional(),\n challenge_path: z.string().optional(),\n});\n\nexport const MCPServerHostSchema = z.object({\n minVersion: z.string().optional(),\n});\n\nexport const MCPServerResourceSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n});\n\nexport const MCPServerToolSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n});\n\nexport const MCPServerDetailsSchema = z.object({\n version: z.string().min(1),\n connectionInfo: MCPServerConnectionInfoSchema,\n services: z.array(z.nativeEnum(MCPServerCapability)).min(1),\n description: z.string().min(1),\n verification: MCPServerVerificationSchema.optional(),\n host: MCPServerHostSchema.optional(),\n capabilities: z.array(z.string()).optional(),\n resources: z.array(MCPServerResourceSchema).optional(),\n tools: z.array(MCPServerToolSchema).optional(),\n maintainer: z.string().optional(),\n repository: z.string().optional(),\n docs: z.string().optional(),\n});\n\nexport const BaseProfileSchema = z.object({\n version: z.string().min(1),\n type: z.nativeEnum(ProfileType),\n display_name: z.string().min(1),\n alias: z.string().optional(),\n bio: z.string().optional(),\n socials: z.array(SocialLinkSchema).optional(),\n profileImage: z.string().optional(),\n uaid: z.string().optional(),\n properties: z.record(z.any()).optional(),\n inboundTopicId: z.string().optional(),\n outboundTopicId: z.string().optional(),\n base_account: z.string().optional(),\n});\n\nexport const PersonalProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.PERSONAL),\n language: z.string().optional(),\n timezone: z.string().optional(),\n});\n\nexport const AIAgentProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.AI_AGENT),\n aiAgent: AIAgentDetailsSchema,\n});\n\nexport const MCPServerProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.MCP_SERVER),\n mcpServer: MCPServerDetailsSchema,\n});\n\nconst FloraProfileSchema = z.object({\n version: z.string(),\n type: z.literal(ProfileType.FLORA),\n display_name: z.string().min(1),\n members: z.array(\n z.object({\n accountId: z.string(),\n publicKey: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n threshold: z.number().min(1),\n topics: z.object({\n communication: z.string(),\n transaction: z.string(),\n state: z.string(),\n }),\n inboundTopicId: z.string(),\n outboundTopicId: z.string(),\n bio: z.string().optional(),\n metadata: z.record(z.any()).optional(),\n policies: z.record(z.any()).optional(),\n});\n\nexport const HCS11ProfileSchema = z.union([\n PersonalProfileSchema,\n AIAgentProfileSchema,\n MCPServerProfileSchema,\n FloraProfileSchema,\n]);\n\nconst MIME_TYPES_BY_EXTENSION: Record<string, string> = {\n avif: 'image/avif',\n gif: 'image/gif',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n json: 'application/json',\n png: 'image/png',\n svg: 'image/svg+xml',\n txt: 'text/plain',\n webp: 'image/webp',\n};\n\nconst lookupMimeType = (fileName: string): string => {\n const trimmed = fileName.trim();\n const lastDotIndex = trimmed.lastIndexOf('.');\n if (lastDotIndex < 1 || lastDotIndex === trimmed.length - 1) {\n return 'application/octet-stream';\n }\n const extension = trimmed.substring(lastDotIndex + 1).toLowerCase();\n return MIME_TYPES_BY_EXTENSION[extension] ?? 'application/octet-stream';\n};\n\nexport class HCS11Client {\n private client: Client;\n private auth: HCS11Auth;\n private network: string;\n private logger: ILogger;\n private mirrorNode: HederaMirrorNode;\n private keyType: 'ed25519' | 'ecdsa';\n private operatorId: string;\n private operatorCtx?: NodeOperatorContext;\n\n constructor(config: HCS11ClientConfig) {\n this.client =\n config.client ??\n (config.network === 'mainnet'\n ? Client.forMainnet()\n : Client.forTestnet());\n this.auth = config.auth;\n this.network = config.network;\n this.operatorId = config.auth.operatorId;\n\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS-11',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(\n this.network as 'mainnet' | 'testnet',\n this.logger,\n );\n\n if (this.auth.privateKey) {\n this.operatorCtx = createNodeOperatorContext({\n network: this.network as NetworkType,\n operatorId: this.operatorId,\n operatorKey: this.auth.privateKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: this.client,\n });\n this.client = this.operatorCtx.client;\n this.keyType = this.operatorCtx.keyType;\n void this.operatorCtx.ensureInitialized();\n this.client.setOperator(\n this.operatorId.toString(),\n this.operatorCtx.operatorKey,\n );\n } else {\n this.keyType = config.keyType || 'ed25519';\n }\n }\n\n public getClient(): Client {\n return this.client;\n }\n\n public getOperatorId(): string {\n return this.auth.operatorId;\n }\n\n public async initializeOperator() {\n if (!this.operatorCtx) {\n return;\n }\n\n try {\n await this.operatorCtx.ensureInitialized();\n this.keyType = this.operatorCtx.keyType;\n this.client.setOperator(this.operatorId, this.operatorCtx.operatorKey);\n } catch (error) {\n this.logger.warn(\n `Failed to verify operator key with mirror node: ${\n (error as Error).message\n }`,\n );\n }\n }\n\n public createPersonalProfile(\n displayName: string,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n language?: string;\n timezone?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n baseAccount?: string;\n },\n ): PersonalProfile {\n return {\n version: '1.0',\n type: ProfileType.PERSONAL,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n };\n }\n\n public createAIAgentProfile(\n displayName: string,\n agentType: AIAgentType,\n capabilities: AIAgentCapability[],\n model: string,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n creator?: string;\n baseAccount?: string;\n },\n ): AIAgentProfile {\n const validation = this.validateProfile({\n version: '1.0',\n type: ProfileType.AI_AGENT,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n aiAgent: {\n type: agentType,\n capabilities,\n model,\n creator: options?.creator,\n },\n });\n\n if (!validation.valid) {\n throw new Error(\n `Invalid AI Agent Profile: ${validation.errors.join(', ')}`,\n );\n }\n\n return {\n version: '1.0',\n type: ProfileType.AI_AGENT,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n aiAgent: {\n type: agentType,\n capabilities,\n model,\n creator: options?.creator,\n },\n };\n }\n\n /**\n * Creates an MCP server profile.\n *\n * @param displayName - The display name for the MCP server\n * @param serverDetails - The MCP server details\n * @param options - Additional profile options\n * @returns An MCPServerProfile object\n */\n public createMCPServerProfile(\n displayName: string,\n serverDetails: MCPServerDetails,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n },\n ): MCPServerProfile {\n const validation = this.validateProfile({\n version: '1.0',\n type: ProfileType.MCP_SERVER,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n mcpServer: serverDetails,\n });\n\n if (!validation.valid) {\n throw new Error(\n `Invalid MCP Server Profile: ${validation.errors.join(', ')}`,\n );\n }\n\n return {\n version: '1.0',\n type: ProfileType.MCP_SERVER,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n mcpServer: serverDetails,\n };\n }\n\n public validateProfile(profile: unknown): {\n valid: boolean;\n errors: string[];\n } {\n const result = HCS11ProfileSchema.safeParse(profile);\n\n if (result.success) {\n return { valid: true, errors: [] };\n }\n\n const formattedErrors = result.error.errors.map((err: ZodIssue) => {\n const path = err.path.join('.');\n let message = err.message;\n\n if (err.code === 'invalid_type') {\n message = `Expected ${err.expected}, got ${err.received}`;\n } else if (err.code === 'invalid_enum_value') {\n const validOptions = err.options?.join(', ');\n message = `Invalid value. Valid options are: ${validOptions}`;\n } else if (err.code === 'too_small' && err.type === 'string') {\n message = 'Cannot be empty';\n }\n\n return `${path}: ${message}`;\n });\n\n return { valid: false, errors: formattedErrors };\n }\n\n public profileToJSONString(profile: HCS11Profile): string {\n return JSON.stringify(profile);\n }\n\n public parseProfileFromString(profileStr: string): HCS11Profile | null {\n try {\n const parsedProfile = JSON.parse(profileStr);\n const validation = this.validateProfile(parsedProfile);\n if (!validation.valid) {\n this.logger.error('Invalid profile format:', validation.errors);\n return null;\n }\n return parsedProfile as HCS11Profile;\n } catch (error) {\n this.logger.error('Error parsing profile:');\n return null;\n }\n }\n\n public setProfileForAccountMemo(\n topicId: string,\n topicStandard: 1 | 2 | 7 = 1,\n ): string {\n return `hcs-11:hcs://${topicStandard}/${topicId}`;\n }\n\n private async executeTransaction<T>(\n transaction: Transaction,\n ): Promise<TransactionResult<T>> {\n try {\n if (this.auth.privateKey) {\n const signedTx = await transaction.signWithOperator(this.client);\n const response = await signedTx.execute(this.client);\n const receipt = await response.getReceipt(this.client);\n\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}`,\n };\n }\n\n return {\n success: true,\n result: receipt as T,\n };\n }\n\n if (!this.auth.signer) {\n throw new Error('No valid authentication method provided');\n }\n\n const signer = this.auth.signer;\n const frozenTransaction = await transaction.freezeWithSigner(signer);\n const response = await frozenTransaction.executeWithSigner(signer);\n const receipt = await response.getReceiptWithSigner(signer);\n\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}: ${Status.Success.toString()}`,\n };\n }\n\n return {\n success: true,\n result: receipt as T,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error\n ? error.message\n : 'Unknown error during transaction execution',\n };\n }\n }\n\n public async inscribeImage(\n buffer: Buffer,\n fileName: string,\n options?: InscribeImageOptions,\n ): Promise<InscribeImageResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-Image',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n progressReporter.preparing('Preparing to inscribe image', 0);\n\n const mimeType = lookupMimeType(fileName);\n\n const waitForConfirmation = options?.waitForConfirmation ?? true;\n\n let inscriptionResponse;\n if (this.auth.signer) {\n if ('accountId' in this.auth.signer) {\n progressReporter.preparing('Using signer for inscription', 10);\n\n inscriptionResponse = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n this.auth.signer as DAppSigner,\n {\n network: this.network as 'mainnet' | 'testnet',\n waitForConfirmation,\n waitMaxAttempts: 150,\n waitIntervalMs: 4000,\n logging: {\n level: 'debug',\n },\n progressCallback: data => {\n const adjustedPercent = 10 + (data.progressPercent || 0) * 0.8;\n progressReporter.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n },\n );\n } else {\n progressReporter.failed(\n 'Signer must be a DAppSigner for inscription',\n );\n throw new Error('Signer must be a DAppSigner for inscription');\n }\n } else {\n if (!this.auth.privateKey) {\n progressReporter.failed('Private key is required for inscription');\n this.logger.error('Private key is required for inscription');\n throw new Error('Private key is required for inscription');\n }\n\n progressReporter.preparing('Using private key for inscription', 10);\n\n const PK =\n this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(this.auth.privateKey)\n : PrivateKey.fromStringED25519(this.auth.privateKey);\n\n inscriptionResponse = await inscribe(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n {\n accountId: this.auth.operatorId,\n privateKey: PK,\n network: this.network as 'mainnet' | 'testnet',\n },\n {\n waitForConfirmation,\n waitMaxAttempts: 150,\n waitIntervalMs: 2000,\n logging: {\n level: 'debug',\n },\n progressCallback: data => {\n const adjustedPercent = 10 + (data.progressPercent || 0) * 0.8;\n progressReporter.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n },\n );\n }\n\n if (inscriptionResponse.confirmed) {\n progressReporter.completed('Image inscription completed', {\n topicId: getTopicId(inscriptionResponse.inscription),\n });\n return {\n imageTopicId: getTopicId(inscriptionResponse.inscription) || '',\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .jobId,\n success: true,\n };\n } else {\n const jobId = inscriptionResponse.quote\n ? 'quote-only'\n : (inscriptionResponse.result as InscriptionResult).jobId;\n progressReporter.verifying('Waiting for inscription confirmation', 50, {\n jobId,\n });\n return {\n imageTopicId: '',\n transactionId: jobId,\n success: false,\n error: 'Inscription not confirmed',\n };\n }\n } catch (error) {\n this.logger.error('Error inscribing image:', error);\n return {\n imageTopicId: '',\n transactionId: '',\n success: false,\n error:\n error instanceof Error ? error.message : 'Error inscribing image',\n };\n }\n }\n\n public async inscribeProfile(\n profile: HCS11Profile,\n options?: InscribeProfileOptions,\n ): Promise<InscribeProfileResponse> {\n this.logger.info('Inscribing HCS-11 profile');\n\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-Profile',\n logger: this.logger,\n callback: progressCallback,\n });\n\n await this.attachUaidIfMissing(profile);\n\n progressReporter.preparing('Validating profile data', 5);\n\n const validation = this.validateProfile(profile);\n if (!validation.valid) {\n progressReporter.failed(\n `Invalid profile: ${validation.errors.join(', ')}`,\n );\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: `Invalid profile: ${validation.errors.join(', ')}`,\n };\n }\n\n progressReporter.preparing('Formatting profile for inscription', 15);\n\n const profileJson = this.profileToJSONString(profile);\n const fileName = `profile-${profile.display_name\n .toLowerCase()\n .replace(/\\s+/g, '-')}.json`;\n\n try {\n const contentBuffer = Buffer.from(profileJson, 'utf-8');\n const contentType = 'application/json';\n\n progressReporter.preparing('Preparing profile for inscription', 20);\n\n const input: InscriptionInput = {\n type: 'buffer',\n buffer: contentBuffer,\n fileName,\n mimeType: contentType,\n };\n\n const inscriptionOptions: InscriptionOptions = {\n waitForConfirmation: true,\n mode: 'file',\n network: this.network as 'mainnet' | 'testnet',\n waitMaxAttempts: 100,\n waitIntervalMs: 2000,\n progressCallback: data => {\n const adjustedPercent =\n 20 + Number(data?.progressPercent || 0) * 0.75;\n progressReporter?.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n };\n\n progressReporter.submitting('Submitting profile to Hedera network', 30);\n\n let inscriptionResponse;\n\n if (this.auth.privateKey) {\n const PK =\n this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(this.auth.privateKey)\n : PrivateKey.fromStringED25519(this.auth.privateKey);\n\n inscriptionResponse = await inscribe(\n input,\n {\n accountId: this.auth.operatorId,\n privateKey: PK,\n network: this.network as 'mainnet' | 'testnet',\n },\n inscriptionOptions,\n );\n } else if (this.auth.signer) {\n inscriptionResponse = await inscribeWithSigner(\n input,\n this.auth.signer as DAppSigner,\n inscriptionOptions,\n );\n } else {\n throw new Error(\n 'No authentication method available - neither private key nor signer',\n );\n }\n\n if (\n !inscriptionResponse.confirmed ||\n !getTopicId(inscriptionResponse.inscription)\n ) {\n progressReporter.failed('Failed to inscribe profile content');\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: 'Failed to inscribe profile content',\n };\n }\n const topicId = getTopicId(inscriptionResponse.inscription);\n\n progressReporter.completed('Profile inscription completed', {\n topicId,\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .transactionId,\n });\n\n return {\n profileTopicId: topicId,\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .transactionId,\n success: true,\n totalCostHbar: inscriptionResponse.costSummary?.totalCostHbar,\n };\n } catch (error) {\n progressReporter.failed(\n `Error inscribing profile: ${error.message || 'Unknown error'}`,\n );\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: error.message || 'Unknown error during inscription',\n };\n }\n }\n\n private async attachUaidIfMissing(profile: HCS11Profile): Promise<void> {\n if (profile.uaid) {\n return;\n }\n if (!isHederaNetwork(this.network)) {\n return;\n }\n try {\n const { HCS14Client } = await import('../hcs-14');\n const hcs14 = new HCS14Client({ client: this.client });\n const did = await hcs14.createDid({\n method: 'hedera',\n client: this.client,\n });\n const nativeId = toHederaCaip10(this.network, this.auth.operatorId);\n let uid = this.auth.operatorId;\n const inboundFromProfile = profile.inboundTopicId;\n if (inboundFromProfile && inboundFromProfile.trim().length > 0) {\n uid = `${inboundFromProfile}@${this.auth.operatorId}`;\n } else {\n try {\n const fetched = await this.fetchProfileByAccountId(\n this.auth.operatorId,\n this.network as 'mainnet' | 'testnet',\n );\n const inbound = fetched?.topicInfo?.inboundTopic;\n if (inbound && inbound.trim().length > 0) {\n uid = `${inbound}@${this.auth.operatorId}`;\n }\n } catch {}\n }\n\n const uaid = hcs14.createUaid(did, { proto: 'hcs-10', nativeId, uid });\n profile.uaid = uaid;\n } catch (e) {\n this.logger.warn(\n 'Hiero registrar not available; skipping UAID generation for profile',\n e,\n );\n }\n }\n\n public async updateAccountMemoWithProfile(\n accountId: string | AccountId,\n profileTopicId: string,\n signerKeys?: PrivateKey[],\n ): Promise<TransactionResult> {\n try {\n this.logger.info(\n `Updating account memo for ${accountId} with profile ${profileTopicId}`,\n );\n const memo = this.setProfileForAccountMemo(profileTopicId);\n\n const transaction = new AccountUpdateTransaction()\n .setAccountMemo(memo)\n .setAccountId(accountId);\n\n if (signerKeys && signerKeys.length > 0) {\n const frozen = await transaction.freezeWith(this.client);\n let signed = frozen;\n for (const key of signerKeys) {\n signed = await signed.sign(key);\n }\n const response = await signed.execute(this.client);\n const receipt = await response.getReceipt(this.client);\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}`,\n };\n }\n return {\n success: true,\n result: receipt,\n };\n }\n\n return this.executeTransaction(transaction);\n } catch (error) {\n this.logger.error(\n `Error updating account memo: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`,\n );\n return {\n success: false,\n error:\n error instanceof Error\n ? error.message\n : 'Unknown error updating account memo',\n };\n }\n }\n\n /**\n * Creates and inscribes a profile.\n *\n * @param profile - The profile to create and inscribe.\n * @param updateAccountMemo - Whether to update the account memo with the profile.\n * @param options - Optional configuration options.\n * @returns A promise that resolves to the inscription result.\n */\n public async createAndInscribeProfile(\n profile: HCS11Profile,\n updateAccountMemo = true,\n options?: InscribeProfileOptions,\n ): Promise<InscribeProfileResponse> {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-ProfileCreation',\n logger: this.logger,\n callback: progressCallback,\n });\n\n progressReporter.preparing('Starting profile creation process', 0);\n\n const inscriptionProgress = progressReporter.createSubProgress({\n minPercent: 0,\n maxPercent: 80,\n logPrefix: 'Inscription',\n });\n\n const inscriptionResult = await this.inscribeProfile(profile, {\n ...options,\n progressCallback: data => {\n inscriptionProgress.report({\n stage: data.stage,\n message: data.message,\n progressPercent: data.progressPercent,\n details: data.details,\n });\n },\n });\n\n if (!inscriptionResult?.success) {\n progressReporter.failed('Profile inscription failed', {\n error: inscriptionResult?.error,\n });\n return inscriptionResult;\n }\n\n progressReporter.confirming('Profile inscribed, updating account memo', 85);\n\n if (updateAccountMemo) {\n const memoResult = await this.updateAccountMemoWithProfile(\n this.auth.operatorId,\n inscriptionResult.profileTopicId,\n );\n\n if (!memoResult.success) {\n progressReporter.failed('Failed to update account memo', {\n error: memoResult?.error,\n });\n return {\n ...inscriptionResult,\n success: false,\n error: memoResult?.error,\n };\n }\n }\n\n progressReporter.completed('Profile creation completed successfully', {\n profileTopicId: inscriptionResult.profileTopicId,\n transactionId: inscriptionResult.transactionId,\n totalCostHbar: inscriptionResult.totalCostHbar,\n });\n\n return inscriptionResult;\n }\n\n /**\n * Gets the capabilities from the capability names.\n *\n * @param capabilityNames - The capability names to get the capabilities for.\n * @returns The capabilities.\n */\n public async getCapabilitiesFromTags(\n capabilityNames: string[],\n ): Promise<number[]> {\n const capabilities: number[] = [];\n\n if (capabilityNames.length === 0) {\n return [AIAgentCapability.TEXT_GENERATION];\n }\n\n for (const capabilityName of capabilityNames) {\n const capability =\n capabilityNameToCapabilityMap[capabilityName.toLowerCase()];\n if (capability !== undefined && !capabilities.includes(capability)) {\n capabilities.push(capability);\n }\n }\n\n if (capabilities.length === 0) {\n capabilities.push(AIAgentCapability.TEXT_GENERATION);\n }\n\n return capabilities;\n }\n\n /**\n * Gets the agent type from the metadata.\n *\n * @param metadata - The metadata of the agent.\n * @returns The agent type.\n */\n public getAgentTypeFromMetadata(metadata: AgentMetadata): AIAgentType {\n if (metadata.type === 'autonomous') {\n return AIAgentType.AUTONOMOUS;\n } else {\n return AIAgentType.MANUAL;\n }\n }\n\n /**\n * Fetches a profile from the account memo.\n *\n * @param accountId - The account ID of the agent to fetch the profile for.\n * @param network - The network to use for the fetch.\n * @returns A promise that resolves to the profile.\n */\n public async fetchProfileByAccountId(\n accountId: string | AccountId,\n network?: string,\n ): Promise<{\n success: boolean;\n profile?: HCS11Profile;\n error?: string;\n topicInfo?: TopicInfo;\n }> {\n try {\n this.logger.debug(\n `Fetching profile for account ${accountId.toString()} on ${this.network}`,\n );\n\n const memo = await this.mirrorNode.getAccountMemo(accountId.toString());\n\n this.logger.debug(`Got account memo: ${memo}`);\n\n if (!memo?.startsWith('hcs-11:')) {\n return {\n success: false,\n error: `Account ${accountId.toString()} does not have a valid HCS-11 memo. Current memo: ${memo || 'empty'}`,\n };\n }\n\n this.logger.debug(`Found HCS-11 memo: ${memo}`);\n\n const protocolReference = memo.substring(7);\n\n if (protocolReference?.startsWith('hcs://')) {\n const hcsFormat = protocolReference.match(/hcs:\\/\\/(\\d+)\\/(.+)/);\n\n if (!hcsFormat) {\n return {\n success: false,\n error: `Invalid HCS protocol reference format: ${protocolReference}`,\n };\n }\n\n const [_, protocolId, profileTopicId] = hcsFormat;\n const networkParam = network || this.network || 'mainnet';\n\n this.logger.debug(\n `Retrieving profile from Kiloscribe CDN: ${profileTopicId}`,\n );\n const cdnUrl = `https://kiloscribe.com/api/inscription-cdn/${profileTopicId}?network=${networkParam}`;\n\n try {\n const response = await fetch(cdnUrl);\n\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to fetch profile from Kiloscribe CDN: ${response.statusText}`,\n };\n }\n\n const profileData = await response.json();\n\n if (!profileData) {\n return {\n success: false,\n error: `No profile data found for topic ${profileTopicId}`,\n };\n }\n\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data for topic ${profileTopicId}`,\n };\n }\n\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId,\n },\n };\n } catch (cdnError) {\n this.logger.error(\n `Error retrieving from Kiloscribe CDN: ${cdnError.message}`,\n );\n return {\n success: false,\n error: `Error retrieving from Kiloscribe CDN: ${cdnError.message}`,\n };\n }\n } else if (protocolReference.startsWith('ipfs://')) {\n this.logger.warn('IPFS protocol references are not fully supported');\n const response = await fetch(\n `https://ipfs.io/ipfs/${protocolReference.replace('ipfs://', '')}`,\n );\n const profileData = await response.json();\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data from IPFS reference ${protocolReference}`,\n };\n }\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId: '',\n },\n };\n } else if (protocolReference.startsWith('ar://')) {\n const arTxId = protocolReference.replace('ar://', '');\n const response = await fetch(`https://arweave.net/${arTxId}`);\n\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to fetch profile from Arweave ${arTxId}: ${response.statusText}`,\n };\n }\n\n const profileData = await response.json();\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data from Arweave reference ${arTxId}`,\n };\n }\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId: '',\n },\n };\n } else {\n return {\n success: false,\n error: `Invalid protocol reference format: ${protocolReference}`,\n };\n }\n } catch (error) {\n this.logger.error(`Error fetching profile: ${error.message}`);\n return {\n success: false,\n error: `Error fetching profile: ${error.message}`,\n };\n }\n }\n}\n"],"names":["response","receipt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es27.js","sources":["../../src/hcs-11/client.ts"],"sourcesContent":["import {\n AccountId,\n AccountUpdateTransaction,\n Client,\n PrivateKey,\n Status,\n Transaction,\n} from '@hashgraph/sdk';\nimport {\n inscribe,\n inscribeWithSigner,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResult,\n} from '../inscribe';\nimport { Logger, ILogger, getTopicId } from '../utils';\nimport { z, ZodIssue } from 'zod';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { ProgressReporter } from '../utils/progress-reporter';\nimport { HederaMirrorNode } from '../services';\nimport { isHederaNetwork, toHederaCaip10 } from '../hcs-14/caip';\nimport { TopicInfo } from '../services/types';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { NetworkType } from '../utils/types';\nimport {\n ProfileType,\n AIAgentType,\n AIAgentCapability,\n SocialLink,\n PersonalProfile,\n AIAgentProfile,\n HCS11Profile,\n HCS11Auth,\n HCS11ClientConfig,\n TransactionResult,\n InscribeProfileResponse,\n InscribeImageResponse,\n AgentMetadata,\n InscribeImageOptions,\n InscribeProfileOptions,\n capabilityNameToCapabilityMap,\n MCPServerDetails,\n MCPServerProfile,\n MCPServerCapability,\n VerificationType,\n} from './types';\n\nexport const SocialLinkSchema = z.object({\n platform: z.string().min(1),\n handle: z.string().min(1),\n});\n\nexport const AIAgentDetailsSchema = z.object({\n type: z.nativeEnum(AIAgentType),\n capabilities: z.array(z.nativeEnum(AIAgentCapability)).min(1),\n model: z.string().min(1),\n creator: z.string().optional(),\n});\n\nexport const MCPServerConnectionInfoSchema = z.object({\n url: z.string().min(1),\n transport: z.enum(['stdio', 'sse']),\n});\n\nexport const MCPServerVerificationSchema = z.object({\n type: z.nativeEnum(VerificationType),\n value: z.string(),\n dns_field: z.string().optional(),\n challenge_path: z.string().optional(),\n});\n\nexport const MCPServerHostSchema = z.object({\n minVersion: z.string().optional(),\n});\n\nexport const MCPServerResourceSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n});\n\nexport const MCPServerToolSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n});\n\nexport const MCPServerDetailsSchema = z.object({\n version: z.string().min(1),\n connectionInfo: MCPServerConnectionInfoSchema,\n services: z.array(z.nativeEnum(MCPServerCapability)).min(1),\n description: z.string().min(1),\n verification: MCPServerVerificationSchema.optional(),\n host: MCPServerHostSchema.optional(),\n capabilities: z.array(z.string()).optional(),\n resources: z.array(MCPServerResourceSchema).optional(),\n tools: z.array(MCPServerToolSchema).optional(),\n maintainer: z.string().optional(),\n repository: z.string().optional(),\n docs: z.string().optional(),\n});\n\nexport const BaseProfileSchema = z.object({\n version: z.string().min(1),\n type: z.nativeEnum(ProfileType),\n display_name: z.string().min(1),\n alias: z.string().optional(),\n bio: z.string().optional(),\n socials: z.array(SocialLinkSchema).optional(),\n profileImage: z.string().optional(),\n uaid: z.string().optional(),\n properties: z.record(z.any()).optional(),\n inboundTopicId: z.string().optional(),\n outboundTopicId: z.string().optional(),\n base_account: z.string().optional(),\n});\n\nexport const PersonalProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.PERSONAL),\n language: z.string().optional(),\n timezone: z.string().optional(),\n});\n\nexport const AIAgentProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.AI_AGENT),\n aiAgent: AIAgentDetailsSchema,\n});\n\nexport const MCPServerProfileSchema = BaseProfileSchema.extend({\n type: z.literal(ProfileType.MCP_SERVER),\n mcpServer: MCPServerDetailsSchema,\n});\n\nconst FloraProfileSchema = z.object({\n version: z.string(),\n type: z.literal(ProfileType.FLORA),\n display_name: z.string().min(1),\n members: z.array(\n z.object({\n accountId: z.string(),\n publicKey: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n threshold: z.number().min(1),\n topics: z.object({\n communication: z.string(),\n transaction: z.string(),\n state: z.string(),\n }),\n inboundTopicId: z.string(),\n outboundTopicId: z.string(),\n bio: z.string().optional(),\n metadata: z.record(z.any()).optional(),\n policies: z.record(z.any()).optional(),\n});\n\nexport const HCS11ProfileSchema = z.union([\n PersonalProfileSchema,\n AIAgentProfileSchema,\n MCPServerProfileSchema,\n FloraProfileSchema,\n]);\n\nconst MIME_TYPES_BY_EXTENSION: Record<string, string> = {\n avif: 'image/avif',\n gif: 'image/gif',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n json: 'application/json',\n png: 'image/png',\n svg: 'image/svg+xml',\n txt: 'text/plain',\n webp: 'image/webp',\n};\n\nconst lookupMimeType = (fileName: string): string => {\n const trimmed = fileName.trim();\n const lastDotIndex = trimmed.lastIndexOf('.');\n if (lastDotIndex < 1 || lastDotIndex === trimmed.length - 1) {\n return 'application/octet-stream';\n }\n const extension = trimmed.substring(lastDotIndex + 1).toLowerCase();\n return MIME_TYPES_BY_EXTENSION[extension] ?? 'application/octet-stream';\n};\n\nexport class HCS11Client {\n private client: Client;\n private auth: HCS11Auth;\n private network: string;\n private logger: ILogger;\n private mirrorNode: HederaMirrorNode;\n private keyType: 'ed25519' | 'ecdsa';\n private operatorId: string;\n private operatorCtx?: NodeOperatorContext;\n\n constructor(config: HCS11ClientConfig) {\n this.client =\n config.client ??\n (config.network === 'mainnet'\n ? Client.forMainnet()\n : Client.forTestnet());\n this.auth = config.auth;\n this.network = config.network;\n this.operatorId = config.auth.operatorId;\n\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS-11',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(\n this.network as 'mainnet' | 'testnet',\n this.logger,\n );\n\n if (this.auth.privateKey) {\n this.operatorCtx = createNodeOperatorContext({\n network: this.network as NetworkType,\n operatorId: this.operatorId,\n operatorKey: this.auth.privateKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: this.client,\n });\n this.client = this.operatorCtx.client;\n this.keyType = this.operatorCtx.keyType;\n void this.operatorCtx.ensureInitialized();\n this.client.setOperator(\n this.operatorId.toString(),\n this.operatorCtx.operatorKey,\n );\n } else {\n this.keyType = config.keyType || 'ed25519';\n }\n }\n\n public getClient(): Client {\n return this.client;\n }\n\n public getOperatorId(): string {\n return this.auth.operatorId;\n }\n\n public async initializeOperator() {\n if (!this.operatorCtx) {\n return;\n }\n\n try {\n await this.operatorCtx.ensureInitialized();\n this.keyType = this.operatorCtx.keyType;\n this.client.setOperator(this.operatorId, this.operatorCtx.operatorKey);\n } catch (error) {\n this.logger.warn(\n `Failed to verify operator key with mirror node: ${\n (error as Error).message\n }`,\n );\n }\n }\n\n public createPersonalProfile(\n displayName: string,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n language?: string;\n timezone?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n baseAccount?: string;\n },\n ): PersonalProfile {\n return {\n version: '1.0',\n type: ProfileType.PERSONAL,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n };\n }\n\n public createAIAgentProfile(\n displayName: string,\n agentType: AIAgentType,\n capabilities: AIAgentCapability[],\n model: string,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n creator?: string;\n baseAccount?: string;\n },\n ): AIAgentProfile {\n const validation = this.validateProfile({\n version: '1.0',\n type: ProfileType.AI_AGENT,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n aiAgent: {\n type: agentType,\n capabilities,\n model,\n creator: options?.creator,\n },\n });\n\n if (!validation.valid) {\n throw new Error(\n `Invalid AI Agent Profile: ${validation.errors.join(', ')}`,\n );\n }\n\n return {\n version: '1.0',\n type: ProfileType.AI_AGENT,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n base_account: options?.baseAccount,\n aiAgent: {\n type: agentType,\n capabilities,\n model,\n creator: options?.creator,\n },\n };\n }\n\n /**\n * Creates an MCP server profile.\n *\n * @param displayName - The display name for the MCP server\n * @param serverDetails - The MCP server details\n * @param options - Additional profile options\n * @returns An MCPServerProfile object\n */\n public createMCPServerProfile(\n displayName: string,\n serverDetails: MCPServerDetails,\n options?: {\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n properties?: Record<string, any>;\n inboundTopicId?: string;\n outboundTopicId?: string;\n },\n ): MCPServerProfile {\n const validation = this.validateProfile({\n version: '1.0',\n type: ProfileType.MCP_SERVER,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n mcpServer: serverDetails,\n });\n\n if (!validation.valid) {\n throw new Error(\n `Invalid MCP Server Profile: ${validation.errors.join(', ')}`,\n );\n }\n\n return {\n version: '1.0',\n type: ProfileType.MCP_SERVER,\n display_name: displayName,\n alias: options?.alias,\n bio: options?.bio,\n socials: options?.socials,\n profileImage: options?.profileImage,\n properties: options?.properties,\n inboundTopicId: options?.inboundTopicId,\n outboundTopicId: options?.outboundTopicId,\n mcpServer: serverDetails,\n };\n }\n\n public validateProfile(profile: unknown): {\n valid: boolean;\n errors: string[];\n } {\n const result = HCS11ProfileSchema.safeParse(profile);\n\n if (result.success) {\n return { valid: true, errors: [] };\n }\n\n const formattedErrors = result.error.errors.map((err: ZodIssue) => {\n const path = err.path.join('.');\n let message = err.message;\n\n if (err.code === 'invalid_type') {\n message = `Expected ${err.expected}, got ${err.received}`;\n } else if (err.code === 'invalid_enum_value') {\n const validOptions = err.options?.join(', ');\n message = `Invalid value. Valid options are: ${validOptions}`;\n } else if (err.code === 'too_small' && err.type === 'string') {\n message = 'Cannot be empty';\n }\n\n return `${path}: ${message}`;\n });\n\n return { valid: false, errors: formattedErrors };\n }\n\n public profileToJSONString(profile: HCS11Profile): string {\n return JSON.stringify(profile);\n }\n\n public parseProfileFromString(profileStr: string): HCS11Profile | null {\n try {\n const parsedProfile = JSON.parse(profileStr);\n const validation = this.validateProfile(parsedProfile);\n if (!validation.valid) {\n this.logger.error('Invalid profile format:', validation.errors);\n return null;\n }\n return parsedProfile as HCS11Profile;\n } catch (error) {\n this.logger.error('Error parsing profile:');\n return null;\n }\n }\n\n public setProfileForAccountMemo(\n topicId: string,\n topicStandard: 1 | 2 | 7 = 1,\n ): string {\n return `hcs-11:hcs://${topicStandard}/${topicId}`;\n }\n\n private async executeTransaction<T>(\n transaction: Transaction,\n ): Promise<TransactionResult<T>> {\n try {\n if (this.auth.privateKey) {\n const signedTx = await transaction.signWithOperator(this.client);\n const response = await signedTx.execute(this.client);\n const receipt = await response.getReceipt(this.client);\n\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}`,\n };\n }\n\n return {\n success: true,\n result: receipt as T,\n };\n }\n\n if (!this.auth.signer) {\n throw new Error('No valid authentication method provided');\n }\n\n const signer = this.auth.signer;\n const frozenTransaction = await transaction.freezeWithSigner(signer);\n const response = await frozenTransaction.executeWithSigner(signer);\n const receipt = await response.getReceiptWithSigner(signer);\n\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}: ${Status.Success.toString()}`,\n };\n }\n\n return {\n success: true,\n result: receipt as T,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error\n ? error.message\n : 'Unknown error during transaction execution',\n };\n }\n }\n\n public async inscribeImage(\n buffer: Buffer,\n fileName: string,\n options?: InscribeImageOptions,\n ): Promise<InscribeImageResponse> {\n try {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-Image',\n logger: this.logger,\n callback: progressCallback as any,\n });\n\n progressReporter.preparing('Preparing to inscribe image', 0);\n\n const mimeType = lookupMimeType(fileName);\n\n const waitForConfirmation = options?.waitForConfirmation ?? true;\n\n let inscriptionResponse;\n if (this.auth.signer) {\n if ('accountId' in this.auth.signer) {\n progressReporter.preparing('Using signer for inscription', 10);\n\n inscriptionResponse = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n this.auth.signer as DAppSigner,\n {\n network: this.network as 'mainnet' | 'testnet',\n waitForConfirmation,\n waitMaxAttempts: 150,\n waitIntervalMs: 4000,\n logging: {\n level: 'debug',\n },\n progressCallback: data => {\n const adjustedPercent = 10 + (data.progressPercent || 0) * 0.8;\n progressReporter.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n },\n );\n } else {\n progressReporter.failed(\n 'Signer must be a DAppSigner for inscription',\n );\n throw new Error('Signer must be a DAppSigner for inscription');\n }\n } else {\n if (!this.auth.privateKey) {\n progressReporter.failed('Private key is required for inscription');\n this.logger.error('Private key is required for inscription');\n throw new Error('Private key is required for inscription');\n }\n\n progressReporter.preparing('Using private key for inscription', 10);\n\n const PK =\n this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(this.auth.privateKey)\n : PrivateKey.fromStringED25519(this.auth.privateKey);\n\n inscriptionResponse = await inscribe(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n {\n accountId: this.auth.operatorId,\n privateKey: PK,\n network: this.network as 'mainnet' | 'testnet',\n },\n {\n waitForConfirmation,\n waitMaxAttempts: 150,\n waitIntervalMs: 2000,\n logging: {\n level: 'debug',\n },\n progressCallback: data => {\n const adjustedPercent = 10 + (data.progressPercent || 0) * 0.8;\n progressReporter.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n },\n );\n }\n\n if (inscriptionResponse.confirmed) {\n progressReporter.completed('Image inscription completed', {\n topicId: getTopicId(inscriptionResponse.inscription),\n });\n return {\n imageTopicId: getTopicId(inscriptionResponse.inscription) || '',\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .jobId,\n success: true,\n };\n } else {\n const jobId = inscriptionResponse.quote\n ? 'quote-only'\n : (inscriptionResponse.result as InscriptionResult).jobId;\n progressReporter.verifying('Waiting for inscription confirmation', 50, {\n jobId,\n });\n return {\n imageTopicId: '',\n transactionId: jobId,\n success: false,\n error: 'Inscription not confirmed',\n };\n }\n } catch (error) {\n this.logger.error('Error inscribing image:', error);\n return {\n imageTopicId: '',\n transactionId: '',\n success: false,\n error:\n error instanceof Error ? error.message : 'Error inscribing image',\n };\n }\n }\n\n public async inscribeProfile(\n profile: HCS11Profile,\n options?: InscribeProfileOptions,\n ): Promise<InscribeProfileResponse> {\n this.logger.info('Inscribing HCS-11 profile');\n\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-Profile',\n logger: this.logger,\n callback: progressCallback,\n });\n\n await this.attachUaidIfMissing(profile);\n\n progressReporter.preparing('Validating profile data', 5);\n\n const validation = this.validateProfile(profile);\n if (!validation.valid) {\n progressReporter.failed(\n `Invalid profile: ${validation.errors.join(', ')}`,\n );\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: `Invalid profile: ${validation.errors.join(', ')}`,\n };\n }\n\n progressReporter.preparing('Formatting profile for inscription', 15);\n\n const profileJson = this.profileToJSONString(profile);\n const fileName = `profile-${profile.display_name\n .toLowerCase()\n .replace(/\\s+/g, '-')}.json`;\n\n try {\n const contentBuffer = Buffer.from(profileJson, 'utf-8');\n const contentType = 'application/json';\n\n progressReporter.preparing('Preparing profile for inscription', 20);\n\n const input: InscriptionInput = {\n type: 'buffer',\n buffer: contentBuffer,\n fileName,\n mimeType: contentType,\n };\n\n const inscriptionOptions: InscriptionOptions = {\n waitForConfirmation: true,\n mode: 'file',\n network: this.network as 'mainnet' | 'testnet',\n waitMaxAttempts: 100,\n waitIntervalMs: 2000,\n progressCallback: data => {\n const adjustedPercent =\n 20 + Number(data?.progressPercent || 0) * 0.75;\n progressReporter?.report({\n stage: data.stage,\n message: data.message,\n progressPercent: adjustedPercent,\n details: data.details,\n });\n },\n };\n\n progressReporter.submitting('Submitting profile to Hedera network', 30);\n\n let inscriptionResponse;\n\n if (this.auth.privateKey) {\n const PK =\n this.keyType === 'ecdsa'\n ? PrivateKey.fromStringECDSA(this.auth.privateKey)\n : PrivateKey.fromStringED25519(this.auth.privateKey);\n\n inscriptionResponse = await inscribe(\n input,\n {\n accountId: this.auth.operatorId,\n privateKey: PK,\n network: this.network as 'mainnet' | 'testnet',\n },\n inscriptionOptions,\n );\n } else if (this.auth.signer) {\n inscriptionResponse = await inscribeWithSigner(\n input,\n this.auth.signer as DAppSigner,\n inscriptionOptions,\n );\n } else {\n throw new Error(\n 'No authentication method available - neither private key nor signer',\n );\n }\n\n if (\n !inscriptionResponse.confirmed ||\n !getTopicId(inscriptionResponse.inscription)\n ) {\n progressReporter.failed('Failed to inscribe profile content');\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: 'Failed to inscribe profile content',\n };\n }\n const topicId = getTopicId(inscriptionResponse.inscription);\n\n progressReporter.completed('Profile inscription completed', {\n topicId,\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .transactionId,\n });\n\n return {\n profileTopicId: topicId,\n transactionId: (inscriptionResponse.result as InscriptionResult)\n .transactionId,\n success: true,\n totalCostHbar: inscriptionResponse.costSummary?.totalCostHbar,\n };\n } catch (error) {\n progressReporter.failed(\n `Error inscribing profile: ${error.message || 'Unknown error'}`,\n );\n return {\n profileTopicId: '',\n transactionId: '',\n success: false,\n error: error.message || 'Unknown error during inscription',\n };\n }\n }\n\n private async attachUaidIfMissing(profile: HCS11Profile): Promise<void> {\n if (profile.uaid) {\n return;\n }\n if (!isHederaNetwork(this.network)) {\n return;\n }\n try {\n const { HCS14Client } = await import('../hcs-14');\n const hcs14 = new HCS14Client({ client: this.client });\n const did = await hcs14.createDid({\n method: 'hedera',\n client: this.client,\n });\n const nativeId = toHederaCaip10(this.network, this.auth.operatorId);\n let uid = this.auth.operatorId;\n const inboundFromProfile = profile.inboundTopicId;\n if (inboundFromProfile && inboundFromProfile.trim().length > 0) {\n uid = `${inboundFromProfile}@${this.auth.operatorId}`;\n } else {\n try {\n const fetched = await this.fetchProfileByAccountId(\n this.auth.operatorId,\n this.network as 'mainnet' | 'testnet',\n );\n const inbound = fetched?.topicInfo?.inboundTopic;\n if (inbound && inbound.trim().length > 0) {\n uid = `${inbound}@${this.auth.operatorId}`;\n }\n } catch {}\n }\n\n const uaid = hcs14.createUaid(did, { proto: 'hcs-10', nativeId, uid });\n profile.uaid = uaid;\n } catch (e) {\n this.logger.warn(\n 'Hiero registrar not available; skipping UAID generation for profile',\n e,\n );\n }\n }\n\n public async updateAccountMemoWithProfile(\n accountId: string | AccountId,\n profileTopicId: string,\n signerKeys?: PrivateKey[],\n ): Promise<TransactionResult> {\n try {\n this.logger.info(\n `Updating account memo for ${accountId} with profile ${profileTopicId}`,\n );\n const memo = this.setProfileForAccountMemo(profileTopicId);\n\n const transaction = new AccountUpdateTransaction()\n .setAccountMemo(memo)\n .setAccountId(accountId);\n\n if (signerKeys && signerKeys.length > 0) {\n const frozen = await transaction.freezeWith(this.client);\n let signed = frozen;\n for (const key of signerKeys) {\n signed = await signed.sign(key);\n }\n const response = await signed.execute(this.client);\n const receipt = await response.getReceipt(this.client);\n if (receipt.status.toString() !== Status.Success.toString()) {\n return {\n success: false,\n error: `Transaction failed: ${receipt.status.toString()}`,\n };\n }\n return {\n success: true,\n result: receipt,\n };\n }\n\n return this.executeTransaction(transaction);\n } catch (error) {\n this.logger.error(\n `Error updating account memo: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`,\n );\n return {\n success: false,\n error:\n error instanceof Error\n ? error.message\n : 'Unknown error updating account memo',\n };\n }\n }\n\n /**\n * Creates and inscribes a profile.\n *\n * @param profile - The profile to create and inscribe.\n * @param updateAccountMemo - Whether to update the account memo with the profile.\n * @param options - Optional configuration options.\n * @returns A promise that resolves to the inscription result.\n */\n public async createAndInscribeProfile(\n profile: HCS11Profile,\n updateAccountMemo = true,\n options?: InscribeProfileOptions,\n ): Promise<InscribeProfileResponse> {\n const progressCallback = options?.progressCallback;\n const progressReporter = new ProgressReporter({\n module: 'HCS11-ProfileCreation',\n logger: this.logger,\n callback: progressCallback,\n });\n\n progressReporter.preparing('Starting profile creation process', 0);\n\n const inscriptionProgress = progressReporter.createSubProgress({\n minPercent: 0,\n maxPercent: 80,\n logPrefix: 'Inscription',\n });\n\n const inscriptionResult = await this.inscribeProfile(profile, {\n ...options,\n progressCallback: data => {\n inscriptionProgress.report({\n stage: data.stage,\n message: data.message,\n progressPercent: data.progressPercent,\n details: data.details,\n });\n },\n });\n\n if (!inscriptionResult?.success) {\n progressReporter.failed('Profile inscription failed', {\n error: inscriptionResult?.error,\n });\n return inscriptionResult;\n }\n\n progressReporter.confirming('Profile inscribed, updating account memo', 85);\n\n if (updateAccountMemo) {\n const memoResult = await this.updateAccountMemoWithProfile(\n this.auth.operatorId,\n inscriptionResult.profileTopicId,\n );\n\n if (!memoResult.success) {\n progressReporter.failed('Failed to update account memo', {\n error: memoResult?.error,\n });\n return {\n ...inscriptionResult,\n success: false,\n error: memoResult?.error,\n };\n }\n }\n\n progressReporter.completed('Profile creation completed successfully', {\n profileTopicId: inscriptionResult.profileTopicId,\n transactionId: inscriptionResult.transactionId,\n totalCostHbar: inscriptionResult.totalCostHbar,\n });\n\n return inscriptionResult;\n }\n\n /**\n * Gets the capabilities from the capability names.\n *\n * @param capabilityNames - The capability names to get the capabilities for.\n * @returns The capabilities.\n */\n public async getCapabilitiesFromTags(\n capabilityNames: string[],\n ): Promise<number[]> {\n const capabilities: number[] = [];\n\n if (capabilityNames.length === 0) {\n return [AIAgentCapability.TEXT_GENERATION];\n }\n\n for (const capabilityName of capabilityNames) {\n const capability =\n capabilityNameToCapabilityMap[capabilityName.toLowerCase()];\n if (capability !== undefined && !capabilities.includes(capability)) {\n capabilities.push(capability);\n }\n }\n\n if (capabilities.length === 0) {\n capabilities.push(AIAgentCapability.TEXT_GENERATION);\n }\n\n return capabilities;\n }\n\n /**\n * Gets the agent type from the metadata.\n *\n * @param metadata - The metadata of the agent.\n * @returns The agent type.\n */\n public getAgentTypeFromMetadata(metadata: AgentMetadata): AIAgentType {\n if (metadata.type === 'autonomous') {\n return AIAgentType.AUTONOMOUS;\n } else {\n return AIAgentType.MANUAL;\n }\n }\n\n /**\n * Fetches a profile from the account memo.\n *\n * @param accountId - The account ID of the agent to fetch the profile for.\n * @param network - The network to use for the fetch.\n * @returns A promise that resolves to the profile.\n */\n public async fetchProfileByAccountId(\n accountId: string | AccountId,\n network?: string,\n ): Promise<{\n success: boolean;\n profile?: HCS11Profile;\n error?: string;\n topicInfo?: TopicInfo;\n }> {\n try {\n this.logger.debug(\n `Fetching profile for account ${accountId.toString()} on ${this.network}`,\n );\n\n const memo = await this.mirrorNode.getAccountMemo(accountId.toString());\n\n this.logger.debug(`Got account memo: ${memo}`);\n\n if (!memo?.startsWith('hcs-11:')) {\n return {\n success: false,\n error: `Account ${accountId.toString()} does not have a valid HCS-11 memo. Current memo: ${memo || 'empty'}`,\n };\n }\n\n this.logger.debug(`Found HCS-11 memo: ${memo}`);\n\n const protocolReference = memo.substring(7);\n\n if (protocolReference?.startsWith('hcs://')) {\n const hcsFormat = protocolReference.match(/hcs:\\/\\/(\\d+)\\/(.+)/);\n\n if (!hcsFormat) {\n return {\n success: false,\n error: `Invalid HCS protocol reference format: ${protocolReference}`,\n };\n }\n\n const [_, protocolId, profileTopicId] = hcsFormat;\n const networkParam = network || this.network || 'mainnet';\n\n this.logger.debug(\n `Retrieving profile from Kiloscribe CDN: ${profileTopicId}`,\n );\n const cdnUrl = `https://kiloscribe.com/api/inscription-cdn/${profileTopicId}?network=${networkParam}`;\n\n try {\n const response = await fetch(cdnUrl);\n\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to fetch profile from Kiloscribe CDN: ${response.statusText}`,\n };\n }\n\n const profileData = await response.json();\n\n if (!profileData) {\n return {\n success: false,\n error: `No profile data found for topic ${profileTopicId}`,\n };\n }\n\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data for topic ${profileTopicId}`,\n };\n }\n\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId,\n },\n };\n } catch (cdnError) {\n this.logger.error(\n `Error retrieving from Kiloscribe CDN: ${cdnError.message}`,\n );\n return {\n success: false,\n error: `Error retrieving from Kiloscribe CDN: ${cdnError.message}`,\n };\n }\n } else if (protocolReference.startsWith('ipfs://')) {\n this.logger.warn('IPFS protocol references are not fully supported');\n const response = await fetch(\n `https://ipfs.io/ipfs/${protocolReference.replace('ipfs://', '')}`,\n );\n const profileData = await response.json();\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data from IPFS reference ${protocolReference}`,\n };\n }\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId: '',\n },\n };\n } else if (protocolReference.startsWith('ar://')) {\n const arTxId = protocolReference.replace('ar://', '');\n const response = await fetch(`https://arweave.net/${arTxId}`);\n\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to fetch profile from Arweave ${arTxId}: ${response.statusText}`,\n };\n }\n\n const profileData = await response.json();\n const parsed = HCS11ProfileSchema.safeParse(profileData);\n if (!parsed.success) {\n return {\n success: false,\n error: `Invalid HCS-11 profile data from Arweave reference ${arTxId}`,\n };\n }\n return {\n success: true,\n profile: parsed.data as HCS11Profile,\n topicInfo: {\n inboundTopic: parsed.data.inboundTopicId || '',\n outboundTopic: parsed.data.outboundTopicId || '',\n profileTopicId: '',\n },\n };\n } else {\n return {\n success: false,\n error: `Invalid protocol reference format: ${protocolReference}`,\n };\n }\n } catch (error) {\n this.logger.error(`Error fetching profile: ${error.message}`);\n return {\n success: false,\n error: `Error fetching profile: ${error.message}`,\n };\n }\n }\n}\n"],"names":["response","receipt"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RegistryType } from "./standards-sdk.es29.js";
|
|
2
2
|
import { inscribe, inscribeWithSigner } from "./standards-sdk.es147.js";
|
|
3
|
-
import "./standards-sdk.
|
|
3
|
+
import "./standards-sdk.es185.js";
|
|
4
4
|
class BaseRegistry {
|
|
5
5
|
constructor(networkType, logger, registryType, topicId, client) {
|
|
6
6
|
this.entries = /* @__PURE__ */ new Map();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RegistryType } from "./standards-sdk.es29.js";
|
|
2
2
|
import { BaseRegistry } from "./standards-sdk.es30.js";
|
|
3
3
|
import { retrieveInscription } from "./standards-sdk.es147.js";
|
|
4
|
-
import "./standards-sdk.
|
|
4
|
+
import "./standards-sdk.es185.js";
|
|
5
5
|
import { getCryptoAdapter } from "./standards-sdk.es142.js";
|
|
6
6
|
import { isSSREnvironment } from "./standards-sdk.es140.js";
|
|
7
7
|
import { validateActionRegistration } from "./standards-sdk.es42.js";
|
|
@@ -3,9 +3,10 @@ import { HederaMirrorNode } from "./standards-sdk.es149.js";
|
|
|
3
3
|
import "buffer";
|
|
4
4
|
import "@noble/curves/secp256k1.js";
|
|
5
5
|
import "zod";
|
|
6
|
-
import "./standards-sdk.
|
|
7
|
-
import "./standards-sdk.
|
|
8
|
-
import "./standards-sdk.
|
|
6
|
+
import "./standards-sdk.es158.js";
|
|
7
|
+
import "./standards-sdk.es152.js";
|
|
8
|
+
import "./standards-sdk.es156.js";
|
|
9
|
+
import "./standards-sdk.es185.js";
|
|
9
10
|
import "@hashgraph/proto";
|
|
10
11
|
import "@hashgraph/sdk";
|
|
11
12
|
import "ethers";
|