@bitgo/sdk-core 1.1.0-rc.10 → 1.1.0-rc.13

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 (48) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  5. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -1
  6. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +6 -3
  8. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +5 -0
  9. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  10. package/dist/src/bitgo/baseCoin/baseCoin.js +8 -1
  11. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
  12. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  13. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  14. package/dist/src/bitgo/coinFactory.d.ts +4 -0
  15. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  16. package/dist/src/bitgo/coinFactory.js +1 -1
  17. package/dist/src/bitgo/index.d.ts +1 -0
  18. package/dist/src/bitgo/index.d.ts.map +1 -1
  19. package/dist/src/bitgo/index.js +2 -1
  20. package/dist/src/bitgo/staking/iStakingWallet.d.ts +69 -0
  21. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -0
  22. package/dist/src/bitgo/staking/iStakingWallet.js +3 -0
  23. package/dist/src/bitgo/staking/index.d.ts +3 -0
  24. package/dist/src/bitgo/staking/index.d.ts.map +1 -0
  25. package/dist/src/bitgo/staking/index.js +15 -0
  26. package/dist/src/bitgo/staking/stakingWallet.d.ts +67 -0
  27. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -0
  28. package/dist/src/bitgo/staking/stakingWallet.js +153 -0
  29. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
  30. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
  31. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
  32. package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
  33. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
  34. package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
  35. package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
  36. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
  37. package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
  38. package/dist/src/bitgo/tss/index.d.ts +2 -1
  39. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  40. package/dist/src/bitgo/tss/index.js +5 -2
  41. package/dist/src/bitgo/wallet/iWallet.d.ts +2 -0
  42. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  43. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  44. package/dist/src/bitgo/wallet/wallet.d.ts +5 -0
  45. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  46. package/dist/src/bitgo/wallet/wallet.js +11 -1
  47. package/dist/tsconfig.tsbuildinfo +120 -20
  48. package/package.json +5 -5
@@ -15,6 +15,7 @@ export * from './keychain';
15
15
  export * from './market';
16
16
  export * from './pendingApproval';
17
17
  export * from './recovery';
18
+ export * from './staking';
18
19
  export * from './trading';
19
20
  export * from './tss';
20
21
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -42,10 +42,11 @@ __exportStar(require("./keychain"), exports);
42
42
  __exportStar(require("./market"), exports);
43
43
  __exportStar(require("./pendingApproval"), exports);
44
44
  __exportStar(require("./recovery"), exports);
45
+ __exportStar(require("./staking"), exports);
45
46
  __exportStar(require("./trading"), exports);
46
47
  __exportStar(require("./tss"), exports);
47
48
  __exportStar(require("./types"), exports);
48
49
  __exportStar(require("./utils"), exports);
49
50
  __exportStar(require("./wallet"), exports);
50
51
  __exportStar(require("./webhook"), exports);
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQXdCaEMsa0NBQVc7QUF2QnBCLDJDQUE2QjtBQXdCcEIsa0JBQUc7QUF0QlosNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIseUNBQXVCO0FBQ3ZCLCtDQUE2QjtBQUM3QixpREFBK0I7QUFDL0IsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0QiwwQ0FBd0I7QUFDeEIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXRjb2luVXRpbCBmcm9tICcuL2JpdGNvaW4nO1xuaW1wb3J0ICogYXMgdHNzIGZyb20gJy4vdHNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlQ29pbic7XG5leHBvcnQgKiBmcm9tICcuL2JpcDMydXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2JpdGNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRnb0Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2luRmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2VjZGgnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRlcnByaXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJuYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljaGFpbic7XG5leHBvcnQgKiBmcm9tICcuL21hcmtldCc7XG5leHBvcnQgKiBmcm9tICcuL3BlbmRpbmdBcHByb3ZhbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlY292ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3Rzcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWJob29rJztcbmV4cG9ydCB7IGJpdGNvaW5VdGlsIH07XG5leHBvcnQgeyB0c3MgfTtcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQXlCaEMsa0NBQVc7QUF4QnBCLDJDQUE2QjtBQXlCcEIsa0JBQUc7QUF2QlosNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIseUNBQXVCO0FBQ3ZCLCtDQUE2QjtBQUM3QixpREFBK0I7QUFDL0IsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLDRDQUEwQjtBQUMxQix3Q0FBc0I7QUFDdEIsMENBQXdCO0FBQ3hCLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pblV0aWwgZnJvbSAnLi9iaXRjb2luJztcbmltcG9ydCAqIGFzIHRzcyBmcm9tICcuL3Rzcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYmFzZUNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9iaXAzMnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRjb2luJztcbmV4cG9ydCAqIGZyb20gJy4vYml0Z29CYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vY29pbkZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9lY2RoJztcbmV4cG9ydCAqIGZyb20gJy4vZW50ZXJwcmlzZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vudmlyb25tZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVybmFsJztcbmV4cG9ydCAqIGZyb20gJy4va2V5Y2hhaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9tYXJrZXQnO1xuZXhwb3J0ICogZnJvbSAnLi9wZW5kaW5nQXBwcm92YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNvdmVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YWtpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFkaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vdHNzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3dhbGxldCc7XG5leHBvcnQgKiBmcm9tICcuL3dlYmhvb2snO1xuZXhwb3J0IHsgYml0Y29pblV0aWwgfTtcbmV4cG9ydCB7IHRzcyB9O1xuIl19
@@ -0,0 +1,69 @@
1
+ import { PrebuildTransactionOptions, PrebuildTransactionResult } from '../wallet';
2
+ import { SignedTransaction } from '../baseCoin';
3
+ export interface StakingRequest {
4
+ id: string;
5
+ amount: string;
6
+ withdrawalAddress: string;
7
+ clientId?: string;
8
+ requestingUserId: string;
9
+ type: string;
10
+ enterpriseId: string;
11
+ walletId: string;
12
+ walletType: string;
13
+ coin: string;
14
+ status: string;
15
+ statusModifiedDate: string;
16
+ createdDate: string;
17
+ transactions: StakingTransaction[];
18
+ }
19
+ export interface StakeOptions {
20
+ amount: string;
21
+ clientId?: string;
22
+ }
23
+ export interface UnstakeOptions {
24
+ amount: string;
25
+ clientId?: string;
26
+ }
27
+ export interface TransactionsReadyToSign {
28
+ allSigningComplete: boolean;
29
+ transactions: StakingTransaction[];
30
+ }
31
+ export interface StakingTransaction {
32
+ id: string;
33
+ stakingRequestId: string;
34
+ delegationId: string;
35
+ transactionType: string;
36
+ createdDate: string;
37
+ status: string;
38
+ statusModifiedDate: string;
39
+ amount: string;
40
+ pendingApprovalId?: string;
41
+ transferId?: string;
42
+ txRequestId?: string;
43
+ buildParams?: PrebuildTransactionOptions;
44
+ gasPrice?: string;
45
+ }
46
+ export interface StakingPrebuildTransactionResult {
47
+ transaction: StakingTransaction;
48
+ result: PrebuildTransactionResult;
49
+ }
50
+ export interface StakingSignedTransaction {
51
+ transaction: StakingTransaction;
52
+ signed: SignedTransaction;
53
+ }
54
+ export interface StakingSignOptions {
55
+ walletPassphrase: string;
56
+ }
57
+ export interface IStakingWallet {
58
+ readonly walletId: string;
59
+ readonly coin: string;
60
+ stake(options: StakeOptions): Promise<StakingRequest>;
61
+ unstake(options: UnstakeOptions): Promise<StakingRequest>;
62
+ getStakingRequest(stakingRequestId: string): Promise<StakingRequest>;
63
+ getTransactionsReadyToSign(stakingRequestId: string): Promise<TransactionsReadyToSign>;
64
+ build(transaction: StakingTransaction): Promise<StakingPrebuildTransactionResult>;
65
+ sign(signOptions: StakingSignOptions, stakingPrebuildTransaction: StakingPrebuildTransactionResult): Promise<StakingSignedTransaction>;
66
+ send(signedTransaction: StakingSignedTransaction): Promise<StakingTransaction>;
67
+ buildSignAndSend(signOptions: StakingSignOptions, transaction: StakingTransaction): any;
68
+ }
69
+ //# sourceMappingURL=iStakingWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iStakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/iStakingWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVN0YWtpbmdXYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc3Rha2luZy9pU3Rha2luZ1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJlYnVpbGRUcmFuc2FjdGlvbk9wdGlvbnMsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHsgU2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1JlcXVlc3Qge1xuICBpZDogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgd2l0aGRyYXdhbEFkZHJlc3M6IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIHJlcXVlc3RpbmdVc2VySWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBlbnRlcnByaXNlSWQ6IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgd2FsbGV0VHlwZTogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzdGF0dXNNb2RpZmllZERhdGU6IHN0cmluZztcbiAgY3JlYXRlZERhdGU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25zOiBTdGFraW5nVHJhbnNhY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFrZU9wdGlvbnMge1xuICBhbW91bnQ6IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5zdGFrZU9wdGlvbnMge1xuICBhbW91bnQ6IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24ge1xuICBhbGxTaWduaW5nQ29tcGxldGU6IGJvb2xlYW47XG4gIHRyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1RyYW5zYWN0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nO1xuICBkZWxlZ2F0aW9uSWQ6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25UeXBlOiBzdHJpbmc7XG4gIGNyZWF0ZWREYXRlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBzdGF0dXNNb2RpZmllZERhdGU6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHBlbmRpbmdBcHByb3ZhbElkPzogc3RyaW5nO1xuICB0cmFuc2ZlcklkPzogc3RyaW5nO1xuICB0eFJlcXVlc3RJZD86IHN0cmluZztcbiAgYnVpbGRQYXJhbXM/OiBQcmVidWlsZFRyYW5zYWN0aW9uT3B0aW9ucztcbiAgZ2FzUHJpY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQge1xuICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uO1xuICByZXN1bHQ6IFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uIHtcbiAgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgc2lnbmVkOiBTaWduZWRUcmFuc2FjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFraW5nU2lnbk9wdGlvbnMge1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0YWtpbmdXYWxsZXQge1xuICByZWFkb25seSB3YWxsZXRJZDogc3RyaW5nO1xuICByZWFkb25seSBjb2luOiBzdHJpbmc7XG4gIHN0YWtlKG9wdGlvbnM6IFN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+O1xuICB1bnN0YWtlKG9wdGlvbnM6IFVuc3Rha2VPcHRpb25zKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIGdldFN0YWtpbmdSZXF1ZXN0KHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+O1xuICBnZXRUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbihzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduPjtcbiAgYnVpbGQodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8U3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQ+O1xuICBzaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPjtcbiAgc2VuZChzaWduZWRUcmFuc2FjdGlvbjogU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+O1xuICBidWlsZFNpZ25BbmRTZW5kKHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsIHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './iStakingWallet';
2
+ export * from './stakingWallet';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./iStakingWallet"), exports);
14
+ __exportStar(require("./stakingWallet"), exports);
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc3Rha2luZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsa0RBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pU3Rha2luZ1dhbGxldCc7XG5leHBvcnQgKiBmcm9tICcuL3N0YWtpbmdXYWxsZXQnO1xuIl19
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { IStakingWallet, StakingRequest, TransactionsReadyToSign, StakingTransaction, StakingPrebuildTransactionResult, StakingSignedTransaction, StakingSignOptions, StakeOptions, UnstakeOptions } from './iStakingWallet';
5
+ import { IWallet } from '../wallet';
6
+ import { ITssUtils } from '../utils';
7
+ export declare class StakingWallet implements IStakingWallet {
8
+ private readonly bitgo;
9
+ wallet: IWallet;
10
+ tssUtil: ITssUtils;
11
+ constructor(wallet: IWallet);
12
+ get walletId(): string;
13
+ get coin(): string;
14
+ /**
15
+ * Stake coins
16
+ * @param options - stake options
17
+ * @return StakingRequest
18
+ */
19
+ stake(options: StakeOptions): Promise<StakingRequest>;
20
+ /**
21
+ * Unstake coins
22
+ * @param options - unstake options
23
+ * @return StakingRequest
24
+ */
25
+ unstake(options: UnstakeOptions): Promise<StakingRequest>;
26
+ /**
27
+ * Get a staking request by ID
28
+ * @param stakingRequestId - id of the staking request to retrieve
29
+ * @return StakingRequest
30
+ */
31
+ getStakingRequest(stakingRequestId: string): Promise<StakingRequest>;
32
+ /**
33
+ * Get transactions ready to sign
34
+ * @param stakingRequestId
35
+ * @return TransactionsReadyToSign
36
+ */
37
+ getTransactionsReadyToSign(stakingRequestId: string): Promise<TransactionsReadyToSign>;
38
+ /**
39
+ * Build the staking transaction
40
+ * If TSS delete signature shares, else expand build params and then build
41
+ * @param transaction - staking transaction to build
42
+ */
43
+ build(transaction: StakingTransaction): Promise<StakingPrebuildTransactionResult>;
44
+ /**
45
+ * Sign the staking transaction
46
+ * @param signOptions
47
+ * @param stakingPrebuildTransaction
48
+ */
49
+ sign(signOptions: StakingSignOptions, stakingPrebuildTransaction: StakingPrebuildTransactionResult): Promise<StakingSignedTransaction>;
50
+ /**
51
+ * Send the signed staking transaction
52
+ * @param signedTransaction
53
+ */
54
+ send(signedTransaction: StakingSignedTransaction): Promise<StakingTransaction>;
55
+ /**
56
+ * Build, sign and send the transaction.
57
+ * @param signOptions
58
+ * @param transaction
59
+ */
60
+ buildSignAndSend(signOptions: StakingSignOptions, transaction: StakingTransaction): Promise<StakingTransaction>;
61
+ private expandBuildParams;
62
+ private createStakingRequest;
63
+ private stakingRequestsURL;
64
+ private stakingRequestUrl;
65
+ private stakingTransactionURL;
66
+ }
67
+ //# sourceMappingURL=stakingWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/stakingWallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAA2B,MAAM,UAAU,CAAC;AAE9D,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAE3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;gBAEd,MAAM,EAAE,OAAO;IAM3B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3D;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/D;;;;OAIG;IACG,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E;;;;OAIG;IACG,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAgB5F;;;;OAIG;IACG,KAAK,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,gCAAgC,CAAC;IA0BvF;;;;OAIG;IACG,IAAI,CACR,WAAW,EAAE,kBAAkB,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,wBAAwB,CAAC;IAgBpC;;;OAGG;IACG,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOpF;;;;OAIG;IACG,gBAAgB,CACpB,WAAW,EAAE,kBAAkB,EAC/B,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;YAMhB,iBAAiB;YAOjB,oBAAoB;IAWlC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;CAG9B"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StakingWallet = void 0;
4
+ const utils_1 = require("../utils");
5
+ class StakingWallet {
6
+ constructor(wallet) {
7
+ this.wallet = wallet;
8
+ this.bitgo = wallet.bitgo;
9
+ this.tssUtil = new utils_1.TssUtils(this.bitgo, this.wallet.baseCoin, this.wallet);
10
+ }
11
+ get walletId() {
12
+ return this.wallet.id();
13
+ }
14
+ get coin() {
15
+ return this.wallet.coin();
16
+ }
17
+ /**
18
+ * Stake coins
19
+ * @param options - stake options
20
+ * @return StakingRequest
21
+ */
22
+ async stake(options) {
23
+ return await this.createStakingRequest(options.amount, 'STAKE', options.clientId);
24
+ }
25
+ /**
26
+ * Unstake coins
27
+ * @param options - unstake options
28
+ * @return StakingRequest
29
+ */
30
+ async unstake(options) {
31
+ return await this.createStakingRequest(options.amount, 'UNSTAKE', options.clientId);
32
+ }
33
+ /**
34
+ * Get a staking request by ID
35
+ * @param stakingRequestId - id of the staking request to retrieve
36
+ * @return StakingRequest
37
+ */
38
+ async getStakingRequest(stakingRequestId) {
39
+ return await this.bitgo.get(this.bitgo.microservicesUrl(this.stakingRequestUrl(stakingRequestId))).result();
40
+ }
41
+ /**
42
+ * Get transactions ready to sign
43
+ * @param stakingRequestId
44
+ * @return TransactionsReadyToSign
45
+ */
46
+ async getTransactionsReadyToSign(stakingRequestId) {
47
+ const stakingRequest = await this.getStakingRequest(stakingRequestId);
48
+ const readyToSign = stakingRequest.transactions.filter((transaction) => transaction.status === `READY`);
49
+ const newTransactions = stakingRequest.transactions.filter((transaction) => transaction.status === `NEW`);
50
+ return Promise.resolve({
51
+ allSigningComplete: stakingRequest.transactions.length > 0 && newTransactions.length === 0 && readyToSign.length === 0,
52
+ transactions: readyToSign,
53
+ });
54
+ }
55
+ /**
56
+ * Build the staking transaction
57
+ * If TSS delete signature shares, else expand build params and then build
58
+ * @param transaction - staking transaction to build
59
+ */
60
+ async build(transaction) {
61
+ if (this.wallet.baseCoin.supportsTss()) {
62
+ if (!transaction.txRequestId) {
63
+ throw new Error('txRequestId is required to sign and send');
64
+ }
65
+ // delete signature shares before signing for transaction request API
66
+ await this.tssUtil.deleteSignatureShares(transaction.txRequestId);
67
+ return {
68
+ transaction: transaction,
69
+ result: {
70
+ walletId: this.walletId,
71
+ txRequestId: transaction.txRequestId,
72
+ },
73
+ };
74
+ }
75
+ else {
76
+ transaction = await this.expandBuildParams(transaction);
77
+ if (!transaction.buildParams) {
78
+ throw Error(`Staking transaction ${transaction.id} build params not expanded`);
79
+ }
80
+ return {
81
+ transaction: transaction,
82
+ result: await this.wallet.prebuildTransaction(transaction.buildParams),
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Sign the staking transaction
88
+ * @param signOptions
89
+ * @param stakingPrebuildTransaction
90
+ */
91
+ async sign(signOptions, stakingPrebuildTransaction) {
92
+ const reqId = new utils_1.RequestTracer();
93
+ const keychain = await this.wallet.baseCoin.keychains().getKeysForSigning({
94
+ wallet: this.wallet,
95
+ reqId: reqId,
96
+ });
97
+ return {
98
+ transaction: stakingPrebuildTransaction.transaction,
99
+ signed: await this.wallet.signTransaction({
100
+ txPrebuild: stakingPrebuildTransaction.result,
101
+ walletPassphrase: signOptions.walletPassphrase,
102
+ keychain: keychain[0],
103
+ }),
104
+ };
105
+ }
106
+ /**
107
+ * Send the signed staking transaction
108
+ * @param signedTransaction
109
+ */
110
+ async send(signedTransaction) {
111
+ return await this.bitgo
112
+ .post(this.bitgo.microservicesUrl(this.stakingTransactionURL(signedTransaction.transaction)))
113
+ .send(signedTransaction.signed)
114
+ .result();
115
+ }
116
+ /**
117
+ * Build, sign and send the transaction.
118
+ * @param signOptions
119
+ * @param transaction
120
+ */
121
+ async buildSignAndSend(signOptions, transaction) {
122
+ return await this.build(transaction)
123
+ .then((result) => this.sign(signOptions, result))
124
+ .then((result) => this.send(result));
125
+ }
126
+ async expandBuildParams(stakingTransaction) {
127
+ return await this.bitgo
128
+ .get(this.bitgo.microservicesUrl(this.stakingTransactionURL(stakingTransaction)))
129
+ .query({ expandBuildParams: true })
130
+ .result();
131
+ }
132
+ async createStakingRequest(amount, type, clientId) {
133
+ return await this.bitgo
134
+ .post(this.bitgo.microservicesUrl(this.stakingRequestsURL()))
135
+ .send({
136
+ amount: amount,
137
+ clientId: clientId,
138
+ type: type,
139
+ })
140
+ .result();
141
+ }
142
+ stakingRequestsURL() {
143
+ return `/api/staking/v1/${this.coin}/wallets/${this.walletId}/requests`;
144
+ }
145
+ stakingRequestUrl(stakingRequestId) {
146
+ return `${this.stakingRequestsURL()}/${stakingRequestId}`;
147
+ }
148
+ stakingTransactionURL(stakingTransaction) {
149
+ return `${this.stakingRequestUrl(stakingTransaction.stakingRequestId)}/transactions/${stakingTransaction.id}`;
150
+ }
151
+ }
152
+ exports.StakingWallet = StakingWallet;
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zdGFraW5nL3N0YWtpbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0JBLG9DQUE4RDtBQUU5RCxNQUFhLGFBQWE7SUFNeEIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQXFCO1FBQy9CLE9BQU8sTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUF1QjtRQUNuQyxPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBd0I7UUFDOUMsT0FBTyxNQUFNLElB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LElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7YUFDNUQsSUFBSSxDQUFDO1lBQ0osTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7YUFDRCxNQUFNLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsT0FBTyxtQkFBbUIsSUFBSSxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsUUFBUSxXQUFXLENBQUM7SUFDMUUsQ0FBQztJQUVPLGlCQUFpQixDQUFDLGdCQUF3QjtRQUNoRCxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8scUJBQXFCLENBQUMsa0JBQXNDO1FBQ2xFLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hILENBQUM7Q0FDRjtBQWpMRCxzQ0FpTEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQge1xuICBJU3Rha2luZ1dhbGxldCxcbiAgU3Rha2luZ1JlcXVlc3QsXG4gIFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduLFxuICBTdGFraW5nVHJhbnNhY3Rpb24sXG4gIFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0LFxuICBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgU3Rha2VPcHRpb25zLFxuICBVbnN0YWtlT3B0aW9ucyxcbn0gZnJvbSAnLi9pU3Rha2luZ1dhbGxldCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBJVHNzVXRpbHMsIFJlcXVlc3RUcmFjZXIsIFRzc1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ1dhbGxldCBpbXBsZW1lbnRzIElTdGFraW5nV2FsbGV0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG4gIHB1YmxpYyB0c3NVdGlsOiBJVHNzVXRpbHM7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0KSB7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5iaXRnbyA9IHdhbGxldC5iaXRnbztcbiAgICB0aGlzLnRzc1V0aWwgPSBuZXcgVHNzVXRpbHModGhpcy5iaXRnbywgdGhpcy53YWxsZXQuYmFzZUNvaW4sIHRoaXMud2FsbGV0KTtcbiAgfVxuXG4gIGdldCB3YWxsZXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5pZCgpO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuY29pbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3Rha2Ugb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBzdGFrZShvcHRpb25zOiBTdGFrZU9wdGlvbnMpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlU3Rha2luZ1JlcXVlc3Qob3B0aW9ucy5hbW91bnQsICdTVEFLRScsIG9wdGlvbnMuY2xpZW50SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Rha2UgY29pbnNcbiAgICogQHBhcmFtIG9wdGlvbnMgLSB1bnN0YWtlIG9wdGlvbnNcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgdW5zdGFrZShvcHRpb25zOiBVbnN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLmFtb3VudCwgJ1VOU1RBS0UnLCBvcHRpb25zLmNsaWVudElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdGFraW5nIHJlcXVlc3QgYnkgSURcbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWQgLSBpZCBvZiB0aGUgc3Rha2luZyByZXF1ZXN0IHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIGdldFN0YWtpbmdSZXF1ZXN0KHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RVcmwoc3Rha2luZ1JlcXVlc3RJZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb25zIHJlYWR5IHRvIHNpZ25cbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWRcbiAgICogQHJldHVybiBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnblxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24oc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbj4ge1xuICAgIGNvbnN0IHN0YWtpbmdSZXF1ZXN0OiBTdGFraW5nUmVxdWVzdCA9IGF3YWl0IHRoaXMuZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZCk7XG4gICAgY29uc3QgcmVhZHlUb1NpZ246IFN0YWtpbmdUcmFuc2FjdGlvbltdID0gc3Rha2luZ1JlcXVlc3QudHJhbnNhY3Rpb25zLmZpbHRlcihcbiAgICAgICh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5zdGF0dXMgPT09IGBSRUFEWWBcbiAgICApO1xuICAgIGNvbnN0IG5ld1RyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW10gPSBzdGFraW5nUmVxdWVzdC50cmFuc2FjdGlvbnMuZmlsdGVyKFxuICAgICAgKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLnN0YXR1cyA9PT0gYE5FV2BcbiAgICApO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBhbGxTaWduaW5nQ29tcGxldGU6XG4gICAgICAgIHN0YWtpbmdSZXF1ZXN0LnRyYW5zYWN0aW9ucy5sZW5ndGggPiAwICYmIG5ld1RyYW5zYWN0aW9ucy5sZW5ndGggPT09IDAgJiYgcmVhZHlUb1NpZ24ubGVuZ3RoID09PSAwLFxuICAgICAgdHJhbnNhY3Rpb25zOiByZWFkeVRvU2lnbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBJZiBUU1MgZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMsIGVsc2UgZXhwYW5kIGJ1aWxkIHBhcmFtcyBhbmQgdGhlbiBidWlsZFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIGJ1aWxkXG4gICAqL1xuICBhc3luYyBidWlsZCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGlmICh0aGlzLndhbGxldC5iYXNlQ29pbi5zdXBwb3J0c1RzcygpKSB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgaXMgcmVxdWlyZWQgdG8gc2lnbiBhbmQgc2VuZCcpO1xuICAgICAgfVxuICAgICAgLy8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMgYmVmb3JlIHNpZ25pbmcgZm9yIHRyYW5zYWN0aW9uIHJlcXVlc3QgQVBJXG4gICAgICBhd2FpdCB0aGlzLnRzc1V0aWwuZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zYWN0aW9uOiB0cmFuc2FjdGlvbixcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgd2FsbGV0SWQ6IHRoaXMud2FsbGV0SWQsXG4gICAgICAgICAgdHhSZXF1ZXN0SWQ6IHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLmV4cGFuZEJ1aWxkUGFyYW1zKHRyYW5zYWN0aW9uKTtcbiAgICAgIGlmICghdHJhbnNhY3Rpb24uYnVpbGRQYXJhbXMpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5pZH0gYnVpbGQgcGFyYW1zIG5vdCBleHBhbmRlZGApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uLFxuICAgICAgICByZXN1bHQ6IGF3YWl0IHRoaXMud2FsbGV0LnByZWJ1aWxkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uYnVpbGRQYXJhbXMpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gc2lnbk9wdGlvbnNcbiAgICogQHBhcmFtIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGNvbnN0IGtleWNoYWluID0gYXdhaXQgdGhpcy53YWxsZXQuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuZ2V0S2V5c0ZvclNpZ25pbmcoe1xuICAgICAgd2FsbGV0OiB0aGlzLndhbGxldCxcbiAgICAgIHJlcUlkOiByZXFJZCxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNhY3Rpb246IHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLFxuICAgICAgc2lnbmVkOiBhd2FpdCB0aGlzLndhbGxldC5zaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICB0eFByZWJ1aWxkOiBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbi5yZXN1bHQsXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHNpZ25PcHRpb25zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGtleWNoYWluOiBrZXljaGFpblswXSxcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2VuZCB0aGUgc2lnbmVkIHN0YWtpbmcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHNpZ25lZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzZW5kKHNpZ25lZFRyYW5zYWN0aW9uOiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nVHJhbnNhY3Rpb25VUkwoc2lnbmVkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb24pKSlcbiAgICAgIC5zZW5kKHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25lZClcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCwgc2lnbiBhbmQgc2VuZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIGJ1aWxkU2lnbkFuZFNlbmQoXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uXG4gICk6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGQodHJhbnNhY3Rpb24pXG4gICAgICAudGhlbigocmVzdWx0OiBTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCkgPT4gdGhpcy5zaWduKHNpZ25PcHRpb25zLCByZXN1bHQpKVxuICAgICAgLnRoZW4oKHJlc3VsdDogU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uKSA9PiB0aGlzLnNlbmQocmVzdWx0KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4cGFuZEJ1aWxkUGFyYW1zKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nVHJhbnNhY3Rpb25VUkwoc3Rha2luZ1RyYW5zYWN0aW9uKSkpXG4gICAgICAucXVlcnkoeyBleHBhbmRCdWlsZFBhcmFtczogdHJ1ZSB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVTdGFraW5nUmVxdWVzdChhbW91bnQ6IHN0cmluZywgdHlwZTogc3RyaW5nLCBjbGllbnRJZD86IHN0cmluZyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RzVVJMKCkpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICBhbW91bnQ6IGFtb3VudCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1JlcXVlc3RzVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vcmVxdWVzdHNgO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWtpbmdSZXF1ZXN0c1VSTCgpfS8ke3N0YWtpbmdSZXF1ZXN0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nVHJhbnNhY3Rpb24uc3Rha2luZ1JlcXVlc3RJZCl9L3RyYW5zYWN0aW9ucy8ke3N0YWtpbmdUcmFuc2FjdGlvbi5pZH1gO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { ECDSA } from './../../../account-lib/mpc/tss';
2
+ import { DecryptableNShare, CombinedKey, EncryptedNShare } from './types';
3
+ declare type KeyShare = ECDSA.KeyShare;
4
+ /**
5
+ * Combines NShares to combine the final TSS key
6
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
7
+ *
8
+ * @param params.keyShare - TSS key share
9
+ * @param params.encryptedNShares - encrypted NShares with information on how to decrypt
10
+ * @param params.commonKeychain - expected common keychain of the combined key
11
+ * @returns {CombinedKey} combined TSS key
12
+ */
13
+ export declare function createCombinedKey(params: {
14
+ keyShare: KeyShare;
15
+ encryptedNShares: DecryptableNShare[];
16
+ commonKeychain: string;
17
+ }): Promise<CombinedKey>;
18
+ /**
19
+ * Prepares a NShare to be exchanged with other key holders.
20
+ * Output is in a format that is usable within BitGo's ecosystem.
21
+ *
22
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
23
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
24
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
25
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
26
+ * @returns { EncryptedNShare } encrypted Y Share
27
+ */
28
+ export declare function encryptNShare(params: {
29
+ keyShare: KeyShare;
30
+ recipientIndex: number;
31
+ recipientGpgPublicArmor: string;
32
+ senderGpgPrivateArmor: string;
33
+ }): Promise<EncryptedNShare>;
34
+ export {};
35
+ //# sourceMappingURL=ecdsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAS,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAI3F,aAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC/B;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CA+DvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB3B"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptNShare = exports.createCombinedKey = void 0;
4
+ const tss_1 = require("./../../../account-lib/mpc/tss");
5
+ const utils_1 = require("./../../utils");
6
+ /**
7
+ * Combines NShares to combine the final TSS key
8
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
9
+ *
10
+ * @param params.keyShare - TSS key share
11
+ * @param params.encryptedNShares - encrypted NShares with information on how to decrypt
12
+ * @param params.commonKeychain - expected common keychain of the combined key
13
+ * @returns {CombinedKey} combined TSS key
14
+ */
15
+ async function createCombinedKey(params) {
16
+ const MPC = new tss_1.Ecdsa();
17
+ const { keyShare, encryptedNShares, commonKeychain } = params;
18
+ const nShares = [];
19
+ let bitgoNShare;
20
+ let userNShare;
21
+ let backupNShare;
22
+ for (const encryptedNShare of encryptedNShares) {
23
+ const privateShare = await utils_1.readSignedMessage(encryptedNShare.nShare.encryptedPrivateShare, encryptedNShare.senderPublicArmor, encryptedNShare.recipientPrivateArmor);
24
+ const nShare = {
25
+ i: encryptedNShare.nShare.i,
26
+ j: encryptedNShare.nShare.j,
27
+ y: encryptedNShare.nShare.publicShare,
28
+ u: privateShare,
29
+ n: encryptedNShare.nShare.n,
30
+ chaincode: encryptedNShare.nShare.chaincode,
31
+ };
32
+ switch (encryptedNShare.nShare.j) {
33
+ case 1:
34
+ userNShare = nShare;
35
+ break;
36
+ case 2:
37
+ backupNShare = nShare;
38
+ break;
39
+ case 3:
40
+ bitgoNShare = nShare;
41
+ break;
42
+ default:
43
+ throw new Error('Invalid NShare index');
44
+ }
45
+ nShares.push(nShare);
46
+ }
47
+ if (!bitgoNShare) {
48
+ throw new Error('Missing BitGo N Share');
49
+ }
50
+ const combinedKey = MPC.keyCombine(keyShare.pShare, nShares);
51
+ if (combinedKey.xShare.y + combinedKey.xShare.chaincode !== commonKeychain) {
52
+ throw new Error('Common keychains do not match');
53
+ }
54
+ const signingMaterial = {
55
+ pShare: keyShare.pShare,
56
+ bitgoNShare,
57
+ backupNShare,
58
+ userNShare,
59
+ };
60
+ return {
61
+ signingMaterial,
62
+ commonKeychain,
63
+ };
64
+ }
65
+ exports.createCombinedKey = createCombinedKey;
66
+ /**
67
+ * Prepares a NShare to be exchanged with other key holders.
68
+ * Output is in a format that is usable within BitGo's ecosystem.
69
+ *
70
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
71
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
72
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
73
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
74
+ * @returns { EncryptedNShare } encrypted Y Share
75
+ */
76
+ async function encryptNShare(params) {
77
+ const { keyShare, recipientIndex, recipientGpgPublicArmor, senderGpgPrivateArmor } = params;
78
+ const nShare = keyShare.nShares[recipientIndex];
79
+ if (!nShare) {
80
+ throw new Error('Invalid recipient');
81
+ }
82
+ const publicShare = keyShare.pShare.y;
83
+ const privateShare = nShare.u;
84
+ const encryptedPrivateShare = await utils_1.encryptAndSignText(privateShare, recipientGpgPublicArmor, senderGpgPrivateArmor);
85
+ return {
86
+ i: nShare.i,
87
+ j: nShare.j,
88
+ n: nShare.n,
89
+ publicShare,
90
+ encryptedPrivateShare,
91
+ chaincode: nShare.chaincode,
92
+ };
93
+ }
94
+ exports.encryptNShare = encryptNShare;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUE4RDtBQUU5RCx5Q0FBc0U7QUFJdEU7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsTUFJdkM7SUFDQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQUssRUFBRSxDQUFDO0lBRXhCLE1BQU0sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzlELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUU3QixJQUFJLFdBQStCLENBQUM7SUFDcEMsSUFBSSxVQUE4QixDQUFDO0lBQ25DLElBQUksWUFBZ0MsQ0FBQztJQUVyQyxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0seUJBQWlCLENBQzFDLGVBQWUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQzVDLGVBQWUsQ0FBQyxpQkFBaUIsRUFDakMsZUFBZSxDQUFDLHFCQUFxQixDQUN0QyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQVc7WUFDckIsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDckMsQ0FBQyxFQUFFLFlBQVk7WUFDZixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVM7U0FDNUMsQ0FBQztRQUVGLFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUNsRDtJQUVELE1BQU0sZUFBZSxHQUFvQjtRQUN2QyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO0tBQ1gsQ0FBQztJQUVGLE9BQU87UUFDTCxlQUFlO1FBQ2YsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDO0FBbkVELDhDQW1FQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsTUFLbkM7SUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU1RixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDdEM7SUFFRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTlCLE1BQU0scUJBQXFCLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUVySCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsV0FBVztRQUNYLHFCQUFxQjtRQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUExQkQsc0NBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUNEU0EsIEVjZHNhIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IERlY3J5cHRhYmxlTlNoYXJlLCBDb21iaW5lZEtleSwgU2lnbmluZ01hdGVyaWFsLCBFbmNyeXB0ZWROU2hhcmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcblxudHlwZSBOU2hhcmUgPSBFQ0RTQS5OU2hhcmU7XG50eXBlIEtleVNoYXJlID0gRUNEU0EuS2V5U2hhcmU7XG4vKipcbiAqIENvbWJpbmVzIE5TaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBwYXJhbXMua2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlXG4gKiBAcGFyYW0gcGFyYW1zLmVuY3J5cHRlZE5TaGFyZXMgLSBlbmNyeXB0ZWQgTlNoYXJlcyB3aXRoIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkZWNyeXB0XG4gKiBAcGFyYW0gcGFyYW1zLmNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn0pOiBQcm9taXNlPENvbWJpbmVkS2V5PiB7XG4gIGNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuXG4gIGNvbnN0IHsga2V5U2hhcmUsIGVuY3J5cHRlZE5TaGFyZXMsIGNvbW1vbktleWNoYWluIH0gPSBwYXJhbXM7XG4gIGNvbnN0IG5TaGFyZXM6IE5TaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBOU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZE5TaGFyZSBvZiBlbmNyeXB0ZWROU2hhcmVzKSB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlID0gYXdhaXQgcmVhZFNpZ25lZE1lc3NhZ2UoXG4gICAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgIGVuY3J5cHRlZE5TaGFyZS5zZW5kZXJQdWJsaWNBcm1vcixcbiAgICAgIGVuY3J5cHRlZE5TaGFyZS5yZWNpcGllbnRQcml2YXRlQXJtb3JcbiAgICApO1xuXG4gICAgY29uc3QgblNoYXJlOiBOU2hhcmUgPSB7XG4gICAgICBpOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmksXG4gICAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgICB5OiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgICAgbjogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5uLFxuICAgICAgY2hhaW5jb2RlOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmNoYWluY29kZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWROU2hhcmUublNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlck5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cE5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvTlNoYXJlID0gblNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBuU2hhcmVzLnB1c2goblNoYXJlKTtcbiAgfVxuXG4gIGlmICghYml0Z29OU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gTiBTaGFyZScpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS5wU2hhcmUsIG5TaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkueFNoYXJlLnkgKyBjb21iaW5lZEtleS54U2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHBTaGFyZToga2V5U2hhcmUucFNoYXJlLFxuICAgIGJpdGdvTlNoYXJlLFxuICAgIGJhY2t1cE5TaGFyZSxcbiAgICB1c2VyTlNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgTlNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gcGFyYW1zLnNlbmRlckdwZ1ByaXZhdGVBcm1vciAtIHNlbmRlcidzIHByaXZhdGUgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEByZXR1cm5zIHsgRW5jcnlwdGVkTlNoYXJlIH0gZW5jcnlwdGVkIFkgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHROU2hhcmUocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcjtcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyR3BnUHJpdmF0ZUFybW9yOiBzdHJpbmc7XG59KTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgeyBrZXlTaGFyZSwgcmVjaXBpZW50SW5kZXgsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IgfSA9IHBhcmFtcztcblxuICBjb25zdCBuU2hhcmUgPSBrZXlTaGFyZS5uU2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCFuU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IGtleVNoYXJlLnBTaGFyZS55O1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBuU2hhcmUudTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSBhd2FpdCBlbmNyeXB0QW5kU2lnblRleHQocHJpdmF0ZVNoYXJlLCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yKTtcblxuICByZXR1cm4ge1xuICAgIGk6IG5TaGFyZS5pLFxuICAgIGo6IG5TaGFyZS5qLFxuICAgIG46IG5TaGFyZS5uLFxuICAgIHB1YmxpY1NoYXJlLFxuICAgIGVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBjaGFpbmNvZGU6IG5TaGFyZS5jaGFpbmNvZGUsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import * as ECDSAMethods from './ecdsa';
2
+ export * as ECDSAMethodTypes from './types';
3
+ export default ECDSAMethods;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,gBAAgB,MAAM,SAAS,CAAC;AAE5C,eAAe,YAAY,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ECDSAMethodTypes = void 0;
23
+ const ECDSAMethods = __importStar(require("./ecdsa"));
24
+ exports.ECDSAMethodTypes = __importStar(require("./types"));
25
+ exports.default = ECDSAMethods;
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBd0M7QUFFeEMsNERBQTRDO0FBRTVDLGtCQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEVDRFNBTWV0aG9kcyBmcm9tICcuL2VjZHNhJztcblxuZXhwb3J0ICogYXMgRUNEU0FNZXRob2RUeXBlcyBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgRUNEU0FNZXRob2RzO1xuIl19
@@ -0,0 +1,30 @@
1
+ import { ECDSA } from './../../../account-lib/mpc/tss';
2
+ export declare type EncryptedNShare = {
3
+ i: number;
4
+ j: number;
5
+ n: string;
6
+ publicShare: string;
7
+ encryptedPrivateShare: string;
8
+ chaincode: string;
9
+ };
10
+ export declare type DecryptableNShare = {
11
+ nShare: EncryptedNShare;
12
+ recipientPrivateArmor: string;
13
+ senderPublicArmor: string;
14
+ };
15
+ export declare type CombinedKey = {
16
+ commonKeychain: string;
17
+ signingMaterial: SigningMaterial;
18
+ };
19
+ export declare type SigningMaterial = {
20
+ pShare: ECDSA.PShare;
21
+ bitgoNShare: ECDSA.NShare;
22
+ backupNShare?: ECDSA.NShare;
23
+ userNShare?: ECDSA.NShare;
24
+ };
25
+ export declare type CreateCombinedKeyParams = {
26
+ keyShare: ECDSA.KeyShare;
27
+ encryptedNShares: DecryptableNShare[];
28
+ commonKeychain: string;
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAGvD,oBAAY,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAGF,oBAAY,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAGF,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;CAC3B,CAAC;AAEF,oBAAY,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFQ0RTQSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5cbi8vIE5TaGFyZSB0aGF0IGhhcyBiZWVuIGVuY3J5cHRlZCBhbmQgc2lnbmVkIHZpYSBHUEdcbmV4cG9ydCB0eXBlIEVuY3J5cHRlZE5TaGFyZSA9IHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIG46IHN0cmluZztcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgLy8gc2lnbmVkIGFuZCBlbmNyeXB0ZWQgZ3BnIGFybW9yXG4gIGVuY3J5cHRlZFByaXZhdGVTaGFyZTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn07XG5cbi8vIE5TaGFyZSB3aXRoIGluZm9ybWF0aW9uIG5lZWRlZCB0byBkZWNyeXB0IGFuZCB2ZXJpZnkgYSBHUEcgbWVzYXNnZVxuZXhwb3J0IHR5cGUgRGVjcnlwdGFibGVOU2hhcmUgPSB7XG4gIG5TaGFyZTogRW5jcnlwdGVkTlNoYXJlO1xuICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyUHVibGljQXJtb3I6IHN0cmluZztcbn07XG5cbi8vIEZpbmFsIFRTUyBcIktleXBhaXJcIlxuZXhwb3J0IHR5cGUgQ29tYmluZWRLZXkgPSB7XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG4gIHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsO1xufTtcblxuLy8gUHJpdmF0ZSBwb3J0aW9uIG9mIGEgVFNTIGtleSwgdGhpcyBtdXN0IGJlIGhhbmRsZWQgbGlrZSBhbnkgb3RoZXIgcHJpdmF0ZSBrZXlcbmV4cG9ydCB0eXBlIFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgcFNoYXJlOiBFQ0RTQS5QU2hhcmU7XG4gIGJpdGdvTlNoYXJlOiBFQ0RTQS5OU2hhcmU7XG4gIGJhY2t1cE5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbiAgdXNlck5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNvbWJpbmVkS2V5UGFyYW1zID0ge1xuICBrZXlTaGFyZTogRUNEU0EuS2V5U2hhcmU7XG4gIGVuY3J5cHRlZE5TaGFyZXM6IERlY3J5cHRhYmxlTlNoYXJlW107XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG59O1xuIl19
@@ -1,5 +1,6 @@
1
1
  import EDDSAMethods, { EDDSAMethodTypes } from './eddsa';
2
- export { EDDSAMethods, EDDSAMethodTypes };
2
+ import ECDSAMethods, { ECDSAMethodTypes } from './ecdsa';
3
+ export { EDDSAMethods, EDDSAMethodTypes, ECDSAMethods, ECDSAMethodTypes };
3
4
  export { ShareKeyPosition } from './types';
4
5
  export { createCombinedKey, createUserSignShare, createUserToBitGoGShare, offerUserToBitgoRShare, getBitgoToUserRShare, sendUserToBitgoGShare, getTxRequest, sendSignatureShare, encryptYShare, EncryptedYShare, DecryptableYShare, CombinedKey, SigningMaterial, } from './eddsa';
5
6
  //# sourceMappingURL=index.d.ts.map