@bitgo/sdk-core 38.13.0 → 38.16.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 (108) hide show
  1. package/dist/src/api/types.d.ts +6 -0
  2. package/dist/src/api/types.d.ts.map +1 -1
  3. package/dist/src/api/types.js +8 -1
  4. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +17 -7
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  7. package/dist/src/bitgo/defi/defiVault.d.ts +42 -8
  8. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  9. package/dist/src/bitgo/defi/defiVault.js +76 -10
  10. package/dist/src/bitgo/defi/iDefiVault.d.ts +22 -2
  11. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
  12. package/dist/src/bitgo/defi/iDefiVault.js +1 -1
  13. package/dist/src/bitgo/environments.js +3 -3
  14. package/dist/src/bitgo/internal/keycard.d.ts +2 -1
  15. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  16. package/dist/src/bitgo/internal/keycard.js +6 -3
  17. package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -2
  18. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  19. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  20. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  21. package/dist/src/bitgo/keychain/keychains.js +24 -10
  22. package/dist/src/bitgo/safe/iSafe.d.ts +5 -2
  23. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
  24. package/dist/src/bitgo/safe/iSafe.js +1 -1
  25. package/dist/src/bitgo/safe/safe.d.ts +14 -7
  26. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  27. package/dist/src/bitgo/safe/safe.js +105 -29
  28. package/dist/src/bitgo/staking/iStakingWallet.d.ts +13 -5
  29. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  30. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  31. package/dist/src/bitgo/staking/stakingWallet.d.ts +2 -2
  32. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  33. package/dist/src/bitgo/staking/stakingWallet.js +14 -1
  34. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  35. package/dist/src/bitgo/tss/common.js +4 -1
  36. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +50 -0
  37. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  38. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +112 -0
  39. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/mpcUtils.js +15 -1
  41. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
  42. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  44. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +4 -1
  45. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -6
  47. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +9 -1
  48. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -1
  49. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +24 -3
  50. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +88 -0
  51. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  52. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +494 -0
  53. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +1 -0
  54. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  55. package/dist/src/bitgo/utils/tss/ecdsa/index.js +2 -1
  56. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +20 -2
  57. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
  58. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +1 -1
  59. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +8 -5
  60. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  61. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +1 -1
  62. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +33 -0
  63. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  64. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +260 -0
  65. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +1 -0
  66. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  67. package/dist/src/bitgo/utils/tss/eddsa/index.js +2 -1
  68. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +15 -2
  69. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  70. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +13 -2
  71. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  72. package/dist/src/bitgo/utils/tss/recipientUtils.js +13 -1
  73. package/dist/src/bitgo/wallet/BuildParams.d.ts +8 -0
  74. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  75. package/dist/src/bitgo/wallet/BuildParams.js +6 -1
  76. package/dist/src/bitgo/wallet/iWallet.d.ts +7 -1
  77. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  78. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  79. package/dist/src/bitgo/wallet/safeKeychain.d.ts +25 -2
  80. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
  81. package/dist/src/bitgo/wallet/safeKeychain.js +72 -18
  82. package/dist/src/bitgo/wallet/wallet.d.ts +12 -4
  83. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  84. package/dist/src/bitgo/wallet/wallet.js +82 -17
  85. package/dist/src/bitgo/wallet/wallets.d.ts +6 -0
  86. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  87. package/dist/src/bitgo/wallet/wallets.js +35 -36
  88. package/dist/test/unit/bitgo/defi/defiVault.js +264 -1
  89. package/dist/test/unit/bitgo/keychain/keychains.js +43 -1
  90. package/dist/test/unit/bitgo/safe/safe.js +53 -22
  91. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  92. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  93. package/dist/test/unit/bitgo/tss/common.js +77 -0
  94. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  95. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  96. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +181 -0
  97. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +70 -1
  98. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  99. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  100. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +173 -0
  101. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +33 -1
  102. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +10 -10
  103. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  104. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  105. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +303 -0
  106. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +51 -40
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +6 -5
@@ -0,0 +1,260 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.EddsaVrfMPCv2Utils = void 0;
40
+ exports.serializeVrfMessages = serializeVrfMessages;
41
+ exports.deserializeVrfMessages = deserializeVrfMessages;
42
+ exports.buildVrfKeyEnvelopes = buildVrfKeyEnvelopes;
43
+ const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
44
+ const public_types_1 = require("@bitgo/public-types");
45
+ const cbor_x_1 = require("cbor-x");
46
+ const assert_1 = __importDefault(require("assert"));
47
+ const t = __importStar(require("io-ts"));
48
+ const pgp = __importStar(require("openpgp"));
49
+ const io_ts_types_1 = require("io-ts-types");
50
+ const opengpgUtils_1 = require("../../opengpgUtils");
51
+ const bitgoPubKeys_1 = require("../../../tss/bitgoPubKeys");
52
+ const codecs_1 = require("../../codecs");
53
+ const eddsaMPCv2_1 = require("./eddsaMPCv2");
54
+ const eddsaMPCv2KeyGenSender_1 = require("./eddsaMPCv2KeyGenSender");
55
+ const typesMPCv2_1 = require("../ecdsa/typesMPCv2");
56
+ const VRF_KEY_ENVELOPE_VERSION = 1;
57
+ const VrfPartyId = (0, codecs_1.boundedInt)(0, 2, 'VrfPartyId');
58
+ const VrfMessageTransferCodec = t.intersection([
59
+ t.type({
60
+ from: VrfPartyId,
61
+ payload: codecs_1.base64String,
62
+ }),
63
+ t.partial({ to: VrfPartyId }),
64
+ ]);
65
+ const VrfMessageTransfersCodec = t.array(VrfMessageTransferCodec);
66
+ function serializeVrfMessages(messages) {
67
+ const transfers = [
68
+ ...messages.broadcastMessages.map((message) => ({
69
+ from: message.from,
70
+ payload: Buffer.from(message.payload).toString('base64'),
71
+ })),
72
+ ...messages.p2pMessages.map((message) => ({
73
+ from: message.from,
74
+ to: message.to,
75
+ payload: Buffer.from(message.payload).toString('base64'),
76
+ })),
77
+ ];
78
+ return Buffer.from(JSON.stringify(transfers)).toString('base64');
79
+ }
80
+ function deserializeVrfMessages(blob, forParty) {
81
+ let parsed;
82
+ try {
83
+ parsed = JSON.parse(Buffer.from(blob, 'base64').toString());
84
+ }
85
+ catch (error) {
86
+ const reason = error instanceof Error ? error.message : 'malformed JSON';
87
+ throw new Error(`Invalid VRF DKG message blob: ${reason}`);
88
+ }
89
+ const transfers = (0, codecs_1.decodeWithCodec)(VrfMessageTransfersCodec, parsed, 'VRF DKG message blob');
90
+ return {
91
+ broadcastMessages: transfers
92
+ .filter((message) => message.to === undefined)
93
+ .map((message) => ({
94
+ from: message.from,
95
+ payload: new Uint8Array(Buffer.from(message.payload, 'base64')),
96
+ })),
97
+ p2pMessages: transfers
98
+ .filter((message) => message.to === forParty)
99
+ .map((message) => ({
100
+ from: message.from,
101
+ to: message.to,
102
+ payload: new Uint8Array(Buffer.from(message.payload, 'base64')),
103
+ })),
104
+ };
105
+ }
106
+ /**
107
+ * Combines the signing keyshare with the VRF keyshare in the CBOR envelope used
108
+ * by safe MPC roots. The reduced envelope is used for reducedEncryptedPrv.
109
+ */
110
+ function buildVrfKeyEnvelopes(privateMaterial, reducedPrivateMaterial, vrfKeyShare) {
111
+ const envelope = (0, cbor_x_1.encode)({
112
+ version: VRF_KEY_ENVELOPE_VERSION,
113
+ prvKeyShare: new Uint8Array(privateMaterial),
114
+ vrf: new Uint8Array(vrfKeyShare),
115
+ });
116
+ const reducedEnvelope = (0, cbor_x_1.encode)({
117
+ version: VRF_KEY_ENVELOPE_VERSION,
118
+ prvKeyShare: new Uint8Array(reducedPrivateMaterial),
119
+ vrf: new Uint8Array(vrfKeyShare),
120
+ });
121
+ return { envelope: Buffer.from(envelope), reducedEnvelope: Buffer.from(reducedEnvelope) };
122
+ }
123
+ /**
124
+ * EdDSA MPCv2 key generation for safe roots. The two-round MPS VRF DKG rides
125
+ * the existing MPCv2-R1/R2 payloads and is only selected when safeId is set.
126
+ */
127
+ class EddsaVrfMPCv2Utils extends eddsaMPCv2_1.EddsaMPCv2Utils {
128
+ /** @inheritdoc */
129
+ async createKeychains(params) {
130
+ const { userDkg, backupDkg } = await this.getUserAndBackupSession(params.retrofit);
131
+ const userVrfSession = new sdk_lib_mpc_1.MpsVrf.VrfDkg(3, 2, typesMPCv2_1.MPCv2PartiesEnum.USER);
132
+ const backupVrfSession = new sdk_lib_mpc_1.MpsVrf.VrfDkg(3, 2, typesMPCv2_1.MPCv2PartiesEnum.BACKUP);
133
+ const userKeyPair = await (0, opengpgUtils_1.generateGPGKeyPair)('ed25519');
134
+ const userGpgKey = await pgp.readPrivateKey({ armoredKey: userKeyPair.privateKey });
135
+ const userGpgPublicKey = userKeyPair.publicKey;
136
+ const [userPk, userSk] = await sdk_lib_mpc_1.MPSComms.extractEd25519KeyPair(userGpgKey);
137
+ const backupKeyPair = await (0, opengpgUtils_1.generateGPGKeyPair)('ed25519');
138
+ const backupGpgKey = await pgp.readPrivateKey({ armoredKey: backupKeyPair.privateKey });
139
+ const backupGpgPublicKey = backupKeyPair.publicKey;
140
+ const [backupPk, backupSk] = await sdk_lib_mpc_1.MPSComms.extractEd25519KeyPair(backupGpgKey);
141
+ const { eddsaMpcv2PublicKey } = await this.getBitgoGpgPubkeyBasedOnFeatureFlags(params.enterprise, true);
142
+ const bitgoPublicGpgKey = eddsaMpcv2PublicKey ?? this.bitgoEddsaMpcv2PublicGpgKey;
143
+ (0, assert_1.default)(bitgoPublicGpgKey, 'Failed to get BitGo EdDSA MPCv2 GPG public key');
144
+ const bitgoPublicGpgKeyArmored = bitgoPublicGpgKey.armor();
145
+ if ((0, bitgoPubKeys_1.envRequiresBitgoPubGpgKeyConfig)(this.bitgo.getEnv())) {
146
+ (0, assert_1.default)((0, bitgoPubKeys_1.isBitgoEddsaMpcv2PubKey)(bitgoPublicGpgKeyArmored), 'Invalid BitGo EdDSA MPCv2 GPG public key');
147
+ }
148
+ const bitgoKeyObj = await pgp.readKey({ armoredKey: bitgoPublicGpgKeyArmored });
149
+ const bitgoPk = await sdk_lib_mpc_1.MPSComms.extractEd25519PublicKey(bitgoKeyObj);
150
+ // #region round 1
151
+ await userDkg.initDkg(userSk, [backupPk, bitgoPk]);
152
+ await backupDkg.initDkg(backupSk, [userPk, bitgoPk]);
153
+ const userMsg1 = userDkg.getFirstMessage();
154
+ const backupMsg1 = backupDkg.getFirstMessage();
155
+ const userVrfMsg1 = await userVrfSession.initDkg();
156
+ const backupVrfMsg1 = await backupVrfSession.initDkg();
157
+ const userSignedMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(userMsg1.payload), userGpgKey);
158
+ const backupSignedMsg1 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(backupMsg1.payload), backupGpgKey);
159
+ (0, assert_1.default)(io_ts_types_1.NonEmptyString.is(userGpgPublicKey), 'User GPG public key is required');
160
+ (0, assert_1.default)(io_ts_types_1.NonEmptyString.is(backupGpgPublicKey), 'Backup GPG public key is required');
161
+ const round1Sender = (0, eddsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, params.enterprise, params.safeId);
162
+ const { sessionId, bitgoMsg1, bitgoVrfMsg1 } = await round1Sender(public_types_1.MPCv2KeyGenStateEnum['MPCv2-R1'], {
163
+ userGpgPublicKey,
164
+ backupGpgPublicKey,
165
+ userMsg1: userSignedMsg1,
166
+ backupMsg1: backupSignedMsg1,
167
+ userVrfMsg1: serializeVrfMessages(userVrfMsg1),
168
+ backupVrfMsg1: serializeVrfMessages(backupVrfMsg1),
169
+ ...(params.retrofit?.walletId ? { walletId: params.retrofit.walletId } : {}),
170
+ });
171
+ (0, assert_1.default)(bitgoVrfMsg1, 'BitGo VRF message 1 not found in round 1 response');
172
+ // #endregion
173
+ // #region round 2
174
+ const bitgoRawMsg1Bytes = await sdk_lib_mpc_1.MPSComms.verifyMpsMessage(bitgoMsg1, bitgoKeyObj);
175
+ const bitgoDeserializedMsg1 = {
176
+ from: typesMPCv2_1.MPCv2PartiesEnum.BITGO,
177
+ payload: new Uint8Array(bitgoRawMsg1Bytes),
178
+ };
179
+ const round1Messages = [userMsg1, backupMsg1, bitgoDeserializedMsg1];
180
+ const userRound2Msgs = userDkg.handleIncomingMessages(round1Messages);
181
+ const backupRound2Msgs = backupDkg.handleIncomingMessages(round1Messages);
182
+ (0, assert_1.default)(userRound2Msgs.length === 1, 'User round 1 should produce exactly one round 2 message');
183
+ (0, assert_1.default)(backupRound2Msgs.length === 1, 'Backup round 1 should produce exactly one round 2 message');
184
+ const userMsg2 = userRound2Msgs[0];
185
+ const backupMsg2 = backupRound2Msgs[0];
186
+ const userSignedMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(userMsg2.payload), userGpgKey);
187
+ const backupSignedMsg2 = await sdk_lib_mpc_1.MPSComms.detachSignMpsMessage(Buffer.from(backupMsg2.payload), backupGpgKey);
188
+ const userVrfMsg2 = await userVrfSession.handleIncomingMessages({
189
+ broadcastMessages: [
190
+ ...backupVrfMsg1.broadcastMessages,
191
+ ...deserializeVrfMessages(bitgoVrfMsg1, typesMPCv2_1.MPCv2PartiesEnum.USER).broadcastMessages,
192
+ ],
193
+ p2pMessages: [],
194
+ });
195
+ const backupVrfMsg2 = await backupVrfSession.handleIncomingMessages({
196
+ broadcastMessages: [
197
+ ...userVrfMsg1.broadcastMessages,
198
+ ...deserializeVrfMessages(bitgoVrfMsg1, typesMPCv2_1.MPCv2PartiesEnum.BACKUP).broadcastMessages,
199
+ ],
200
+ p2pMessages: [],
201
+ });
202
+ const round2Sender = (0, eddsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, params.enterprise);
203
+ const { sessionId: sessionIdRound2, commonPublicKeychain, bitgoMsg2, bitgoVrfMsg2, } = await round2Sender(public_types_1.MPCv2KeyGenStateEnum['MPCv2-R2'], {
204
+ sessionId,
205
+ userMsg2: userSignedMsg2,
206
+ backupMsg2: backupSignedMsg2,
207
+ userVrfMsg2: serializeVrfMessages(userVrfMsg2),
208
+ backupVrfMsg2: serializeVrfMessages(backupVrfMsg2),
209
+ });
210
+ assert_1.default.equal(sessionId, sessionIdRound2, 'Round 1 and round 2 session IDs do not match');
211
+ (0, assert_1.default)(bitgoVrfMsg2, 'BitGo VRF message 2 not found in round 2 response');
212
+ // VRF finalizes locally after the second existing MPCv2 round.
213
+ await userVrfSession.handleIncomingMessages({
214
+ broadcastMessages: [],
215
+ p2pMessages: [
216
+ ...userVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.USER),
217
+ ...backupVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.USER),
218
+ ...deserializeVrfMessages(bitgoVrfMsg2, typesMPCv2_1.MPCv2PartiesEnum.USER).p2pMessages,
219
+ ],
220
+ });
221
+ await backupVrfSession.handleIncomingMessages({
222
+ broadcastMessages: [],
223
+ p2pMessages: [
224
+ ...userVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BACKUP),
225
+ ...backupVrfMsg2.p2pMessages.filter((message) => message.to === typesMPCv2_1.MPCv2PartiesEnum.BACKUP),
226
+ ...deserializeVrfMessages(bitgoVrfMsg2, typesMPCv2_1.MPCv2PartiesEnum.BACKUP).p2pMessages,
227
+ ],
228
+ });
229
+ // #endregion
230
+ // #region keychain creation
231
+ const bitgoRawMsg2Bytes = await sdk_lib_mpc_1.MPSComms.verifyMpsMessage(bitgoMsg2, bitgoKeyObj);
232
+ const bitgoDeserializedMsg2 = {
233
+ from: typesMPCv2_1.MPCv2PartiesEnum.BITGO,
234
+ payload: new Uint8Array(bitgoRawMsg2Bytes),
235
+ };
236
+ const round2Messages = [userMsg2, backupMsg2, bitgoDeserializedMsg2];
237
+ const userFinalMsgs = userDkg.handleIncomingMessages(round2Messages);
238
+ const backupFinalMsgs = backupDkg.handleIncomingMessages(round2Messages);
239
+ (0, assert_1.default)(userFinalMsgs.length === 0, 'WASM round 2 should produce no output messages for user');
240
+ (0, assert_1.default)(backupFinalMsgs.length === 0, 'WASM round 2 should produce no output messages for backup');
241
+ const userCommonKeychain = userDkg.getCommonKeychain();
242
+ const backupCommonKeychain = backupDkg.getCommonKeychain();
243
+ assert_1.default.equal(userCommonKeychain, commonPublicKeychain, 'User computed keychain does not match BitGo common keychain');
244
+ assert_1.default.equal(backupCommonKeychain, commonPublicKeychain, 'Backup computed keychain does not match BitGo common keychain');
245
+ const { envelope: userEnvelope, reducedEnvelope: userReducedEnvelope } = buildVrfKeyEnvelopes(userDkg.getKeyShare(), userDkg.getReducedKeyShare(), userVrfSession.getKeyShare());
246
+ const { envelope: backupEnvelope, reducedEnvelope: backupReducedEnvelope } = buildVrfKeyEnvelopes(backupDkg.getKeyShare(), backupDkg.getReducedKeyShare(), backupVrfSession.getKeyShare());
247
+ const userKeychainPromise = this.addUserKeychain(userCommonKeychain, userEnvelope, userReducedEnvelope, params.passphrase, params.originalPasscodeEncryptionCode, params.webauthnInfo, params.encryptionVersion, params.enterprise, params.safeId);
248
+ const backupKeychainPromise = this.addBackupKeychain(backupCommonKeychain, backupEnvelope, backupReducedEnvelope, params.passphrase, params.originalPasscodeEncryptionCode, params.encryptionVersion, params.enterprise, params.safeId);
249
+ const bitgoKeychainPromise = this.addBitgoKeychain(commonPublicKeychain, params.safeId);
250
+ const [userKeychain, backupKeychain, bitgoKeychain] = await Promise.all([
251
+ userKeychainPromise,
252
+ backupKeychainPromise,
253
+ bitgoKeychainPromise,
254
+ ]);
255
+ // #endregion
256
+ return { userKeychain, backupKeychain, bitgoKeychain };
257
+ }
258
+ }
259
+ exports.EddsaVrfMPCv2Utils = EddsaVrfMPCv2Utils;
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2FWcmZNUEN2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvZWRkc2FWcmZNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0Esb0RBYUM7QUFFRCx3REF5QkM7QUFNRCxvREFnQkM7QUFwR0Qsb0RBQWdGO0FBQ2hGLHNEQUk2QjtBQUM3QixtQ0FBZ0M7QUFDaEMsb0RBQTRCO0FBQzVCLHlDQUEyQjtBQUMzQiw2Q0FBK0I7QUFDL0IsNkNBQTZDO0FBSzdDLHFEQUF3RDtBQUV4RCw0REFBcUc7QUFDckcseUNBQXlFO0FBQ3pFLDZDQUErQztBQUMvQyxxRUFBcUU7QUFFckUsb0RBQXVEO0FBRXZELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sVUFBVSxHQUFHLElBQUEsbUJBQVUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsT0FBTyxFQUFFLHFCQUFZO0tBQ3RCLENBQUM7SUFDRixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO0NBQzlCLENBQUMsQ0FBQztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBSWxFLFNBQWdCLG9CQUFvQixDQUFDLFFBQXdDO0lBQzNFLE1BQU0sU0FBUyxHQUF5QjtRQUN0QyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSxFQUFFLE9BQU8s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QUM7Q0FDRjtBQWpORCxnREFpTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEa2xzVHlwZXMsIE1QU0NvbW1zLCBNcHNWcmYsIHR5cGUgTVBTVHlwZXMgfSBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHtcbiAgTVBDdjJLZXlHZW5TdGF0ZUVudW0sXG4gIHR5cGUgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICB0eXBlIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZSxcbn0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBlbmNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgKiBhcyBwZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBOb25FbXB0eVN0cmluZyB9IGZyb20gJ2lvLXRzLXR5cGVzJztcblxuaW1wb3J0IHR5cGUgeyBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHR5cGUgeyBEZWNyeXB0ZWRSZXRyb2ZpdFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9rZXljaGFpbi9pS2V5Y2hhaW5zJztcbmltcG9ydCB0eXBlIHsgRW5jcnlwdGlvblZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hcGknO1xuaW1wb3J0IHsgZ2VuZXJhdGVHUEdLZXlQYWlyIH0gZnJvbSAnLi4vLi4vb3BlbmdwZ1V0aWxzJztcbmltcG9ydCB0eXBlIHsgV2ViYXV0aG5LZXlFbmNyeXB0aW9uSW5mbyB9IGZyb20gJy4uLy4uLy4uL2tleWNoYWluJztcbmltcG9ydCB7IGVudlJlcXVpcmVzQml0Z29QdWJHcGdLZXlDb25maWcsIGlzQml0Z29FZGRzYU1wY3YyUHViS2V5IH0gZnJvbSAnLi4vLi4vLi4vdHNzL2JpdGdvUHViS2V5cyc7XG5pbXBvcnQgeyBiYXNlNjRTdHJpbmcsIGJvdW5kZWRJbnQsIGRlY29kZVdpdGhDb2RlYyB9IGZyb20gJy4uLy4uL2NvZGVjcyc7XG5pbXBvcnQgeyBFZGRzYU1QQ3YyVXRpbHMgfSBmcm9tICcuL2VkZHNhTVBDdjInO1xuaW1wb3J0IHsgS2V5R2VuU2VuZGVyRm9yRW50ZXJwcmlzZSB9IGZyb20gJy4vZWRkc2FNUEN2MktleUdlblNlbmRlcic7XG5pbXBvcnQgdHlwZSB7IEVkZHNhTVBDdjJWcmZLZXlHZW5SZXNwb25zZUZpZWxkcyB9IGZyb20gJy4vdHlwZXNFZGRzYU1QQ3YyJztcbmltcG9ydCB7IE1QQ3YyUGFydGllc0VudW0gfSBmcm9tICcuLi9lY2RzYS90eXBlc01QQ3YyJztcblxuY29uc3QgVlJGX0tFWV9FTlZFTE9QRV9WRVJTSU9OID0gMTtcblxuY29uc3QgVnJmUGFydHlJZCA9IGJvdW5kZWRJbnQoMCwgMiwgJ1ZyZlBhcnR5SWQnKTtcbmNvbnN0IFZyZk1lc3NhZ2VUcmFuc2ZlckNvZGVjID0gdC5pbnRlcnNlY3Rpb24oW1xuICB0LnR5cGUoe1xuICAgIGZyb206IFZyZlBhcnR5SWQsXG4gICAgcGF5bG9hZDogYmFzZTY0U3RyaW5nLFxuICB9KSxcbiAgdC5wYXJ0aWFsKHsgdG86IFZyZlBhcnR5SWQgfSksXG5dKTtcbmNvbnN0IFZyZk1lc3NhZ2VUcmFuc2ZlcnNDb2RlYyA9IHQuYXJyYXkoVnJmTWVzc2FnZVRyYW5zZmVyQ29kZWMpO1xuXG50eXBlIFZyZk1lc3NhZ2VUcmFuc2ZlciA9IHQuVHlwZU9mPHR5cGVvZiBWcmZNZXNzYWdlVHJhbnNmZXJDb2RlYz47XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVWcmZNZXNzYWdlcyhtZXNzYWdlczogRGtsc1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2VzKTogc3RyaW5nIHtcbiAgY29uc3QgdHJhbnNmZXJzOiBWcmZNZXNzYWdlVHJhbnNmZXJbXSA9IFtcbiAgICAuLi5tZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+ICh7XG4gICAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgICBwYXlsb2FkOiBCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICB9KSksXG4gICAgLi4ubWVzc2FnZXMucDJwTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiAoe1xuICAgICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgICAgdG86IG1lc3NhZ2UudG8sXG4gICAgICBwYXlsb2FkOiBCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICB9KSksXG4gIF07XG4gIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh0cmFuc2ZlcnMpKS50b1N0cmluZygnYmFzZTY0Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJsb2I6IHN0cmluZywgZm9yUGFydHk6IG51bWJlcik6IERrbHNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShibG9iLCAnYmFzZTY0JykudG9TdHJpbmcoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgcmVhc29uID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnbWFsZm9ybWVkIEpTT04nO1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBWUkYgREtHIG1lc3NhZ2UgYmxvYjogJHtyZWFzb259YCk7XG4gIH1cblxuICBjb25zdCB0cmFuc2ZlcnMgPSBkZWNvZGVXaXRoQ29kZWMoVnJmTWVzc2FnZVRyYW5zZmVyc0NvZGVjLCBwYXJzZWQsICdWUkYgREtHIG1lc3NhZ2UgYmxvYicpO1xuICByZXR1cm4ge1xuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiB0cmFuc2ZlcnNcbiAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudG8gPT09IHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKG1lc3NhZ2UpID0+ICh7XG4gICAgICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgICAgfSkpLFxuICAgIHAycE1lc3NhZ2VzOiB0cmFuc2ZlcnNcbiAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpOiBtZXNzYWdlIGlzIFZyZk1lc3NhZ2VUcmFuc2ZlciAmIHsgdG86IG51bWJlciB9ID0+IG1lc3NhZ2UudG8gPT09IGZvclBhcnR5KVxuICAgICAgLm1hcCgobWVzc2FnZSkgPT4gKHtcbiAgICAgICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgICAgICB0bzogbWVzc2FnZS50byxcbiAgICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgICAgfSkpLFxuICB9O1xufVxuXG4vKipcbiAqIENvbWJpbmVzIHRoZSBzaWduaW5nIGtleXNoYXJlIHdpdGggdGhlIFZSRiBrZXlzaGFyZSBpbiB0aGUgQ0JPUiBlbnZlbG9wZSB1c2VkXG4gKiBieSBzYWZlIE1QQyByb290cy4gVGhlIHJlZHVjZWQgZW52ZWxvcGUgaXMgdXNlZCBmb3IgcmVkdWNlZEVuY3J5cHRlZFBydi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVnJmS2V5RW52ZWxvcGVzKFxuICBwcml2YXRlTWF0ZXJpYWw6IEJ1ZmZlcixcbiAgcmVkdWNlZFByaXZhdGVNYXRlcmlhbDogQnVmZmVyLFxuICB2cmZLZXlTaGFyZTogQnVmZmVyXG4pOiB7IGVudmVsb3BlOiBCdWZmZXI7IHJlZHVjZWRFbnZlbG9wZTogQnVmZmVyIH0ge1xuICBjb25zdCBlbnZlbG9wZSA9IGVuY29kZSh7XG4gICAgdmVyc2lvbjogVlJGX0tFWV9FTlZFTE9QRV9WRVJTSU9OLFxuICAgIHBydktleVNoYXJlOiBuZXcgVWludDhBcnJheShwcml2YXRlTWF0ZXJpYWwpLFxuICAgIHZyZjogbmV3IFVpbnQ4QXJyYXkodnJmS2V5U2hhcmUpLFxuICB9KTtcbiAgY29uc3QgcmVkdWNlZEVudmVsb3BlID0gZW5jb2RlKHtcbiAgICB2ZXJzaW9uOiBWUkZfS0VZX0VOVkVMT1BFX1ZFUlNJT04sXG4gICAgcHJ2S2V5U2hhcmU6IG5ldyBVaW50OEFycmF5KHJlZHVjZWRQcml2YXRlTWF0ZXJpYWwpLFxuICAgIHZyZjogbmV3IFVpbnQ4QXJyYXkodnJmS2V5U2hhcmUpLFxuICB9KTtcbiAgcmV0dXJuIHsgZW52ZWxvcGU6IEJ1ZmZlci5mcm9tKGVudmVsb3BlKSwgcmVkdWNlZEVudmVsb3BlOiBCdWZmZXIuZnJvbShyZWR1Y2VkRW52ZWxvcGUpIH07XG59XG5cbi8qKlxuICogRWREU0EgTVBDdjIga2V5IGdlbmVyYXRpb24gZm9yIHNhZmUgcm9vdHMuIFRoZSB0d28tcm91bmQgTVBTIFZSRiBES0cgcmlkZXNcbiAqIHRoZSBleGlzdGluZyBNUEN2Mi1SMS9SMiBwYXlsb2FkcyBhbmQgaXMgb25seSBzZWxlY3RlZCB3aGVuIHNhZmVJZCBpcyBzZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFZGRzYVZyZk1QQ3YyVXRpbHMgZXh0ZW5kcyBFZGRzYU1QQ3YyVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgYXN5bmMgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlOiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICAgIHJldHJvZml0PzogRGVjcnlwdGVkUmV0cm9maXRQYXlsb2FkO1xuICAgIHdlYmF1dGhuSW5mbz86IFdlYmF1dGhuS2V5RW5jcnlwdGlvbkluZm87XG4gICAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbiAgICBzYWZlSWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIGNvbnN0IHsgdXNlckRrZywgYmFja3VwRGtnIH0gPSBhd2FpdCB0aGlzLmdldFVzZXJBbmRCYWNrdXBTZXNzaW9uKHBhcmFtcy5yZXRyb2ZpdCk7XG4gICAgY29uc3QgdXNlclZyZlNlc3Npb24gPSBuZXcgTXBzVnJmLlZyZkRrZygzLCAyLCBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpO1xuICAgIGNvbnN0IGJhY2t1cFZyZlNlc3Npb24gPSBuZXcgTXBzVnJmLlZyZkRrZygzLCAyLCBNUEN2MlBhcnRpZXNFbnVtLkJBQ0tVUCk7XG5cbiAgICBjb25zdCB1c2VyS2V5UGFpciA9IGF3YWl0IGdlbmVyYXRlR1BHS2V5UGFpcignZWQyNTUxOScpO1xuICAgIGNvbnN0IHVzZXJHcGdLZXkgPSBhd2FpdCBwZ3AucmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiB1c2VyS2V5UGFpci5wcml2YXRlS2V5IH0pO1xuICAgIGNvbnN0IHVzZXJHcGdQdWJsaWNLZXkgPSB1c2VyS2V5UGFpci5wdWJsaWNLZXk7XG4gICAgY29uc3QgW3VzZXJQaywgdXNlclNrXSA9IGF3YWl0IE1QU0NvbW1zLmV4dHJhY3RFZDI1NTE5S2V5UGFpcih1c2VyR3BnS2V5KTtcblxuICAgIGNvbnN0IGJhY2t1cEtleVBhaXIgPSBhd2FpdCBnZW5lcmF0ZUdQR0tleVBhaXIoJ2VkMjU1MTknKTtcbiAgICBjb25zdCBiYWNrdXBHcGdLZXkgPSBhd2FpdCBwZ3AucmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBiYWNrdXBLZXlQYWlyLnByaXZhdGVLZXkgfSk7XG4gICAgY29uc3QgYmFja3VwR3BnUHVibGljS2V5ID0gYmFja3VwS2V5UGFpci5wdWJsaWNLZXk7XG4gICAgY29uc3QgW2JhY2t1cFBrLCBiYWNrdXBTa10gPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOUtleVBhaXIoYmFja3VwR3BnS2V5KTtcblxuICAgIGNvbnN0IHsgZWRkc2FNcGN2MlB1YmxpY0tleSB9ID0gYXdhaXQgdGhpcy5nZXRCaXRnb0dwZ1B1YmtleUJhc2VkT25GZWF0dXJlRmxhZ3MocGFyYW1zLmVudGVycHJpc2UsIHRydWUpO1xuICAgIGNvbnN0IGJpdGdvUHVibGljR3BnS2V5ID0gZWRkc2FNcGN2MlB1YmxpY0tleSA/PyB0aGlzLmJpdGdvRWRkc2FNcGN2MlB1YmxpY0dwZ0tleTtcbiAgICBhc3NlcnQoYml0Z29QdWJsaWNHcGdLZXksICdGYWlsZWQgdG8gZ2V0IEJpdEdvIEVkRFNBIE1QQ3YyIEdQRyBwdWJsaWMga2V5Jyk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkID0gYml0Z29QdWJsaWNHcGdLZXkuYXJtb3IoKTtcblxuICAgIGlmIChlbnZSZXF1aXJlc0JpdGdvUHViR3BnS2V5Q29uZmlnKHRoaXMuYml0Z28uZ2V0RW52KCkpKSB7XG4gICAgICBhc3NlcnQoaXNCaXRnb0VkZHNhTXBjdjJQdWJLZXkoYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkKSwgJ0ludmFsaWQgQml0R28gRWREU0EgTVBDdjIgR1BHIHB1YmxpYyBrZXknKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaXRnb0tleU9iaiA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogYml0Z29QdWJsaWNHcGdLZXlBcm1vcmVkIH0pO1xuICAgIGNvbnN0IGJpdGdvUGsgPSBhd2FpdCBNUFNDb21tcy5leHRyYWN0RWQyNTUxOVB1YmxpY0tleShiaXRnb0tleU9iaik7XG5cbiAgICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgICBhd2FpdCB1c2VyRGtnLmluaXREa2codXNlclNrLCBbYmFja3VwUGssIGJpdGdvUGtdKTtcbiAgICBhd2FpdCBiYWNrdXBEa2cuaW5pdERrZyhiYWNrdXBTaywgW3VzZXJQaywgYml0Z29Qa10pO1xuXG4gICAgY29uc3QgdXNlck1zZzEgPSB1c2VyRGtnLmdldEZpcnN0TWVzc2FnZSgpO1xuICAgIGNvbnN0IGJhY2t1cE1zZzEgPSBiYWNrdXBEa2cuZ2V0Rmlyc3RNZXNzYWdlKCk7XG4gICAgY29uc3QgdXNlclZyZk1zZzEgPSBhd2FpdCB1c2VyVnJmU2Vzc2lvbi5pbml0RGtnKCk7XG4gICAgY29uc3QgYmFja3VwVnJmTXNnMSA9IGF3YWl0IGJhY2t1cFZyZlNlc3Npb24uaW5pdERrZygpO1xuXG4gICAgY29uc3QgdXNlclNpZ25lZE1zZzEgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbSh1c2VyTXNnMS5wYXlsb2FkKSwgdXNlckdwZ0tleSk7XG4gICAgY29uc3QgYmFja3VwU2lnbmVkTXNnMSA9IGF3YWl0IE1QU0NvbW1zLmRldGFjaFNpZ25NcHNNZXNzYWdlKEJ1ZmZlci5mcm9tKGJhY2t1cE1zZzEucGF5bG9hZCksIGJhY2t1cEdwZ0tleSk7XG5cbiAgICBhc3NlcnQoTm9uRW1wdHlTdHJpbmcuaXModXNlckdwZ1B1YmxpY0tleSksICdVc2VyIEdQRyBwdWJsaWMga2V5IGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KE5vbkVtcHR5U3RyaW5nLmlzKGJhY2t1cEdwZ1B1YmxpY0tleSksICdCYWNrdXAgR1BHIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQnKTtcblxuICAgIGNvbnN0IHJvdW5kMVNlbmRlciA9IEtleUdlblNlbmRlckZvckVudGVycHJpc2U8RWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlICYgRWRkc2FNUEN2MlZyZktleUdlblJlc3BvbnNlRmllbGRzPihcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICBwYXJhbXMuZW50ZXJwcmlzZSxcbiAgICAgIHBhcmFtcy5zYWZlSWRcbiAgICApO1xuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBiaXRnb01zZzEsIGJpdGdvVnJmTXNnMSB9ID0gYXdhaXQgcm91bmQxU2VuZGVyKE1QQ3YyS2V5R2VuU3RhdGVFbnVtWydNUEN2Mi1SMSddLCB7XG4gICAgICB1c2VyR3BnUHVibGljS2V5LFxuICAgICAgYmFja3VwR3BnUHVibGljS2V5LFxuICAgICAgdXNlck1zZzE6IHVzZXJTaWduZWRNc2cxLFxuICAgICAgYmFja3VwTXNnMTogYmFja3VwU2lnbmVkTXNnMSxcbiAgICAgIHVzZXJWcmZNc2cxOiBzZXJpYWxpemVWcmZNZXNzYWdlcyh1c2VyVnJmTXNnMSksXG4gICAgICBiYWNrdXBWcmZNc2cxOiBzZXJpYWxpemVWcmZNZXNzYWdlcyhiYWNrdXBWcmZNc2cxKSxcbiAgICAgIC4uLihwYXJhbXMucmV0cm9maXQ/LndhbGxldElkID8geyB3YWxsZXRJZDogcGFyYW1zLnJldHJvZml0LndhbGxldElkIH0gOiB7fSksXG4gICAgfSk7XG4gICAgYXNzZXJ0KGJpdGdvVnJmTXNnMSwgJ0JpdEdvIFZSRiBtZXNzYWdlIDEgbm90IGZvdW5kIGluIHJvdW5kIDEgcmVzcG9uc2UnKTtcbiAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAvLyAjcmVnaW9uIHJvdW5kIDJcbiAgICBjb25zdCBiaXRnb1Jhd01zZzFCeXRlcyA9IGF3YWl0IE1QU0NvbW1zLnZlcmlmeU1wc01lc3NhZ2UoYml0Z29Nc2cxLCBiaXRnb0tleU9iaik7XG4gICAgY29uc3QgYml0Z29EZXNlcmlhbGl6ZWRNc2cxOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlID0ge1xuICAgICAgZnJvbTogTVBDdjJQYXJ0aWVzRW51bS5CSVRHTyxcbiAgICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KGJpdGdvUmF3TXNnMUJ5dGVzKSxcbiAgICB9O1xuICAgIGNvbnN0IHJvdW5kMU1lc3NhZ2VzOiBNUFNUeXBlcy5EZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IFt1c2VyTXNnMSwgYmFja3VwTXNnMSwgYml0Z29EZXNlcmlhbGl6ZWRNc2cxXTtcblxuICAgIGNvbnN0IHVzZXJSb3VuZDJNc2dzID0gdXNlckRrZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHJvdW5kMU1lc3NhZ2VzKTtcbiAgICBjb25zdCBiYWNrdXBSb3VuZDJNc2dzID0gYmFja3VwRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQxTWVzc2FnZXMpO1xuICAgIGFzc2VydCh1c2VyUm91bmQyTXNncy5sZW5ndGggPT09IDEsICdVc2VyIHJvdW5kIDEgc2hvdWxkIHByb2R1Y2UgZXhhY3RseSBvbmUgcm91bmQgMiBtZXNzYWdlJyk7XG4gICAgYXNzZXJ0KGJhY2t1cFJvdW5kMk1zZ3MubGVuZ3RoID09PSAxLCAnQmFja3VwIHJvdW5kIDEgc2hvdWxkIHByb2R1Y2UgZXhhY3RseSBvbmUgcm91bmQgMiBtZXNzYWdlJyk7XG5cbiAgICBjb25zdCB1c2VyTXNnMiA9IHVzZXJSb3VuZDJNc2dzWzBdO1xuICAgIGNvbnN0IGJhY2t1cE1zZzIgPSBiYWNrdXBSb3VuZDJNc2dzWzBdO1xuICAgIGNvbnN0IHVzZXJTaWduZWRNc2cyID0gYXdhaXQgTVBTQ29tbXMuZGV0YWNoU2lnbk1wc01lc3NhZ2UoQnVmZmVyLmZyb20odXNlck1zZzIucGF5bG9hZCksIHVzZXJHcGdLZXkpO1xuICAgIGNvbnN0IGJhY2t1cFNpZ25lZE1zZzIgPSBhd2FpdCBNUFNDb21tcy5kZXRhY2hTaWduTXBzTWVzc2FnZShCdWZmZXIuZnJvbShiYWNrdXBNc2cyLnBheWxvYWQpLCBiYWNrdXBHcGdLZXkpO1xuXG4gICAgY29uc3QgdXNlclZyZk1zZzIgPSBhd2FpdCB1c2VyVnJmU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXG4gICAgICAgIC4uLmJhY2t1cFZyZk1zZzEuYnJvYWRjYXN0TWVzc2FnZXMsXG4gICAgICAgIC4uLmRlc2VyaWFsaXplVnJmTWVzc2FnZXMoYml0Z29WcmZNc2cxLCBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICAgICAgXSxcbiAgICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBWcmZNc2cyID0gYXdhaXQgYmFja3VwVnJmU2Vzc2lvbi5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXG4gICAgICAgIC4uLnVzZXJWcmZNc2cxLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICAgICAgICAuLi5kZXNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJpdGdvVnJmTXNnMSwgTVBDdjJQYXJ0aWVzRW51bS5CQUNLVVApLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICAgICAgXSxcbiAgICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvdW5kMlNlbmRlciA9IEtleUdlblNlbmRlckZvckVudGVycHJpc2U8RWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlICYgRWRkc2FNUEN2MlZyZktleUdlblJlc3BvbnNlRmllbGRzPihcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICBwYXJhbXMuZW50ZXJwcmlzZVxuICAgICk7XG4gICAgY29uc3Qge1xuICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRSb3VuZDIsXG4gICAgICBjb21tb25QdWJsaWNLZXljaGFpbixcbiAgICAgIGJpdGdvTXNnMixcbiAgICAgIGJpdGdvVnJmTXNnMixcbiAgICB9ID0gYXdhaXQgcm91bmQyU2VuZGVyKE1QQ3YyS2V5R2VuU3RhdGVFbnVtWydNUEN2Mi1SMiddLCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB1c2VyTXNnMjogdXNlclNpZ25lZE1zZzIsXG4gICAgICBiYWNrdXBNc2cyOiBiYWNrdXBTaWduZWRNc2cyLFxuICAgICAgdXNlclZyZk1zZzI6IHNlcmlhbGl6ZVZyZk1lc3NhZ2VzKHVzZXJWcmZNc2cyKSxcbiAgICAgIGJhY2t1cFZyZk1zZzI6IHNlcmlhbGl6ZVZyZk1lc3NhZ2VzKGJhY2t1cFZyZk1zZzIpLFxuICAgIH0pO1xuICAgIGFzc2VydC5lcXVhbChzZXNzaW9uSWQsIHNlc3Npb25JZFJvdW5kMiwgJ1JvdW5kIDEgYW5kIHJvdW5kIDIgc2Vzc2lvbiBJRHMgZG8gbm90IG1hdGNoJyk7XG4gICAgYXNzZXJ0KGJpdGdvVnJmTXNnMiwgJ0JpdEdvIFZSRiBtZXNzYWdlIDIgbm90IGZvdW5kIGluIHJvdW5kIDIgcmVzcG9uc2UnKTtcblxuICAgIC8vIFZSRiBmaW5hbGl6ZXMgbG9jYWxseSBhZnRlciB0aGUgc2Vjb25kIGV4aXN0aW5nIE1QQ3YyIHJvdW5kLlxuICAgIGF3YWl0IHVzZXJWcmZTZXNzaW9uLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICAgICAgcDJwTWVzc2FnZXM6IFtcbiAgICAgICAgLi4udXNlclZyZk1zZzIucDJwTWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnRvID09PSBNUEN2MlBhcnRpZXNFbnVtLlVTRVIpLFxuICAgICAgICAuLi5iYWNrdXBWcmZNc2cyLnAycE1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50byA9PT0gTVBDdjJQYXJ0aWVzRW51bS5VU0VSKSxcbiAgICAgICAgLi4uZGVzZXJpYWxpemVWcmZNZXNzYWdlcyhiaXRnb1ZyZk1zZzIsIE1QQ3YyUGFydGllc0VudW0uVVNFUikucDJwTWVzc2FnZXMsXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGF3YWl0IGJhY2t1cFZyZlNlc3Npb24uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gICAgICBwMnBNZXNzYWdlczogW1xuICAgICAgICAuLi51c2VyVnJmTXNnMi5wMnBNZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudG8gPT09IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQKSxcbiAgICAgICAgLi4uYmFja3VwVnJmTXNnMi5wMnBNZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudG8gPT09IE1QQ3YyUGFydGllc0VudW0uQkFDS1VQKSxcbiAgICAgICAgLi4uZGVzZXJpYWxpemVWcmZNZXNzYWdlcyhiaXRnb1ZyZk1zZzIsIE1QQ3YyUGFydGllc0VudW0uQkFDS1VQKS5wMnBNZXNzYWdlcyxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgLy8gI3JlZ2lvbiBrZXljaGFpbiBjcmVhdGlvblxuICAgIGNvbnN0IGJpdGdvUmF3TXNnMkJ5dGVzID0gYXdhaXQgTVBTQ29tbXMudmVyaWZ5TXBzTWVzc2FnZShiaXRnb01zZzIsIGJpdGdvS2V5T2JqKTtcbiAgICBjb25zdCBiaXRnb0Rlc2VyaWFsaXplZE1zZzI6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2UgPSB7XG4gICAgICBmcm9tOiBNUEN2MlBhcnRpZXNFbnVtLkJJVEdPLFxuICAgICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoYml0Z29SYXdNc2cyQnl0ZXMpLFxuICAgIH07XG4gICAgY29uc3Qgcm91bmQyTWVzc2FnZXM6IE1QU1R5cGVzLkRlc2VyaWFsaXplZE1lc3NhZ2VzID0gW3VzZXJNc2cyLCBiYWNrdXBNc2cyLCBiaXRnb0Rlc2VyaWFsaXplZE1zZzJdO1xuXG4gICAgY29uc3QgdXNlckZpbmFsTXNncyA9IHVzZXJEa2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyhyb3VuZDJNZXNzYWdlcyk7XG4gICAgY29uc3QgYmFja3VwRmluYWxNc2dzID0gYmFja3VwRGtnLmhhbmRsZUluY29taW5nTWVzc2FnZXMocm91bmQyTWVzc2FnZXMpO1xuICAgIGFzc2VydCh1c2VyRmluYWxNc2dzLmxlbmd0aCA9PT0gMCwgJ1dBU00gcm91bmQgMiBzaG91bGQgcHJvZHVjZSBubyBvdXRwdXQgbWVzc2FnZXMgZm9yIHVzZXInKTtcbiAgICBhc3NlcnQoYmFja3VwRmluYWxNc2dzLmxlbmd0aCA9PT0gMCwgJ1dBU00gcm91bmQgMiBzaG91bGQgcHJvZHVjZSBubyBvdXRwdXQgbWVzc2FnZXMgZm9yIGJhY2t1cCcpO1xuXG4gICAgY29uc3QgdXNlckNvbW1vbktleWNoYWluID0gdXNlckRrZy5nZXRDb21tb25LZXljaGFpbigpO1xuICAgIGNvbnN0IGJhY2t1cENvbW1vbktleWNoYWluID0gYmFja3VwRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgdXNlckNvbW1vbktleWNoYWluLFxuICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW4sXG4gICAgICAnVXNlciBjb21wdXRlZCBrZXljaGFpbiBkb2VzIG5vdCBtYXRjaCBCaXRHbyBjb21tb24ga2V5Y2hhaW4nXG4gICAgKTtcbiAgICBhc3NlcnQuZXF1YWwoXG4gICAgICBiYWNrdXBDb21tb25LZXljaGFpbixcbiAgICAgIGNvbW1vblB1YmxpY0tleWNoYWluLFxuICAgICAgJ0JhY2t1cCBjb21wdXRlZCBrZXljaGFpbiBkb2VzIG5vdCBtYXRjaCBCaXRHbyBjb21tb24ga2V5Y2hhaW4nXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZW52ZWxvcGU6IHVzZXJFbnZlbG9wZSwgcmVkdWNlZEVudmVsb3BlOiB1c2VyUmVkdWNlZEVudmVsb3BlIH0gPSBidWlsZFZyZktleUVudmVsb3BlcyhcbiAgICAgIHVzZXJEa2cuZ2V0S2V5U2hhcmUoKSxcbiAgICAgIHVzZXJEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICB1c2VyVnJmU2Vzc2lvbi5nZXRLZXlTaGFyZSgpXG4gICAgKTtcbiAgICBjb25zdCB7IGVudmVsb3BlOiBiYWNrdXBFbnZlbG9wZSwgcmVkdWNlZEVudmVsb3BlOiBiYWNrdXBSZWR1Y2VkRW52ZWxvcGUgfSA9IGJ1aWxkVnJmS2V5RW52ZWxvcGVzKFxuICAgICAgYmFja3VwRGtnLmdldEtleVNoYXJlKCksXG4gICAgICBiYWNrdXBEa2cuZ2V0UmVkdWNlZEtleVNoYXJlKCksXG4gICAgICBiYWNrdXBWcmZTZXNzaW9uLmdldEtleVNoYXJlKClcbiAgICApO1xuXG4gICAgY29uc3QgdXNlcktleWNoYWluUHJvbWlzZSA9IHRoaXMuYWRkVXNlcktleWNoYWluKFxuICAgICAgdXNlckNvbW1vbktleWNoYWluLFxuICAgICAgdXNlckVudmVsb3BlLFxuICAgICAgdXNlclJlZHVjZWRFbnZlbG9wZSxcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIHBhcmFtcy53ZWJhdXRobkluZm8sXG4gICAgICBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICBwYXJhbXMuZW50ZXJwcmlzZSxcbiAgICAgIHBhcmFtcy5zYWZlSWRcbiAgICApO1xuICAgIGNvbnN0IGJhY2t1cEtleWNoYWluUHJvbWlzZSA9IHRoaXMuYWRkQmFja3VwS2V5Y2hhaW4oXG4gICAgICBiYWNrdXBDb21tb25LZXljaGFpbixcbiAgICAgIGJhY2t1cEVudmVsb3BlLFxuICAgICAgYmFja3VwUmVkdWNlZEVudmVsb3BlLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uLFxuICAgICAgcGFyYW1zLmVudGVycHJpc2UsXG4gICAgICBwYXJhbXMuc2FmZUlkXG4gICAgKTtcbiAgICBjb25zdCBiaXRnb0tleWNoYWluUHJvbWlzZSA9IHRoaXMuYWRkQml0Z29LZXljaGFpbihjb21tb25QdWJsaWNLZXljaGFpbiwgcGFyYW1zLnNhZmVJZCk7XG5cbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbiwgYml0Z29LZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB1c2VyS2V5Y2hhaW5Qcm9taXNlLFxuICAgICAgYmFja3VwS2V5Y2hhaW5Qcm9taXNlLFxuICAgICAgYml0Z29LZXljaGFpblByb21pc2UsXG4gICAgXSk7XG4gICAgLy8gI2VuZHJlZ2lvblxuXG4gICAgcmV0dXJuIHsgdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbiwgYml0Z29LZXljaGFpbiB9O1xuICB9XG59XG4iXX0=
@@ -6,6 +6,7 @@ export default EddsaUtils;
6
6
  export { ITssUtils, IEddsaUtils, EddsaUnsignedTransaction } from './types';
7
7
  export { PrebuildTransactionWithIntentOptions, SignatureShareRecord, SignatureShareType, TxRequest, } from '../baseTypes';
8
8
  export * from './eddsaMPCv2';
9
+ export * from './eddsaVrfMPCv2';
9
10
  export * from './eddsaMPCv2KeyGenSender';
10
11
  export * from './typesEddsaMPCv2';
11
12
  export * from './SMC/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,sCAAsC;AACtC,OAAO,KAAK,aAAa,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,eAAe,MAAM,SAAS,CAAC;AAE3C,eAAe,UAAU,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,sCAAsC;AACtC,OAAO,KAAK,aAAa,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,eAAe,MAAM,SAAS,CAAC;AAE3C,eAAe,UAAU,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
@@ -45,7 +45,8 @@ exports.default = eddsa_1.EddsaUtils;
45
45
  var baseTypes_1 = require("../baseTypes");
46
46
  Object.defineProperty(exports, "SignatureShareType", { enumerable: true, get: function () { return baseTypes_1.SignatureShareType; } });
47
47
  __exportStar(require("./eddsaMPCv2"), exports);
48
+ __exportStar(require("./eddsaVrfMPCv2"), exports);
48
49
  __exportStar(require("./eddsaMPCv2KeyGenSender"), exports);
49
50
  __exportStar(require("./typesEddsaMPCv2"), exports);
50
51
  __exportStar(require("./SMC/utils"), exports);
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMseURBQXlDO0FBQ3pDLDJEQUEyQztBQUUzQyxrQkFBZSxrQkFBVSxDQUFDO0FBSTFCLDBDQUtzQjtBQUZwQiwrR0FBQSxrQkFBa0IsT0FBQTtBQUlwQiwrQ0FBNkI7QUFDN0IsMkRBQXlDO0FBQ3pDLG9EQUFrQztBQUNsQyw4Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGRzYVV0aWxzIH0gZnJvbSAnLi9lZGRzYSc7XG4vKiogQGRlcHJlY2F0ZWQgdXNlIEVkZHNhVXRpbHNUeXBlcyAqL1xuZXhwb3J0ICogYXMgVHNzVXRpbHNUeXBlcyBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGFzIEVkZHNhVXRpbHNUeXBlcyBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgRWRkc2FVdGlscztcblxuLy8gZXhwb3J0aW5nIHRoaXMgdHlwZXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG5leHBvcnQgeyBJVHNzVXRpbHMsIElFZGRzYVV0aWxzLCBFZGRzYVVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7XG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgU2lnbmF0dXJlU2hhcmVSZWNvcmQsXG4gIFNpZ25hdHVyZVNoYXJlVHlwZSxcbiAgVHhSZXF1ZXN0LFxufSBmcm9tICcuLi9iYXNlVHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2VkZHNhTVBDdjInO1xuZXhwb3J0ICogZnJvbSAnLi9lZGRzYU1QQ3YyS2V5R2VuU2VuZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXNFZGRzYU1QQ3YyJztcbmV4cG9ydCAqIGZyb20gJy4vU01DL3V0aWxzJztcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMseURBQXlDO0FBQ3pDLDJEQUEyQztBQUUzQyxrQkFBZSxrQkFBVSxDQUFDO0FBSTFCLDBDQUtzQjtBQUZwQiwrR0FBQSxrQkFBa0IsT0FBQTtBQUlwQiwrQ0FBNkI7QUFDN0Isa0RBQWdDO0FBQ2hDLDJEQUF5QztBQUN6QyxvREFBa0M7QUFDbEMsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRkc2FVdGlscyB9IGZyb20gJy4vZWRkc2EnO1xuLyoqIEBkZXByZWNhdGVkIHVzZSBFZGRzYVV0aWxzVHlwZXMgKi9cbmV4cG9ydCAqIGFzIFRzc1V0aWxzVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBhcyBFZGRzYVV0aWxzVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IEVkZHNhVXRpbHM7XG5cbi8vIGV4cG9ydGluZyB0aGlzIHR5cGVzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuZXhwb3J0IHsgSVRzc1V0aWxzLCBJRWRkc2FVdGlscywgRWRkc2FVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge1xuICBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBTaWduYXR1cmVTaGFyZVR5cGUsXG4gIFR4UmVxdWVzdCxcbn0gZnJvbSAnLi4vYmFzZVR5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9lZGRzYU1QQ3YyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRkc2FWcmZNUEN2Mic7XG5leHBvcnQgKiBmcm9tICcuL2VkZHNhTVBDdjJLZXlHZW5TZW5kZXInO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlc0VkZHNhTVBDdjInO1xuZXhwb3J0ICogZnJvbSAnLi9TTUMvdXRpbHMnO1xuIl19
@@ -21,7 +21,20 @@ export declare const generateEddsaMPCv2KeyRequestBody: t.UnionC<[t.TypeC<{
21
21
  signature: t.StringC;
22
22
  }>;
23
23
  }>]>;
24
- export type GenerateEddsaMPCv2KeyRequestBody = t.TypeOf<typeof generateEddsaMPCv2KeyRequestBody>;
24
+ /** Opaque VRF DKG blobs carried by the existing MPS key-generation rounds. */
25
+ export declare const eddsaMPCv2VrfKeyGenRequestFields: t.PartialC<{
26
+ userVrfMsg1: t.StringC;
27
+ backupVrfMsg1: t.StringC;
28
+ userVrfMsg2: t.StringC;
29
+ backupVrfMsg2: t.StringC;
30
+ }>;
31
+ export declare const eddsaMPCv2VrfKeyGenResponseFields: t.PartialC<{
32
+ bitgoVrfMsg1: t.StringC;
33
+ bitgoVrfMsg2: t.StringC;
34
+ }>;
35
+ export type EddsaMPCv2VrfKeyGenRequestFields = t.TypeOf<typeof eddsaMPCv2VrfKeyGenRequestFields>;
36
+ export type EddsaMPCv2VrfKeyGenResponseFields = t.TypeOf<typeof eddsaMPCv2VrfKeyGenResponseFields>;
37
+ export type GenerateEddsaMPCv2KeyRequestBody = t.TypeOf<typeof generateEddsaMPCv2KeyRequestBody> & EddsaMPCv2VrfKeyGenRequestFields;
25
38
  export declare const generateEddsaMPCv2KeyRequestResponse: t.UnionC<[t.TypeC<{
26
39
  sessionId: import("io-ts-types").NonEmptyStringC;
27
40
  bitgoMsg1: t.TypeC<{
@@ -36,5 +49,5 @@ export declare const generateEddsaMPCv2KeyRequestResponse: t.UnionC<[t.TypeC<{
36
49
  signature: t.StringC;
37
50
  }>;
38
51
  }>]>;
39
- export type GenerateEddsaMPCv2KeyRequestResponse = t.TypeOf<typeof generateEddsaMPCv2KeyRequestResponse>;
52
+ export type GenerateEddsaMPCv2KeyRequestResponse = t.TypeOf<typeof generateEddsaMPCv2KeyRequestResponse> & EddsaMPCv2VrfKeyGenResponseFields;
40
53
  //# sourceMappingURL=typesEddsaMPCv2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typesEddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAQ3B,eAAO,MAAM,gCAAgC;6BAUy1J,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAgf,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IAVttL,CAAC;AAExH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAEjG,eAAO,MAAM,oCAAoC;sBAM+xK,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAA2kB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IAH5rM,CAAC;AAEH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,CAAC"}
1
+ {"version":3,"file":"typesEddsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAQ3B,eAAO,MAAM,gCAAgC;6BA4BytI,aAAa;+BAAkD,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAAgf,aAAa;cAAgC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;gBAAyB,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IA5BtlK,CAAC;AAExH,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC;;;;;EAK3C,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;EAG5C,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AACjG,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAEnG,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,GAC9F,gCAAgC,CAAC;AAEnC,eAAO,MAAM,oCAAoC;sBAO+pJ,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;;sBAA2kB,aAAa;iCAAoD,aAAa;eAAiC,EAAG,KAAK;iBAAmB,EAAG,OAAO;mBAAoB,EAAG,OAAO;;IAJ5jL,CAAC;AAEH,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oCAAoC,CAAC,GACtG,iCAAiC,CAAC"}
@@ -33,12 +33,23 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.generateEddsaMPCv2KeyRequestResponse = exports.generateEddsaMPCv2KeyRequestBody = void 0;
36
+ exports.generateEddsaMPCv2KeyRequestResponse = exports.eddsaMPCv2VrfKeyGenResponseFields = exports.eddsaMPCv2VrfKeyGenRequestFields = exports.generateEddsaMPCv2KeyRequestBody = void 0;
37
37
  const t = __importStar(require("io-ts"));
38
38
  const public_types_1 = require("@bitgo/public-types");
39
39
  exports.generateEddsaMPCv2KeyRequestBody = t.union([public_types_1.EddsaMPCv2KeyGenRound1Request, public_types_1.EddsaMPCv2KeyGenRound2Request]);
40
+ /** Opaque VRF DKG blobs carried by the existing MPS key-generation rounds. */
41
+ exports.eddsaMPCv2VrfKeyGenRequestFields = t.partial({
42
+ userVrfMsg1: t.string,
43
+ backupVrfMsg1: t.string,
44
+ userVrfMsg2: t.string,
45
+ backupVrfMsg2: t.string,
46
+ });
47
+ exports.eddsaMPCv2VrfKeyGenResponseFields = t.partial({
48
+ bitgoVrfMsg1: t.string,
49
+ bitgoVrfMsg2: t.string,
50
+ });
40
51
  exports.generateEddsaMPCv2KeyRequestResponse = t.union([
41
52
  public_types_1.EddsaMPCv2KeyGenRound1Response,
42
53
  public_types_1.EddsaMPCv2KeyGenRound2Response,
43
54
  ]);
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNFZGRzYU1QQ3YyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLHNEQUs2QjtBQUVoQixRQUFBLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyw0Q0FBNkIsRUFBRSw0Q0FBNkIsQ0FBQyxDQUFDLENBQUM7QUFJM0csUUFBQSxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFELDZDQUE4QjtJQUM5Qiw2Q0FBOEI7Q0FDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQge1xuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVxdWVzdCxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVxdWVzdCxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RCb2R5ID0gdC51bmlvbihbRWRkc2FNUEN2MktleUdlblJvdW5kMVJlcXVlc3QsIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0XSk7XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RCb2R5ID0gdC5UeXBlT2Y8dHlwZW9mIGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RCb2R5PjtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RSZXNwb25zZSA9IHQudW5pb24oW1xuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVzcG9uc2UsXG4gIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZSxcbl0pO1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0UmVzcG9uc2UgPSB0LlR5cGVPZjx0eXBlb2YgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdFJlc3BvbnNlPjtcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNFZGRzYU1QQ3YyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBQzNCLHNEQUs2QjtBQUVoQixRQUFBLGdDQUFnQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyw0Q0FBNkIsRUFBRSw0Q0FBNkIsQ0FBQyxDQUFDLENBQUM7QUFFeEgsOEVBQThFO0FBQ2pFLFFBQUEsZ0NBQWdDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN4RCxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDckIsYUFBYSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ3ZCLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNyQixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDeEIsQ0FBQyxDQUFDO0FBRVUsUUFBQSxpQ0FBaUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTTtJQUN0QixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDdkIsQ0FBQyxDQUFDO0FBUVUsUUFBQSxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzFELDZDQUE4QjtJQUM5Qiw2Q0FBOEI7Q0FDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQge1xuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQxUmVxdWVzdCxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVxdWVzdCxcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RCb2R5ID0gdC51bmlvbihbRWRkc2FNUEN2MktleUdlblJvdW5kMVJlcXVlc3QsIEVkZHNhTVBDdjJLZXlHZW5Sb3VuZDJSZXF1ZXN0XSk7XG5cbi8qKiBPcGFxdWUgVlJGIERLRyBibG9icyBjYXJyaWVkIGJ5IHRoZSBleGlzdGluZyBNUFMga2V5LWdlbmVyYXRpb24gcm91bmRzLiAqL1xuZXhwb3J0IGNvbnN0IGVkZHNhTVBDdjJWcmZLZXlHZW5SZXF1ZXN0RmllbGRzID0gdC5wYXJ0aWFsKHtcbiAgdXNlclZyZk1zZzE6IHQuc3RyaW5nLFxuICBiYWNrdXBWcmZNc2cxOiB0LnN0cmluZyxcbiAgdXNlclZyZk1zZzI6IHQuc3RyaW5nLFxuICBiYWNrdXBWcmZNc2cyOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgZWRkc2FNUEN2MlZyZktleUdlblJlc3BvbnNlRmllbGRzID0gdC5wYXJ0aWFsKHtcbiAgYml0Z29WcmZNc2cxOiB0LnN0cmluZyxcbiAgYml0Z29WcmZNc2cyOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgdHlwZSBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVxdWVzdEZpZWxkcyA9IHQuVHlwZU9mPHR5cGVvZiBlZGRzYU1QQ3YyVnJmS2V5R2VuUmVxdWVzdEZpZWxkcz47XG5leHBvcnQgdHlwZSBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHMgPSB0LlR5cGVPZjx0eXBlb2YgZWRkc2FNUEN2MlZyZktleUdlblJlc3BvbnNlRmllbGRzPjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHkgPSB0LlR5cGVPZjx0eXBlb2YgZ2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdEJvZHk+ICZcbiAgRWRkc2FNUEN2MlZyZktleUdlblJlcXVlc3RGaWVsZHM7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUVkZHNhTVBDdjJLZXlSZXF1ZXN0UmVzcG9uc2UgPSB0LnVuaW9uKFtcbiAgRWRkc2FNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICBFZGRzYU1QQ3YyS2V5R2VuUm91bmQyUmVzcG9uc2UsXG5dKTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVFZGRzYU1QQ3YyS2V5UmVxdWVzdFJlc3BvbnNlID0gdC5UeXBlT2Y8dHlwZW9mIGdlbmVyYXRlRWRkc2FNUEN2MktleVJlcXVlc3RSZXNwb25zZT4gJlxuICBFZGRzYU1QQ3YyVnJmS2V5R2VuUmVzcG9uc2VGaWVsZHM7XG4iXX0=
@@ -1 +1 @@
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;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,aA4DhC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,CA0DnB"}
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;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,aAwEhC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,CA0DnB"}
@@ -32,6 +32,18 @@ exports.NO_RECIPIENT_TX_TYPES = new Set([
32
32
  'defiApprove',
33
33
  'defiDeposit',
34
34
  'defiWithdraw',
35
+ // Native wrap/unwrap (WETH9 deposit()/withdraw()) — calldata and the WETH9
36
+ // address are resolved server-side from the vault binding, so no recipients.
37
+ // Registered in BOTH spellings on purpose: this set is matched against
38
+ // txParams.type, which is buildParams.type (camelCase, from wallet.sendMany),
39
+ // AND against intent.intentType (kebab-case, as WP persists it). Signing paths
40
+ // that carry no txParams — notably pendingApproval.approve() →
41
+ // recreateTxRequest() → signTxRequest() with no txParams — only ever see the
42
+ // kebab-case spelling.
43
+ 'wrapNative',
44
+ 'wrap-native',
45
+ 'unwrapNative',
46
+ 'unwrap-native',
35
47
  // ERC-7984 shielding: approve/wrap calldata is built server-side from the wrap intent
36
48
  'wrapApprove',
37
49
  'wrap',
@@ -139,4 +151,4 @@ function resolveEffectiveTxParams(txRequest, txParams, chainName) {
139
151
  }
140
152
  return effectiveTxParams;
141
153
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNHQSw0REE4REM7QUFuS0QseUNBQXVEO0FBR3ZEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0MsY0FBYztJQUNkLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7SUFDZixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsY0FBYztJQUNkLFVBQVU7SUFDVixnRkFBZ0Y7SUFDaEYsYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2Qsc0ZBQXNGO0lBQ3RGLGFBQWE7SUFDYixNQUFNO0lBQ04sbUVBQW1FO0lBQ25FLGNBQWM7SUFFZCwwRkFBMEY7SUFDMUYsK0RBQStEO0lBQy9ELFVBQVU7SUFDVixZQUFZO0lBQ1osaUJBQWlCO0lBRWpCLDhCQUE4QjtJQUM5QixPQUFPO0lBQ1AsU0FBUztJQUNULG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZUFBZTtJQUNmLGVBQWU7SUFDZixXQUFXO0lBRVgsc0ZBQXNGO0lBQ3RGLE9BQU87SUFDUCxtQkFBbUI7SUFFbkIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsd0JBQXdCO0lBQ3hCLGVBQWU7SUFDZixRQUFRO0lBRVIsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsK0RBQStEO0lBQy9ELFFBQVE7SUFDUixXQUFXO0lBRVgsa0VBQWtFO0lBQ2xFLFlBQVk7SUFFWix3REFBd0Q7SUFDeEQsV0FBVztDQUNaLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLFNBQW9CLEVBQ3BCLFFBQXVDLEVBQ3ZDLFNBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUksU0FBUyxDQUFDLE1BQTBCLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ2xHLDJFQUEyRTtRQUMzRSx1RUFBdUU7UUFDdkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQ2IsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTO1lBQ3BDLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRixPQUFPO1lBQ0wsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUN4QyxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3BDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtZQUMxQixHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7U0FDaEMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxpQkFBaUIsR0FBc0I7UUFDM0MsR0FBRyxRQUFRO1FBQ1gsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7S0FDbEYsQ0FBQztJQUVGLDJFQUEyRTtJQUMzRSwrRkFBK0Y7SUFDL0YsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFLLFNBQVMsQ0FBQyxNQUEwQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFFakcsb0RBQW9EO0lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdEMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLDRGQUE0RjtJQUM1RixNQUFNLHNCQUFzQixHQUFJLFNBQVMsQ0FBQyxNQUEwQixFQUFFLGdCQUFnQixDQUFDO0lBQ3ZGLElBQUksc0JBQXNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xFLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDO0lBQzlELENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsaUZBQWlGO0lBQ2pGLHdGQUF3RjtJQUN4RixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQTBCLEVBQUUsZ0JBQWdCLENBQUM7SUFFbEYsMEZBQTBGO0lBQzFGLDRGQUE0RjtJQUM1RixNQUFNLFVBQVUsR0FBSSxTQUFTLENBQUMsTUFBMEIsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO0lBRTNFLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTTtRQUNyQyxDQUFDLGVBQWU7UUFDaEIsQ0FBQyw2QkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsNkJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixzSEFBc0gsQ0FDdkgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblBhcmFtcyB9IGZyb20gJy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7IFBvcHVsYXRlZEludGVudCwgVHhSZXF1ZXN0IH0gZnJvbSAnLi9iYXNlVHlwZXMnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIHR5cGVzIHRoYXQgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIGV4cGxpY2l0IHJlY2lwaWVudHMuXG4gKiBUaGVzZSBhcmUgdGhlIGludGVudFR5cGUgc3RyaW5ncyBhcyBzdG9yZWQgaW4gVHhSZXF1ZXN0LmludGVudC5pbnRlbnRUeXBlIGJ5IFdQLlxuICogdmVyaWZ5VHJhbnNhY3Rpb24gaGFuZGxlcyBuby1yZWNpcGllbnQgdmFsaWRhdGlvbiBmb3IgdGhlc2UgaW50ZXJuYWxseS5cbiAqIE1pcnJvcnMgdGhlIGJ5cGFzcyBsaXN0IGluIGFic3RyYWN0RXRoTGlrZU5ld0NvaW5zLnRzIHZlcmlmeVRzc1RyYW5zYWN0aW9uLlxuICpcbiAqIEVDRFNBIHR5cGVzOiBhY2NlbGVyYXRpb24sIGZpbGxOb25jZSwgdHJhbnNmZXJUb2tlbiwgdG9rZW5BcHByb3ZhbCwgY29uc29saWRhdGUsXG4gKiAgICAgICAgICAgICAgYnJpZGdlRnVuZHMsIGVuYWJsZVRva2VuLCBjdXN0b21UeCwgd3JhcEFwcHJvdmUsIHdyYXAsIGNvbnRyYWN0Q2FsbFxuICogQlNDL0JOQiBkZWxlZ2F0aW9uLWJhc2VkIHN0YWtpbmc6IGRlbGVnYXRlLCB1bmRlbGVnYXRlLCBzd2l0Y2hWYWxpZGF0b3JcbiAqIENFTE8vRVRIIGxvY2stYmFzZWQgc3Rha2luZzogc3Rha2UsIHVuc3Rha2UsIHN0YWtlV2l0aENhbGxEYXRhLCB1bnN0YWtlV2l0aENhbGxEYXRhLFxuICogICAgICAgICAgICAgIHRyYW5zZmVyU3Rha2UsIGluY3JlYXNlU3Rha2UsIGdvVW5zdGFrZVxuICogQ2xhaW0gcmV3YXJkcyAoQlNDLCBDRUxPIOKAlCBUUlgvU09MIHVzZSBFZERTQSBhbmQgYXJlIHVuYWZmZWN0ZWQpOiBjbGFpbSwgc3Rha2VDbGFpbVJld2FyZHNcbiAqL1xuZXhwb3J0IGNvbnN0IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyA9IG5ldyBTZXQoW1xuICAvLyBFQ0RTQSB0eXBlc1xuICAnYWNjZWxlcmF0aW9uJyxcbiAgJ2ZpbGxOb25jZScsXG4gICd0cmFuc2ZlclRva2VuJyxcbiAgJ3Rva2VuQXBwcm92YWwnLFxuICAnY29uc29saWRhdGUnLFxuICAnYnJpZGdlRnVuZHMnLFxuICAnZW5hYmxlVG9rZW4nLFxuICAnZW5hYmxldG9rZW4nLFxuICAnZGlzYWJsZXRva2VuJyxcbiAgJ2N1c3RvbVR4JyxcbiAgLy8gRGVGaSB2YXVsdCBvcGVyYXRpb25zIOKAlCByZWNpcGllbnRzL2NhbGxkYXRhIGJ1aWx0IHNlcnZlci1zaWRlIGZyb20gZGVmaVBhcmFtc1xuICAnZGVmaUFwcHJvdmUnLFxuICAnZGVmaURlcG9zaXQnLFxuICAnZGVmaVdpdGhkcmF3JyxcbiAgLy8gRVJDLTc5ODQgc2hpZWxkaW5nOiBhcHByb3ZlL3dyYXAgY2FsbGRhdGEgaXMgYnVpbHQgc2VydmVyLXNpZGUgZnJvbSB0aGUgd3JhcCBpbnRlbnRcbiAgJ3dyYXBBcHByb3ZlJyxcbiAgJ3dyYXAnLFxuICAvLyBTbWFydCBjb250cmFjdCBpbnZvY2F0aW9ucyB3aXRoIG5vIGV4cGxpY2l0IFNESy1sZXZlbCByZWNpcGllbnRzXG4gICdjb250cmFjdENhbGwnLFxuXG4gIC8vIEJTQy9CTkIgZGVsZWdhdGlvbi1iYXNlZCBzdGFraW5nIOKAlCBpbnRlbnRUeXBlIHN0cmluZ3MgZnJvbSBUeFJlcXVlc3QuaW50ZW50LmludGVudFR5cGUuXG4gIC8vIE5vdGU6IFNPTCBzb2xEZWxlZ2F0ZUludGVudCBhbHNvIHVzZXMgaW50ZW50VHlwZSBcImRlbGVnYXRlXCIuXG4gICdkZWxlZ2F0ZScsXG4gICd1bmRlbGVnYXRlJyxcbiAgJ3N3aXRjaFZhbGlkYXRvcicsXG5cbiAgLy8gQ0VMTy9FVEggbG9jay1iYXNlZCBzdGFraW5nXG4gICdzdGFrZScsXG4gICd1bnN0YWtlJyxcbiAgJ3N0YWtlV2l0aENhbGxEYXRhJyxcbiAgJ3Vuc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAndHJhbnNmZXJTdGFrZScsXG4gICdpbmNyZWFzZVN0YWtlJyxcbiAgJ2dvVW5zdGFrZScsXG5cbiAgLy8gQ2xhaW0gcmV3YXJkcyDigJQgQlNDIGFuZCBDRUxPIChUUlgvU09ML0Nvc21vcyB1c2UgRWREU0EsIG5vdCBhZmZlY3RlZCBieSB0aGlzIGd1YXJkKVxuICAnY2xhaW0nLFxuICAnc3Rha2VDbGFpbVJld2FyZHMnLFxuXG4gICdjcmVhdGVBY2NvdW50JyxcbiAgJ3RyYW5zZmVyQWNjZXB0JyxcbiAgJ3RyYW5zZmVyUmVqZWN0JyxcbiAgJ3RyYW5zZmVyT2ZmZXJXaXRoZHJhd24nLFxuICAnY2FudG9uQ29tbWFuZCcsXG4gICdwbGVkZ2UnLFxuXG4gIC8vIEF2YWxhbmNoZSAvIEZsYXJlIGNyb3NzLWNoYWluIGF0b21pYyBpbXBvcnRzIOKAlCByZWNpcGllbnRzIGFyZSBub3Qgc3VwcGxpZWRcbiAgLy8gYnkgdGhlIGNsaWVudCBiZWNhdXNlIHRoZSBpbXBvcnQgY29uc3VtZXMgVVRYT3MgYWxyZWFkeSBvd25lZCBieSB0aGVcbiAgLy8gd2FsbGV0OyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyB0aGUgd2FsbGV0IGl0c2VsZi4gV1AgaXNzdWVzIHRoZXNlXG4gIC8vIHdpdGggaW50ZW50VHlwZSAnaW1wb3J0JyAoUC1jaGFpbikgb3IgJ2ltcG9ydHRvYycgKEMtY2hhaW4pLlxuICAnaW1wb3J0JyxcbiAgJ2ltcG9ydHRvYycsXG5cbiAgLy8gU09MOiBkZWFjdGl2YXRlIHN0YWtlIGFjY291bnQg4oCUIG5vIG9uLWNoYWluIHRyYW5zZmVyIHJlY2lwaWVudC5cbiAgJ2RlYWN0aXZhdGUnLFxuXG4gIC8vIFNPTDogYXV0aG9yaXplIHN0YWtlIGFjY291bnQg4oCUIG5vIHRyYW5zZmVyIHJlY2lwaWVudC5cbiAgJ2F1dGhvcml6ZScsXG5dKTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZWZmZWN0aXZlIHR4UGFyYW1zIGZvciBUU1Mgc2lnbmluZyByZWNpcGllbnQgdmVyaWZpY2F0aW9uLlxuICpcbiAqIEZvciBzbWFydCBjb250cmFjdCBpbnRlcmFjdGlvbnMsIHJlY2lwaWVudHMgbGl2ZSBpbiB0eFJlcXVlc3QuaW50ZW50LnJlY2lwaWVudHNcbiAqIChuYXRpdmUgYW1vdW50ID0gMCwgc28gYnVpbGRQYXJhbXMgaXMgZW1wdHkpLiBGYWxscyBiYWNrIHRvIGludGVudCByZWNpcGllbnRzXG4gKiBtYXBwZWQgdG8gSVRyYW5zYWN0aW9uUmVjaXBpZW50IHNoYXBlIHdoZW4gdHhQYXJhbXMucmVjaXBpZW50cyBpcyBhYnNlbnQuXG4gKlxuICogdG9rZW5OYW1lIGlzIGRlcml2ZWQgZnJvbSB0b2tlbkRhdGEudG9rZW5OYW1lIHdoZW4gcHJlc2VudCwgb3RoZXJ3aXNlIGZyb21cbiAqIGFtb3VudC5zeW1ib2wgd2hlbiBjaGFpbk5hbWUgaXMgcHJvdmlkZWQgYW5kIHN5bWJvbCBkaWZmZXJzIGZyb20gaXQuXG4gKlxuICogU3Rha2luZyBpbnRlbnRzIChCU0MgZGVsZWdhdGUvdW5kZWxlZ2F0ZSwgQ0VMTyBzdGFrZS91bnN0YWtlLCBldGMuKSBhcmVcbiAqIGlkZW50aWZpZWQgZ2VuZXJpY2FsbHkgYnkgdGhlIHByZXNlbmNlIG9mIGBzdGFraW5nUmVxdWVzdElkYCBvbiB0aGUgaW50ZW50IOKAlFxuICogYSByZXF1aXJlZCBmaWVsZCBvbiBCYXNlU3Rha2VJbnRlbnQgaW4gQGJpdGdvL3B1YmxpYy10eXBlcy4gVGhlc2UgaW50ZW50c1xuICogaGF2ZSBubyB0eFBhcmFtcyByZWNpcGllbnRzIGJ5IGRlc2lnbjsgdmFsaWRhdGlvbiBpcyBkb25lIGF0IHRoZSBjb2luIGxheWVyLlxuICpcbiAqIFRocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBpZiBubyByZWNpcGllbnRzIGNhbiBiZSByZXNvbHZlZCBhbmQgdGhlXG4gKiB0cmFuc2FjdGlvbiBpcyBub3QgYSBrbm93biBuby1yZWNpcGllbnQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdHhSZXF1ZXN0IC0gdGhlIHRyYW5zYWN0aW9uIHJlcXVlc3QgY29udGFpbmluZyB0aGUgcGVyc2lzdGVkIGludGVudFxuICogQHBhcmFtIHR4UGFyYW1zIC0gdGhlIGNhbGxlci1zdXBwbGllZCB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzIChtYXkgYmUgdW5kZWZpbmVkKVxuICogQHBhcmFtIGNoYWluTmFtZSAtIHRoZSBiYXNlIGNoYWluIG5hbWUgKGUuZy4gJ3NvbCcsICd0c29sJykgdXNlZCB0byBleGNsdWRlXG4gKiAgIG5hdGl2ZS1jb2luIHRyYW5zZmVycyBmcm9tIHRva2VuTmFtZTsgcGFzcyBiYXNlQ29pbi5nZXRDaGFpbigpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMoXG4gIHR4UmVxdWVzdDogVHhSZXF1ZXN0LFxuICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXMgfCB1bmRlZmluZWQsXG4gIGNoYWluTmFtZT86IHN0cmluZ1xuKTogVHJhbnNhY3Rpb25QYXJhbXMge1xuICBjb25zdCBpbnRlbnRSZWNpcGllbnRzID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8ucmVjaXBpZW50cz8ubWFwKChpbnRlbnRSZWNpcGllbnQpID0+IHtcbiAgICAvLyBQcmVmZXIgdG9rZW5EYXRhLnRva2VuTmFtZTsgZmFsbCBiYWNrIHRvIGFtb3VudC5zeW1ib2wgd2hlbiBjaGFpbk5hbWUgaXNcbiAgICAvLyBwcm92aWRlZCBhbmQgZGlmZmVycyBmcm9tIGl0LiBXaGVuIGFic2VudCwgc2tpcCB0aGUgc3ltYm9sIGZhbGxiYWNrLlxuICAgIGNvbnN0IHsgc3ltYm9sIH0gPSBpbnRlbnRSZWNpcGllbnQuYW1vdW50O1xuICAgIGNvbnN0IHRva2VuTmFtZSA9XG4gICAgICBpbnRlbnRSZWNpcGllbnQudG9rZW5EYXRhPy50b2tlbk5hbWUgfHxcbiAgICAgIChjaGFpbk5hbWUgIT09IHVuZGVmaW5lZCAmJiBzeW1ib2wgJiYgc3ltYm9sICE9PSBjaGFpbk5hbWUgPyBzeW1ib2wgOiB1bmRlZmluZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiBpbnRlbnRSZWNpcGllbnQuYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgYW1vdW50OiBpbnRlbnRSZWNpcGllbnQuYW1vdW50LnZhbHVlLFxuICAgICAgZGF0YTogaW50ZW50UmVjaXBpZW50LmRhdGEsXG4gICAgICAuLi4odG9rZW5OYW1lICYmIHsgdG9rZW5OYW1lIH0pLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0IGVmZmVjdGl2ZVR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyA9IHtcbiAgICAuLi50eFBhcmFtcyxcbiAgICByZWNpcGllbnRzOiB0eFBhcmFtcz8ucmVjaXBpZW50cz8ubGVuZ3RoID8gdHhQYXJhbXMucmVjaXBpZW50cyA6IGludGVudFJlY2lwaWVudHMsXG4gIH07XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGludGVudC5pbnRlbnRUeXBlIHdoZW4gdHhQYXJhbXMudHlwZSBpcyBub3QgZXhwbGljaXRseSBzZXQuXG4gIC8vIFN0YWtpbmcgd2FsbGV0cyBjYWxsIHNpZ25UcmFuc2FjdGlvbiB3aXRob3V0IHR4UGFyYW1zLCBzbyB0aGUgdHlwZSBsaXZlcyBvbmx5IGluIHRoZSBpbnRlbnQuXG4gIGNvbnN0IHR4VHlwZSA9IGVmZmVjdGl2ZVR4UGFyYW1zLnR5cGUgPz8gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uaW50ZW50VHlwZSA/PyAnJztcblxuICAvLyBQcm9wYWdhdGUgdGhlIHJlc29sdmVkIHR5cGUgc28gZG93bnN0cmVhbSBjYWxsZXJzXG4gIGlmICghZWZmZWN0aXZlVHhQYXJhbXMudHlwZSAmJiB0eFR5cGUpIHtcbiAgICBlZmZlY3RpdmVUeFBhcmFtcy50eXBlID0gdHhUeXBlO1xuICB9XG5cbiAgLy8gUHJvcGFnYXRlIHN0YWtpbmdSZXF1ZXN0SWQgZnJvbSBpbnRlbnQgaW50byBlZmZlY3RpdmVUeFBhcmFtcyBzbyB2ZXJpZnlUc3NUcmFuc2FjdGlvblxuICAvLyBvdmVycmlkZXMgY2FuIGJ5cGFzcyB0aGUgbm8tcmVjaXBpZW50IGd1YXJkIHdpdGhvdXQgbmVlZGluZyBhY2Nlc3MgdG8gdHhSZXF1ZXN0IGRpcmVjdGx5LlxuICBjb25zdCBpbnRlbnRTdGFraW5nUmVxdWVzdElkID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uc3Rha2luZ1JlcXVlc3RJZDtcbiAgaWYgKGludGVudFN0YWtpbmdSZXF1ZXN0SWQgJiYgIWVmZmVjdGl2ZVR4UGFyYW1zLnN0YWtpbmdSZXF1ZXN0SWQpIHtcbiAgICBlZmZlY3RpdmVUeFBhcmFtcy5zdGFraW5nUmVxdWVzdElkID0gaW50ZW50U3Rha2luZ1JlcXVlc3RJZDtcbiAgfVxuXG4gIC8vIEFsbCBzdGFraW5nIGludGVudHMgKEJTQyBkZWxlZ2F0ZS91bmRlbGVnYXRlLCBDRUxPIHN0YWtlL3Vuc3Rha2UsIGV0Yy4pIGNhcnJ5XG4gIC8vIHN0YWtpbmdSZXF1ZXN0SWQgYXMgYSByZXF1aXJlZCBmaWVsZCBvbiBCYXNlU3Rha2VJbnRlbnQgKEBiaXRnby9wdWJsaWMtdHlwZXMpLlxuICAvLyBVc2UgaXRzIHByZXNlbmNlIGFzIGEgZ2VuZXJpYyBzdGFraW5nIHNpZ25hbCDigJQgbm8gbmVlZCB0byBlbnVtZXJhdGUgZXZlcnkgaW50ZW50VHlwZS5cbiAgY29uc3QgaXNTdGFraW5nSW50ZW50ID0gISEodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5zdGFraW5nUmVxdWVzdElkO1xuXG4gIC8vIGJ1aWxkUGFyYW1zLnR5cGUgZnJvbSB0aGUgd2FsbGV0IFVJIGlzIFBhc2NhbENhc2UgKCdJbXBvcnQnKTsgaW50ZW50LmludGVudFR5cGUgZnJvbSBXUFxuICAvLyBpcyBsb3dlcmNhc2UgKCdpbXBvcnQnKS4gRWl0aGVyIG1heSBiZSB0aGUgc291cmNlIG9mIHRydXRoIGRlcGVuZGluZyBvbiB0aGUgc2lnbmluZyBwYXRoLlxuICBjb25zdCBpbnRlbnRUeXBlID0gKHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50KT8uaW50ZW50VHlwZSA/PyAnJztcblxuICBpZiAoXG4gICAgIWVmZmVjdGl2ZVR4UGFyYW1zLnJlY2lwaWVudHM/Lmxlbmd0aCAmJlxuICAgICFpc1N0YWtpbmdJbnRlbnQgJiZcbiAgICAhTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0eFR5cGUpICYmXG4gICAgIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXMoaW50ZW50VHlwZSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgJ1JlY2lwaWVudCBkZXRhaWxzIGFyZSByZXF1aXJlZCB0byB2ZXJpZnkgdGhpcyB0cmFuc2FjdGlvbiBiZWZvcmUgc2lnbmluZy4gUGFzcyB0eFBhcmFtcyB3aXRoIGF0IGxlYXN0IG9uZSByZWNpcGllbnQuJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gZWZmZWN0aXZlVHhQYXJhbXM7XG59XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtIQSw0REE4REM7QUEvS0QseUNBQXVEO0FBR3ZEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0MsY0FBYztJQUNkLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7SUFDZixhQUFhO0lBQ2IsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsY0FBYztJQUNkLFVBQVU7SUFDVixnRkFBZ0Y7SUFDaEYsYUFBYTtJQUNiLGFBQWE7SUFDYixjQUFjO0lBQ2QsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSx1RUFBdUU7SUFDdkUsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSwrREFBK0Q7SUFDL0QsNkVBQTZFO0lBQzdFLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osYUFBYTtJQUNiLGNBQWM7SUFDZCxlQUFlO0lBQ2Ysc0ZBQXNGO0lBQ3RGLGFBQWE7SUFDYixNQUFNO0lBQ04sbUVBQW1FO0lBQ25FLGNBQWM7SUFFZCwwRkFBMEY7SUFDMUYsK0RBQStEO0lBQy9ELFVBQVU7SUFDVixZQUFZO0lBQ1osaUJBQWlCO0lBRWpCLDhCQUE4QjtJQUM5QixPQUFPO0lBQ1AsU0FBUztJQUNULG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZUFBZTtJQUNmLGVBQWU7SUFDZixXQUFXO0lBRVgsc0ZBQXNGO0lBQ3RGLE9BQU87SUFDUCxtQkFBbUI7SUFFbkIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsd0JBQXdCO0lBQ3hCLGVBQWU7SUFDZixRQUFRO0lBRVIsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsK0RBQStEO0lBQy9ELFFBQVE7SUFDUixXQUFXO0lBRVgsa0VBQWtFO0lBQ2xFLFlBQVk7SUFFWix3REFBd0Q7SUFDeEQsV0FBVztDQUNaLENBQUMsQ0FBQztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLFNBQW9CLEVBQ3BCLFFBQXVDLEVBQ3ZDLFNBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUksU0FBUyxDQUFDLE1BQTBCLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ2xHLDJFQUEyRTtRQUMzRSx1RUFBdUU7UUFDdkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQ2IsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTO1lBQ3BDLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRixPQUFPO1lBQ0wsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTztZQUN4QyxNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3BDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtZQUMxQixHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7U0FDaEMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxpQkFBaUIsR0FBc0I7UUFDM0MsR0FBRyxRQUFRO1FBQ1gsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7S0FDbEYsQ0FBQztJQUVGLDJFQUEyRTtJQUMzRSwrRkFBK0Y7SUFDL0YsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFLLFNBQVMsQ0FBQyxNQUEwQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7SUFFakcsb0RBQW9EO0lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdEMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLDRGQUE0RjtJQUM1RixNQUFNLHNCQUFzQixHQUFJLFNBQVMsQ0FBQyxNQUEwQixFQUFFLGdCQUFnQixDQUFDO0lBQ3ZGLElBQUksc0JBQXNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2xFLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLHNCQUFzQixDQUFDO0lBQzlELENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsaUZBQWlGO0lBQ2pGLHdGQUF3RjtJQUN4RixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQTBCLEVBQUUsZ0JBQWdCLENBQUM7SUFFbEYsMEZBQTBGO0lBQzFGLDRGQUE0RjtJQUM1RixNQUFNLFVBQVUsR0FBSSxTQUFTLENBQUMsTUFBMEIsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO0lBRTNFLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTTtRQUNyQyxDQUFDLGVBQWU7UUFDaEIsQ0FBQyw2QkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsNkJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixzSEFBc0gsQ0FDdkgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblBhcmFtcyB9IGZyb20gJy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7IFBvcHVsYXRlZEludGVudCwgVHhSZXF1ZXN0IH0gZnJvbSAnLi9iYXNlVHlwZXMnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIHR5cGVzIHRoYXQgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIGV4cGxpY2l0IHJlY2lwaWVudHMuXG4gKiBUaGVzZSBhcmUgdGhlIGludGVudFR5cGUgc3RyaW5ncyBhcyBzdG9yZWQgaW4gVHhSZXF1ZXN0LmludGVudC5pbnRlbnRUeXBlIGJ5IFdQLlxuICogdmVyaWZ5VHJhbnNhY3Rpb24gaGFuZGxlcyBuby1yZWNpcGllbnQgdmFsaWRhdGlvbiBmb3IgdGhlc2UgaW50ZXJuYWxseS5cbiAqIE1pcnJvcnMgdGhlIGJ5cGFzcyBsaXN0IGluIGFic3RyYWN0RXRoTGlrZU5ld0NvaW5zLnRzIHZlcmlmeVRzc1RyYW5zYWN0aW9uLlxuICpcbiAqIEVDRFNBIHR5cGVzOiBhY2NlbGVyYXRpb24sIGZpbGxOb25jZSwgdHJhbnNmZXJUb2tlbiwgdG9rZW5BcHByb3ZhbCwgY29uc29saWRhdGUsXG4gKiAgICAgICAgICAgICAgYnJpZGdlRnVuZHMsIGVuYWJsZVRva2VuLCBjdXN0b21UeCwgd3JhcEFwcHJvdmUsIHdyYXAsIGNvbnRyYWN0Q2FsbFxuICogQlNDL0JOQiBkZWxlZ2F0aW9uLWJhc2VkIHN0YWtpbmc6IGRlbGVnYXRlLCB1bmRlbGVnYXRlLCBzd2l0Y2hWYWxpZGF0b3JcbiAqIENFTE8vRVRIIGxvY2stYmFzZWQgc3Rha2luZzogc3Rha2UsIHVuc3Rha2UsIHN0YWtlV2l0aENhbGxEYXRhLCB1bnN0YWtlV2l0aENhbGxEYXRhLFxuICogICAgICAgICAgICAgIHRyYW5zZmVyU3Rha2UsIGluY3JlYXNlU3Rha2UsIGdvVW5zdGFrZVxuICogQ2xhaW0gcmV3YXJkcyAoQlNDLCBDRUxPIOKAlCBUUlgvU09MIHVzZSBFZERTQSBhbmQgYXJlIHVuYWZmZWN0ZWQpOiBjbGFpbSwgc3Rha2VDbGFpbVJld2FyZHNcbiAqL1xuZXhwb3J0IGNvbnN0IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyA9IG5ldyBTZXQoW1xuICAvLyBFQ0RTQSB0eXBlc1xuICAnYWNjZWxlcmF0aW9uJyxcbiAgJ2ZpbGxOb25jZScsXG4gICd0cmFuc2ZlclRva2VuJyxcbiAgJ3Rva2VuQXBwcm92YWwnLFxuICAnY29uc29saWRhdGUnLFxuICAnYnJpZGdlRnVuZHMnLFxuICAnZW5hYmxlVG9rZW4nLFxuICAnZW5hYmxldG9rZW4nLFxuICAnZGlzYWJsZXRva2VuJyxcbiAgJ2N1c3RvbVR4JyxcbiAgLy8gRGVGaSB2YXVsdCBvcGVyYXRpb25zIOKAlCByZWNpcGllbnRzL2NhbGxkYXRhIGJ1aWx0IHNlcnZlci1zaWRlIGZyb20gZGVmaVBhcmFtc1xuICAnZGVmaUFwcHJvdmUnLFxuICAnZGVmaURlcG9zaXQnLFxuICAnZGVmaVdpdGhkcmF3JyxcbiAgLy8gTmF0aXZlIHdyYXAvdW53cmFwIChXRVRIOSBkZXBvc2l0KCkvd2l0aGRyYXcoKSkg4oCUIGNhbGxkYXRhIGFuZCB0aGUgV0VUSDlcbiAgLy8gYWRkcmVzcyBhcmUgcmVzb2x2ZWQgc2VydmVyLXNpZGUgZnJvbSB0aGUgdmF1bHQgYmluZGluZywgc28gbm8gcmVjaXBpZW50cy5cbiAgLy8gUmVnaXN0ZXJlZCBpbiBCT1RIIHNwZWxsaW5ncyBvbiBwdXJwb3NlOiB0aGlzIHNldCBpcyBtYXRjaGVkIGFnYWluc3RcbiAgLy8gdHhQYXJhbXMudHlwZSwgd2hpY2ggaXMgYnVpbGRQYXJhbXMudHlwZSAoY2FtZWxDYXNlLCBmcm9tIHdhbGxldC5zZW5kTWFueSksXG4gIC8vIEFORCBhZ2FpbnN0IGludGVudC5pbnRlbnRUeXBlIChrZWJhYi1jYXNlLCBhcyBXUCBwZXJzaXN0cyBpdCkuIFNpZ25pbmcgcGF0aHNcbiAgLy8gdGhhdCBjYXJyeSBubyB0eFBhcmFtcyDigJQgbm90YWJseSBwZW5kaW5nQXBwcm92YWwuYXBwcm92ZSgpIOKGklxuICAvLyByZWNyZWF0ZVR4UmVxdWVzdCgpIOKGkiBzaWduVHhSZXF1ZXN0KCkgd2l0aCBubyB0eFBhcmFtcyDigJQgb25seSBldmVyIHNlZSB0aGVcbiAgLy8ga2ViYWItY2FzZSBzcGVsbGluZy5cbiAgJ3dyYXBOYXRpdmUnLFxuICAnd3JhcC1uYXRpdmUnLFxuICAndW53cmFwTmF0aXZlJyxcbiAgJ3Vud3JhcC1uYXRpdmUnLFxuICAvLyBFUkMtNzk4NCBzaGllbGRpbmc6IGFwcHJvdmUvd3JhcCBjYWxsZGF0YSBpcyBidWlsdCBzZXJ2ZXItc2lkZSBmcm9tIHRoZSB3cmFwIGludGVudFxuICAnd3JhcEFwcHJvdmUnLFxuICAnd3JhcCcsXG4gIC8vIFNtYXJ0IGNvbnRyYWN0IGludm9jYXRpb25zIHdpdGggbm8gZXhwbGljaXQgU0RLLWxldmVsIHJlY2lwaWVudHNcbiAgJ2NvbnRyYWN0Q2FsbCcsXG5cbiAgLy8gQlNDL0JOQiBkZWxlZ2F0aW9uLWJhc2VkIHN0YWtpbmcg4oCUIGludGVudFR5cGUgc3RyaW5ncyBmcm9tIFR4UmVxdWVzdC5pbnRlbnQuaW50ZW50VHlwZS5cbiAgLy8gTm90ZTogU09MIHNvbERlbGVnYXRlSW50ZW50IGFsc28gdXNlcyBpbnRlbnRUeXBlIFwiZGVsZWdhdGVcIi5cbiAgJ2RlbGVnYXRlJyxcbiAgJ3VuZGVsZWdhdGUnLFxuICAnc3dpdGNoVmFsaWRhdG9yJyxcblxuICAvLyBDRUxPL0VUSCBsb2NrLWJhc2VkIHN0YWtpbmdcbiAgJ3N0YWtlJyxcbiAgJ3Vuc3Rha2UnLFxuICAnc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAndW5zdGFrZVdpdGhDYWxsRGF0YScsXG4gICd0cmFuc2ZlclN0YWtlJyxcbiAgJ2luY3JlYXNlU3Rha2UnLFxuICAnZ29VbnN0YWtlJyxcblxuICAvLyBDbGFpbSByZXdhcmRzIOKAlCBCU0MgYW5kIENFTE8gKFRSWC9TT0wvQ29zbW9zIHVzZSBFZERTQSwgbm90IGFmZmVjdGVkIGJ5IHRoaXMgZ3VhcmQpXG4gICdjbGFpbScsXG4gICdzdGFrZUNsYWltUmV3YXJkcycsXG5cbiAgJ2NyZWF0ZUFjY291bnQnLFxuICAndHJhbnNmZXJBY2NlcHQnLFxuICAndHJhbnNmZXJSZWplY3QnLFxuICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICdjYW50b25Db21tYW5kJyxcbiAgJ3BsZWRnZScsXG5cbiAgLy8gQXZhbGFuY2hlIC8gRmxhcmUgY3Jvc3MtY2hhaW4gYXRvbWljIGltcG9ydHMg4oCUIHJlY2lwaWVudHMgYXJlIG5vdCBzdXBwbGllZFxuICAvLyBieSB0aGUgY2xpZW50IGJlY2F1c2UgdGhlIGltcG9ydCBjb25zdW1lcyBVVFhPcyBhbHJlYWR5IG93bmVkIGJ5IHRoZVxuICAvLyB3YWxsZXQ7IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHRoZSB3YWxsZXQgaXRzZWxmLiBXUCBpc3N1ZXMgdGhlc2VcbiAgLy8gd2l0aCBpbnRlbnRUeXBlICdpbXBvcnQnIChQLWNoYWluKSBvciAnaW1wb3J0dG9jJyAoQy1jaGFpbikuXG4gICdpbXBvcnQnLFxuICAnaW1wb3J0dG9jJyxcblxuICAvLyBTT0w6IGRlYWN0aXZhdGUgc3Rha2UgYWNjb3VudCDigJQgbm8gb24tY2hhaW4gdHJhbnNmZXIgcmVjaXBpZW50LlxuICAnZGVhY3RpdmF0ZScsXG5cbiAgLy8gU09MOiBhdXRob3JpemUgc3Rha2UgYWNjb3VudCDigJQgbm8gdHJhbnNmZXIgcmVjaXBpZW50LlxuICAnYXV0aG9yaXplJyxcbl0pO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBlZmZlY3RpdmUgdHhQYXJhbXMgZm9yIFRTUyBzaWduaW5nIHJlY2lwaWVudCB2ZXJpZmljYXRpb24uXG4gKlxuICogRm9yIHNtYXJ0IGNvbnRyYWN0IGludGVyYWN0aW9ucywgcmVjaXBpZW50cyBsaXZlIGluIHR4UmVxdWVzdC5pbnRlbnQucmVjaXBpZW50c1xuICogKG5hdGl2ZSBhbW91bnQgPSAwLCBzbyBidWlsZFBhcmFtcyBpcyBlbXB0eSkuIEZhbGxzIGJhY2sgdG8gaW50ZW50IHJlY2lwaWVudHNcbiAqIG1hcHBlZCB0byBJVHJhbnNhY3Rpb25SZWNpcGllbnQgc2hhcGUgd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGlzIGFic2VudC5cbiAqXG4gKiB0b2tlbk5hbWUgaXMgZGVyaXZlZCBmcm9tIHRva2VuRGF0YS50b2tlbk5hbWUgd2hlbiBwcmVzZW50LCBvdGhlcndpc2UgZnJvbVxuICogYW1vdW50LnN5bWJvbCB3aGVuIGNoYWluTmFtZSBpcyBwcm92aWRlZCBhbmQgc3ltYm9sIGRpZmZlcnMgZnJvbSBpdC5cbiAqXG4gKiBTdGFraW5nIGludGVudHMgKEJTQyBkZWxlZ2F0ZS91bmRlbGVnYXRlLCBDRUxPIHN0YWtlL3Vuc3Rha2UsIGV0Yy4pIGFyZVxuICogaWRlbnRpZmllZCBnZW5lcmljYWxseSBieSB0aGUgcHJlc2VuY2Ugb2YgYHN0YWtpbmdSZXF1ZXN0SWRgIG9uIHRoZSBpbnRlbnQg4oCUXG4gKiBhIHJlcXVpcmVkIGZpZWxkIG9uIEJhc2VTdGFrZUludGVudCBpbiBAYml0Z28vcHVibGljLXR5cGVzLiBUaGVzZSBpbnRlbnRzXG4gKiBoYXZlIG5vIHR4UGFyYW1zIHJlY2lwaWVudHMgYnkgZGVzaWduOyB2YWxpZGF0aW9uIGlzIGRvbmUgYXQgdGhlIGNvaW4gbGF5ZXIuXG4gKlxuICogVGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGlmIG5vIHJlY2lwaWVudHMgY2FuIGJlIHJlc29sdmVkIGFuZCB0aGVcbiAqIHRyYW5zYWN0aW9uIGlzIG5vdCBhIGtub3duIG5vLXJlY2lwaWVudCB0eXBlLlxuICpcbiAqIEBwYXJhbSB0eFJlcXVlc3QgLSB0aGUgdHJhbnNhY3Rpb24gcmVxdWVzdCBjb250YWluaW5nIHRoZSBwZXJzaXN0ZWQgaW50ZW50XG4gKiBAcGFyYW0gdHhQYXJhbXMgLSB0aGUgY2FsbGVyLXN1cHBsaWVkIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgKG1heSBiZSB1bmRlZmluZWQpXG4gKiBAcGFyYW0gY2hhaW5OYW1lIC0gdGhlIGJhc2UgY2hhaW4gbmFtZSAoZS5nLiAnc29sJywgJ3Rzb2wnKSB1c2VkIHRvIGV4Y2x1ZGVcbiAqICAgbmF0aXZlLWNvaW4gdHJhbnNmZXJzIGZyb20gdG9rZW5OYW1lOyBwYXNzIGJhc2VDb2luLmdldENoYWluKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyhcbiAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyB8IHVuZGVmaW5lZCxcbiAgY2hhaW5OYW1lPzogc3RyaW5nXG4pOiBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIGNvbnN0IGludGVudFJlY2lwaWVudHMgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5yZWNpcGllbnRzPy5tYXAoKGludGVudFJlY2lwaWVudCkgPT4ge1xuICAgIC8vIFByZWZlciB0b2tlbkRhdGEudG9rZW5OYW1lOyBmYWxsIGJhY2sgdG8gYW1vdW50LnN5bWJvbCB3aGVuIGNoYWluTmFtZSBpc1xuICAgIC8vIHByb3ZpZGVkIGFuZCBkaWZmZXJzIGZyb20gaXQuIFdoZW4gYWJzZW50LCBza2lwIHRoZSBzeW1ib2wgZmFsbGJhY2suXG4gICAgY29uc3QgeyBzeW1ib2wgfSA9IGludGVudFJlY2lwaWVudC5hbW91bnQ7XG4gICAgY29uc3QgdG9rZW5OYW1lID1cbiAgICAgIGludGVudFJlY2lwaWVudC50b2tlbkRhdGE/LnRva2VuTmFtZSB8fFxuICAgICAgKGNoYWluTmFtZSAhPT0gdW5kZWZpbmVkICYmIHN5bWJvbCAmJiBzeW1ib2wgIT09IGNoYWluTmFtZSA/IHN5bWJvbCA6IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGludGVudFJlY2lwaWVudC5hZGRyZXNzLmFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGludGVudFJlY2lwaWVudC5hbW91bnQudmFsdWUsXG4gICAgICBkYXRhOiBpbnRlbnRSZWNpcGllbnQuZGF0YSxcbiAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgZWZmZWN0aXZlVHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zID0ge1xuICAgIC4uLnR4UGFyYW1zLFxuICAgIHJlY2lwaWVudHM6IHR4UGFyYW1zPy5yZWNpcGllbnRzPy5sZW5ndGggPyB0eFBhcmFtcy5yZWNpcGllbnRzIDogaW50ZW50UmVjaXBpZW50cyxcbiAgfTtcblxuICAvLyBGYWxsIGJhY2sgdG8gaW50ZW50LmludGVudFR5cGUgd2hlbiB0eFBhcmFtcy50eXBlIGlzIG5vdCBleHBsaWNpdGx5IHNldC5cbiAgLy8gU3Rha2luZyB3YWxsZXRzIGNhbGwgc2lnblRyYW5zYWN0aW9uIHdpdGhvdXQgdHhQYXJhbXMsIHNvIHRoZSB0eXBlIGxpdmVzIG9ubHkgaW4gdGhlIGludGVudC5cbiAgY29uc3QgdHhUeXBlID0gZWZmZWN0aXZlVHhQYXJhbXMudHlwZSA/PyAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5pbnRlbnRUeXBlID8/ICcnO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgcmVzb2x2ZWQgdHlwZSBzbyBkb3duc3RyZWFtIGNhbGxlcnNcbiAgaWYgKCFlZmZlY3RpdmVUeFBhcmFtcy50eXBlICYmIHR4VHlwZSkge1xuICAgIGVmZmVjdGl2ZVR4UGFyYW1zLnR5cGUgPSB0eFR5cGU7XG4gIH1cblxuICAvLyBQcm9wYWdhdGUgc3Rha2luZ1JlcXVlc3RJZCBmcm9tIGludGVudCBpbnRvIGVmZmVjdGl2ZVR4UGFyYW1zIHNvIHZlcmlmeVRzc1RyYW5zYWN0aW9uXG4gIC8vIG92ZXJyaWRlcyBjYW4gYnlwYXNzIHRoZSBuby1yZWNpcGllbnQgZ3VhcmQgd2l0aG91dCBuZWVkaW5nIGFjY2VzcyB0byB0eFJlcXVlc3QgZGlyZWN0bHkuXG4gIGNvbnN0IGludGVudFN0YWtpbmdSZXF1ZXN0SWQgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5zdGFraW5nUmVxdWVzdElkO1xuICBpZiAoaW50ZW50U3Rha2luZ1JlcXVlc3RJZCAmJiAhZWZmZWN0aXZlVHhQYXJhbXMuc3Rha2luZ1JlcXVlc3RJZCkge1xuICAgIGVmZmVjdGl2ZVR4UGFyYW1zLnN0YWtpbmdSZXF1ZXN0SWQgPSBpbnRlbnRTdGFraW5nUmVxdWVzdElkO1xuICB9XG5cbiAgLy8gQWxsIHN0YWtpbmcgaW50ZW50cyAoQlNDIGRlbGVnYXRlL3VuZGVsZWdhdGUsIENFTE8gc3Rha2UvdW5zdGFrZSwgZXRjLikgY2FycnlcbiAgLy8gc3Rha2luZ1JlcXVlc3RJZCBhcyBhIHJlcXVpcmVkIGZpZWxkIG9uIEJhc2VTdGFrZUludGVudCAoQGJpdGdvL3B1YmxpYy10eXBlcykuXG4gIC8vIFVzZSBpdHMgcHJlc2VuY2UgYXMgYSBnZW5lcmljIHN0YWtpbmcgc2lnbmFsIOKAlCBubyBuZWVkIHRvIGVudW1lcmF0ZSBldmVyeSBpbnRlbnRUeXBlLlxuICBjb25zdCBpc1N0YWtpbmdJbnRlbnQgPSAhISh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LnN0YWtpbmdSZXF1ZXN0SWQ7XG5cbiAgLy8gYnVpbGRQYXJhbXMudHlwZSBmcm9tIHRoZSB3YWxsZXQgVUkgaXMgUGFzY2FsQ2FzZSAoJ0ltcG9ydCcpOyBpbnRlbnQuaW50ZW50VHlwZSBmcm9tIFdQXG4gIC8vIGlzIGxvd2VyY2FzZSAoJ2ltcG9ydCcpLiBFaXRoZXIgbWF5IGJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZGVwZW5kaW5nIG9uIHRoZSBzaWduaW5nIHBhdGguXG4gIGNvbnN0IGludGVudFR5cGUgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5pbnRlbnRUeXBlID8/ICcnO1xuXG4gIGlmIChcbiAgICAhZWZmZWN0aXZlVHhQYXJhbXMucmVjaXBpZW50cz8ubGVuZ3RoICYmXG4gICAgIWlzU3Rha2luZ0ludGVudCAmJlxuICAgICFOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHR4VHlwZSkgJiZcbiAgICAhTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyhpbnRlbnRUeXBlKVxuICApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAnUmVjaXBpZW50IGRldGFpbHMgYXJlIHJlcXVpcmVkIHRvIHZlcmlmeSB0aGlzIHRyYW5zYWN0aW9uIGJlZm9yZSBzaWduaW5nLiBQYXNzIHR4UGFyYW1zIHdpdGggYXQgbGVhc3Qgb25lIHJlY2lwaWVudC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBlZmZlY3RpdmVUeFBhcmFtcztcbn1cbiJdfQ==
@@ -30,6 +30,10 @@ export declare const BuildParamsUTXO: t.PartialC<{
30
30
  address: t.StringC;
31
31
  }>>;
32
32
  qr: t.BooleanC;
33
+ /**
34
+ * how to resolve a Unified Address recipient for zec.
35
+ */
36
+ unifiedRecipientPreference: t.UnionC<[t.LiteralC<"shielded">, t.LiteralC<"transparent">]>;
33
37
  }>;
34
38
  export declare const BuildParamsStacks: t.PartialC<{
35
39
  contractName: t.UnknownC;
@@ -100,6 +104,10 @@ export declare const BuildParams: t.ExactC<t.IntersectionC<[t.PartialC<{
100
104
  address: t.StringC;
101
105
  }>>;
102
106
  qr: t.BooleanC;
107
+ /**
108
+ * how to resolve a Unified Address recipient for zec.
109
+ */
110
+ unifiedRecipientPreference: t.UnionC<[t.LiteralC<"shielded">, t.LiteralC<"transparent">]>;
103
111
  }>, t.PartialC<{
104
112
  contractName: t.UnknownC;
105
113
  functionName: t.UnknownC;
@@ -1 +1 @@
1
- {"version":3,"file":"BuildParams.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/BuildParams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB;;;;;EAK7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAErE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkFvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AACvD,eAAO,MAAM,cAAc,UAAkC,CAAC"}
1
+ {"version":3,"file":"BuildParams.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/BuildParams.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAI3B,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+B1B;;OAEG;;EAEH,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB;;;;;EAK7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAErE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;IAlDtB;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkIJ,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AACvD,eAAO,MAAM,cAAc,UAAkC,CAAC"}