@bitgo/sdk-core 36.37.0 → 36.38.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/src/bitgo/environments.d.ts +1 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +3 -1
- package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/goStakingWallet.js +2 -4
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +6 -0
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +17 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +1 -1
- package/dist/src/bitgo/wallet/wallet.js +4 -4
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +17 -7
- package/dist/test/unit/bitgo/wallet/getAccountResources.js +19 -19
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -44,7 +44,7 @@ describe('Wallet - getAccountResources', function () {
|
|
|
44
44
|
let mockWalletData;
|
|
45
45
|
beforeEach(function () {
|
|
46
46
|
mockBitGo = {
|
|
47
|
-
|
|
47
|
+
post: sinon.stub(),
|
|
48
48
|
};
|
|
49
49
|
mockBaseCoin = {
|
|
50
50
|
url: sinon.stub().returns('/test/coin'),
|
|
@@ -67,24 +67,24 @@ describe('Wallet - getAccountResources', function () {
|
|
|
67
67
|
{ address: 'address2', balance: 200 },
|
|
68
68
|
],
|
|
69
69
|
};
|
|
70
|
-
mockBitGo.
|
|
71
|
-
|
|
70
|
+
mockBitGo.post.returns({
|
|
71
|
+
send: sinon.stub().returns({
|
|
72
72
|
result: sinon.stub().resolves(mockResponse),
|
|
73
73
|
}),
|
|
74
74
|
});
|
|
75
75
|
const addresses = ['address1', 'address2'];
|
|
76
76
|
const result = await wallet.getAccountResources({ addresses });
|
|
77
77
|
result.should.deepEqual(mockResponse);
|
|
78
|
-
sinon.assert.calledOnce(mockBitGo.
|
|
79
|
-
const
|
|
80
|
-
sinon.assert.calledWith(
|
|
78
|
+
sinon.assert.calledOnce(mockBitGo.post);
|
|
79
|
+
const sendStub = mockBitGo.post.returnValues[0].send;
|
|
80
|
+
sinon.assert.calledWith(sendStub, { addresses });
|
|
81
81
|
});
|
|
82
82
|
it('should call WP API with addresses and destinationAddress parameters', async function () {
|
|
83
83
|
const mockResponse = {
|
|
84
84
|
resources: [{ address: 'address1', balance: 100 }],
|
|
85
85
|
};
|
|
86
|
-
mockBitGo.
|
|
87
|
-
|
|
86
|
+
mockBitGo.post.returns({
|
|
87
|
+
send: sinon.stub().returns({
|
|
88
88
|
result: sinon.stub().resolves(mockResponse),
|
|
89
89
|
}),
|
|
90
90
|
});
|
|
@@ -92,9 +92,9 @@ describe('Wallet - getAccountResources', function () {
|
|
|
92
92
|
const destinationAddress = 'TDestAddress123';
|
|
93
93
|
const result = await wallet.getAccountResources({ addresses, destinationAddress });
|
|
94
94
|
result.should.deepEqual(mockResponse);
|
|
95
|
-
sinon.assert.calledOnce(mockBitGo.
|
|
96
|
-
const
|
|
97
|
-
sinon.assert.calledWith(
|
|
95
|
+
sinon.assert.calledOnce(mockBitGo.post);
|
|
96
|
+
const sendStub = mockBitGo.post.returnValues[0].send;
|
|
97
|
+
sinon.assert.calledWith(sendStub, { addresses, destinationAddress });
|
|
98
98
|
});
|
|
99
99
|
it('should throw error if addresses is not an array', async function () {
|
|
100
100
|
try {
|
|
@@ -114,20 +114,20 @@ describe('Wallet - getAccountResources', function () {
|
|
|
114
114
|
error.message.should.equal('addresses array cannot be empty');
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
|
-
it('should not include destinationAddress in
|
|
117
|
+
it('should not include destinationAddress in body if not provided', async function () {
|
|
118
118
|
const mockResponse = { resources: [] };
|
|
119
|
-
mockBitGo.
|
|
120
|
-
|
|
119
|
+
mockBitGo.post.returns({
|
|
120
|
+
send: sinon.stub().returns({
|
|
121
121
|
result: sinon.stub().resolves(mockResponse),
|
|
122
122
|
}),
|
|
123
123
|
});
|
|
124
124
|
const addresses = ['address1'];
|
|
125
125
|
await wallet.getAccountResources({ addresses });
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
const sendStub = mockBitGo.post.returnValues[0].send;
|
|
127
|
+
const bodyArg = sendStub.firstCall.args[0];
|
|
128
|
+
bodyArg.should.deepEqual({ addresses });
|
|
129
|
+
bodyArg.should.not.have.property('destinationAddress');
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
});
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QWNjb3VudFJlc291cmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby93YWxsZXQvZ2V0QWNjb3VudFJlc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBQ2hCLHlDQUF5QztBQUV6QyxRQUFRLENBQUMsOEJBQThCLEVBQUU7SUFDdkMsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxTQUFjLENBQUM7SUFDbkIsSUFBSSxZQUFpQixDQUFDO0lBQ3RCLElBQUksY0FBbUIsQ0FBQztJQUV4QixVQUFVLENBQUM7UUFDVCxTQUFTLEdBQUc7WUFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNuQixDQUFDO1FBRUYsWUFBWSxHQUFHO1lBQ2IsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUN6QyxDQUFDO1FBRUYsY0FBYyxHQUFHO1lBQ2YsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQztTQUM5QyxDQUFDO1FBRUYsTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUM7UUFDUixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMscUJBQXFCLEVBQUU7UUFDOUIsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQs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Q0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ1dhbGxldCAtIGdldEFjY291bnRSZXNvdXJjZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB3YWxsZXQ6IFdhbGxldDtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgbW9ja0Jhc2VDb2luOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0RGF0YTogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkucmV0dXJucygnL3Rlc3QvY29pbicpLFxuICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICB9O1xuXG4gICAgbW9ja1dhbGxldERhdGEgPSB7XG4gICAgICBpZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgIGtleXM6IFsndXNlci1rZXknLCAnYmFja3VwLWtleScsICdiaXRnby1rZXknXSxcbiAgICB9O1xuXG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG1vY2tCYXNlQ29pbiwgbW9ja1dhbGxldERhdGEpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEFjY291bnRSZXNvdXJjZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIFdQIEFQSSB3aXRoIGFkZHJlc3NlcyBwYXJhbWV0ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrUmVzcG9uc2UgPSB7XG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzczogJ2FkZHJlc3MxJywgYmFsYW5jZTogMTAwIH0sXG4gICAgICAgICAgeyBhZGRyZXNzOiAnYWRkcmVzczInLCBiYWxhbmNlOiAyMDAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoe1xuICAgICAgICBzZW5kOiBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1Jlc3BvbnNlKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYWRkcmVzc2VzID0gWydhZGRyZXNzMScsICdhZGRyZXNzMiddO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LmdldEFjY291bnRSZXNvdXJjZXMoeyBhZGRyZXNzZXMgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKG1vY2tSZXNwb25zZSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrQml0R28ucG9zdCk7XG4gICAgICBjb25zdCBzZW5kU3R1YiA9IG1vY2tCaXRHby5wb3N0LnJldHVyblZhbHVlc1swXS5zZW5kO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoc2VuZFN0dWIsIHsgYWRkcmVzc2VzIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjYWxsIFdQIEFQSSB3aXRoIGFkZHJlc3NlcyBhbmQgZGVzdGluYXRpb25BZGRyZXNzIHBhcmFtZXRlcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrUmVzcG9uc2UgPSB7XG4gICAgICAgIHJlc291cmNlczogW3sgYWRkcmVzczogJ2FkZHJlc3MxJywgYmFsYW5jZTogMTAwIH1dLFxuICAgICAgfTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7XG4gICAgICAgIHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhtb2NrUmVzcG9uc2UpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZGRyZXNzZXMgPSBbJ2FkZHJlc3MxJ107XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbkFkZHJlc3MgPSAnVERlc3RBZGRyZXNzMTIzJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhbGxldC5nZXRBY2NvdW50UmVzb3VyY2VzKHsgYWRkcmVzc2VzLCBkZXN0aW5hdGlvbkFkZHJlc3MgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKG1vY2tSZXNwb25zZSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrQml0R28ucG9zdCk7XG4gICAgICBjb25zdCBzZW5kU3R1YiA9IG1vY2tCaXRHby5wb3N0LnJldHVyblZhbHVlc1swXS5zZW5kO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoc2VuZFN0dWIsIHsgYWRkcmVzc2VzLCBkZXN0aW5hdGlvbkFkZHJlc3MgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIGFkZHJlc3NlcyBpcyBub3QgYW4gYXJyYXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWxsZXQuZ2V0QWNjb3VudFJlc291cmNlcyh7IGFkZHJlc3NlczogJ25vdC1hbi1hcnJheScgYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZmFpbCgnU2hvdWxkIGhhdmUgdGhyb3duIGVycm9yJyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnYWRkcmVzc2VzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgaWYgYWRkcmVzc2VzIGFycmF5IGlzIGVtcHR5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FsbGV0LmdldEFjY291bnRSZXNvdXJjZXMoeyBhZGRyZXNzZXM6IFtdIH0pO1xuICAgICAgICBhc3NlcnQuZmFpbCgnU2hvdWxkIGhhdmUgdGhyb3duIGVycm9yJyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvci5tZXNzYWdlLnNob3VsZC5lcXVhbCgnYWRkcmVzc2VzIGFycmF5IGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgaW5jbHVkZSBkZXN0aW5hdGlvbkFkZHJlc3MgaW4gYm9keSBpZiBub3QgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtb2NrUmVzcG9uc2UgPSB7IHJlc291cmNlczogW10gfTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7XG4gICAgICAgIHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhtb2NrUmVzcG9uc2UpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZGRyZXNzZXMgPSBbJ2FkZHJlc3MxJ107XG4gICAgICBhd2FpdCB3YWxsZXQuZ2V0QWNjb3VudFJlc291cmNlcyh7IGFkZHJlc3NlcyB9KTtcblxuICAgICAgY29uc3Qgc2VuZFN0dWIgPSBtb2NrQml0R28ucG9zdC5yZXR1cm5WYWx1ZXNbMF0uc2VuZDtcbiAgICAgIGNvbnN0IGJvZHlBcmcgPSBzZW5kU3R1Yi5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGJvZHlBcmcuc2hvdWxkLmRlZXBFcXVhbCh7IGFkZHJlc3NlcyB9KTtcbiAgICAgIGJvZHlBcmcuc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdkZXN0aW5hdGlvbkFkZHJlc3MnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|