@bitgo-beta/unspents 0.13.2-beta.9 → 0.13.2-beta.900
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/.mocharc.js +1 -1
- package/CHANGELOG.md +541 -0
- package/bin/generate_tables.ts +94 -0
- package/dist/bin/generate_tables.d.ts +2 -0
- package/dist/bin/generate_tables.d.ts.map +1 -0
- package/dist/bin/generate_tables.js +107 -0
- package/dist/{codes.d.ts → src/codes.d.ts} +11 -10
- package/dist/src/codes.d.ts.map +1 -0
- package/dist/src/codes.js +182 -0
- package/dist/{dimensions.d.ts → src/dimensions.d.ts} +10 -11
- package/dist/src/dimensions.d.ts.map +1 -0
- package/dist/src/dimensions.js +500 -0
- package/dist/{index.d.ts → src/index.d.ts} +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +44 -0
- package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +4 -3
- package/dist/src/inputWeights.d.ts.map +1 -0
- package/dist/src/inputWeights.js +97 -0
- package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
- package/dist/src/scriptSizes.d.ts.map +1 -0
- package/dist/src/scriptSizes.js +50 -0
- package/dist/{types.d.ts → src/types.d.ts} +1 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +39 -0
- package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +13 -12
- package/dist/src/virtualSizes.d.ts.map +1 -0
- package/dist/src/virtualSizes.js +114 -0
- package/dist/src/zcash.d.ts +9 -0
- package/dist/src/zcash.d.ts.map +1 -0
- package/dist/src/zcash.js +22 -0
- package/dist/test/chain.d.ts +2 -0
- package/dist/test/chain.d.ts.map +1 -0
- package/dist/test/chain.js +92 -0
- package/dist/test/dimensions.d.ts +2 -0
- package/dist/test/dimensions.d.ts.map +1 -0
- package/dist/test/dimensions.js +235 -0
- package/dist/test/signedTx/inputWeights.d.ts +2 -0
- package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
- package/dist/test/signedTx/inputWeights.js +127 -0
- package/dist/test/signedTx/txCombinations.d.ts +3 -0
- package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
- package/dist/test/signedTx/txCombinations.js +130 -0
- package/dist/test/signedTx/txGen.d.ts +74 -0
- package/dist/test/signedTx/txGen.d.ts.map +1 -0
- package/dist/test/signedTx/txGen.js +233 -0
- package/dist/test/testutils.d.ts +36 -0
- package/dist/test/testutils.d.ts.map +1 -0
- package/dist/test/testutils.js +190 -0
- package/dist/test/virtualSizes.d.ts +2 -0
- package/dist/test/virtualSizes.d.ts.map +1 -0
- package/dist/test/virtualSizes.js +18 -0
- package/dist/test/zcash.d.ts +2 -0
- package/dist/test/zcash.d.ts.map +1 -0
- package/dist/test/zcash.js +60 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/docs/input-costs.md +14 -0
- package/package.json +7 -7
- package/dist/codes.js +0 -168
- package/dist/dimensions.js +0 -490
- package/dist/index.js +0 -30
- package/dist/inputWeights.js +0 -97
- package/dist/scriptSizes.js +0 -51
- package/dist/types.js +0 -25
- package/dist/virtualSizes.js +0 -114
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Defines input sizes for BitGo signature scripts.
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.inputComponentsP2shP2pk = exports.inputComponentsP2trScriptSpendLevel2 = exports.inputComponentsP2trScriptSpendLevel1 = exports.inputComponentsP2trKeySpend = exports.inputComponentsP2wsh = exports.inputComponentsP2shP2wsh = exports.inputComponentsP2sh = void 0;
|
|
10
|
+
exports.varSliceSize = varSliceSize;
|
|
11
|
+
exports.getInputByteLength = getInputByteLength;
|
|
12
|
+
exports.getInputWeight = getInputWeight;
|
|
13
|
+
exports.getInputComponentsWeight = getInputComponentsWeight;
|
|
14
|
+
const varuint_bitcoin_1 = __importDefault(require("varuint-bitcoin"));
|
|
15
|
+
function varSliceSize(someScript) {
|
|
16
|
+
const length = someScript.length;
|
|
17
|
+
return varuint_bitcoin_1.default.encodingLength(length) + length;
|
|
18
|
+
}
|
|
19
|
+
function vectorSize(someVector) {
|
|
20
|
+
const length = someVector.length;
|
|
21
|
+
return (varuint_bitcoin_1.default.encodingLength(length) +
|
|
22
|
+
someVector.reduce((sum, witness) => {
|
|
23
|
+
return sum + varSliceSize(witness);
|
|
24
|
+
}, 0));
|
|
25
|
+
}
|
|
26
|
+
function getInputByteLength(input, allowWitness) {
|
|
27
|
+
return (40 /* inputId(32), index(4), nSequence(4) */ +
|
|
28
|
+
varSliceSize(input.script) +
|
|
29
|
+
(allowWitness ? vectorSize(input.witness) : 0));
|
|
30
|
+
}
|
|
31
|
+
function getInputWeight(input) {
|
|
32
|
+
return 3 * getInputByteLength(input, false) + getInputByteLength(input, true);
|
|
33
|
+
}
|
|
34
|
+
function getInputComponentsWeight(c) {
|
|
35
|
+
const scriptSize = c.script.reduce((a, b) => a + b, 0);
|
|
36
|
+
return getInputWeight({
|
|
37
|
+
script: { length: scriptSize },
|
|
38
|
+
witness: c.witness.map((v) => ({ length: v })),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const opSize = 1;
|
|
42
|
+
const op0Size = opSize;
|
|
43
|
+
const opPushSize = opSize;
|
|
44
|
+
const opCheckSigVerifySize = opSize;
|
|
45
|
+
const opCheckSigSize = opSize;
|
|
46
|
+
const ecdsaSignatureSize = 72;
|
|
47
|
+
const schnorrPubkeySize = 32;
|
|
48
|
+
const schnorrSignatureNoSighashSize = 64;
|
|
49
|
+
const p2msPubScriptSize = 105; // Note: This is valid for a compressed public key only
|
|
50
|
+
const p2wshPubScriptSize = 34;
|
|
51
|
+
const p2pkPubScriptSize = 35;
|
|
52
|
+
function p2trScriptSpend(level) {
|
|
53
|
+
return [
|
|
54
|
+
schnorrSignatureNoSighashSize,
|
|
55
|
+
schnorrSignatureNoSighashSize,
|
|
56
|
+
opPushSize + schnorrPubkeySize + opCheckSigSize + opPushSize + schnorrPubkeySize + opCheckSigVerifySize,
|
|
57
|
+
/* header byte */ 1 + /* inner key */ 32 + /* inner leaf */ 32 * level,
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
function p2msSigScriptSize(witness) {
|
|
61
|
+
return [
|
|
62
|
+
witness ? 0 : op0Size,
|
|
63
|
+
(witness ? 0 : opPushSize) + ecdsaSignatureSize,
|
|
64
|
+
(witness ? 0 : opPushSize) + ecdsaSignatureSize,
|
|
65
|
+
(witness ? 0 : /* OP_PUSHDATA2 */ opPushSize + 1) + p2msPubScriptSize,
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
exports.inputComponentsP2sh = {
|
|
69
|
+
script: p2msSigScriptSize(false),
|
|
70
|
+
witness: [],
|
|
71
|
+
};
|
|
72
|
+
exports.inputComponentsP2shP2wsh = {
|
|
73
|
+
script: [opSize + p2wshPubScriptSize],
|
|
74
|
+
witness: p2msSigScriptSize(true),
|
|
75
|
+
};
|
|
76
|
+
exports.inputComponentsP2wsh = {
|
|
77
|
+
script: [],
|
|
78
|
+
witness: p2msSigScriptSize(true),
|
|
79
|
+
};
|
|
80
|
+
// See: https://murchandamus.medium.com/2-of-3-multisig-inputs-using-pay-to-taproot-d5faf2312ba3
|
|
81
|
+
exports.inputComponentsP2trKeySpend = {
|
|
82
|
+
script: [],
|
|
83
|
+
witness: [schnorrSignatureNoSighashSize],
|
|
84
|
+
};
|
|
85
|
+
exports.inputComponentsP2trScriptSpendLevel1 = {
|
|
86
|
+
script: [],
|
|
87
|
+
witness: p2trScriptSpend(1),
|
|
88
|
+
};
|
|
89
|
+
exports.inputComponentsP2trScriptSpendLevel2 = {
|
|
90
|
+
script: [],
|
|
91
|
+
witness: p2trScriptSpend(2),
|
|
92
|
+
};
|
|
93
|
+
exports.inputComponentsP2shP2pk = {
|
|
94
|
+
script: [opPushSize + ecdsaSignatureSize, opPushSize + p2pkPubScriptSize],
|
|
95
|
+
witness: [],
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRXZWlnaHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lucHV0V2VpZ2h0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7OztBQUlILG9DQUlDO0FBc0JELGdEQU1DO0FBRUQsd0NBRUM7QUFPRCw0REFNQztBQW5ERCxzRUFBc0M7QUFFdEMsU0FBZ0IsWUFBWSxDQUFDLFVBQWlCO0lBQzVDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyx5QkFBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLFVBQW1CO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyxDQUNMLHlCQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM5QixVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2pDLE9BQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ04sQ0FBQztBQUNKLENBQUM7QUFXRCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsWUFBcUI7SUFDcEUsT0FBTyxDQUNMLEVBQUUsQ0FBQyx5Q0FBeUM7UUFDNUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDMUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxLQUFZO0lBQ3pDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQU9ELFNBQWdCLHdCQUF3QixDQUFDLENBQWtCO0lBQ3pELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLGNBQWMsQ0FBQztRQUNwQixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO1FBQzlCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQy9DLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUMxQixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUNwQyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7QUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQyx1REFBdUQ7QUFDdEYsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFFN0IsU0FBUyxlQUFlLENBQUMsS0FBWTtJQUNuQyxPQUFPO1FBQ0wsNkJBQTZCO1FBQzdCLDZCQUE2QjtRQUM3QixVQUFVLEdBQUcsaUJBQWlCLEdBQUcsY0FBYyxHQUFHLFVBQVUsR0FBRyxpQkFBaUIsR0FBRyxvQkFBb0I7UUFDdkcsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEtBQUs7S0FDdkUsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE9BQWdCO0lBQ3pDLE9BQU87UUFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztRQUNyQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxrQkFBa0I7UUFDL0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsa0JBQWtCO1FBQy9DLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxpQkFBaUI7S0FDdEUsQ0FBQztBQUNKLENBQUM7QUFFWSxRQUFBLG1CQUFtQixHQUFvQjtJQUNsRCxNQUFNLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQztBQUVXLFFBQUEsd0JBQXdCLEdBQW9CO0lBQ3ZELE1BQU0sRUFBRSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztJQUNyQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0NBQ2pDLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFvQjtJQUNuRCxNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Q0FDakMsQ0FBQztBQUVGLGdHQUFnRztBQUNuRixRQUFBLDJCQUEyQixHQUFvQjtJQUMxRCxNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO0NBQ3pDLENBQUM7QUFFVyxRQUFBLG9DQUFvQyxHQUFvQjtJQUNuRSxNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0NBQzVCLENBQUM7QUFFVyxRQUFBLG9DQUFvQyxHQUFvQjtJQUNuRSxNQUFNLEVBQUUsRUFBRTtJQUNWLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0NBQzVCLENBQUM7QUFFVyxRQUFBLHVCQUF1QixHQUFvQjtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLEVBQUUsVUFBVSxHQUFHLGlCQUFpQixDQUFDO0lBQ3pFLE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVmaW5lcyBpbnB1dCBzaXplcyBmb3IgQml0R28gc2lnbmF0dXJlIHNjcmlwdHMuXG4gKi9cblxuaW1wb3J0IHZhcnVpbnQgZnJvbSAndmFydWludC1iaXRjb2luJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhclNsaWNlU2l6ZShzb21lU2NyaXB0OiBTaXplZCk6IG51bWJlciB7XG4gIGNvbnN0IGxlbmd0aCA9IHNvbWVTY3JpcHQubGVuZ3RoO1xuXG4gIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGg7XG59XG5cbmZ1bmN0aW9uIHZlY3RvclNpemUoc29tZVZlY3RvcjogU2l6ZWRbXSk6IG51bWJlciB7XG4gIGNvbnN0IGxlbmd0aCA9IHNvbWVWZWN0b3IubGVuZ3RoO1xuXG4gIHJldHVybiAoXG4gICAgdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICtcbiAgICBzb21lVmVjdG9yLnJlZHVjZSgoc3VtLCB3aXRuZXNzKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgdmFyU2xpY2VTaXplKHdpdG5lc3MpO1xuICAgIH0sIDApXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIFNpemVkID0ge1xuICBsZW5ndGg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIElucHV0ID0ge1xuICBzY3JpcHQ6IFNpemVkO1xuICB3aXRuZXNzOiBTaXplZFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0Qnl0ZUxlbmd0aChpbnB1dDogSW5wdXQsIGFsbG93V2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIHJldHVybiAoXG4gICAgNDAgLyogaW5wdXRJZCgzMiksIGluZGV4KDQpLCBuU2VxdWVuY2UoNCkgKi8gK1xuICAgIHZhclNsaWNlU2l6ZShpbnB1dC5zY3JpcHQpICtcbiAgICAoYWxsb3dXaXRuZXNzID8gdmVjdG9yU2l6ZShpbnB1dC53aXRuZXNzKSA6IDApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dFdlaWdodChpbnB1dDogSW5wdXQpOiBudW1iZXIge1xuICByZXR1cm4gMyAqIGdldElucHV0Qnl0ZUxlbmd0aChpbnB1dCwgZmFsc2UpICsgZ2V0SW5wdXRCeXRlTGVuZ3RoKGlucHV0LCB0cnVlKTtcbn1cblxuZXhwb3J0IHR5cGUgSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IG51bWJlcltdO1xuICB3aXRuZXNzOiBudW1iZXJbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dENvbXBvbmVudHNXZWlnaHQoYzogSW5wdXRDb21wb25lbnRzKTogbnVtYmVyIHtcbiAgY29uc3Qgc2NyaXB0U2l6ZSA9IGMuc2NyaXB0LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuICByZXR1cm4gZ2V0SW5wdXRXZWlnaHQoe1xuICAgIHNjcmlwdDogeyBsZW5ndGg6IHNjcmlwdFNpemUgfSxcbiAgICB3aXRuZXNzOiBjLndpdG5lc3MubWFwKCh2KSA9PiAoeyBsZW5ndGg6IHYgfSkpLFxuICB9KTtcbn1cblxuY29uc3Qgb3BTaXplID0gMTtcbmNvbnN0IG9wMFNpemUgPSBvcFNpemU7XG5jb25zdCBvcFB1c2hTaXplID0gb3BTaXplO1xuY29uc3Qgb3BDaGVja1NpZ1ZlcmlmeVNpemUgPSBvcFNpemU7XG5jb25zdCBvcENoZWNrU2lnU2l6ZSA9IG9wU2l6ZTtcbmNvbnN0IGVjZHNhU2lnbmF0dXJlU2l6ZSA9IDcyO1xuY29uc3Qgc2Nobm9yclB1YmtleVNpemUgPSAzMjtcbmNvbnN0IHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplID0gNjQ7XG5jb25zdCBwMm1zUHViU2NyaXB0U2l6ZSA9IDEwNTsgLy8gTm90ZTogVGhpcyBpcyB2YWxpZCBmb3IgYSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgb25seVxuY29uc3QgcDJ3c2hQdWJTY3JpcHRTaXplID0gMzQ7XG5jb25zdCBwMnBrUHViU2NyaXB0U2l6ZSA9IDM1O1xuXG5mdW5jdGlvbiBwMnRyU2NyaXB0U3BlbmQobGV2ZWw6IDEgfCAyKTogbnVtYmVyW10ge1xuICByZXR1cm4gW1xuICAgIHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplLFxuICAgIHNjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplLFxuICAgIG9wUHVzaFNpemUgKyBzY2hub3JyUHVia2V5U2l6ZSArIG9wQ2hlY2tTaWdTaXplICsgb3BQdXNoU2l6ZSArIHNjaG5vcnJQdWJrZXlTaXplICsgb3BDaGVja1NpZ1ZlcmlmeVNpemUsXG4gICAgLyogaGVhZGVyIGJ5dGUgKi8gMSArIC8qIGlubmVyIGtleSAqLyAzMiArIC8qIGlubmVyIGxlYWYgKi8gMzIgKiBsZXZlbCxcbiAgXTtcbn1cblxuZnVuY3Rpb24gcDJtc1NpZ1NjcmlwdFNpemUod2l0bmVzczogYm9vbGVhbikge1xuICByZXR1cm4gW1xuICAgIHdpdG5lc3MgPyAwIDogb3AwU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiBvcFB1c2hTaXplKSArIGVjZHNhU2lnbmF0dXJlU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiBvcFB1c2hTaXplKSArIGVjZHNhU2lnbmF0dXJlU2l6ZSxcbiAgICAod2l0bmVzcyA/IDAgOiAvKiBPUF9QVVNIREFUQTIgKi8gb3BQdXNoU2l6ZSArIDEpICsgcDJtc1B1YlNjcmlwdFNpemUsXG4gIF07XG59XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnNoOiBJbnB1dENvbXBvbmVudHMgPSB7XG4gIHNjcmlwdDogcDJtc1NpZ1NjcmlwdFNpemUoZmFsc2UpLFxuICB3aXRuZXNzOiBbXSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2g6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbb3BTaXplICsgcDJ3c2hQdWJTY3JpcHRTaXplXSxcbiAgd2l0bmVzczogcDJtc1NpZ1NjcmlwdFNpemUodHJ1ZSksXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRDb21wb25lbnRzUDJ3c2g6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogcDJtc1NpZ1NjcmlwdFNpemUodHJ1ZSksXG59O1xuXG4vLyBTZWU6IGh0dHBzOi8vbXVyY2hhbmRhbXVzLm1lZGl1bS5jb20vMi1vZi0zLW11bHRpc2lnLWlucHV0cy11c2luZy1wYXktdG8tdGFwcm9vdC1kNWZhZjIzMTJiYTNcbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnRyS2V5U3BlbmQ6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogW3NjaG5vcnJTaWduYXR1cmVOb1NpZ2hhc2hTaXplXSxcbn07XG5cbmV4cG9ydCBjb25zdCBpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDE6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbXSxcbiAgd2l0bmVzczogcDJ0clNjcmlwdFNwZW5kKDEpLFxufTtcblxuZXhwb3J0IGNvbnN0IGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMjogSW5wdXRDb21wb25lbnRzID0ge1xuICBzY3JpcHQ6IFtdLFxuICB3aXRuZXNzOiBwMnRyU2NyaXB0U3BlbmQoMiksXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRDb21wb25lbnRzUDJzaFAycGs6IElucHV0Q29tcG9uZW50cyA9IHtcbiAgc2NyaXB0OiBbb3BQdXNoU2l6ZSArIGVjZHNhU2lnbmF0dXJlU2l6ZSwgb3BQdXNoU2l6ZSArIHAycGtQdWJTY3JpcHRTaXplXSxcbiAgd2l0bmVzczogW10sXG59O1xuIl19
|
|
@@ -10,3 +10,4 @@ export declare function pushdataEncodingLength(i: number): number;
|
|
|
10
10
|
* @return {number} - The compact size the integer requires when serialized in a transaction
|
|
11
11
|
*/
|
|
12
12
|
export declare function compactSize(integer: number): number;
|
|
13
|
+
//# sourceMappingURL=scriptSizes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scriptSizes.d.ts","sourceRoot":"","sources":["../../src/scriptSizes.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBxD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcnD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pushdataEncodingLength = pushdataEncodingLength;
|
|
4
|
+
exports.compactSize = compactSize;
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
/**
|
|
7
|
+
* Overhead size for a pushdata element in a script
|
|
8
|
+
* @param i
|
|
9
|
+
*/
|
|
10
|
+
function pushdataEncodingLength(i) {
|
|
11
|
+
/*
|
|
12
|
+
* https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki#push-operators
|
|
13
|
+
* Pushing any other byte sequence up to 75 bytes must use the normal data push (opcode byte n, with n the number of bytes, followed n bytes of data being pushed).
|
|
14
|
+
* Pushing 76 to 255 bytes must use OP_PUSHDATA1.
|
|
15
|
+
* Pushing 256 to 520 bytes must use OP_PUSHDATA2.
|
|
16
|
+
* OP_PUSHDATA4 can never be used, as pushes over 520 bytes are not allowed, and those below can be done using other operators.
|
|
17
|
+
*/
|
|
18
|
+
if (i < 76) {
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
if (i < 255) {
|
|
22
|
+
return 2;
|
|
23
|
+
}
|
|
24
|
+
if (i < 520) {
|
|
25
|
+
return 3;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`invalid pushdata size`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* https://developer.bitcoin.org/reference/transactions.html#compactsize-unsigned-integers
|
|
31
|
+
* https://github.com/bitcoinjs/varuint-bitcoin/blob/1d5b253/index.js#L79
|
|
32
|
+
* @param integer
|
|
33
|
+
* @return {number} - The compact size the integer requires when serialized in a transaction
|
|
34
|
+
*/
|
|
35
|
+
function compactSize(integer) {
|
|
36
|
+
if (!types_1.PositiveInteger.is(integer)) {
|
|
37
|
+
throw new TypeError(`expected positive integer`);
|
|
38
|
+
}
|
|
39
|
+
if (integer <= 252) {
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
if (integer <= 0xffff) {
|
|
43
|
+
return 3;
|
|
44
|
+
}
|
|
45
|
+
if (integer <= 0xffffffff) {
|
|
46
|
+
return 5;
|
|
47
|
+
}
|
|
48
|
+
return 9;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0U2l6ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0U2l6ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSx3REFrQkM7QUFRRCxrQ0FjQztBQTlDRCxtQ0FBMEM7QUFFMUM7OztHQUdHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsQ0FBUztJQUM5Qzs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLE9BQWU7SUFDekMsSUFBSSxDQUFDLHVCQUFlLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGl2ZUludGVnZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPdmVyaGVhZCBzaXplIGZvciBhIHB1c2hkYXRhIGVsZW1lbnQgaW4gYSBzY3JpcHRcbiAqIEBwYXJhbSBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoZGF0YUVuY29kaW5nTGVuZ3RoKGk6IG51bWJlcik6IG51bWJlciB7XG4gIC8qXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAwNjIubWVkaWF3aWtpI3B1c2gtb3BlcmF0b3JzXG4gICAqIFB1c2hpbmcgYW55IG90aGVyIGJ5dGUgc2VxdWVuY2UgdXAgdG8gNzUgYnl0ZXMgbXVzdCB1c2UgdGhlIG5vcm1hbCBkYXRhIHB1c2ggKG9wY29kZSBieXRlIG4sIHdpdGggbiB0aGUgbnVtYmVyIG9mIGJ5dGVzLCBmb2xsb3dlZCBuIGJ5dGVzIG9mIGRhdGEgYmVpbmcgcHVzaGVkKS5cbiAgICogUHVzaGluZyA3NiB0byAyNTUgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEExLlxuICAgKiBQdXNoaW5nIDI1NiB0byA1MjAgYnl0ZXMgbXVzdCB1c2UgT1BfUFVTSERBVEEyLlxuICAgKiBPUF9QVVNIREFUQTQgY2FuIG5ldmVyIGJlIHVzZWQsIGFzIHB1c2hlcyBvdmVyIDUyMCBieXRlcyBhcmUgbm90IGFsbG93ZWQsIGFuZCB0aG9zZSBiZWxvdyBjYW4gYmUgZG9uZSB1c2luZyBvdGhlciBvcGVyYXRvcnMuXG4gICAqL1xuICBpZiAoaSA8IDc2KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGkgPCAyNTUpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuICBpZiAoaSA8IDUyMCkge1xuICAgIHJldHVybiAzO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwdXNoZGF0YSBzaXplYCk7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYml0Y29pbi5vcmcvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy5odG1sI2NvbXBhY3RzaXplLXVuc2lnbmVkLWludGVnZXJzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL3ZhcnVpbnQtYml0Y29pbi9ibG9iLzFkNWIyNTMvaW5kZXguanMjTDc5XG4gKiBAcGFyYW0gaW50ZWdlclxuICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBjb21wYWN0IHNpemUgdGhlIGludGVnZXIgcmVxdWlyZXMgd2hlbiBzZXJpYWxpemVkIGluIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3RTaXplKGludGVnZXI6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICghUG9zaXRpdmVJbnRlZ2VyLmlzKGludGVnZXIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgcG9zaXRpdmUgaW50ZWdlcmApO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDI1Mikge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZikge1xuICAgIHJldHVybiAzO1xuICB9XG4gIGlmIChpbnRlZ2VyIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICByZXR1cm4gNTtcbiAgfVxuICByZXR1cm4gOTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,eAAe,sBAA4D,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.PositiveInteger = void 0;
|
|
37
|
+
const t = __importStar(require("tcomb"));
|
|
38
|
+
exports.PositiveInteger = t.refinement(t.Integer, (n) => n >= 0, 'PositiveInteger');
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTJCO0FBRWQsUUFBQSxlQUFlLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0IGZyb20gJ3Rjb21iJztcblxuZXhwb3J0IGNvbnN0IFBvc2l0aXZlSW50ZWdlciA9IHQucmVmaW5lbWVudCh0LkludGVnZXIsIChuKSA9PiBuID49IDAsICdQb3NpdGl2ZUludGVnZXInKTtcbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const VirtualSizes: Readonly<{
|
|
2
2
|
/** @deprecated */
|
|
3
|
-
txP2pkhInputSizeCompressedKey:
|
|
3
|
+
txP2pkhInputSizeCompressedKey: 148;
|
|
4
4
|
/** @deprecated */
|
|
5
|
-
txP2pkhInputSizeUncompressedKey:
|
|
5
|
+
txP2pkhInputSizeUncompressedKey: 180;
|
|
6
6
|
txP2shInputSize: number;
|
|
7
7
|
txP2shP2wshInputSize: number;
|
|
8
8
|
txP2wshInputSize: number;
|
|
@@ -10,15 +10,16 @@ export declare const VirtualSizes: Readonly<{
|
|
|
10
10
|
txP2shP2pkInputSize: number;
|
|
11
11
|
txP2trScriptPathLevel1InputSize: number;
|
|
12
12
|
txP2trScriptPathLevel2InputSize: number;
|
|
13
|
-
txOutputAmountSize:
|
|
14
|
-
txP2shOutputSize:
|
|
15
|
-
txP2shP2wshOutputSize:
|
|
16
|
-
txP2wshOutputSize:
|
|
17
|
-
txP2trOutputSize:
|
|
18
|
-
txP2pkhOutputSize:
|
|
19
|
-
txP2wpkhOutputSize:
|
|
13
|
+
txOutputAmountSize: 8;
|
|
14
|
+
txP2shOutputSize: 32;
|
|
15
|
+
txP2shP2wshOutputSize: 32;
|
|
16
|
+
txP2wshOutputSize: 43;
|
|
17
|
+
txP2trOutputSize: 43;
|
|
18
|
+
txP2pkhOutputSize: 34;
|
|
19
|
+
txP2wpkhOutputSize: 31;
|
|
20
20
|
/** @deprecated - use txP2pkhOutputSize instead */
|
|
21
|
-
txOutputSize:
|
|
22
|
-
txOverheadSize:
|
|
23
|
-
txSegOverheadVSize:
|
|
21
|
+
txOutputSize: 34;
|
|
22
|
+
txOverheadSize: 10;
|
|
23
|
+
txSegOverheadVSize: 11;
|
|
24
24
|
}>;
|
|
25
|
+
//# sourceMappingURL=virtualSizes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtualSizes.d.ts","sourceRoot":"","sources":["../../src/virtualSizes.ts"],"names":[],"mappings":"AA0EA,eAAO,MAAM,YAAY;IAIvB,kBAAkB;;IAElB,kBAAkB;;;;;;;;;;;;;;;;IAwClB,kDAAkD;;;;EAWlD,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
This is a reference implementation for calculating weights and vSizes from bitcoinjs-lib 3.3.2.
|
|
4
|
+
https://github.com/bitcoinjs/bitcoinjs-lib/blob/v3.3.2/src/transaction.js#L194-L219
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
function encodingLength (number) {
|
|
8
|
+
checkUInt53(number)
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
number < 0xfd ? 1
|
|
12
|
+
: number <= 0xffff ? 3
|
|
13
|
+
: number <= 0xffffffff ? 5
|
|
14
|
+
: 9
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function varSliceSize (someScript) {
|
|
19
|
+
var length = someScript.length
|
|
20
|
+
|
|
21
|
+
return encodingLength(length) + length
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function vectorSize (someVector) {
|
|
25
|
+
var length = someVector.length
|
|
26
|
+
|
|
27
|
+
return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) {
|
|
28
|
+
return sum + varSliceSize(witness)
|
|
29
|
+
}, 0)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Transaction.prototype.__byteLength = function (__allowWitness) {
|
|
33
|
+
var hasWitnesses = __allowWitness && this.hasWitnesses()
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
(hasWitnesses ? 10 : 8) +
|
|
37
|
+
varuint.encodingLength(this.ins.length) +
|
|
38
|
+
varuint.encodingLength(this.outs.length) +
|
|
39
|
+
this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) +
|
|
40
|
+
this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) +
|
|
41
|
+
(hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0)
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Transaction.prototype.weight = function () {
|
|
46
|
+
var base = this.__byteLength(false)
|
|
47
|
+
var total = this.__byteLength(true)
|
|
48
|
+
return base * 3 + total
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
Transaction.prototype.virtualSize = function () {
|
|
52
|
+
return Math.ceil(this.weight() / 4)
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
*/
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
exports.VirtualSizes = void 0;
|
|
58
|
+
const inputWeights_1 = require("./inputWeights");
|
|
59
|
+
function getVirtualInputSizeFromComponents(components) {
|
|
60
|
+
return Math.ceil((0, inputWeights_1.getInputComponentsWeight)(components) / 4);
|
|
61
|
+
}
|
|
62
|
+
// Constants for signed TX input and output vsizes.
|
|
63
|
+
// See https://bitcoincore.org/en/segwit_wallet_dev/#transaction-serialization for full description
|
|
64
|
+
// FIXME(BG-9233): use weight units instead
|
|
65
|
+
exports.VirtualSizes = Object.freeze({
|
|
66
|
+
// FIXME(BG-7873): add support for signature grinding
|
|
67
|
+
// Size of a P2PKH input with (un)compressed key
|
|
68
|
+
/** @deprecated */
|
|
69
|
+
txP2pkhInputSizeCompressedKey: 148,
|
|
70
|
+
/** @deprecated */
|
|
71
|
+
txP2pkhInputSizeUncompressedKey: 180,
|
|
72
|
+
// Input sizes
|
|
73
|
+
txP2shInputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2sh),
|
|
74
|
+
txP2shP2wshInputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2shP2wsh),
|
|
75
|
+
txP2wshInputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2wsh),
|
|
76
|
+
txP2trKeypathInputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2trKeySpend),
|
|
77
|
+
txP2shP2pkInputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2shP2pk),
|
|
78
|
+
txP2trScriptPathLevel1InputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2trScriptSpendLevel1),
|
|
79
|
+
txP2trScriptPathLevel2InputSize: getVirtualInputSizeFromComponents(inputWeights_1.inputComponentsP2trScriptSpendLevel2),
|
|
80
|
+
//
|
|
81
|
+
// Output sizes
|
|
82
|
+
//
|
|
83
|
+
// The size is calculated as
|
|
84
|
+
//
|
|
85
|
+
// scriptLength + compactSize(scriptLength) + txOutputAmountSize
|
|
86
|
+
//
|
|
87
|
+
// Since compactSize(scriptLength) is 1 for all scripts considered here, we can simplify this to
|
|
88
|
+
//
|
|
89
|
+
// scriptLength + 9
|
|
90
|
+
//
|
|
91
|
+
// Size of single output amount
|
|
92
|
+
txOutputAmountSize: 8,
|
|
93
|
+
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v4.0.2/src/templates/scripthash/output.js#L9
|
|
94
|
+
txP2shOutputSize: 32,
|
|
95
|
+
txP2shP2wshOutputSize: 32,
|
|
96
|
+
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v4.0.2/src/templates/witnessscripthash/output.js#L9
|
|
97
|
+
txP2wshOutputSize: 43,
|
|
98
|
+
// OP_1 OP_PUSH32 <schnorr_public_key>
|
|
99
|
+
txP2trOutputSize: 43,
|
|
100
|
+
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v4.0.2/src/templates/pubkeyhash/output.js#L9
|
|
101
|
+
txP2pkhOutputSize: 34,
|
|
102
|
+
// https://github.com/bitcoinjs/bitcoinjs-lib/blob/v4.0.2/src/templates/witnesspubkeyhash/output.js#L9
|
|
103
|
+
txP2wpkhOutputSize: 31,
|
|
104
|
+
/** @deprecated - use txP2pkhOutputSize instead */
|
|
105
|
+
txOutputSize: 34,
|
|
106
|
+
//
|
|
107
|
+
// General tx size constants
|
|
108
|
+
//
|
|
109
|
+
txOverheadSize: 10,
|
|
110
|
+
// Segwit adds one byte each for marker and flag to the witness section.
|
|
111
|
+
// Thus, the vsize is only increased by one.
|
|
112
|
+
txSegOverheadVSize: 11,
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbFNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZpcnR1YWxTaXplcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURFOzs7QUFFRixpREFVd0I7QUFFeEIsU0FBUyxpQ0FBaUMsQ0FBQyxVQUEyQjtJQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSx1Q0FBd0IsRUFBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsbURBQW1EO0FBQ25ELG1HQUFtRztBQUNuRywyQ0FBMkM7QUFDOUIsUUFBQSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxxREFBcUQ7SUFFckQsZ0RBQWdEO0lBQ2hELGtCQUFrQjtJQUNsQiw2QkFBNkIsRUFBRSxHQUFHO0lBQ2xDLGtCQUFrQjtJQUNsQiwrQkFBK0IsRUFBRSxHQUFHO0lBRXBDLGNBQWM7SUFDZCxlQUFlLEVBQUUsaUNBQWlDLENBQUMsa0NBQW1CLENBQUM7SUFDdkUsb0JBQW9CLEVBQUUsaUNBQWlDLENBQUMsdUNBQXdCLENBQUM7SUFDakYsZ0JBQWdCLEVBQUUsaUNBQWlDLENBQUMsbUNBQW9CLENBQUM7SUFDekUsc0JBQXNCLEVBQUUsaUNBQWlDLENBQUMsMENBQTJCLENBQUM7SUFDdEYsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUMsc0NBQXVCLENBQUM7SUFDL0UsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFDeEcsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFFeEcsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBRUYsNEJBQTRCO0lBQzVCLEVBQUU7SUFDRixtRUFBbUU7SUFDbkUsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyxFQUFFO0lBQ0Ysc0JBQXNCO0lBQ3RCLEVBQUU7SUFFRiwrQkFBK0I7SUFDL0Isa0JBQWtCLEVBQUUsQ0FBQztJQUVyQiwrRkFBK0Y7SUFDL0YsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNHQUFzRztJQUN0RyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNDQUFzQztJQUN0QyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLCtGQUErRjtJQUMvRixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNHQUFzRztJQUN0RyxrQkFBa0IsRUFBRSxFQUFFO0lBRXRCLGtEQUFrRDtJQUNsRCxZQUFZLEVBQUUsRUFBRTtJQUVoQixFQUFFO0lBQ0YsNEJBQTRCO0lBQzVCLEVBQUU7SUFFRixjQUFjLEVBQUUsRUFBRTtJQUNsQix3RUFBd0U7SUFDeEUsNENBQTRDO0lBQzVDLGtCQUFrQixFQUFFLEVBQUU7Q0FDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcblRoaXMgaXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGNhbGN1bGF0aW5nIHdlaWdodHMgYW5kIHZTaXplcyBmcm9tIGJpdGNvaW5qcy1saWIgMy4zLjIuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92My4zLjIvc3JjL3RyYW5zYWN0aW9uLmpzI0wxOTQtTDIxOVxuXG5gYGBcbiAgZnVuY3Rpb24gZW5jb2RpbmdMZW5ndGggKG51bWJlcikge1xuICAgIGNoZWNrVUludDUzKG51bWJlcilcblxuICAgIHJldHVybiAoXG4gICAgICBudW1iZXIgPCAweGZkID8gMVxuICAgIDogbnVtYmVyIDw9IDB4ZmZmZiA/IDNcbiAgICA6IG51bWJlciA8PSAweGZmZmZmZmZmID8gNVxuICAgIDogOVxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhclNsaWNlU2l6ZSAoc29tZVNjcmlwdCkge1xuICAgIHZhciBsZW5ndGggPSBzb21lU2NyaXB0Lmxlbmd0aFxuXG4gICAgcmV0dXJuIGVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHZlY3RvclNpemUgKHNvbWVWZWN0b3IpIHtcbiAgICB2YXIgbGVuZ3RoID0gc29tZVZlY3Rvci5sZW5ndGhcblxuICAgIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBzb21lVmVjdG9yLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB3aXRuZXNzKSB7XG4gICAgICByZXR1cm4gc3VtICsgdmFyU2xpY2VTaXplKHdpdG5lc3MpXG4gICAgfSwgMClcbiAgfVxuXG4gIFRyYW5zYWN0aW9uLnByb3RvdHlwZS5fX2J5dGVMZW5ndGggPSBmdW5jdGlvbiAoX19hbGxvd1dpdG5lc3MpIHtcbiAgICB2YXIgaGFzV2l0bmVzc2VzID0gX19hbGxvd1dpdG5lc3MgJiYgdGhpcy5oYXNXaXRuZXNzZXMoKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChoYXNXaXRuZXNzZXMgPyAxMCA6IDgpICtcbiAgICAgIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgodGhpcy5pbnMubGVuZ3RoKSArXG4gICAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMub3V0cy5sZW5ndGgpICtcbiAgICAgIHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgNDAgKyB2YXJTbGljZVNpemUoaW5wdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkgeyByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICAoaGFzV2l0bmVzc2VzID8gdGhpcy5pbnMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIGlucHV0KSB7IHJldHVybiBzdW0gKyB2ZWN0b3JTaXplKGlucHV0LndpdG5lc3MpIH0sIDApIDogMClcbiAgICApXG4gIH1cblxuICBUcmFuc2FjdGlvbi5wcm90b3R5cGUud2VpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBiYXNlID0gdGhpcy5fX2J5dGVMZW5ndGgoZmFsc2UpXG4gICAgdmFyIHRvdGFsID0gdGhpcy5fX2J5dGVMZW5ndGgodHJ1ZSlcbiAgICByZXR1cm4gYmFzZSAqIDMgKyB0b3RhbFxuICB9XG5cbiAgVHJhbnNhY3Rpb24ucHJvdG90eXBlLnZpcnR1YWxTaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy53ZWlnaHQoKSAvIDQpXG4gIH1cbmBgYFxuKi9cblxuaW1wb3J0IHtcbiAgZ2V0SW5wdXRDb21wb25lbnRzV2VpZ2h0LFxuICBJbnB1dENvbXBvbmVudHMsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2gsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrLFxuICBpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gsXG4gIGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZCxcbiAgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwxLFxuICBpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIsXG4gIGlucHV0Q29tcG9uZW50c1Ayd3NoLFxufSBmcm9tICcuL2lucHV0V2VpZ2h0cyc7XG5cbmZ1bmN0aW9uIGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhjb21wb25lbnRzOiBJbnB1dENvbXBvbmVudHMpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5jZWlsKGdldElucHV0Q29tcG9uZW50c1dlaWdodChjb21wb25lbnRzKSAvIDQpO1xufVxuXG4vLyBDb25zdGFudHMgZm9yIHNpZ25lZCBUWCBpbnB1dCBhbmQgb3V0cHV0IHZzaXplcy5cbi8vIFNlZSBodHRwczovL2JpdGNvaW5jb3JlLm9yZy9lbi9zZWd3aXRfd2FsbGV0X2Rldi8jdHJhbnNhY3Rpb24tc2VyaWFsaXphdGlvbiBmb3IgZnVsbCBkZXNjcmlwdGlvblxuLy8gRklYTUUoQkctOTIzMyk6IHVzZSB3ZWlnaHQgdW5pdHMgaW5zdGVhZFxuZXhwb3J0IGNvbnN0IFZpcnR1YWxTaXplcyA9IE9iamVjdC5mcmVlemUoe1xuICAvLyBGSVhNRShCRy03ODczKTogYWRkIHN1cHBvcnQgZm9yIHNpZ25hdHVyZSBncmluZGluZ1xuXG4gIC8vIFNpemUgb2YgYSBQMlBLSCBpbnB1dCB3aXRoICh1biljb21wcmVzc2VkIGtleVxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgdHhQMnBraElucHV0U2l6ZUNvbXByZXNzZWRLZXk6IDE0OCxcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHR4UDJwa2hJbnB1dFNpemVVbmNvbXByZXNzZWRLZXk6IDE4MCxcblxuICAvLyBJbnB1dCBzaXplc1xuICB0eFAyc2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoKSxcbiAgdHhQMnNoUDJ3c2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gpLFxuICB0eFAyd3NoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ3c2gpLFxuICB0eFAydHJLZXlwYXRoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ0cktleVNwZW5kKSxcbiAgdHhQMnNoUDJwa0lucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrKSxcbiAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMSksXG4gIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIpLFxuXG4gIC8vXG4gIC8vIE91dHB1dCBzaXplc1xuICAvL1xuXG4gIC8vIFRoZSBzaXplIGlzIGNhbGN1bGF0ZWQgYXNcbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSArIHR4T3V0cHV0QW1vdW50U2l6ZVxuICAvL1xuICAvLyBTaW5jZSBjb21wYWN0U2l6ZShzY3JpcHRMZW5ndGgpIGlzIDEgZm9yIGFsbCBzY3JpcHRzIGNvbnNpZGVyZWQgaGVyZSwgd2UgY2FuIHNpbXBsaWZ5IHRoaXMgdG9cbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgOVxuICAvL1xuXG4gIC8vIFNpemUgb2Ygc2luZ2xlIG91dHB1dCBhbW91bnRcbiAgdHhPdXRwdXRBbW91bnRTaXplOiA4LFxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYml0Y29pbmpzLWxpYi9ibG9iL3Y0LjAuMi9zcmMvdGVtcGxhdGVzL3NjcmlwdGhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJzaE91dHB1dFNpemU6IDMyLFxuICB0eFAyc2hQMndzaE91dHB1dFNpemU6IDMyLFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzc2NyaXB0aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndzaE91dHB1dFNpemU6IDQzLFxuICAvLyBPUF8xIE9QX1BVU0gzMiA8c2Nobm9ycl9wdWJsaWNfa2V5PlxuICB0eFAydHJPdXRwdXRTaXplOiA0MyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMnBraE91dHB1dFNpemU6IDM0LFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndwa2hPdXRwdXRTaXplOiAzMSxcblxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdHhQMnBraE91dHB1dFNpemUgaW5zdGVhZCAqL1xuICB0eE91dHB1dFNpemU6IDM0LFxuXG4gIC8vXG4gIC8vIEdlbmVyYWwgdHggc2l6ZSBjb25zdGFudHNcbiAgLy9cblxuICB0eE92ZXJoZWFkU2l6ZTogMTAsXG4gIC8vIFNlZ3dpdCBhZGRzIG9uZSBieXRlIGVhY2ggZm9yIG1hcmtlciBhbmQgZmxhZyB0byB0aGUgd2l0bmVzcyBzZWN0aW9uLlxuICAvLyBUaHVzLCB0aGUgdnNpemUgaXMgb25seSBpbmNyZWFzZWQgYnkgb25lLlxuICB0eFNlZ092ZXJoZWFkVlNpemU6IDExLFxufSk7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Dimensions } from './dimensions';
|
|
2
|
+
export declare function getLogicalActions(params: {
|
|
3
|
+
txInTotalSize: number;
|
|
4
|
+
txOutTotalSize: number;
|
|
5
|
+
} | Dimensions): number;
|
|
6
|
+
export declare function getConventionalFeeForDimensions(dimensions: Dimensions, params?: {
|
|
7
|
+
marginalFeeZatPerAction?: number;
|
|
8
|
+
}): number;
|
|
9
|
+
//# sourceMappingURL=zcash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zcash.d.ts","sourceRoot":"","sources":["../../src/zcash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO1C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,MAAM,CAUhH;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE;IACN,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACL,MAAM,CAIR"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// https://zips.z.cash/zip-0317
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getLogicalActions = getLogicalActions;
|
|
5
|
+
exports.getConventionalFeeForDimensions = getConventionalFeeForDimensions;
|
|
6
|
+
const dimensions_1 = require("./dimensions");
|
|
7
|
+
const marginalFeeZatPerAction = 5000;
|
|
8
|
+
const graceActions = 2;
|
|
9
|
+
const p2pkhStandardInputSize = 150;
|
|
10
|
+
const p2pkhStandardOutputSize = 34;
|
|
11
|
+
function getLogicalActions(params) {
|
|
12
|
+
if (params instanceof dimensions_1.Dimensions) {
|
|
13
|
+
return getLogicalActions({ txInTotalSize: params.getInputsVSize(), txOutTotalSize: params.getOutputsVSize() });
|
|
14
|
+
}
|
|
15
|
+
// The ZIP includes nJoinSplits, nSpendsSapling, nOutputsSapling, nActionsOrchard
|
|
16
|
+
// which are not relevant for BitGo transactions.
|
|
17
|
+
return Math.max(Math.ceil(params.txInTotalSize / p2pkhStandardInputSize), Math.ceil(params.txOutTotalSize / p2pkhStandardOutputSize));
|
|
18
|
+
}
|
|
19
|
+
function getConventionalFeeForDimensions(dimensions, params = {}) {
|
|
20
|
+
return (Math.max(getLogicalActions(dimensions), graceActions) * (params.marginalFeeZatPerAction ?? marginalFeeZatPerAction));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNhc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvemNhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7QUFTL0IsOENBVUM7QUFFRCwwRUFTQztBQTVCRCw2Q0FBMEM7QUFFMUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBRW5DLFNBQWdCLGlCQUFpQixDQUFDLE1BQXNFO0lBQ3RHLElBQUksTUFBTSxZQUFZLHVCQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLGlCQUFpQixDQUFDLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBQ0QsaUZBQWlGO0lBQ2pGLGlEQUFpRDtJQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLHNCQUFzQixDQUFDLEVBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUMzRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLCtCQUErQixDQUM3QyxVQUFzQixFQUN0QixTQUVJLEVBQUU7SUFFTixPQUFPLENBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxDQUNwSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vemlwcy56LmNhc2gvemlwLTAzMTdcblxuaW1wb3J0IHsgRGltZW5zaW9ucyB9IGZyb20gJy4vZGltZW5zaW9ucyc7XG5cbmNvbnN0IG1hcmdpbmFsRmVlWmF0UGVyQWN0aW9uID0gNTAwMDtcbmNvbnN0IGdyYWNlQWN0aW9ucyA9IDI7XG5jb25zdCBwMnBraFN0YW5kYXJkSW5wdXRTaXplID0gMTUwO1xuY29uc3QgcDJwa2hTdGFuZGFyZE91dHB1dFNpemUgPSAzNDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2ljYWxBY3Rpb25zKHBhcmFtczogeyB0eEluVG90YWxTaXplOiBudW1iZXI7IHR4T3V0VG90YWxTaXplOiBudW1iZXIgfSB8IERpbWVuc2lvbnMpOiBudW1iZXIge1xuICBpZiAocGFyYW1zIGluc3RhbmNlb2YgRGltZW5zaW9ucykge1xuICAgIHJldHVybiBnZXRMb2dpY2FsQWN0aW9ucyh7IHR4SW5Ub3RhbFNpemU6IHBhcmFtcy5nZXRJbnB1dHNWU2l6ZSgpLCB0eE91dFRvdGFsU2l6ZTogcGFyYW1zLmdldE91dHB1dHNWU2l6ZSgpIH0pO1xuICB9XG4gIC8vIFRoZSBaSVAgaW5jbHVkZXMgbkpvaW5TcGxpdHMsIG5TcGVuZHNTYXBsaW5nLCBuT3V0cHV0c1NhcGxpbmcsIG5BY3Rpb25zT3JjaGFyZFxuICAvLyB3aGljaCBhcmUgbm90IHJlbGV2YW50IGZvciBCaXRHbyB0cmFuc2FjdGlvbnMuXG4gIHJldHVybiBNYXRoLm1heChcbiAgICBNYXRoLmNlaWwocGFyYW1zLnR4SW5Ub3RhbFNpemUgLyBwMnBraFN0YW5kYXJkSW5wdXRTaXplKSxcbiAgICBNYXRoLmNlaWwocGFyYW1zLnR4T3V0VG90YWxTaXplIC8gcDJwa2hTdGFuZGFyZE91dHB1dFNpemUpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb252ZW50aW9uYWxGZWVGb3JEaW1lbnNpb25zKFxuICBkaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICBwYXJhbXM6IHtcbiAgICBtYXJnaW5hbEZlZVphdFBlckFjdGlvbj86IG51bWJlcjtcbiAgfSA9IHt9XG4pOiBudW1iZXIge1xuICByZXR1cm4gKFxuICAgIE1hdGgubWF4KGdldExvZ2ljYWxBY3Rpb25zKGRpbWVuc2lvbnMpLCBncmFjZUFjdGlvbnMpICogKHBhcmFtcy5tYXJnaW5hbEZlZVphdFBlckFjdGlvbiA/PyBtYXJnaW5hbEZlZVphdFBlckFjdGlvbilcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../test/chain.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const src_1 = require("../src");
|
|
9
|
+
describe('chain codes', function () {
|
|
10
|
+
const externalList = [src_1.Codes.external.p2sh, src_1.Codes.external.p2shP2wsh, src_1.Codes.external.p2wsh, src_1.Codes.external.p2tr];
|
|
11
|
+
const internalList = [src_1.Codes.internal.p2sh, src_1.Codes.internal.p2shP2wsh, src_1.Codes.internal.p2wsh, src_1.Codes.internal.p2tr];
|
|
12
|
+
const purposeByScriptTypeList = [src_1.Codes.p2sh, src_1.Codes.p2shP2wsh, src_1.Codes.p2wsh, src_1.Codes.p2tr];
|
|
13
|
+
const supportedUnspentTypeList = [
|
|
14
|
+
src_1.CodesTypes.UnspentType.p2sh,
|
|
15
|
+
src_1.CodesTypes.UnspentType.p2shP2wsh,
|
|
16
|
+
src_1.CodesTypes.UnspentType.p2wsh,
|
|
17
|
+
src_1.CodesTypes.UnspentType.p2tr,
|
|
18
|
+
];
|
|
19
|
+
const unsupportedUnspentTypeList = [src_1.CodesTypes.UnspentType.p2pkh, src_1.CodesTypes.UnspentType.p2wpkh];
|
|
20
|
+
it(`is immutable`, function () {
|
|
21
|
+
const p2sh = src_1.Codes.internal.p2sh;
|
|
22
|
+
should_1.default.throws(() => {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
src_1.Codes.internal.p2sh = -1;
|
|
25
|
+
}, TypeError);
|
|
26
|
+
src_1.Codes.internal.p2sh.should.eql(p2sh);
|
|
27
|
+
should_1.default.throws(() => {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
src_1.Codes.internal.values.push(-1);
|
|
30
|
+
}, TypeError);
|
|
31
|
+
should_1.default.throws(() => {
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
src_1.Codes.internal.values = [];
|
|
34
|
+
}, TypeError);
|
|
35
|
+
src_1.Codes.internal.values.should.eql([1, 11, 21, 31]);
|
|
36
|
+
should_1.default.throws(() => {
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
src_1.Codes.all = [];
|
|
39
|
+
});
|
|
40
|
+
src_1.Codes.all.should.not.be.empty();
|
|
41
|
+
});
|
|
42
|
+
it('matches expected values', function () {
|
|
43
|
+
externalList.should.eql([src_1.Codes.p2sh.external, src_1.Codes.p2shP2wsh.external, src_1.Codes.p2wsh.external, src_1.Codes.p2tr.external]);
|
|
44
|
+
externalList.should.eql([0, 10, 20, 30]);
|
|
45
|
+
externalList.should.eql([...src_1.Codes.external.values]);
|
|
46
|
+
src_1.Codes.all.should.eql([...externalList, ...internalList]);
|
|
47
|
+
internalList.should.eql([src_1.Codes.p2sh.internal, src_1.Codes.p2shP2wsh.internal, src_1.Codes.p2wsh.internal, src_1.Codes.p2tr.internal]);
|
|
48
|
+
internalList.should.eql([1, 11, 21, 31]);
|
|
49
|
+
internalList.should.eql([...src_1.Codes.internal.values]);
|
|
50
|
+
});
|
|
51
|
+
it('are grouped correctly', function () {
|
|
52
|
+
internalList.should.matchEach(src_1.Codes.isInternal);
|
|
53
|
+
externalList.should.matchEach(src_1.Codes.isExternal);
|
|
54
|
+
// all are either internal or external, never none or both
|
|
55
|
+
src_1.Codes.all.should.matchEach((code) => !!(src_1.Codes.isExternal(code) !== src_1.Codes.isInternal(code)));
|
|
56
|
+
src_1.Codes.p2sh.values.should.matchEach(src_1.Codes.isP2sh);
|
|
57
|
+
src_1.Codes.p2shP2wsh.values.should.matchEach(src_1.Codes.isP2shP2wsh);
|
|
58
|
+
src_1.Codes.p2wsh.values.should.matchEach(src_1.Codes.isP2wsh);
|
|
59
|
+
src_1.Codes.p2tr.values.should.matchEach(src_1.Codes.isP2tr);
|
|
60
|
+
// every code has exactly one address type
|
|
61
|
+
src_1.Codes.all.should.matchEach((code) => 1 ===
|
|
62
|
+
[src_1.Codes.isP2sh(code), src_1.Codes.isP2wsh(code), src_1.Codes.isP2shP2wsh(code), src_1.Codes.isP2tr(code)].reduce((sum, v) => sum + Number(v), 0));
|
|
63
|
+
src_1.Codes.all.should.matchEach(src_1.Codes.isValid);
|
|
64
|
+
});
|
|
65
|
+
const invalidInputs = [undefined, null, 'lol', -1, 42];
|
|
66
|
+
it('throws correct error for invalid input', function () {
|
|
67
|
+
[
|
|
68
|
+
src_1.Codes.isInternal,
|
|
69
|
+
src_1.Codes.isExternal,
|
|
70
|
+
src_1.Codes.isP2sh,
|
|
71
|
+
src_1.Codes.isP2shP2wsh,
|
|
72
|
+
src_1.Codes.isP2wsh,
|
|
73
|
+
src_1.Codes.isP2tr,
|
|
74
|
+
src_1.Codes.typeForCode,
|
|
75
|
+
].forEach((func) =>
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
invalidInputs.forEach((input) => should_1.default.throws(() => func(input), src_1.Codes.ErrorInvalidCode)));
|
|
78
|
+
invalidInputs.should.matchEach((input) => !src_1.Codes.isValid(input));
|
|
79
|
+
});
|
|
80
|
+
it('map to unspent types', function () {
|
|
81
|
+
[...externalList, ...internalList].forEach((code, index) => src_1.Codes.typeForCode(code).should.equal([...supportedUnspentTypeList, ...supportedUnspentTypeList][index]));
|
|
82
|
+
});
|
|
83
|
+
it('map from unspent types', function () {
|
|
84
|
+
supportedUnspentTypeList.forEach((type, index) => src_1.Codes.forType(type).should.eql(purposeByScriptTypeList[index]));
|
|
85
|
+
unsupportedUnspentTypeList.forEach((type) => should_1.default.throws(() => src_1.Codes.forType(type)));
|
|
86
|
+
});
|
|
87
|
+
it(`has chain type`, function () {
|
|
88
|
+
src_1.Codes.all.should.matchEach((code) => src_1.Codes.ChainCodeTcomb(code) === code && src_1.Codes.ChainCodeTcomb.is(code));
|
|
89
|
+
invalidInputs.forEach((code) => should_1.default.throws(() => src_1.Codes.ChainCodeTcomb(code)));
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L2NoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXNEO0FBQ3RELG9EQUE0QjtBQUM1QixnQ0FBMkM7QUFFM0MsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixNQUFNLFlBQVksR0FBRyxDQUFDLFdBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFdBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxXQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxXQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxXQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhILE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUFLLENBQUMsSUFBSSxFQUFFLFdBQUssQ0FBQyxTQUFTLEVBQUUsV0FBSyxDQUFDLEtBQUssRUFBRSxXQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkYsTUFBTSx3QkFBd0IsR0FBRztRQUMvQixnQkFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQzNCLGdCQUFVLENBQUMsV0FBVyxDQUFDLFNBQVM7UUFDaEMsZ0JBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSztRQUM1QixnQkFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJO0tBQzVCLENBQUM7SUFFRixNQUFNLDBCQUEwQixHQUFHLENBQUMsZ0JBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLGdCQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpHLEVBQUUsQ0FBQyxjQUFjLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsV0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pCLGFBQWE7WUFDYixXQUFLLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDZCxXQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNqQixhQUFhO1lBQ2IsV0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pCLGFBQWE7WUFDYixXQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDN0IsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2QsV0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbEQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2pCLGFBQWE7WUFDYixXQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILFdBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7UUFDNUIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxXQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEgsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFcEQsV0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3pELFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsV0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BILFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVCQUF1QixFQUFFO1FBQzFCLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEQsMERBQTBEO1FBQzFELFdBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1RixXQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxXQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxXQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxXQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqRCwwQ0FBMEM7UUFDMUMsV0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN4QixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsQ0FBQztZQUNELENBQUMsV0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0YsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUMzQixDQUFDLENBQ0YsQ0FDSixDQUFDO1FBRUYsV0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFdkQsRUFBRSxDQUFDLHdDQUF3QyxFQUFFO1FBQzNDO1lBQ0UsV0FBSyxDQUFDLFVBQVU7WUFDaEIsV0FBSyxDQUFDLFVBQVU7WUFDaEIsV0FBSyxDQUFDLE1BQU07WUFDWixXQUFLLENBQUMsV0FBVztZQUNqQixXQUFLLENBQUMsT0FBTztZQUNiLFdBQUssQ0FBQyxNQUFNO1lBQ1osV0FBSyxDQUFDLFdBQVc7U0FDbEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNqQixhQUFhO1FBQ2IsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQzNGLENBQUM7UUFFRixhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUU7UUFDekIsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUN6RCxXQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLHdCQUF3QixFQUFFLEdBQUcsd0JBQXdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4RyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0JBQXdCLEVBQUU7UUFDM0Isd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsSCwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdCQUFnQixFQUFFO1FBQ25CLFdBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsV0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksV0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBDb2RlcywgQ29kZXNUeXBlcyB9IGZyb20gJy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdjaGFpbiBjb2RlcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZXh0ZXJuYWxMaXN0ID0gW0NvZGVzLmV4dGVybmFsLnAyc2gsIENvZGVzLmV4dGVybmFsLnAyc2hQMndzaCwgQ29kZXMuZXh0ZXJuYWwucDJ3c2gsIENvZGVzLmV4dGVybmFsLnAydHJdO1xuXG4gIGNvbnN0IGludGVybmFsTGlzdCA9IFtDb2Rlcy5pbnRlcm5hbC5wMnNoLCBDb2Rlcy5pbnRlcm5hbC5wMnNoUDJ3c2gsIENvZGVzLmludGVybmFsLnAyd3NoLCBDb2Rlcy5pbnRlcm5hbC5wMnRyXTtcblxuICBjb25zdCBwdXJwb3NlQnlTY3JpcHRUeXBlTGlzdCA9IFtDb2Rlcy5wMnNoLCBDb2Rlcy5wMnNoUDJ3c2gsIENvZGVzLnAyd3NoLCBDb2Rlcy5wMnRyXTtcblxuICBjb25zdCBzdXBwb3J0ZWRVbnNwZW50VHlwZUxpc3QgPSBbXG4gICAgQ29kZXNUeXBlcy5VbnNwZW50VHlwZS5wMnNoLFxuICAgIENvZGVzVHlwZXMuVW5zcGVudFR5cGUucDJzaFAyd3NoLFxuICAgIENvZGVzVHlwZXMuVW5zcGVudFR5cGUucDJ3c2gsXG4gICAgQ29kZXNUeXBlcy5VbnNwZW50VHlwZS5wMnRyLFxuICBdO1xuXG4gIGNvbnN0IHVuc3VwcG9ydGVkVW5zcGVudFR5cGVMaXN0ID0gW0NvZGVzVHlwZXMuVW5zcGVudFR5cGUucDJwa2gsIENvZGVzVHlwZXMuVW5zcGVudFR5cGUucDJ3cGtoXTtcblxuICBpdChgaXMgaW1tdXRhYmxlYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHAyc2ggPSBDb2Rlcy5pbnRlcm5hbC5wMnNoO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgQ29kZXMuaW50ZXJuYWwucDJzaCA9IC0xO1xuICAgIH0sIFR5cGVFcnJvcik7XG4gICAgQ29kZXMuaW50ZXJuYWwucDJzaC5zaG91bGQuZXFsKHAyc2gpO1xuXG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBDb2Rlcy5pbnRlcm5hbC52YWx1ZXMucHVzaCgtMSk7XG4gICAgfSwgVHlwZUVycm9yKTtcblxuICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgQ29kZXMuaW50ZXJuYWwudmFsdWVzID0gW107XG4gICAgfSwgVHlwZUVycm9yKTtcbiAgICBDb2Rlcy5pbnRlcm5hbC52YWx1ZXMuc2hvdWxkLmVxbChbMSwgMTEsIDIxLCAzMV0pO1xuXG4gICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBDb2Rlcy5hbGwgPSBbXTtcbiAgICB9KTtcbiAgICBDb2Rlcy5hbGwuc2hvdWxkLm5vdC5iZS5lbXB0eSgpO1xuICB9KTtcblxuICBpdCgnbWF0Y2hlcyBleHBlY3RlZCB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgZXh0ZXJuYWxMaXN0LnNob3VsZC5lcWwoW0NvZGVzLnAyc2guZXh0ZXJuYWwsIENvZGVzLnAyc2hQMndzaC5leHRlcm5hbCwgQ29kZXMucDJ3c2guZXh0ZXJuYWwsIENvZGVzLnAydHIuZXh0ZXJuYWxdKTtcbiAgICBleHRlcm5hbExpc3Quc2hvdWxkLmVxbChbMCwgMTAsIDIwLCAzMF0pO1xuICAgIGV4dGVybmFsTGlzdC5zaG91bGQuZXFsKFsuLi5Db2Rlcy5leHRlcm5hbC52YWx1ZXNdKTtcblxuICAgIENvZGVzLmFsbC5zaG91bGQuZXFsKFsuLi5leHRlcm5hbExpc3QsIC4uLmludGVybmFsTGlzdF0pO1xuICAgIGludGVybmFsTGlzdC5zaG91bGQuZXFsKFtDb2Rlcy5wMnNoLmludGVybmFsLCBDb2Rlcy5wMnNoUDJ3c2guaW50ZXJuYWwsIENvZGVzLnAyd3NoLmludGVybmFsLCBDb2Rlcy5wMnRyLmludGVybmFsXSk7XG4gICAgaW50ZXJuYWxMaXN0LnNob3VsZC5lcWwoWzEsIDExLCAyMSwgMzFdKTtcbiAgICBpbnRlcm5hbExpc3Quc2hvdWxkLmVxbChbLi4uQ29kZXMuaW50ZXJuYWwudmFsdWVzXSk7XG4gIH0pO1xuXG4gIGl0KCdhcmUgZ3JvdXBlZCBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgaW50ZXJuYWxMaXN0LnNob3VsZC5tYXRjaEVhY2goQ29kZXMuaXNJbnRlcm5hbCk7XG4gICAgZXh0ZXJuYWxMaXN0LnNob3VsZC5tYXRjaEVhY2goQ29kZXMuaXNFeHRlcm5hbCk7XG5cbiAgICAvLyBhbGwgYXJlIGVpdGhlciBpbnRlcm5hbCBvciBleHRlcm5hbCwgbmV2ZXIgbm9uZSBvciBib3RoXG4gICAgQ29kZXMuYWxsLnNob3VsZC5tYXRjaEVhY2goKGNvZGUpID0+ICEhKENvZGVzLmlzRXh0ZXJuYWwoY29kZSkgIT09IENvZGVzLmlzSW50ZXJuYWwoY29kZSkpKTtcblxuICAgIENvZGVzLnAyc2gudmFsdWVzLnNob3VsZC5tYXRjaEVhY2goQ29kZXMuaXNQMnNoKTtcbiAgICBDb2Rlcy5wMnNoUDJ3c2gudmFsdWVzLnNob3VsZC5tYXRjaEVhY2goQ29kZXMuaXNQMnNoUDJ3c2gpO1xuICAgIENvZGVzLnAyd3NoLnZhbHVlcy5zaG91bGQubWF0Y2hFYWNoKENvZGVzLmlzUDJ3c2gpO1xuICAgIENvZGVzLnAydHIudmFsdWVzLnNob3VsZC5tYXRjaEVhY2goQ29kZXMuaXNQMnRyKTtcblxuICAgIC8vIGV2ZXJ5IGNvZGUgaGFzIGV4YWN0bHkgb25lIGFkZHJlc3MgdHlwZVxuICAgIENvZGVzLmFsbC5zaG91bGQubWF0Y2hFYWNoKFxuICAgICAgKGNvZGUpID0+XG4gICAgICAgIDEgPT09XG4gICAgICAgIFtDb2Rlcy5pc1Ayc2goY29kZSksIENvZGVzLmlzUDJ3c2goY29kZSksIENvZGVzLmlzUDJzaFAyd3NoKGNvZGUpLCBDb2Rlcy5pc1AydHIoY29kZSldLnJlZHVjZShcbiAgICAgICAgICAoc3VtLCB2KSA9PiBzdW0gKyBOdW1iZXIodiksXG4gICAgICAgICAgMFxuICAgICAgICApXG4gICAgKTtcblxuICAgIENvZGVzLmFsbC5zaG91bGQubWF0Y2hFYWNoKENvZGVzLmlzVmFsaWQpO1xuICB9KTtcblxuICBjb25zdCBpbnZhbGlkSW5wdXRzID0gW3VuZGVmaW5lZCwgbnVsbCwgJ2xvbCcsIC0xLCA0Ml07XG5cbiAgaXQoJ3Rocm93cyBjb3JyZWN0IGVycm9yIGZvciBpbnZhbGlkIGlucHV0JywgZnVuY3Rpb24gKCkge1xuICAgIFtcbiAgICAgIENvZGVzLmlzSW50ZXJuYWwsXG4gICAgICBDb2Rlcy5pc0V4dGVybmFsLFxuICAgICAgQ29kZXMuaXNQMnNoLFxuICAgICAgQ29kZXMuaXNQMnNoUDJ3c2gsXG4gICAgICBDb2Rlcy5pc1Ayd3NoLFxuICAgICAgQ29kZXMuaXNQMnRyLFxuICAgICAgQ29kZXMudHlwZUZvckNvZGUsXG4gICAgXS5mb3JFYWNoKChmdW5jKSA9PlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaW52YWxpZElucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4gc2hvdWxkLnRocm93cygoKSA9PiBmdW5jKGlucHV0KSwgQ29kZXMuRXJyb3JJbnZhbGlkQ29kZSkpXG4gICAgKTtcblxuICAgIGludmFsaWRJbnB1dHMuc2hvdWxkLm1hdGNoRWFjaCgoaW5wdXQpID0+ICFDb2Rlcy5pc1ZhbGlkKGlucHV0KSk7XG4gIH0pO1xuXG4gIGl0KCdtYXAgdG8gdW5zcGVudCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBbLi4uZXh0ZXJuYWxMaXN0LCAuLi5pbnRlcm5hbExpc3RdLmZvckVhY2goKGNvZGUsIGluZGV4KSA9PlxuICAgICAgQ29kZXMudHlwZUZvckNvZGUoY29kZSkuc2hvdWxkLmVxdWFsKFsuLi5zdXBwb3J0ZWRVbnNwZW50VHlwZUxpc3QsIC4uLnN1cHBvcnRlZFVuc3BlbnRUeXBlTGlzdF1baW5kZXhdKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdtYXAgZnJvbSB1bnNwZW50IHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgIHN1cHBvcnRlZFVuc3BlbnRUeXBlTGlzdC5mb3JFYWNoKCh0eXBlLCBpbmRleCkgPT4gQ29kZXMuZm9yVHlwZSh0eXBlKS5zaG91bGQuZXFsKHB1cnBvc2VCeVNjcmlwdFR5cGVMaXN0W2luZGV4XSkpO1xuXG4gICAgdW5zdXBwb3J0ZWRVbnNwZW50VHlwZUxpc3QuZm9yRWFjaCgodHlwZSkgPT4gc2hvdWxkLnRocm93cygoKSA9PiBDb2Rlcy5mb3JUeXBlKHR5cGUpKSk7XG4gIH0pO1xuXG4gIGl0KGBoYXMgY2hhaW4gdHlwZWAsIGZ1bmN0aW9uICgpIHtcbiAgICBDb2Rlcy5hbGwuc2hvdWxkLm1hdGNoRWFjaCgoY29kZSkgPT4gQ29kZXMuQ2hhaW5Db2RlVGNvbWIoY29kZSkgPT09IGNvZGUgJiYgQ29kZXMuQ2hhaW5Db2RlVGNvbWIuaXMoY29kZSkpO1xuICAgIGludmFsaWRJbnB1dHMuZm9yRWFjaCgoY29kZTogYW55KSA9PiBzaG91bGQudGhyb3dzKCgpID0+IENvZGVzLkNoYWluQ29kZVRjb21iKGNvZGUpKSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../test/dimensions.ts"],"names":[],"mappings":""}
|