beam-protocol-sdk 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +80 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +295 -0
- package/dist/client.js.map +1 -0
- package/dist/did.d.ts +85 -0
- package/dist/did.d.ts.map +1 -0
- package/dist/did.js +254 -0
- package/dist/did.js.map +1 -0
- package/dist/directory.d.ts +28 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +215 -0
- package/dist/directory.js.map +1 -0
- package/dist/frames.d.ts +29 -0
- package/dist/frames.d.ts.map +1 -0
- package/dist/frames.js +133 -0
- package/dist/frames.js.map +1 -0
- package/dist/identity.d.ts +20 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +81 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +124 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +25 -5
- package/src/client.ts +0 -383
- package/src/directory.ts +0 -91
- package/src/frames.ts +0 -161
- package/src/identity.ts +0 -85
- package/src/index.ts +0 -25
- package/src/types.ts +0 -71
- package/tests/client.test.ts +0 -217
- package/tests/directory.test.ts +0 -202
- package/tests/frames.test.ts +0 -213
- package/tests/identity.test.ts +0 -130
- package/tsconfig.json +0 -19
- package/vitest.config.ts +0 -8
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { BeamIdentity } from './identity.js';
|
|
2
|
+
import { BeamDirectory } from './directory.js';
|
|
3
|
+
import { BeamCredentialsClient, BeamDID } from './did.js';
|
|
4
|
+
import type { AgentProfile, AgentRecord, BeamClientConfig, BeamIdString, BrowseFilters, BrowseResult, Delegation, DirectoryStats, DomainVerification, IntentFrame, KeyRotationResult, Report, ResultFrame, BeamIdentityData } from './types.js';
|
|
5
|
+
type IntentHandler = (frame: IntentFrame, respond: (options: {
|
|
6
|
+
success: boolean;
|
|
7
|
+
payload?: Record<string, unknown>;
|
|
8
|
+
error?: string;
|
|
9
|
+
errorCode?: string;
|
|
10
|
+
latency?: number;
|
|
11
|
+
}) => ResultFrame) => void | Promise<void>;
|
|
12
|
+
export declare class BeamClient {
|
|
13
|
+
private _identity;
|
|
14
|
+
private readonly _directory;
|
|
15
|
+
private readonly _did;
|
|
16
|
+
private readonly _credentials;
|
|
17
|
+
private readonly _directoryUrl;
|
|
18
|
+
private _ws;
|
|
19
|
+
private _wsConnected;
|
|
20
|
+
private readonly _pendingResults;
|
|
21
|
+
private readonly _intentHandlers;
|
|
22
|
+
constructor(config: BeamClientConfig);
|
|
23
|
+
get beamId(): BeamIdString;
|
|
24
|
+
get directory(): BeamDirectory;
|
|
25
|
+
get did(): BeamDID;
|
|
26
|
+
get credentials(): BeamCredentialsClient;
|
|
27
|
+
register(displayName: string, capabilities: string[]): Promise<AgentRecord>;
|
|
28
|
+
updateProfile(fields: {
|
|
29
|
+
description?: string;
|
|
30
|
+
logo_url?: string;
|
|
31
|
+
website?: string;
|
|
32
|
+
}): Promise<AgentProfile>;
|
|
33
|
+
verifyDomain(domain: string): Promise<DomainVerification>;
|
|
34
|
+
checkDomainVerification(): Promise<DomainVerification>;
|
|
35
|
+
rotateKeys(newKeyPair: BeamIdentity | BeamIdentityData): Promise<KeyRotationResult>;
|
|
36
|
+
browse(page?: number, filters?: BrowseFilters): Promise<BrowseResult>;
|
|
37
|
+
getStats(): Promise<DirectoryStats>;
|
|
38
|
+
delegate(targetBeamId: string, scope: string, expiresIn?: number): Promise<Delegation>;
|
|
39
|
+
report(targetBeamId: string, reason: string): Promise<Report>;
|
|
40
|
+
connect(): Promise<void>;
|
|
41
|
+
private _handleMessage;
|
|
42
|
+
send(to: BeamIdString, intent: string, payload?: Record<string, unknown>, timeoutMs?: number): Promise<ResultFrame>;
|
|
43
|
+
private _sendViaWebSocket;
|
|
44
|
+
private _sendViaHttp;
|
|
45
|
+
on(intent: string, handler: IntentHandler): this;
|
|
46
|
+
thread(to: BeamIdString, options?: {
|
|
47
|
+
language?: string;
|
|
48
|
+
timeoutMs?: number;
|
|
49
|
+
}): BeamThread;
|
|
50
|
+
talk(to: BeamIdString, message: string, options?: {
|
|
51
|
+
context?: Record<string, unknown>;
|
|
52
|
+
language?: string;
|
|
53
|
+
timeoutMs?: number;
|
|
54
|
+
threadId?: string;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
message: string;
|
|
57
|
+
structured?: Record<string, unknown>;
|
|
58
|
+
threadId?: string;
|
|
59
|
+
raw: ResultFrame;
|
|
60
|
+
}>;
|
|
61
|
+
onTalk(handler: (message: string, from: BeamIdString, respond: (reply: string, structured?: Record<string, unknown>) => void, frame: IntentFrame) => void | Promise<void>): this;
|
|
62
|
+
disconnect(): void;
|
|
63
|
+
}
|
|
64
|
+
export declare class BeamThread {
|
|
65
|
+
readonly threadId: string;
|
|
66
|
+
private readonly _client;
|
|
67
|
+
private readonly _to;
|
|
68
|
+
private readonly _language?;
|
|
69
|
+
private readonly _timeoutMs;
|
|
70
|
+
constructor(client: BeamClient, to: BeamIdString, options?: {
|
|
71
|
+
language?: string;
|
|
72
|
+
timeoutMs?: number;
|
|
73
|
+
});
|
|
74
|
+
say(message: string, context?: Record<string, unknown>): Promise<{
|
|
75
|
+
message: string;
|
|
76
|
+
structured?: Record<string, unknown>;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { BeamIdentity } from './identity.js';
|
|
2
|
+
import { BeamDirectory } from './directory.js';
|
|
3
|
+
import { BeamCredentialsClient, BeamDID } from './did.js';
|
|
4
|
+
import { createIntentFrame, createResultFrame, signFrame, validateIntentFrame } from './frames.js';
|
|
5
|
+
async function openWebSocket(url) {
|
|
6
|
+
if (typeof globalThis.WebSocket !== 'undefined') {
|
|
7
|
+
return new globalThis.WebSocket(url);
|
|
8
|
+
}
|
|
9
|
+
const { default: WS } = await import('ws');
|
|
10
|
+
return new WS(url);
|
|
11
|
+
}
|
|
12
|
+
export class BeamClient {
|
|
13
|
+
_identity;
|
|
14
|
+
_directory;
|
|
15
|
+
_did;
|
|
16
|
+
_credentials;
|
|
17
|
+
_directoryUrl;
|
|
18
|
+
_ws = null;
|
|
19
|
+
_wsConnected = false;
|
|
20
|
+
_pendingResults = new Map();
|
|
21
|
+
_intentHandlers = new Map();
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this._identity = BeamIdentity.fromData(config.identity);
|
|
24
|
+
this._directoryUrl = config.directoryUrl;
|
|
25
|
+
this._directory = new BeamDirectory({ baseUrl: config.directoryUrl });
|
|
26
|
+
this._did = new BeamDID({ baseUrl: config.directoryUrl, identity: this._identity });
|
|
27
|
+
this._credentials = new BeamCredentialsClient(config.directoryUrl);
|
|
28
|
+
}
|
|
29
|
+
get beamId() {
|
|
30
|
+
return this._identity.beamId;
|
|
31
|
+
}
|
|
32
|
+
get directory() {
|
|
33
|
+
return this._directory;
|
|
34
|
+
}
|
|
35
|
+
get did() {
|
|
36
|
+
return this._did;
|
|
37
|
+
}
|
|
38
|
+
get credentials() {
|
|
39
|
+
return this._credentials;
|
|
40
|
+
}
|
|
41
|
+
async register(displayName, capabilities) {
|
|
42
|
+
const parsed = BeamIdentity.parseBeamId(this._identity.beamId);
|
|
43
|
+
if (!parsed)
|
|
44
|
+
throw new Error('Invalid beam ID on identity');
|
|
45
|
+
return this._directory.register({
|
|
46
|
+
beamId: this._identity.beamId,
|
|
47
|
+
displayName,
|
|
48
|
+
capabilities,
|
|
49
|
+
publicKey: this._identity.publicKeyBase64,
|
|
50
|
+
org: parsed.org,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async updateProfile(fields) {
|
|
54
|
+
return this._directory.updateProfile(this._identity.beamId, fields);
|
|
55
|
+
}
|
|
56
|
+
async verifyDomain(domain) {
|
|
57
|
+
return this._directory.verifyDomain(this._identity.beamId, domain);
|
|
58
|
+
}
|
|
59
|
+
async checkDomainVerification() {
|
|
60
|
+
return this._directory.checkDomainVerification(this._identity.beamId);
|
|
61
|
+
}
|
|
62
|
+
async rotateKeys(newKeyPair) {
|
|
63
|
+
const identity = newKeyPair instanceof BeamIdentity ? newKeyPair : BeamIdentity.fromData(newKeyPair);
|
|
64
|
+
const result = await this._directory.rotateKeys(this._identity.beamId, identity.publicKeyBase64);
|
|
65
|
+
this._identity = identity;
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
async browse(page = 1, filters = {}) {
|
|
69
|
+
return this._directory.browse(page, filters);
|
|
70
|
+
}
|
|
71
|
+
async getStats() {
|
|
72
|
+
return this._directory.getStats();
|
|
73
|
+
}
|
|
74
|
+
async delegate(targetBeamId, scope, expiresIn) {
|
|
75
|
+
return this._directory.delegate(this._identity.beamId, targetBeamId, scope, expiresIn);
|
|
76
|
+
}
|
|
77
|
+
async report(targetBeamId, reason) {
|
|
78
|
+
return this._directory.report(this._identity.beamId, targetBeamId, reason);
|
|
79
|
+
}
|
|
80
|
+
async connect() {
|
|
81
|
+
if (this._ws && this._wsConnected)
|
|
82
|
+
return;
|
|
83
|
+
const wsUrl = this._directoryUrl
|
|
84
|
+
.replace(/^http:\/\//, 'ws://')
|
|
85
|
+
.replace(/^https:\/\//, 'wss://')
|
|
86
|
+
.replace(/\/$/, '') + `/ws?beamId=${encodeURIComponent(this._identity.beamId)}`;
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
openWebSocket(wsUrl).then((ws) => {
|
|
89
|
+
this._ws = ws;
|
|
90
|
+
ws.onopen = () => {
|
|
91
|
+
};
|
|
92
|
+
ws.onmessage = (event) => {
|
|
93
|
+
this._handleMessage(event.data);
|
|
94
|
+
};
|
|
95
|
+
ws.onclose = () => {
|
|
96
|
+
this._wsConnected = false;
|
|
97
|
+
this._ws = null;
|
|
98
|
+
for (const [nonce, pending] of this._pendingResults) {
|
|
99
|
+
clearTimeout(pending.timer);
|
|
100
|
+
pending.reject(new Error('WebSocket connection closed'));
|
|
101
|
+
this._pendingResults.delete(nonce);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
ws.onerror = (event) => {
|
|
105
|
+
if (!this._wsConnected) {
|
|
106
|
+
reject(new Error(`WebSocket connection error: ${String(event)}`));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const originalHandleMessage = this._handleMessage.bind(this);
|
|
110
|
+
this._handleMessage = (data) => {
|
|
111
|
+
try {
|
|
112
|
+
const msg = JSON.parse(data);
|
|
113
|
+
if (msg.type === 'connected') {
|
|
114
|
+
this._wsConnected = true;
|
|
115
|
+
this._handleMessage = originalHandleMessage;
|
|
116
|
+
resolve();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
}
|
|
122
|
+
originalHandleMessage(data);
|
|
123
|
+
};
|
|
124
|
+
}).catch(reject);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
_handleMessage(data) {
|
|
128
|
+
let msg;
|
|
129
|
+
try {
|
|
130
|
+
msg = JSON.parse(data);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (msg['type'] === 'result') {
|
|
136
|
+
const frame = msg['frame'];
|
|
137
|
+
if (!frame)
|
|
138
|
+
return;
|
|
139
|
+
const pending = this._pendingResults.get(frame.nonce);
|
|
140
|
+
if (pending) {
|
|
141
|
+
clearTimeout(pending.timer);
|
|
142
|
+
this._pendingResults.delete(frame.nonce);
|
|
143
|
+
pending.resolve(frame);
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (msg['type'] !== 'intent') {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const frame = msg['frame'];
|
|
151
|
+
const senderPublicKey = msg['senderPublicKey'];
|
|
152
|
+
if (!frame || !senderPublicKey)
|
|
153
|
+
return;
|
|
154
|
+
const validation = validateIntentFrame(frame, senderPublicKey);
|
|
155
|
+
if (!validation.valid)
|
|
156
|
+
return;
|
|
157
|
+
const handler = this._intentHandlers.get(frame.intent) ?? this._intentHandlers.get('*');
|
|
158
|
+
if (!handler)
|
|
159
|
+
return;
|
|
160
|
+
const startTime = Date.now();
|
|
161
|
+
const respond = (options) => {
|
|
162
|
+
const latency = options.latency ?? (Date.now() - startTime);
|
|
163
|
+
const resultFrame = createResultFrame({ ...options, nonce: frame.nonce, latency }, this._identity);
|
|
164
|
+
if (this._ws && this._wsConnected) {
|
|
165
|
+
this._ws.send(JSON.stringify({ type: 'result', frame: resultFrame }));
|
|
166
|
+
}
|
|
167
|
+
return resultFrame;
|
|
168
|
+
};
|
|
169
|
+
Promise.resolve(handler(frame, respond)).catch((error) => {
|
|
170
|
+
respond({
|
|
171
|
+
success: false,
|
|
172
|
+
error: error instanceof Error ? error.message : 'Unhandled intent error',
|
|
173
|
+
errorCode: 'INTENT_HANDLER_ERROR',
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
async send(to, intent, payload, timeoutMs = 30_000) {
|
|
178
|
+
const frame = createIntentFrame({ intent, from: this._identity.beamId, to, payload }, this._identity);
|
|
179
|
+
signFrame(frame, this._identity.export().privateKeyBase64);
|
|
180
|
+
if (this._ws && this._wsConnected) {
|
|
181
|
+
return this._sendViaWebSocket(frame, timeoutMs);
|
|
182
|
+
}
|
|
183
|
+
return this._sendViaHttp(frame);
|
|
184
|
+
}
|
|
185
|
+
_sendViaWebSocket(frame, timeoutMs) {
|
|
186
|
+
return new Promise((resolve, reject) => {
|
|
187
|
+
const timer = setTimeout(() => {
|
|
188
|
+
this._pendingResults.delete(frame.nonce);
|
|
189
|
+
reject(new Error(`Intent "${frame.intent}" timed out after ${timeoutMs}ms`));
|
|
190
|
+
}, timeoutMs);
|
|
191
|
+
this._pendingResults.set(frame.nonce, { resolve, reject, timer });
|
|
192
|
+
try {
|
|
193
|
+
this._ws.send(JSON.stringify({ type: 'intent', frame }));
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
clearTimeout(timer);
|
|
197
|
+
this._pendingResults.delete(frame.nonce);
|
|
198
|
+
reject(err);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
async _sendViaHttp(frame) {
|
|
203
|
+
const baseUrl = this._directoryUrl.replace(/\/$/, '');
|
|
204
|
+
const res = await fetch(`${baseUrl}/intents/send`, {
|
|
205
|
+
method: 'POST',
|
|
206
|
+
headers: { 'Content-Type': 'application/json' },
|
|
207
|
+
body: JSON.stringify(frame)
|
|
208
|
+
});
|
|
209
|
+
if (!res.ok) {
|
|
210
|
+
throw new Error(`HTTP intent delivery failed: ${res.status} ${res.statusText}`);
|
|
211
|
+
}
|
|
212
|
+
return res.json();
|
|
213
|
+
}
|
|
214
|
+
on(intent, handler) {
|
|
215
|
+
this._intentHandlers.set(intent, handler);
|
|
216
|
+
return this;
|
|
217
|
+
}
|
|
218
|
+
thread(to, options) {
|
|
219
|
+
return new BeamThread(this, to, options);
|
|
220
|
+
}
|
|
221
|
+
async talk(to, message, options) {
|
|
222
|
+
if (!message || message.length === 0) {
|
|
223
|
+
throw new Error('Message must be non-empty');
|
|
224
|
+
}
|
|
225
|
+
if (message.length > 32768) {
|
|
226
|
+
throw new Error('Message exceeds maximum length of 32768 characters');
|
|
227
|
+
}
|
|
228
|
+
const payload = { message };
|
|
229
|
+
if (options?.context)
|
|
230
|
+
payload['context'] = options.context;
|
|
231
|
+
if (options?.language)
|
|
232
|
+
payload['language'] = options.language;
|
|
233
|
+
if (options?.threadId)
|
|
234
|
+
payload['threadId'] = options.threadId;
|
|
235
|
+
const result = await this.send(to, 'conversation.message', payload, options?.timeoutMs ?? 60_000);
|
|
236
|
+
return {
|
|
237
|
+
message: result.payload?.['message'] ?? '',
|
|
238
|
+
structured: result.payload?.['structured'],
|
|
239
|
+
threadId: result.payload?.['threadId'] ?? options?.threadId,
|
|
240
|
+
raw: result,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
onTalk(handler) {
|
|
244
|
+
this.on('conversation.message', (frame, rawRespond) => {
|
|
245
|
+
const message = frame.payload?.['message'] ?? '';
|
|
246
|
+
const respond = (reply, structured) => {
|
|
247
|
+
rawRespond({
|
|
248
|
+
success: true,
|
|
249
|
+
payload: {
|
|
250
|
+
message: reply,
|
|
251
|
+
...(structured ? { structured } : {}),
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
return handler(message, frame.from, respond, frame);
|
|
256
|
+
});
|
|
257
|
+
return this;
|
|
258
|
+
}
|
|
259
|
+
disconnect() {
|
|
260
|
+
if (this._ws) {
|
|
261
|
+
this._wsConnected = false;
|
|
262
|
+
for (const [nonce, pending] of this._pendingResults) {
|
|
263
|
+
clearTimeout(pending.timer);
|
|
264
|
+
pending.reject(new Error('Client disconnected'));
|
|
265
|
+
this._pendingResults.delete(nonce);
|
|
266
|
+
}
|
|
267
|
+
this._ws.close();
|
|
268
|
+
this._ws = null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
export class BeamThread {
|
|
273
|
+
threadId;
|
|
274
|
+
_client;
|
|
275
|
+
_to;
|
|
276
|
+
_language;
|
|
277
|
+
_timeoutMs;
|
|
278
|
+
constructor(client, to, options) {
|
|
279
|
+
this._client = client;
|
|
280
|
+
this._to = to;
|
|
281
|
+
this._language = options?.language;
|
|
282
|
+
this._timeoutMs = options?.timeoutMs ?? 60_000;
|
|
283
|
+
this.threadId = BeamIdentity.generateNonce();
|
|
284
|
+
}
|
|
285
|
+
async say(message, context) {
|
|
286
|
+
const result = await this._client.talk(this._to, message, {
|
|
287
|
+
threadId: this.threadId,
|
|
288
|
+
context,
|
|
289
|
+
language: this._language,
|
|
290
|
+
timeoutMs: this._timeoutMs,
|
|
291
|
+
});
|
|
292
|
+
return { message: result.message, structured: result.structured };
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/did.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { BeamIdentity } from './identity.js';
|
|
2
|
+
export type ServiceEndpointValue = string | string[] | Record<string, unknown>;
|
|
3
|
+
export interface VerificationMethod {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'Ed25519VerificationKey2020';
|
|
6
|
+
controller: string;
|
|
7
|
+
publicKeyMultibase: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ServiceEndpoint {
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
serviceEndpoint: ServiceEndpointValue;
|
|
13
|
+
}
|
|
14
|
+
export interface DIDDocument {
|
|
15
|
+
'@context': string[];
|
|
16
|
+
id: string;
|
|
17
|
+
alsoKnownAs?: string[];
|
|
18
|
+
verificationMethod: VerificationMethod[];
|
|
19
|
+
authentication: string[];
|
|
20
|
+
assertionMethod: string[];
|
|
21
|
+
capabilityInvocation: string[];
|
|
22
|
+
capabilityDelegation: string[];
|
|
23
|
+
service?: ServiceEndpoint[];
|
|
24
|
+
created?: string;
|
|
25
|
+
updated?: string;
|
|
26
|
+
deactivated?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface CredentialSubject {
|
|
29
|
+
id: string;
|
|
30
|
+
email?: string;
|
|
31
|
+
domain?: string;
|
|
32
|
+
business?: Record<string, unknown>;
|
|
33
|
+
verified: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface Proof {
|
|
36
|
+
type: 'Ed25519Signature2020';
|
|
37
|
+
created: string;
|
|
38
|
+
proofPurpose: 'assertionMethod';
|
|
39
|
+
verificationMethod: string;
|
|
40
|
+
proofValue: string;
|
|
41
|
+
publicKeyMultibase: string;
|
|
42
|
+
}
|
|
43
|
+
export interface VerifiableCredential {
|
|
44
|
+
'@context': string[];
|
|
45
|
+
id: string;
|
|
46
|
+
type: string[];
|
|
47
|
+
issuer: string;
|
|
48
|
+
issuanceDate: string;
|
|
49
|
+
credentialSubject: CredentialSubject;
|
|
50
|
+
proof: Proof;
|
|
51
|
+
}
|
|
52
|
+
type BeamDIDConfig = {
|
|
53
|
+
baseUrl: string;
|
|
54
|
+
identity?: BeamIdentity;
|
|
55
|
+
};
|
|
56
|
+
type CreateOptions = {
|
|
57
|
+
beamId?: string;
|
|
58
|
+
publicKey?: string;
|
|
59
|
+
format?: 'personal' | 'org' | 'key';
|
|
60
|
+
createdAt?: string;
|
|
61
|
+
updatedAt?: string;
|
|
62
|
+
};
|
|
63
|
+
export declare class BeamDID {
|
|
64
|
+
private readonly baseUrl;
|
|
65
|
+
private readonly identity?;
|
|
66
|
+
constructor(config: BeamDIDConfig);
|
|
67
|
+
create(options?: CreateOptions): DIDDocument;
|
|
68
|
+
resolve(did: string): Promise<DIDDocument | null>;
|
|
69
|
+
update(document: DIDDocument, patch: Partial<DIDDocument>): DIDDocument;
|
|
70
|
+
deactivate(document: DIDDocument): DIDDocument;
|
|
71
|
+
}
|
|
72
|
+
export declare class CredentialVerifier {
|
|
73
|
+
static verify(vc: VerifiableCredential): boolean;
|
|
74
|
+
}
|
|
75
|
+
export declare class BeamCredentialsClient {
|
|
76
|
+
private readonly baseUrl;
|
|
77
|
+
constructor(baseUrl: string);
|
|
78
|
+
issueEmailVC(beamId: string, email: string): Promise<VerifiableCredential>;
|
|
79
|
+
issueDomainVC(beamId: string, domain: string): Promise<VerifiableCredential>;
|
|
80
|
+
issueBusinessVC(beamId: string, businessInfo: Record<string, unknown>): Promise<VerifiableCredential>;
|
|
81
|
+
verify(vc: VerifiableCredential): boolean;
|
|
82
|
+
private post;
|
|
83
|
+
}
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=did.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":"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"}
|