@bitgo/abstract-utxo 9.4.0 → 9.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/src/abstractUtxoCoin.d.ts +16 -40
- package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/src/abstractUtxoCoin.js +34 -416
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -1
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
- package/dist/src/descriptor/assertDescriptorWalletAddress.js +4 -10
- 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 +35 -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 +138 -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 +1 -0
- package/dist/src/descriptor/index.d.ts.map +1 -1
- package/dist/src/descriptor/index.js +5 -2
- 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 +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/keychains.d.ts +14 -0
- package/dist/src/keychains.d.ts.map +1 -0
- package/dist/src/keychains.js +61 -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 +3 -0
- package/dist/src/transaction/descriptor/index.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/index.js +6 -0
- package/dist/src/transaction/descriptor/outputDifference.d.ts +30 -0
- package/dist/src/transaction/descriptor/outputDifference.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/outputDifference.js +38 -0
- package/dist/src/transaction/explainTransaction.d.ts +2 -0
- package/dist/src/transaction/explainTransaction.d.ts.map +1 -1
- package/dist/src/transaction/explainTransaction.js +5 -1
- package/dist/src/transaction/fixedScript/index.d.ts +3 -0
- package/dist/src/transaction/fixedScript/index.d.ts.map +1 -1
- package/dist/src/transaction/fixedScript/index.js +6 -2
- package/dist/src/{parseOutput.d.ts → transaction/fixedScript/parseOutput.d.ts} +6 -3
- package/dist/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseOutput.js +214 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts +9 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseTransaction.js +207 -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 +177 -0
- package/dist/src/transaction/index.d.ts +2 -0
- package/dist/src/transaction/index.d.ts.map +1 -1
- package/dist/src/transaction/index.js +6 -2
- 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 +47 -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 +47 -0
- package/dist/src/verifyKey.d.ts +27 -0
- package/dist/src/verifyKey.d.ts.map +1 -0
- package/dist/src/verifyKey.js +168 -0
- package/dist/test/core/descriptor/descriptor.utils.d.ts +6 -4
- package/dist/test/core/descriptor/descriptor.utils.d.ts.map +1 -1
- package/dist/test/core/descriptor/descriptor.utils.js +8 -2
- 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 +70 -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/outputDifference.d.ts +2 -0
- package/dist/test/outputDifference.d.ts.map +1 -0
- package/dist/test/outputDifference.js +86 -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 +31 -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 +60 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/parseOutput.d.ts.map +0 -1
- package/dist/src/parseOutput.js +0 -214
|
@@ -0,0 +1,61 @@
|
|
|
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.toKeychainTriple = toKeychainTriple;
|
|
37
|
+
exports.toBip32Triple = toBip32Triple;
|
|
38
|
+
exports.fetchKeychains = fetchKeychains;
|
|
39
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
40
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
41
|
+
function toKeychainTriple(keychains) {
|
|
42
|
+
const { user, backup, bitgo } = keychains;
|
|
43
|
+
if (!user || !backup || !bitgo) {
|
|
44
|
+
throw new Error('keychains must include user, backup, and bitgo');
|
|
45
|
+
}
|
|
46
|
+
return [user, backup, bitgo];
|
|
47
|
+
}
|
|
48
|
+
function toBip32Triple(keychains) {
|
|
49
|
+
return keychains.map((keychain) => {
|
|
50
|
+
const v = typeof keychain === 'string' ? keychain : keychain.pub;
|
|
51
|
+
return utxolib.bip32.fromBase58(v);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async function fetchKeychains(coin, wallet, reqId) {
|
|
55
|
+
return (0, sdk_core_1.promiseProps)({
|
|
56
|
+
user: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.USER], reqId }),
|
|
57
|
+
backup: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.BACKUP], reqId }),
|
|
58
|
+
bitgo: coin.keychains().get({ id: wallet.keyIds()[sdk_core_1.KeyIndices.BITGO], reqId }),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLDRDQU1DO0FBRUQsc0NBS0M7QUFFRCx3Q0FVQztBQXBDRCx5REFBMkM7QUFDM0MsOENBQXNHO0FBVXRHLFNBQWdCLGdCQUFnQixDQUFDLFNBQXlCO0lBQ3hELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFNBQW1EO0lBQy9FLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtDLEVBQUUsRUFBRTtRQUMxRCxNQUFNLENBQUMsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUNqRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBbUMsQ0FBQztBQUN2QyxDQUFDO0FBRU0sS0FBSyxVQUFVLGNBQWMsQ0FDbEMsSUFBc0IsRUFDdEIsTUFBZSxFQUNmLEtBQXNCO0lBRXRCLE9BQU8sSUFBQSx1QkFBWSxFQUFDO1FBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzNFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQy9FLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0tBQzlFLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciwgSVdhbGxldCwgS2V5Y2hhaW4sIEtleUluZGljZXMsIHByb21pc2VQcm9wcywgVHJpcGxlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4vYWJzdHJhY3RVdHhvQ29pbic7XG5cbmV4cG9ydCB0eXBlIE5hbWVkS2V5Y2hhaW5zID0ge1xuICB1c2VyPzogS2V5Y2hhaW47XG4gIGJhY2t1cD86IEtleWNoYWluO1xuICBiaXRnbz86IEtleWNoYWluO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zOiBOYW1lZEtleWNoYWlucyk6IFRyaXBsZTxLZXljaGFpbj4ge1xuICBjb25zdCB7IHVzZXIsIGJhY2t1cCwgYml0Z28gfSA9IGtleWNoYWlucztcbiAgaWYgKCF1c2VyIHx8ICFiYWNrdXAgfHwgIWJpdGdvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdrZXljaGFpbnMgbXVzdCBpbmNsdWRlIHVzZXIsIGJhY2t1cCwgYW5kIGJpdGdvJyk7XG4gIH1cbiAgcmV0dXJuIFt1c2VyLCBiYWNrdXAsIGJpdGdvXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQmlwMzJUcmlwbGUoa2V5Y2hhaW5zOiBUcmlwbGU8eyBwdWI6IHN0cmluZyB9PiB8IFRyaXBsZTxzdHJpbmc+KTogVHJpcGxlPHV0eG9saWIuQklQMzJJbnRlcmZhY2U+IHtcbiAgcmV0dXJuIGtleWNoYWlucy5tYXAoKGtleWNoYWluOiB7IHB1Yjogc3RyaW5nIH0gfCBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB2ID0gdHlwZW9mIGtleWNoYWluID09PSAnc3RyaW5nJyA/IGtleWNoYWluIDoga2V5Y2hhaW4ucHViO1xuICAgIHJldHVybiB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodik7XG4gIH0pIGFzIFRyaXBsZTx1dHhvbGliLkJJUDMySW50ZXJmYWNlPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoS2V5Y2hhaW5zKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB3YWxsZXQ6IElXYWxsZXQsXG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXJcbik6IFByb21pc2U8TmFtZWRLZXljaGFpbnM+IHtcbiAgcmV0dXJuIHByb21pc2VQcm9wcyh7XG4gICAgdXNlcjogY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW0tleUluZGljZXMuVVNFUl0sIHJlcUlkIH0pLFxuICAgIGJhY2t1cDogY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogd2FsbGV0LmtleUlkcygpW0tleUluZGljZXMuQkFDS1VQXSwgcmVxSWQgfSksXG4gICAgYml0Z286IGNvaW4ua2V5Y2hhaW5zKCkuZ2V0KHsgaWQ6IHdhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLkJJVEdPXSwgcmVxSWQgfSksXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
|
+
import * as coreDescriptors from '../../core/descriptor';
|
|
3
|
+
import { TransactionExplanation } from '../../abstractUtxoCoin';
|
|
4
|
+
export declare function explainPsbt(psbt: utxolib.bitgo.UtxoPsbt, descriptors: coreDescriptors.DescriptorMap): TransactionExplanation;
|
|
5
|
+
//# sourceMappingURL=explainPsbt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainPsbt.d.ts","sourceRoot":"","sources":["../../../../src/transaction/descriptor/explainPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAG3C,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AA4BhE,wBAAgB,WAAW,CACzB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,eAAe,CAAC,aAAa,GACzC,sBAAsB,CAkBxB"}
|
|
@@ -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.explainPsbt = explainPsbt;
|
|
37
|
+
const coreDescriptors = __importStar(require("../../core/descriptor"));
|
|
38
|
+
const recipient_1 = require("../recipient");
|
|
39
|
+
function toRecipient(output, network) {
|
|
40
|
+
return {
|
|
41
|
+
address: (0, recipient_1.toExtendedAddressFormat)(output.script, network),
|
|
42
|
+
amount: output.value.toString(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function sumValues(arr) {
|
|
46
|
+
return arr.reduce((sum, e) => sum + e.value, BigInt(0));
|
|
47
|
+
}
|
|
48
|
+
function getInputSignaturesForInputIndex(psbt, inputIndex) {
|
|
49
|
+
const { partialSig } = psbt.data.inputs[inputIndex];
|
|
50
|
+
if (!partialSig) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
return partialSig.reduce((agg, p) => {
|
|
54
|
+
const valid = psbt.validateSignaturesOfInputCommon(inputIndex, p.pubkey);
|
|
55
|
+
return agg + (valid ? 1 : 0);
|
|
56
|
+
}, 0);
|
|
57
|
+
}
|
|
58
|
+
function getInputSignatures(psbt) {
|
|
59
|
+
return psbt.data.inputs.map((_, i) => getInputSignaturesForInputIndex(psbt, i));
|
|
60
|
+
}
|
|
61
|
+
function explainPsbt(psbt, descriptors) {
|
|
62
|
+
const parsedTransaction = coreDescriptors.parse(psbt, descriptors, psbt.network);
|
|
63
|
+
const { inputs, outputs } = parsedTransaction;
|
|
64
|
+
const externalOutputs = outputs.filter((o) => o.scriptId === undefined);
|
|
65
|
+
const changeOutputs = outputs.filter((o) => o.scriptId !== undefined);
|
|
66
|
+
const fee = sumValues(inputs) - sumValues(outputs);
|
|
67
|
+
const inputSignatures = getInputSignatures(psbt);
|
|
68
|
+
return {
|
|
69
|
+
inputSignatures,
|
|
70
|
+
signatures: inputSignatures.reduce((a, b) => Math.min(a, b), Infinity),
|
|
71
|
+
locktime: psbt.locktime,
|
|
72
|
+
id: psbt.getUnsignedTx().getId(),
|
|
73
|
+
outputs: externalOutputs.map((o) => toRecipient(o, psbt.network)),
|
|
74
|
+
outputAmount: sumValues(externalOutputs).toString(),
|
|
75
|
+
changeOutputs: changeOutputs.map((o) => toRecipient(o, psbt.network)),
|
|
76
|
+
changeAmount: sumValues(changeOutputs).toString(),
|
|
77
|
+
fee: fee.toString(),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9leHBsYWluUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtDQSxrQ0FxQkM7QUFwREQsdUVBQXlEO0FBRXpELDRDQUF1RDtBQUd2RCxTQUFTLFdBQVcsQ0FBQyxNQUFvQixFQUFFLE9BQXdCO0lBQ2pFLE9BQU87UUFDTCxPQUFPLEVBQUUsSUFBQSxtQ0FBdUIsRUFBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUN4RCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUF3QjtJQUN6QyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxJQUE0QixFQUFFLFVBQWtCO0lBQ3ZGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLElBQTRCO0lBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsK0JBQStCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsSUFBNEIsRUFDNUIsV0FBMEM7SUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFDOUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUN4RSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsT0FBTztRQUNMLGVBQWU7UUFDZixVQUFVLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztRQUN0RSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUU7UUFDaEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLFlBQVksRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQ25ELGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRSxZQUFZLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUNqRCxHQUFHLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRTtLQUNwQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IElUcmFuc2FjdGlvblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCAqIGFzIGNvcmVEZXNjcmlwdG9ycyBmcm9tICcuLi8uLi9jb3JlL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgUGFyc2VkT3V0cHV0IH0gZnJvbSAnLi4vLi4vY29yZS9kZXNjcmlwdG9yL3BzYnQvcGFyc2UnO1xuaW1wb3J0IHsgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuXG5mdW5jdGlvbiB0b1JlY2lwaWVudChvdXRwdXQ6IFBhcnNlZE91dHB1dCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogSVRyYW5zYWN0aW9uUmVjaXBpZW50IHtcbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBuZXR3b3JrKSxcbiAgICBhbW91bnQ6IG91dHB1dC52YWx1ZS50b1N0cmluZygpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzdW1WYWx1ZXMoYXJyOiB7IHZhbHVlOiBiaWdpbnQgfVtdKTogYmlnaW50IHtcbiAgcmV0dXJuIGFyci5yZWR1Y2UoKHN1bSwgZSkgPT4gc3VtICsgZS52YWx1ZSwgQmlnSW50KDApKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5wdXRTaWduYXR1cmVzRm9ySW5wdXRJbmRleChwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCBpbnB1dEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCB7IHBhcnRpYWxTaWcgfSA9IHBzYnQuZGF0YS5pbnB1dHNbaW5wdXRJbmRleF07XG4gIGlmICghcGFydGlhbFNpZykge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsU2lnLnJlZHVjZSgoYWdnLCBwKSA9PiB7XG4gICAgY29uc3QgdmFsaWQgPSBwc2J0LnZhbGlkYXRlU2lnbmF0dXJlc09mSW5wdXRDb21tb24oaW5wdXRJbmRleCwgcC5wdWJrZXkpO1xuICAgIHJldHVybiBhZ2cgKyAodmFsaWQgPyAxIDogMCk7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBnZXRJbnB1dFNpZ25hdHVyZXMocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IG51bWJlcltdIHtcbiAgcmV0dXJuIHBzYnQuZGF0YS5pbnB1dHMubWFwKChfLCBpKSA9PiBnZXRJbnB1dFNpZ25hdHVyZXNGb3JJbnB1dEluZGV4KHBzYnQsIGkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Qc2J0KFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LFxuICBkZXNjcmlwdG9yczogY29yZURlc2NyaXB0b3JzLkRlc2NyaXB0b3JNYXBcbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICBjb25zdCBwYXJzZWRUcmFuc2FjdGlvbiA9IGNvcmVEZXNjcmlwdG9ycy5wYXJzZShwc2J0LCBkZXNjcmlwdG9ycywgcHNidC5uZXR3b3JrKTtcbiAgY29uc3QgeyBpbnB1dHMsIG91dHB1dHMgfSA9IHBhcnNlZFRyYW5zYWN0aW9uO1xuICBjb25zdCBleHRlcm5hbE91dHB1dHMgPSBvdXRwdXRzLmZpbHRlcigobykgPT4gby5zY3JpcHRJZCA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IG91dHB1dHMuZmlsdGVyKChvKSA9PiBvLnNjcmlwdElkICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBmZWUgPSBzdW1WYWx1ZXMoaW5wdXRzKSAtIHN1bVZhbHVlcyhvdXRwdXRzKTtcbiAgY29uc3QgaW5wdXRTaWduYXR1cmVzID0gZ2V0SW5wdXRTaWduYXR1cmVzKHBzYnQpO1xuICByZXR1cm4ge1xuICAgIGlucHV0U2lnbmF0dXJlcyxcbiAgICBzaWduYXR1cmVzOiBpbnB1dFNpZ25hdHVyZXMucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1pbihhLCBiKSwgSW5maW5pdHkpLFxuICAgIGxvY2t0aW1lOiBwc2J0LmxvY2t0aW1lLFxuICAgIGlkOiBwc2J0LmdldFVuc2lnbmVkVHgoKS5nZXRJZCgpLFxuICAgIG91dHB1dHM6IGV4dGVybmFsT3V0cHV0cy5tYXAoKG8pID0+IHRvUmVjaXBpZW50KG8sIHBzYnQubmV0d29yaykpLFxuICAgIG91dHB1dEFtb3VudDogc3VtVmFsdWVzKGV4dGVybmFsT3V0cHV0cykudG9TdHJpbmcoKSxcbiAgICBjaGFuZ2VPdXRwdXRzOiBjaGFuZ2VPdXRwdXRzLm1hcCgobykgPT4gdG9SZWNpcGllbnQobywgcHNidC5uZXR3b3JrKSksXG4gICAgY2hhbmdlQW1vdW50OiBzdW1WYWx1ZXMoY2hhbmdlT3V0cHV0cykudG9TdHJpbmcoKSxcbiAgICBmZWU6IGZlZS50b1N0cmluZygpLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transaction/descriptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.explainPsbt = void 0;
|
|
4
|
+
var explainPsbt_1 = require("./explainPsbt");
|
|
5
|
+
Object.defineProperty(exports, "explainPsbt", { enumerable: true, get: function () { return explainPsbt_1.explainPsbt; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uLy4uL2NvcmUvZGVzY3JpcHRvcic7XG5leHBvcnQgeyBleHBsYWluUHNidCB9IGZyb20gJy4vZXhwbGFpblBzYnQnO1xuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type ComparableOutput = {
|
|
2
|
+
script: Buffer;
|
|
3
|
+
value: bigint;
|
|
4
|
+
};
|
|
5
|
+
export type ParseOutputsResult<T extends ComparableOutput> = {
|
|
6
|
+
/** These are the external outputs that were explicitly specified in the transaction */
|
|
7
|
+
explicitExternalOutputs: T[];
|
|
8
|
+
/**
|
|
9
|
+
* These are the surprise external outputs that were not explicitly specified in the transaction.
|
|
10
|
+
* They can be PayGo fees.
|
|
11
|
+
*/
|
|
12
|
+
implicitExternalOutputs: T[];
|
|
13
|
+
/**
|
|
14
|
+
* These are the outputs that were expected to be in the transaction but were not found.
|
|
15
|
+
*/
|
|
16
|
+
missingOutputs: T[];
|
|
17
|
+
};
|
|
18
|
+
export declare function equalOutput<T extends ComparableOutput>(a: T, b: T): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* @returns all outputs in the first array that are not in the second array
|
|
21
|
+
* Outputs can occur more than once in each array.
|
|
22
|
+
*/
|
|
23
|
+
export declare function outputDifference<T extends ComparableOutput>(first: T[], second: T[]): T[];
|
|
24
|
+
/**
|
|
25
|
+
* @param actualExternalOutputs - external outputs in the transaction
|
|
26
|
+
* @param expectedExternalOutputs - external outputs that were expected to be in the transaction
|
|
27
|
+
* @returns the difference between the actual and expected external outputs
|
|
28
|
+
*/
|
|
29
|
+
export declare function outputDifferencesWithExpected<T extends ComparableOutput>(actualExternalOutputs: T[], expectedExternalOutputs: T[]): ParseOutputsResult<T>;
|
|
30
|
+
//# sourceMappingURL=outputDifference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputDifference.d.ts","sourceRoot":"","sources":["../../../../src/transaction/descriptor/outputDifference.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAC3D,uFAAuF;IACvF,uBAAuB,EAAE,CAAC,EAAE,CAAC;IAC7B;;;OAGG;IACH,uBAAuB,EAAE,CAAC,EAAE,CAAC;IAC7B;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAE3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CASzF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,gBAAgB,EACtE,qBAAqB,EAAE,CAAC,EAAE,EAC1B,uBAAuB,EAAE,CAAC,EAAE,GAC3B,kBAAkB,CAAC,CAAC,CAAC,CASvB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.equalOutput = equalOutput;
|
|
4
|
+
exports.outputDifference = outputDifference;
|
|
5
|
+
exports.outputDifferencesWithExpected = outputDifferencesWithExpected;
|
|
6
|
+
function equalOutput(a, b) {
|
|
7
|
+
return a.value === b.value && a.script.equals(b.script);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @returns all outputs in the first array that are not in the second array
|
|
11
|
+
* Outputs can occur more than once in each array.
|
|
12
|
+
*/
|
|
13
|
+
function outputDifference(first, second) {
|
|
14
|
+
first = first.slice();
|
|
15
|
+
for (const output of second) {
|
|
16
|
+
const index = first.findIndex((o) => equalOutput(o, output));
|
|
17
|
+
if (index !== -1) {
|
|
18
|
+
first.splice(index, 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return first;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @param actualExternalOutputs - external outputs in the transaction
|
|
25
|
+
* @param expectedExternalOutputs - external outputs that were expected to be in the transaction
|
|
26
|
+
* @returns the difference between the actual and expected external outputs
|
|
27
|
+
*/
|
|
28
|
+
function outputDifferencesWithExpected(actualExternalOutputs, expectedExternalOutputs) {
|
|
29
|
+
const implicitExternalOutputs = outputDifference(actualExternalOutputs, expectedExternalOutputs);
|
|
30
|
+
const explicitExternalOutputs = outputDifference(actualExternalOutputs, implicitExternalOutputs);
|
|
31
|
+
const missingOutputs = outputDifference(expectedExternalOutputs, actualExternalOutputs);
|
|
32
|
+
return {
|
|
33
|
+
explicitExternalOutputs,
|
|
34
|
+
implicitExternalOutputs,
|
|
35
|
+
missingOutputs,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0RGlmZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL291dHB1dERpZmZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsa0NBRUM7QUFNRCw0Q0FTQztBQU9ELHNFQVlDO0FBcENELFNBQWdCLFdBQVcsQ0FBNkIsQ0FBSSxFQUFFLENBQUk7SUFDaEUsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBNkIsS0FBVSxFQUFFLE1BQVc7SUFDbEYsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLDZCQUE2QixDQUMzQyxxQkFBMEIsRUFDMUIsdUJBQTRCO0lBRTVCLE1BQU0sdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUNqRyxNQUFNLHVCQUF1QixHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDakcsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUN4RixPQUFPO1FBQ0wsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2QixjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0ID0ge1xuICBzY3JpcHQ6IEJ1ZmZlcjtcbiAgdmFsdWU6IGJpZ2ludDtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlT3V0cHV0c1Jlc3VsdDxUIGV4dGVuZHMgQ29tcGFyYWJsZU91dHB1dD4gPSB7XG4gIC8qKiBUaGVzZSBhcmUgdGhlIGV4dGVybmFsIG91dHB1dHMgdGhhdCB3ZXJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSB0cmFuc2FjdGlvbiAqL1xuICBleHBsaWNpdEV4dGVybmFsT3V0cHV0czogVFtdO1xuICAvKipcbiAgICogVGhlc2UgYXJlIHRoZSBzdXJwcmlzZSBleHRlcm5hbCBvdXRwdXRzIHRoYXQgd2VyZSBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIHRyYW5zYWN0aW9uLlxuICAgKiBUaGV5IGNhbiBiZSBQYXlHbyBmZWVzLlxuICAgKi9cbiAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IFRbXTtcbiAgLyoqXG4gICAqIFRoZXNlIGFyZSB0aGUgb3V0cHV0cyB0aGF0IHdlcmUgZXhwZWN0ZWQgdG8gYmUgaW4gdGhlIHRyYW5zYWN0aW9uIGJ1dCB3ZXJlIG5vdCBmb3VuZC5cbiAgICovXG4gIG1pc3NpbmdPdXRwdXRzOiBUW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxPdXRwdXQ8VCBleHRlbmRzIENvbXBhcmFibGVPdXRwdXQ+KGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGEudmFsdWUgPT09IGIudmFsdWUgJiYgYS5zY3JpcHQuZXF1YWxzKGIuc2NyaXB0KTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBhbGwgb3V0cHV0cyBpbiB0aGUgZmlyc3QgYXJyYXkgdGhhdCBhcmUgbm90IGluIHRoZSBzZWNvbmQgYXJyYXlcbiAqIE91dHB1dHMgY2FuIG9jY3VyIG1vcmUgdGhhbiBvbmNlIGluIGVhY2ggYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRwdXREaWZmZXJlbmNlPFQgZXh0ZW5kcyBDb21wYXJhYmxlT3V0cHV0PihmaXJzdDogVFtdLCBzZWNvbmQ6IFRbXSk6IFRbXSB7XG4gIGZpcnN0ID0gZmlyc3Quc2xpY2UoKTtcbiAgZm9yIChjb25zdCBvdXRwdXQgb2Ygc2Vjb25kKSB7XG4gICAgY29uc3QgaW5kZXggPSBmaXJzdC5maW5kSW5kZXgoKG8pID0+IGVxdWFsT3V0cHV0KG8sIG91dHB1dCkpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGZpcnN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYWN0dWFsRXh0ZXJuYWxPdXRwdXRzIC0gZXh0ZXJuYWwgb3V0cHV0cyBpbiB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBleHBlY3RlZEV4dGVybmFsT3V0cHV0cyAtIGV4dGVybmFsIG91dHB1dHMgdGhhdCB3ZXJlIGV4cGVjdGVkIHRvIGJlIGluIHRoZSB0cmFuc2FjdGlvblxuICogQHJldHVybnMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCBleHRlcm5hbCBvdXRwdXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRwdXREaWZmZXJlbmNlc1dpdGhFeHBlY3RlZDxUIGV4dGVuZHMgQ29tcGFyYWJsZU91dHB1dD4oXG4gIGFjdHVhbEV4dGVybmFsT3V0cHV0czogVFtdLFxuICBleHBlY3RlZEV4dGVybmFsT3V0cHV0czogVFtdXG4pOiBQYXJzZU91dHB1dHNSZXN1bHQ8VD4ge1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyA9IG91dHB1dERpZmZlcmVuY2UoYWN0dWFsRXh0ZXJuYWxPdXRwdXRzLCBleHBlY3RlZEV4dGVybmFsT3V0cHV0cyk7XG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShhY3R1YWxFeHRlcm5hbE91dHB1dHMsIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKTtcbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKGV4cGVjdGVkRXh0ZXJuYWxPdXRwdXRzLCBhY3R1YWxFeHRlcm5hbE91dHB1dHMpO1xuICByZXR1cm4ge1xuICAgIGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzLFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLFxuICAgIG1pc3NpbmdPdXRwdXRzLFxuICB9O1xufVxuIl19
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
2
|
import { TransactionExplanation } from '../abstractUtxoCoin';
|
|
3
3
|
import * as fixedScript from './fixedScript';
|
|
4
|
+
import { IWallet } from '@bitgo/sdk-core';
|
|
4
5
|
/**
|
|
5
6
|
* Decompose a raw transaction into useful information, such as the total amounts,
|
|
6
7
|
* change amounts, and transaction outputs.
|
|
7
8
|
*/
|
|
8
9
|
export declare function explainTx<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoPsbt, params: {
|
|
10
|
+
wallet?: IWallet;
|
|
9
11
|
pubs?: string[];
|
|
10
12
|
txInfo?: {
|
|
11
13
|
unspents?: utxolib.bitgo.Unspent<TNumber>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explainTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/explainTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvD,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EACnE,MAAM,EAAE;IACN,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC;IACzD,UAAU,CAAC,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC;CAC9C,EACD,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"explainTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/explainTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvD,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EACnE,MAAM,EAAE;IACN,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC;IACzD,UAAU,CAAC,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC;CAC9C,EACD,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,sBAAsB,CASxB"}
|
|
@@ -36,11 +36,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.explainTx = explainTx;
|
|
37
37
|
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
38
38
|
const fixedScript = __importStar(require("./fixedScript"));
|
|
39
|
+
const descriptor_1 = require("../descriptor");
|
|
39
40
|
/**
|
|
40
41
|
* Decompose a raw transaction into useful information, such as the total amounts,
|
|
41
42
|
* change amounts, and transaction outputs.
|
|
42
43
|
*/
|
|
43
44
|
function explainTx(tx, params, network) {
|
|
45
|
+
if (params.wallet && (0, descriptor_1.isDescriptorWallet)(params.wallet)) {
|
|
46
|
+
throw new Error('Descriptor wallets are not supported');
|
|
47
|
+
}
|
|
44
48
|
if (tx instanceof utxolib.bitgo.UtxoPsbt) {
|
|
45
49
|
return fixedScript.explainPsbt(tx, params, network);
|
|
46
50
|
}
|
|
@@ -48,4 +52,4 @@ function explainTx(tx, params, network) {
|
|
|
48
52
|
return fixedScript.explainLegacyTx(tx, params, network);
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLDhCQWtCQztBQS9CRCx5REFBMkM7QUFJM0MsMkRBQTZDO0FBRzdDLDhDQUFtRDtBQUVuRDs7O0dBR0c7QUFDSCxTQUFnQixTQUFTLENBQ3ZCLEVBQW1FLEVBQ25FLE1BS0MsRUFDRCxPQUF3QjtJQUV4QixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBQSwrQkFBa0IsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELElBQUksRUFBRSxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuXG5pbXBvcnQgKiBhcyBmaXhlZFNjcmlwdCBmcm9tICcuL2ZpeGVkU2NyaXB0JztcblxuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBpc0Rlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICcuLi9kZXNjcmlwdG9yJztcblxuLyoqXG4gKiBEZWNvbXBvc2UgYSByYXcgdHJhbnNhY3Rpb24gaW50byB1c2VmdWwgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIHRvdGFsIGFtb3VudHMsXG4gKiBjaGFuZ2UgYW1vdW50cywgYW5kIHRyYW5zYWN0aW9uIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluVHg8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIHBhcmFtczoge1xuICAgIHdhbGxldD86IElXYWxsZXQ7XG4gICAgcHVicz86IHN0cmluZ1tdO1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB9O1xuICAgIGNoYW5nZUluZm8/OiBmaXhlZFNjcmlwdC5DaGFuZ2VBZGRyZXNzSW5mb1tdO1xuICB9LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICBpZiAocGFyYW1zLndhbGxldCAmJiBpc0Rlc2NyaXB0b3JXYWxsZXQocGFyYW1zLndhbGxldCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlc2NyaXB0b3Igd2FsbGV0cyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICB9XG4gIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpIHtcbiAgICByZXR1cm4gZml4ZWRTY3JpcHQuZXhwbGFpblBzYnQodHgsIHBhcmFtcywgbmV0d29yayk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZpeGVkU2NyaXB0LmV4cGxhaW5MZWdhY3lUeCh0eCwgcGFyYW1zLCBuZXR3b3JrKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export { explainPsbt, explainLegacyTx, ChangeAddressInfo } from './explainTransaction';
|
|
2
|
+
export { parseTransaction } from './parseTransaction';
|
|
3
|
+
export { verifyTransaction } from './verifyTransaction';
|
|
4
|
+
export { CustomChangeOptions } from './parseOutput';
|
|
2
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.explainLegacyTx = exports.explainPsbt = void 0;
|
|
3
|
+
exports.verifyTransaction = exports.parseTransaction = exports.explainLegacyTx = exports.explainPsbt = void 0;
|
|
4
4
|
var explainTransaction_1 = require("./explainTransaction");
|
|
5
5
|
Object.defineProperty(exports, "explainPsbt", { enumerable: true, get: function () { return explainTransaction_1.explainPsbt; } });
|
|
6
6
|
Object.defineProperty(exports, "explainLegacyTx", { enumerable: true, get: function () { return explainTransaction_1.explainLegacyTx; } });
|
|
7
|
-
|
|
7
|
+
var parseTransaction_1 = require("./parseTransaction");
|
|
8
|
+
Object.defineProperty(exports, "parseTransaction", { enumerable: true, get: function () { return parseTransaction_1.parseTransaction; } });
|
|
9
|
+
var verifyTransaction_1 = require("./verifyTransaction");
|
|
10
|
+
Object.defineProperty(exports, "verifyTransaction", { enumerable: true, get: function () { return verifyTransaction_1.verifyTransaction; } });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXVGO0FBQTlFLGlIQUFBLFdBQVcsT0FBQTtBQUFFLHFIQUFBLGVBQWUsT0FBQTtBQUNyQyx1REFBc0Q7QUFBN0Msb0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIseURBQXdEO0FBQS9DLHNIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZXhwbGFpblBzYnQsIGV4cGxhaW5MZWdhY3lUeCwgQ2hhbmdlQWRkcmVzc0luZm8gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5leHBvcnQgeyBwYXJzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9wYXJzZVRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IHZlcmlmeVRyYW5zYWN0aW9uIH0gZnJvbSAnLi92ZXJpZnlUcmFuc2FjdGlvbic7XG5leHBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zIH0gZnJvbSAnLi9wYXJzZU91dHB1dCc7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IRequestTracer, IWallet, Keychain, TransactionPrebuild, VerificationOptions } from '@bitgo/sdk-core';
|
|
2
|
-
import { AbstractUtxoCoin, Output
|
|
1
|
+
import { IRequestTracer, IWallet, Keychain, TransactionPrebuild, VerificationOptions, ITransactionRecipient } from '@bitgo/sdk-core';
|
|
2
|
+
import { AbstractUtxoCoin, Output } from '../../abstractUtxoCoin';
|
|
3
3
|
export interface CustomChangeOptions {
|
|
4
4
|
keys: [Keychain, Keychain, Keychain];
|
|
5
5
|
signatures: [string, string, string];
|
|
@@ -11,7 +11,10 @@ export interface ParseOutputOptions {
|
|
|
11
11
|
verification: VerificationOptions;
|
|
12
12
|
keychainArray: [Keychain, Keychain, Keychain];
|
|
13
13
|
wallet: IWallet;
|
|
14
|
-
txParams:
|
|
14
|
+
txParams: {
|
|
15
|
+
recipients: ITransactionRecipient[];
|
|
16
|
+
changeAddress?: string;
|
|
17
|
+
};
|
|
15
18
|
customChange?: CustomChangeOptions;
|
|
16
19
|
reqId?: IRequestTracer;
|
|
17
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseOutput.d.ts","sourceRoot":"","sources":["../../../../src/transaction/fixedScript/parseOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EAEd,OAAO,EACP,QAAQ,EACR,mBAAmB,EAEnB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AA0KlF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE;QACR,UAAU,EAAE,qBAAqB,EAAE,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,EAChC,aAAa,EACb,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,GACN,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+GtC"}
|