@docknetwork/wallet-sdk-core 1.7.7-alpha.0 → 1.9.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.
Files changed (76) hide show
  1. package/lib/cloud-wallet.d.ts +79 -3
  2. package/lib/cloud-wallet.d.ts.map +1 -1
  3. package/lib/cloud-wallet.js +147 -14
  4. package/lib/cloud-wallet.js.map +1 -1
  5. package/lib/credential-provider.d.ts.map +1 -1
  6. package/lib/credential-provider.js +10 -4
  7. package/lib/credential-provider.js.map +1 -1
  8. package/lib/delegation/delegation-chain.d.ts +8 -0
  9. package/lib/delegation/delegation-chain.d.ts.map +1 -0
  10. package/lib/delegation/delegation-chain.js +33 -0
  11. package/lib/delegation/delegation-chain.js.map +1 -0
  12. package/lib/delegation/delegation-fixtures.d.ts +69 -0
  13. package/lib/delegation/delegation-fixtures.d.ts.map +1 -0
  14. package/lib/delegation/delegation-fixtures.js +553 -0
  15. package/lib/delegation/delegation-fixtures.js.map +1 -0
  16. package/lib/delegation/delegation-issuance.d.ts +19 -0
  17. package/lib/delegation/delegation-issuance.d.ts.map +1 -0
  18. package/lib/delegation/delegation-issuance.js +60 -0
  19. package/lib/delegation/delegation-issuance.js.map +1 -0
  20. package/lib/delegation/delegation-offer.d.ts +84 -0
  21. package/lib/delegation/delegation-offer.d.ts.map +1 -0
  22. package/lib/delegation/delegation-offer.js +349 -0
  23. package/lib/delegation/delegation-offer.js.map +1 -0
  24. package/lib/delegation/delegation-policy-validation.d.ts +28 -0
  25. package/lib/delegation/delegation-policy-validation.d.ts.map +1 -0
  26. package/lib/delegation/delegation-policy-validation.js +170 -0
  27. package/lib/delegation/delegation-policy-validation.js.map +1 -0
  28. package/lib/delegation/delegation-policy.d.ts +21 -0
  29. package/lib/delegation/delegation-policy.d.ts.map +1 -0
  30. package/lib/delegation/delegation-policy.js +73 -0
  31. package/lib/delegation/delegation-policy.js.map +1 -0
  32. package/lib/delegation/delegation-tree.d.ts +17 -0
  33. package/lib/delegation/delegation-tree.d.ts.map +1 -0
  34. package/lib/delegation/delegation-tree.js +58 -0
  35. package/lib/delegation/delegation-tree.js.map +1 -0
  36. package/lib/delegation/delegation-types.d.ts +56 -0
  37. package/lib/delegation/delegation-types.d.ts.map +1 -0
  38. package/lib/delegation/delegation-types.js +3 -0
  39. package/lib/delegation/delegation-types.js.map +1 -0
  40. package/lib/delegation/delegation-utils.d.ts +3 -0
  41. package/lib/delegation/delegation-utils.d.ts.map +1 -0
  42. package/lib/delegation/delegation-utils.js +10 -0
  43. package/lib/delegation/delegation-utils.js.map +1 -0
  44. package/lib/did-provider.d.ts +2 -1
  45. package/lib/did-provider.d.ts.map +1 -1
  46. package/lib/did-provider.js +11 -7
  47. package/lib/did-provider.js.map +1 -1
  48. package/lib/message-provider.js +1 -1
  49. package/lib/message-provider.js.map +1 -1
  50. package/lib/verification-controller.d.ts +30 -11
  51. package/lib/verification-controller.d.ts.map +1 -1
  52. package/lib/verification-controller.js +372 -68
  53. package/lib/verification-controller.js.map +1 -1
  54. package/package.json +3 -3
  55. package/src/cloud-wallet.test.js +369 -0
  56. package/src/cloud-wallet.ts +206 -18
  57. package/src/credential-provider.ts +13 -4
  58. package/src/delegation/delegation-chain.test.ts +64 -0
  59. package/src/delegation/delegation-chain.ts +34 -0
  60. package/src/delegation/delegation-fixtures.ts +552 -0
  61. package/src/delegation/delegation-issuance.ts +92 -0
  62. package/src/delegation/delegation-offer.ts +488 -0
  63. package/src/delegation/delegation-policy-validation.test.ts +237 -0
  64. package/src/delegation/delegation-policy-validation.ts +281 -0
  65. package/src/delegation/delegation-policy.ts +100 -0
  66. package/src/delegation/delegation-tree.test.ts +110 -0
  67. package/src/delegation/delegation-tree.ts +60 -0
  68. package/src/delegation/delegation-types.ts +65 -0
  69. package/src/delegation/delegation-utils.ts +10 -0
  70. package/src/did-provider.ts +10 -6
  71. package/src/globals.d.ts +6 -0
  72. package/src/message-provider.ts +1 -1
  73. package/src/verification-controller.test.ts +23 -0
  74. package/src/verification-controller.ts +534 -82
  75. package/tsconfig.build.json +2 -1
  76. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1,553 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.delegationPolicyTravelAgent = exports.delegationPolicyPharmacy = void 0;
4
+ exports.delegationPolicyPharmacy = {
5
+ id: 'urn:uuid:65763e5c-8b8c-4db6-916c-e367b71644b0',
6
+ type: 'DelegationPolicy',
7
+ ruleset: {
8
+ roles: [
9
+ {
10
+ label: 'Prescribing Doctor',
11
+ roleId: '6ed167b3-90be-4f9a-a8d2-542d2f212d79',
12
+ attributes: ['*'],
13
+ parentRoleId: null,
14
+ capabilityGrants: [
15
+ {
16
+ schema: {
17
+ type: 'boolean',
18
+ const: true,
19
+ },
20
+ capability: 'Can Pick Up',
21
+ },
22
+ {
23
+ schema: {
24
+ type: 'boolean',
25
+ const: true,
26
+ },
27
+ capability: 'Can Pay',
28
+ },
29
+ {
30
+ schema: {
31
+ type: 'boolean',
32
+ const: true,
33
+ },
34
+ capability: 'Can Cancel',
35
+ },
36
+ {
37
+ schema: {
38
+ type: 'array',
39
+ items: {
40
+ enum: ['Pay', 'Cancel', 'PickUp'],
41
+ type: 'string',
42
+ },
43
+ minItems: 1,
44
+ uniqueItems: true,
45
+ },
46
+ capability: 'Allowed Claims',
47
+ },
48
+ ],
49
+ },
50
+ {
51
+ label: 'Pharmacy',
52
+ roleId: '053077d1-6e60-44a4-8c69-dad68eeca36e',
53
+ attributes: ['*'],
54
+ parentRoleId: '6ed167b3-90be-4f9a-a8d2-542d2f212d79',
55
+ capabilityGrants: [
56
+ {
57
+ schema: {
58
+ type: 'boolean',
59
+ const: true,
60
+ },
61
+ capability: 'Can Pick Up',
62
+ },
63
+ {
64
+ schema: {
65
+ type: 'boolean',
66
+ const: true,
67
+ },
68
+ capability: 'Can Pay',
69
+ },
70
+ {
71
+ schema: {
72
+ type: 'boolean',
73
+ const: true,
74
+ },
75
+ capability: 'Can Cancel',
76
+ },
77
+ {
78
+ schema: {
79
+ type: 'array',
80
+ items: {
81
+ enum: ['PickUp', 'Pay', 'Cancel'],
82
+ type: 'string',
83
+ },
84
+ minItems: 1,
85
+ uniqueItems: true,
86
+ },
87
+ capability: 'Allowed Claims',
88
+ },
89
+ ],
90
+ },
91
+ {
92
+ label: 'Patient',
93
+ roleId: '560195e9-922d-4002-b851-95b730577421',
94
+ attributes: ['*'],
95
+ parentRoleId: '053077d1-6e60-44a4-8c69-dad68eeca36e',
96
+ capabilityGrants: [
97
+ {
98
+ schema: {
99
+ type: 'boolean',
100
+ const: true,
101
+ },
102
+ capability: 'Can Pick Up',
103
+ },
104
+ {
105
+ schema: {
106
+ type: 'boolean',
107
+ const: true,
108
+ },
109
+ capability: 'Can Pay',
110
+ },
111
+ {
112
+ schema: {
113
+ type: 'boolean',
114
+ const: true,
115
+ },
116
+ capability: 'Can Cancel',
117
+ },
118
+ {
119
+ schema: {
120
+ type: 'array',
121
+ items: {
122
+ enum: ['PickUp', 'Pay', 'Cancel'],
123
+ type: 'string',
124
+ },
125
+ minItems: 1,
126
+ uniqueItems: true,
127
+ },
128
+ capability: 'Allowed Claims',
129
+ },
130
+ ],
131
+ },
132
+ {
133
+ label: 'Guardian',
134
+ roleId: '781aa007-ff3e-463a-82ac-b177359ea02c',
135
+ attributes: ['*'],
136
+ parentRoleId: '560195e9-922d-4002-b851-95b730577421',
137
+ capabilityGrants: [
138
+ {
139
+ schema: {
140
+ type: 'boolean',
141
+ const: true,
142
+ },
143
+ capability: 'Can Pick Up',
144
+ },
145
+ {
146
+ schema: {
147
+ type: 'boolean',
148
+ const: true,
149
+ },
150
+ capability: 'Can Pay',
151
+ },
152
+ {
153
+ schema: {
154
+ type: 'boolean',
155
+ const: true,
156
+ },
157
+ capability: 'Can Cancel',
158
+ },
159
+ ],
160
+ },
161
+ ],
162
+ capabilities: [
163
+ {
164
+ name: 'Can Pick Up',
165
+ schema: {
166
+ type: 'boolean',
167
+ const: true,
168
+ },
169
+ },
170
+ {
171
+ name: 'Can Pay',
172
+ schema: {
173
+ type: 'boolean',
174
+ const: true,
175
+ },
176
+ },
177
+ {
178
+ name: 'Can Cancel',
179
+ schema: {
180
+ type: 'boolean',
181
+ const: true,
182
+ },
183
+ },
184
+ {
185
+ name: 'Allowed Claims',
186
+ schema: {
187
+ type: 'array',
188
+ items: {
189
+ enum: ['PickUp', 'Pay', 'Cancel'],
190
+ type: 'string',
191
+ },
192
+ minItems: 1,
193
+ uniqueItems: true,
194
+ },
195
+ },
196
+ ],
197
+ delegationTarget: 'single-credential',
198
+ overallConstraints: {
199
+ maxDelegationDepth: 4,
200
+ delegatedCredentialLifetime: {
201
+ unit: 'years',
202
+ value: 1,
203
+ },
204
+ },
205
+ },
206
+ createdAt: '2026-04-29',
207
+ name: 'Prescription',
208
+ };
209
+ exports.delegationPolicyTravelAgent = {
210
+ id: 'urn:uuid:0850f80d-7af5-4fda-8fda-a85ef5c8672d',
211
+ type: 'DelegationPolicy',
212
+ ruleset: {
213
+ roles: [
214
+ {
215
+ label: 'Travel Agent 1',
216
+ roleId: 'e79c0d16-8739-4e54-94d7-53d9f1c97c71',
217
+ attributes: ['*'],
218
+ parentRoleId: null,
219
+ capabilityGrants: [
220
+ {
221
+ schema: {
222
+ type: 'array',
223
+ items: {
224
+ type: 'string',
225
+ },
226
+ minItems: 1,
227
+ uniqueItems: true,
228
+ },
229
+ capability: 'Allowed Routes',
230
+ },
231
+ {
232
+ schema: {
233
+ type: 'integer',
234
+ maximum: 100,
235
+ },
236
+ capability: 'Purchase',
237
+ },
238
+ {
239
+ schema: {
240
+ type: 'boolean',
241
+ const: true,
242
+ },
243
+ capability: 'Reserve Flights',
244
+ },
245
+ {
246
+ schema: {
247
+ type: 'boolean',
248
+ const: true,
249
+ },
250
+ capability: 'Reserve Hotels',
251
+ },
252
+ ],
253
+ },
254
+ {
255
+ label: 'Corporate Account Manager',
256
+ roleId: '8e5abc88-7006-42ae-ae48-9e34f8f66124',
257
+ attributes: ['*'],
258
+ parentRoleId: 'e79c0d16-8739-4e54-94d7-53d9f1c97c71',
259
+ capabilityGrants: [
260
+ {
261
+ schema: {
262
+ type: 'array',
263
+ items: {
264
+ type: 'string',
265
+ },
266
+ minItems: 1,
267
+ uniqueItems: true,
268
+ },
269
+ capability: 'Allowed Routes',
270
+ },
271
+ {
272
+ schema: {
273
+ type: 'integer',
274
+ maximum: 100,
275
+ },
276
+ capability: 'Purchase',
277
+ },
278
+ {
279
+ schema: {
280
+ type: 'boolean',
281
+ const: true,
282
+ },
283
+ capability: 'Reserve Flights',
284
+ },
285
+ {
286
+ schema: {
287
+ type: 'boolean',
288
+ const: true,
289
+ },
290
+ capability: 'Reserve Hotels',
291
+ },
292
+ ],
293
+ },
294
+ {
295
+ label: 'Booking Specialist',
296
+ roleId: '6375baa1-a52d-4838-9100-3facea02ba49',
297
+ attributes: ['*'],
298
+ parentRoleId: '8e5abc88-7006-42ae-ae48-9e34f8f66124',
299
+ capabilityGrants: [
300
+ {
301
+ schema: {
302
+ type: 'array',
303
+ items: {
304
+ type: 'string',
305
+ },
306
+ minItems: 1,
307
+ uniqueItems: true,
308
+ },
309
+ capability: 'Allowed Routes',
310
+ },
311
+ {
312
+ schema: {
313
+ type: 'integer',
314
+ maximum: 100,
315
+ },
316
+ capability: 'Purchase',
317
+ },
318
+ {
319
+ schema: {
320
+ type: 'boolean',
321
+ const: true,
322
+ },
323
+ capability: 'Reserve Flights',
324
+ },
325
+ {
326
+ schema: {
327
+ type: 'boolean',
328
+ const: true,
329
+ },
330
+ capability: 'Reserve Hotels',
331
+ },
332
+ ],
333
+ },
334
+ {
335
+ label: 'Hotel Sub-agent',
336
+ roleId: '16f68474-bf3b-4494-9fe5-f141a7d74a33',
337
+ attributes: ['*'],
338
+ parentRoleId: '8e5abc88-7006-42ae-ae48-9e34f8f66124',
339
+ capabilityGrants: [
340
+ {
341
+ schema: {
342
+ type: 'array',
343
+ items: {
344
+ type: 'string',
345
+ },
346
+ minItems: 1,
347
+ uniqueItems: true,
348
+ },
349
+ capability: 'Allowed Routes',
350
+ },
351
+ {
352
+ schema: {
353
+ type: 'integer',
354
+ maximum: 50,
355
+ },
356
+ capability: 'Purchase',
357
+ },
358
+ {
359
+ schema: {
360
+ type: 'boolean',
361
+ const: true,
362
+ },
363
+ capability: 'Reserve Hotels',
364
+ },
365
+ ],
366
+ },
367
+ {
368
+ label: 'Flight Sub-agent',
369
+ roleId: 'c1bd8821-c645-4dd6-ab07-9bc087755db9',
370
+ attributes: ['*'],
371
+ parentRoleId: '8e5abc88-7006-42ae-ae48-9e34f8f66124',
372
+ capabilityGrants: [
373
+ {
374
+ schema: {
375
+ type: 'array',
376
+ items: {
377
+ type: 'string',
378
+ },
379
+ minItems: 1,
380
+ uniqueItems: true,
381
+ },
382
+ capability: 'Allowed Routes',
383
+ },
384
+ {
385
+ schema: {
386
+ type: 'integer',
387
+ maximum: 50,
388
+ },
389
+ capability: 'Purchase',
390
+ },
391
+ {
392
+ schema: {
393
+ type: 'boolean',
394
+ const: true,
395
+ },
396
+ capability: 'Reserve Flights',
397
+ },
398
+ ],
399
+ },
400
+ {
401
+ label: 'Car Rental Sub-agent',
402
+ roleId: '9726317c-cb60-4ae7-a828-e334b10f6f52',
403
+ attributes: ['*'],
404
+ parentRoleId: 'e79c0d16-8739-4e54-94d7-53d9f1c97c71',
405
+ capabilityGrants: [
406
+ {
407
+ schema: {
408
+ type: 'array',
409
+ items: {
410
+ type: 'string',
411
+ },
412
+ minItems: 1,
413
+ uniqueItems: true,
414
+ },
415
+ capability: 'Allowed Routes',
416
+ },
417
+ {
418
+ schema: {
419
+ type: 'integer',
420
+ maximum: 100,
421
+ },
422
+ capability: 'Purchase',
423
+ },
424
+ {
425
+ schema: {
426
+ type: 'boolean',
427
+ const: true,
428
+ },
429
+ capability: 'Reserve Flights',
430
+ },
431
+ {
432
+ schema: {
433
+ type: 'boolean',
434
+ const: true,
435
+ },
436
+ capability: 'Reserve Hotels',
437
+ },
438
+ ],
439
+ },
440
+ {
441
+ label: 'Flight Sub-agent',
442
+ roleId: '888aeee9-c3ed-469b-86bd-910490c9aa20',
443
+ attributes: ['*'],
444
+ parentRoleId: '9726317c-cb60-4ae7-a828-e334b10f6f52',
445
+ capabilityGrants: [
446
+ {
447
+ schema: {
448
+ type: 'array',
449
+ items: {
450
+ type: 'string',
451
+ },
452
+ minItems: 1,
453
+ uniqueItems: true,
454
+ },
455
+ capability: 'Allowed Routes',
456
+ },
457
+ {
458
+ schema: {
459
+ type: 'integer',
460
+ maximum: 50,
461
+ },
462
+ capability: 'Purchase',
463
+ },
464
+ {
465
+ schema: {
466
+ type: 'boolean',
467
+ const: true,
468
+ },
469
+ capability: 'Reserve Flights',
470
+ },
471
+ ],
472
+ },
473
+ {
474
+ label: 'Booking Executor',
475
+ roleId: 'd39f29c4-fc3e-4b5d-9eae-9f576576e4fb',
476
+ attributes: ['*'],
477
+ parentRoleId: '9726317c-cb60-4ae7-a828-e334b10f6f52',
478
+ capabilityGrants: [
479
+ {
480
+ schema: {
481
+ type: 'array',
482
+ items: {
483
+ type: 'string',
484
+ },
485
+ minItems: 1,
486
+ uniqueItems: true,
487
+ },
488
+ capability: 'Allowed Routes',
489
+ },
490
+ {
491
+ schema: {
492
+ type: 'integer',
493
+ maximum: 50,
494
+ },
495
+ capability: 'Purchase',
496
+ },
497
+ {
498
+ schema: {
499
+ type: 'boolean',
500
+ const: true,
501
+ },
502
+ capability: 'Reserve Hotels',
503
+ },
504
+ ],
505
+ },
506
+ ],
507
+ capabilities: [
508
+ {
509
+ name: 'Allowed Routes',
510
+ schema: {
511
+ type: 'array',
512
+ items: {
513
+ type: 'string',
514
+ },
515
+ minItems: 1,
516
+ uniqueItems: true,
517
+ },
518
+ },
519
+ {
520
+ name: 'Purchase',
521
+ schema: {
522
+ type: 'integer',
523
+ maximum: 100,
524
+ },
525
+ },
526
+ {
527
+ name: 'Reserve Flights',
528
+ schema: {
529
+ type: 'boolean',
530
+ const: true,
531
+ },
532
+ },
533
+ {
534
+ name: 'Reserve Hotels',
535
+ schema: {
536
+ type: 'boolean',
537
+ const: true,
538
+ },
539
+ },
540
+ ],
541
+ delegationTarget: 'single-credential',
542
+ overallConstraints: {
543
+ maxDelegationDepth: 4,
544
+ delegatedCredentialLifetime: {
545
+ unit: 'years',
546
+ value: 1,
547
+ },
548
+ },
549
+ },
550
+ createdAt: '2026-04-29',
551
+ name: 'Travel Agent',
552
+ };
553
+ //# sourceMappingURL=delegation-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-fixtures.js","sourceRoot":"","sources":["../../src/delegation/delegation-fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { DelegationPolicy } from './delegation-types';
2
+ /**
3
+ * Issue a delegatable credential
4
+ *
5
+ * @param credentialData
6
+ * @param issuerKey
7
+ * @param delegationPolicy
8
+ * @param roleId
9
+ * @param rootCredentialId
10
+ */
11
+ export declare function issueCredential(credentialData: any, issuerKey: any, delegationPolicy: DelegationPolicy, roleId: any, rootCredentialId?: any): Promise<Credential>;
12
+ export declare function delegateCredential({ credential, wallet, delegationPolicy, roleId, delegatorDID, }: {
13
+ credential: any;
14
+ wallet: any;
15
+ delegationPolicy: DelegationPolicy;
16
+ roleId: string;
17
+ delegatorDID: string;
18
+ }): Promise<Credential>;
19
+ //# sourceMappingURL=delegation-issuance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-issuance.d.ts","sourceRoot":"","sources":["../../src/delegation/delegation-issuance.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAOpD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,cAAc,KAAA,EACd,SAAS,KAAA,EACT,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,KAAA,EACN,gBAAgB,CAAC,KAAA,uBAuBlB;AAED,wBAAsB,kBAAkB,CAAC,EACvC,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,YAAY,GACb,EAAE;IACD,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;IACZ,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,uBAgCA"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.issueCredential = issueCredential;
7
+ exports.delegateCredential = delegateCredential;
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const delegation_utils_1 = require("./delegation-utils");
10
+ const delegation_policy_1 = require("./delegation-policy");
11
+ const delegation_1 = require("@docknetwork/wallet-sdk-wasm/lib/services/delegation");
12
+ const uuid_1 = require("uuid");
13
+ const did_provider_1 = require("../did-provider");
14
+ /**
15
+ * Issue a delegatable credential
16
+ *
17
+ * @param credentialData
18
+ * @param issuerKey
19
+ * @param delegationPolicy
20
+ * @param roleId
21
+ * @param rootCredentialId
22
+ */
23
+ async function issueCredential(credentialData, issuerKey, delegationPolicy, roleId, rootCredentialId) {
24
+ (0, assert_1.default)((0, delegation_utils_1.isDelegatableCredential)(credentialData), 'Credential is not delegatable');
25
+ const recipientRole = delegationPolicy.ruleset.roles.find(role => role.roleId === roleId);
26
+ (0, assert_1.default)(recipientRole, `Role ${roleId} not found in ruleset`);
27
+ const credentialId = credentialData.id || `urn:uuid:${(0, uuid_1.v4)()}`;
28
+ const credential = await delegation_1.delegationService.issueCredential(issuerKey, {
29
+ ...credentialData,
30
+ ...(await (0, delegation_policy_1.buildDelegationPolicyAttributes)(delegationPolicy)),
31
+ id: credentialId,
32
+ roleId,
33
+ rootCredentialId: rootCredentialId || credentialId,
34
+ });
35
+ return credential;
36
+ }
37
+ async function delegateCredential({ credential, wallet, delegationPolicy, roleId, delegatorDID, }) {
38
+ (0, assert_1.default)((0, delegation_utils_1.isDelegatableCredential)(credential), 'Credential is not delegatable');
39
+ (0, assert_1.default)(!!delegatorDID, 'delegatorDID is required');
40
+ const allDIDs = await (0, did_provider_1.getAllDIDs)({ wallet });
41
+ const issuerDID = allDIDs.find(d => d.didDocument.id === delegatorDID);
42
+ (0, assert_1.default)(!!issuerDID, `delegatorDID ${delegatorDID} not found in wallet`);
43
+ const keyPair = await (0, did_provider_1.getDIDKeyPair)(wallet, issuerDID);
44
+ const credentialData = {
45
+ ...(await (0, delegation_policy_1.buildDelegationPolicyAttributes)(delegationPolicy)),
46
+ '@context': credential['@context'],
47
+ id: `urn:uuid:${(0, uuid_1.v4)()}`,
48
+ roleId: roleId,
49
+ rootCredentialId: credential.rootCredentialId || credential.id,
50
+ type: credential.type,
51
+ issuer: {
52
+ id: issuerDID.didDocument.id,
53
+ name: issuerDID.name,
54
+ },
55
+ issuanceDate: new Date().toISOString(),
56
+ credentialSubject: credential.credentialSubject,
57
+ };
58
+ return issueCredential(credentialData, keyPair, delegationPolicy, roleId, credential.rootCredentialId || credential.id);
59
+ }
60
+ //# sourceMappingURL=delegation-issuance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-issuance.js","sourceRoot":"","sources":["../../src/delegation/delegation-issuance.ts"],"names":[],"mappings":";;;;;AAiBA,0CA4BC;AAED,gDA4CC;AA3FD,oDAA4B;AAE5B,yDAA2D;AAC3D,2DAAoE;AACpE,qFAAuF;AACvF,+BAAkC;AAClC,kDAA0D;AAE1D;;;;;;;;GAQG;AACI,KAAK,UAAU,eAAe,CACnC,cAAc,EACd,SAAS,EACT,gBAAkC,EAClC,MAAM,EACN,gBAAiB;IAEjB,IAAA,gBAAM,EACJ,IAAA,0CAAuB,EAAC,cAAc,CAAC,EACvC,+BAA+B,CAChC,CAAC;IAEF,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CACvD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAC/B,CAAC;IAEF,IAAA,gBAAM,EAAC,aAAa,EAAE,QAAQ,MAAM,uBAAuB,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,IAAI,YAAY,IAAA,SAAM,GAAE,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,MAAM,8BAAiB,CAAC,eAAe,CAAC,SAAS,EAAE;QACpE,GAAG,cAAc;QACjB,GAAG,CAAC,MAAM,IAAA,mDAA+B,EAAC,gBAAgB,CAAC,CAAC;QAC5D,EAAE,EAAE,YAAY;QAChB,MAAM;QACN,gBAAgB,EAAE,gBAAgB,IAAI,YAAY;KACnD,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,EACvC,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,YAAY,GAOb;IACC,IAAA,gBAAM,EAAC,IAAA,0CAAuB,EAAC,UAAU,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC7E,IAAA,gBAAM,EAAC,CAAC,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAU,EAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;IACvE,IAAA,gBAAM,EAAC,CAAC,CAAC,SAAS,EAAE,gBAAgB,YAAY,sBAAsB,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,MAAM,IAAA,4BAAa,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG;QACrB,GAAG,CAAC,MAAM,IAAA,mDAA+B,EAAC,gBAAgB,CAAC,CAAC;QAC5D,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;QAClC,EAAE,EAAE,YAAY,IAAA,SAAM,GAAE,EAAE;QAC1B,MAAM,EAAE,MAAM;QACd,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,EAAE;QAC9D,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE;YACN,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB;QACD,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;KAChD,CAAC;IAEF,OAAO,eAAe,CACpB,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,EAAE,CAC7C,CAAC;AACJ,CAAC"}