@bitgo-beta/sdk-core 8.2.1-beta.482 → 8.2.1-beta.483

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.
@@ -1,14 +1,19 @@
1
- import { BitgoToOVC1Round1Response, BitgoToOVC1Round2Response, BitgoToOVC1Round3Response, OVC1ToBitgoRound3Payload, OVC2ToBitgoRound1Payload, OVC2ToBitgoRound2Payload } from '@bitgo/public-types';
1
+ import { BitgoToOVC1Round1Response, BitgoToOVC1Round2Response, BitgoToOVC1Round3Response, MPCv2KeyGenRound1Response, MPCv2KeyGenRound2Response, MPCv2KeyGenRound3Response, OVC1ToBitgoRound3Payload, OVC2ToBitgoRound1Payload, OVC2ToBitgoRound2Payload } from '@bitgo/public-types';
2
2
  import { IBaseCoin } from '../../../../baseCoin';
3
3
  import { BitGoBase } from '../../../../bitgoBase';
4
4
  import { Keychain } from '../../../..';
5
+ import { EcdsaMPCv2KeyGenSendFn } from '../ecdsaMPCv2KeyGenSender';
5
6
  export declare class MPCv2SMCUtils {
7
+ private bitgo;
6
8
  private baseCoin;
7
9
  private MPCv2Utils;
8
10
  constructor(bitgo: BitGoBase, baseCoin: IBaseCoin);
9
11
  keyGenRound1(enterprise: string, payload: OVC2ToBitgoRound1Payload): Promise<BitgoToOVC1Round1Response>;
10
12
  keyGenRound2(enterprise: string, payload: OVC2ToBitgoRound2Payload): Promise<BitgoToOVC1Round2Response>;
11
13
  keyGenRound3(enterprise: string, payload: OVC1ToBitgoRound3Payload): Promise<BitgoToOVC1Round3Response>;
14
+ keyGenRound1BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound1Response>, payload: OVC2ToBitgoRound1Payload): Promise<BitgoToOVC1Round1Response>;
15
+ keyGenRound2BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound2Response>, payload: OVC2ToBitgoRound2Payload): Promise<BitgoToOVC1Round2Response>;
16
+ keyGenRound3BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound3Response>, payload: OVC1ToBitgoRound3Payload): Promise<BitgoToOVC1Round3Response>;
12
17
  uploadClientKeys(bitgoKeyId: string, userCommonKeychain: string, backupCommonKeychain: string): Promise<{
13
18
  userKeychain: Keychain;
14
19
  backupKeychain: Keychain;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/bitgo/utils/tss/ecdsa/SMC/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAEzB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,aAAa;IAGM,OAAO,CAAC,QAAQ;IAF9C,OAAO,CAAC,UAAU,CAAkB;gBAExB,KAAK,EAAE,SAAS,EAAU,QAAQ,EAAE,SAAS;IAI5C,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA2CvG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA0CvG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4CvG,gBAAgB,CAC3B,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,cAAc,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAA;KAAE,CAAC;CA8B1F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/bitgo/utils/tss/ecdsa/SMC/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAEzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAA6B,MAAM,2BAA2B,CAAC;AAE9F,qBAAa,aAAa;IAGZ,OAAO,CAAC,KAAK;IAAa,OAAO,CAAC,QAAQ;IAFtD,OAAO,CAAC,UAAU,CAAkB;gBAEhB,KAAK,EAAE,SAAS,EAAU,QAAQ,EAAE,SAAS;IAIpD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIvG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIvG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIvG,oBAAoB,CAC/B,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,yBAAyB,CAAC;IA2CxB,oBAAoB,CAC/B,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,yBAAyB,CAAC;IA0CxB,oBAAoB,CAC/B,QAAQ,EAAE,sBAAsB,CAAC,yBAAyB,CAAC,EAC3D,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,yBAAyB,CAAC;IA4CxB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,cAAc,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAA;KAAE,CAAC;CA8B1F"}
@@ -8,12 +8,23 @@ const assert_1 = __importDefault(require("assert"));
8
8
  const public_types_1 = require("@bitgo/public-types");
9
9
  const ecdsaMPCv2_1 = require("../ecdsaMPCv2");
10
10
  const __1 = require("../../../..");
11
+ const ecdsaMPCv2KeyGenSender_1 = require("../ecdsaMPCv2KeyGenSender");
11
12
  class MPCv2SMCUtils {
12
13
  constructor(bitgo, baseCoin) {
14
+ this.bitgo = bitgo;
13
15
  this.baseCoin = baseCoin;
14
16
  this.MPCv2Utils = new ecdsaMPCv2_1.EcdsaMPCv2Utils(bitgo, baseCoin);
15
17
  }
16
18
  async keyGenRound1(enterprise, payload) {
19
+ return this.keyGenRound1BySender((0, ecdsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, enterprise), payload);
20
+ }
21
+ async keyGenRound2(enterprise, payload) {
22
+ return this.keyGenRound2BySender((0, ecdsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, enterprise), payload);
23
+ }
24
+ async keyGenRound3(enterprise, payload) {
25
+ return this.keyGenRound3BySender((0, ecdsaMPCv2KeyGenSender_1.KeyGenSenderForEnterprise)(this.bitgo, enterprise), payload);
26
+ }
27
+ async keyGenRound1BySender(senderFn, payload) {
17
28
  (0, assert_1.default)(payload.state === public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound1Data, `Invalid state for round 1, expected: ${public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound1Data}, got: ${payload.state}`);
18
29
  (0, __1.decodeOrElse)(public_types_1.OVC2ToBitgoRound1Payload.name, public_types_1.OVC2ToBitgoRound1Payload, payload, (errors) => {
19
30
  throw new Error(`error(s) parsing payload: ${errors}`);
@@ -23,7 +34,7 @@ class MPCv2SMCUtils {
23
34
  const userGpgPublicKey = ovc1.gpgPubKey;
24
35
  const backupGpgPublicKey = ovc2.gpgPubKey;
25
36
  const messages = { p2pMessages: [], broadcastMessages: [ovc1.ovcMsg1, ovc2.ovcMsg1] };
26
- const result = await this.MPCv2Utils.sendKeyGenerationRound1(enterprise, userGpgPublicKey, backupGpgPublicKey, messages);
37
+ const result = await this.MPCv2Utils.sendKeyGenerationRound1BySender(senderFn, userGpgPublicKey, backupGpgPublicKey, messages);
27
38
  const response = {
28
39
  state: public_types_1.KeyCreationMPCv2StateEnum.WaitingForOVC1Round2Data,
29
40
  tssVersion: payload.tssVersion,
@@ -44,7 +55,7 @@ class MPCv2SMCUtils {
44
55
  throw new Error(`error(s) parsing response: ${errors}`);
45
56
  });
46
57
  }
47
- async keyGenRound2(enterprise, payload) {
58
+ async keyGenRound2BySender(senderFn, payload) {
48
59
  (0, assert_1.default)(payload.state === public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound2Data, `Invalid state for round 2, expected: ${public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound2Data}, got: ${payload.state}`);
49
60
  (0, __1.decodeOrElse)(public_types_1.OVC2ToBitgoRound2Payload.name, public_types_1.OVC2ToBitgoRound2Payload, payload, (errors) => {
50
61
  throw new Error(`error(s) parsing payload: ${errors}`);
@@ -53,7 +64,7 @@ class MPCv2SMCUtils {
53
64
  const ovc2 = payload.ovc[public_types_1.OVCIndexEnum.TWO];
54
65
  const sessionId = payload.platform.sessionId;
55
66
  const messages = { p2pMessages: [ovc1.ovcToBitgoMsg2, ovc2.ovcToBitgoMsg2], broadcastMessages: [] };
56
- const result = await this.MPCv2Utils.sendKeyGenerationRound2(enterprise, sessionId, messages);
67
+ const result = await this.MPCv2Utils.sendKeyGenerationRound2BySender(senderFn, sessionId, messages);
57
68
  const response = {
58
69
  state: public_types_1.KeyCreationMPCv2StateEnum.WaitingForOVC1Round3aData,
59
70
  tssVersion: payload.tssVersion,
@@ -80,7 +91,7 @@ class MPCv2SMCUtils {
80
91
  throw new Error(`error(s) parsing response: ${errors}`);
81
92
  });
82
93
  }
83
- async keyGenRound3(enterprise, payload) {
94
+ async keyGenRound3BySender(senderFn, payload) {
84
95
  (0, assert_1.default)(payload.state === public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound3Data, `Invalid state for round 3, expected: ${public_types_1.KeyCreationMPCv2StateEnum.WaitingForBitgoRound3Data}, got: ${payload.state}`);
85
96
  (0, __1.decodeOrElse)(public_types_1.OVC1ToBitgoRound3Payload.name, public_types_1.OVC1ToBitgoRound3Payload, payload, (errors) => {
86
97
  throw new Error(`error(s) parsing payload: ${errors}`);
@@ -92,7 +103,7 @@ class MPCv2SMCUtils {
92
103
  p2pMessages: [ovc1.ovcToBitgoMsg3, ovc2.ovcToBitgoMsg3],
93
104
  broadcastMessages: [ovc1.ovcMsg4, ovc2.ovcMsg4],
94
105
  };
95
- const result = await this.MPCv2Utils.sendKeyGenerationRound3(enterprise, sessionId, messages);
106
+ const result = await this.MPCv2Utils.sendKeyGenerationRound3BySender(senderFn, sessionId, messages);
96
107
  const keychains = this.baseCoin.keychains();
97
108
  const bitgoKeychain = await keychains.add({
98
109
  source: 'bitgo',
@@ -143,4 +154,4 @@ class MPCv2SMCUtils {
143
154
  }
144
155
  }
145
156
  exports.MPCv2SMCUtils = MPCv2SMCUtils;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL1NNQy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsc0RBUzZCO0FBRzdCLDhDQUFnRDtBQUNoRCxtQ0FBcUQ7QUFFckQsTUFBYSxhQUFhO0lBR3hCLFlBQVksS0FBZ0IsRUFBVSxRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQixFQUFFLE9BQWlDO1FBQzdFLElBQUEsZ0JBQU0sRUFDSixPQUFPLENBQUMsS0FBSyxLQUFLLHdDQUF5QixDQUFDLHlCQUF5QixFQUNyRSx3Q0FBd0Msd0NBQXlCLENBQUMseUJBQXlCLFVBQVUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUNySCxDQUFDO1FBQ0YsSUFBQSxnQkFBWSxFQUFDLHVDQUF3QixDQUFDLElBQUksRUFBRSx1Q0FBd0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN4RixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FB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QUUsc0NBQXNDLENBQUMsQ0FBQztRQUM3RSxJQUFBLGdCQUFNLEVBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3ZGLElBQUEsZ0JBQU0sRUFBQyxhQUFhLENBQUMsY0FBYyxLQUFLLGtCQUFrQixFQUFFLHFEQUFxRCxDQUFDLENBQUM7UUFFbkgsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQzFDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQTFLRCxzQ0EwS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBCaXRnb1RvT1ZDMVJvdW5kMVJlc3BvbnNlLFxuICBCaXRnb1RvT1ZDMVJvdW5kMlJlc3BvbnNlLFxuICBCaXRnb1RvT1ZDMVJvdW5kM1Jlc3BvbnNlLFxuICBLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLFxuICBPVkMxVG9CaXRnb1JvdW5kM1BheWxvYWQsXG4gIE9WQzJUb0JpdGdvUm91bmQxUGF5bG9hZCxcbiAgT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkLFxuICBPVkNJbmRleEVudW0sXG59IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgSUJhc2VDb2luIH0gZnJvbSAnLi4vLi4vLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEVjZHNhTVBDdjJVdGlscyB9IGZyb20gJy4uL2VjZHNhTVBDdjInO1xuaW1wb3J0IHsgZGVjb2RlT3JFbHNlLCBLZXljaGFpbiB9IGZyb20gJy4uLy4uLy4uLy4uJztcblxuZXhwb3J0IGNsYXNzIE1QQ3YyU01DVXRpbHMge1xuICBwcml2YXRlIE1QQ3YyVXRpbHM6IEVjZHNhTVBDdjJVdGlscztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBwcml2YXRlIGJhc2VDb2luOiBJQmFzZUNvaW4pIHtcbiAgICB0aGlzLk1QQ3YyVXRpbHMgPSBuZXcgRWNkc2FNUEN2MlV0aWxzKGJpdGdvLCBiYXNlQ29pbik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMga2V5R2VuUm91bmQxKGVudGVycHJpc2U6IHN0cmluZywgcGF5bG9hZDogT1ZDMlRvQml0Z29Sb3VuZDFQYXlsb2FkKTogUHJvbWlzZTxCaXRnb1RvT1ZDMVJvdW5kMVJlc3BvbnNlPiB7XG4gICAgYXNzZXJ0KFxuICAgICAgcGF5bG9hZC5zdGF0ZSA9PT0gS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yQml0Z29Sb3VuZDFEYXRhLFxuICAgICAgYEludmFsaWQgc3RhdGUgZm9yIHJvdW5kIDEsIGV4cGVjdGVkOiAke0tleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0ZvckJpdGdvUm91bmQxRGF0YX0sIGdvdDogJHtwYXlsb2FkLnN0YXRlfWBcbiAgICApO1xuICAgIGRlY29kZU9yRWxzZShPVkMyVG9CaXRnb1JvdW5kMVBheWxvYWQubmFtZSwgT1ZDMlRvQml0Z29Sb3VuZDFQYXlsb2FkLCBwYXlsb2FkLCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcGF5bG9hZDogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBvdmMxID0gcGF5bG9hZC5vdmNbT1ZDSW5kZXhFbnVtLk9ORV07XG4gICAgY29uc3Qgb3ZjMiA9IHBheWxvYWQub3ZjW09WQ0luZGV4RW51bS5UV09dO1xuICAgIGNvbnN0IHVzZXJHcGdQdWJsaWNLZXkgPSBvdmMxLmdwZ1B1YktleTtcbiAgICBjb25zdCBiYWNrdXBHcGdQdWJsaWNLZXkgPSBvdmMyLmdwZ1B1YktleTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHsgcDJwTWVzc2FnZXM6IFtdLCBicm9hZGNhc3RNZXNzYWdlczogW292YzEub3ZjTXNnMSwgb3ZjMi5vdmNNc2cxXSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuTVBDdjJVdGlscy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMShcbiAgICAgIGVudGVycHJpc2UsXG4gICAgICB1c2VyR3BnUHVibGljS2V5LFxuICAgICAgYmFja3VwR3BnUHVibGljS2V5LFxuICAgICAgbWVzc2FnZXNcbiAgICApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBzdGF0ZTogS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yT1ZDMVJvdW5kMkRhdGEsXG4gICAgICB0c3NWZXJzaW9uOiBwYXlsb2FkLnRzc1ZlcnNpb24sXG4gICAgICB3YWxsZXRUeXBlOiBwYXlsb2FkLndhbGxldFR5cGUsXG4gICAgICBjb2luOiBwYXlsb2FkLmNvaW4sXG4gICAgICBvdmM6IHBheWxvYWQub3ZjLFxuICAgICAgcGxhdGZvcm06IHtcbiAgICAgICAgd2FsbGV0R3BnUHViS2V5U2lnczogcmVzdWx0LndhbGxldEdwZ1B1YktleVNpZ3MsXG4gICAgICAgIHNlc3Npb25JZDogcmVzdWx0LnNlc3Npb25JZCxcbiAgICAgICAgYml0Z29Nc2cxOiB0aGlzLk1QQ3YyVXRpbHMuZm9ybWF0Qml0Z29Ccm9hZGNhc3RNZXNzYWdlKHJlc3VsdC5iaXRnb01zZzEpLFxuICAgICAgICBvdmM6IHtcbiAgICAgICAgICBbT1ZDSW5kZXhFbnVtLk9ORV06IHsgYml0Z29Ub092Y01zZzI6IHRoaXMuTVBDdjJVdGlscy5mb3JtYXRQMlBNZXNzYWdlKHJlc3VsdC5iaXRnb1RvVXNlck1zZzIpIH0sXG4gICAgICAgICAgW09WQ0luZGV4RW51bS5UV09dOiB7IGJpdGdvVG9PdmNNc2cyOiB0aGlzLk1QQ3YyVXRpbHMuZm9ybWF0UDJQTWVzc2FnZShyZXN1bHQuYml0Z29Ub0JhY2t1cE1zZzIpIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKEJpdGdvVG9PVkMxUm91bmQxUmVzcG9uc2UubmFtZSwgQml0Z29Ub09WQzFSb3VuZDFSZXNwb25zZSwgcmVzcG9uc2UsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMga2V5R2VuUm91bmQyKGVudGVycHJpc2U6IHN0cmluZywgcGF5bG9hZDogT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkKTogUHJvbWlzZTxCaXRnb1RvT1ZDMVJvdW5kMlJlc3BvbnNlPiB7XG4gICAgYXNzZXJ0KFxuICAgICAgcGF5bG9hZC5zdGF0ZSA9PT0gS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yQml0Z29Sb3VuZDJEYXRhLFxuICAgICAgYEludmFsaWQgc3RhdGUgZm9yIHJvdW5kIDIsIGV4cGVjdGVkOiAke0tleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0ZvckJpdGdvUm91bmQyRGF0YX0sIGdvdDogJHtwYXlsb2FkLnN0YXRlfWBcbiAgICApO1xuICAgIGRlY29kZU9yRWxzZShPVkMyVG9CaXRnb1JvdW5kMlBheWxvYWQubmFtZSwgT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkLCBwYXlsb2FkLCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcGF5bG9hZDogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZjMSA9IHBheWxvYWQub3ZjW09WQ0luZGV4RW51bS5PTkVdO1xuICAgIGNvbnN0IG92YzIgPSBwYXlsb2FkLm92Y1tPVkNJbmRleEVudW0uVFdPXTtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBwYXlsb2FkLnBsYXRmb3JtLnNlc3Npb25JZDtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHsgcDJwTWVzc2FnZXM6IFtvdmMxLm92Y1RvQml0Z29Nc2cyLCBvdmMyLm92Y1RvQml0Z29Nc2cyXSwgYnJvYWRjYXN0TWVzc2FnZXM6IFtdIH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5NUEN2MlV0aWxzLnNlbmRLZXlHZW5lcmF0aW9uUm91bmQyKGVudGVycHJpc2UsIHNlc3Npb25JZCwgbWVzc2FnZXMpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBzdGF0ZTogS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yT1ZDMVJvdW5kM2FEYXRhLFxuICAgICAgdHNzVmVyc2lvbjogcGF5bG9hZC50c3NWZXJzaW9uLFxuICAgICAgd2FsbGV0VHlwZTogcGF5bG9hZC53YWxsZXRUeXBlLFxuICAgICAgY29pbjogcGF5bG9hZC5jb2luLFxuICAgICAgb3ZjOiBwYXlsb2FkLm92YyxcbiAgICAgIHBsYXRmb3JtOiB7XG4gICAgICAgIC4uLnBheWxvYWQucGxhdGZvcm0sXG4gICAgICAgIHNlc3Npb25JZDogcmVzdWx0LnNlc3Npb25JZCxcbiAgICAgICAgYml0Z29Db21taXRtZW50MjogcmVzdWx0LmJpdGdvQ29tbWl0bWVudDIsXG4gICAgICAgIG92Yzoge1xuICAgICAgICAgIFtPVkNJbmRleEVudW0uT05FXToge1xuICAgICAgICAgICAgLi4ucGF5bG9hZC5wbGF0Zm9ybS5vdmNbT1ZDSW5kZXhFbnVtLk9ORV0sXG4gICAgICAgICAgICBiaXRnb1RvT3ZjTXNnMzogdGhpcy5NUEN2MlV0aWxzLmZvcm1hdFAyUE1lc3NhZ2UocmVzdWx0LmJpdGdvVG9Vc2VyTXNnMyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT1ZDSW5kZXhFbnVtLlRXT106IHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQucGxhdGZvcm0ub3ZjW09WQ0luZGV4RW51bS5UV09dLFxuICAgICAgICAgICAgYml0Z29Ub092Y01zZzM6IHRoaXMuTVBDdjJVdGlscy5mb3JtYXRQMlBNZXNzYWdlKHJlc3VsdC5iaXRnb1RvQmFja3VwTXNnMyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBkZWNvZGVPckVsc2UoQml0Z29Ub09WQzFSb3VuZDJSZXNwb25zZS5uYW1lLCBCaXRnb1RvT1ZDMVJvdW5kMlJlc3BvbnNlLCByZXNwb25zZSwgKGVycm9ycykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIHJlc3BvbnNlOiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBrZXlHZW5Sb3VuZDMoZW50ZXJwcmlzZTogc3RyaW5nLCBwYXlsb2FkOiBPVkMxVG9CaXRnb1JvdW5kM1BheWxvYWQpOiBQcm9taXNlPEJpdGdvVG9PVkMxUm91bmQzUmVzcG9uc2U+IHtcbiAgICBhc3NlcnQoXG4gICAgICBwYXlsb2FkLnN0YXRlID09PSBLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLldhaXRpbmdGb3JCaXRnb1JvdW5kM0RhdGEsXG4gICAgICBgSW52YWxpZCBzdGF0ZSBmb3Igcm91bmQgMywgZXhwZWN0ZWQ6ICR7S2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yQml0Z29Sb3VuZDNEYXRhfSwgZ290OiAke3BheWxvYWQuc3RhdGV9YFxuICAgICk7XG4gICAgZGVjb2RlT3JFbHNlKE9WQzFUb0JpdGdvUm91bmQzUGF5bG9hZC5uYW1lLCBPVkMxVG9CaXRnb1JvdW5kM1BheWxvYWQsIHBheWxvYWQsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyBwYXlsb2FkOiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgICBjb25zdCBvdmMxID0gcGF5bG9hZC5vdmNbT1ZDSW5kZXhFbnVtLk9ORV07XG4gICAgY29uc3Qgb3ZjMiA9IHBheWxvYWQub3ZjW09WQ0luZGV4RW51bS5UV09dO1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IHBheWxvYWQucGxhdGZvcm0uc2Vzc2lvbklkO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0ge1xuICAgICAgcDJwTWVzc2FnZXM6IFtvdmMxLm92Y1RvQml0Z29Nc2czLCBvdmMyLm92Y1RvQml0Z29Nc2czXSxcbiAgICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbb3ZjMS5vdmNNc2c0LCBvdmMyLm92Y01zZzRdLFxuICAgIH07XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5NUEN2MlV0aWxzLnNlbmRLZXlHZW5lcmF0aW9uUm91bmQzKGVudGVycHJpc2UsIHNlc3Npb25JZCwgbWVzc2FnZXMpO1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCBiaXRnb0tleWNoYWluID0gYXdhaXQga2V5Y2hhaW5zLmFkZCh7XG4gICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICBrZXlUeXBlOiAndHNzJyxcbiAgICAgIGNvbW1vbktleWNoYWluOiByZXN1bHQuY29tbW9uS2V5Y2hhaW4sXG4gICAgICBpc01QQ3YyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBzdGF0ZTogS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yT1ZDMUdlbmVyYXRlS2V5LFxuICAgICAgYml0R29LZXlJZDogYml0Z29LZXljaGFpbi5pZCxcbiAgICAgIHRzc1ZlcnNpb246IHBheWxvYWQudHNzVmVyc2lvbixcbiAgICAgIHdhbGxldFR5cGU6IHBheWxvYWQud2FsbGV0VHlwZSxcbiAgICAgIGNvaW46IHBheWxvYWQuY29pbixcbiAgICAgIG92YzogcGF5bG9hZC5vdmMsXG4gICAgICBwbGF0Zm9ybToge1xuICAgICAgICAuLi5wYXlsb2FkLnBsYXRmb3JtLFxuICAgICAgICBjb21tb25LZXljaGFpbjogcmVzdWx0LmNvbW1vbktleWNoYWluLFxuICAgICAgICBiaXRnb01zZzQ6IHRoaXMuTVBDdjJVdGlscy5mb3JtYXRCaXRnb0Jyb2FkY2FzdE1lc3NhZ2UocmVzdWx0LmJpdGdvTXNnNCksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKEJpdGdvVG9PVkMxUm91bmQzUmVzcG9uc2UubmFtZSwgQml0Z29Ub09WQzFSb3VuZDNSZXNwb25zZSwgcmVzcG9uc2UsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBsb2FkQ2xpZW50S2V5cyhcbiAgICBiaXRnb0tleUlkOiBzdHJpbmcsXG4gICAgdXNlckNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gICAgYmFja3VwQ29tbW9uS2V5Y2hhaW46IHN0cmluZ1xuICApOiBQcm9taXNlPHsgdXNlcktleWNoYWluOiBLZXljaGFpbjsgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluOyBiaXRnb0tleWNoYWluOiBLZXljaGFpbiB9PiB7XG4gICAgYXNzZXJ0KFxuICAgICAgdXNlckNvbW1vbktleWNoYWluID09PSBiYWNrdXBDb21tb25LZXljaGFpbixcbiAgICAgICdDb21tb24ga2V5Y2hhaW4gbWlzbWF0Y2ggYmV0d2VlbiB0aGUgdXNlciBhbmQgYmFja3VwIGtleWNoYWlucydcbiAgICApO1xuXG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKTtcbiAgICBjb25zdCBiaXRnb0tleWNoYWluID0gYXdhaXQga2V5Y2hhaW5zLmdldCh7IGlkOiBiaXRnb0tleUlkIH0pO1xuICAgIGFzc2VydChiaXRnb0tleWNoYWluLCAnS2V5Y2hhaW4gbm90IGZvdW5kJyk7XG4gICAgYXNzZXJ0KGJpdGdvS2V5Y2hhaW4uc291cmNlID09PSAnYml0Z28nLCAnVGhlIGtleWNoYWluIGlzIG5vdCBhIEJpdEdvIGtleWNoYWluJyk7XG4gICAgYXNzZXJ0KGJpdGdvS2V5Y2hhaW4udHlwZSA9PT0gJ3RzcycsICdCaXRHbyBrZXljaGFpbiBpcyBub3QgYSBUU1Mga2V5Y2hhaW4nKTtcbiAgICBhc3NlcnQoYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbiwgJ0JpdEdvIGtleWNoYWluIGRvZXMgbm90IGhhdmUgYSBjb21tb24ga2V5Y2hhaW4nKTtcbiAgICBhc3NlcnQoYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbiA9PT0gdXNlckNvbW1vbktleWNoYWluLCAnQ29tbW9uIGtleWNoYWluIG1pc21hdGNoIGJldHdlZW4gdGhlIE9WQ3MgYW5kIEJpdEdvJyk7XG5cbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmFkZCh7XG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIGtleVR5cGU6ICd0c3MnLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IHVzZXJDb21tb25LZXljaGFpbixcbiAgICAgIGlzTVBDdjI6IHRydWUsXG4gICAgfSk7XG4gICAgY29uc3QgYmFja3VwS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmFkZCh7XG4gICAgICBzb3VyY2U6ICdiYWNrdXAnLFxuICAgICAga2V5VHlwZTogJ3RzcycsXG4gICAgICBjb21tb25LZXljaGFpbjogYmFja3VwQ29tbW9uS2V5Y2hhaW4sXG4gICAgICBpc01QQ3YyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW3VzZXJLZXljaGFpblByb21pc2UsIGJhY2t1cEtleWNoYWluUHJvbWlzZV0pO1xuICAgIHJldHVybiB7IHVzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4gfTtcbiAgfVxufVxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VjZHNhL1NNQy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsc0RBWTZCO0FBRzdCLDhDQUFnRDtBQUNoRCxtQ0FBcUQ7QUFDckQsc0VBQThGO0FBRTlGLE1BQWEsYUFBYTtJQUd4QixZQUFvQixLQUFnQixFQUFVLFFBQW1CO1FBQTdDLFVBQUssR0FBTCxLQUFLLENBQVc7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSw0QkFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQixFQUFFLE9BQWlDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUEsa0RBQXlCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQixFQUFFLE9BQWlDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUEsa0RBQXlCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQixFQUFFLE9BQWlDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUEsa0RBQXlCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUMvQixRQUEyRCxFQUMzRCxPQUFpQztRQUVqQyxJ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LG9CQUFvQjtZQUNwQyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQS9MRCxzQ0ErTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBCaXRnb1RvT1ZDMVJvdW5kMVJlc3BvbnNlLFxuICBCaXRnb1RvT1ZDMVJvdW5kMlJlc3BvbnNlLFxuICBCaXRnb1RvT1ZDMVJvdW5kM1Jlc3BvbnNlLFxuICBLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLFxuICBNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlLFxuICBNUEN2MktleUdlblJvdW5kMlJlc3BvbnNlLFxuICBNUEN2MktleUdlblJvdW5kM1Jlc3BvbnNlLFxuICBPVkMxVG9CaXRnb1JvdW5kM1BheWxvYWQsXG4gIE9WQzJUb0JpdGdvUm91bmQxUGF5bG9hZCxcbiAgT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkLFxuICBPVkNJbmRleEVudW0sXG59IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgSUJhc2VDb2luIH0gZnJvbSAnLi4vLi4vLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEVjZHNhTVBDdjJVdGlscyB9IGZyb20gJy4uL2VjZHNhTVBDdjInO1xuaW1wb3J0IHsgZGVjb2RlT3JFbHNlLCBLZXljaGFpbiB9IGZyb20gJy4uLy4uLy4uLy4uJztcbmltcG9ydCB7IEVjZHNhTVBDdjJLZXlHZW5TZW5kRm4sIEtleUdlblNlbmRlckZvckVudGVycHJpc2UgfSBmcm9tICcuLi9lY2RzYU1QQ3YyS2V5R2VuU2VuZGVyJztcblxuZXhwb3J0IGNsYXNzIE1QQ3YyU01DVXRpbHMge1xuICBwcml2YXRlIE1QQ3YyVXRpbHM6IEVjZHNhTVBDdjJVdGlscztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJpdGdvOiBCaXRHb0Jhc2UsIHByaXZhdGUgYmFzZUNvaW46IElCYXNlQ29pbikge1xuICAgIHRoaXMuTVBDdjJVdGlscyA9IG5ldyBFY2RzYU1QQ3YyVXRpbHMoYml0Z28sIGJhc2VDb2luKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBrZXlHZW5Sb3VuZDEoZW50ZXJwcmlzZTogc3RyaW5nLCBwYXlsb2FkOiBPVkMyVG9CaXRnb1JvdW5kMVBheWxvYWQpOiBQcm9taXNlPEJpdGdvVG9PVkMxUm91bmQxUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5rZXlHZW5Sb3VuZDFCeVNlbmRlcihLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlKHRoaXMuYml0Z28sIGVudGVycHJpc2UpLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBrZXlHZW5Sb3VuZDIoZW50ZXJwcmlzZTogc3RyaW5nLCBwYXlsb2FkOiBPVkMyVG9CaXRnb1JvdW5kMlBheWxvYWQpOiBQcm9taXNlPEJpdGdvVG9PVkMxUm91bmQyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5rZXlHZW5Sb3VuZDJCeVNlbmRlcihLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlKHRoaXMuYml0Z28sIGVudGVycHJpc2UpLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBrZXlHZW5Sb3VuZDMoZW50ZXJwcmlzZTogc3RyaW5nLCBwYXlsb2FkOiBPVkMxVG9CaXRnb1JvdW5kM1BheWxvYWQpOiBQcm9taXNlPEJpdGdvVG9PVkMxUm91bmQzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5rZXlHZW5Sb3VuZDNCeVNlbmRlcihLZXlHZW5TZW5kZXJGb3JFbnRlcnByaXNlKHRoaXMuYml0Z28sIGVudGVycHJpc2UpLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBrZXlHZW5Sb3VuZDFCeVNlbmRlcihcbiAgICBzZW5kZXJGbjogRWNkc2FNUEN2MktleUdlblNlbmRGbjxNUEN2MktleUdlblJvdW5kMVJlc3BvbnNlPixcbiAgICBwYXlsb2FkOiBPVkMyVG9CaXRnb1JvdW5kMVBheWxvYWRcbiAgKTogUHJvbWlzZTxCaXRnb1RvT1ZDMVJvdW5kMVJlc3BvbnNlPiB7XG4gICAgYXNzZXJ0KFxuICAgICAgcGF5bG9hZC5zdGF0ZSA9PT0gS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yQml0Z29Sb3VuZDFEYXRhLFxuICAgICAgYEludmFsaWQgc3RhdGUgZm9yIHJvdW5kIDEsIGV4cGVjdGVkOiAke0tleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0ZvckJpdGdvUm91bmQxRGF0YX0sIGdvdDogJHtwYXlsb2FkLnN0YXRlfWBcbiAgICApO1xuICAgIGRlY29kZU9yRWxzZShPVkMyVG9CaXRnb1JvdW5kMVBheWxvYWQubmFtZSwgT1ZDMlRvQml0Z29Sb3VuZDFQYXlsb2FkLCBwYXlsb2FkLCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcGF5bG9hZDogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBvdmMxID0gcGF5bG9hZC5vdmNbT1ZDSW5kZXhFbnVtLk9ORV07XG4gICAgY29uc3Qgb3ZjMiA9IHBheWxvYWQub3ZjW09WQ0luZGV4RW51bS5UV09dO1xuICAgIGNvbnN0IHVzZXJHcGdQdWJsaWNLZXkgPSBvdmMxLmdwZ1B1YktleTtcbiAgICBjb25zdCBiYWNrdXBHcGdQdWJsaWNLZXkgPSBvdmMyLmdwZ1B1YktleTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHsgcDJwTWVzc2FnZXM6IFtdLCBicm9hZGNhc3RNZXNzYWdlczogW292YzEub3ZjTXNnMSwgb3ZjMi5vdmNNc2cxXSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuTVBDdjJVdGlscy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMUJ5U2VuZGVyKFxuICAgICAgc2VuZGVyRm4sXG4gICAgICB1c2VyR3BnUHVibGljS2V5LFxuICAgICAgYmFja3VwR3BnUHVibGljS2V5LFxuICAgICAgbWVzc2FnZXNcbiAgICApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICBzdGF0ZTogS2V5Q3JlYXRpb25NUEN2MlN0YXRlRW51bS5XYWl0aW5nRm9yT1ZDMVJvdW5kMkRhdGEsXG4gICAgICB0c3NWZXJzaW9uOiBwYXlsb2FkLnRzc1ZlcnNpb24sXG4gICAgICB3YWxsZXRUeXBlOiBwYXlsb2FkLndhbGxldFR5cGUsXG4gICAgICBjb2luOiBwYXlsb2FkLmNvaW4sXG4gICAgICBvdmM6IHBheWxvYWQub3ZjLFxuICAgICAgcGxhdGZvcm06IHtcbiAgICAgICAgd2FsbGV0R3BnUHViS2V5U2lnczogcmVzdWx0LndhbGxldEdwZ1B1YktleVNpZ3MsXG4gICAgICAgIHNlc3Npb25JZDogcmVzdWx0LnNlc3Npb25JZCxcbiAgICAgICAgYml0Z29Nc2cxOiB0aGlzLk1QQ3YyVXRpbHMuZm9ybWF0Qml0Z29Ccm9hZGNhc3RNZXNzYWdlKHJlc3VsdC5iaXRnb01zZzEpLFxuICAgICAgICBvdmM6IHtcbiAgICAgICAgICBbT1ZDSW5kZXhFbnVtLk9ORV06IHsgYml0Z29Ub092Y01zZzI6IHRoaXMuTVBDdjJVdGlscy5mb3JtYXRQMlBNZXNzYWdlKHJlc3VsdC5iaXRnb1RvVXNlck1zZzIpIH0sXG4gICAgICAgICAgW09WQ0luZGV4RW51bS5UV09dOiB7IGJpdGdvVG9PdmNNc2cyOiB0aGlzLk1QQ3YyVXRpbHMuZm9ybWF0UDJQTWVzc2FnZShyZXN1bHQuYml0Z29Ub0JhY2t1cE1zZzIpIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKEJpdGdvVG9PVkMxUm91bmQxUmVzcG9uc2UubmFtZSwgQml0Z29Ub09WQzFSb3VuZDFSZXNwb25zZSwgcmVzcG9uc2UsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMga2V5R2VuUm91bmQyQnlTZW5kZXIoXG4gICAgc2VuZGVyRm46IEVjZHNhTVBDdjJLZXlHZW5TZW5kRm48TVBDdjJLZXlHZW5Sb3VuZDJSZXNwb25zZT4sXG4gICAgcGF5bG9hZDogT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkXG4gICk6IFByb21pc2U8Qml0Z29Ub09WQzFSb3VuZDJSZXNwb25zZT4ge1xuICAgIGFzc2VydChcbiAgICAgIHBheWxvYWQuc3RhdGUgPT09IEtleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0ZvckJpdGdvUm91bmQyRGF0YSxcbiAgICAgIGBJbnZhbGlkIHN0YXRlIGZvciByb3VuZCAyLCBleHBlY3RlZDogJHtLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLldhaXRpbmdGb3JCaXRnb1JvdW5kMkRhdGF9LCBnb3Q6ICR7cGF5bG9hZC5zdGF0ZX1gXG4gICAgKTtcbiAgICBkZWNvZGVPckVsc2UoT1ZDMlRvQml0Z29Sb3VuZDJQYXlsb2FkLm5hbWUsIE9WQzJUb0JpdGdvUm91bmQyUGF5bG9hZCwgcGF5bG9hZCwgKGVycm9ycykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIHBheWxvYWQ6ICR7ZXJyb3JzfWApO1xuICAgIH0pO1xuICAgIGNvbnN0IG92YzEgPSBwYXlsb2FkLm92Y1tPVkNJbmRleEVudW0uT05FXTtcbiAgICBjb25zdCBvdmMyID0gcGF5bG9hZC5vdmNbT1ZDSW5kZXhFbnVtLlRXT107XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gcGF5bG9hZC5wbGF0Zm9ybS5zZXNzaW9uSWQ7XG4gICAgY29uc3QgbWVzc2FnZXMgPSB7IHAycE1lc3NhZ2VzOiBbb3ZjMS5vdmNUb0JpdGdvTXNnMiwgb3ZjMi5vdmNUb0JpdGdvTXNnMl0sIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuTVBDdjJVdGlscy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMkJ5U2VuZGVyKHNlbmRlckZuLCBzZXNzaW9uSWQsIG1lc3NhZ2VzKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgc3RhdGU6IEtleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0Zvck9WQzFSb3VuZDNhRGF0YSxcbiAgICAgIHRzc1ZlcnNpb246IHBheWxvYWQudHNzVmVyc2lvbixcbiAgICAgIHdhbGxldFR5cGU6IHBheWxvYWQud2FsbGV0VHlwZSxcbiAgICAgIGNvaW46IHBheWxvYWQuY29pbixcbiAgICAgIG92YzogcGF5bG9hZC5vdmMsXG4gICAgICBwbGF0Zm9ybToge1xuICAgICAgICAuLi5wYXlsb2FkLnBsYXRmb3JtLFxuICAgICAgICBzZXNzaW9uSWQ6IHJlc3VsdC5zZXNzaW9uSWQsXG4gICAgICAgIGJpdGdvQ29tbWl0bWVudDI6IHJlc3VsdC5iaXRnb0NvbW1pdG1lbnQyLFxuICAgICAgICBvdmM6IHtcbiAgICAgICAgICBbT1ZDSW5kZXhFbnVtLk9ORV06IHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQucGxhdGZvcm0ub3ZjW09WQ0luZGV4RW51bS5PTkVdLFxuICAgICAgICAgICAgYml0Z29Ub092Y01zZzM6IHRoaXMuTVBDdjJVdGlscy5mb3JtYXRQMlBNZXNzYWdlKHJlc3VsdC5iaXRnb1RvVXNlck1zZzMpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09WQ0luZGV4RW51bS5UV09dOiB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLnBsYXRmb3JtLm92Y1tPVkNJbmRleEVudW0uVFdPXSxcbiAgICAgICAgICAgIGJpdGdvVG9PdmNNc2czOiB0aGlzLk1QQ3YyVXRpbHMuZm9ybWF0UDJQTWVzc2FnZShyZXN1bHQuYml0Z29Ub0JhY2t1cE1zZzMpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKEJpdGdvVG9PVkMxUm91bmQyUmVzcG9uc2UubmFtZSwgQml0Z29Ub09WQzFSb3VuZDJSZXNwb25zZSwgcmVzcG9uc2UsIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMga2V5R2VuUm91bmQzQnlTZW5kZXIoXG4gICAgc2VuZGVyRm46IEVjZHNhTVBDdjJLZXlHZW5TZW5kRm48TVBDdjJLZXlHZW5Sb3VuZDNSZXNwb25zZT4sXG4gICAgcGF5bG9hZDogT1ZDMVRvQml0Z29Sb3VuZDNQYXlsb2FkXG4gICk6IFByb21pc2U8Qml0Z29Ub09WQzFSb3VuZDNSZXNwb25zZT4ge1xuICAgIGFzc2VydChcbiAgICAgIHBheWxvYWQuc3RhdGUgPT09IEtleUNyZWF0aW9uTVBDdjJTdGF0ZUVudW0uV2FpdGluZ0ZvckJpdGdvUm91bmQzRGF0YSxcbiAgICAgIGBJbnZhbGlkIHN0YXRlIGZvciByb3VuZCAzLCBleHBlY3RlZDogJHtLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLldhaXRpbmdGb3JCaXRnb1JvdW5kM0RhdGF9LCBnb3Q6ICR7cGF5bG9hZC5zdGF0ZX1gXG4gICAgKTtcbiAgICBkZWNvZGVPckVsc2UoT1ZDMVRvQml0Z29Sb3VuZDNQYXlsb2FkLm5hbWUsIE9WQzFUb0JpdGdvUm91bmQzUGF5bG9hZCwgcGF5bG9hZCwgKGVycm9ycykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIHBheWxvYWQ6ICR7ZXJyb3JzfWApO1xuICAgIH0pO1xuICAgIGNvbnN0IG92YzEgPSBwYXlsb2FkLm92Y1tPVkNJbmRleEVudW0uT05FXTtcbiAgICBjb25zdCBvdmMyID0gcGF5bG9hZC5vdmNbT1ZDSW5kZXhFbnVtLlRXT107XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gcGF5bG9hZC5wbGF0Zm9ybS5zZXNzaW9uSWQ7XG4gICAgY29uc3QgbWVzc2FnZXMgPSB7XG4gICAgICBwMnBNZXNzYWdlczogW292YzEub3ZjVG9CaXRnb01zZzMsIG92YzIub3ZjVG9CaXRnb01zZzNdLFxuICAgICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtvdmMxLm92Y01zZzQsIG92YzIub3ZjTXNnNF0sXG4gICAgfTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLk1QQ3YyVXRpbHMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDNCeVNlbmRlcihzZW5kZXJGbiwgc2Vzc2lvbklkLCBtZXNzYWdlcyk7XG5cbiAgICBjb25zdCBrZXljaGFpbnMgPSB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpO1xuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCBrZXljaGFpbnMuYWRkKHtcbiAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgIGtleVR5cGU6ICd0c3MnLFxuICAgICAgY29tbW9uS2V5Y2hhaW46IHJlc3VsdC5jb21tb25LZXljaGFpbixcbiAgICAgIGlzTVBDdjI6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgIHN0YXRlOiBLZXlDcmVhdGlvbk1QQ3YyU3RhdGVFbnVtLldhaXRpbmdGb3JPVkMxR2VuZXJhdGVLZXksXG4gICAgICBiaXRHb0tleUlkOiBiaXRnb0tleWNoYWluLmlkLFxuICAgICAgdHNzVmVyc2lvbjogcGF5bG9hZC50c3NWZXJzaW9uLFxuICAgICAgd2FsbGV0VHlwZTogcGF5bG9hZC53YWxsZXRUeXBlLFxuICAgICAgY29pbjogcGF5bG9hZC5jb2luLFxuICAgICAgb3ZjOiBwYXlsb2FkLm92YyxcbiAgICAgIHBsYXRmb3JtOiB7XG4gICAgICAgIC4uLnBheWxvYWQucGxhdGZvcm0sXG4gICAgICAgIGNvbW1vbktleWNoYWluOiByZXN1bHQuY29tbW9uS2V5Y2hhaW4sXG4gICAgICAgIGJpdGdvTXNnNDogdGhpcy5NUEN2MlV0aWxzLmZvcm1hdEJpdGdvQnJvYWRjYXN0TWVzc2FnZShyZXN1bHQuYml0Z29Nc2c0KSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBkZWNvZGVPckVsc2UoQml0Z29Ub09WQzFSb3VuZDNSZXNwb25zZS5uYW1lLCBCaXRnb1RvT1ZDMVJvdW5kM1Jlc3BvbnNlLCByZXNwb25zZSwgKGVycm9ycykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIHJlc3BvbnNlOiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRDbGllbnRLZXlzKFxuICAgIGJpdGdvS2V5SWQ6IHN0cmluZyxcbiAgICB1c2VyQ29tbW9uS2V5Y2hhaW46IHN0cmluZyxcbiAgICBiYWNrdXBDb21tb25LZXljaGFpbjogc3RyaW5nXG4gICk6IFByb21pc2U8eyB1c2VyS2V5Y2hhaW46IEtleWNoYWluOyBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47IGJpdGdvS2V5Y2hhaW46IEtleWNoYWluIH0+IHtcbiAgICBhc3NlcnQoXG4gICAgICB1c2VyQ29tbW9uS2V5Y2hhaW4gPT09IGJhY2t1cENvbW1vbktleWNoYWluLFxuICAgICAgJ0NvbW1vbiBrZXljaGFpbiBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB1c2VyIGFuZCBiYWNrdXAga2V5Y2hhaW5zJ1xuICAgICk7XG5cbiAgICBjb25zdCBrZXljaGFpbnMgPSB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpO1xuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW4gPSBhd2FpdCBrZXljaGFpbnMuZ2V0KHsgaWQ6IGJpdGdvS2V5SWQgfSk7XG4gICAgYXNzZXJ0KGJpdGdvS2V5Y2hhaW4sICdLZXljaGFpbiBub3QgZm91bmQnKTtcbiAgICBhc3NlcnQoYml0Z29LZXljaGFpbi5zb3VyY2UgPT09ICdiaXRnbycsICdUaGUga2V5Y2hhaW4gaXMgbm90IGEgQml0R28ga2V5Y2hhaW4nKTtcbiAgICBhc3NlcnQoYml0Z29LZXljaGFpbi50eXBlID09PSAndHNzJywgJ0JpdEdvIGtleWNoYWluIGlzIG5vdCBhIFRTUyBrZXljaGFpbicpO1xuICAgIGFzc2VydChiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLCAnQml0R28ga2V5Y2hhaW4gZG9lcyBub3QgaGF2ZSBhIGNvbW1vbiBrZXljaGFpbicpO1xuICAgIGFzc2VydChiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluID09PSB1c2VyQ29tbW9uS2V5Y2hhaW4sICdDb21tb24ga2V5Y2hhaW4gbWlzbWF0Y2ggYmV0d2VlbiB0aGUgT1ZDcyBhbmQgQml0R28nKTtcblxuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuYWRkKHtcbiAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAga2V5VHlwZTogJ3RzcycsXG4gICAgICBjb21tb25LZXljaGFpbjogdXNlckNvbW1vbktleWNoYWluLFxuICAgICAgaXNNUEN2MjogdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuYWRkKHtcbiAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICBrZXlUeXBlOiAndHNzJyxcbiAgICAgIGNvbW1vbktleWNoYWluOiBiYWNrdXBDb21tb25LZXljaGFpbixcbiAgICAgIGlzTVBDdjI6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbdXNlcktleWNoYWluUHJvbWlzZSwgYmFja3VwS2V5Y2hhaW5Qcm9taXNlXSk7XG4gICAgcmV0dXJuIHsgdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbiwgYml0Z29LZXljaGFpbiB9O1xuICB9XG59XG4iXX0=
@@ -9,6 +9,7 @@ import { DecryptedRetrofitPayload } from '../../../keychain/iKeychains';
9
9
  import { MPCv2PartiesEnum } from './typesMPCv2';
10
10
  import { CustomMPCv2SigningRound1GeneratingFunction, CustomMPCv2SigningRound2GeneratingFunction, CustomMPCv2SigningRound3GeneratingFunction, RequestType, SignatureShareRecord, TSSParams, TSSParamsForMessage, TSSParamsForMessageWithPrv, TSSParamsWithPrv, TxRequest } from '../baseTypes';
11
11
  import { BaseEcdsaUtils } from './base';
12
+ import { EcdsaMPCv2KeyGenSendFn } from './ecdsaMPCv2KeyGenSender';
12
13
  export declare class EcdsaMPCv2Utils extends BaseEcdsaUtils {
13
14
  /** @inheritdoc */
14
15
  createKeychains(params: {
@@ -49,12 +50,16 @@ export declare class EcdsaMPCv2Utils extends BaseEcdsaUtils {
49
50
  private addBackupKeychain;
50
51
  private getUserAndBackupSession;
51
52
  private addBitgoKeychain;
52
- private sendKeyGenerationRequest;
53
53
  sendKeyGenerationRound1(enterprise: string, userGpgPublicKey: string, backupGpgPublicKey: string, payload: DklsTypes.AuthEncMessages & {
54
54
  walletId?: string;
55
55
  }): Promise<MPCv2KeyGenRound1Response>;
56
56
  sendKeyGenerationRound2(enterprise: string, sessionId: string, payload: DklsTypes.AuthEncMessages): Promise<MPCv2KeyGenRound2Response>;
57
57
  sendKeyGenerationRound3(enterprise: string, sessionId: string, payload: DklsTypes.AuthEncMessages): Promise<MPCv2KeyGenRound3Response>;
58
+ sendKeyGenerationRound1BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound1Response>, userGpgPublicKey: string, backupGpgPublicKey: string, payload: DklsTypes.AuthEncMessages & {
59
+ walletId?: string;
60
+ }): Promise<MPCv2KeyGenRound1Response>;
61
+ sendKeyGenerationRound2BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound2Response>, sessionId: string, payload: DklsTypes.AuthEncMessages): Promise<MPCv2KeyGenRound2Response>;
62
+ sendKeyGenerationRound3BySender(senderFn: EcdsaMPCv2KeyGenSendFn<MPCv2KeyGenRound3Response>, sessionId: string, payload: DklsTypes.AuthEncMessages): Promise<MPCv2KeyGenRound3Response>;
58
63
  /**
59
64
  * Signs the transaction associated to the transaction request.
60
65
  * @param {string | TxRequest} params.txRequest - transaction request object or id
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.ts"],"names":[],"mappings":";AAAA,OAAO,EAAiD,SAAS,EAAa,MAAM,yBAAyB,CAAC;AAG9G,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAEL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAGzB,eAAe,EACf,4BAA4B,EAG7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAsB,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAgE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAU9G,OAAO,EACL,0CAA0C,EAC1C,0CAA0C,EAC1C,0CAA0C,EAC1C,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,qBAAa,eAAgB,SAAQ,cAAc;IACjD,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;KACrC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyRvB,yBAAyB,CAC7B,gBAAgB,EAAE,4BAA4B,EAC9C,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IA0CpB;;;;;;OAMG;IACH,qBAAqB,CACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,GACvD,SAAS,CAAC,YAAY;IAezB;;;;;OAKG;IACH,iCAAiC,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,GAAG;QACrG,iBAAiB,EAAE,SAAS,CAAC,YAAY,CAAC;QAC1C,mBAAmB,EAAE,SAAS,CAAC,YAAY,CAAC;KAC7C;IAuBD,gCAAgC,CAAC,EAC/B,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,GAAG,GACJ,EAAE;QACD,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACnB,GAAG,EAAE,KAAK,CAAC;KACZ,GAAG,SAAS,CAAC,YAAY;YAkCZ,eAAe;YAiBf,iBAAiB;IAiB/B,OAAO,CAAC,uBAAuB;YAmBjB,gBAAgB;YAMhB,wBAAwB;IAWhC,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,SAAS,CAAC,eAAe,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,yBAAyB,CAAC;IAiB/B,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IAkC/B,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,GACjC,OAAO,CAAC,yBAAyB,CAAC;IA4BrC;;;;;;;OAOG;IAEG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAKjE;;;;;;OAMG;IACG,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC;YAKvE,eAAe;IAmL7B,2BAA2B,CAAC,gBAAgB,EAAE,qBAAqB;;;;;;;IAOnE,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM;;;;;;;;;IAWjE;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IA4BtC;;;;;;OAMG;YACW,sBAAsB;IAsBpC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAgBrB,kBAAkB;IACZ,oCAAoC,CACxC,MAAM,EAAE,SAAS,GAAG,mBAAmB,EACvC,yCAAyC,EAAE,0CAA0C,EACrF,yCAAyC,EAAE,0CAA0C,EACrF,yCAAyC,EAAE,0CAA0C,EACrF,WAAW,GAAE,WAA4B,GACxC,OAAO,CAAC,SAAS,CAAC;IAsFf,wBAAwB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC/G,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,aAAa,EAAE,MAAM,CAAC;QACtB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IAwBI,wBAAwB,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,GAAG,OAAO,CAAC;QACV,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IAyDI,wBAAwB,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,GAAG,OAAO,CAAC;QACV,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;CAiDH;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAYrG;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,2BAA2B,EAAE,MAAM,EACnC,6BAA6B,EAAE,MAAM,EACrC,gBAAgB,CAAC,EAAE,MAAM;;;;GA4B1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM;;;;;GAqBvB"}
1
+ {"version":3,"file":"ecdsaMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.ts"],"names":[],"mappings":"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"}