@hashgraphonline/standards-sdk 0.1.168 → 0.1.169
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 +1 -0
- package/dist/browser/hcs-11/client.d.ts.map +1 -1
- package/dist/browser/hcs-21/sdk.d.ts.map +1 -1
- package/dist/browser/hcs-27/base-client.d.ts +41 -0
- package/dist/browser/hcs-27/base-client.d.ts.map +1 -0
- package/dist/browser/hcs-27/index.d.ts +6 -0
- package/dist/browser/hcs-27/index.d.ts.map +1 -0
- package/dist/browser/hcs-27/memos.d.ts +5 -0
- package/dist/browser/hcs-27/memos.d.ts.map +1 -0
- package/dist/browser/hcs-27/merkle.d.ts +23 -0
- package/dist/browser/hcs-27/merkle.d.ts.map +1 -0
- package/dist/browser/hcs-27/sdk.d.ts +23 -0
- package/dist/browser/hcs-27/sdk.d.ts.map +1 -0
- package/dist/browser/hcs-27/types.d.ts +1611 -0
- package/dist/browser/hcs-27/types.d.ts.map +1 -0
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +29 -5
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser/utils/key-type-detector.d.ts.map +1 -1
- package/dist/cjs/hcs-11/client.d.ts.map +1 -1
- package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
- package/dist/cjs/hcs-27/base-client.d.ts +41 -0
- package/dist/cjs/hcs-27/base-client.d.ts.map +1 -0
- package/dist/cjs/hcs-27/index.d.ts +6 -0
- package/dist/cjs/hcs-27/index.d.ts.map +1 -0
- package/dist/cjs/hcs-27/memos.d.ts +5 -0
- package/dist/cjs/hcs-27/memos.d.ts.map +1 -0
- package/dist/cjs/hcs-27/merkle.d.ts +23 -0
- package/dist/cjs/hcs-27/merkle.d.ts.map +1 -0
- package/dist/cjs/hcs-27/sdk.d.ts +23 -0
- package/dist/cjs/hcs-27/sdk.d.ts.map +1 -0
- package/dist/cjs/hcs-27/types.d.ts +1611 -0
- package/dist/cjs/hcs-27/types.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/cjs/utils/key-type-detector.d.ts.map +1 -1
- package/dist/es/hcs-11/client.d.ts.map +1 -1
- package/dist/es/hcs-21/sdk.d.ts.map +1 -1
- package/dist/es/hcs-27/base-client.d.ts +41 -0
- package/dist/es/hcs-27/base-client.d.ts.map +1 -0
- package/dist/es/hcs-27/index.d.ts +6 -0
- package/dist/es/hcs-27/index.d.ts.map +1 -0
- package/dist/es/hcs-27/memos.d.ts +5 -0
- package/dist/es/hcs-27/memos.d.ts.map +1 -0
- package/dist/es/hcs-27/merkle.d.ts +23 -0
- package/dist/es/hcs-27/merkle.d.ts.map +1 -0
- package/dist/es/hcs-27/sdk.d.ts +23 -0
- package/dist/es/hcs-27/sdk.d.ts.map +1 -0
- package/dist/es/hcs-27/types.d.ts +1611 -0
- package/dist/es/hcs-27/types.d.ts.map +1 -0
- package/dist/es/index.d.ts +1 -0
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +67 -38
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +2 -2
- package/dist/es/standards-sdk.es103.js +2 -2
- 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 +2 -2
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es111.js +2 -2
- package/dist/es/standards-sdk.es112.js +151 -234
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +20 -471
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +263 -104
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +167 -138
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +315 -29
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +250 -10
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +448 -152
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +101 -25
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +155 -17
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +29 -155
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +9 -200
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +146 -754
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +27 -11
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +19 -564
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +140 -582
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +202 -12
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +790 -2
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +10 -84
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +567 -40
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +626 -2
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +12 -234
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +2 -1140
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +73 -292
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +36 -418
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +2 -355
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +198 -1079
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +1107 -175
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +218 -1479
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +422 -1500
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +351 -13
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +1102 -73
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +203 -76
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +1459 -830
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +1499 -59
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +14 -156
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +87 -7
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +74 -79
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +934 -61
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +60 -30
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +159 -34
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +7 -48
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +70 -122
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +58 -35
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +30 -56
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +34 -84
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +48 -81
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +124 -186
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +34 -12474
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +5 -5
- package/dist/es/standards-sdk.es160.js +12477 -12
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +15 -71
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +48 -542
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +72 -160
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +71 -312
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +187 -333
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +538 -441
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +65 -323
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +162 -66
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +310 -160
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +336 -212
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +437 -223
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +324 -112
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +65 -115
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +151 -140
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +193 -156
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +221 -121
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +81 -293
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +114 -247
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +119 -110
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +12 -12
- package/dist/es/standards-sdk.es180.js +188 -0
- package/dist/es/standards-sdk.es180.js.map +1 -0
- package/dist/es/standards-sdk.es181.js +142 -0
- package/dist/es/standards-sdk.es181.js.map +1 -0
- package/dist/es/standards-sdk.es182.js +334 -0
- package/dist/es/standards-sdk.es182.js.map +1 -0
- package/dist/es/standards-sdk.es183.js +262 -0
- package/dist/es/standards-sdk.es183.js.map +1 -0
- package/dist/es/standards-sdk.es184.js +155 -0
- package/dist/es/standards-sdk.es184.js.map +1 -0
- package/dist/es/standards-sdk.es19.js +9 -9
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +12 -12
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +6 -6
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.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.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +7 -7
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +3 -3
- package/dist/es/standards-sdk.es75.js +5 -5
- package/dist/es/standards-sdk.es76.js +3 -3
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es81.js +2 -2
- package/dist/es/standards-sdk.es83.js +2 -2
- package/dist/es/standards-sdk.es84.js +4 -4
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es89.js +2 -2
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +4 -4
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es96.js +2 -2
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +3 -3
- package/dist/es/utils/key-type-detector.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,155 +1,164 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { resolveResponseSchema, registrationQuoteResponseSchema, registerAgentResponseSchema, registrationProgressResponseSchema, uaidValidationResponseSchema, uaidConnectionStatusSchema, dashboardStatsResponseSchema } from "./standards-sdk.es145.js";
|
|
2
|
+
import { serialiseAgentRegistrationRequest, DEFAULT_PROGRESS_INTERVAL_MS, DEFAULT_PROGRESS_TIMEOUT_MS, createAbortError } from "./standards-sdk.es176.js";
|
|
3
|
+
import { RegistryBrokerError } from "./standards-sdk.es146.js";
|
|
4
|
+
async function resolveUaid(client, uaid) {
|
|
3
5
|
const raw = await client.requestJson(
|
|
4
|
-
`/
|
|
5
|
-
{
|
|
6
|
+
`/resolve/${encodeURIComponent(uaid)}`,
|
|
7
|
+
{
|
|
8
|
+
method: "GET"
|
|
9
|
+
}
|
|
6
10
|
);
|
|
7
11
|
return client.parseWithSchema(
|
|
8
12
|
raw,
|
|
9
|
-
|
|
10
|
-
"
|
|
13
|
+
resolveResponseSchema,
|
|
14
|
+
"resolve UAID response"
|
|
11
15
|
);
|
|
12
16
|
}
|
|
13
|
-
async function
|
|
14
|
-
const raw = await client.requestJson("/
|
|
17
|
+
async function getRegistrationQuote(client, payload) {
|
|
18
|
+
const raw = await client.requestJson("/register/quote", {
|
|
15
19
|
method: "POST",
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
body: serialiseAgentRegistrationRequest(payload),
|
|
21
|
+
headers: { "content-type": "application/json" }
|
|
18
22
|
});
|
|
19
23
|
return client.parseWithSchema(
|
|
20
24
|
raw,
|
|
21
|
-
|
|
22
|
-
"
|
|
25
|
+
registrationQuoteResponseSchema,
|
|
26
|
+
"registration quote response"
|
|
23
27
|
);
|
|
24
28
|
}
|
|
25
|
-
async function
|
|
29
|
+
async function updateAgent(client, uaid, payload) {
|
|
26
30
|
const raw = await client.requestJson(
|
|
27
|
-
`/
|
|
28
|
-
{
|
|
31
|
+
`/register/${encodeURIComponent(uaid)}`,
|
|
32
|
+
{
|
|
33
|
+
method: "PUT",
|
|
34
|
+
body: serialiseAgentRegistrationRequest(payload),
|
|
35
|
+
headers: { "content-type": "application/json" }
|
|
36
|
+
}
|
|
29
37
|
);
|
|
30
38
|
return client.parseWithSchema(
|
|
31
39
|
raw,
|
|
32
|
-
|
|
33
|
-
"
|
|
40
|
+
registerAgentResponseSchema,
|
|
41
|
+
"update agent response"
|
|
34
42
|
);
|
|
35
43
|
}
|
|
36
|
-
async function
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
async function getRegistrationProgress(client, attemptId) {
|
|
45
|
+
const normalisedAttemptId = attemptId.trim();
|
|
46
|
+
if (!normalisedAttemptId) {
|
|
47
|
+
throw new Error("attemptId is required");
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const raw = await client.requestJson(
|
|
51
|
+
`/register/progress/${encodeURIComponent(normalisedAttemptId)}`,
|
|
52
|
+
{ method: "GET" }
|
|
53
|
+
);
|
|
54
|
+
const parsed = client.parseWithSchema(
|
|
55
|
+
raw,
|
|
56
|
+
registrationProgressResponseSchema,
|
|
57
|
+
"registration progress response"
|
|
58
|
+
);
|
|
59
|
+
return parsed.progress;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (error instanceof RegistryBrokerError && error.status === 404) {
|
|
62
|
+
return null;
|
|
43
63
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function waitForRegistrationCompletion(client, attemptId, options = {}) {
|
|
68
|
+
const normalisedAttemptId = attemptId.trim();
|
|
69
|
+
if (!normalisedAttemptId) {
|
|
70
|
+
throw new Error("attemptId is required");
|
|
71
|
+
}
|
|
72
|
+
const interval = Math.max(
|
|
73
|
+
250,
|
|
74
|
+
options.intervalMs ?? DEFAULT_PROGRESS_INTERVAL_MS
|
|
75
|
+
);
|
|
76
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_PROGRESS_TIMEOUT_MS;
|
|
77
|
+
const throwOnFailure = options.throwOnFailure ?? true;
|
|
78
|
+
const signal = options.signal;
|
|
79
|
+
const startedAt = Date.now();
|
|
80
|
+
while (true) {
|
|
81
|
+
if (signal?.aborted) {
|
|
82
|
+
throw createAbortError();
|
|
83
|
+
}
|
|
84
|
+
const progress = await client.getRegistrationProgress(normalisedAttemptId);
|
|
85
|
+
if (progress) {
|
|
86
|
+
options.onProgress?.(progress);
|
|
87
|
+
if (progress.status === "completed") {
|
|
88
|
+
return progress;
|
|
89
|
+
}
|
|
90
|
+
if (progress.status === "partial" || progress.status === "failed") {
|
|
91
|
+
if (throwOnFailure) {
|
|
92
|
+
throw new RegistryBrokerError(
|
|
93
|
+
"Registration did not complete successfully",
|
|
94
|
+
{
|
|
95
|
+
status: 409,
|
|
96
|
+
statusText: progress.status,
|
|
97
|
+
body: progress
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return progress;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (Date.now() - startedAt >= timeoutMs) {
|
|
105
|
+
throw new Error(
|
|
106
|
+
`Registration progress polling timed out after ${timeoutMs}ms`
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
await client.delay(interval, signal);
|
|
110
|
+
}
|
|
50
111
|
}
|
|
51
|
-
async function
|
|
112
|
+
async function validateUaid(client, uaid) {
|
|
52
113
|
const raw = await client.requestJson(
|
|
53
|
-
`/
|
|
54
|
-
{
|
|
114
|
+
`/uaids/validate/${encodeURIComponent(uaid)}`,
|
|
115
|
+
{
|
|
116
|
+
method: "GET"
|
|
117
|
+
}
|
|
55
118
|
);
|
|
56
119
|
return client.parseWithSchema(
|
|
57
120
|
raw,
|
|
58
|
-
|
|
59
|
-
"
|
|
121
|
+
uaidValidationResponseSchema,
|
|
122
|
+
"UAID validation response"
|
|
60
123
|
);
|
|
61
124
|
}
|
|
62
|
-
async function
|
|
125
|
+
async function getUaidConnectionStatus(client, uaid) {
|
|
63
126
|
const raw = await client.requestJson(
|
|
64
|
-
|
|
127
|
+
`/uaids/connections/${encodeURIComponent(uaid)}/status`,
|
|
65
128
|
{
|
|
66
|
-
method: "
|
|
67
|
-
headers: { "content-type": "application/json" },
|
|
68
|
-
body: { uaid }
|
|
129
|
+
method: "GET"
|
|
69
130
|
}
|
|
70
131
|
);
|
|
71
132
|
return client.parseWithSchema(
|
|
72
133
|
raw,
|
|
73
|
-
|
|
74
|
-
"
|
|
134
|
+
uaidConnectionStatusSchema,
|
|
135
|
+
"UAID connection status"
|
|
75
136
|
);
|
|
76
137
|
}
|
|
77
|
-
async function
|
|
78
|
-
|
|
79
|
-
method: "
|
|
80
|
-
headers: { "content-type": "application/json" },
|
|
81
|
-
body: {
|
|
82
|
-
uaid: payload.uaid,
|
|
83
|
-
...payload.persist !== void 0 ? { persist: payload.persist } : {}
|
|
84
|
-
}
|
|
138
|
+
async function closeUaidConnection(client, uaid) {
|
|
139
|
+
await client.request(`/uaids/connections/${encodeURIComponent(uaid)}`, {
|
|
140
|
+
method: "DELETE"
|
|
85
141
|
});
|
|
86
|
-
return client.parseWithSchema(
|
|
87
|
-
raw,
|
|
88
|
-
verificationDnsStatusResponseSchema,
|
|
89
|
-
"verification dns verify response"
|
|
90
|
-
);
|
|
91
142
|
}
|
|
92
|
-
async function
|
|
93
|
-
const
|
|
94
|
-
if (query?.refresh !== void 0) {
|
|
95
|
-
params.set("refresh", String(query.refresh));
|
|
96
|
-
}
|
|
97
|
-
if (query?.persist !== void 0) {
|
|
98
|
-
params.set("persist", String(query.persist));
|
|
99
|
-
}
|
|
100
|
-
const queryString = params.toString();
|
|
101
|
-
const path = `/verification/dns/status/${encodeURIComponent(uaid)}${queryString ? `?${queryString}` : ""}`;
|
|
102
|
-
const raw = await client.requestJson(path, {
|
|
143
|
+
async function dashboardStats(client) {
|
|
144
|
+
const raw = await client.requestJson("/dashboard/stats", {
|
|
103
145
|
method: "GET"
|
|
104
146
|
});
|
|
105
147
|
return client.parseWithSchema(
|
|
106
148
|
raw,
|
|
107
|
-
|
|
108
|
-
"
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
async function getRegisterStatus(client, uaid) {
|
|
112
|
-
const raw = await client.requestJson(
|
|
113
|
-
`/register/status/${encodeURIComponent(uaid)}`,
|
|
114
|
-
{ method: "GET" }
|
|
115
|
-
);
|
|
116
|
-
return client.parseWithSchema(
|
|
117
|
-
raw,
|
|
118
|
-
registerStatusResponseSchema,
|
|
119
|
-
"register status response"
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
async function registerOwnedMoltbookAgent(client, uaid, request) {
|
|
123
|
-
const raw = await client.requestJson(
|
|
124
|
-
`/register/${encodeURIComponent(uaid)}`,
|
|
125
|
-
{
|
|
126
|
-
method: "PUT",
|
|
127
|
-
headers: { "content-type": "application/json" },
|
|
128
|
-
body: {
|
|
129
|
-
registered: request.registered ?? true,
|
|
130
|
-
...request.name ? { name: request.name } : {},
|
|
131
|
-
...request.description ? { description: request.description } : {},
|
|
132
|
-
...request.endpoint ? { endpoint: request.endpoint } : {},
|
|
133
|
-
...request.metadata ? { metadata: request.metadata } : {}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
);
|
|
137
|
-
return client.parseWithSchema(
|
|
138
|
-
raw,
|
|
139
|
-
moltbookOwnerRegistrationUpdateResponseSchema,
|
|
140
|
-
"moltbook owner registration update response"
|
|
149
|
+
dashboardStatsResponseSchema,
|
|
150
|
+
"dashboard stats response"
|
|
141
151
|
);
|
|
142
152
|
}
|
|
143
153
|
export {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
verifyVerificationChallenge
|
|
154
|
+
closeUaidConnection,
|
|
155
|
+
dashboardStats,
|
|
156
|
+
getRegistrationProgress,
|
|
157
|
+
getRegistrationQuote,
|
|
158
|
+
getUaidConnectionStatus,
|
|
159
|
+
resolveUaid,
|
|
160
|
+
updateAgent,
|
|
161
|
+
validateUaid,
|
|
162
|
+
waitForRegistrationCompletion
|
|
154
163
|
};
|
|
155
164
|
//# sourceMappingURL=standards-sdk.es179.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es179.js","sources":["../../src/services/registry-broker/client/verification.ts"],"sourcesContent":["import type {\n JsonValue,\n MoltbookOwnerRegistrationUpdateRequest,\n MoltbookOwnerRegistrationUpdateResponse,\n RegisterStatusResponse,\n VerificationDnsStatusQuery,\n VerificationDnsStatusResponse,\n VerificationDnsVerifyRequest,\n VerificationChallengeDetailsResponse,\n VerificationChallengeResponse,\n VerificationOwnershipResponse,\n VerificationStatusResponse,\n VerificationVerifyResponse,\n VerificationVerifySenderResponse,\n} from '../types';\nimport {\n moltbookOwnerRegistrationUpdateResponseSchema,\n registerStatusResponseSchema,\n verificationChallengeDetailsResponseSchema,\n verificationChallengeResponseSchema,\n verificationDnsStatusResponseSchema,\n verificationOwnershipResponseSchema,\n verificationStatusResponseSchema,\n verificationVerifyResponseSchema,\n verificationVerifySenderResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nexport async function getVerificationStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationStatusResponseSchema,\n 'verification status response',\n );\n}\n\nexport async function createVerificationChallenge(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationChallengeResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n });\n return client.parseWithSchema(\n raw,\n verificationChallengeResponseSchema,\n 'verification challenge response',\n );\n}\n\nexport async function getVerificationChallenge(\n client: RegistryBrokerClient,\n challengeId: string,\n): Promise<VerificationChallengeDetailsResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/challenge/${encodeURIComponent(challengeId)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationChallengeDetailsResponseSchema,\n 'verification challenge details response',\n );\n}\n\nexport async function verifyVerificationChallenge(\n client: RegistryBrokerClient,\n params: { challengeId: string; method?: 'moltbook-post' | string },\n): Promise<VerificationVerifyResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n challengeId: params.challengeId,\n method: params.method ?? 'moltbook-post',\n },\n });\n return client.parseWithSchema(\n raw,\n verificationVerifyResponseSchema,\n 'verification verify response',\n );\n}\n\nexport async function getVerificationOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationOwnershipResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/ownership/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationOwnershipResponseSchema,\n 'verification ownership response',\n );\n}\n\nexport async function verifySenderOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationVerifySenderResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/verification/verify-sender',\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n },\n );\n return client.parseWithSchema(\n raw,\n verificationVerifySenderResponseSchema,\n 'verification sender response',\n );\n}\n\nexport async function verifyUaidDnsTxt(\n client: RegistryBrokerClient,\n payload: VerificationDnsVerifyRequest,\n): Promise<VerificationDnsStatusResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/dns/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n uaid: payload.uaid,\n ...(payload.persist !== undefined ? { persist: payload.persist } : {}),\n },\n });\n return client.parseWithSchema(\n raw,\n verificationDnsStatusResponseSchema,\n 'verification dns verify response',\n );\n}\n\nexport async function getVerificationDnsStatus(\n client: RegistryBrokerClient,\n uaid: string,\n query?: VerificationDnsStatusQuery,\n): Promise<VerificationDnsStatusResponse> {\n const params = new URLSearchParams();\n if (query?.refresh !== undefined) {\n params.set('refresh', String(query.refresh));\n }\n if (query?.persist !== undefined) {\n params.set('persist', String(query.persist));\n }\n\n const queryString = params.toString();\n const path = `/verification/dns/status/${encodeURIComponent(uaid)}${\n queryString ? `?${queryString}` : ''\n }`;\n const raw = await client.requestJson<JsonValue>(path, {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n verificationDnsStatusResponseSchema,\n 'verification dns status response',\n );\n}\n\nexport async function getRegisterStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<RegisterStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n registerStatusResponseSchema,\n 'register status response',\n );\n}\n\nexport async function registerOwnedMoltbookAgent(\n client: RegistryBrokerClient,\n uaid: string,\n request: MoltbookOwnerRegistrationUpdateRequest,\n): Promise<MoltbookOwnerRegistrationUpdateResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: {\n registered: request.registered ?? true,\n ...(request.name ? { name: request.name } : {}),\n ...(request.description ? { description: request.description } : {}),\n ...(request.endpoint ? { endpoint: request.endpoint } : {}),\n ...(request.metadata ? { metadata: request.metadata } : {}),\n },\n },\n );\n return client.parseWithSchema(\n raw,\n moltbookOwnerRegistrationUpdateResponseSchema,\n 'moltbook owner registration update response',\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es179.js","sources":["../../src/services/registry-broker/client/agents.ts"],"sourcesContent":["import type {\n AgentRegistrationRequest,\n DashboardStatsResponse,\n JsonValue,\n RegisterAgentOptions,\n RegisterAgentQuoteResponse,\n RegisterAgentResponse,\n RegistrationProgressRecord,\n RegistrationProgressWaitOptions,\n ResolvedAgentResponse,\n UaidConnectionStatus,\n UaidValidationResponse,\n} from '../types';\nimport {\n dashboardStatsResponseSchema,\n registerAgentResponseSchema,\n registrationProgressResponseSchema,\n registrationQuoteResponseSchema,\n resolveResponseSchema,\n uaidConnectionStatusSchema,\n uaidValidationResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\nimport { purchaseCreditsWithHbar } from './credits';\nimport {\n createAbortError,\n DEFAULT_PROGRESS_INTERVAL_MS,\n DEFAULT_PROGRESS_TIMEOUT_MS,\n MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,\n serialiseAgentRegistrationRequest,\n} from './utils';\nimport { RegistryBrokerError } from './errors';\n\nasync function performRegisterAgent(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentResponse> {\n const raw = await client.requestJson<JsonValue>('/register', {\n method: 'POST',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n registerAgentResponseSchema,\n 'register agent response',\n );\n}\n\nfunction 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\nfunction 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\nasync function ensureCreditsForRegistration(\n client: RegistryBrokerClient,\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 getRegistrationQuote(client, payload);\n const shortfall = quote.shortfallCredits ?? 0;\n if (shortfall <= 0) {\n return;\n }\n const creditsToPurchase = 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 = calculateHbarAmount(creditsToPurchase, creditsPerHbar);\n\n await purchaseCreditsWithHbar(client, {\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 getRegistrationQuote(client, payload);\n if ((finalQuote.shortfallCredits ?? 0) > 0) {\n throw new Error('Unable to purchase sufficient credits for registration');\n }\n}\n\nexport async function resolveUaid(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<ResolvedAgentResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/resolve/${encodeURIComponent(uaid)}`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n resolveResponseSchema,\n 'resolve UAID response',\n );\n}\n\nexport async function registerAgent(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n options?: RegisterAgentOptions,\n): Promise<RegisterAgentResponse> {\n const autoTopUp = options?.autoTopUp ?? client.registrationAutoTopUp;\n\n if (!autoTopUp) {\n return performRegisterAgent(client, payload);\n }\n\n await ensureCreditsForRegistration(client, payload, autoTopUp);\n\n let retried = false;\n while (true) {\n try {\n return await performRegisterAgent(client, payload);\n } catch (error) {\n const shortfall = client.extractInsufficientCreditsDetails(error);\n if (shortfall && !retried) {\n await ensureCreditsForRegistration(client, payload, autoTopUp);\n retried = true;\n continue;\n }\n throw error;\n }\n }\n}\n\nexport async function getRegistrationQuote(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentQuoteResponse> {\n const raw = await client.requestJson<JsonValue>('/register/quote', {\n method: 'POST',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n registrationQuoteResponseSchema,\n 'registration quote response',\n );\n}\n\nexport async function updateAgent(\n client: RegistryBrokerClient,\n uaid: string,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n registerAgentResponseSchema,\n 'update agent response',\n );\n}\n\nexport async function getRegistrationProgress(\n client: RegistryBrokerClient,\n attemptId: string,\n): Promise<RegistrationProgressRecord | null> {\n const normalisedAttemptId = attemptId.trim();\n if (!normalisedAttemptId) {\n throw new Error('attemptId is required');\n }\n\n try {\n const raw = await client.requestJson<JsonValue>(\n `/register/progress/${encodeURIComponent(normalisedAttemptId)}`,\n { method: 'GET' },\n );\n\n const parsed = client.parseWithSchema(\n raw,\n registrationProgressResponseSchema,\n 'registration progress response',\n );\n\n return parsed.progress;\n } catch (error) {\n if (error instanceof RegistryBrokerError && error.status === 404) {\n return null;\n }\n throw error;\n }\n}\n\nexport async function waitForRegistrationCompletion(\n client: RegistryBrokerClient,\n attemptId: string,\n options: RegistrationProgressWaitOptions = {},\n): Promise<RegistrationProgressRecord> {\n const normalisedAttemptId = attemptId.trim();\n if (!normalisedAttemptId) {\n throw new Error('attemptId is required');\n }\n\n const interval = Math.max(\n 250,\n options.intervalMs ?? DEFAULT_PROGRESS_INTERVAL_MS,\n );\n const timeoutMs = options.timeoutMs ?? DEFAULT_PROGRESS_TIMEOUT_MS;\n const throwOnFailure = options.throwOnFailure ?? true;\n const signal = options.signal;\n const startedAt = Date.now();\n\n while (true) {\n if (signal?.aborted) {\n throw createAbortError();\n }\n\n const progress = await client.getRegistrationProgress(normalisedAttemptId);\n\n if (progress) {\n options.onProgress?.(progress);\n\n if (progress.status === 'completed') {\n return progress;\n }\n\n if (progress.status === 'partial' || progress.status === 'failed') {\n if (throwOnFailure) {\n throw new RegistryBrokerError(\n 'Registration did not complete successfully',\n {\n status: 409,\n statusText: progress.status,\n body: progress,\n },\n );\n }\n return progress;\n }\n }\n\n if (Date.now() - startedAt >= timeoutMs) {\n throw new Error(\n `Registration progress polling timed out after ${timeoutMs}ms`,\n );\n }\n\n await client.delay(interval, signal);\n }\n}\n\nexport async function validateUaid(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<UaidValidationResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/uaids/validate/${encodeURIComponent(uaid)}`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n uaidValidationResponseSchema,\n 'UAID validation response',\n );\n}\n\nexport async function getUaidConnectionStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<UaidConnectionStatus> {\n const raw = await client.requestJson<JsonValue>(\n `/uaids/connections/${encodeURIComponent(uaid)}/status`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n uaidConnectionStatusSchema,\n 'UAID connection status',\n );\n}\n\nexport async function closeUaidConnection(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<void> {\n await client.request(`/uaids/connections/${encodeURIComponent(uaid)}`, {\n method: 'DELETE',\n });\n}\n\nexport async function dashboardStats(\n client: RegistryBrokerClient,\n): Promise<DashboardStatsResponse> {\n const raw = await client.requestJson<JsonValue>('/dashboard/stats', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n dashboardStatsResponseSchema,\n 'dashboard stats response',\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { Client, PrivateKey, AccountCreateTransaction, Hbar, CustomFixedFee, AccountId, TokenId, KeyList, TopicMessageSubmitTransaction, Transaction, ScheduleCreateTransaction, Timestamp } from "@hashgraph/sdk";
|
|
2
2
|
import { AccountCreationError, TopicCreationError, ConnectionConfirmationError, PayloadSizeError } from "./standards-sdk.es17.js";
|
|
3
|
-
import { InscriptionSDK } from "./standards-sdk.
|
|
4
|
-
import { Logger } from "./standards-sdk.
|
|
5
|
-
import { accountIdsToExemptKeys } from "./standards-sdk.
|
|
6
|
-
import { ProgressReporter } from "./standards-sdk.
|
|
3
|
+
import { InscriptionSDK } from "./standards-sdk.es160.js";
|
|
4
|
+
import { Logger } from "./standards-sdk.es123.js";
|
|
5
|
+
import { accountIdsToExemptKeys } from "./standards-sdk.es125.js";
|
|
6
|
+
import { ProgressReporter } from "./standards-sdk.es126.js";
|
|
7
7
|
import "axios";
|
|
8
8
|
import "@hashgraph/proto";
|
|
9
9
|
import "path";
|
|
10
10
|
import "buffer";
|
|
11
11
|
import "crypto";
|
|
12
12
|
import "@noble/curves/secp256k1.js";
|
|
13
|
-
import "./standards-sdk.
|
|
14
|
-
import "./standards-sdk.
|
|
13
|
+
import "./standards-sdk.es145.js";
|
|
14
|
+
import "./standards-sdk.es147.js";
|
|
15
15
|
import "zod";
|
|
16
16
|
import "ethers";
|
|
17
|
-
import "./standards-sdk.
|
|
18
|
-
import { detectKeyTypeFromString } from "./standards-sdk.
|
|
19
|
-
import { getTopicId } from "./standards-sdk.
|
|
20
|
-
import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.
|
|
17
|
+
import "./standards-sdk.es140.js";
|
|
18
|
+
import { detectKeyTypeFromString } from "./standards-sdk.es131.js";
|
|
19
|
+
import { getTopicId } from "./standards-sdk.es132.js";
|
|
20
|
+
import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.es158.js";
|
|
21
21
|
import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es16.js";
|
|
22
22
|
import * as mime from "mime-types";
|
|
23
23
|
import { AgentBuilder } from "./standards-sdk.es23.js";
|
|
24
24
|
import { InboundTopicType } from "./standards-sdk.es28.js";
|
|
25
25
|
import { HCS11Client } from "./standards-sdk.es27.js";
|
|
26
|
-
import { inscribe } from "./standards-sdk.
|
|
26
|
+
import { inscribe } from "./standards-sdk.es142.js";
|
|
27
27
|
import { addSeconds } from "date-fns";
|
|
28
|
-
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.
|
|
28
|
+
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es159.js";
|
|
29
29
|
import { buildHcs10CreateInboundTopicTx, buildHcs10CreateConnectionTopicTx, buildHcs10ConfirmConnectionTx, buildHcs10SendMessageTx, buildHcs10RegistryRegisterTx, buildHcs10CreateOutboundTopicTx, buildHcs10CreateRegistryTopicTx } from "./standards-sdk.es22.js";
|
|
30
30
|
class HCS10Client extends HCS10BaseClient {
|
|
31
31
|
constructor(config) {
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import { ledgerChallengeResponseSchema, ledgerVerifyResponseSchema } from "./standards-sdk.es145.js";
|
|
3
|
+
import { canonicalizeLedgerNetwork } from "./standards-sdk.es147.js";
|
|
4
|
+
import { createPrivateKeySignerAsync } from "./standards-sdk.es148.js";
|
|
5
|
+
async function loadViemAccount(privateKey) {
|
|
6
|
+
try {
|
|
7
|
+
const viem = await import("viem/accounts");
|
|
8
|
+
return viem.privateKeyToAccount(privateKey);
|
|
9
|
+
} catch (error) {
|
|
10
|
+
const err = new Error(
|
|
11
|
+
'EVM ledger authentication requires the optional dependency "viem". Install it to use evmPrivateKey flows.'
|
|
12
|
+
);
|
|
13
|
+
err.cause = error;
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function resolveLedgerAuthSignature(message, options) {
|
|
18
|
+
if (typeof options.sign === "function") {
|
|
19
|
+
const result = await options.sign(message);
|
|
20
|
+
if (!result || typeof result.signature !== "string" || result.signature.length === 0) {
|
|
21
|
+
throw new Error("Custom ledger signer failed to produce a signature.");
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
if (!options.signer || typeof options.signer.sign !== "function") {
|
|
26
|
+
throw new Error(
|
|
27
|
+
"Ledger authentication requires a Hedera Signer or custom sign function."
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
const payload = Buffer.from(message, "utf8");
|
|
31
|
+
const signatures = await options.signer.sign([payload]);
|
|
32
|
+
const signatureEntry = signatures?.[0];
|
|
33
|
+
if (!signatureEntry) {
|
|
34
|
+
throw new Error("Signer did not return any signatures.");
|
|
35
|
+
}
|
|
36
|
+
let derivedPublicKey;
|
|
37
|
+
if (signatureEntry.publicKey) {
|
|
38
|
+
derivedPublicKey = signatureEntry.publicKey.toString();
|
|
39
|
+
} else if (typeof options.signer.getAccountKey === "function") {
|
|
40
|
+
const accountKey = await options.signer.getAccountKey();
|
|
41
|
+
if (accountKey && typeof accountKey.toString === "function") {
|
|
42
|
+
derivedPublicKey = accountKey.toString();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
signature: Buffer.from(signatureEntry.signature).toString("base64"),
|
|
47
|
+
signatureKind: "raw",
|
|
48
|
+
publicKey: derivedPublicKey
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function createLedgerChallenge(client, payload) {
|
|
52
|
+
const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);
|
|
53
|
+
const network = resolvedNetwork.kind === "hedera" ? resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical : resolvedNetwork.canonical;
|
|
54
|
+
const raw = await client.requestJson("/auth/ledger/challenge", {
|
|
55
|
+
method: "POST",
|
|
56
|
+
headers: { "content-type": "application/json" },
|
|
57
|
+
body: {
|
|
58
|
+
accountId: payload.accountId,
|
|
59
|
+
network
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return client.parseWithSchema(
|
|
63
|
+
raw,
|
|
64
|
+
ledgerChallengeResponseSchema,
|
|
65
|
+
"ledger challenge response"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
async function verifyLedgerChallenge(client, payload) {
|
|
69
|
+
const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);
|
|
70
|
+
const network = resolvedNetwork.kind === "hedera" ? resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical : resolvedNetwork.canonical;
|
|
71
|
+
const body = {
|
|
72
|
+
challengeId: payload.challengeId,
|
|
73
|
+
accountId: payload.accountId,
|
|
74
|
+
network,
|
|
75
|
+
signature: payload.signature
|
|
76
|
+
};
|
|
77
|
+
if (payload.signatureKind) {
|
|
78
|
+
body.signatureKind = payload.signatureKind;
|
|
79
|
+
}
|
|
80
|
+
if (payload.publicKey) {
|
|
81
|
+
body.publicKey = payload.publicKey;
|
|
82
|
+
}
|
|
83
|
+
if (typeof payload.expiresInMinutes === "number") {
|
|
84
|
+
body.expiresInMinutes = payload.expiresInMinutes;
|
|
85
|
+
}
|
|
86
|
+
const raw = await client.requestJson("/auth/ledger/verify", {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: { "content-type": "application/json" },
|
|
89
|
+
body
|
|
90
|
+
});
|
|
91
|
+
const result = client.parseWithSchema(
|
|
92
|
+
raw,
|
|
93
|
+
ledgerVerifyResponseSchema,
|
|
94
|
+
"ledger verification response"
|
|
95
|
+
);
|
|
96
|
+
client.setLedgerApiKey(result.key);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
async function authenticateWithLedger(client, options) {
|
|
100
|
+
const challenge = await client.createLedgerChallenge({
|
|
101
|
+
accountId: options.accountId,
|
|
102
|
+
network: options.network
|
|
103
|
+
});
|
|
104
|
+
const signed = await resolveLedgerAuthSignature(challenge.message, options);
|
|
105
|
+
const verification = await client.verifyLedgerChallenge({
|
|
106
|
+
challengeId: challenge.challengeId,
|
|
107
|
+
accountId: options.accountId,
|
|
108
|
+
network: options.network,
|
|
109
|
+
signature: signed.signature,
|
|
110
|
+
signatureKind: signed.signatureKind,
|
|
111
|
+
publicKey: signed.publicKey,
|
|
112
|
+
expiresInMinutes: options.expiresInMinutes
|
|
113
|
+
});
|
|
114
|
+
return verification;
|
|
115
|
+
}
|
|
116
|
+
async function authenticateWithLedgerCredentials(client, options) {
|
|
117
|
+
const {
|
|
118
|
+
accountId,
|
|
119
|
+
network,
|
|
120
|
+
signer,
|
|
121
|
+
sign,
|
|
122
|
+
hederaPrivateKey,
|
|
123
|
+
evmPrivateKey,
|
|
124
|
+
expiresInMinutes,
|
|
125
|
+
setAccountHeader = true,
|
|
126
|
+
label,
|
|
127
|
+
logger
|
|
128
|
+
} = options;
|
|
129
|
+
const resolvedNetwork = canonicalizeLedgerNetwork(network);
|
|
130
|
+
const labelSuffix = label ? ` for ${label}` : "";
|
|
131
|
+
const networkPayload = resolvedNetwork.canonical;
|
|
132
|
+
const authOptions = {
|
|
133
|
+
accountId,
|
|
134
|
+
network: networkPayload,
|
|
135
|
+
expiresInMinutes
|
|
136
|
+
};
|
|
137
|
+
if (sign) {
|
|
138
|
+
authOptions.sign = sign;
|
|
139
|
+
} else if (signer) {
|
|
140
|
+
authOptions.signer = signer;
|
|
141
|
+
} else if (hederaPrivateKey) {
|
|
142
|
+
if (resolvedNetwork.kind !== "hedera" || !resolvedNetwork.hederaNetwork) {
|
|
143
|
+
throw new Error(
|
|
144
|
+
"hederaPrivateKey can only be used with hedera:mainnet or hedera:testnet networks."
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
authOptions.signer = await createPrivateKeySignerAsync({
|
|
148
|
+
accountId,
|
|
149
|
+
privateKey: hederaPrivateKey,
|
|
150
|
+
network: resolvedNetwork.hederaNetwork
|
|
151
|
+
});
|
|
152
|
+
} else if (evmPrivateKey) {
|
|
153
|
+
if (resolvedNetwork.kind !== "evm") {
|
|
154
|
+
throw new Error(
|
|
155
|
+
"evmPrivateKey can only be used with CAIP-2 EVM networks (eip155:<chainId>)."
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
const formattedKey = evmPrivateKey.startsWith("0x") ? evmPrivateKey : `0x${evmPrivateKey}`;
|
|
159
|
+
const account = await loadViemAccount(formattedKey);
|
|
160
|
+
authOptions.sign = async (message) => ({
|
|
161
|
+
signature: await account.signMessage({ message }),
|
|
162
|
+
signatureKind: "evm",
|
|
163
|
+
publicKey: account.publicKey
|
|
164
|
+
});
|
|
165
|
+
} else {
|
|
166
|
+
throw new Error(
|
|
167
|
+
"Provide a signer, sign function, hederaPrivateKey, or evmPrivateKey to authenticate with the ledger."
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
logger?.info?.(
|
|
171
|
+
`Authenticating ledger account ${accountId} (${resolvedNetwork.canonical})${labelSuffix}...`
|
|
172
|
+
);
|
|
173
|
+
const verification = await client.authenticateWithLedger(authOptions);
|
|
174
|
+
if (setAccountHeader) {
|
|
175
|
+
client.setDefaultHeader("x-account-id", verification.accountId);
|
|
176
|
+
}
|
|
177
|
+
logger?.info?.(
|
|
178
|
+
`Ledger authentication complete${labelSuffix}. Issued key prefix: ${verification.apiKey.prefix}…${verification.apiKey.lastFour}`
|
|
179
|
+
);
|
|
180
|
+
return verification;
|
|
181
|
+
}
|
|
182
|
+
export {
|
|
183
|
+
authenticateWithLedger,
|
|
184
|
+
authenticateWithLedgerCredentials,
|
|
185
|
+
createLedgerChallenge,
|
|
186
|
+
verifyLedgerChallenge
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=standards-sdk.es180.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es180.js","sources":["../../src/services/registry-broker/client/ledger-auth.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport type { SignerSignature } from '@hashgraph/sdk';\nimport type {\n JsonObject,\n JsonValue,\n LedgerAuthenticationOptions,\n LedgerAuthenticationSignerResult,\n LedgerChallengeRequest,\n LedgerChallengeResponse,\n LedgerCredentialAuthOptions,\n LedgerVerifyRequest,\n LedgerVerifyResponse,\n} from '../types';\nimport {\n ledgerChallengeResponseSchema,\n ledgerVerifyResponseSchema,\n} from '../schemas';\nimport { canonicalizeLedgerNetwork } from '../ledger-network';\nimport { createPrivateKeySignerAsync } from '../private-key-signer';\nimport type { RegistryBrokerClient } from './base-client';\n\nasync function loadViemAccount(privateKey: `0x${string}`): Promise<{\n publicKey: string;\n signMessage: (input: { message: string }) => Promise<string>;\n}> {\n try {\n const viem = await import('viem/accounts');\n return viem.privateKeyToAccount(privateKey);\n } catch (error) {\n const err = new Error(\n 'EVM ledger authentication requires the optional dependency \"viem\". Install it to use evmPrivateKey flows.',\n );\n (err as { cause?: unknown }).cause = error;\n throw err;\n }\n}\n\nasync function resolveLedgerAuthSignature(\n message: string,\n options: LedgerAuthenticationOptions,\n): Promise<LedgerAuthenticationSignerResult> {\n if (typeof options.sign === 'function') {\n const result = await options.sign(message);\n if (\n !result ||\n typeof result.signature !== 'string' ||\n result.signature.length === 0\n ) {\n throw new Error('Custom ledger signer failed to produce a signature.');\n }\n return result;\n }\n\n if (!options.signer || typeof options.signer.sign !== 'function') {\n throw new Error(\n 'Ledger authentication requires a Hedera Signer or custom sign function.',\n );\n }\n\n const payload = Buffer.from(message, 'utf8');\n const signatures: SignerSignature[] = await options.signer.sign([payload]);\n const signatureEntry = signatures?.[0];\n if (!signatureEntry) {\n throw new Error('Signer did not return any signatures.');\n }\n\n let derivedPublicKey: string | undefined;\n if (signatureEntry.publicKey) {\n derivedPublicKey = signatureEntry.publicKey.toString();\n } else if (typeof options.signer.getAccountKey === 'function') {\n const accountKey = await options.signer.getAccountKey();\n if (accountKey && typeof accountKey.toString === 'function') {\n derivedPublicKey = accountKey.toString();\n }\n }\n\n return {\n signature: Buffer.from(signatureEntry.signature).toString('base64'),\n signatureKind: 'raw',\n publicKey: derivedPublicKey,\n };\n}\n\nexport async function createLedgerChallenge(\n client: RegistryBrokerClient,\n payload: LedgerChallengeRequest,\n): Promise<LedgerChallengeResponse> {\n const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);\n const network =\n resolvedNetwork.kind === 'hedera'\n ? (resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical)\n : resolvedNetwork.canonical;\n const raw = await client.requestJson<JsonValue>('/auth/ledger/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n accountId: payload.accountId,\n network,\n },\n });\n\n return client.parseWithSchema(\n raw,\n ledgerChallengeResponseSchema,\n 'ledger challenge response',\n );\n}\n\nexport async function verifyLedgerChallenge(\n client: RegistryBrokerClient,\n payload: LedgerVerifyRequest,\n): Promise<LedgerVerifyResponse> {\n const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);\n const network =\n resolvedNetwork.kind === 'hedera'\n ? (resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical)\n : resolvedNetwork.canonical;\n const body: JsonObject = {\n challengeId: payload.challengeId,\n accountId: payload.accountId,\n network,\n signature: payload.signature,\n };\n\n if (payload.signatureKind) {\n body.signatureKind = payload.signatureKind;\n }\n if (payload.publicKey) {\n body.publicKey = payload.publicKey;\n }\n if (typeof payload.expiresInMinutes === 'number') {\n body.expiresInMinutes = payload.expiresInMinutes;\n }\n\n const raw = await client.requestJson<JsonValue>('/auth/ledger/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n });\n\n const result = client.parseWithSchema(\n raw,\n ledgerVerifyResponseSchema,\n 'ledger verification response',\n );\n\n client.setLedgerApiKey(result.key);\n return result;\n}\n\nexport async function authenticateWithLedger(\n client: RegistryBrokerClient,\n options: LedgerAuthenticationOptions,\n): Promise<LedgerVerifyResponse> {\n const challenge = await client.createLedgerChallenge({\n accountId: options.accountId,\n network: options.network,\n });\n const signed = await resolveLedgerAuthSignature(challenge.message, options);\n const verification = await client.verifyLedgerChallenge({\n challengeId: challenge.challengeId,\n accountId: options.accountId,\n network: options.network,\n signature: signed.signature,\n signatureKind: signed.signatureKind,\n publicKey: signed.publicKey,\n expiresInMinutes: options.expiresInMinutes,\n });\n return verification;\n}\n\nexport async function authenticateWithLedgerCredentials(\n client: RegistryBrokerClient,\n options: LedgerCredentialAuthOptions,\n): Promise<LedgerVerifyResponse> {\n const {\n accountId,\n network,\n signer,\n sign,\n hederaPrivateKey,\n evmPrivateKey,\n expiresInMinutes,\n setAccountHeader = true,\n label,\n logger,\n } = options;\n\n const resolvedNetwork = canonicalizeLedgerNetwork(network);\n const labelSuffix = label ? ` for ${label}` : '';\n\n const networkPayload = resolvedNetwork.canonical;\n\n const authOptions: LedgerAuthenticationOptions = {\n accountId,\n network: networkPayload,\n expiresInMinutes,\n };\n\n if (sign) {\n authOptions.sign = sign;\n } else if (signer) {\n authOptions.signer = signer;\n } else if (hederaPrivateKey) {\n if (resolvedNetwork.kind !== 'hedera' || !resolvedNetwork.hederaNetwork) {\n throw new Error(\n 'hederaPrivateKey can only be used with hedera:mainnet or hedera:testnet networks.',\n );\n }\n authOptions.signer = await createPrivateKeySignerAsync({\n accountId,\n privateKey: hederaPrivateKey,\n network: resolvedNetwork.hederaNetwork,\n });\n } else if (evmPrivateKey) {\n if (resolvedNetwork.kind !== 'evm') {\n throw new Error(\n 'evmPrivateKey can only be used with CAIP-2 EVM networks (eip155:<chainId>).',\n );\n }\n const formattedKey = evmPrivateKey.startsWith('0x')\n ? (evmPrivateKey as `0x${string}`)\n : (`0x${evmPrivateKey}` as `0x${string}`);\n const account = await loadViemAccount(formattedKey);\n authOptions.sign = async message => ({\n signature: await account.signMessage({ message }),\n signatureKind: 'evm',\n publicKey: account.publicKey,\n });\n } else {\n throw new Error(\n 'Provide a signer, sign function, hederaPrivateKey, or evmPrivateKey to authenticate with the ledger.',\n );\n }\n\n logger?.info?.(\n `Authenticating ledger account ${accountId} (${resolvedNetwork.canonical})${labelSuffix}...`,\n );\n const verification = await client.authenticateWithLedger(authOptions);\n if (setAccountHeader) {\n client.setDefaultHeader('x-account-id', verification.accountId);\n }\n logger?.info?.(\n `Ledger authentication complete${labelSuffix}. Issued key prefix: ${verification.apiKey.prefix}…${verification.apiKey.lastFour}`,\n );\n return verification;\n}\n"],"names":[],"mappings":"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"}
|