@bitgo-beta/abstract-utxo 1.6.1-alpha.24 → 1.6.1-alpha.240
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.
- package/.eslintrc.js +6 -0
- package/CHANGELOG.md +955 -0
- package/dist/src/abstractUtxoCoin.d.ts +192 -98
- package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/src/abstractUtxoCoin.js +290 -541
- package/dist/src/core/descriptor/DescriptorMap.d.ts +9 -0
- package/dist/src/core/descriptor/DescriptorMap.d.ts.map +1 -0
- package/dist/src/core/descriptor/DescriptorMap.js +9 -0
- package/dist/src/core/descriptor/Output.d.ts +24 -0
- package/dist/src/core/descriptor/Output.d.ts.map +1 -0
- package/dist/src/core/descriptor/Output.js +22 -0
- package/dist/src/core/descriptor/VirtualSize.d.ts +21 -0
- package/dist/src/core/descriptor/VirtualSize.d.ts.map +1 -0
- package/dist/src/core/descriptor/VirtualSize.js +83 -0
- package/dist/src/core/descriptor/address.d.ts +5 -0
- package/dist/src/core/descriptor/address.d.ts.map +1 -0
- package/dist/src/core/descriptor/address.js +48 -0
- package/dist/src/core/descriptor/index.d.ts +9 -0
- package/dist/src/core/descriptor/index.d.ts.map +1 -0
- package/dist/src/core/descriptor/index.js +17 -0
- package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts +20 -0
- package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/assertSatisfiable.js +74 -0
- package/dist/src/core/descriptor/psbt/createPsbt.d.ts +15 -0
- package/dist/src/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/createPsbt.js +82 -0
- package/dist/src/core/descriptor/psbt/findDescriptors.d.ts +22 -0
- package/dist/src/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/findDescriptors.js +74 -0
- package/dist/src/core/descriptor/psbt/index.d.ts +5 -0
- package/dist/src/core/descriptor/psbt/index.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/index.js +10 -0
- package/dist/src/core/descriptor/psbt/parse.d.ts +27 -0
- package/dist/src/core/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/parse.js +87 -0
- package/dist/src/core/descriptor/psbt/wrap.d.ts +12 -0
- package/dist/src/core/descriptor/psbt/wrap.d.ts.map +1 -0
- package/dist/src/core/descriptor/psbt/wrap.js +76 -0
- package/dist/src/core/descriptor/signTxLocal.d.ts +3 -0
- package/dist/src/core/descriptor/signTxLocal.d.ts.map +1 -0
- package/dist/src/core/descriptor/signTxLocal.js +9 -0
- package/dist/src/descriptor/NamedDescriptor.d.ts +7 -0
- package/dist/src/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/src/descriptor/NamedDescriptor.js +42 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.js +66 -0
- package/dist/src/descriptor/builder/builder.d.ts +13 -0
- package/dist/src/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/src/descriptor/builder/builder.js +37 -0
- package/dist/src/descriptor/builder/index.d.ts +3 -0
- package/dist/src/descriptor/builder/index.d.ts.map +1 -0
- package/dist/src/descriptor/builder/index.js +8 -0
- package/dist/src/descriptor/builder/parse.d.ts +5 -0
- package/dist/src/descriptor/builder/parse.d.ts.map +1 -0
- package/dist/src/descriptor/builder/parse.js +149 -0
- package/dist/src/descriptor/descriptorWallet.d.ts +19 -0
- package/dist/src/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/src/descriptor/descriptorWallet.js +54 -0
- package/dist/src/descriptor/index.d.ts +6 -0
- package/dist/src/descriptor/index.d.ts.map +1 -0
- package/dist/src/descriptor/index.js +16 -0
- package/dist/src/descriptor/validatePolicy.d.ts +14 -0
- package/dist/src/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/src/descriptor/validatePolicy.js +48 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +30 -2
- package/dist/src/keychains.d.ts +48 -0
- package/dist/src/keychains.d.ts.map +1 -0
- package/dist/src/keychains.js +104 -0
- package/dist/src/names.d.ts +13 -0
- package/dist/src/names.d.ts.map +1 -0
- package/dist/src/names.js +175 -0
- package/dist/src/recovery/RecoveryProvider.d.ts +1 -1
- package/dist/src/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/src/recovery/RecoveryProvider.js +2 -4
- package/dist/src/recovery/backupKeyRecovery.d.ts +41 -16
- package/dist/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/src/recovery/backupKeyRecovery.js +168 -96
- package/dist/src/recovery/baseApi.d.ts +3 -6
- package/dist/src/recovery/baseApi.d.ts.map +1 -1
- package/dist/src/recovery/baseApi.js +6 -6
- package/dist/src/recovery/coingeckoApi.d.ts +0 -3
- package/dist/src/recovery/coingeckoApi.d.ts.map +1 -1
- package/dist/src/recovery/coingeckoApi.js +1 -4
- package/dist/src/recovery/crossChainRecovery.d.ts +12 -3
- package/dist/src/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/src/recovery/crossChainRecovery.js +93 -21
- package/dist/src/recovery/index.d.ts +0 -1
- package/dist/src/recovery/index.d.ts.map +1 -1
- package/dist/src/recovery/index.js +6 -3
- package/dist/src/recovery/mempoolApi.d.ts.map +1 -1
- package/dist/src/recovery/mempoolApi.js +10 -7
- package/dist/src/replayProtection.js +37 -5
- package/dist/src/sign.d.ts +29 -8
- package/dist/src/sign.d.ts.map +1 -1
- package/dist/src/sign.js +114 -15
- package/dist/src/transaction/common/verifyPayGoAmount.d.ts +1 -0
- package/dist/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
- package/dist/src/transaction/common/verifyPayGoAmount.js +1 -0
- package/dist/src/transaction/descriptor/explainPsbt.d.ts +5 -0
- package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/explainPsbt.js +80 -0
- package/dist/src/transaction/descriptor/index.d.ts +7 -0
- package/dist/src/transaction/descriptor/index.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/index.js +14 -0
- package/dist/src/transaction/descriptor/parse.d.ts +14 -0
- package/dist/src/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/parse.js +115 -0
- package/dist/src/transaction/descriptor/parseToAmountType.d.ts +13 -0
- package/dist/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/parseToAmountType.js +60 -0
- package/dist/src/transaction/descriptor/recipient.d.ts +5 -0
- package/dist/src/transaction/descriptor/recipient.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/recipient.js +3 -0
- package/dist/src/transaction/descriptor/signPsbt.d.ts +25 -0
- package/dist/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/signPsbt.js +43 -0
- package/dist/src/transaction/descriptor/verifyTransaction.d.ts +33 -0
- package/dist/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/verifyTransaction.js +105 -0
- package/dist/src/transaction/explainTransaction.d.ts +17 -0
- package/dist/src/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/src/transaction/explainTransaction.js +67 -0
- package/dist/src/transaction/fetchInputs.d.ts +26 -0
- package/dist/src/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/src/transaction/fetchInputs.js +109 -0
- package/dist/src/transaction/fixedScript/explainTransaction.d.ts +30 -0
- package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/explainTransaction.js +216 -0
- package/dist/src/transaction/fixedScript/index.d.ts +6 -0
- package/dist/src/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/index.js +13 -0
- package/dist/src/transaction/fixedScript/parseOutput.d.ts +26 -0
- package/dist/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseOutput.js +213 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts +7 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseTransaction.js +203 -0
- package/dist/src/transaction/fixedScript/signTransaction.d.ts +17 -0
- package/dist/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/signTransaction.js +138 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.d.ts +4 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.js +176 -0
- package/dist/src/transaction/index.d.ts +6 -0
- package/dist/src/transaction/index.d.ts.map +1 -0
- package/dist/src/transaction/index.js +26 -0
- package/dist/src/transaction/outputDifference.d.ts +40 -0
- package/dist/src/transaction/outputDifference.d.ts.map +1 -0
- package/dist/src/transaction/outputDifference.js +47 -0
- package/dist/src/transaction/parseTransaction.d.ts +3 -0
- package/dist/src/transaction/parseTransaction.d.ts.map +1 -0
- package/dist/src/transaction/parseTransaction.js +48 -0
- package/dist/src/transaction/recipient.d.ts +29 -0
- package/dist/src/transaction/recipient.d.ts.map +1 -0
- package/dist/src/transaction/recipient.js +88 -0
- package/dist/src/transaction/signTransaction.d.ts +6 -0
- package/dist/src/transaction/signTransaction.d.ts.map +1 -0
- package/dist/src/transaction/signTransaction.js +102 -0
- package/dist/src/transaction/verifyTransaction.d.ts +4 -0
- package/dist/src/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/verifyTransaction.js +50 -0
- package/dist/src/verifyKey.d.ts +28 -0
- package/dist/src/verifyKey.d.ts.map +1 -0
- package/dist/src/verifyKey.js +164 -0
- package/dist/src/wallet.d.ts +12 -0
- package/dist/src/wallet.d.ts.map +1 -0
- package/dist/src/wallet.js +3 -0
- package/dist/test/core/descriptor/descriptor.utils.d.ts +11 -0
- package/dist/test/core/descriptor/descriptor.utils.d.ts.map +1 -0
- package/dist/test/core/descriptor/descriptor.utils.js +63 -0
- package/dist/test/core/descriptor/psbt/VirtualSize.d.ts +2 -0
- package/dist/test/core/descriptor/psbt/VirtualSize.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/VirtualSize.js +78 -0
- package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts +2 -0
- package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/assertSatisfiable.js +56 -0
- package/dist/test/core/descriptor/psbt/createPsbt.d.ts +2 -0
- package/dist/test/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/createPsbt.js +85 -0
- package/dist/test/core/descriptor/psbt/findDescriptors.d.ts +2 -0
- package/dist/test/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/findDescriptors.js +66 -0
- package/dist/test/core/descriptor/psbt/mock.utils.d.ts +34 -0
- package/dist/test/core/descriptor/psbt/mock.utils.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/mock.utils.js +87 -0
- package/dist/test/core/descriptor/psbt/parse.d.ts +2 -0
- package/dist/test/core/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/parse.js +32 -0
- package/dist/test/core/descriptor/psbt/psbt.utils.d.ts +4 -0
- package/dist/test/core/descriptor/psbt/psbt.utils.d.ts.map +1 -0
- package/dist/test/core/descriptor/psbt/psbt.utils.js +20 -0
- package/dist/test/core/fixtures.utils.d.ts +15 -0
- package/dist/test/core/fixtures.utils.d.ts.map +1 -0
- package/dist/test/core/fixtures.utils.js +114 -0
- package/dist/test/core/key.utils.d.ts +16 -0
- package/dist/test/core/key.utils.d.ts.map +1 -0
- package/dist/test/core/key.utils.js +59 -0
- package/dist/test/core/toPlainObject.utils.d.ts +11 -0
- package/dist/test/core/toPlainObject.utils.d.ts.map +1 -0
- package/dist/test/core/toPlainObject.utils.js +75 -0
- package/dist/test/descriptor/builder.d.ts +2 -0
- package/dist/test/descriptor/builder.d.ts.map +1 -0
- package/dist/test/descriptor/builder.js +72 -0
- package/dist/test/descriptor/descriptorWallet.d.ts +2 -0
- package/dist/test/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/test/descriptor/descriptorWallet.js +27 -0
- package/dist/test/transaction/descriptor/explainPsbt.d.ts +2 -0
- package/dist/test/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/explainPsbt.js +28 -0
- package/dist/test/transaction/descriptor/fixtures.utils.d.ts +2 -0
- package/dist/test/transaction/descriptor/fixtures.utils.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/fixtures.utils.js +12 -0
- package/dist/test/transaction/descriptor/outputDifference.d.ts +2 -0
- package/dist/test/transaction/descriptor/outputDifference.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/outputDifference.js +76 -0
- package/dist/test/transaction/descriptor/parse.d.ts +2 -0
- package/dist/test/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/parse.js +78 -0
- package/dist/test/transaction/descriptor/sign.d.ts +2 -0
- package/dist/test/transaction/descriptor/sign.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/sign.js +33 -0
- package/dist/tsconfig.tsbuildinfo +1 -7906
- package/package.json +16 -11
- package/dist/src/parseOutput.d.ts +0 -22
- package/dist/src/parseOutput.d.ts.map +0 -1
- package/dist/src/parseOutput.js +0 -170
- package/dist/src/recovery/smartbitApi.d.ts +0 -11
- package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
- package/dist/src/recovery/smartbitApi.js +0 -36
|
@@ -0,0 +1,149 @@
|
|
|
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.parseDescriptorNode = parseDescriptorNode;
|
|
37
|
+
exports.parseDescriptor = parseDescriptor;
|
|
38
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
|
+
const builder_1 = require("./builder");
|
|
40
|
+
function isUnaryNode(node, key) {
|
|
41
|
+
if (typeof node !== 'object' || node === null) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const keys = Object.keys(node);
|
|
45
|
+
return keys.length === 1 && keys[0] === key;
|
|
46
|
+
}
|
|
47
|
+
function unwrapNode(node, path) {
|
|
48
|
+
let current = node;
|
|
49
|
+
for (const key of path) {
|
|
50
|
+
if (!isUnaryNode(current, key)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
current = current[key];
|
|
54
|
+
}
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
57
|
+
function parseMulti(node) {
|
|
58
|
+
if (!Array.isArray(node)) {
|
|
59
|
+
throw new Error('Unexpected node');
|
|
60
|
+
}
|
|
61
|
+
const [threshold, ...keyNodes] = node;
|
|
62
|
+
if (typeof threshold !== 'number') {
|
|
63
|
+
throw new Error('Expected threshold number');
|
|
64
|
+
}
|
|
65
|
+
const keyWithPath = keyNodes.map((keyNode) => {
|
|
66
|
+
if (!isUnaryNode(keyNode, 'XPub')) {
|
|
67
|
+
throw new Error('Expected XPub node');
|
|
68
|
+
}
|
|
69
|
+
if (typeof keyNode.XPub !== 'string') {
|
|
70
|
+
throw new Error('Expected XPub string');
|
|
71
|
+
}
|
|
72
|
+
const parts = keyNode.XPub.split('/');
|
|
73
|
+
return { xpub: parts[0], path: parts.slice(1).join('/') };
|
|
74
|
+
});
|
|
75
|
+
const paths = keyWithPath.map((k) => k.path);
|
|
76
|
+
paths.forEach((path, i) => {
|
|
77
|
+
if (path !== paths[0]) {
|
|
78
|
+
throw new Error(`Expected all paths to be the same: ${path} !== ${paths[0]}`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
threshold,
|
|
83
|
+
keys: keyWithPath.map((k) => utxolib.bip32.fromBase58(k.xpub)),
|
|
84
|
+
path: paths[0],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function parseWshMulti(node) {
|
|
88
|
+
const wshMsMulti = unwrapNode(node, ['Wsh', 'Ms', 'Multi']);
|
|
89
|
+
if (wshMsMulti) {
|
|
90
|
+
const { threshold, keys, path } = parseMulti(wshMsMulti);
|
|
91
|
+
let name;
|
|
92
|
+
if (threshold === 2 && keys.length === 2) {
|
|
93
|
+
name = 'Wsh2Of2';
|
|
94
|
+
}
|
|
95
|
+
else if (threshold === 2 && keys.length === 3) {
|
|
96
|
+
name = 'Wsh2Of3';
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw new Error('Unexpected multisig');
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
name,
|
|
103
|
+
keys,
|
|
104
|
+
path,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function parseCltvDrop(node, name, wrapping) {
|
|
109
|
+
const unwrapped = unwrapNode(node, wrapping);
|
|
110
|
+
if (!unwrapped) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (Array.isArray(unwrapped) && unwrapped.length === 2) {
|
|
114
|
+
const [a, b] = unwrapped;
|
|
115
|
+
const dropAfterAbsLocktime = unwrapNode(a, ['Drop', 'After', 'absLockTime']);
|
|
116
|
+
if (typeof dropAfterAbsLocktime !== 'number') {
|
|
117
|
+
throw new Error('Expected absLockTime number');
|
|
118
|
+
}
|
|
119
|
+
if (!isUnaryNode(b, 'Multi')) {
|
|
120
|
+
throw new Error('Expected Multi node');
|
|
121
|
+
}
|
|
122
|
+
const multi = parseMulti(b.Multi);
|
|
123
|
+
if (multi.threshold === 2 && multi.keys.length === 3) {
|
|
124
|
+
return {
|
|
125
|
+
name,
|
|
126
|
+
locktime: dropAfterAbsLocktime,
|
|
127
|
+
keys: multi.keys,
|
|
128
|
+
path: multi.path,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function parseDescriptorNode(node) {
|
|
134
|
+
const parsed = parseWshMulti(node) ??
|
|
135
|
+
parseCltvDrop(node, 'ShWsh2Of3CltvDrop', ['Sh', 'Wsh', 'Ms', 'AndV']) ??
|
|
136
|
+
parseCltvDrop(node, 'Wsh2Of3CltvDrop', ['Wsh', 'Ms', 'AndV']);
|
|
137
|
+
if (!parsed) {
|
|
138
|
+
throw new Error('Failed to parse descriptor node');
|
|
139
|
+
}
|
|
140
|
+
return parsed;
|
|
141
|
+
}
|
|
142
|
+
function parseDescriptor(descriptor) {
|
|
143
|
+
const builder = parseDescriptorNode(descriptor.node());
|
|
144
|
+
if ((0, builder_1.getDescriptorFromBuilder)(builder).toString() !== descriptor.toString()) {
|
|
145
|
+
throw new Error('Failed to parse descriptor');
|
|
146
|
+
}
|
|
147
|
+
return builder;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0hBLGtEQVNDO0FBRUQsMENBTUM7QUFoSUQsOERBQWdEO0FBR2hELHVDQUF3RTtBQUl4RSxTQUFTLFdBQVcsQ0FBc0IsSUFBYSxFQUFFLEdBQVM7SUFDaEUsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFhLEVBQUUsSUFBYztJQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDbkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYTtJQUsvQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0Qs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RSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckUsYUFBYSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsVUFBc0I7SUFDcEQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkQsSUFBSSxJQUFBLGtDQUF3QixFQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQzNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JCdWlsZGVyLCBnZXREZXNjcmlwdG9yRnJvbUJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXInO1xuXG50eXBlIE5vZGVVbmFyeTxLZXkgZXh0ZW5kcyBzdHJpbmc+ID0geyBbayBpbiBLZXldOiB1bmtub3duIH07XG5cbmZ1bmN0aW9uIGlzVW5hcnlOb2RlPFRLZXkgZXh0ZW5kcyBzdHJpbmc+KG5vZGU6IHVua25vd24sIGtleTogVEtleSk6IG5vZGUgaXMgTm9kZVVuYXJ5PFRLZXk+IHtcbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCBub2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhub2RlKTtcbiAgcmV0dXJuIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IGtleTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTm9kZShub2RlOiB1bmtub3duLCBwYXRoOiBzdHJpbmdbXSk6IHVua25vd24ge1xuICBsZXQgY3VycmVudCA9IG5vZGU7XG4gIGZvciAoY29uc3Qga2V5IG9mIHBhdGgpIHtcbiAgICBpZiAoIWlzVW5hcnlOb2RlKGN1cnJlbnQsIGtleSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTXVsdGkobm9kZTogdW5rbm93bik6IHtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGtleXM6IEJJUDMySW50ZXJmYWNlW107XG4gIHBhdGg6IHN0cmluZztcbn0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgbm9kZScpO1xuICB9XG4gIGNvbnN0IFt0aHJlc2hvbGQsIC4uLmtleU5vZGVzXSA9IG5vZGU7XG4gIGlmICh0eXBlb2YgdGhyZXNob2xkICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhyZXNob2xkIG51bWJlcicpO1xuICB9XG4gIGNvbnN0IGtleVdpdGhQYXRoID0ga2V5Tm9kZXMubWFwKChrZXlOb2RlKSA9PiB7XG4gICAgaWYgKCFpc1VuYXJ5Tm9kZShrZXlOb2RlLCAnWFB1YicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIFhQdWIgbm9kZScpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGtleU5vZGUuWFB1YiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgWFB1YiBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSBrZXlOb2RlLlhQdWIuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4geyB4cHViOiBwYXJ0c1swXSwgcGF0aDogcGFydHMuc2xpY2UoMSkuam9pbignLycpIH07XG4gIH0pO1xuICBjb25zdCBwYXRocyA9IGtleVdpdGhQYXRoLm1hcCgoaykgPT4gay5wYXRoKTtcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCwgaSkgPT4ge1xuICAgIGlmIChwYXRoICE9PSBwYXRoc1swXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbGwgcGF0aHMgdG8gYmUgdGhlIHNhbWU6ICR7cGF0aH0gIT09ICR7cGF0aHNbMF19YCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0aHJlc2hvbGQsXG4gICAga2V5czoga2V5V2l0aFBhdGgubWFwKChrKSA9PiB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoay54cHViKSksXG4gICAgcGF0aDogcGF0aHNbMF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlV3NoTXVsdGkobm9kZTogdW5rbm93bik6IERlc2NyaXB0b3JCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgd3NoTXNNdWx0aSA9IHVud3JhcE5vZGUobm9kZSwgWydXc2gnLCAnTXMnLCAnTXVsdGknXSk7XG4gIGlmICh3c2hNc011bHRpKSB7XG4gICAgY29uc3QgeyB0aHJlc2hvbGQsIGtleXMsIHBhdGggfSA9IHBhcnNlTXVsdGkod3NoTXNNdWx0aSk7XG4gICAgbGV0IG5hbWU7XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMiAmJiBrZXlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgbmFtZSA9ICdXc2gyT2YyJztcbiAgICB9IGVsc2UgaWYgKHRocmVzaG9sZCA9PT0gMiAmJiBrZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgbmFtZSA9ICdXc2gyT2YzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAga2V5cyxcbiAgICAgIHBhdGgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNsdHZEcm9wKFxuICBub2RlOiB1bmtub3duLFxuICBuYW1lOiAnV3NoMk9mM0NsdHZEcm9wJyB8ICdTaFdzaDJPZjNDbHR2RHJvcCcsXG4gIHdyYXBwaW5nOiBzdHJpbmdbXVxuKTogRGVzY3JpcHRvckJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB1bndyYXBwZWQgPSB1bndyYXBOb2RlKG5vZGUsIHdyYXBwaW5nKTtcbiAgaWYgKCF1bndyYXBwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodW53cmFwcGVkKSAmJiB1bndyYXBwZWQubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgW2EsIGJdID0gdW53cmFwcGVkO1xuICAgIGNvbnN0IGRyb3BBZnRlckFic0xvY2t0aW1lID0gdW53cmFwTm9kZShhLCBbJ0Ryb3AnLCAnQWZ0ZXInLCAnYWJzTG9ja1RpbWUnXSk7XG4gICAgaWYgKHR5cGVvZiBkcm9wQWZ0ZXJBYnNMb2NrdGltZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYWJzTG9ja1RpbWUgbnVtYmVyJyk7XG4gICAgfVxuICAgIGlmICghaXNVbmFyeU5vZGUoYiwgJ011bHRpJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgTXVsdGkgbm9kZScpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aSA9IHBhcnNlTXVsdGkoYi5NdWx0aSk7XG4gICAgaWYgKG11bHRpLnRocmVzaG9sZCA9PT0gMiAmJiBtdWx0aS5rZXlzLmxlbmd0aCA9PT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgbG9ja3RpbWU6IGRyb3BBZnRlckFic0xvY2t0aW1lLFxuICAgICAgICBrZXlzOiBtdWx0aS5rZXlzLFxuICAgICAgICBwYXRoOiBtdWx0aS5wYXRoLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVzY3JpcHRvck5vZGUobm9kZTogdW5rbm93bik6IERlc2NyaXB0b3JCdWlsZGVyIHtcbiAgY29uc3QgcGFyc2VkID1cbiAgICBwYXJzZVdzaE11bHRpKG5vZGUpID8/XG4gICAgcGFyc2VDbHR2RHJvcChub2RlLCAnU2hXc2gyT2YzQ2x0dkRyb3AnLCBbJ1NoJywgJ1dzaCcsICdNcycsICdBbmRWJ10pID8/XG4gICAgcGFyc2VDbHR2RHJvcChub2RlLCAnV3NoMk9mM0NsdHZEcm9wJywgWydXc2gnLCAnTXMnLCAnQW5kViddKTtcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBkZXNjcmlwdG9yIG5vZGUnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpOiBEZXNjcmlwdG9yQnVpbGRlciB7XG4gIGNvbnN0IGJ1aWxkZXIgPSBwYXJzZURlc2NyaXB0b3JOb2RlKGRlc2NyaXB0b3Iubm9kZSgpKTtcbiAgaWYgKGdldERlc2NyaXB0b3JGcm9tQnVpbGRlcihidWlsZGVyKS50b1N0cmluZygpICE9PSBkZXNjcmlwdG9yLnRvU3RyaW5nKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBkZXNjcmlwdG9yJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWxkZXI7XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IWallet, WalletCoinSpecific } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { DescriptorMap } from '../core/descriptor';
|
|
3
|
+
import { UtxoWallet, UtxoWalletData } from '../wallet';
|
|
4
|
+
import { NamedDescriptor } from './NamedDescriptor';
|
|
5
|
+
import { DescriptorValidationPolicy, KeyTriple } from './validatePolicy';
|
|
6
|
+
type DescriptorWalletCoinSpecific = {
|
|
7
|
+
descriptors: NamedDescriptor[];
|
|
8
|
+
};
|
|
9
|
+
type DescriptorWalletData = UtxoWalletData & {
|
|
10
|
+
coinSpecific: DescriptorWalletCoinSpecific;
|
|
11
|
+
};
|
|
12
|
+
export interface IDescriptorWallet extends UtxoWallet {
|
|
13
|
+
coinSpecific(): WalletCoinSpecific & DescriptorWalletCoinSpecific;
|
|
14
|
+
}
|
|
15
|
+
export declare function isDescriptorWalletData(obj: UtxoWalletData): obj is DescriptorWalletData;
|
|
16
|
+
export declare function isDescriptorWallet(obj: IWallet): obj is IDescriptorWallet;
|
|
17
|
+
export declare function getDescriptorMapFromWallet(wallet: IDescriptorWallet, walletKeys: KeyTriple, policy: DescriptorValidationPolicy): DescriptorMap;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=descriptorWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptorWallet.d.ts","sourceRoot":"","sources":["../../../src/descriptor/descriptorWallet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAA2B,MAAM,kBAAkB,CAAC;AAElG,KAAK,4BAA4B,GAAG;IAClC,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAQF,KAAK,oBAAoB,GAAG,cAAc,GAAG;IAC3C,YAAY,EAAE,4BAA4B,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,YAAY,IAAI,kBAAkB,GAAG,4BAA4B,CAAC;CACnE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,GAAG,IAAI,oBAAoB,CAEvF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,iBAAiB,CAEzE;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAEf"}
|
|
@@ -0,0 +1,54 @@
|
|
|
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.isDescriptorWalletData = isDescriptorWalletData;
|
|
37
|
+
exports.isDescriptorWallet = isDescriptorWallet;
|
|
38
|
+
exports.getDescriptorMapFromWallet = getDescriptorMapFromWallet;
|
|
39
|
+
const t = __importStar(require("io-ts"));
|
|
40
|
+
const NamedDescriptor_1 = require("./NamedDescriptor");
|
|
41
|
+
const validatePolicy_1 = require("./validatePolicy");
|
|
42
|
+
function isDescriptorWalletCoinSpecific(obj) {
|
|
43
|
+
return (obj !== null && typeof obj === 'object' && 'descriptors' in obj && t.array(NamedDescriptor_1.NamedDescriptor).is(obj.descriptors));
|
|
44
|
+
}
|
|
45
|
+
function isDescriptorWalletData(obj) {
|
|
46
|
+
return isDescriptorWalletCoinSpecific(obj.coinSpecific);
|
|
47
|
+
}
|
|
48
|
+
function isDescriptorWallet(obj) {
|
|
49
|
+
return isDescriptorWalletCoinSpecific(obj.coinSpecific());
|
|
50
|
+
}
|
|
51
|
+
function getDescriptorMapFromWallet(wallet, walletKeys, policy) {
|
|
52
|
+
return (0, validatePolicy_1.toDescriptorMapValidate)(wallet.coinSpecific().descriptors, walletKeys, policy);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcldhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2Rlc2NyaXB0b3JXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkEsd0RBRUM7QUFFRCxnREFFQztBQUVELGdFQU1DO0FBekNELHlDQUEyQjtBQU0zQix1REFBb0Q7QUFDcEQscURBQWtHO0FBTWxHLFNBQVMsOEJBQThCLENBQUMsR0FBWTtJQUNsRCxPQUFPLENBQ0wsR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksYUFBYSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUNoSCxDQUFDO0FBQ0osQ0FBQztBQVVELFNBQWdCLHNCQUFzQixDQUFDLEdBQW1CO0lBQ3hELE9BQU8sOEJBQThCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFZO0lBQzdDLE9BQU8sOEJBQThCLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQWdCLDBCQUEwQixDQUN4QyxNQUF5QixFQUN6QixVQUFxQixFQUNyQixNQUFrQztJQUVsQyxPQUFPLElBQUEsd0NBQXVCLEVBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHsgSVdhbGxldCwgV2FsbGV0Q29pblNwZWNpZmljIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBEZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vY29yZS9kZXNjcmlwdG9yJztcbmltcG9ydCB7IFV0eG9XYWxsZXQsIFV0eG9XYWxsZXREYXRhIH0gZnJvbSAnLi4vd2FsbGV0JztcblxuaW1wb3J0IHsgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuaW1wb3J0IHsgRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3ksIEtleVRyaXBsZSwgdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUgfSBmcm9tICcuL3ZhbGlkYXRlUG9saWN5JztcblxudHlwZSBEZXNjcmlwdG9yV2FsbGV0Q29pblNwZWNpZmljID0ge1xuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW107XG59O1xuXG5mdW5jdGlvbiBpc0Rlc2NyaXB0b3JXYWxsZXRDb2luU3BlY2lmaWMob2JqOiB1bmtub3duKTogb2JqIGlzIERlc2NyaXB0b3JXYWxsZXRDb2luU3BlY2lmaWMge1xuICByZXR1cm4gKFxuICAgIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiAnZGVzY3JpcHRvcnMnIGluIG9iaiAmJiB0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikuaXMob2JqLmRlc2NyaXB0b3JzKVxuICApO1xufVxuXG50eXBlIERlc2NyaXB0b3JXYWxsZXREYXRhID0gVXR4b1dhbGxldERhdGEgJiB7XG4gIGNvaW5TcGVjaWZpYzogRGVzY3JpcHRvcldhbGxldENvaW5TcGVjaWZpYztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlc2NyaXB0b3JXYWxsZXQgZXh0ZW5kcyBVdHhvV2FsbGV0IHtcbiAgY29pblNwZWNpZmljKCk6IFdhbGxldENvaW5TcGVjaWZpYyAmIERlc2NyaXB0b3JXYWxsZXRDb2luU3BlY2lmaWM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rlc2NyaXB0b3JXYWxsZXREYXRhKG9iajogVXR4b1dhbGxldERhdGEpOiBvYmogaXMgRGVzY3JpcHRvcldhbGxldERhdGEge1xuICByZXR1cm4gaXNEZXNjcmlwdG9yV2FsbGV0Q29pblNwZWNpZmljKG9iai5jb2luU3BlY2lmaWMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXNjcmlwdG9yV2FsbGV0KG9iajogSVdhbGxldCk6IG9iaiBpcyBJRGVzY3JpcHRvcldhbGxldCB7XG4gIHJldHVybiBpc0Rlc2NyaXB0b3JXYWxsZXRDb2luU3BlY2lmaWMob2JqLmNvaW5TcGVjaWZpYygpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JNYXBGcm9tV2FsbGV0KFxuICB3YWxsZXQ6IElEZXNjcmlwdG9yV2FsbGV0LFxuICB3YWxsZXRLZXlzOiBLZXlUcmlwbGUsXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3lcbik6IERlc2NyaXB0b3JNYXAge1xuICByZXR1cm4gdG9EZXNjcmlwdG9yTWFwVmFsaWRhdGUod2FsbGV0LmNvaW5TcGVjaWZpYygpLmRlc2NyaXB0b3JzLCB3YWxsZXRLZXlzLCBwb2xpY3kpO1xufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Miniscript, Descriptor } from '@bitgo/wasm-miniscript';
|
|
2
|
+
export { assertDescriptorWalletAddress } from './assertDescriptorWalletAddress';
|
|
3
|
+
export { NamedDescriptor } from './NamedDescriptor';
|
|
4
|
+
export { isDescriptorWallet, getDescriptorMapFromWallet } from './descriptorWallet';
|
|
5
|
+
export { getPolicyForEnv } from './validatePolicy';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPolicyForEnv = exports.getDescriptorMapFromWallet = exports.isDescriptorWallet = exports.NamedDescriptor = exports.assertDescriptorWalletAddress = exports.Descriptor = exports.Miniscript = void 0;
|
|
4
|
+
var wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
5
|
+
Object.defineProperty(exports, "Miniscript", { enumerable: true, get: function () { return wasm_miniscript_1.Miniscript; } });
|
|
6
|
+
Object.defineProperty(exports, "Descriptor", { enumerable: true, get: function () { return wasm_miniscript_1.Descriptor; } });
|
|
7
|
+
var assertDescriptorWalletAddress_1 = require("./assertDescriptorWalletAddress");
|
|
8
|
+
Object.defineProperty(exports, "assertDescriptorWalletAddress", { enumerable: true, get: function () { return assertDescriptorWalletAddress_1.assertDescriptorWalletAddress; } });
|
|
9
|
+
var NamedDescriptor_1 = require("./NamedDescriptor");
|
|
10
|
+
Object.defineProperty(exports, "NamedDescriptor", { enumerable: true, get: function () { return NamedDescriptor_1.NamedDescriptor; } });
|
|
11
|
+
var descriptorWallet_1 = require("./descriptorWallet");
|
|
12
|
+
Object.defineProperty(exports, "isDescriptorWallet", { enumerable: true, get: function () { return descriptorWallet_1.isDescriptorWallet; } });
|
|
13
|
+
Object.defineProperty(exports, "getDescriptorMapFromWallet", { enumerable: true, get: function () { return descriptorWallet_1.getDescriptorMapFromWallet; } });
|
|
14
|
+
var validatePolicy_1 = require("./validatePolicy");
|
|
15
|
+
Object.defineProperty(exports, "getPolicyForEnv", { enumerable: true, get: function () { return validatePolicy_1.getPolicyForEnv; } });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwREFBZ0U7QUFBdkQsNkdBQUEsVUFBVSxPQUFBO0FBQUUsNkdBQUEsVUFBVSxPQUFBO0FBQy9CLGlGQUFnRjtBQUF2RSw4SUFBQSw2QkFBNkIsT0FBQTtBQUN0QyxxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHVEQUFvRjtBQUEzRSxzSEFBQSxrQkFBa0IsT0FBQTtBQUFFLDhIQUFBLDBCQUEwQixPQUFBO0FBQ3ZELG1EQUFtRDtBQUExQyxpSEFBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNaW5pc2NyaXB0LCBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5leHBvcnQgeyBhc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcyB9IGZyb20gJy4vYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MnO1xuZXhwb3J0IHsgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuZXhwb3J0IHsgaXNEZXNjcmlwdG9yV2FsbGV0LCBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCB9IGZyb20gJy4vZGVzY3JpcHRvcldhbGxldCc7XG5leHBvcnQgeyBnZXRQb2xpY3lGb3JFbnYgfSBmcm9tICcuL3ZhbGlkYXRlUG9saWN5JztcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Descriptor } from '@bitgo/wasm-miniscript';
|
|
2
|
+
import { EnvironmentName, Triple } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
4
|
+
import { DescriptorMap } from '../core/descriptor';
|
|
5
|
+
import { DescriptorBuilder } from './builder';
|
|
6
|
+
import { NamedDescriptor } from './NamedDescriptor';
|
|
7
|
+
export type DescriptorValidationPolicy = {
|
|
8
|
+
allowedTemplates: DescriptorBuilder['name'][];
|
|
9
|
+
} | 'allowAll';
|
|
10
|
+
export type KeyTriple = Triple<utxolib.BIP32Interface>;
|
|
11
|
+
export declare function assertDescriptorPolicy(descriptor: Descriptor, policy: DescriptorValidationPolicy, walletKeys: Triple<utxolib.BIP32Interface>): void;
|
|
12
|
+
export declare function toDescriptorMapValidate(descriptors: NamedDescriptor[], walletKeys: KeyTriple, policy: DescriptorValidationPolicy): DescriptorMap;
|
|
13
|
+
export declare function getPolicyForEnv(env: EnvironmentName): DescriptorValidationPolicy;
|
|
14
|
+
//# sourceMappingURL=validatePolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../src/descriptor/validatePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAmB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,0BAA0B,GAAG;IAAE,gBAAgB,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;CAAE,GAAG,UAAU,CAAC;AAExG,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAiBvD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,0BAA0B,EAClC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GACzC,IAAI,CAaN;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAAE,EAC9B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,0BAA0B,GACjC,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,0BAA0B,CAUhF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertDescriptorPolicy = assertDescriptorPolicy;
|
|
4
|
+
exports.toDescriptorMapValidate = toDescriptorMapValidate;
|
|
5
|
+
exports.getPolicyForEnv = getPolicyForEnv;
|
|
6
|
+
const descriptor_1 = require("../core/descriptor");
|
|
7
|
+
const builder_1 = require("./builder");
|
|
8
|
+
function isDescriptorWithTemplate(d, name, walletKeys) {
|
|
9
|
+
const parsed = (0, builder_1.parseDescriptor)(d);
|
|
10
|
+
if (parsed.name !== name) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (parsed.keys.length !== walletKeys.length) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return parsed.keys.every((k, i) => k.toBase58() === walletKeys[i].toBase58());
|
|
17
|
+
}
|
|
18
|
+
function assertDescriptorPolicy(descriptor, policy, walletKeys) {
|
|
19
|
+
if (policy === 'allowAll') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if ('allowedTemplates' in policy) {
|
|
23
|
+
const allowed = policy.allowedTemplates;
|
|
24
|
+
if (!allowed.some((t) => isDescriptorWithTemplate(descriptor, t, walletKeys))) {
|
|
25
|
+
throw new Error(`Descriptor ${descriptor.toString()} does not match any allowed template`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`Unknown descriptor validation policy: ${policy}`);
|
|
29
|
+
}
|
|
30
|
+
function toDescriptorMapValidate(descriptors, walletKeys, policy) {
|
|
31
|
+
const map = (0, descriptor_1.toDescriptorMap)(descriptors);
|
|
32
|
+
for (const descriptor of map.values()) {
|
|
33
|
+
assertDescriptorPolicy(descriptor, policy, walletKeys);
|
|
34
|
+
}
|
|
35
|
+
return map;
|
|
36
|
+
}
|
|
37
|
+
function getPolicyForEnv(env) {
|
|
38
|
+
switch (env) {
|
|
39
|
+
case 'adminProd':
|
|
40
|
+
case 'prod':
|
|
41
|
+
return {
|
|
42
|
+
allowedTemplates: ['Wsh2Of3', 'Wsh2Of3CltvDrop', 'ShWsh2Of3CltvDrop'],
|
|
43
|
+
};
|
|
44
|
+
default:
|
|
45
|
+
return 'allowAll';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRCQSx3REFpQkM7QUFFRCwwREFVQztBQUVELDBDQVVDO0FBakVELG1EQUFvRTtBQUVwRSx1Q0FBK0Q7QUFPL0QsU0FBUyx3QkFBd0IsQ0FDL0IsQ0FBYSxFQUNiLElBQStCLEVBQy9CLFVBQTBDO0lBRTFDLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQ3BDLFVBQXNCLEVBQ3RCLE1BQWtDLEVBQ2xDLFVBQTBDO0lBRTFDLElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFCLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxrQkFBa0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxVQUFVLENBQUMsUUFBUSxFQUFFLHNDQUFzQyxDQUFDLENBQUM7UUFDN0YsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FDckMsV0FBOEIsRUFDOUIsVUFBcUIsRUFDckIsTUFBa0M7SUFFbEMsTUFBTSxHQUFHLEdBQUcsSUFBQSw0QkFBZSxFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUssTUFBTSxVQUFVLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDdEMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEdBQW9CO0lBQ2xELFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDWixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCxPQUFPO2dCQUNMLGdCQUFnQixFQUFFLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDO2FBQ3RFLENBQUM7UUFDSjtZQUNFLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnROYW1lLCBUcmlwbGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCwgdG9EZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vY29yZS9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHsgRGVzY3JpcHRvckJ1aWxkZXIsIHBhcnNlRGVzY3JpcHRvciB9IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgeyBOYW1lZERlc2NyaXB0b3IgfSBmcm9tICcuL05hbWVkRGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5ID0geyBhbGxvd2VkVGVtcGxhdGVzOiBEZXNjcmlwdG9yQnVpbGRlclsnbmFtZSddW10gfSB8ICdhbGxvd0FsbCc7XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTx1dHhvbGliLkJJUDMySW50ZXJmYWNlPjtcblxuZnVuY3Rpb24gaXNEZXNjcmlwdG9yV2l0aFRlbXBsYXRlKFxuICBkOiBEZXNjcmlwdG9yLFxuICBuYW1lOiBEZXNjcmlwdG9yQnVpbGRlclsnbmFtZSddLFxuICB3YWxsZXRLZXlzOiBUcmlwbGU8dXR4b2xpYi5CSVAzMkludGVyZmFjZT5cbik6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZURlc2NyaXB0b3IoZCk7XG4gIGlmIChwYXJzZWQubmFtZSAhPT0gbmFtZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAocGFyc2VkLmtleXMubGVuZ3RoICE9PSB3YWxsZXRLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyc2VkLmtleXMuZXZlcnkoKGssIGkpID0+IGsudG9CYXNlNTgoKSA9PT0gd2FsbGV0S2V5c1tpXS50b0Jhc2U1OCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlc2NyaXB0b3JQb2xpY3koXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIHBvbGljeTogRGVzY3JpcHRvclZhbGlkYXRpb25Qb2xpY3ksXG4gIHdhbGxldEtleXM6IFRyaXBsZTx1dHhvbGliLkJJUDMySW50ZXJmYWNlPlxuKTogdm9pZCB7XG4gIGlmIChwb2xpY3kgPT09ICdhbGxvd0FsbCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoJ2FsbG93ZWRUZW1wbGF0ZXMnIGluIHBvbGljeSkge1xuICAgIGNvbnN0IGFsbG93ZWQgPSBwb2xpY3kuYWxsb3dlZFRlbXBsYXRlcztcbiAgICBpZiAoIWFsbG93ZWQuc29tZSgodCkgPT4gaXNEZXNjcmlwdG9yV2l0aFRlbXBsYXRlKGRlc2NyaXB0b3IsIHQsIHdhbGxldEtleXMpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZXNjcmlwdG9yICR7ZGVzY3JpcHRvci50b1N0cmluZygpfSBkb2VzIG5vdCBtYXRjaCBhbnkgYWxsb3dlZCB0ZW1wbGF0ZWApO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkZXNjcmlwdG9yIHZhbGlkYXRpb24gcG9saWN5OiAke3BvbGljeX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVzY3JpcHRvck1hcFZhbGlkYXRlKFxuICBkZXNjcmlwdG9yczogTmFtZWREZXNjcmlwdG9yW10sXG4gIHdhbGxldEtleXM6IEtleVRyaXBsZSxcbiAgcG9saWN5OiBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeVxuKTogRGVzY3JpcHRvck1hcCB7XG4gIGNvbnN0IG1hcCA9IHRvRGVzY3JpcHRvck1hcChkZXNjcmlwdG9ycyk7XG4gIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBtYXAudmFsdWVzKCkpIHtcbiAgICBhc3NlcnREZXNjcmlwdG9yUG9saWN5KGRlc2NyaXB0b3IsIHBvbGljeSwgd2FsbGV0S2V5cyk7XG4gIH1cbiAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbGljeUZvckVudihlbnY6IEVudmlyb25tZW50TmFtZSk6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5IHtcbiAgc3dpdGNoIChlbnYpIHtcbiAgICBjYXNlICdhZG1pblByb2QnOlxuICAgIGNhc2UgJ3Byb2QnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWxsb3dlZFRlbXBsYXRlczogWydXc2gyT2YzJywgJ1dzaDJPZjNDbHR2RHJvcCcsICdTaFdzaDJPZjNDbHR2RHJvcCddLFxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdhbGxvd0FsbCc7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
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);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
8
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
|
+
});
|
|
9
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
20
|
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
12
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.descriptor = void 0;
|
|
13
40
|
__exportStar(require("./abstractUtxoCoin"), exports);
|
|
14
41
|
__exportStar(require("./config"), exports);
|
|
15
42
|
__exportStar(require("./recovery"), exports);
|
|
16
43
|
__exportStar(require("./replayProtection"), exports);
|
|
17
44
|
__exportStar(require("./sign"), exports);
|
|
18
|
-
|
|
45
|
+
exports.descriptor = __importStar(require("./descriptor"));
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQW1DO0FBQ25DLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IscURBQW1DO0FBQ25DLHlDQUF1QjtBQUd2QiwyREFBMkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Fic3RyYWN0VXR4b0NvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNvdmVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduJztcblxuZXhwb3J0IHsgVXR4b1dhbGxldCB9IGZyb20gJy4vd2FsbGV0JztcbmV4cG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as t from 'io-ts';
|
|
2
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
|
+
import { IRequestTracer, IWallet, Triple } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { AbstractUtxoCoin } from './abstractUtxoCoin';
|
|
5
|
+
import { UtxoWallet } from './wallet';
|
|
6
|
+
/**
|
|
7
|
+
* A keychain for a UTXO wallet.
|
|
8
|
+
*/
|
|
9
|
+
export declare const UtxoKeychain: t.IntersectionC<[t.TypeC<{
|
|
10
|
+
pub: t.StringC;
|
|
11
|
+
}>, t.PartialC<{
|
|
12
|
+
prv: t.StringC;
|
|
13
|
+
encryptedPrv: t.StringC;
|
|
14
|
+
}>]>;
|
|
15
|
+
export type UtxoKeychain = t.TypeOf<typeof UtxoKeychain>;
|
|
16
|
+
export declare const UtxoNamedKeychains: t.TypeC<{
|
|
17
|
+
user: t.IntersectionC<[t.TypeC<{
|
|
18
|
+
pub: t.StringC;
|
|
19
|
+
}>, t.PartialC<{
|
|
20
|
+
prv: t.StringC;
|
|
21
|
+
encryptedPrv: t.StringC;
|
|
22
|
+
}>]>;
|
|
23
|
+
backup: t.IntersectionC<[t.TypeC<{
|
|
24
|
+
pub: t.StringC;
|
|
25
|
+
}>, t.PartialC<{
|
|
26
|
+
prv: t.StringC;
|
|
27
|
+
encryptedPrv: t.StringC;
|
|
28
|
+
}>]>;
|
|
29
|
+
bitgo: t.IntersectionC<[t.TypeC<{
|
|
30
|
+
pub: t.StringC;
|
|
31
|
+
}>, t.PartialC<{
|
|
32
|
+
prv: t.StringC;
|
|
33
|
+
encryptedPrv: t.StringC;
|
|
34
|
+
}>]>;
|
|
35
|
+
}>;
|
|
36
|
+
export type UtxoNamedKeychains = t.TypeOf<typeof UtxoNamedKeychains>;
|
|
37
|
+
export declare function toKeychainTriple(keychains: UtxoNamedKeychains): Triple<UtxoKeychain>;
|
|
38
|
+
export declare function toBip32Triple(keychains: UtxoNamedKeychains | Triple<{
|
|
39
|
+
pub: string;
|
|
40
|
+
}> | Triple<string>): Triple<utxolib.BIP32Interface>;
|
|
41
|
+
export declare function fetchKeychains(coin: AbstractUtxoCoin, wallet: IWallet, reqId?: IRequestTracer): Promise<UtxoNamedKeychains>;
|
|
42
|
+
export declare const KeySignatures: t.PartialC<{
|
|
43
|
+
backupPub: t.StringC;
|
|
44
|
+
bitgoPub: t.StringC;
|
|
45
|
+
}>;
|
|
46
|
+
export type KeySignatures = t.TypeOf<typeof KeySignatures>;
|
|
47
|
+
export declare function getKeySignatures(wallet: UtxoWallet): KeySignatures | undefined;
|
|
48
|
+
//# sourceMappingURL=keychains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../src/keychains.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,OAAO,EAA4B,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAUtC;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;IAWxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAErE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,CAGpF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GACvE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAShC;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAED,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;AAE3D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAK9E"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.KeySignatures = exports.UtxoNamedKeychains = exports.UtxoKeychain = void 0;
|
|
40
|
+
exports.toKeychainTriple = toKeychainTriple;
|
|
41
|
+
exports.toBip32Triple = toBip32Triple;
|
|
42
|
+
exports.fetchKeychains = fetchKeychains;
|
|
43
|
+
exports.getKeySignatures = getKeySignatures;
|
|
44
|
+
const assert_1 = __importDefault(require("assert"));
|
|
45
|
+
const t = __importStar(require("io-ts"));
|
|
46
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
47
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
48
|
+
/*
|
|
49
|
+
|
|
50
|
+
The standard Keychain type from sdk-core requires a bunch of uninteresting parameters like `id` and `type` and leaves
|
|
51
|
+
important fields like `pub` and `prv` optional.
|
|
52
|
+
|
|
53
|
+
This is a more focused type that only includes the fields we care about.
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* A keychain for a UTXO wallet.
|
|
57
|
+
*/
|
|
58
|
+
exports.UtxoKeychain = t.intersection([
|
|
59
|
+
t.type({
|
|
60
|
+
pub: t.string,
|
|
61
|
+
}),
|
|
62
|
+
t.partial({
|
|
63
|
+
prv: t.string,
|
|
64
|
+
encryptedPrv: t.string,
|
|
65
|
+
}),
|
|
66
|
+
], 'UtxoKeychain');
|
|
67
|
+
exports.UtxoNamedKeychains = t.type({
|
|
68
|
+
user: exports.UtxoKeychain,
|
|
69
|
+
backup: exports.UtxoKeychain,
|
|
70
|
+
bitgo: exports.UtxoKeychain,
|
|
71
|
+
});
|
|
72
|
+
function toKeychainTriple(keychains) {
|
|
73
|
+
const { user, backup, bitgo } = keychains;
|
|
74
|
+
return [user, backup, bitgo];
|
|
75
|
+
}
|
|
76
|
+
function toBip32Triple(keychains) {
|
|
77
|
+
if (Array.isArray(keychains)) {
|
|
78
|
+
return keychains.map((keychain) => {
|
|
79
|
+
const v = typeof keychain === 'string' ? keychain : keychain.pub;
|
|
80
|
+
return utxolib.bip32.fromBase58(v);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return toBip32Triple(toKeychainTriple(keychains));
|
|
84
|
+
}
|
|
85
|
+
async function fetchKeychains(coin, wallet, reqId) {
|
|
86
|
+
const result = await (0, sdk_core_1.promiseProps)({
|
|
87
|
+
user: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.USER], reqId }),
|
|
88
|
+
backup: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.BACKUP], reqId }),
|
|
89
|
+
bitgo: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.BITGO], reqId }),
|
|
90
|
+
});
|
|
91
|
+
(0, assert_1.default)(exports.UtxoNamedKeychains.is(result));
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
exports.KeySignatures = t.partial({
|
|
95
|
+
backupPub: t.string,
|
|
96
|
+
bitgoPub: t.string,
|
|
97
|
+
});
|
|
98
|
+
function getKeySignatures(wallet) {
|
|
99
|
+
if (t.partial({ keySignatures: exports.KeySignatures }).is(wallet._wallet)) {
|
|
100
|
+
return wallet._wallet.keySignatures;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQ0EsNENBR0M7QUFFRCxzQ0FXQztBQUVELHdDQVlDO0FBU0QsNENBS0M7QUF2RkQsb0RBQTRCO0FBRTVCLHlDQUEyQjtBQUMzQiw4REFBZ0Q7QUFDaEQsbURBQWlHO0FBS2pHOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDeEM7SUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ0wsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNO0tBQ2QsQ0FBQztJQUNGLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDUixHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDYixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU07S0FDdkIsQ0FBQztDQUNILEVBQ0QsY0FBYyxDQUNmLENBQUM7QUFJVyxRQUFBLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsSUFBSSxFQUFFLG9CQUFZO0lBQ2xCLE1BQU0sRUFBRSxvQkFBWTtJQUNwQixLQUFLLEVBQUUsb0JBQVk7Q0FDcEIsQ0FBQyxDQUFDO0FBSUgsU0FBZ0IsZ0JBQWdCLENBQUMsU0FBNkI7SUFDNUQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQzNCLFNBQXdFO0lBRXhFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtDLEVBQUUsRUFBRTtZQUMxRCxNQUFNLENBQUMsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNqRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBbUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRU0sS0FBSyxVQUFVLGNBQWMsQ0FDbEMsSUFBc0IsRUFDdEIsTUFBZSxFQUNmLEtBQXNCO0lBRXRCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSx1QkFBWSxFQUFDO1FBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzNFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQy9FLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0tBQzlFLENBQUMsQ0FBQztJQUNILElBQUEsZ0JBQU0sRUFBQywwQkFBa0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRVksUUFBQSxhQUFhLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNyQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDbkIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ25CLENBQUMsQ0FBQztBQUlILFNBQWdCLGdCQUFnQixDQUFDLE1BQWtCO0lBQ2pELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxxQkFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IElSZXF1ZXN0VHJhY2VyLCBJV2FsbGV0LCBLZXlJbmRpY2VzLCBwcm9taXNlUHJvcHMsIFRyaXBsZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBVdHhvV2FsbGV0IH0gZnJvbSAnLi93YWxsZXQnO1xuXG4vKlxuXG5UaGUgc3RhbmRhcmQgS2V5Y2hhaW4gdHlwZSBmcm9tIHNkay1jb3JlIHJlcXVpcmVzIGEgYnVuY2ggb2YgdW5pbnRlcmVzdGluZyBwYXJhbWV0ZXJzIGxpa2UgYGlkYCBhbmQgYHR5cGVgIGFuZCBsZWF2ZXNcbmltcG9ydGFudCBmaWVsZHMgbGlrZSBgcHViYCBhbmQgYHBydmAgb3B0aW9uYWwuXG5cblRoaXMgaXMgYSBtb3JlIGZvY3VzZWQgdHlwZSB0aGF0IG9ubHkgaW5jbHVkZXMgdGhlIGZpZWxkcyB3ZSBjYXJlIGFib3V0LlxuICovXG5cbi8qKlxuICogQSBrZXljaGFpbiBmb3IgYSBVVFhPIHdhbGxldC5cbiAqL1xuZXhwb3J0IGNvbnN0IFV0eG9LZXljaGFpbiA9IHQuaW50ZXJzZWN0aW9uKFxuICBbXG4gICAgdC50eXBlKHtcbiAgICAgIHB1YjogdC5zdHJpbmcsXG4gICAgfSksXG4gICAgdC5wYXJ0aWFsKHtcbiAgICAgIHBydjogdC5zdHJpbmcsXG4gICAgICBlbmNyeXB0ZWRQcnY6IHQuc3RyaW5nLFxuICAgIH0pLFxuICBdLFxuICAnVXR4b0tleWNoYWluJ1xuKTtcblxuZXhwb3J0IHR5cGUgVXR4b0tleWNoYWluID0gdC5UeXBlT2Y8dHlwZW9mIFV0eG9LZXljaGFpbj47XG5cbmV4cG9ydCBjb25zdCBVdHhvTmFtZWRLZXljaGFpbnMgPSB0LnR5cGUoe1xuICB1c2VyOiBVdHhvS2V5Y2hhaW4sXG4gIGJhY2t1cDogVXR4b0tleWNoYWluLFxuICBiaXRnbzogVXR4b0tleWNoYWluLFxufSk7XG5cbmV4cG9ydCB0eXBlIFV0eG9OYW1lZEtleWNoYWlucyA9IHQuVHlwZU9mPHR5cGVvZiBVdHhvTmFtZWRLZXljaGFpbnM+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnM6IFV0eG9OYW1lZEtleWNoYWlucyk6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+IHtcbiAgY29uc3QgeyB1c2VyLCBiYWNrdXAsIGJpdGdvIH0gPSBrZXljaGFpbnM7XG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0JpcDMyVHJpcGxlKFxuICBrZXljaGFpbnM6IFV0eG9OYW1lZEtleWNoYWlucyB8IFRyaXBsZTx7IHB1Yjogc3RyaW5nIH0+IHwgVHJpcGxlPHN0cmluZz5cbik6IFRyaXBsZTx1dHhvbGliLkJJUDMySW50ZXJmYWNlPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGtleWNoYWlucykpIHtcbiAgICByZXR1cm4ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW46IHsgcHViOiBzdHJpbmcgfSB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdiA9IHR5cGVvZiBrZXljaGFpbiA9PT0gJ3N0cmluZycgPyBrZXljaGFpbiA6IGtleWNoYWluLnB1YjtcbiAgICAgIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodik7XG4gICAgfSkgYXMgVHJpcGxlPHV0eG9saWIuQklQMzJJbnRlcmZhY2U+O1xuICB9XG5cbiAgcmV0dXJuIHRvQmlwMzJUcmlwbGUodG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoS2V5Y2hhaW5zKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB3YWxsZXQ6IElXYWxsZXQsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8VXR4b05hbWVkS2V5Y2hhaW5zPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2VQcm9wcyh7XG4gICAgdXNlcjogY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW0tleUluZGljZXMuVVNFUl0sIHJlcUlkIH0pLFxuICAgIGJhY2t1cDogY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW0tleUluZGljZXMuQkFDS1VQXSwgcmVxSWQgfSksXG4gICAgYml0Z286IGNvaW4ua2V5Y2hhaW5zKCkuZ2V0KHsgaWQ6IHdhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLkJJVEdPXSwgcmVxSWQgfSksXG4gIH0pO1xuICBhc3NlcnQoVXR4b05hbWVkS2V5Y2hhaW5zLmlzKHJlc3VsdCkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3QgS2V5U2lnbmF0dXJlcyA9IHQucGFydGlhbCh7XG4gIGJhY2t1cFB1YjogdC5zdHJpbmcsXG4gIGJpdGdvUHViOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgdHlwZSBLZXlTaWduYXR1cmVzID0gdC5UeXBlT2Y8dHlwZW9mIEtleVNpZ25hdHVyZXM+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQ6IFV0eG9XYWxsZXQpOiBLZXlTaWduYXR1cmVzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHQucGFydGlhbCh7IGtleVNpZ25hdHVyZXM6IEtleVNpZ25hdHVyZXMgfSkuaXMod2FsbGV0Ll93YWxsZXQpKSB7XG4gICAgcmV0dXJuIHdhbGxldC5fd2FsbGV0LmtleVNpZ25hdHVyZXM7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
/**
|
|
3
|
+
* @param n
|
|
4
|
+
* @returns the family name for a network. Testnets and mainnets of the same coin share the same family name.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getFamilyFromNetwork(n: utxolib.Network): string;
|
|
7
|
+
/**
|
|
8
|
+
* Get the chain name for a network.
|
|
9
|
+
* The chain is different for every network.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getChainFromNetwork(n: utxolib.Network): string;
|
|
12
|
+
export declare function getFullNameFromNetwork(n: utxolib.Network): string;
|
|
13
|
+
//# sourceMappingURL=names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAUhD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAiC/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CA6B9D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAwDjE"}
|