@bitgo-beta/sdk-core 8.2.1-beta.1905 → 8.2.1-beta.1907

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 (49) hide show
  1. package/dist/src/bitgo/defi/defiVault.d.ts +27 -8
  2. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  3. package/dist/src/bitgo/defi/defiVault.js +104 -5
  4. package/dist/src/bitgo/defi/iDefiVault.d.ts +11 -1
  5. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
  6. package/dist/src/bitgo/defi/iDefiVault.js +1 -1
  7. package/dist/src/bitgo/enterprise/enterprise.d.ts +6 -0
  8. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  9. package/dist/src/bitgo/enterprise/enterprise.js +9 -1
  10. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +3 -0
  11. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  12. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  13. package/dist/src/bitgo/index.d.ts +1 -0
  14. package/dist/src/bitgo/index.d.ts.map +1 -1
  15. package/dist/src/bitgo/index.js +2 -1
  16. package/dist/src/bitgo/safe/iSafe.d.ts +80 -0
  17. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
  18. package/dist/src/bitgo/safe/iSafe.js +3 -0
  19. package/dist/src/bitgo/safe/iSafes.d.ts +58 -0
  20. package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
  21. package/dist/src/bitgo/safe/iSafes.js +3 -0
  22. package/dist/src/bitgo/safe/index.d.ts +5 -0
  23. package/dist/src/bitgo/safe/index.d.ts.map +1 -0
  24. package/dist/src/bitgo/safe/index.js +21 -0
  25. package/dist/src/bitgo/safe/safe.d.ts +66 -0
  26. package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
  27. package/dist/src/bitgo/safe/safe.js +96 -0
  28. package/dist/src/bitgo/safe/safes.d.ts +61 -0
  29. package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
  30. package/dist/src/bitgo/safe/safes.js +67 -0
  31. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +5 -0
  32. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  33. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +61 -1
  34. package/dist/src/bitgo/wallet/BuildParams.d.ts +1 -0
  35. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  36. package/dist/src/bitgo/wallet/BuildParams.js +2 -1
  37. package/dist/src/bitgo/wallet/iWallet.d.ts +7 -0
  38. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  39. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  40. package/dist/test/unit/bitgo/defi/defiVault.js +265 -132
  41. package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
  42. package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
  43. package/dist/test/unit/bitgo/safe/safe.js +134 -0
  44. package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
  45. package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
  46. package/dist/test/unit/bitgo/safe/safes.js +94 -0
  47. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +120 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +9 -9
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/safe.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const sinon = __importStar(require("sinon"));
37
+ require("should");
38
+ const src_1 = require("../../../../src");
39
+ describe('Safe', function () {
40
+ let safe;
41
+ let mockBitGo;
42
+ let safeData;
43
+ // wire-shaped SafeData (timestamps as ISO strings) for mocked REST responses that get decoded
44
+ let safeDataWire;
45
+ beforeEach(function () {
46
+ mockBitGo = {
47
+ url: sinon.stub().callsFake((path) => path),
48
+ post: sinon.stub(),
49
+ };
50
+ safeData = {
51
+ id: 'test-safe-id',
52
+ enterpriseId: 'test-enterprise-id',
53
+ label: 'my safe',
54
+ status: 'active',
55
+ creator: 'creator-id',
56
+ users: [{ userId: 'creator-id', permissions: ['admin', 'spend'] }],
57
+ createdAt: new Date('2026-07-07T00:00:00.000Z'),
58
+ };
59
+ safeDataWire = {
60
+ id: 'test-safe-id',
61
+ enterpriseId: 'test-enterprise-id',
62
+ label: 'my safe',
63
+ status: 'active',
64
+ creator: 'creator-id',
65
+ users: [{ userId: 'creator-id', permissions: ['admin', 'spend'] }],
66
+ createdAt: '2026-07-07T00:00:00.000Z',
67
+ };
68
+ safe = new src_1.Safe(mockBitGo, safeData);
69
+ });
70
+ afterEach(function () {
71
+ sinon.restore();
72
+ });
73
+ describe('getters', function () {
74
+ it('exposes id/enterpriseId/label/status', function () {
75
+ safe.id().should.equal('test-safe-id');
76
+ safe.enterpriseId().should.equal('test-enterprise-id');
77
+ safe.label().should.equal('my safe');
78
+ safe.status().should.equal('active');
79
+ });
80
+ it('toJSON returns the underlying data', function () {
81
+ safe.toJSON().should.equal(safeData);
82
+ });
83
+ });
84
+ describe('url', function () {
85
+ it('builds the enterprise-scoped v2 path', function () {
86
+ safe.url().should.equal('/enterprise/test-enterprise-id/safes/test-safe-id');
87
+ safe.url('/freeze').should.equal('/enterprise/test-enterprise-id/safes/test-safe-id/freeze');
88
+ mockBitGo.url.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id', 2).should.be.true();
89
+ });
90
+ });
91
+ describe('freeze / archive REST plumbing', function () {
92
+ function stubPost(response) {
93
+ const resultStub = sinon.stub().resolves(response);
94
+ const sendStub = sinon.stub().returns({ result: resultStub });
95
+ mockBitGo.post.returns({ send: sendStub });
96
+ return { sendStub };
97
+ }
98
+ it('freeze posts the encoded body to the freeze route and decodes SafeData', async function () {
99
+ const frozen = { ...safeDataWire, freeze: { reason: 'incident' } };
100
+ const { sendStub } = stubPost(frozen);
101
+ const result = await safe.freeze({ reason: 'incident' });
102
+ mockBitGo.post.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id/freeze').should.be.true();
103
+ sendStub.calledWith({ reason: 'incident' }).should.be.true();
104
+ result.freeze.reason.should.equal('incident');
105
+ result.createdAt.should.be.instanceof(Date);
106
+ });
107
+ it('archive posts an empty body to the archive route and decodes SafeData', async function () {
108
+ const archived = { ...safeDataWire, status: 'archived' };
109
+ const { sendStub } = stubPost(archived);
110
+ const result = await safe.archive();
111
+ mockBitGo.post.calledWith('/enterprise/test-enterprise-id/safes/test-safe-id/archive').should.be.true();
112
+ sendStub.calledWithExactly().should.be.true();
113
+ result.status.should.equal('archived');
114
+ });
115
+ });
116
+ describe('member/share methods are stubbed (WCN-1203 / WCN-1204)', function () {
117
+ it('createWallet throws not-implemented (WCN-1203)', async function () {
118
+ await safe.createWallet({ coin: 'tbtc', label: 'w' }).should.be.rejectedWith(/WCN-1203/);
119
+ });
120
+ it('addMember throws not-implemented (WCN-1204)', async function () {
121
+ await safe.addMember({ userId: 'u', permissions: ['view'] }).should.be.rejectedWith(/WCN-1204/);
122
+ });
123
+ it('addMemberToWallet throws not-implemented (WCN-1204)', async function () {
124
+ await safe.addMemberToWallet({ walletId: 'w', walletPassphrase: 'p' }).should.be.rejectedWith(/WCN-1204/);
125
+ });
126
+ it('listShares throws not-implemented (WCN-1204)', async function () {
127
+ await safe.listShares().should.be.rejectedWith(/WCN-1204/);
128
+ });
129
+ it('acceptShare throws not-implemented (WCN-1204)', async function () {
130
+ await safe.acceptShare({ safeShareId: 's' }).should.be.rejectedWith(/WCN-1204/);
131
+ });
132
+ });
133
+ });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUF1QztBQUV2QyxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixVQUFVLENBQUM7UUFDVCxTQUFTLEdBQUc7WUFDVixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ25ELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO1NBQ25CLENBQUM7UUFDRixRQUFRLEdBQUc7WUFDVCxFQUFFLEVBQUUsY0FBYztZQUNsQixZQUFZLEVBQUUsb0JBQW9CO1lBQ2xDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUM7U0FDaEQsQ0FBQztRQUNGLFlBQVksR0FBRztZQUNiLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLFlBQVksRUFBRSxvQkFBb0I7WUFDbEMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLFlBQVk7WUFDckIsS0FBSyxFQUFFLENBQUMsRUFBRSxN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LElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLO1lBQzdELE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUs7WUFDdEQsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSztZQUN2RCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBTYWZlRGF0YSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgU2FmZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlRGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicpLFxuICAgIH07XG4gICAgc2FmZURhdGFXaXJlID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyxcbiAgICB9O1xuICAgIHNhZmUgPSBuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXR0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdleHBvc2VzIGlkL2VudGVycHJpc2VJZC9sYWJlbC9zdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUuZW50ZXJwcmlzZUlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICAgIHNhZmUuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b0pTT04gcmV0dXJucyB0aGUgdW5kZXJseWluZyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS50b0pTT04oKS5zaG91bGQuZXF1YWwoc2FmZURhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXJsJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdidWlsZHMgdGhlIGVudGVycHJpc2Utc2NvcGVkIHYyIHBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnVybCgpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS51cmwoJy9mcmVlemUnKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJyk7XG4gICAgICBtb2NrQml0R28udXJsLmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnLCAyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJlZXplIC8gYXJjaGl2ZSBSRVNUIHBsdW1iaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0dWJQb3N0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2VuZFN0dWIgfSk7XG4gICAgICByZXR1cm4geyBzZW5kU3R1YiB9O1xuICAgIH1cblxuICAgIGl0KCdmcmVlemUgcG9zdHMgdGhlIGVuY29kZWQgYm9keSB0byB0aGUgZnJlZXplIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZnJvemVuID0geyAuLi5zYWZlRGF0YVdpcmUsIGZyZWV6ZTogeyByZWFzb246ICdpbmNpZGVudCcgfSB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoZnJvemVuKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuZnJlZXplKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aCh7IHJlYXNvbjogJ2luY2lkZW50JyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LmZyZWV6ZSEucmVhc29uIS5zaG91bGQuZXF1YWwoJ2luY2lkZW50Jyk7XG4gICAgICByZXN1bHQuY3JlYXRlZEF0LnNob3VsZC5iZS5pbnN0YW5jZW9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmUgcG9zdHMgYW4gZW1wdHkgYm9keSB0byB0aGUgYXJjaGl2ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVkID0geyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyBhcyBjb25zdCB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoYXJjaGl2ZWQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5hcmNoaXZlKCk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtZW1iZXIvc2hhcmUgbWV0aG9kcyBhcmUgc3R1YmJlZCAoV0NOLTEyMDMgLyBXQ04tMTIwNCknLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NyZWF0ZVdhbGxldCB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwMyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwMy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZE1lbWJlciB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFkZE1lbWJlcih7IHVzZXJJZDogJ3UnLCBwZXJtaXNzaW9uczogWyd2aWV3J10gfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRNZW1iZXJUb1dhbGxldCB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFkZE1lbWJlclRvV2FsbGV0KHsgd2FsbGV0SWQ6ICd3Jywgd2FsbGV0UGFzc3BocmFzZTogJ3AnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbGlzdFNoYXJlcyB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmxpc3RTaGFyZXMoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdFNoYXJlIHRocm93cyBub3QtaW1wbGVtZW50ZWQgKFdDTi0xMjA0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUuYWNjZXB0U2hhcmUoeyBzYWZlU2hhcmVJZDogJ3MnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=safes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/safes.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const sinon = __importStar(require("sinon"));
37
+ require("should");
38
+ const src_1 = require("../../../../src");
39
+ describe('Safes', function () {
40
+ let safes;
41
+ let mockBitGo;
42
+ beforeEach(function () {
43
+ mockBitGo = {
44
+ url: sinon.stub().callsFake((path) => path),
45
+ };
46
+ safes = new src_1.Safes(mockBitGo, 'test-enterprise-id');
47
+ });
48
+ afterEach(function () {
49
+ sinon.restore();
50
+ });
51
+ // Phase 2 (generateSafe/initialize/createSafeKeys/finalize) and Phase 3 (list/get) are not yet
52
+ // implemented — they are gated on WCN-1175 / WCN-1176 / WCN-1177. Assert the interface is wired
53
+ // and stubbed for now.
54
+ describe('unimplemented lifecycle methods', function () {
55
+ it('generateSafe throws (Phase 2)', async function () {
56
+ await safes.generateSafe({ label: 'v', passphrase: 'p' }).should.be.rejectedWith(/not yet implemented .*Phase 2/);
57
+ });
58
+ it('initializeSafe throws (Phase 2)', async function () {
59
+ await safes.initializeSafe({ label: 'v' }).should.be.rejectedWith(/not yet implemented .*Phase 2/);
60
+ });
61
+ it('createSafeKeys throws (Phase 2)', async function () {
62
+ await safes
63
+ .createSafeKeys({ label: 'v', passphrase: 'p', safeId: 'vid' })
64
+ .should.be.rejectedWith(/not yet implemented .*Phase 2/);
65
+ });
66
+ it('finalizeSafe throws (Phase 2)', async function () {
67
+ await safes
68
+ .finalizeSafe('vid', {
69
+ rootKeys: {
70
+ hot: {
71
+ secp256k1Multisig: ['u', 'b', 'g'],
72
+ ecdsaMpc: ['u', 'b', 'g'],
73
+ eddsaMpc: ['u', 'b', 'g'],
74
+ ed25519Multisig: ['u', 'b', 'g'],
75
+ },
76
+ },
77
+ })
78
+ .should.be.rejectedWith(/not yet implemented .*Phase 2/);
79
+ });
80
+ it('list throws (Phase 3)', async function () {
81
+ await safes.list().should.be.rejectedWith(/not yet implemented .*Phase 3/);
82
+ });
83
+ it('get throws (Phase 3)', async function () {
84
+ await safes.get({ id: 'vid' }).should.be.rejectedWith(/not yet implemented .*Phase 3/);
85
+ });
86
+ });
87
+ describe('Enterprise.safes() accessor', function () {
88
+ it('returns a Safes instance scoped to the enterprise', function () {
89
+ const enterprise = new src_1.Enterprise(mockBitGo, {}, { id: 'ent-id', name: 'ent' });
90
+ enterprise.safes().should.be.instanceof(src_1.Safes);
91
+ });
92
+ });
93
+ });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQW9EO0FBRXBELFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxTQUFjLENBQUM7SUFFbkIsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNwRCxDQUFDO1FBQ0YsS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0ZBQStGO0lBQy9GLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsUUFBUSxDQUFDLGlDQUFpQyxFQUFFO1FBQzFDLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLO1lBQ3ZDLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNwSCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLO1lBQ3pDLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSztZQUN6QyxNQUFNLEtBQUs7aUJBQ1IsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDOUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxLQUFLO1lBQ3ZDLE1BQU0sS0FBSztpQkFDUixZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNuQixRQUFRLEVBQUU7b0JBQ1IsR0FBRyxFQUFFO3dCQUNILGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7d0JBQ2xDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO3dCQUN6QixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQzt3QkFDekIsZUFBZSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7cUJBQ2pDO2lCQUNGO2FBQ0YsQ0FBQztpQkFDRCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUs7WUFDL0IsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLO1lBQzlCLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw2QkFBNkIsRUFBRTtRQUN0QyxFQUFFLENBQUMsbURBQW1ELEVBQUU7WUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBVSxDQUFDLFNBQVMsRUFBRSxFQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBFbnRlcnByaXNlLCBTYWZlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmVzOiBTYWZlcztcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLmNhbGxzRmFrZSgocGF0aDogc3RyaW5nKSA9PiBwYXRoKSxcbiAgICB9O1xuICAgIHNhZmVzID0gbmV3IFNhZmVzKG1vY2tCaXRHbywgJ3Rlc3QtZW50ZXJwcmlzZS1pZCcpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgLy8gUGhhc2UgMiAoZ2VuZXJhdGVTYWZlL2luaXRpYWxpemUvY3JlYXRlU2FmZUtleXMvZmluYWxpemUpIGFuZCBQaGFzZSAzIChsaXN0L2dldCkgYXJlIG5vdCB5ZXRcbiAgLy8gaW1wbGVtZW50ZWQg4oCUIHRoZXkgYXJlIGdhdGVkIG9uIFdDTi0xMTc1IC8gV0NOLTExNzYgLyBXQ04tMTE3Ny4gQXNzZXJ0IHRoZSBpbnRlcmZhY2UgaXMgd2lyZWRcbiAgLy8gYW5kIHN0dWJiZWQgZm9yIG5vdy5cbiAgZGVzY3JpYmUoJ3VuaW1wbGVtZW50ZWQgbGlmZWN5Y2xlIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2dlbmVyYXRlU2FmZSB0aHJvd3MgKFBoYXNlIDIpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZXMuZ2VuZXJhdGVTYWZlKHsgbGFiZWw6ICd2JywgcGFzc3BocmFzZTogJ3AnIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaW5pdGlhbGl6ZVNhZmUgdGhyb3dzIChQaGFzZSAyKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6ICd2JyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9ub3QgeWV0IGltcGxlbWVudGVkIC4qUGhhc2UgMi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZVNhZmVLZXlzIHRocm93cyAoUGhhc2UgMiknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuY3JlYXRlU2FmZUtleXMoeyBsYWJlbDogJ3YnLCBwYXNzcGhyYXNlOiAncCcsIHNhZmVJZDogJ3ZpZCcgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmluYWxpemVTYWZlIHRocm93cyAoUGhhc2UgMiknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlc1xuICAgICAgICAuZmluYWxpemVTYWZlKCd2aWQnLCB7XG4gICAgICAgICAgcm9vdEtleXM6IHtcbiAgICAgICAgICAgIGhvdDoge1xuICAgICAgICAgICAgICBzZWNwMjU2azFNdWx0aXNpZzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlY2RzYU1wYzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlZGRzYU1wYzogWyd1JywgJ2InLCAnZyddLFxuICAgICAgICAgICAgICBlZDI1NTE5TXVsdGlzaWc6IFsndScsICdiJywgJ2cnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbGlzdCB0aHJvd3MgKFBoYXNlIDMpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZXMubGlzdCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQgLipQaGFzZSAzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZ2V0IHRocm93cyAoUGhhc2UgMyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlcy5nZXQoeyBpZDogJ3ZpZCcgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZCAuKlBoYXNlIDMvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0VudGVycHJpc2Uuc2FmZXMoKSBhY2Nlc3NvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIFNhZmVzIGluc3RhbmNlIHNjb3BlZCB0byB0aGUgZW50ZXJwcmlzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVudGVycHJpc2UgPSBuZXcgRW50ZXJwcmlzZShtb2NrQml0R28sIHt9IGFzIGFueSwgeyBpZDogJ2VudC1pZCcsIG5hbWU6ICdlbnQnIH0pO1xuICAgICAgZW50ZXJwcmlzZS5zYWZlcygpLnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmVzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==