@bitgo-beta/abstract-utxo 1.6.1-alpha.40 → 1.6.1-alpha.400

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 (175) hide show
  1. package/dist/src/abstractUtxoCoin.d.ts +209 -98
  2. package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/src/abstractUtxoCoin.js +314 -541
  4. package/dist/src/descriptor/NamedDescriptor.d.ts +20 -0
  5. package/dist/src/descriptor/NamedDescriptor.d.ts.map +1 -0
  6. package/dist/src/descriptor/NamedDescriptor.js +79 -0
  7. package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
  8. package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
  9. package/dist/src/descriptor/assertDescriptorWalletAddress.js +66 -0
  10. package/dist/src/descriptor/builder/builder.d.ts +13 -0
  11. package/dist/src/descriptor/builder/builder.d.ts.map +1 -0
  12. package/dist/src/descriptor/builder/builder.js +37 -0
  13. package/dist/src/descriptor/builder/index.d.ts +3 -0
  14. package/dist/src/descriptor/builder/index.d.ts.map +1 -0
  15. package/dist/src/descriptor/builder/index.js +8 -0
  16. package/dist/src/descriptor/builder/parse.d.ts +5 -0
  17. package/dist/src/descriptor/builder/parse.d.ts.map +1 -0
  18. package/dist/src/descriptor/builder/parse.js +149 -0
  19. package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
  20. package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
  21. package/dist/src/descriptor/createWallet/createDescriptorWallet.js +74 -0
  22. package/dist/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
  23. package/dist/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
  24. package/dist/src/descriptor/createWallet/createDescriptors.js +33 -0
  25. package/dist/src/descriptor/createWallet/index.d.ts +3 -0
  26. package/dist/src/descriptor/createWallet/index.d.ts.map +1 -0
  27. package/dist/src/descriptor/createWallet/index.js +19 -0
  28. package/dist/src/descriptor/descriptorWallet.d.ts +19 -0
  29. package/dist/src/descriptor/descriptorWallet.d.ts.map +1 -0
  30. package/dist/src/descriptor/descriptorWallet.js +54 -0
  31. package/dist/src/descriptor/index.d.ts +8 -0
  32. package/dist/src/descriptor/index.d.ts.map +1 -0
  33. package/dist/src/descriptor/index.js +53 -0
  34. package/dist/src/descriptor/validatePolicy.d.ts +22 -0
  35. package/dist/src/descriptor/validatePolicy.d.ts.map +1 -0
  36. package/dist/src/descriptor/validatePolicy.js +92 -0
  37. package/dist/src/index.d.ts +4 -0
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +32 -2
  40. package/dist/src/keychains.d.ts +48 -0
  41. package/dist/src/keychains.d.ts.map +1 -0
  42. package/dist/src/keychains.js +104 -0
  43. package/dist/src/names.d.ts +26 -0
  44. package/dist/src/names.d.ts.map +1 -0
  45. package/dist/src/names.js +214 -0
  46. package/dist/src/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
  47. package/dist/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
  48. package/dist/src/offlineVault/OfflineVaultHalfSigned.js +59 -0
  49. package/dist/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
  50. package/dist/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
  51. package/dist/src/offlineVault/OfflineVaultSignable.js +55 -0
  52. package/dist/src/offlineVault/TransactionExplanation.d.ts +15 -0
  53. package/dist/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
  54. package/dist/src/offlineVault/TransactionExplanation.js +16 -0
  55. package/dist/src/offlineVault/descriptor/index.d.ts +2 -0
  56. package/dist/src/offlineVault/descriptor/index.d.ts.map +1 -0
  57. package/dist/src/offlineVault/descriptor/index.js +18 -0
  58. package/dist/src/offlineVault/descriptor/transaction.d.ts +38 -0
  59. package/dist/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
  60. package/dist/src/offlineVault/descriptor/transaction.js +80 -0
  61. package/dist/src/offlineVault/index.d.ts +6 -0
  62. package/dist/src/offlineVault/index.d.ts.map +1 -0
  63. package/dist/src/offlineVault/index.js +44 -0
  64. package/dist/src/recovery/RecoveryProvider.d.ts +1 -1
  65. package/dist/src/recovery/RecoveryProvider.d.ts.map +1 -1
  66. package/dist/src/recovery/RecoveryProvider.js +2 -4
  67. package/dist/src/recovery/backupKeyRecovery.d.ts +42 -16
  68. package/dist/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  69. package/dist/src/recovery/backupKeyRecovery.js +174 -102
  70. package/dist/src/recovery/baseApi.d.ts +3 -6
  71. package/dist/src/recovery/baseApi.d.ts.map +1 -1
  72. package/dist/src/recovery/baseApi.js +6 -6
  73. package/dist/src/recovery/coingeckoApi.d.ts +0 -3
  74. package/dist/src/recovery/coingeckoApi.d.ts.map +1 -1
  75. package/dist/src/recovery/coingeckoApi.js +1 -4
  76. package/dist/src/recovery/crossChainRecovery.d.ts +5 -4
  77. package/dist/src/recovery/crossChainRecovery.d.ts.map +1 -1
  78. package/dist/src/recovery/crossChainRecovery.js +95 -25
  79. package/dist/src/recovery/index.d.ts +0 -1
  80. package/dist/src/recovery/index.d.ts.map +1 -1
  81. package/dist/src/recovery/index.js +6 -3
  82. package/dist/src/recovery/mempoolApi.d.ts.map +1 -1
  83. package/dist/src/recovery/mempoolApi.js +10 -7
  84. package/dist/src/replayProtection.js +37 -5
  85. package/dist/src/sign.d.ts +31 -8
  86. package/dist/src/sign.d.ts.map +1 -1
  87. package/dist/src/sign.js +116 -15
  88. package/dist/src/transaction/bip322.d.ts +27 -0
  89. package/dist/src/transaction/bip322.d.ts.map +1 -0
  90. package/dist/src/transaction/bip322.js +125 -0
  91. package/dist/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
  92. package/dist/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
  93. package/dist/src/transaction/common/verifyPayGoAmount.js +3 -0
  94. package/dist/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  95. package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  96. package/dist/src/transaction/descriptor/explainPsbt.js +80 -0
  97. package/dist/src/transaction/descriptor/index.d.ts +7 -0
  98. package/dist/src/transaction/descriptor/index.d.ts.map +1 -0
  99. package/dist/src/transaction/descriptor/index.js +14 -0
  100. package/dist/src/transaction/descriptor/parse.d.ts +15 -0
  101. package/dist/src/transaction/descriptor/parse.d.ts.map +1 -0
  102. package/dist/src/transaction/descriptor/parse.js +116 -0
  103. package/dist/src/transaction/descriptor/parseToAmountType.d.ts +13 -0
  104. package/dist/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
  105. package/dist/src/transaction/descriptor/parseToAmountType.js +60 -0
  106. package/dist/src/transaction/descriptor/recipient.d.ts +5 -0
  107. package/dist/src/transaction/descriptor/recipient.d.ts.map +1 -0
  108. package/dist/src/transaction/descriptor/recipient.js +3 -0
  109. package/dist/src/transaction/descriptor/signPsbt.d.ts +25 -0
  110. package/dist/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
  111. package/dist/src/transaction/descriptor/signPsbt.js +43 -0
  112. package/dist/src/transaction/descriptor/verifyTransaction.d.ts +33 -0
  113. package/dist/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
  114. package/dist/src/transaction/descriptor/verifyTransaction.js +105 -0
  115. package/dist/src/transaction/explainTransaction.d.ts +17 -0
  116. package/dist/src/transaction/explainTransaction.d.ts.map +1 -0
  117. package/dist/src/transaction/explainTransaction.js +67 -0
  118. package/dist/src/transaction/fetchInputs.d.ts +26 -0
  119. package/dist/src/transaction/fetchInputs.d.ts.map +1 -0
  120. package/dist/src/transaction/fetchInputs.js +109 -0
  121. package/dist/src/transaction/fixedScript/explainTransaction.d.ts +32 -0
  122. package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  123. package/dist/src/transaction/fixedScript/explainTransaction.js +317 -0
  124. package/dist/src/transaction/fixedScript/index.d.ts +6 -0
  125. package/dist/src/transaction/fixedScript/index.d.ts.map +1 -0
  126. package/dist/src/transaction/fixedScript/index.js +13 -0
  127. package/dist/src/transaction/fixedScript/parseOutput.d.ts +26 -0
  128. package/dist/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  129. package/dist/src/transaction/fixedScript/parseOutput.js +213 -0
  130. package/dist/src/transaction/fixedScript/parseTransaction.d.ts +7 -0
  131. package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  132. package/dist/src/transaction/fixedScript/parseTransaction.js +203 -0
  133. package/dist/src/transaction/fixedScript/signTransaction.d.ts +18 -0
  134. package/dist/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
  135. package/dist/src/transaction/fixedScript/signTransaction.js +100 -0
  136. package/dist/src/transaction/fixedScript/verifyTransaction.d.ts +4 -0
  137. package/dist/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  138. package/dist/src/transaction/fixedScript/verifyTransaction.js +176 -0
  139. package/dist/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
  140. package/dist/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
  141. package/dist/src/transaction/getPayGoVerificationPubkey.js +53 -0
  142. package/dist/src/transaction/index.d.ts +7 -0
  143. package/dist/src/transaction/index.d.ts.map +1 -0
  144. package/dist/src/transaction/index.js +49 -0
  145. package/dist/src/transaction/outputDifference.d.ts +40 -0
  146. package/dist/src/transaction/outputDifference.d.ts.map +1 -0
  147. package/dist/src/transaction/outputDifference.js +47 -0
  148. package/dist/src/transaction/parseTransaction.d.ts +3 -0
  149. package/dist/src/transaction/parseTransaction.d.ts.map +1 -0
  150. package/dist/src/transaction/parseTransaction.js +48 -0
  151. package/dist/src/transaction/recipient.d.ts +29 -0
  152. package/dist/src/transaction/recipient.d.ts.map +1 -0
  153. package/dist/src/transaction/recipient.js +88 -0
  154. package/dist/src/transaction/signTransaction.d.ts +6 -0
  155. package/dist/src/transaction/signTransaction.d.ts.map +1 -0
  156. package/dist/src/transaction/signTransaction.js +102 -0
  157. package/dist/src/transaction/verifyTransaction.d.ts +4 -0
  158. package/dist/src/transaction/verifyTransaction.d.ts.map +1 -0
  159. package/dist/src/transaction/verifyTransaction.js +50 -0
  160. package/dist/src/verifyKey.d.ts +28 -0
  161. package/dist/src/verifyKey.d.ts.map +1 -0
  162. package/dist/src/verifyKey.js +164 -0
  163. package/dist/src/wallet.d.ts +15 -0
  164. package/dist/src/wallet.d.ts.map +1 -0
  165. package/dist/src/wallet.js +8 -0
  166. package/package.json +19 -13
  167. package/.eslintignore +0 -5
  168. package/CHANGELOG.md +0 -235
  169. package/dist/src/parseOutput.d.ts +0 -22
  170. package/dist/src/parseOutput.d.ts.map +0 -1
  171. package/dist/src/parseOutput.js +0 -181
  172. package/dist/src/recovery/smartbitApi.d.ts +0 -11
  173. package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
  174. package/dist/src/recovery/smartbitApi.js +0 -36
  175. package/dist/tsconfig.tsbuildinfo +0 -8021
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.utxoCoinsTestnet = exports.utxoCoinsMainnet = void 0;
37
+ exports.isUtxoCoinNameMainnet = isUtxoCoinNameMainnet;
38
+ exports.isUtxoCoinNameTestnet = isUtxoCoinNameTestnet;
39
+ exports.isUtxoCoinName = isUtxoCoinName;
40
+ exports.getFamilyFromNetwork = getFamilyFromNetwork;
41
+ exports.getChainFromNetwork = getChainFromNetwork;
42
+ exports.getNetworkFromChain = getNetworkFromChain;
43
+ exports.getFullNameFromNetwork = getFullNameFromNetwork;
44
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
45
+ exports.utxoCoinsMainnet = ['btc', 'bch', 'bcha', 'bsv', 'btg', 'dash', 'doge', 'ltc', 'zec'];
46
+ exports.utxoCoinsTestnet = [
47
+ 'tbtc',
48
+ 'tbch',
49
+ 'tbsv',
50
+ 'tdash',
51
+ 'tdoge',
52
+ 'tltc',
53
+ 'tzec',
54
+ 'tbtcsig',
55
+ 'tbtc4',
56
+ 'tbtcbgsig',
57
+ ];
58
+ function isUtxoCoinNameMainnet(coinName) {
59
+ return exports.utxoCoinsMainnet.includes(coinName);
60
+ }
61
+ function isUtxoCoinNameTestnet(coinName) {
62
+ return exports.utxoCoinsTestnet.includes(coinName);
63
+ }
64
+ function isUtxoCoinName(coinName) {
65
+ return isUtxoCoinNameMainnet(coinName) || isUtxoCoinNameTestnet(coinName);
66
+ }
67
+ function getNetworkName(n) {
68
+ const name = utxolib.getNetworkName(n);
69
+ if (!name) {
70
+ throw new Error('Unknown network');
71
+ }
72
+ return name;
73
+ }
74
+ /**
75
+ * @param n
76
+ * @returns the family name for a network. Testnets and mainnets of the same coin share the same family name.
77
+ */
78
+ function getFamilyFromNetwork(n) {
79
+ switch (getNetworkName(n)) {
80
+ case 'bitcoin':
81
+ case 'testnet':
82
+ case 'bitcoinPublicSignet':
83
+ case 'bitcoinTestnet4':
84
+ case 'bitcoinBitGoSignet':
85
+ return 'btc';
86
+ case 'bitcoincash':
87
+ case 'bitcoincashTestnet':
88
+ return 'bch';
89
+ case 'ecash':
90
+ case 'ecashTest':
91
+ return 'bcha';
92
+ case 'bitcoingold':
93
+ case 'bitcoingoldTestnet':
94
+ return 'btg';
95
+ case 'bitcoinsv':
96
+ case 'bitcoinsvTestnet':
97
+ return 'bsv';
98
+ case 'dash':
99
+ case 'dashTest':
100
+ return 'dash';
101
+ case 'dogecoin':
102
+ case 'dogecoinTest':
103
+ return 'doge';
104
+ case 'litecoin':
105
+ case 'litecoinTest':
106
+ return 'ltc';
107
+ case 'zcash':
108
+ case 'zcashTest':
109
+ return 'zec';
110
+ }
111
+ }
112
+ /**
113
+ * Get the chain name for a network.
114
+ * The chain is different for every network.
115
+ */
116
+ function getChainFromNetwork(n) {
117
+ switch (getNetworkName(n)) {
118
+ case 'bitcoinPublicSignet':
119
+ return 'tbtcsig';
120
+ case 'bitcoinTestnet4':
121
+ return 'tbtc4';
122
+ case 'bitcoinBitGoSignet':
123
+ return 'tbtcbgsig';
124
+ case 'bitcoin':
125
+ case 'testnet':
126
+ case 'bitcoincash':
127
+ case 'bitcoincashTestnet':
128
+ case 'ecash':
129
+ case 'ecashTest':
130
+ case 'bitcoingold':
131
+ case 'bitcoingoldTestnet':
132
+ case 'bitcoinsv':
133
+ case 'bitcoinsvTestnet':
134
+ case 'dash':
135
+ case 'dashTest':
136
+ case 'dogecoin':
137
+ case 'dogecoinTest':
138
+ case 'litecoin':
139
+ case 'litecoinTest':
140
+ case 'zcash':
141
+ case 'zcashTest':
142
+ const mainnetName = getFamilyFromNetwork(n);
143
+ return utxolib.isTestnet(n) ? `t${mainnetName}` : mainnetName;
144
+ }
145
+ }
146
+ /**
147
+ * @param coinName - the name of the coin (e.g. 'btc', 'bch', 'ltc'). Also called 'chain' in some contexts.
148
+ * @returns the network for a coin. This is the mainnet network for the coin.
149
+ */
150
+ function getNetworkFromChain(coinName) {
151
+ for (const network of utxolib.getNetworkList()) {
152
+ if (getChainFromNetwork(network) === coinName) {
153
+ return network;
154
+ }
155
+ }
156
+ throw new Error(`Unknown chain ${coinName}`);
157
+ }
158
+ function getFullNameFromNetwork(n) {
159
+ const name = getNetworkName(n);
160
+ let prefix;
161
+ switch (name) {
162
+ case 'bitcoinTestnet4':
163
+ prefix = 'Testnet4 ';
164
+ break;
165
+ case 'bitcoinPublicSignet':
166
+ prefix = 'Public Signet ';
167
+ break;
168
+ case 'bitcoinBitGoSignet':
169
+ prefix = 'BitGo Signet ';
170
+ break;
171
+ default:
172
+ if (utxolib.isTestnet(n)) {
173
+ prefix = 'Testnet ';
174
+ }
175
+ else {
176
+ prefix = '';
177
+ }
178
+ }
179
+ switch (name) {
180
+ case 'bitcoin':
181
+ case 'testnet':
182
+ case 'bitcoinTestnet4':
183
+ case 'bitcoinPublicSignet':
184
+ case 'bitcoinBitGoSignet':
185
+ return prefix + 'Bitcoin';
186
+ case 'bitcoincash':
187
+ case 'bitcoincashTestnet':
188
+ return prefix + 'Bitcoin Cash';
189
+ case 'ecash':
190
+ case 'ecashTest':
191
+ return prefix + 'Bitcoin ABC';
192
+ case 'bitcoingold':
193
+ case 'bitcoingoldTestnet':
194
+ return prefix + 'Bitcoin Gold';
195
+ case 'bitcoinsv':
196
+ case 'bitcoinsvTestnet':
197
+ return prefix + 'Bitcoin SV';
198
+ case 'dash':
199
+ case 'dashTest':
200
+ return prefix + 'Dash';
201
+ case 'dogecoin':
202
+ case 'dogecoinTest':
203
+ return prefix + 'Dogecoin';
204
+ case 'litecoin':
205
+ case 'litecoinTest':
206
+ return prefix + 'Litecoin';
207
+ case 'zcash':
208
+ case 'zcashTest':
209
+ return prefix + 'ZCash';
210
+ default:
211
+ throw new Error('Unknown network');
212
+ }
213
+ }
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLHNEQUVDO0FBRUQsc0RBRUM7QUFFRCx3Q0FFQztBQWNELG9EQWlDQztBQU1ELGtEQTZCQztBQU1ELGtEQU9DO0FBRUQsd0RBd0RDO0FBdkxELDhEQUFnRDtBQUVuQyxRQUFBLGdCQUFnQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQVUsQ0FBQztBQUMvRixRQUFBLGdCQUFnQixHQUFHO0lBQzlCLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLFdBQVc7Q0FDSCxDQUFDO0FBTVgsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0I7SUFDcEQsT0FBTyx3QkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBK0IsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxRQUFnQjtJQUNwRCxPQUFPLHdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUErQixDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxRQUFnQjtJQUM3QyxPQUFPLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxDQUFrQjtJQUN4QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxL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QUFDO1FBQ2hCLEtBQUssY0FBYztZQUNqQixPQUFPLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFDN0IsS0FBSyxVQUFVLENBQUM7UUFDaEIsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUM3QixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUMxQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5leHBvcnQgY29uc3QgdXR4b0NvaW5zTWFpbm5ldCA9IFsnYnRjJywgJ2JjaCcsICdiY2hhJywgJ2JzdicsICdidGcnLCAnZGFzaCcsICdkb2dlJywgJ2x0YycsICd6ZWMnXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCB1dHhvQ29pbnNUZXN0bmV0ID0gW1xuICAndGJ0YycsXG4gICd0YmNoJyxcbiAgJ3Ric3YnLFxuICAndGRhc2gnLFxuICAndGRvZ2UnLFxuICAndGx0YycsXG4gICd0emVjJyxcbiAgJ3RidGNzaWcnLFxuICAndGJ0YzQnLFxuICAndGJ0Y2Jnc2lnJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFV0eG9Db2luTmFtZU1haW5uZXQgPSAodHlwZW9mIHV0eG9Db2luc01haW5uZXQpW251bWJlcl07XG5leHBvcnQgdHlwZSBVdHhvQ29pbk5hbWVUZXN0bmV0ID0gKHR5cGVvZiB1dHhvQ29pbnNUZXN0bmV0KVtudW1iZXJdO1xuZXhwb3J0IHR5cGUgVXR4b0NvaW5OYW1lID0gVXR4b0NvaW5OYW1lTWFpbm5ldCB8IFV0eG9Db2luTmFtZVRlc3RuZXQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZU1haW5uZXQge1xuICByZXR1cm4gdXR4b0NvaW5zTWFpbm5ldC5pbmNsdWRlcyhjb2luTmFtZSBhcyBVdHhvQ29pbk5hbWVNYWlubmV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZTogc3RyaW5nKTogY29pbk5hbWUgaXMgVXR4b0NvaW5OYW1lVGVzdG5ldCB7XG4gIHJldHVybiB1dHhvQ29pbnNUZXN0bmV0LmluY2x1ZGVzKGNvaW5OYW1lIGFzIFV0eG9Db2luTmFtZVRlc3RuZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdHhvQ29pbk5hbWUoY29pbk5hbWU6IHN0cmluZyk6IGNvaW5OYW1lIGlzIFV0eG9Db2luTmFtZSB7XG4gIHJldHVybiBpc1V0eG9Db2luTmFtZU1haW5uZXQoY29pbk5hbWUpIHx8IGlzVXR4b0NvaW5OYW1lVGVzdG5ldChjb2luTmFtZSk7XG59XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmtOYW1lKG46IHV0eG9saWIuTmV0d29yayk6IHV0eG9saWIuTmV0d29ya05hbWUge1xuICBjb25zdCBuYW1lID0gdXR4b2xpYi5nZXROZXR3b3JrTmFtZShuKTtcbiAgaWYgKCFuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5ldHdvcmsnKTtcbiAgfVxuICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gblxuICogQHJldHVybnMgdGhlIGZhbWlseSBuYW1lIGZvciBhIG5ldHdvcmsuIFRlc3RuZXRzIGFuZCBtYWlubmV0cyBvZiB0aGUgc2FtZSBjb2luIHNoYXJlIHRoZSBzYW1lIGZhbWlseSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFtaWx5RnJvbU5ldHdvcmsobjogdXR4b2xpYi5OZXR3b3JrKTogVXR4b0NvaW5OYW1lTWFpbm5ldCB7XG4gIHN3aXRjaCAoZ2V0TmV0d29ya05hbWUobikpIHtcbiAgICBjYXNlICdiaXRjb2luJzpcbiAgICBjYXNlICd0ZXN0bmV0JzpcbiAgICBjYXNlICdiaXRjb2luUHVibGljU2lnbmV0JzpcbiAgICBjYXNlICdiaXRjb2luVGVzdG5ldDQnOlxuICAgIGNhc2UgJ2JpdGNvaW5CaXRHb1NpZ25ldCc6XG4gICAgICByZXR1cm4gJ2J0Yyc7XG4gICAgY2FzZSAnYml0Y29pbmNhc2gnOlxuICAgIGNhc2UgJ2JpdGNvaW5jYXNoVGVzdG5ldCc6XG4gICAgICByZXR1cm4gJ2JjaCc7XG4gICAgY2FzZSAnZWNhc2gnOlxuICAgIGNhc2UgJ2VjYXNoVGVzdCc6XG4gICAgICByZXR1cm4gJ2JjaGEnO1xuICAgIGNhc2UgJ2JpdGNvaW5nb2xkJzpcbiAgICBjYXNlICdiaXRjb2luZ29sZFRlc3RuZXQnOlxuICAgICAgcmV0dXJuICdidGcnO1xuICAgIGNhc2UgJ2JpdGNvaW5zdic6XG4gICAgY2FzZSAnYml0Y29pbnN2VGVzdG5ldCc6XG4gICAgICByZXR1cm4gJ2Jzdic7XG4gICAgY2FzZSAnZGFzaCc6XG4gICAgY2FzZSAnZGFzaFRlc3QnOlxuICAgICAgcmV0dXJuICdkYXNoJztcbiAgICBjYXNlICdkb2dlY29pbic6XG4gICAgY2FzZSAnZG9nZWNvaW5UZXN0JzpcbiAgICAgIHJldHVybiAnZG9nZSc7XG4gICAgY2FzZSAnbGl0ZWNvaW4nOlxuICAgIGNhc2UgJ2xpdGVjb2luVGVzdCc6XG4gICAgICByZXR1cm4gJ2x0Yyc7XG4gICAgY2FzZSAnemNhc2gnOlxuICAgIGNhc2UgJ3pjYXNoVGVzdCc6XG4gICAgICByZXR1cm4gJ3plYyc7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNoYWluIG5hbWUgZm9yIGEgbmV0d29yay5cbiAqIFRoZSBjaGFpbiBpcyBkaWZmZXJlbnQgZm9yIGV2ZXJ5IG5ldHdvcmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFpbkZyb21OZXR3b3JrKG46IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIHN3aXRjaCAoZ2V0TmV0d29ya05hbWUobikpIHtcbiAgICBjYXNlICdiaXRjb2luUHVibGljU2lnbmV0JzpcbiAgICAgIHJldHVybiAndGJ0Y3NpZyc7XG4gICAgY2FzZSAnYml0Y29pblRlc3RuZXQ0JzpcbiAgICAgIHJldHVybiAndGJ0YzQnO1xuICAgIGNhc2UgJ2JpdGNvaW5CaXRHb1NpZ25ldCc6XG4gICAgICByZXR1cm4gJ3RidGNiZ3NpZyc7XG4gICAgY2FzZSAnYml0Y29pbic6XG4gICAgY2FzZSAndGVzdG5ldCc6XG4gICAgY2FzZSAnYml0Y29pbmNhc2gnOlxuICAgIGNhc2UgJ2JpdGNvaW5jYXNoVGVzdG5ldCc6XG4gICAgY2FzZSAnZWNhc2gnOlxuICAgIGNhc2UgJ2VjYXNoVGVzdCc6XG4gICAgY2FzZSAnYml0Y29pbmdvbGQnOlxuICAgIGNhc2UgJ2JpdGNvaW5nb2xkVGVzdG5ldCc6XG4gICAgY2FzZSAnYml0Y29pbnN2JzpcbiAgICBjYXNlICdiaXRjb2luc3ZUZXN0bmV0JzpcbiAgICBjYXNlICdkYXNoJzpcbiAgICBjYXNlICdkYXNoVGVzdCc6XG4gICAgY2FzZSAnZG9nZWNvaW4nOlxuICAgIGNhc2UgJ2RvZ2Vjb2luVGVzdCc6XG4gICAgY2FzZSAnbGl0ZWNvaW4nOlxuICAgIGNhc2UgJ2xpdGVjb2luVGVzdCc6XG4gICAgY2FzZSAnemNhc2gnOlxuICAgIGNhc2UgJ3pjYXNoVGVzdCc6XG4gICAgICBjb25zdCBtYWlubmV0TmFtZSA9IGdldEZhbWlseUZyb21OZXR3b3JrKG4pO1xuICAgICAgcmV0dXJuIHV0eG9saWIuaXNUZXN0bmV0KG4pID8gYHQke21haW5uZXROYW1lfWAgOiBtYWlubmV0TmFtZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSBjb2luTmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBjb2luIChlLmcuICdidGMnLCAnYmNoJywgJ2x0YycpLiBBbHNvIGNhbGxlZCAnY2hhaW4nIGluIHNvbWUgY29udGV4dHMuXG4gKiBAcmV0dXJucyB0aGUgbmV0d29yayBmb3IgYSBjb2luLiBUaGlzIGlzIHRoZSBtYWlubmV0IG5ldHdvcmsgZm9yIHRoZSBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV0d29ya0Zyb21DaGFpbihjb2luTmFtZTogc3RyaW5nKTogdXR4b2xpYi5OZXR3b3JrIHtcbiAgZm9yIChjb25zdCBuZXR3b3JrIG9mIHV0eG9saWIuZ2V0TmV0d29ya0xpc3QoKSkge1xuICAgIGlmIChnZXRDaGFpbkZyb21OZXR3b3JrKG5ldHdvcmspID09PSBjb2luTmFtZSkge1xuICAgICAgcmV0dXJuIG5ldHdvcms7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjaGFpbiAke2NvaW5OYW1lfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnVsbE5hbWVGcm9tTmV0d29yayhuOiB1dHhvbGliLk5ldHdvcmspOiBzdHJpbmcge1xuICBjb25zdCBuYW1lID0gZ2V0TmV0d29ya05hbWUobik7XG5cbiAgbGV0IHByZWZpeDogc3RyaW5nO1xuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdiaXRjb2luVGVzdG5ldDQnOlxuICAgICAgcHJlZml4ID0gJ1Rlc3RuZXQ0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiaXRjb2luUHVibGljU2lnbmV0JzpcbiAgICAgIHByZWZpeCA9ICdQdWJsaWMgU2lnbmV0ICc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiaXRjb2luQml0R29TaWduZXQnOlxuICAgICAgcHJlZml4ID0gJ0JpdEdvIFNpZ25ldCAnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh1dHhvbGliLmlzVGVzdG5ldChuKSkge1xuICAgICAgICBwcmVmaXggPSAnVGVzdG5ldCAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZml4ID0gJyc7XG4gICAgICB9XG4gIH1cblxuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdiaXRjb2luJzpcbiAgICBjYXNlICd0ZXN0bmV0JzpcbiAgICBjYXNlICdiaXRjb2luVGVzdG5ldDQnOlxuICAgIGNhc2UgJ2JpdGNvaW5QdWJsaWNTaWduZXQnOlxuICAgIGNhc2UgJ2JpdGNvaW5CaXRHb1NpZ25ldCc6XG4gICAgICByZXR1cm4gcHJlZml4ICsgJ0JpdGNvaW4nO1xuICAgIGNhc2UgJ2JpdGNvaW5jYXNoJzpcbiAgICBjYXNlICdiaXRjb2luY2FzaFRlc3RuZXQnOlxuICAgICAgcmV0dXJuIHByZWZpeCArICdCaXRjb2luIENhc2gnO1xuICAgIGNhc2UgJ2VjYXNoJzpcbiAgICBjYXNlICdlY2FzaFRlc3QnOlxuICAgICAgcmV0dXJuIHByZWZpeCArICdCaXRjb2luIEFCQyc7XG4gICAgY2FzZSAnYml0Y29pbmdvbGQnOlxuICAgIGNhc2UgJ2JpdGNvaW5nb2xkVGVzdG5ldCc6XG4gICAgICByZXR1cm4gcHJlZml4ICsgJ0JpdGNvaW4gR29sZCc7XG4gICAgY2FzZSAnYml0Y29pbnN2JzpcbiAgICBjYXNlICdiaXRjb2luc3ZUZXN0bmV0JzpcbiAgICAgIHJldHVybiBwcmVmaXggKyAnQml0Y29pbiBTVic7XG4gICAgY2FzZSAnZGFzaCc6XG4gICAgY2FzZSAnZGFzaFRlc3QnOlxuICAgICAgcmV0dXJuIHByZWZpeCArICdEYXNoJztcbiAgICBjYXNlICdkb2dlY29pbic6XG4gICAgY2FzZSAnZG9nZWNvaW5UZXN0JzpcbiAgICAgIHJldHVybiBwcmVmaXggKyAnRG9nZWNvaW4nO1xuICAgIGNhc2UgJ2xpdGVjb2luJzpcbiAgICBjYXNlICdsaXRlY29pblRlc3QnOlxuICAgICAgcmV0dXJuIHByZWZpeCArICdMaXRlY29pbic7XG4gICAgY2FzZSAnemNhc2gnOlxuICAgIGNhc2UgJ3pjYXNoVGVzdCc6XG4gICAgICByZXR1cm4gcHJlZml4ICsgJ1pDYXNoJztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG5ldHdvcmsnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
2
+ export type OfflineVaultHalfSigned = {
3
+ halfSigned: {
4
+ txHex: string;
5
+ };
6
+ };
7
+ export declare function createHalfSigned(coin: string, prv: string | BIP32Interface, derivationId: string, tx: unknown): OfflineVaultHalfSigned;
8
+ //# sourceMappingURL=OfflineVaultHalfSigned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OfflineVaultHalfSigned.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/OfflineVaultHalfSigned.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B,CAAC;AAMF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,cAAc,EAC5B,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,OAAO,GACV,sBAAsB,CAaxB"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createHalfSigned = createHalfSigned;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
39
+ const names_1 = require("../names");
40
+ const OfflineVaultSignable_1 = require("./OfflineVaultSignable");
41
+ const descriptor_1 = require("./descriptor");
42
+ function createHalfSignedFromPsbt(psbt) {
43
+ return { halfSigned: { txHex: psbt.toHex() } };
44
+ }
45
+ function createHalfSigned(coin, prv, derivationId, tx) {
46
+ const network = (0, names_1.getNetworkFromChain)(coin);
47
+ if (typeof prv === 'string') {
48
+ prv = utxolib.bip32.fromBase58(prv);
49
+ }
50
+ prv = sdk_core_1.BaseCoin.deriveKeyWithSeedBip32(prv, derivationId).key;
51
+ if (!OfflineVaultSignable_1.OfflineVaultSignable.is(tx)) {
52
+ throw new Error('unsupported transaction type');
53
+ }
54
+ if (descriptor_1.DescriptorTransaction.is(tx)) {
55
+ return createHalfSignedFromPsbt((0, descriptor_1.getHalfSignedPsbt)(tx, prv, network));
56
+ }
57
+ throw new Error('unsupported transaction type');
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmbGluZVZhdWx0SGFsZlNpZ25lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvT2ZmbGluZVZhdWx0SGFsZlNpZ25lZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSw0Q0FrQkM7QUFuQ0QsOERBQWdEO0FBRWhELG1EQUFnRDtBQUVoRCxvQ0FBK0M7QUFFL0MsaUVBQThEO0FBQzlELDZDQUF3RTtBQU14RSxTQUFTLHdCQUF3QixDQUFDLElBQWtCO0lBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLElBQVksRUFDWixHQUE0QixFQUM1QixZQUFvQixFQUNwQixFQUFXO0lBRVgsTUFBTSxPQUFPLEdBQUcsSUFBQSwyQkFBbUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsR0FBRyxHQUFHLG1CQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUM3RCxJQUFJLENBQUMsMkNBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLGtDQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sd0JBQXdCLENBQUMsSUFBQSw4QkFBaUIsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBnZXROZXR3b3JrRnJvbUNoYWluIH0gZnJvbSAnLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSB9IGZyb20gJy4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHsgRGVzY3JpcHRvclRyYW5zYWN0aW9uLCBnZXRIYWxmU2lnbmVkUHNidCB9IGZyb20gJy4vZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIE9mZmxpbmVWYXVsdEhhbGZTaWduZWQgPSB7XG4gIGhhbGZTaWduZWQ6IHsgdHhIZXg6IHN0cmluZyB9O1xufTtcblxuZnVuY3Rpb24gY3JlYXRlSGFsZlNpZ25lZEZyb21Qc2J0KHBzYnQ6IHV0eG9saWIuUHNidCk6IE9mZmxpbmVWYXVsdEhhbGZTaWduZWQge1xuICByZXR1cm4geyBoYWxmU2lnbmVkOiB7IHR4SGV4OiBwc2J0LnRvSGV4KCkgfSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSGFsZlNpZ25lZChcbiAgY29pbjogc3RyaW5nLFxuICBwcnY6IHN0cmluZyB8IEJJUDMySW50ZXJmYWNlLFxuICBkZXJpdmF0aW9uSWQ6IHN0cmluZyxcbiAgdHg6IHVua25vd25cbik6IE9mZmxpbmVWYXVsdEhhbGZTaWduZWQge1xuICBjb25zdCBuZXR3b3JrID0gZ2V0TmV0d29ya0Zyb21DaGFpbihjb2luKTtcbiAgaWYgKHR5cGVvZiBwcnYgPT09ICdzdHJpbmcnKSB7XG4gICAgcHJ2ID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHBydik7XG4gIH1cbiAgcHJ2ID0gQmFzZUNvaW4uZGVyaXZlS2V5V2l0aFNlZWRCaXAzMihwcnYsIGRlcml2YXRpb25JZCkua2V5O1xuICBpZiAoIU9mZmxpbmVWYXVsdFNpZ25hYmxlLmlzKHR4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhbGZTaWduZWRGcm9tUHNidChnZXRIYWxmU2lnbmVkUHNidCh0eCwgcHJ2LCBuZXR3b3JrKSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Triple } from '@bitgo-beta/sdk-core';
3
+ import * as t from 'io-ts';
4
+ export declare const XPubWithDerivationPath: t.IntersectionC<[t.TypeC<{
5
+ xpub: t.StringC;
6
+ }>, t.PartialC<{
7
+ derivedFromParentWithSeed: t.StringC;
8
+ }>]>;
9
+ export type XPubWithDerivationPath = t.TypeOf<typeof XPubWithDerivationPath>;
10
+ /**
11
+ * This is the transaction payload that is sent to the offline vault to sign.
12
+ */
13
+ export declare const OfflineVaultSignable: t.TypeC<{
14
+ xpubsWithDerivationPath: t.TypeC<{
15
+ user: t.IntersectionC<[t.TypeC<{
16
+ xpub: t.StringC;
17
+ }>, t.PartialC<{
18
+ derivedFromParentWithSeed: t.StringC;
19
+ }>]>;
20
+ backup: t.IntersectionC<[t.TypeC<{
21
+ xpub: t.StringC;
22
+ }>, t.PartialC<{
23
+ derivedFromParentWithSeed: t.StringC;
24
+ }>]>;
25
+ bitgo: t.IntersectionC<[t.TypeC<{
26
+ xpub: t.StringC;
27
+ }>, t.PartialC<{
28
+ derivedFromParentWithSeed: t.StringC;
29
+ }>]>;
30
+ }>;
31
+ coinSpecific: t.TypeC<{
32
+ txHex: t.StringC;
33
+ }>;
34
+ }>;
35
+ export type OfflineVaultUnsigned = t.TypeOf<typeof OfflineVaultSignable>;
36
+ type WithXpub = {
37
+ xpub: string;
38
+ };
39
+ type NamedKeys = {
40
+ user: WithXpub;
41
+ backup: WithXpub;
42
+ bitgo: WithXpub;
43
+ };
44
+ export declare function toKeyTriple(xpubs: NamedKeys): Triple<utxolib.BIP32Interface>;
45
+ export {};
46
+ //# sourceMappingURL=OfflineVaultSignable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OfflineVaultSignable.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/OfflineVaultSignable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,sBAAsB;;;;IAGlC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAUhC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEzE,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACjC,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAI5E"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.OfflineVaultSignable = exports.XPubWithDerivationPath = void 0;
37
+ exports.toKeyTriple = toKeyTriple;
38
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
+ const t = __importStar(require("io-ts"));
40
+ exports.XPubWithDerivationPath = t.intersection([t.type({ xpub: t.string }), t.partial({ derivedFromParentWithSeed: t.string })], 'XPubWithDerivationPath');
41
+ /**
42
+ * This is the transaction payload that is sent to the offline vault to sign.
43
+ */
44
+ exports.OfflineVaultSignable = t.type({
45
+ xpubsWithDerivationPath: t.type({
46
+ user: exports.XPubWithDerivationPath,
47
+ backup: exports.XPubWithDerivationPath,
48
+ bitgo: exports.XPubWithDerivationPath,
49
+ }),
50
+ coinSpecific: t.type({ txHex: t.string }),
51
+ }, 'BaseTransaction');
52
+ function toKeyTriple(xpubs) {
53
+ return [xpubs.user.xpub, xpubs.backup.xpub, xpubs.bitgo.xpub].map((xpub) => utxolib.bip32.fromBase58(xpub));
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmbGluZVZhdWx0U2lnbmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L09mZmxpbmVWYXVsdFNpZ25hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSxrQ0FJQztBQWxDRCw4REFBZ0Q7QUFFaEQseUNBQTJCO0FBRWQsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNsRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2hGLHdCQUF3QixDQUN6QixDQUFDO0FBSUY7O0dBRUc7QUFDVSxRQUFBLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hDO0lBQ0UsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLEVBQUUsOEJBQXNCO1FBQzVCLE1BQU0sRUFBRSw4QkFBc0I7UUFDOUIsS0FBSyxFQUFFLDhCQUFzQjtLQUM5QixDQUFDO0lBQ0YsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0NBQzFDLEVBQ0QsaUJBQWlCLENBQ2xCLENBQUM7QUFNRixTQUFnQixXQUFXLENBQUMsS0FBZ0I7SUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQ0csQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcblxuZXhwb3J0IGNvbnN0IFhQdWJXaXRoRGVyaXZhdGlvblBhdGggPSB0LmludGVyc2VjdGlvbihcbiAgW3QudHlwZSh7IHhwdWI6IHQuc3RyaW5nIH0pLCB0LnBhcnRpYWwoeyBkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkOiB0LnN0cmluZyB9KV0sXG4gICdYUHViV2l0aERlcml2YXRpb25QYXRoJ1xuKTtcblxuZXhwb3J0IHR5cGUgWFB1YldpdGhEZXJpdmF0aW9uUGF0aCA9IHQuVHlwZU9mPHR5cGVvZiBYUHViV2l0aERlcml2YXRpb25QYXRoPjtcblxuLyoqXG4gKiBUaGlzIGlzIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIHRoYXQgaXMgc2VudCB0byB0aGUgb2ZmbGluZSB2YXVsdCB0byBzaWduLlxuICovXG5leHBvcnQgY29uc3QgT2ZmbGluZVZhdWx0U2lnbmFibGUgPSB0LnR5cGUoXG4gIHtcbiAgICB4cHVic1dpdGhEZXJpdmF0aW9uUGF0aDogdC50eXBlKHtcbiAgICAgIHVzZXI6IFhQdWJXaXRoRGVyaXZhdGlvblBhdGgsXG4gICAgICBiYWNrdXA6IFhQdWJXaXRoRGVyaXZhdGlvblBhdGgsXG4gICAgICBiaXRnbzogWFB1YldpdGhEZXJpdmF0aW9uUGF0aCxcbiAgICB9KSxcbiAgICBjb2luU3BlY2lmaWM6IHQudHlwZSh7IHR4SGV4OiB0LnN0cmluZyB9KSxcbiAgfSxcbiAgJ0Jhc2VUcmFuc2FjdGlvbidcbik7XG5cbmV4cG9ydCB0eXBlIE9mZmxpbmVWYXVsdFVuc2lnbmVkID0gdC5UeXBlT2Y8dHlwZW9mIE9mZmxpbmVWYXVsdFNpZ25hYmxlPjtcblxudHlwZSBXaXRoWHB1YiA9IHsgeHB1Yjogc3RyaW5nIH07XG50eXBlIE5hbWVkS2V5cyA9IHsgdXNlcjogV2l0aFhwdWI7IGJhY2t1cDogV2l0aFhwdWI7IGJpdGdvOiBXaXRoWHB1YiB9O1xuZXhwb3J0IGZ1bmN0aW9uIHRvS2V5VHJpcGxlKHhwdWJzOiBOYW1lZEtleXMpOiBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT4ge1xuICByZXR1cm4gW3hwdWJzLnVzZXIueHB1YiwgeHB1YnMuYmFja3VwLnhwdWIsIHhwdWJzLmJpdGdvLnhwdWJdLm1hcCgoeHB1YikgPT5cbiAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoeHB1YilcbiAgKSBhcyBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT47XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ export interface ExplanationOutput {
2
+ address: string;
3
+ amount: string | number;
4
+ }
5
+ export interface TransactionExplanation {
6
+ outputs: ExplanationOutput[];
7
+ changeOutputs: ExplanationOutput[];
8
+ fee: {
9
+ fee: string | number;
10
+ payGoFeeString: string | number | undefined;
11
+ payGoFeeAddress: string | undefined;
12
+ };
13
+ }
14
+ export declare function getTransactionExplanation(coin: string, tx: unknown): TransactionExplanation;
15
+ //# sourceMappingURL=TransactionExplanation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionExplanation.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/TransactionExplanation.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,GAAG,EAAE;QAEH,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QAC5C,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,sBAAsB,CAS3F"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTransactionExplanation = getTransactionExplanation;
4
+ const names_1 = require("../names");
5
+ const OfflineVaultSignable_1 = require("./OfflineVaultSignable");
6
+ const descriptor_1 = require("./descriptor");
7
+ function getTransactionExplanation(coin, tx) {
8
+ if (!OfflineVaultSignable_1.OfflineVaultSignable.is(tx)) {
9
+ throw new Error('not a signable transaction');
10
+ }
11
+ if (descriptor_1.DescriptorTransaction.is(tx)) {
12
+ return (0, descriptor_1.getTransactionExplanationFromPsbt)(tx, (0, names_1.getNetworkFromChain)(coin));
13
+ }
14
+ throw new Error('unsupported transaction type');
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZsaW5lVmF1bHQvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFTQztBQTlCRCxvQ0FBK0M7QUFFL0MsaUVBQThEO0FBQzlELDZDQUF3RjtBQWtCeEYsU0FBZ0IseUJBQXlCLENBQUMsSUFBWSxFQUFFLEVBQVc7SUFDakUsSUFBSSxDQUFDLDJDQUFvQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxrQ0FBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUEsOENBQWlDLEVBQUMsRUFBRSxFQUFFLElBQUEsMkJBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXROZXR3b3JrRnJvbUNoYWluIH0gZnJvbSAnLi4vbmFtZXMnO1xuXG5pbXBvcnQgeyBPZmZsaW5lVmF1bHRTaWduYWJsZSB9IGZyb20gJy4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHsgRGVzY3JpcHRvclRyYW5zYWN0aW9uLCBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRnJvbVBzYnQgfSBmcm9tICcuL2Rlc2NyaXB0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhbmF0aW9uT3V0cHV0IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgb3V0cHV0czogRXhwbGFuYXRpb25PdXRwdXRbXTtcbiAgY2hhbmdlT3V0cHV0czogRXhwbGFuYXRpb25PdXRwdXRbXTtcbiAgZmVlOiB7XG4gICAgLyogbmV0d29yayBmZWUgKi9cbiAgICBmZWU6IHN0cmluZyB8IG51bWJlcjtcbiAgICBwYXlHb0ZlZVN0cmluZzogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHBheUdvRmVlQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbihjb2luOiBzdHJpbmcsIHR4OiB1bmtub3duKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIGlmICghT2ZmbGluZVZhdWx0U2lnbmFibGUuaXModHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzaWduYWJsZSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmIChEZXNjcmlwdG9yVHJhbnNhY3Rpb24uaXModHgpKSB7XG4gICAgcmV0dXJuIGdldFRyYW5zYWN0aW9uRXhwbGFuYXRpb25Gcm9tUHNidCh0eCwgZ2V0TmV0d29ya0Zyb21DaGFpbihjb2luKSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uIHR5cGUnKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './transaction';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/descriptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./transaction"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuIl19
@@ -0,0 +1,38 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import * as t from 'io-ts';
3
+ import { DescriptorMap } from '../../descriptor';
4
+ import { TransactionExplanation } from '../TransactionExplanation';
5
+ export declare const DescriptorTransaction: t.IntersectionC<[t.TypeC<{
6
+ xpubsWithDerivationPath: t.TypeC<{
7
+ user: t.IntersectionC<[t.TypeC<{
8
+ xpub: t.StringC;
9
+ }>, t.PartialC<{
10
+ derivedFromParentWithSeed: t.StringC;
11
+ }>]>;
12
+ backup: t.IntersectionC<[t.TypeC<{
13
+ xpub: t.StringC;
14
+ }>, t.PartialC<{
15
+ derivedFromParentWithSeed: t.StringC;
16
+ }>]>;
17
+ bitgo: t.IntersectionC<[t.TypeC<{
18
+ xpub: t.StringC;
19
+ }>, t.PartialC<{
20
+ derivedFromParentWithSeed: t.StringC;
21
+ }>]>;
22
+ }>;
23
+ coinSpecific: t.TypeC<{
24
+ txHex: t.StringC;
25
+ }>;
26
+ }>, t.TypeC<{
27
+ descriptors: t.ArrayC<t.IntersectionC<[t.TypeC<{
28
+ name: t.StringC;
29
+ value: t.StringC;
30
+ }>, t.PartialC<{
31
+ signatures: t.UnionC<[t.ArrayC<t.StringC>, t.UndefinedC]>;
32
+ }>]>>;
33
+ }>]>;
34
+ export type DescriptorTransaction = t.TypeOf<typeof DescriptorTransaction>;
35
+ export declare function getDescriptorsFromDescriptorTransaction(tx: DescriptorTransaction): DescriptorMap;
36
+ export declare function getHalfSignedPsbt(tx: DescriptorTransaction, prv: utxolib.BIP32Interface, network: utxolib.Network): utxolib.Psbt;
37
+ export declare function getTransactionExplanationFromPsbt(tx: DescriptorTransaction, network: utxolib.Network): TransactionExplanation;
38
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/offlineVault/descriptor/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AASlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,wBAAgB,uCAAuC,CAAC,EAAE,EAAE,qBAAqB,GAAG,aAAa,CAUhG;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,qBAAqB,EACzB,GAAG,EAAE,OAAO,CAAC,cAAc,EAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAAC,IAAI,CAKd;AAED,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,sBAAsB,CAexB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DescriptorTransaction = void 0;
37
+ exports.getDescriptorsFromDescriptorTransaction = getDescriptorsFromDescriptorTransaction;
38
+ exports.getHalfSignedPsbt = getHalfSignedPsbt;
39
+ exports.getTransactionExplanationFromPsbt = getTransactionExplanationFromPsbt;
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const t = __importStar(require("io-ts"));
42
+ const descriptor_1 = require("../../descriptor");
43
+ const OfflineVaultSignable_1 = require("../OfflineVaultSignable");
44
+ const validatePolicy_1 = require("../../descriptor/validatePolicy");
45
+ const descriptor_2 = require("../../transaction/descriptor");
46
+ exports.DescriptorTransaction = t.intersection([OfflineVaultSignable_1.OfflineVaultSignable, t.type({ descriptors: t.array(descriptor_1.NamedDescriptor) })], 'DescriptorTransaction');
47
+ function getDescriptorsFromDescriptorTransaction(tx) {
48
+ const { descriptors, xpubsWithDerivationPath } = tx;
49
+ const pubkeys = (0, OfflineVaultSignable_1.toKeyTriple)(xpubsWithDerivationPath);
50
+ const policy = (0, validatePolicy_1.getValidatorSome)([
51
+ // allow all 2-of-3-ish descriptors where the keys match the wallet keys
52
+ (0, validatePolicy_1.getValidatorOneOfTemplates)(['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop']),
53
+ // allow all descriptors signed by the user key
54
+ (0, validatePolicy_1.getValidatorSignedByUserKey)(),
55
+ ]);
56
+ return (0, validatePolicy_1.toDescriptorMapValidate)(descriptors, pubkeys, policy);
57
+ }
58
+ function getHalfSignedPsbt(tx, prv, network) {
59
+ const psbt = utxolib.bitgo.createPsbtDecode(tx.coinSpecific.txHex, network);
60
+ const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
61
+ (0, descriptor_2.signPsbt)(psbt, descriptorMap, prv, { onUnknownInput: 'throw' });
62
+ return psbt;
63
+ }
64
+ function getTransactionExplanationFromPsbt(tx, network) {
65
+ const psbt = utxolib.bitgo.createPsbtDecode(tx.coinSpecific.txHex, network);
66
+ const descriptorMap = getDescriptorsFromDescriptorTransaction(tx);
67
+ const { outputs, changeOutputs, fee } = (0, descriptor_2.explainPsbt)(psbt, descriptorMap);
68
+ return {
69
+ outputs,
70
+ changeOutputs,
71
+ fee: {
72
+ /* network fee */
73
+ fee,
74
+ /* TODO */
75
+ payGoFeeString: undefined,
76
+ payGoFeeAddress: undefined,
77
+ },
78
+ };
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvb2ZmbGluZVZhdWx0L2Rlc2NyaXB0b3IvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLDBGQVVDO0FBRUQsOENBU0M7QUFFRCw4RUFrQkM7QUE5REQsOERBQWdEO0FBQ2hELHlDQUEyQjtBQUUzQixpREFBa0U7QUFDbEUsa0VBQTRFO0FBQzVFLG9FQUt5QztBQUN6Qyw2REFBcUU7QUFHeEQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUNqRCxDQUFDLDJDQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw0QkFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3pFLHVCQUF1QixDQUN4QixDQUFDO0FBSUYsU0FBZ0IsdUNBQXVDLENBQUMsRUFBeUI7SUFDL0UsTUFBTSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFXLEVBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlDQUFnQixFQUFDO1FBQzlCLHdFQUF3RTtRQUN4RSxJQUFBLDJDQUEwQixFQUFDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsK0NBQStDO1FBQy9DLElBQUEsNENBQTJCLEdBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFBLHdDQUF1QixFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUMvQixFQUF5QixFQUN6QixHQUEyQixFQUMzQixPQUF3QjtJQUV4QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLElBQUEscUJBQVEsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxFQUF5QixFQUN6QixPQUF3QjtJQUV4QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLHVDQUF1QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUEsd0JBQVcsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekUsT0FBTztRQUNMLE9BQU87UUFDUCxhQUFhO1FBQ2IsR0FBRyxFQUFFO1lBQ0gsaUJBQWlCO1lBQ2pCLEdBQUc7WUFDSCxVQUFVO1lBQ1YsY0FBYyxFQUFFLFNBQVM7WUFDekIsZUFBZSxFQUFFLFNBQVM7U0FDM0I7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JNYXAsIE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgT2ZmbGluZVZhdWx0U2lnbmFibGUsIHRvS2V5VHJpcGxlIH0gZnJvbSAnLi4vT2ZmbGluZVZhdWx0U2lnbmFibGUnO1xuaW1wb3J0IHtcbiAgZ2V0VmFsaWRhdG9yT25lT2ZUZW1wbGF0ZXMsXG4gIGdldFZhbGlkYXRvclNpZ25lZEJ5VXNlcktleSxcbiAgZ2V0VmFsaWRhdG9yU29tZSxcbiAgdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUsXG59IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3IvdmFsaWRhdGVQb2xpY3knO1xuaW1wb3J0IHsgZXhwbGFpblBzYnQsIHNpZ25Qc2J0IH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIH0gZnJvbSAnLi4vVHJhbnNhY3Rpb25FeHBsYW5hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBEZXNjcmlwdG9yVHJhbnNhY3Rpb24gPSB0LmludGVyc2VjdGlvbihcbiAgW09mZmxpbmVWYXVsdFNpZ25hYmxlLCB0LnR5cGUoeyBkZXNjcmlwdG9yczogdC5hcnJheShOYW1lZERlc2NyaXB0b3IpIH0pXSxcbiAgJ0Rlc2NyaXB0b3JUcmFuc2FjdGlvbidcbik7XG5cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JUcmFuc2FjdGlvbiA9IHQuVHlwZU9mPHR5cGVvZiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvcnNGcm9tRGVzY3JpcHRvclRyYW5zYWN0aW9uKHR4OiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24pOiBEZXNjcmlwdG9yTWFwIHtcbiAgY29uc3QgeyBkZXNjcmlwdG9ycywgeHB1YnNXaXRoRGVyaXZhdGlvblBhdGggfSA9IHR4O1xuICBjb25zdCBwdWJrZXlzID0gdG9LZXlUcmlwbGUoeHB1YnNXaXRoRGVyaXZhdGlvblBhdGgpO1xuICBjb25zdCBwb2xpY3kgPSBnZXRWYWxpZGF0b3JTb21lKFtcbiAgICAvLyBhbGxvdyBhbGwgMi1vZi0zLWlzaCBkZXNjcmlwdG9ycyB3aGVyZSB0aGUga2V5cyBtYXRjaCB0aGUgd2FsbGV0IGtleXNcbiAgICBnZXRWYWxpZGF0b3JPbmVPZlRlbXBsYXRlcyhbJ1dzaDJPZjMnLCAnV3NoMk9mM0NsdHZEcm9wJywgJ1NoV3NoMk9mM0NsdHZEcm9wJ10pLFxuICAgIC8vIGFsbG93IGFsbCBkZXNjcmlwdG9ycyBzaWduZWQgYnkgdGhlIHVzZXIga2V5XG4gICAgZ2V0VmFsaWRhdG9yU2lnbmVkQnlVc2VyS2V5KCksXG4gIF0pO1xuICByZXR1cm4gdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUoZGVzY3JpcHRvcnMsIHB1YmtleXMsIHBvbGljeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYWxmU2lnbmVkUHNidChcbiAgdHg6IERlc2NyaXB0b3JUcmFuc2FjdGlvbixcbiAgcHJ2OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IHV0eG9saWIuUHNidCB7XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnREZWNvZGUodHguY29pblNwZWNpZmljLnR4SGV4LCBuZXR3b3JrKTtcbiAgY29uc3QgZGVzY3JpcHRvck1hcCA9IGdldERlc2NyaXB0b3JzRnJvbURlc2NyaXB0b3JUcmFuc2FjdGlvbih0eCk7XG4gIHNpZ25Qc2J0KHBzYnQsIGRlc2NyaXB0b3JNYXAsIHBydiwgeyBvblVua25vd25JbnB1dDogJ3Rocm93JyB9KTtcbiAgcmV0dXJuIHBzYnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRnJvbVBzYnQoXG4gIHR4OiBEZXNjcmlwdG9yVHJhbnNhY3Rpb24sXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnREZWNvZGUodHguY29pblNwZWNpZmljLnR4SGV4LCBuZXR3b3JrKTtcbiAgY29uc3QgZGVzY3JpcHRvck1hcCA9IGdldERlc2NyaXB0b3JzRnJvbURlc2NyaXB0b3JUcmFuc2FjdGlvbih0eCk7XG4gIGNvbnN0IHsgb3V0cHV0cywgY2hhbmdlT3V0cHV0cywgZmVlIH0gPSBleHBsYWluUHNidChwc2J0LCBkZXNjcmlwdG9yTWFwKTtcbiAgcmV0dXJuIHtcbiAgICBvdXRwdXRzLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgZmVlOiB7XG4gICAgICAvKiBuZXR3b3JrIGZlZSAqL1xuICAgICAgZmVlLFxuICAgICAgLyogVE9ETyAqL1xuICAgICAgcGF5R29GZWVTdHJpbmc6IHVuZGVmaW5lZCxcbiAgICAgIHBheUdvRmVlQWRkcmVzczogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * as descriptor from './descriptor';
2
+ export * from './OfflineVaultHalfSigned';
3
+ export { getTransactionExplanation } from './TransactionExplanation';
4
+ export { TransactionExplanation } from './TransactionExplanation';
5
+ export { ExplanationOutput } from './TransactionExplanation';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/offlineVault/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}