@bitgo/sdk-core 36.43.0 → 36.44.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 (28) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +5 -0
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/environments.d.ts.map +1 -1
  5. package/dist/src/bitgo/environments.js +8 -2
  6. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  7. package/dist/src/bitgo/pendingApproval/pendingApproval.js +2 -4
  8. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +1 -1
  9. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
  10. package/dist/src/bitgo/tss/bitgoPubKeys.js +6 -9
  11. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +3 -3
  12. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  13. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +27 -7
  14. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
  15. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  16. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  17. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  18. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +3 -5
  19. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  20. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +3 -5
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +5 -5
  23. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +0 -20
  24. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +0 -1
  25. package/dist/src/bitgo/utils/tss/recipientUtils.js +0 -46
  26. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +0 -2
  27. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +0 -1
  28. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +0 -137
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo/sdk-core",
3
- "version": "36.43.0",
3
+ "version": "36.44.0",
4
4
  "description": "core library functions for BitGoJS",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -40,12 +40,12 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo/public-types": "5.96.2",
43
+ "@bitgo/public-types": "5.97.0",
44
44
  "@bitgo/sdk-lib-mpc": "^10.12.0",
45
45
  "@bitgo/secp256k1": "^1.11.0",
46
46
  "@bitgo/sjcl": "^1.1.0",
47
- "@bitgo/statics": "^58.38.0",
48
- "@bitgo/utxo-lib": "^11.22.0",
47
+ "@bitgo/statics": "^58.39.0",
48
+ "@bitgo/utxo-lib": "^11.22.1",
49
49
  "@noble/curves": "1.8.1",
50
50
  "@stablelib/hex": "^1.0.0",
51
51
  "@types/superagent": "4.1.15",
@@ -78,5 +78,5 @@
78
78
  "@types/lodash": "^4.14.151",
79
79
  "nyc": "^15.0.0"
80
80
  },
81
- "gitHead": "292de3c9c18627c8a70cfbec2f8330f8be56bb77"
81
+ "gitHead": "d7fc97534114c36386cb2df9c9ef0df50340598d"
82
82
  }
@@ -1,20 +0,0 @@
1
- import { TransactionParams } from '../../baseCoin';
2
- import { TxRequest } from './baseTypes';
3
- /**
4
- * Transaction types that legitimately carry no explicit recipients.
5
- * verifyTransaction handles no-recipient validation for these internally.
6
- * Mirrors the bypass list in abstractEthLikeNewCoins.ts verifyTssTransaction.
7
- */
8
- export declare const NO_RECIPIENT_TX_TYPES: Set<string>;
9
- /**
10
- * Resolves the effective txParams for TSS signing recipient verification.
11
- *
12
- * For smart contract interactions, recipients live in txRequest.intent.recipients
13
- * (native amount = 0, so buildParams is empty). Falls back to intent recipients
14
- * mapped to ITransactionRecipient shape when txParams.recipients is absent.
15
- *
16
- * Throws InvalidTransactionError if no recipients can be resolved and the
17
- * transaction type is not a known no-recipient type.
18
- */
19
- export declare function resolveEffectiveTxParams(txRequest: TxRequest, txParams: TransactionParams | undefined): TransactionParams;
20
- //# sourceMappingURL=recipientUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAmB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aAShC,CAAC;AAEH;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GACtC,iBAAiB,CAmBnB"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NO_RECIPIENT_TX_TYPES = void 0;
4
- exports.resolveEffectiveTxParams = resolveEffectiveTxParams;
5
- const errors_1 = require("../../errors");
6
- /**
7
- * Transaction types that legitimately carry no explicit recipients.
8
- * verifyTransaction handles no-recipient validation for these internally.
9
- * Mirrors the bypass list in abstractEthLikeNewCoins.ts verifyTssTransaction.
10
- */
11
- exports.NO_RECIPIENT_TX_TYPES = new Set([
12
- 'acceleration',
13
- 'fillNonce',
14
- 'transferToken',
15
- 'tokenApproval',
16
- 'consolidate',
17
- 'bridgeFunds',
18
- 'enableToken',
19
- 'customTx', // DeFi/WalletConnect smart contract interactions have no traditional recipients
20
- ]);
21
- /**
22
- * Resolves the effective txParams for TSS signing recipient verification.
23
- *
24
- * For smart contract interactions, recipients live in txRequest.intent.recipients
25
- * (native amount = 0, so buildParams is empty). Falls back to intent recipients
26
- * mapped to ITransactionRecipient shape when txParams.recipients is absent.
27
- *
28
- * Throws InvalidTransactionError if no recipients can be resolved and the
29
- * transaction type is not a known no-recipient type.
30
- */
31
- function resolveEffectiveTxParams(txRequest, txParams) {
32
- const intentRecipients = txRequest.intent?.recipients?.map((intentRecipient) => ({
33
- address: intentRecipient.address.address,
34
- amount: intentRecipient.amount.value,
35
- data: intentRecipient.data,
36
- }));
37
- const effectiveTxParams = {
38
- ...txParams,
39
- recipients: txParams?.recipients?.length ? txParams.recipients : intentRecipients,
40
- };
41
- if (!effectiveTxParams.recipients?.length && !exports.NO_RECIPIENT_TX_TYPES.has(effectiveTxParams.type ?? '')) {
42
- throw new errors_1.InvalidTransactionError('Recipient details are required to verify this transaction before signing. Pass txParams with at least one recipient.');
43
- }
44
- return effectiveTxParams;
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThCQSw0REFzQkM7QUFuREQseUNBQXVEO0FBR3ZEOzs7O0dBSUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNDLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7SUFDZixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixVQUFVLEVBQUUsZ0ZBQWdGO0NBQzdGLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLHdCQUF3QixDQUN0QyxTQUFvQixFQUNwQixRQUF1QztJQUV2QyxNQUFNLGdCQUFnQixHQUFJLFNBQVMsQ0FBQyxNQUEwQixFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEcsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTztRQUN4QyxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1FBQ3BDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtLQUMzQixDQUFDLENBQUMsQ0FBQztJQUVKLE1BQU0saUJBQWlCLEdBQXNCO1FBQzNDLEdBQUcsUUFBUTtRQUNYLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO0tBQ2xGLENBQUM7SUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLDZCQUFxQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RyxNQUFNLElBQUksZ0NBQXVCLENBQy9CLHNIQUFzSCxDQUN2SCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMnO1xuaW1wb3J0IHsgUG9wdWxhdGVkSW50ZW50LCBUeFJlcXVlc3QgfSBmcm9tICcuL2Jhc2VUeXBlcyc7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gdHlwZXMgdGhhdCBsZWdpdGltYXRlbHkgY2Fycnkgbm8gZXhwbGljaXQgcmVjaXBpZW50cy5cbiAqIHZlcmlmeVRyYW5zYWN0aW9uIGhhbmRsZXMgbm8tcmVjaXBpZW50IHZhbGlkYXRpb24gZm9yIHRoZXNlIGludGVybmFsbHkuXG4gKiBNaXJyb3JzIHRoZSBieXBhc3MgbGlzdCBpbiBhYnN0cmFjdEV0aExpa2VOZXdDb2lucy50cyB2ZXJpZnlUc3NUcmFuc2FjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyA9IG5ldyBTZXQoW1xuICAnYWNjZWxlcmF0aW9uJyxcbiAgJ2ZpbGxOb25jZScsXG4gICd0cmFuc2ZlclRva2VuJyxcbiAgJ3Rva2VuQXBwcm92YWwnLFxuICAnY29uc29saWRhdGUnLFxuICAnYnJpZGdlRnVuZHMnLFxuICAnZW5hYmxlVG9rZW4nLFxuICAnY3VzdG9tVHgnLCAvLyBEZUZpL1dhbGxldENvbm5lY3Qgc21hcnQgY29udHJhY3QgaW50ZXJhY3Rpb25zIGhhdmUgbm8gdHJhZGl0aW9uYWwgcmVjaXBpZW50c1xuXSk7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGVmZmVjdGl2ZSB0eFBhcmFtcyBmb3IgVFNTIHNpZ25pbmcgcmVjaXBpZW50IHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBGb3Igc21hcnQgY29udHJhY3QgaW50ZXJhY3Rpb25zLCByZWNpcGllbnRzIGxpdmUgaW4gdHhSZXF1ZXN0LmludGVudC5yZWNpcGllbnRzXG4gKiAobmF0aXZlIGFtb3VudCA9IDAsIHNvIGJ1aWxkUGFyYW1zIGlzIGVtcHR5KS4gRmFsbHMgYmFjayB0byBpbnRlbnQgcmVjaXBpZW50c1xuICogbWFwcGVkIHRvIElUcmFuc2FjdGlvblJlY2lwaWVudCBzaGFwZSB3aGVuIHR4UGFyYW1zLnJlY2lwaWVudHMgaXMgYWJzZW50LlxuICpcbiAqIFRocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBpZiBubyByZWNpcGllbnRzIGNhbiBiZSByZXNvbHZlZCBhbmQgdGhlXG4gKiB0cmFuc2FjdGlvbiB0eXBlIGlzIG5vdCBhIGtub3duIG5vLXJlY2lwaWVudCB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKFxuICB0eFJlcXVlc3Q6IFR4UmVxdWVzdCxcbiAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zIHwgdW5kZWZpbmVkXG4pOiBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIGNvbnN0IGludGVudFJlY2lwaWVudHMgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5yZWNpcGllbnRzPy5tYXAoKGludGVudFJlY2lwaWVudCkgPT4gKHtcbiAgICBhZGRyZXNzOiBpbnRlbnRSZWNpcGllbnQuYWRkcmVzcy5hZGRyZXNzLFxuICAgIGFtb3VudDogaW50ZW50UmVjaXBpZW50LmFtb3VudC52YWx1ZSxcbiAgICBkYXRhOiBpbnRlbnRSZWNpcGllbnQuZGF0YSxcbiAgfSkpO1xuXG4gIGNvbnN0IGVmZmVjdGl2ZVR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyA9IHtcbiAgICAuLi50eFBhcmFtcyxcbiAgICByZWNpcGllbnRzOiB0eFBhcmFtcz8ucmVjaXBpZW50cz8ubGVuZ3RoID8gdHhQYXJhbXMucmVjaXBpZW50cyA6IGludGVudFJlY2lwaWVudHMsXG4gIH07XG5cbiAgaWYgKCFlZmZlY3RpdmVUeFBhcmFtcy5yZWNpcGllbnRzPy5sZW5ndGggJiYgIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXMoZWZmZWN0aXZlVHhQYXJhbXMudHlwZSA/PyAnJykpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAnUmVjaXBpZW50IGRldGFpbHMgYXJlIHJlcXVpcmVkIHRvIHZlcmlmeSB0aGlzIHRyYW5zYWN0aW9uIGJlZm9yZSBzaWduaW5nLiBQYXNzIHR4UGFyYW1zIHdpdGggYXQgbGVhc3Qgb25lIHJlY2lwaWVudC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBlZmZlY3RpdmVUeFBhcmFtcztcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=recipientUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -1,137 +0,0 @@
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
- require("should");
37
- const assert = __importStar(require("assert"));
38
- // Import directly from source so no top-level export change is needed
39
- const getModule = () => require('../../../../../src/bitgo/utils/tss/recipientUtils');
40
- function makeTxRequest(intentRecipients) {
41
- return {
42
- txRequestId: 'test-req-id',
43
- intent: intentRecipients ? { intentType: 'contractCall', recipients: intentRecipients } : { intentType: 'payment' },
44
- transactions: [],
45
- unsignedTxs: [],
46
- state: 'pendingUserSignature',
47
- walletType: 'hot',
48
- walletId: 'walletId',
49
- policiesChecked: true,
50
- version: 1,
51
- userId: 'userId',
52
- };
53
- }
54
- describe('recipientUtils', function () {
55
- describe('NO_RECIPIENT_TX_TYPES', function () {
56
- it('contains exactly the 8 expected exempted types', function () {
57
- const { NO_RECIPIENT_TX_TYPES } = getModule();
58
- const expected = [
59
- 'acceleration',
60
- 'fillNonce',
61
- 'transferToken',
62
- 'tokenApproval',
63
- 'consolidate',
64
- 'bridgeFunds',
65
- 'enableToken',
66
- 'customTx',
67
- ];
68
- expected.forEach((t) => assert.ok(NO_RECIPIENT_TX_TYPES.has(t), `${t} should be in NO_RECIPIENT_TX_TYPES`));
69
- assert.strictEqual(NO_RECIPIENT_TX_TYPES.size, expected.length);
70
- });
71
- });
72
- describe('resolveEffectiveTxParams', function () {
73
- it('uses txParams.recipients when provided', function () {
74
- const { resolveEffectiveTxParams } = getModule();
75
- const txRequest = makeTxRequest();
76
- const result = resolveEffectiveTxParams(txRequest, { recipients: [{ address: '0xabc', amount: '100' }] });
77
- result.recipients[0].address.should.equal('0xabc');
78
- result.recipients[0].amount.should.equal('100');
79
- });
80
- it('falls back to intent.recipients when txParams has no recipients', function () {
81
- const { resolveEffectiveTxParams } = getModule();
82
- const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '500' } }]);
83
- const result = resolveEffectiveTxParams(txRequest, {});
84
- result.recipients[0].address.should.equal('0xintent');
85
- result.recipients[0].amount.should.equal('500');
86
- });
87
- it('falls back to intent.recipients when txParams is undefined', function () {
88
- const { resolveEffectiveTxParams } = getModule();
89
- const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '999' } }]);
90
- const result = resolveEffectiveTxParams(txRequest, undefined);
91
- result.recipients[0].address.should.equal('0xintent');
92
- });
93
- it('prefers txParams.recipients over intent.recipients when both present', function () {
94
- const { resolveEffectiveTxParams } = getModule();
95
- const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '9999' } }]);
96
- const result = resolveEffectiveTxParams(txRequest, { recipients: [{ address: '0xexplicit', amount: '1' }] });
97
- result.recipients[0].address.should.equal('0xexplicit');
98
- });
99
- it('maps intent.data field through to the recipient', function () {
100
- const { resolveEffectiveTxParams } = getModule();
101
- const txRequest = makeTxRequest([
102
- { address: { address: '0xcontract' }, amount: { value: '0' }, data: '0xabcdef' },
103
- ]);
104
- const result = resolveEffectiveTxParams(txRequest, undefined);
105
- result.recipients[0].data.should.equal('0xabcdef');
106
- });
107
- it('throws InvalidTransactionError when no recipients and type is not exempted', function () {
108
- const { resolveEffectiveTxParams } = getModule();
109
- const txRequest = makeTxRequest();
110
- assert.throws(() => resolveEffectiveTxParams(txRequest, {}), /Recipient details are required to verify this transaction before signing/);
111
- });
112
- it('throws when txParams is undefined and intent has no recipients', function () {
113
- const { resolveEffectiveTxParams } = getModule();
114
- const txRequest = makeTxRequest();
115
- assert.throws(() => resolveEffectiveTxParams(txRequest, undefined), /Recipient details are required to verify this transaction before signing/);
116
- });
117
- const NO_RECIPIENT_TYPES = [
118
- 'acceleration',
119
- 'fillNonce',
120
- 'transferToken',
121
- 'tokenApproval',
122
- 'consolidate',
123
- 'bridgeFunds',
124
- 'enableToken', // TSS wallets do not populate recipients for token enablement
125
- 'customTx', // DeFi/WalletConnect smart contract interactions have no traditional recipients
126
- ];
127
- NO_RECIPIENT_TYPES.forEach((type) => {
128
- it(`allows empty recipients for no-recipient tx type: ${type}`, function () {
129
- const { resolveEffectiveTxParams } = getModule();
130
- const txRequest = makeTxRequest();
131
- const result = resolveEffectiveTxParams(txRequest, { type });
132
- result.type.should.equal(type);
133
- });
134
- });
135
- });
136
- });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLCtDQUFpQztBQUVqQyxzRUFBc0U7QUFDdEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFFckYsU0FBUyxhQUFhLENBQ3BCLGdCQUErRjtJQUUvRixPQUFPO1FBQ0wsV0FBVyxFQUFFLGFBQWE7UUFDMUIsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtRQUNuSCxZQUFZLEVBQUUsRUFBRTtRQUNoQixXQUFXLEVBQUUsRUFBRTtRQUNmLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsZUFBZSxFQUFFLElBQUk7UUFDckIsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLGdEQUFnRCxFQUFFO1lBQ25ELE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLGNBQWM7Z0JBQ2QsV0FBVztnQkFDWCxlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2Is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QVMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUNwRCwwRUFBMEUsQ0FDM0UsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxrQkFBa0IsR0FBRztZQUN6QixjQUFjO1lBQ2QsV0FBVztZQUNYLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhLEVBQUUsOERBQThEO1lBQzdFLFVBQVUsRUFBRSxnRkFBZ0Y7U0FDN0YsQ0FBQztRQUVGLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLEVBQUUsQ0FBQyxxREFBcUQsSUFBSSxFQUFFLEVBQUU7Z0JBQzlELE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8vIEltcG9ydCBkaXJlY3RseSBmcm9tIHNvdXJjZSBzbyBubyB0b3AtbGV2ZWwgZXhwb3J0IGNoYW5nZSBpcyBuZWVkZWRcbmNvbnN0IGdldE1vZHVsZSA9ICgpID0+IHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvcmVjaXBpZW50VXRpbHMnKTtcblxuZnVuY3Rpb24gbWFrZVR4UmVxdWVzdChcbiAgaW50ZW50UmVjaXBpZW50cz86IHsgYWRkcmVzczogeyBhZGRyZXNzOiBzdHJpbmcgfTsgYW1vdW50OiB7IHZhbHVlOiBzdHJpbmcgfTsgZGF0YT86IHN0cmluZyB9W11cbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgdHhSZXF1ZXN0SWQ6ICd0ZXN0LXJlcS1pZCcsXG4gICAgaW50ZW50OiBpbnRlbnRSZWNpcGllbnRzID8geyBpbnRlbnRUeXBlOiAnY29udHJhY3RDYWxsJywgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyB9IDogeyBpbnRlbnRUeXBlOiAncGF5bWVudCcgfSxcbiAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgIHVuc2lnbmVkVHhzOiBbXSxcbiAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICB3YWxsZXRJZDogJ3dhbGxldElkJyxcbiAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgdmVyc2lvbjogMSxcbiAgICB1c2VySWQ6ICd1c2VySWQnLFxuICB9O1xufVxuXG5kZXNjcmliZSgncmVjaXBpZW50VXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdOT19SRUNJUElFTlRfVFhfVFlQRVMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NvbnRhaW5zIGV4YWN0bHkgdGhlIDggZXhwZWN0ZWQgZXhlbXB0ZWQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IFtcbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgICAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICd0b2tlbkFwcHJvdmFsJyxcbiAgICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICAgJ2JyaWRnZUZ1bmRzJyxcbiAgICAgICAgJ2VuYWJsZVRva2VuJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgIF07XG4gICAgICBleHBlY3RlZC5mb3JFYWNoKCh0KSA9PiBhc3NlcnQub2soTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0KSwgYCR7dH0gc2hvdWxkIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChOT19SRUNJUElFTlRfVFhfVFlQRVMuc2l6ZSwgZXhwZWN0ZWQubGVuZ3RoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVFZmZlY3RpdmVUeFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgndXNlcyB0eFBhcmFtcy5yZWNpcGllbnRzIHdoZW4gcHJvdmlkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGFiYycsIGFtb3VudDogJzEwMCcgfV0gfSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhhYmMnKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBoYXMgbm8gcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gPSBnZXRNb2R1bGUoKTtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhpbnRlbnQnIH0sIGFtb3VudDogeyB2YWx1ZTogJzUwMCcgfSB9XSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhpbnRlbnQnKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoJzUwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBpcyB1bmRlZmluZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4aW50ZW50JyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc5OTknIH0gfV0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCcweGludGVudCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZWZlcnMgdHhQYXJhbXMucmVjaXBpZW50cyBvdmVyIGludGVudC5yZWNpcGllbnRzIHdoZW4gYm90aCBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdChbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGludGVudCcgfSwgYW1vdW50OiB7IHZhbHVlOiAnOTk5OScgfSB9XSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGV4cGxpY2l0JywgYW1vdW50OiAnMScgfV0gfSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhleHBsaWNpdCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hcHMgaW50ZW50LmRhdGEgZmllbGQgdGhyb3VnaCB0byB0aGUgcmVjaXBpZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdChbXG4gICAgICAgIHsgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhjb250cmFjdCcgfSwgYW1vdW50OiB7IHZhbHVlOiAnMCcgfSwgZGF0YTogJzB4YWJjZGVmJyB9LFxuICAgICAgXSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB1bmRlZmluZWQpO1xuICAgICAgcmVzdWx0LnJlY2lwaWVudHNbMF0uZGF0YS5zaG91bGQuZXF1YWwoJzB4YWJjZGVmJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIHdoZW4gbm8gcmVjaXBpZW50cyBhbmQgdHlwZSBpcyBub3QgZXhlbXB0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSksXG4gICAgICAgIC9SZWNpcGllbnQgZGV0YWlscyBhcmUgcmVxdWlyZWQgdG8gdmVyaWZ5IHRoaXMgdHJhbnNhY3Rpb24gYmVmb3JlIHNpZ25pbmcvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyB3aGVuIHR4UGFyYW1zIGlzIHVuZGVmaW5lZCBhbmQgaW50ZW50IGhhcyBubyByZWNpcGllbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKSxcbiAgICAgICAgL1JlY2lwaWVudCBkZXRhaWxzIGFyZSByZXF1aXJlZCB0byB2ZXJpZnkgdGhpcyB0cmFuc2FjdGlvbiBiZWZvcmUgc2lnbmluZy9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBOT19SRUNJUElFTlRfVFlQRVMgPSBbXG4gICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICdicmlkZ2VGdW5kcycsXG4gICAgICAnZW5hYmxlVG9rZW4nLCAvLyBUU1Mgd2FsbGV0cyBkbyBub3QgcG9wdWxhdGUgcmVjaXBpZW50cyBmb3IgdG9rZW4gZW5hYmxlbWVudFxuICAgICAgJ2N1c3RvbVR4JywgLy8gRGVGaS9XYWxsZXRDb25uZWN0IHNtYXJ0IGNvbnRyYWN0IGludGVyYWN0aW9ucyBoYXZlIG5vIHRyYWRpdGlvbmFsIHJlY2lwaWVudHNcbiAgICBdO1xuXG4gICAgTk9fUkVDSVBJRU5UX1RZUEVTLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgIGl0KGBhbGxvd3MgZW1wdHkgcmVjaXBpZW50cyBmb3Igbm8tcmVjaXBpZW50IHR4IHR5cGU6ICR7dHlwZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHsgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gPSBnZXRNb2R1bGUoKTtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGUgfSk7XG4gICAgICAgIHJlc3VsdC50eXBlLnNob3VsZC5lcXVhbCh0eXBlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19