@bitgo-beta/utxo-ord 1.0.1-beta.182 → 1.0.1-beta.1821
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/dist/cjs/src/OrdOutput.d.ts.map +1 -0
- package/dist/cjs/src/OrdOutput.js +197 -0
- package/dist/{src → cjs/src}/OutputLayout.d.ts +3 -3
- package/dist/cjs/src/OutputLayout.d.ts.map +1 -0
- package/dist/cjs/src/OutputLayout.js +246 -0
- package/dist/{src → cjs/src}/SatPoint.d.ts +8 -1
- package/dist/cjs/src/SatPoint.d.ts.map +1 -0
- package/dist/cjs/src/SatPoint.js +67 -0
- package/dist/cjs/src/SatRange.d.ts.map +1 -0
- package/dist/cjs/src/SatRange.js +58 -0
- package/dist/cjs/src/combinations.d.ts.map +1 -0
- package/dist/cjs/src/combinations.js +13 -0
- package/dist/{src → cjs/src}/index.d.ts +2 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +49 -0
- package/dist/cjs/src/inscriptions.d.ts +58 -0
- package/dist/cjs/src/inscriptions.d.ts.map +1 -0
- package/dist/cjs/src/inscriptions.js +94 -0
- package/dist/{src → cjs/src}/psbt.d.ts +33 -17
- package/dist/cjs/src/psbt.d.ts.map +1 -0
- package/dist/cjs/src/psbt.js +193 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/OrdOutput.d.ts +65 -0
- package/dist/esm/OrdOutput.js +192 -0
- package/dist/esm/OutputLayout.d.ts +47 -0
- package/dist/esm/OutputLayout.d.ts.map +1 -0
- package/dist/esm/OutputLayout.js +240 -0
- package/dist/esm/SatPoint.d.ts +20 -0
- package/dist/esm/SatPoint.d.ts.map +1 -0
- package/dist/esm/SatPoint.js +61 -0
- package/dist/esm/SatRange.d.ts +26 -0
- package/dist/esm/SatRange.js +53 -0
- package/dist/esm/combinations.d.ts +2 -0
- package/dist/esm/combinations.js +10 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/{src → esm}/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/inscriptions.d.ts +58 -0
- package/dist/esm/inscriptions.d.ts.map +1 -0
- package/dist/esm/inscriptions.js +89 -0
- package/dist/esm/psbt.d.ts +84 -0
- package/dist/esm/psbt.d.ts.map +1 -0
- package/dist/esm/psbt.js +186 -0
- package/package.json +27 -9
- package/dist/src/OrdOutput.js +0 -197
- package/dist/src/OutputLayout.d.ts.map +0 -1
- package/dist/src/OutputLayout.js +0 -248
- package/dist/src/SatPoint.d.ts.map +0 -1
- package/dist/src/SatPoint.js +0 -49
- package/dist/src/SatRange.js +0 -58
- package/dist/src/combinations.js +0 -14
- package/dist/src/index.js +0 -23
- package/dist/src/inscriptions.d.ts +0 -32
- package/dist/src/inscriptions.d.ts.map +0 -1
- package/dist/src/inscriptions.js +0 -169
- package/dist/src/psbt.d.ts.map +0 -1
- package/dist/src/psbt.js +0 -150
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src → cjs/src}/OrdOutput.d.ts +0 -0
- /package/dist/{src → cjs/src}/SatRange.d.ts +0 -0
- /package/dist/{src → cjs/src}/combinations.d.ts +0 -0
- /package/dist/{src → esm}/OrdOutput.d.ts.map +0 -0
- /package/dist/{src → esm}/SatRange.d.ts.map +0 -0
- /package/dist/{src → esm}/combinations.d.ts.map +0 -0
package/dist/src/SatRange.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SatRange = exports.InvalidSatRange = void 0;
|
|
4
|
-
class InvalidSatRange extends Error {
|
|
5
|
-
constructor(message, start, end) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.start = start;
|
|
8
|
-
this.end = end;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.InvalidSatRange = InvalidSatRange;
|
|
12
|
-
function toRange(v) {
|
|
13
|
-
return typeof v === 'bigint' ? new SatRange(v, v) : v;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Range of satoshi, inclusive.
|
|
17
|
-
* Inscriptions have start === end.
|
|
18
|
-
*/
|
|
19
|
-
class SatRange {
|
|
20
|
-
constructor(start, end) {
|
|
21
|
-
this.start = start;
|
|
22
|
-
this.end = end;
|
|
23
|
-
if (start < 0 || end < 0 || end < start) {
|
|
24
|
-
throw new InvalidSatRange(`Invalid SatRange [${start}, ${end}]`, start, end);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @param offset
|
|
29
|
-
* @return SatRange with start and end shifted by offset
|
|
30
|
-
*/
|
|
31
|
-
shiftedBy(offset) {
|
|
32
|
-
return new SatRange(this.start + offset, this.end + offset);
|
|
33
|
-
}
|
|
34
|
-
/** @return true iff this intersects with _other_ */
|
|
35
|
-
intersectsWith(other) {
|
|
36
|
-
other = toRange(other);
|
|
37
|
-
if (this.start <= other.start) {
|
|
38
|
-
return other.start <= this.end;
|
|
39
|
-
}
|
|
40
|
-
return other.intersectsWith(this);
|
|
41
|
-
}
|
|
42
|
-
/** @return true iff this is superset of _other_. */
|
|
43
|
-
isSupersetOf(other) {
|
|
44
|
-
other = toRange(other);
|
|
45
|
-
return this.start <= other.start && other.end <= this.end;
|
|
46
|
-
}
|
|
47
|
-
toString() {
|
|
48
|
-
if (this.start === this.end) {
|
|
49
|
-
return `[${this.start}]`;
|
|
50
|
-
}
|
|
51
|
-
return `[${this.start}..${this.end}]`;
|
|
52
|
-
}
|
|
53
|
-
size() {
|
|
54
|
-
return this.end - this.start + BigInt(1);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.SatRange = SatRange;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2F0UmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSxlQUFnQixTQUFRLEtBQUs7SUFDeEMsWUFBWSxPQUFlLEVBQVMsS0FBYSxFQUFTLEdBQVc7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBRXJFLENBQUM7Q0FDRjtBQUpELDBDQUlDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBb0I7SUFDbkMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFFBQVE7SUFDbkIsWUFBbUIsS0FBYSxFQUFTLEdBQVc7UUFBakMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDbEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtZQUN2QyxNQUFNLElBQUksZUFBZSxDQUFDLHFCQUFxQixLQUFLLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGNBQWMsQ0FBQyxLQUF3QjtRQUNyQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsWUFBWSxDQUFDLEtBQXdCO1FBQ25DLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUF4Q0QsNEJBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludmFsaWRTYXRSYW5nZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgc3RhcnQ6IGJpZ2ludCwgcHVibGljIGVuZDogYmlnaW50KSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9SYW5nZSh2OiBiaWdpbnQgfCBTYXRSYW5nZSk6IFNhdFJhbmdlIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnYmlnaW50JyA/IG5ldyBTYXRSYW5nZSh2LCB2KSA6IHY7XG59XG5cbi8qKlxuICogUmFuZ2Ugb2Ygc2F0b3NoaSwgaW5jbHVzaXZlLlxuICogSW5zY3JpcHRpb25zIGhhdmUgc3RhcnQgPT09IGVuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhdFJhbmdlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBiaWdpbnQsIHB1YmxpYyBlbmQ6IGJpZ2ludCkge1xuICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCB8fCBlbmQgPCBzdGFydCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRTYXRSYW5nZShgSW52YWxpZCBTYXRSYW5nZSBbJHtzdGFydH0sICR7ZW5kfV1gLCBzdGFydCwgZW5kKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcmV0dXJuIFNhdFJhbmdlIHdpdGggc3RhcnQgYW5kIGVuZCBzaGlmdGVkIGJ5IG9mZnNldFxuICAgKi9cbiAgc2hpZnRlZEJ5KG9mZnNldDogYmlnaW50KTogU2F0UmFuZ2Uge1xuICAgIHJldHVybiBuZXcgU2F0UmFuZ2UodGhpcy5zdGFydCArIG9mZnNldCwgdGhpcy5lbmQgKyBvZmZzZXQpO1xuICB9XG5cbiAgLyoqIEByZXR1cm4gdHJ1ZSBpZmYgdGhpcyBpbnRlcnNlY3RzIHdpdGggX290aGVyXyAqL1xuICBpbnRlcnNlY3RzV2l0aChvdGhlcjogYmlnaW50IHwgU2F0UmFuZ2UpOiBib29sZWFuIHtcbiAgICBvdGhlciA9IHRvUmFuZ2Uob3RoZXIpO1xuICAgIGlmICh0aGlzLnN0YXJ0IDw9IG90aGVyLnN0YXJ0KSB7XG4gICAgICByZXR1cm4gb3RoZXIuc3RhcnQgPD0gdGhpcy5lbmQ7XG4gICAgfVxuICAgIHJldHVybiBvdGhlci5pbnRlcnNlY3RzV2l0aCh0aGlzKTtcbiAgfVxuXG4gIC8qKiBAcmV0dXJuIHRydWUgaWZmIHRoaXMgaXMgc3VwZXJzZXQgb2YgX290aGVyXy4gKi9cbiAgaXNTdXBlcnNldE9mKG90aGVyOiBiaWdpbnQgfCBTYXRSYW5nZSk6IGJvb2xlYW4ge1xuICAgIG90aGVyID0gdG9SYW5nZShvdGhlcik7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnQgPD0gb3RoZXIuc3RhcnQgJiYgb3RoZXIuZW5kIDw9IHRoaXMuZW5kO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdGFydCA9PT0gdGhpcy5lbmQpIHtcbiAgICAgIHJldHVybiBgWyR7dGhpcy5zdGFydH1dYDtcbiAgICB9XG4gICAgcmV0dXJuIGBbJHt0aGlzLnN0YXJ0fS4uJHt0aGlzLmVuZH1dYDtcbiAgfVxuXG4gIHNpemUoKTogYmlnaW50IHtcbiAgICByZXR1cm4gdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICsgQmlnSW50KDEpO1xuICB9XG59XG4iXX0=
|
package/dist/src/combinations.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.powerset = void 0;
|
|
4
|
-
function powerset(arr) {
|
|
5
|
-
if (arr.length === 0) {
|
|
6
|
-
return [[]];
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
const [a, ...rest] = arr;
|
|
10
|
-
return powerset(rest).flatMap((s) => [[a, ...s], s]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.powerset = powerset;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbWJpbmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixRQUFRLENBQUksR0FBUTtJQUNsQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNiO1NBQU07UUFDTCxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEQ7QUFDSCxDQUFDO0FBUEQsNEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcG93ZXJzZXQ8VD4oYXJyOiBUW10pOiBUW11bXSB7XG4gIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtbXV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW2EsIC4uLnJlc3RdID0gYXJyO1xuICAgIHJldHVybiBwb3dlcnNldChyZXN0KS5mbGF0TWFwKChzKSA9PiBbW2EsIC4uLnNdLCBzXSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/src/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* https://github.com/casey/ord/blob/0.5.1/bip.mediawiki
|
|
4
|
-
*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
8
|
-
}) : (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
o[k2] = m[k];
|
|
11
|
-
}));
|
|
12
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
13
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
14
|
-
};
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.inscriptions = void 0;
|
|
17
|
-
__exportStar(require("./SatRange"), exports);
|
|
18
|
-
__exportStar(require("./OrdOutput"), exports);
|
|
19
|
-
__exportStar(require("./OutputLayout"), exports);
|
|
20
|
-
__exportStar(require("./SatPoint"), exports);
|
|
21
|
-
__exportStar(require("./psbt"), exports);
|
|
22
|
-
exports.inscriptions = require("./inscriptions");
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7O0FBRUgsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLHlDQUF1QjtBQUN2QixpREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi8wLjUuMS9iaXAubWVkaWF3aWtpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9TYXRSYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL09yZE91dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dExheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL1NhdFBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG5leHBvcnQgKiBhcyBpbnNjcmlwdGlvbnMgZnJvbSAnLi9pbnNjcmlwdGlvbnMnO1xuIl19
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Network } from '@bitgo-beta/utxo-lib';
|
|
3
|
-
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
4
|
-
import { PreparedInscriptionRevealData } from '@bitgo-beta/sdk-core';
|
|
5
|
-
/**
|
|
6
|
-
* @param pubkey
|
|
7
|
-
* @param contentType
|
|
8
|
-
* @param inscriptionData
|
|
9
|
-
* @param network
|
|
10
|
-
* @returns PreparedInscriptionRevealData
|
|
11
|
-
*/
|
|
12
|
-
export declare function createInscriptionRevealData(pubkey: Buffer, contentType: string, inscriptionData: Buffer, network: Network): PreparedInscriptionRevealData;
|
|
13
|
-
/**
|
|
14
|
-
* @param pubkey
|
|
15
|
-
* @param contentType
|
|
16
|
-
* @param inscriptionData
|
|
17
|
-
* @returns inscription address
|
|
18
|
-
*/
|
|
19
|
-
export declare function createOutputScriptForInscription(pubkey: Buffer, contentType: string, inscriptionData: Buffer): Buffer;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* @param privateKey
|
|
23
|
-
* @param tapLeafScript
|
|
24
|
-
* @param commitAddress
|
|
25
|
-
* @param recipientAddress
|
|
26
|
-
* @param unsignedCommitTx
|
|
27
|
-
* @param network
|
|
28
|
-
*
|
|
29
|
-
* @return a fully signed reveal transaction
|
|
30
|
-
*/
|
|
31
|
-
export declare function signRevealTransaction(privateKey: Buffer, tapLeafScript: utxolib.bitgo.TapLeafScript, commitAddress: string, recipientAddress: string, unsignedCommitTx: Buffer, network: Network): utxolib.bitgo.UtxoPsbt;
|
|
32
|
-
//# sourceMappingURL=inscriptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inscriptions.d.ts","sourceRoot":"","sources":["../../src/inscriptions.ts"],"names":[],"mappings":";AAOA,OAAO,EAKL,OAAO,EAKR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAqGrE;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,OAAO,GACf,6BAA6B,CAuB/B;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAKrH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAC1C,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,KAAK,CAAC,QAAQ,CA2BxB"}
|
package/dist/src/inscriptions.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
Functions for dealing with inscriptions.
|
|
4
|
-
|
|
5
|
-
See https://docs.ordinals.com/inscriptions.html
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.signRevealTransaction = exports.createOutputScriptForInscription = exports.createInscriptionRevealData = void 0;
|
|
9
|
-
const assert = require("assert");
|
|
10
|
-
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
11
|
-
const utxolib = require("@bitgo-beta/utxo-lib");
|
|
12
|
-
const OPS = utxo_lib_1.script.OPS;
|
|
13
|
-
const MAX_LENGTH_TAP_DATA_PUSH = 520;
|
|
14
|
-
/**
|
|
15
|
-
* The max size of an individual OP_PUSH in a Taproot script is 520 bytes. This
|
|
16
|
-
* function splits inscriptionData into an array buffer of 520 bytes length.
|
|
17
|
-
* https://docs.ordinals.com/inscriptions.html
|
|
18
|
-
* @param inscriptionData
|
|
19
|
-
* @param chunkSize
|
|
20
|
-
*/
|
|
21
|
-
function splitBuffer(inscriptionData, chunkSize) {
|
|
22
|
-
const pushDataBuffers = [];
|
|
23
|
-
for (let i = 0; i < inscriptionData.length; i += chunkSize) {
|
|
24
|
-
pushDataBuffers.push(inscriptionData.slice(i, i + chunkSize));
|
|
25
|
-
}
|
|
26
|
-
return pushDataBuffers;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @returns inscription payment object
|
|
31
|
-
* @param pubkey
|
|
32
|
-
* @param contentType
|
|
33
|
-
* @param inscriptionData
|
|
34
|
-
*/
|
|
35
|
-
function createPaymentForInscription(pubkey, contentType, inscriptionData) {
|
|
36
|
-
const dataPushBuffers = splitBuffer(inscriptionData, MAX_LENGTH_TAP_DATA_PUSH);
|
|
37
|
-
const uncompiledScript = [
|
|
38
|
-
pubkey,
|
|
39
|
-
OPS.OP_CHECKSIG,
|
|
40
|
-
OPS.OP_FALSE,
|
|
41
|
-
OPS.OP_IF,
|
|
42
|
-
Buffer.from('ord', 'ascii'),
|
|
43
|
-
1,
|
|
44
|
-
1,
|
|
45
|
-
Buffer.from(contentType, 'ascii'),
|
|
46
|
-
OPS.OP_0,
|
|
47
|
-
...dataPushBuffers,
|
|
48
|
-
OPS.OP_ENDIF,
|
|
49
|
-
];
|
|
50
|
-
const compiledScript = utxo_lib_1.script.compile(uncompiledScript);
|
|
51
|
-
const redeem = {
|
|
52
|
-
output: compiledScript,
|
|
53
|
-
depth: 0,
|
|
54
|
-
};
|
|
55
|
-
return utxo_lib_1.p2trPayments.p2tr({ redeems: [redeem], redeemIndex: 0 }, { eccLib: utxo_lib_1.ecc });
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* @param payment
|
|
59
|
-
* @param controlBlock
|
|
60
|
-
* @param commitOutput
|
|
61
|
-
* @param network
|
|
62
|
-
* @return virtual size of a transaction with a single inscription reveal input and a single commitOutput
|
|
63
|
-
*/
|
|
64
|
-
function getInscriptionRevealSize(payment, controlBlock, commitOutput, network) {
|
|
65
|
-
var _a, _b;
|
|
66
|
-
const psbt = utxo_lib_1.bitgo.createPsbtForNetwork({ network });
|
|
67
|
-
const parsedControlBlock = utxo_lib_1.taproot.parseControlBlock(utxo_lib_1.ecc, controlBlock);
|
|
68
|
-
const leafHash = utxo_lib_1.taproot.getTapleafHash(utxo_lib_1.ecc, parsedControlBlock, (_a = payment.redeem) === null || _a === void 0 ? void 0 : _a.output);
|
|
69
|
-
psbt.addInput({
|
|
70
|
-
hash: Buffer.alloc(32),
|
|
71
|
-
index: 0,
|
|
72
|
-
witnessUtxo: { script: commitOutput, value: BigInt(100000) },
|
|
73
|
-
tapLeafScript: [
|
|
74
|
-
{
|
|
75
|
-
controlBlock,
|
|
76
|
-
script: (_b = payment.redeem) === null || _b === void 0 ? void 0 : _b.output,
|
|
77
|
-
leafVersion: utxo_lib_1.taproot.INITIAL_TAPSCRIPT_VERSION,
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
});
|
|
81
|
-
psbt.addOutput({ script: commitOutput, value: BigInt(10000) });
|
|
82
|
-
psbt.signTaprootInput(0, {
|
|
83
|
-
publicKey: Buffer.alloc(32),
|
|
84
|
-
signSchnorr(hash) {
|
|
85
|
-
// dummy schnorr-sized signature
|
|
86
|
-
return Buffer.alloc(64);
|
|
87
|
-
},
|
|
88
|
-
}, [leafHash]);
|
|
89
|
-
psbt.finalizeTapInputWithSingleLeafScriptAndSignature(0);
|
|
90
|
-
return psbt.extractTransaction(/* disableFeeCheck */ true).virtualSize();
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* @param pubkey
|
|
94
|
-
* @param contentType
|
|
95
|
-
* @param inscriptionData
|
|
96
|
-
* @param network
|
|
97
|
-
* @returns PreparedInscriptionRevealData
|
|
98
|
-
*/
|
|
99
|
-
function createInscriptionRevealData(pubkey, contentType, inscriptionData, network) {
|
|
100
|
-
var _a, _b;
|
|
101
|
-
const payment = createPaymentForInscription(pubkey, contentType, inscriptionData);
|
|
102
|
-
const { output: commitOutput, controlBlock } = payment;
|
|
103
|
-
assert(commitOutput);
|
|
104
|
-
assert(controlBlock);
|
|
105
|
-
assert((_a = payment.redeem) === null || _a === void 0 ? void 0 : _a.output);
|
|
106
|
-
const commitAddress = utxo_lib_1.address.fromOutputScript(commitOutput, network);
|
|
107
|
-
const tapLeafScript = [
|
|
108
|
-
{
|
|
109
|
-
controlBlock,
|
|
110
|
-
script: (_b = payment.redeem) === null || _b === void 0 ? void 0 : _b.output,
|
|
111
|
-
leafVersion: utxo_lib_1.taproot.INITIAL_TAPSCRIPT_VERSION,
|
|
112
|
-
},
|
|
113
|
-
];
|
|
114
|
-
const revealTransactionVSize = getInscriptionRevealSize(payment, controlBlock, commitOutput, network);
|
|
115
|
-
return {
|
|
116
|
-
address: commitAddress,
|
|
117
|
-
revealTransactionVSize,
|
|
118
|
-
tapLeafScript: tapLeafScript[0],
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
exports.createInscriptionRevealData = createInscriptionRevealData;
|
|
122
|
-
/**
|
|
123
|
-
* @param pubkey
|
|
124
|
-
* @param contentType
|
|
125
|
-
* @param inscriptionData
|
|
126
|
-
* @returns inscription address
|
|
127
|
-
*/
|
|
128
|
-
function createOutputScriptForInscription(pubkey, contentType, inscriptionData) {
|
|
129
|
-
const payment = createPaymentForInscription(pubkey, contentType, inscriptionData);
|
|
130
|
-
assert(payment.output, 'Failed to create inscription output script');
|
|
131
|
-
return payment.output;
|
|
132
|
-
}
|
|
133
|
-
exports.createOutputScriptForInscription = createOutputScriptForInscription;
|
|
134
|
-
/**
|
|
135
|
-
*
|
|
136
|
-
* @param privateKey
|
|
137
|
-
* @param tapLeafScript
|
|
138
|
-
* @param commitAddress
|
|
139
|
-
* @param recipientAddress
|
|
140
|
-
* @param unsignedCommitTx
|
|
141
|
-
* @param network
|
|
142
|
-
*
|
|
143
|
-
* @return a fully signed reveal transaction
|
|
144
|
-
*/
|
|
145
|
-
function signRevealTransaction(privateKey, tapLeafScript, commitAddress, recipientAddress, unsignedCommitTx, network) {
|
|
146
|
-
const unserCommitTxn = utxolib.bitgo.createTransactionFromBuffer(unsignedCommitTx, network);
|
|
147
|
-
const hash = unserCommitTxn.getHash();
|
|
148
|
-
const commitOutput = utxolib.address.toOutputScript(commitAddress, network);
|
|
149
|
-
const vout = unserCommitTxn.outs.findIndex((out) => out.script.equals(commitOutput));
|
|
150
|
-
if (vout === -1) {
|
|
151
|
-
throw new Error('Invalid commit transaction');
|
|
152
|
-
}
|
|
153
|
-
const psbt = utxo_lib_1.bitgo.createPsbtForNetwork({ network });
|
|
154
|
-
psbt.addInput({
|
|
155
|
-
hash,
|
|
156
|
-
index: vout,
|
|
157
|
-
witnessUtxo: { script: commitOutput, value: BigInt(unserCommitTxn.outs[vout].value) },
|
|
158
|
-
tapLeafScript: [tapLeafScript],
|
|
159
|
-
});
|
|
160
|
-
const recipientOutput = utxo_lib_1.address.toOutputScript(recipientAddress, network);
|
|
161
|
-
psbt.addOutput({ script: recipientOutput, value: BigInt(10000) });
|
|
162
|
-
const signer = utxo_lib_1.ECPair.fromPrivateKey(privateKey);
|
|
163
|
-
const parsedControlBlock = utxo_lib_1.taproot.parseControlBlock(utxo_lib_1.ecc, tapLeafScript.controlBlock);
|
|
164
|
-
const leafHash = utxo_lib_1.taproot.getTapleafHash(utxo_lib_1.ecc, parsedControlBlock, tapLeafScript.script);
|
|
165
|
-
psbt.signTaprootInput(0, signer, [leafHash]);
|
|
166
|
-
return psbt;
|
|
167
|
-
}
|
|
168
|
-
exports.signRevealTransaction = signRevealTransaction;
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc2NyaXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTs7O0FBRUYsaUNBQWlDO0FBQ2pDLG1EQVU4QjtBQUM5QixnREFBZ0Q7QUFHaEQsTUFBTSxHQUFHLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUM7QUFDeEIsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFFckM7Ozs7OztHQU1HO0FBQ0gsU0FBUyxXQUFXLENBQUMsZUFBdUIsRUFBRSxTQUFpQjtJQUM3RCxNQUFNLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRTtRQUMxRCxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsMkJBQTJCLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsZUFBdUI7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBRS9FLE1BQU0sZ0JBQWdCLEdBQUc7UUFDdkIsTUFBTTtRQUNOLEdBQUcsQ0FBQyxXQUFXO1FBQ2YsR0FBRyxDQUFDLFFBQVE7UUFDWixHQUFHLENBQUMsS0FBSztRQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUMzQixDQUFDO1FBQ0QsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztRQUNqQyxHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsZUFB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SUFFN0MsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBbENELHNEQWtDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5GdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBpbnNjcmlwdGlvbnMuXG5cblNlZSBodHRwczovL2RvY3Mub3JkaW5hbHMuY29tL2luc2NyaXB0aW9ucy5odG1sXG4qL1xuXG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIHAydHJQYXltZW50cyBhcyBwYXltZW50cyxcbiAgZWNjIGFzIGVjY0xpYixcbiAgc2NyaXB0IGFzIGJzY3JpcHQsXG4gIFBheW1lbnQsXG4gIE5ldHdvcmssXG4gIGJpdGdvLFxuICBhZGRyZXNzLFxuICB0YXByb290LFxuICBFQ1BhaXIsXG59IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgUHJlcGFyZWRJbnNjcmlwdGlvblJldmVhbERhdGEgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmNvbnN0IE9QUyA9IGJzY3JpcHQuT1BTO1xuY29uc3QgTUFYX0xFTkdUSF9UQVBfREFUQV9QVVNIID0gNTIwO1xuXG4vKipcbiAqIFRoZSBtYXggc2l6ZSBvZiBhbiBpbmRpdmlkdWFsIE9QX1BVU0ggaW4gYSBUYXByb290IHNjcmlwdCBpcyA1MjAgYnl0ZXMuIFRoaXNcbiAqIGZ1bmN0aW9uIHNwbGl0cyBpbnNjcmlwdGlvbkRhdGEgaW50byBhbiBhcnJheSBidWZmZXIgb2YgNTIwIGJ5dGVzIGxlbmd0aC5cbiAqIGh0dHBzOi8vZG9jcy5vcmRpbmFscy5jb20vaW5zY3JpcHRpb25zLmh0bWxcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGFcbiAqIEBwYXJhbSBjaHVua1NpemVcbiAqL1xuZnVuY3Rpb24gc3BsaXRCdWZmZXIoaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIsIGNodW5rU2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IHB1c2hEYXRhQnVmZmVyczogQnVmZmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnNjcmlwdGlvbkRhdGEubGVuZ3RoOyBpICs9IGNodW5rU2l6ZSkge1xuICAgIHB1c2hEYXRhQnVmZmVycy5wdXNoKGluc2NyaXB0aW9uRGF0YS5zbGljZShpLCBpICsgY2h1bmtTaXplKSk7XG4gIH1cblxuICByZXR1cm4gcHVzaERhdGFCdWZmZXJzO1xufVxuXG4vKipcbiAqXG4gKiBAcmV0dXJucyBpbnNjcmlwdGlvbiBwYXltZW50IG9iamVjdFxuICogQHBhcmFtIHB1YmtleVxuICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBheW1lbnRGb3JJbnNjcmlwdGlvbihwdWJrZXk6IEJ1ZmZlciwgY29udGVudFR5cGU6IHN0cmluZywgaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIpOiBQYXltZW50IHtcbiAgY29uc3QgZGF0YVB1c2hCdWZmZXJzID0gc3BsaXRCdWZmZXIoaW5zY3JpcHRpb25EYXRhLCBNQVhfTEVOR1RIX1RBUF9EQVRBX1BVU0gpO1xuXG4gIGNvbnN0IHVuY29tcGlsZWRTY3JpcHQgPSBbXG4gICAgcHVia2V5LFxuICAgIE9QUy5PUF9DSEVDS1NJRyxcbiAgICBPUFMuT1BfRkFMU0UsXG4gICAgT1BTLk9QX0lGLFxuICAgIEJ1ZmZlci5mcm9tKCdvcmQnLCAnYXNjaWknKSxcbiAgICAxLCAvLyB0aGVzZSB0d28gbGluZXMgc2hvdWxkIGJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIE9QUy5PUF8xLFxuICAgIDEsIC8vIGJ1dCBgb3JkYCdzIGRlY29kZXIgaGFzIGEgYnVnIHNvIGl0IGhhcyB0byBiZSBsaWtlIHRoaXNcbiAgICBCdWZmZXIuZnJvbShjb250ZW50VHlwZSwgJ2FzY2lpJyksXG4gICAgT1BTLk9QXzAsXG4gICAgLi4uZGF0YVB1c2hCdWZmZXJzLFxuICAgIE9QUy5PUF9FTkRJRixcbiAgXTtcblxuICBjb25zdCBjb21waWxlZFNjcmlwdCA9IGJzY3JpcHQuY29tcGlsZSh1bmNvbXBpbGVkU2NyaXB0KTtcbiAgY29uc3QgcmVkZWVtOiBQYXltZW50ID0ge1xuICAgIG91dHB1dDogY29tcGlsZWRTY3JpcHQsXG4gICAgZGVwdGg6IDAsXG4gIH07XG5cbiAgcmV0dXJuIHBheW1lbnRzLnAydHIoeyByZWRlZW1zOiBbcmVkZWVtXSwgcmVkZWVtSW5kZXg6IDAgfSwgeyBlY2NMaWIgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHBheW1lbnRcbiAqIEBwYXJhbSBjb250cm9sQmxvY2tcbiAqIEBwYXJhbSBjb21taXRPdXRwdXRcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJuIHZpcnR1YWwgc2l6ZSBvZiBhIHRyYW5zYWN0aW9uIHdpdGggYSBzaW5nbGUgaW5zY3JpcHRpb24gcmV2ZWFsIGlucHV0IGFuZCBhIHNpbmdsZSBjb21taXRPdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0SW5zY3JpcHRpb25SZXZlYWxTaXplKFxuICBwYXltZW50OiBQYXltZW50LFxuICBjb250cm9sQmxvY2s6IEJ1ZmZlcixcbiAgY29tbWl0T3V0cHV0OiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IG51bWJlciB7XG4gIGNvbnN0IHBzYnQgPSBiaXRnby5jcmVhdGVQc2J0Rm9yTmV0d29yayh7IG5ldHdvcmsgfSk7XG4gIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IHRhcHJvb3QucGFyc2VDb250cm9sQmxvY2soZWNjTGliLCBjb250cm9sQmxvY2spO1xuICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBwYXJzZWRDb250cm9sQmxvY2ssIHBheW1lbnQucmVkZWVtPy5vdXRwdXQgYXMgQnVmZmVyKTtcblxuICBwc2J0LmFkZElucHV0KHtcbiAgICBoYXNoOiBCdWZmZXIuYWxsb2MoMzIpLFxuICAgIGluZGV4OiAwLFxuICAgIHdpdG5lc3NVdHhvOiB7IHNjcmlwdDogY29tbWl0T3V0cHV0LCB2YWx1ZTogQmlnSW50KDEwMF8wMDApIH0sXG4gICAgdGFwTGVhZlNjcmlwdDogW1xuICAgICAge1xuICAgICAgICBjb250cm9sQmxvY2ssXG4gICAgICAgIHNjcmlwdDogcGF5bWVudC5yZWRlZW0/Lm91dHB1dCBhcyBCdWZmZXIsXG4gICAgICAgIGxlYWZWZXJzaW9uOiB0YXByb290LklOSVRJQUxfVEFQU0NSSVBUX1ZFUlNJT04sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogY29tbWl0T3V0cHV0LCB2YWx1ZTogQmlnSW50KDEwXzAwMCkgfSk7XG5cbiAgcHNidC5zaWduVGFwcm9vdElucHV0KFxuICAgIDAsXG4gICAge1xuICAgICAgcHVibGljS2V5OiBCdWZmZXIuYWxsb2MoMzIpLFxuICAgICAgc2lnblNjaG5vcnIoaGFzaDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICAgICAgLy8gZHVtbXkgc2Nobm9yci1zaXplZCBzaWduYXR1cmVcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5hbGxvYyg2NCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgW2xlYWZIYXNoXVxuICApO1xuXG4gIHBzYnQuZmluYWxpemVUYXBJbnB1dFdpdGhTaW5nbGVMZWFmU2NyaXB0QW5kU2lnbmF0dXJlKDApO1xuICByZXR1cm4gcHNidC5leHRyYWN0VHJhbnNhY3Rpb24oLyogZGlzYWJsZUZlZUNoZWNrICovIHRydWUpLnZpcnR1YWxTaXplKCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHB1YmtleVxuICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhXG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHJldHVybnMgUHJlcGFyZWRJbnNjcmlwdGlvblJldmVhbERhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluc2NyaXB0aW9uUmV2ZWFsRGF0YShcbiAgcHVia2V5OiBCdWZmZXIsXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmcsXG4gIGluc2NyaXB0aW9uRGF0YTogQnVmZmVyLFxuICBuZXR3b3JrOiBOZXR3b3JrXG4pOiBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSB7XG4gIGNvbnN0IHBheW1lbnQgPSBjcmVhdGVQYXltZW50Rm9ySW5zY3JpcHRpb24ocHVia2V5LCBjb250ZW50VHlwZSwgaW5zY3JpcHRpb25EYXRhKTtcblxuICBjb25zdCB7IG91dHB1dDogY29tbWl0T3V0cHV0LCBjb250cm9sQmxvY2sgfSA9IHBheW1lbnQ7XG4gIGFzc2VydChjb21taXRPdXRwdXQpO1xuICBhc3NlcnQoY29udHJvbEJsb2NrKTtcbiAgYXNzZXJ0KHBheW1lbnQucmVkZWVtPy5vdXRwdXQpO1xuICBjb25zdCBjb21taXRBZGRyZXNzID0gYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGNvbW1pdE91dHB1dCwgbmV0d29yayk7XG5cbiAgY29uc3QgdGFwTGVhZlNjcmlwdDogdXR4b2xpYi5iaXRnby5UYXBMZWFmU2NyaXB0W10gPSBbXG4gICAge1xuICAgICAgY29udHJvbEJsb2NrLFxuICAgICAgc2NyaXB0OiBwYXltZW50LnJlZGVlbT8ub3V0cHV0LFxuICAgICAgbGVhZlZlcnNpb246IHRhcHJvb3QuSU5JVElBTF9UQVBTQ1JJUFRfVkVSU0lPTixcbiAgICB9LFxuICBdO1xuICBjb25zdCByZXZlYWxUcmFuc2FjdGlvblZTaXplID0gZ2V0SW5zY3JpcHRpb25SZXZlYWxTaXplKHBheW1lbnQsIGNvbnRyb2xCbG9jaywgY29tbWl0T3V0cHV0LCBuZXR3b3JrKTtcblxuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IGNvbW1pdEFkZHJlc3MsXG4gICAgcmV2ZWFsVHJhbnNhY3Rpb25WU2l6ZSxcbiAgICB0YXBMZWFmU2NyaXB0OiB0YXBMZWFmU2NyaXB0WzBdLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSBwdWJrZXlcbiAqIEBwYXJhbSBjb250ZW50VHlwZVxuICogQHBhcmFtIGluc2NyaXB0aW9uRGF0YVxuICogQHJldHVybnMgaW5zY3JpcHRpb24gYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3V0cHV0U2NyaXB0Rm9ySW5zY3JpcHRpb24ocHVia2V5OiBCdWZmZXIsIGNvbnRlbnRUeXBlOiBzdHJpbmcsIGluc2NyaXB0aW9uRGF0YTogQnVmZmVyKTogQnVmZmVyIHtcbiAgY29uc3QgcGF5bWVudCA9IGNyZWF0ZVBheW1lbnRGb3JJbnNjcmlwdGlvbihwdWJrZXksIGNvbnRlbnRUeXBlLCBpbnNjcmlwdGlvbkRhdGEpO1xuXG4gIGFzc2VydChwYXltZW50Lm91dHB1dCwgJ0ZhaWxlZCB0byBjcmVhdGUgaW5zY3JpcHRpb24gb3V0cHV0IHNjcmlwdCcpO1xuICByZXR1cm4gcGF5bWVudC5vdXRwdXQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5XG4gKiBAcGFyYW0gdGFwTGVhZlNjcmlwdFxuICogQHBhcmFtIGNvbW1pdEFkZHJlc3NcbiAqIEBwYXJhbSByZWNpcGllbnRBZGRyZXNzXG4gKiBAcGFyYW0gdW5zaWduZWRDb21taXRUeFxuICogQHBhcmFtIG5ldHdvcmtcbiAqXG4gKiBAcmV0dXJuIGEgZnVsbHkgc2lnbmVkIHJldmVhbCB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblJldmVhbFRyYW5zYWN0aW9uKFxuICBwcml2YXRlS2V5OiBCdWZmZXIsXG4gIHRhcExlYWZTY3JpcHQ6IHV0eG9saWIuYml0Z28uVGFwTGVhZlNjcmlwdCxcbiAgY29tbWl0QWRkcmVzczogc3RyaW5nLFxuICByZWNpcGllbnRBZGRyZXNzOiBzdHJpbmcsXG4gIHVuc2lnbmVkQ29tbWl0VHg6IEJ1ZmZlcixcbiAgbmV0d29yazogTmV0d29ya1xuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGNvbnN0IHVuc2VyQ29tbWl0VHhuID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIodW5zaWduZWRDb21taXRUeCwgbmV0d29yayk7XG4gIGNvbnN0IGhhc2ggPSB1bnNlckNvbW1pdFR4bi5nZXRIYXNoKCk7XG4gIGNvbnN0IGNvbW1pdE91dHB1dCA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChjb21taXRBZGRyZXNzLCBuZXR3b3JrKTtcbiAgY29uc3Qgdm91dCA9IHVuc2VyQ29tbWl0VHhuLm91dHMuZmluZEluZGV4KChvdXQpID0+IG91dC5zY3JpcHQuZXF1YWxzKGNvbW1pdE91dHB1dCkpO1xuXG4gIGlmICh2b3V0ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21taXQgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGNvbnN0IHBzYnQgPSBiaXRnby5jcmVhdGVQc2J0Rm9yTmV0d29yayh7IG5ldHdvcmsgfSk7XG4gIHBzYnQuYWRkSW5wdXQoe1xuICAgIGhhc2gsXG4gICAgaW5kZXg6IHZvdXQsXG4gICAgd2l0bmVzc1V0eG86IHsgc2NyaXB0OiBjb21taXRPdXRwdXQsIHZhbHVlOiBCaWdJbnQodW5zZXJDb21taXRUeG4ub3V0c1t2b3V0XS52YWx1ZSkgfSxcbiAgICB0YXBMZWFmU2NyaXB0OiBbdGFwTGVhZlNjcmlwdF0sXG4gIH0pO1xuXG4gIGNvbnN0IHJlY2lwaWVudE91dHB1dCA9IGFkZHJlc3MudG9PdXRwdXRTY3JpcHQocmVjaXBpZW50QWRkcmVzcywgbmV0d29yayk7XG4gIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiByZWNpcGllbnRPdXRwdXQsIHZhbHVlOiBCaWdJbnQoMTBfMDAwKSB9KTtcblxuICBjb25zdCBzaWduZXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG4gIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IHRhcHJvb3QucGFyc2VDb250cm9sQmxvY2soZWNjTGliLCB0YXBMZWFmU2NyaXB0LmNvbnRyb2xCbG9jayk7XG4gIGNvbnN0IGxlYWZIYXNoID0gdGFwcm9vdC5nZXRUYXBsZWFmSGFzaChlY2NMaWIsIHBhcnNlZENvbnRyb2xCbG9jaywgdGFwTGVhZlNjcmlwdC5zY3JpcHQgYXMgQnVmZmVyKTtcbiAgcHNidC5zaWduVGFwcm9vdElucHV0KDAsIHNpZ25lciwgW2xlYWZIYXNoXSk7XG5cbiAgcmV0dXJuIHBzYnQ7XG59XG4iXX0=
|
package/dist/src/psbt.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../src/psbt.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAW,MAAM,sBAAsB,CAAC;AAI/D,OAAO,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAA0B,YAAY,EAA6B,MAAM,gBAAgB,CAAC;AAGjG,aAAK,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAEjD,oBAAY,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC/B,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,oBAAY,6BAA6B,GAAG;IAC1C,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;CACrD,CAAC;AAEF,kBAAkB;AAClB,oBAAY,kBAAkB,GAAG,6BAA6B,CAAC;AAE/D,oBAAY,iCAAiC,GAAG;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,6BAA6B,EACtC,YAAY,EAAE,YAAY,GACzB,KAAK,CAAC,QAAQ,CA+ChB;AAWD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,6BAA6B,EACtC,WAAW,EAAE,iCAAiC,EAC9C,EAAE,cAAsB,EAAE;;CAAK,GAC9B;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAwC/D;AAED,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAgChD,qBAAa,aAAc,SAAQ,KAAK;;CAIvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gDAAgD,CAC9D,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,6BAA6B,EACtC,WAAW,EAAE,iCAAiC,EAC9C,EACE,qBAA0B,EAC1B,cAAqB,GACtB,GAAE;IACD,qBAAqB,CAAC,EAAE,aAAa,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,GACL,KAAK,CAAC,QAAQ,CAsBhB"}
|
package/dist/src/psbt.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPsbtForSingleInscriptionPassingTransaction = exports.ErrorNoLayout = exports.MAX_UNSPENTS_FOR_OUTPUT_LAYOUT = exports.findOutputLayoutForWalletUnspents = exports.createPsbtFromOutputLayout = exports.DefaultInscriptionConstraints = void 0;
|
|
4
|
-
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
5
|
-
const unspents_1 = require("@bitgo-beta/unspents");
|
|
6
|
-
const OrdOutput_1 = require("./OrdOutput");
|
|
7
|
-
const SatPoint_1 = require("./SatPoint");
|
|
8
|
-
const SatRange_1 = require("./SatRange");
|
|
9
|
-
const OutputLayout_1 = require("./OutputLayout");
|
|
10
|
-
const combinations_1 = require("./combinations");
|
|
11
|
-
exports.DefaultInscriptionConstraints = {
|
|
12
|
-
minChangeOutput: BigInt(10000),
|
|
13
|
-
minInscriptionOutput: BigInt(10000),
|
|
14
|
-
maxInscriptionOutput: BigInt(20000),
|
|
15
|
-
};
|
|
16
|
-
function createPsbtFromOutputLayout(network, inputBuilder, unspents, outputs, outputLayout) {
|
|
17
|
-
const psbt = utxo_lib_1.bitgo.createPsbtForNetwork({ network: network });
|
|
18
|
-
if (unspents.length === 0) {
|
|
19
|
-
throw new Error(`must provide at least one unspent`);
|
|
20
|
-
}
|
|
21
|
-
unspents.forEach((u) => utxo_lib_1.bitgo.addWalletUnspentToPsbt(psbt, u, inputBuilder.walletKeys, inputBuilder.signer, inputBuilder.cosigner, psbt.network));
|
|
22
|
-
const ordInput = OrdOutput_1.OrdOutput.joinAll(unspents.map((u) => new OrdOutput_1.OrdOutput(u.value)));
|
|
23
|
-
const ordOutputs = OutputLayout_1.getOrdOutputsForLayout(ordInput, outputLayout);
|
|
24
|
-
OutputLayout_1.toArray(ordOutputs).forEach((ordOutput) => {
|
|
25
|
-
if (ordOutput === null) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
switch (ordOutput) {
|
|
29
|
-
// skip padding outputs and fee output (virtual)
|
|
30
|
-
case null:
|
|
31
|
-
case ordOutputs.feeOutput:
|
|
32
|
-
return;
|
|
33
|
-
// add padding outputs
|
|
34
|
-
case ordOutputs.firstChangeOutput:
|
|
35
|
-
case ordOutputs.secondChangeOutput:
|
|
36
|
-
const { chain, index } = ordOutput === ordOutputs.firstChangeOutput ? outputs.changeOutputs[0] : outputs.changeOutputs[1];
|
|
37
|
-
utxo_lib_1.bitgo.addWalletOutputToPsbt(psbt, inputBuilder.walletKeys, chain, index, ordOutput.value);
|
|
38
|
-
break;
|
|
39
|
-
// add actual inscription output
|
|
40
|
-
case ordOutputs.inscriptionOutput:
|
|
41
|
-
let { inscriptionRecipient } = outputs;
|
|
42
|
-
if (typeof inscriptionRecipient === 'string') {
|
|
43
|
-
inscriptionRecipient = utxo_lib_1.address.toOutputScript(inscriptionRecipient, network);
|
|
44
|
-
}
|
|
45
|
-
psbt.addOutput({
|
|
46
|
-
script: inscriptionRecipient,
|
|
47
|
-
value: ordOutput.value,
|
|
48
|
-
});
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
return psbt;
|
|
53
|
-
}
|
|
54
|
-
exports.createPsbtFromOutputLayout = createPsbtFromOutputLayout;
|
|
55
|
-
function toSatRange(p) {
|
|
56
|
-
const { offset } = SatPoint_1.parseSatPoint(p);
|
|
57
|
-
return new SatRange_1.SatRange(offset, offset);
|
|
58
|
-
}
|
|
59
|
-
function getFee(vsize, rateSatPerKB) {
|
|
60
|
-
return BigInt(Math.ceil((vsize * rateSatPerKB) / 1000));
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* @param inputs - inscription input must come first
|
|
64
|
-
* @param satPoint - location of the inscription
|
|
65
|
-
* @param outputs
|
|
66
|
-
* @param constraints
|
|
67
|
-
* @param minimizeInputs
|
|
68
|
-
*/
|
|
69
|
-
function findOutputLayoutForWalletUnspents(inputs, satPoint, outputs, constraints, { minimizeInputs = false } = {}) {
|
|
70
|
-
if (minimizeInputs) {
|
|
71
|
-
return findSmallestOutputLayoutForWalletUnspents(inputs, satPoint, outputs, constraints);
|
|
72
|
-
}
|
|
73
|
-
if (inputs.length === 0) {
|
|
74
|
-
throw new Error(`must provide at least one input`);
|
|
75
|
-
}
|
|
76
|
-
if (outputs.changeOutputs[0].chain !== outputs.changeOutputs[1].chain) {
|
|
77
|
-
// otherwise our fee calc is too complicated
|
|
78
|
-
throw new Error(`wallet outputs must be on same chain`);
|
|
79
|
-
}
|
|
80
|
-
const { minChangeOutput = exports.DefaultInscriptionConstraints.minChangeOutput, minInscriptionOutput = exports.DefaultInscriptionConstraints.minInscriptionOutput, maxInscriptionOutput = exports.DefaultInscriptionConstraints.maxInscriptionOutput, } = constraints;
|
|
81
|
-
// Join all the inputs into a single inscriptionOutput.
|
|
82
|
-
// For the purposes of finding a layout there is no difference.
|
|
83
|
-
const inscriptionOutput = OrdOutput_1.OrdOutput.joinAll(inputs.map((i) => new OrdOutput_1.OrdOutput(i.value, i === inputs[0] ? [toSatRange(satPoint)] : [])));
|
|
84
|
-
const layout = OutputLayout_1.findOutputLayout(inscriptionOutput, {
|
|
85
|
-
minChangeOutput,
|
|
86
|
-
minInscriptionOutput,
|
|
87
|
-
maxInscriptionOutput,
|
|
88
|
-
feeFixed: getFee(unspents_1.VirtualSizes.txSegOverheadVSize + unspents_1.Dimensions.fromUnspents(inputs).getInputsVSize(), constraints.feeRateSatKB),
|
|
89
|
-
feePerOutput: getFee(unspents_1.Dimensions.fromOutputOnChain(outputs.changeOutputs[0].chain).getOutputsVSize(), constraints.feeRateSatKB),
|
|
90
|
-
});
|
|
91
|
-
return layout ? { inputs, layout } : undefined;
|
|
92
|
-
}
|
|
93
|
-
exports.findOutputLayoutForWalletUnspents = findOutputLayoutForWalletUnspents;
|
|
94
|
-
exports.MAX_UNSPENTS_FOR_OUTPUT_LAYOUT = 5;
|
|
95
|
-
/**
|
|
96
|
-
* @param inputs - inscription input must come first
|
|
97
|
-
* @param satPoint - location of the inscription
|
|
98
|
-
* @param outputs
|
|
99
|
-
* @param constraints
|
|
100
|
-
*/
|
|
101
|
-
function findSmallestOutputLayoutForWalletUnspents(inputs, satPoint, outputs, constraints) {
|
|
102
|
-
if (exports.MAX_UNSPENTS_FOR_OUTPUT_LAYOUT < inputs.length) {
|
|
103
|
-
throw new Error(`input array is too large`);
|
|
104
|
-
}
|
|
105
|
-
// create powerset of all supplementary inputs and find the cheapest result
|
|
106
|
-
const inputsArr = [inputs, ...combinations_1.powerset(inputs.slice(1)).map((s) => [inputs[0], ...s])];
|
|
107
|
-
return inputsArr
|
|
108
|
-
.map((inputs) => findOutputLayoutForWalletUnspents(inputs, satPoint, outputs, constraints))
|
|
109
|
-
.reduce((best, next) => {
|
|
110
|
-
if (best === undefined) {
|
|
111
|
-
return next;
|
|
112
|
-
}
|
|
113
|
-
if (next === undefined) {
|
|
114
|
-
return best;
|
|
115
|
-
}
|
|
116
|
-
return best.layout.feeOutput < next.layout.feeOutput ? best : next;
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
class ErrorNoLayout extends Error {
|
|
120
|
-
constructor() {
|
|
121
|
-
super('Could not find output layout for inscription passing transaction');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.ErrorNoLayout = ErrorNoLayout;
|
|
125
|
-
/**
|
|
126
|
-
* @param network
|
|
127
|
-
* @param inputBuilder
|
|
128
|
-
* @param unspent
|
|
129
|
-
* @param satPoint
|
|
130
|
-
* @param outputs
|
|
131
|
-
* @param constraints
|
|
132
|
-
* @param supplementaryUnspents - additional inputs to cover fee.
|
|
133
|
-
* @param [minimizeInputs=true] - try to find input combination with minimal fees. Limits supplementaryUnspents to 4.
|
|
134
|
-
*/
|
|
135
|
-
function createPsbtForSingleInscriptionPassingTransaction(network, inputBuilder, unspent, satPoint, outputs, constraints, { supplementaryUnspents = [], minimizeInputs = true, } = {}) {
|
|
136
|
-
// support for legacy call style
|
|
137
|
-
if (Array.isArray(unspent)) {
|
|
138
|
-
if (unspent.length !== 1) {
|
|
139
|
-
throw new Error(`can only pass single unspent`);
|
|
140
|
-
}
|
|
141
|
-
unspent = unspent[0];
|
|
142
|
-
}
|
|
143
|
-
const result = findOutputLayoutForWalletUnspents([unspent, ...supplementaryUnspents], satPoint, outputs, constraints, { minimizeInputs });
|
|
144
|
-
if (!result) {
|
|
145
|
-
throw new ErrorNoLayout();
|
|
146
|
-
}
|
|
147
|
-
return createPsbtFromOutputLayout(network, inputBuilder, result.inputs, outputs, result.layout);
|
|
148
|
-
}
|
|
149
|
-
exports.createPsbtForSingleInscriptionPassingTransaction = createPsbtForSingleInscriptionPassingTransaction;
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUErRDtBQUMvRCxtREFBZ0U7QUFFaEUsMkNBQXdDO0FBQ3hDLHlDQUFxRDtBQUNyRCx5Q0FBc0M7QUFDdEMsaURBQWlHO0FBQ2pHLGlEQUEwQztBQWlDN0IsUUFBQSw2QkFBNkIsR0FBRztJQUMzQyxlQUFlLEVBQUUsTUFBTSxDQUFDLEtBQU0sQ0FBQztJQUMvQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsS0FBTSxDQUFDO0lBQ3BDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxLQUFNLENBQUM7Q0FDckMsQ0FBQztBQUVGLFNBQWdCLDBCQUEwQixDQUN4QyxPQUFnQixFQUNoQixZQUFnQyxFQUNoQyxRQUF5QixFQUN6QixPQUFzQyxFQUN0QyxZQUEwQjtJQUUxQixNQUFNLElBQUksR0FBRyxnQkFBSyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7S0FDdEQ7SUFDRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckIsZ0JBQUssQ0FBQyxzQkFBc0IsQ0FDMUIsSUFBSSxFQUNKLENBQUMsRUFDRCxZQUFZLENBQUMsVUFBVSxFQUN2QixZQUFZLENBQUMsTUFBTSxFQUNuQixZQUFZLENBQUMsUUFBUSxFQUNyQixJQUFJLENBQUMsT0FBTyxDQUNiLENBQ0YsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLHFCQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUkscUJBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENB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a0IsRUFDbEIsT0FBc0MsRUFDdEMsV0FBOEMsRUFDOUMsRUFDRSxxQkFBcUIsR0FBRyxFQUFFLEVBQzFCLGNBQWMsR0FBRyxJQUFJLE1BSW5CLEVBQUU7SUFFTixnQ0FBZ0M7SUFDaEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0QjtJQUVELE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUM5QyxDQUFDLE9BQU8sRUFBRSxHQUFHLHFCQUFxQixDQUFDLEVBQ25DLFFBQVEsRUFDUixPQUFPLEVBQ1AsV0FBVyxFQUNYLEVBQUUsY0FBYyxFQUFFLENBQ25CLENBQUM7SUFFRixJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQzNCO0lBRUQsT0FBTywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBcENELDRHQW9DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmssIGJpdGdvLCBhZGRyZXNzIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGltZW5zaW9ucywgVmlydHVhbFNpemVzIH0gZnJvbSAnQGJpdGdvLWJldGEvdW5zcGVudHMnO1xuXG5pbXBvcnQgeyBPcmRPdXRwdXQgfSBmcm9tICcuL09yZE91dHB1dCc7XG5pbXBvcnQgeyBwYXJzZVNhdFBvaW50LCBTYXRQb2ludCB9IGZyb20gJy4vU2F0UG9pbnQnO1xuaW1wb3J0IHsgU2F0UmFuZ2UgfSBmcm9tICcuL1NhdFJhbmdlJztcbmltcG9ydCB7IGdldE9yZE91dHB1dHNGb3JMYXlvdXQsIE91dHB1dExheW91dCwgdG9BcnJheSwgZmluZE91dHB1dExheW91dCB9IGZyb20gJy4vT3V0cHV0TGF5b3V0JztcbmltcG9ydCB7IHBvd2Vyc2V0IH0gZnJvbSAnLi9jb21iaW5hdGlvbnMnO1xuXG50eXBlIFdhbGxldFVuc3BlbnQgPSBiaXRnby5XYWxsZXRVbnNwZW50PGJpZ2ludD47XG5cbmV4cG9ydCB0eXBlIFdhbGxldE91dHB1dFBhdGggPSB7XG4gIGNoYWluOiBiaXRnby5DaGFpbkNvZGU7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBXYWxsZXRJbnB1dEJ1aWxkZXIgPSB7XG4gIHdhbGxldEtleXM6IGJpdGdvLlJvb3RXYWxsZXRLZXlzO1xuICBzaWduZXI6IGJpdGdvLktleU5hbWU7XG4gIGNvc2lnbmVyOiBiaXRnby5LZXlOYW1lO1xufTtcblxuLyoqXG4gKiBEZXNjcmliZXMgYWxsIG91dHB1dHMgb2YgYW4gaW5zY3JpcHRpb24gdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgSW5zY3JpcHRpb25UcmFuc2FjdGlvbk91dHB1dHMgPSB7XG4gIGluc2NyaXB0aW9uUmVjaXBpZW50OiBzdHJpbmcgfCBCdWZmZXI7XG4gIGNoYW5nZU91dHB1dHM6IFtXYWxsZXRPdXRwdXRQYXRoLCBXYWxsZXRPdXRwdXRQYXRoXTtcbn07XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IHR5cGUgSW5zY3JpcHRpb25PdXRwdXRzID0gSW5zY3JpcHRpb25UcmFuc2FjdGlvbk91dHB1dHM7XG5cbmV4cG9ydCB0eXBlIEluc2NyaXB0aW9uVHJhbnNhY3Rpb25Db25zdHJhaW50cyA9IHtcbiAgZmVlUmF0ZVNhdEtCOiBudW1iZXI7XG4gIG1pbkNoYW5nZU91dHB1dD86IGJpZ2ludDtcbiAgbWluSW5zY3JpcHRpb25PdXRwdXQ/OiBiaWdpbnQ7XG4gIG1heEluc2NyaXB0aW9uT3V0cHV0PzogYmlnaW50O1xufTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRJbnNjcmlwdGlvbkNvbnN0cmFpbnRzID0ge1xuICBtaW5DaGFuZ2VPdXRwdXQ6IEJpZ0ludCgxMF8wMDApLFxuICBtaW5JbnNjcmlwdGlvbk91dHB1dDogQmlnSW50KDEwXzAwMCksXG4gIG1heEluc2NyaXB0aW9uT3V0cHV0OiBCaWdJbnQoMjBfMDAwKSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2J0RnJvbU91dHB1dExheW91dChcbiAgbmV0d29yazogTmV0d29yayxcbiAgaW5wdXRCdWlsZGVyOiBXYWxsZXRJbnB1dEJ1aWxkZXIsXG4gIHVuc3BlbnRzOiBXYWxsZXRVbnNwZW50W10sXG4gIG91dHB1dHM6IEluc2NyaXB0aW9uVHJhbnNhY3Rpb25PdXRwdXRzLFxuICBvdXRwdXRMYXlvdXQ6IE91dHB1dExheW91dFxuKTogYml0Z28uVXR4b1BzYnQge1xuICBjb25zdCBwc2J0ID0gYml0Z28uY3JlYXRlUHNidEZvck5ldHdvcmsoeyBuZXR3b3JrOiBuZXR3b3JrIH0pO1xuICBpZiAodW5zcGVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtdXN0IHByb3ZpZGUgYXQgbGVhc3Qgb25lIHVuc3BlbnRgKTtcbiAgfVxuICB1bnNwZW50cy5mb3JFYWNoKCh1KSA9PlxuICAgIGJpdGdvLmFkZFdhbGxldFVuc3BlbnRUb1BzYnQoXG4gICAgICBwc2J0LFxuICAgICAgdSxcbiAgICAgIGlucHV0QnVpbGRlci53YWxsZXRLZXlzLFxuICAgICAgaW5wdXRCdWlsZGVyLnNpZ25lcixcbiAgICAgIGlucHV0QnVpbGRlci5jb3NpZ25lcixcbiAgICAgIHBzYnQubmV0d29ya1xuICAgIClcbiAgKTtcbiAgY29uc3Qgb3JkSW5wdXQgPSBPcmRPdXRwdXQuam9pbkFsbCh1bnNwZW50cy5tYXAoKHUpID0+IG5ldyBPcmRPdXRwdXQodS52YWx1ZSkpKTtcbiAgY29uc3Qgb3JkT3V0cHV0cyA9IGdldE9yZE91dHB1dHNGb3JMYXlvdXQob3JkSW5wdXQsIG91dHB1dExheW91dCk7XG4gIHRvQXJyYXkob3JkT3V0cHV0cykuZm9yRWFjaCgob3JkT3V0cHV0KSA9PiB7XG4gICAgaWYgKG9yZE91dHB1dCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKG9yZE91dHB1dCkge1xuICAgICAgLy8gc2tpcCBwYWRkaW5nIG91dHB1dHMgYW5kIGZlZSBvdXRwdXQgKHZpcnR1YWwpXG4gICAgICBjYXNlIG51bGw6XG4gICAgICBjYXNlIG9yZE91dHB1dHMuZmVlT3V0cHV0OlxuICAgICAgICByZXR1cm47XG4gICAgICAvLyBhZGQgcGFkZGluZyBvdXRwdXRzXG4gICAgICBjYXNlIG9yZE91dHB1dHMuZmlyc3RDaGFuZ2VPdXRwdXQ6XG4gICAgICBjYXNlIG9yZE91dHB1dHMuc2Vjb25kQ2hhbmdlT3V0cHV0OlxuICAgICAgICBjb25zdCB7IGNoYWluLCBpbmRleCB9ID1cbiAgICAgICAgICBvcmRPdXRwdXQgPT09IG9yZE91dHB1dHMuZmlyc3RDaGFuZ2VPdXRwdXQgPyBvdXRwdXRzLmNoYW5nZU91dHB1dHNbMF0gOiBvdXRwdXRzLmNoYW5nZU91dHB1dHNbMV07XG4gICAgICAgIGJpdGdvLmFkZFdhbGxldE91dHB1dFRvUHNidChwc2J0LCBpbnB1dEJ1aWxkZXIud2FsbGV0S2V5cywgY2hhaW4sIGluZGV4LCBvcmRPdXRwdXQudmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIGFkZCBhY3R1YWwgaW5zY3JpcHRpb24gb3V0cHV0XG4gICAgICBjYXNlIG9yZE91dHB1dHMuaW5zY3JpcHRpb25PdXRwdXQ6XG4gICAgICAgIGxldCB7IGluc2NyaXB0aW9uUmVjaXBpZW50IH0gPSBvdXRwdXRzO1xuICAgICAgICBpZiAodHlwZW9mIGluc2NyaXB0aW9uUmVjaXBpZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGluc2NyaXB0aW9uUmVjaXBpZW50ID0gYWRkcmVzcy50b091dHB1dFNjcmlwdChpbnNjcmlwdGlvblJlY2lwaWVudCwgbmV0d29yayk7XG4gICAgICAgIH1cbiAgICAgICAgcHNidC5hZGRPdXRwdXQoe1xuICAgICAgICAgIHNjcmlwdDogaW5zY3JpcHRpb25SZWNpcGllbnQsXG4gICAgICAgICAgdmFsdWU6IG9yZE91dHB1dC52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwc2J0O1xufVxuXG5mdW5jdGlvbiB0b1NhdFJhbmdlKHA6IFNhdFBvaW50KSB7XG4gIGNvbnN0IHsgb2Zmc2V0IH0gPSBwYXJzZVNhdFBvaW50KHApO1xuICByZXR1cm4gbmV3IFNhdFJhbmdlKG9mZnNldCwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gZ2V0RmVlKHZzaXplOiBudW1iZXIsIHJhdGVTYXRQZXJLQjogbnVtYmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludChNYXRoLmNlaWwoKHZzaXplICogcmF0ZVNhdFBlcktCKSAvIDEwMDApKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gaW5wdXRzIC0gaW5zY3JpcHRpb24gaW5wdXQgbXVzdCBjb21lIGZpcnN0XG4gKiBAcGFyYW0gc2F0UG9pbnQgLSBsb2NhdGlvbiBvZiB0aGUgaW5zY3JpcHRpb25cbiAqIEBwYXJhbSBvdXRwdXRzXG4gKiBAcGFyYW0gY29uc3RyYWludHNcbiAqIEBwYXJhbSBtaW5pbWl6ZUlucHV0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE91dHB1dExheW91dEZvcldhbGxldFVuc3BlbnRzKFxuICBpbnB1dHM6IFdhbGxldFVuc3BlbnRbXSxcbiAgc2F0UG9pbnQ6IFNhdFBvaW50LFxuICBvdXRwdXRzOiBJbnNjcmlwdGlvblRyYW5zYWN0aW9uT3V0cHV0cyxcbiAgY29uc3RyYWludHM6IEluc2NyaXB0aW9uVHJhbnNhY3Rpb25Db25zdHJhaW50cyxcbiAgeyBtaW5pbWl6ZUlucHV0cyA9IGZhbHNlIH0gPSB7fVxuKTogeyBpbnB1dHM6IFdhbGxldFVuc3BlbnRbXTsgbGF5b3V0OiBPdXRwdXRMYXlvdXQgfSB8IHVuZGVmaW5lZCB7XG4gIGlmIChtaW5pbWl6ZUlucHV0cykge1xuICAgIHJldHVybiBmaW5kU21hbGxlc3RPdXRwdXRMYXlvdXRGb3JXYWxsZXRVbnNwZW50cyhpbnB1dHMsIHNhdFBvaW50LCBvdXRwdXRzLCBjb25zdHJhaW50cyk7XG4gIH1cblxuICBpZiAoaW5wdXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGF0IGxlYXN0IG9uZSBpbnB1dGApO1xuICB9XG5cbiAgaWYgKG91dHB1dHMuY2hhbmdlT3V0cHV0c1swXS5jaGFpbiAhPT0gb3V0cHV0cy5jaGFuZ2VPdXRwdXRzWzFdLmNoYWluKSB7XG4gICAgLy8gb3RoZXJ3aXNlIG91ciBmZWUgY2FsYyBpcyB0b28gY29tcGxpY2F0ZWRcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdhbGxldCBvdXRwdXRzIG11c3QgYmUgb24gc2FtZSBjaGFpbmApO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG1pbkNoYW5nZU91dHB1dCA9IERlZmF1bHRJbnNjcmlwdGlvbkNvbnN0cmFpbnRzLm1pbkNoYW5nZU91dHB1dCxcbiAgICBtaW5JbnNjcmlwdGlvbk91dHB1dCA9IERlZmF1bHRJbnNjcmlwdGlvbkNvbnN0cmFpbnRzLm1pbkluc2NyaXB0aW9uT3V0cHV0LFxuICAgIG1heEluc2NyaXB0aW9uT3V0cHV0ID0gRGVmYXVsdEluc2NyaXB0aW9uQ29uc3RyYWludHMubWF4SW5zY3JpcHRpb25PdXRwdXQsXG4gIH0gPSBjb25zdHJhaW50cztcblxuICAvLyBKb2luIGFsbCB0aGUgaW5wdXRzIGludG8gYSBzaW5nbGUgaW5zY3JpcHRpb25PdXRwdXQuXG4gIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGxheW91dCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlLlxuICBjb25zdCBpbnNjcmlwdGlvbk91dHB1dCA9IE9yZE91dHB1dC5qb2luQWxsKFxuICAgIGlucHV0cy5tYXAoKGkpID0+IG5ldyBPcmRPdXRwdXQoaS52YWx1ZSwgaSA9PT0gaW5wdXRzWzBdID8gW3RvU2F0UmFuZ2Uoc2F0UG9pbnQpXSA6IFtdKSlcbiAgKTtcbiAgY29uc3QgbGF5b3V0ID0gZmluZE91dHB1dExheW91dChpbnNjcmlwdGlvbk91dHB1dCwge1xuICAgIG1pbkNoYW5nZU91dHB1dCxcbiAgICBtaW5JbnNjcmlwdGlvbk91dHB1dCxcbiAgICBtYXhJbnNjcmlwdGlvbk91dHB1dCxcbiAgICBmZWVGaXhlZDogZ2V0RmVlKFxuICAgICAgVmlydHVhbFNpemVzLnR4U2VnT3ZlcmhlYWRWU2l6ZSArIERpbWVuc2lvbnMuZnJvbVVuc3BlbnRzKGlucHV0cykuZ2V0SW5wdXRzVlNpemUoKSxcbiAgICAgIGNvbnN0cmFpbnRzLmZlZVJhdGVTYXRLQlxuICAgICksXG4gICAgZmVlUGVyT3V0cHV0OiBnZXRGZWUoXG4gICAgICBEaW1lbnNpb25zLmZyb21PdXRwdXRPbkNoYWluKG91dHB1dHMuY2hhbmdlT3V0cHV0c1swXS5jaGFpbikuZ2V0T3V0cHV0c1ZTaXplKCksXG4gICAgICBjb25zdHJhaW50cy5mZWVSYXRlU2F0S0JcbiAgICApLFxuICB9KTtcblxuICByZXR1cm4gbGF5b3V0ID8geyBpbnB1dHMsIGxheW91dCB9IDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgTUFYX1VOU1BFTlRTX0ZPUl9PVVRQVVRfTEFZT1VUID0gNTtcblxuLyoqXG4gKiBAcGFyYW0gaW5wdXRzIC0gaW5zY3JpcHRpb24gaW5wdXQgbXVzdCBjb21lIGZpcnN0XG4gKiBAcGFyYW0gc2F0UG9pbnQgLSBsb2NhdGlvbiBvZiB0aGUgaW5zY3JpcHRpb25cbiAqIEBwYXJhbSBvdXRwdXRzXG4gKiBAcGFyYW0gY29uc3RyYWludHNcbiAqL1xuZnVuY3Rpb24gZmluZFNtYWxsZXN0T3V0cHV0TGF5b3V0Rm9yV2FsbGV0VW5zcGVudHMoXG4gIGlucHV0czogV2FsbGV0VW5zcGVudFtdLFxuICBzYXRQb2ludDogU2F0UG9pbnQsXG4gIG91dHB1dHM6IEluc2NyaXB0aW9uVHJhbnNhY3Rpb25PdXRwdXRzLFxuICBjb25zdHJhaW50czogSW5zY3JpcHRpb25UcmFuc2FjdGlvbkNvbnN0cmFpbnRzXG4pOiB7IGlucHV0czogV2FsbGV0VW5zcGVudFtdOyBsYXlvdXQ6IE91dHB1dExheW91dCB9IHwgdW5kZWZpbmVkIHtcbiAgaWYgKE1BWF9VTlNQRU5UU19GT1JfT1VUUFVUX0xBWU9VVCA8IGlucHV0cy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGlucHV0IGFycmF5IGlzIHRvbyBsYXJnZWApO1xuICB9XG4gIC8vIGNyZWF0ZSBwb3dlcnNldCBvZiBhbGwgc3VwcGxlbWVudGFyeSBpbnB1dHMgYW5kIGZpbmQgdGhlIGNoZWFwZXN0IHJlc3VsdFxuICBjb25zdCBpbnB1dHNBcnIgPSBbaW5wdXRzLCAuLi5wb3dlcnNldChpbnB1dHMuc2xpY2UoMSkpLm1hcCgocykgPT4gW2lucHV0c1swXSwgLi4uc10pXTtcbiAgcmV0dXJuIGlucHV0c0FyclxuICAgIC5tYXAoKGlucHV0cykgPT4gZmluZE91dHB1dExheW91dEZvcldhbGxldFVuc3BlbnRzKGlucHV0cywgc2F0UG9pbnQsIG91dHB1dHMsIGNvbnN0cmFpbnRzKSlcbiAgICAucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7XG4gICAgICBpZiAoYmVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfVxuICAgICAgaWYgKG5leHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYmVzdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiZXN0LmxheW91dC5mZWVPdXRwdXQgPCBuZXh0LmxheW91dC5mZWVPdXRwdXQgPyBiZXN0IDogbmV4dDtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTm9MYXlvdXQgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdDb3VsZCBub3QgZmluZCBvdXRwdXQgbGF5b3V0IGZvciBpbnNjcmlwdGlvbiBwYXNzaW5nIHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHBhcmFtIGlucHV0QnVpbGRlclxuICogQHBhcmFtIHVuc3BlbnRcbiAqIEBwYXJhbSBzYXRQb2ludFxuICogQHBhcmFtIG91dHB1dHNcbiAqIEBwYXJhbSBjb25zdHJhaW50c1xuICogQHBhcmFtIHN1cHBsZW1lbnRhcnlVbnNwZW50cyAtIGFkZGl0aW9uYWwgaW5wdXRzIHRvIGNvdmVyIGZlZS5cbiAqIEBwYXJhbSBbbWluaW1pemVJbnB1dHM9dHJ1ZV0gLSB0cnkgdG8gZmluZCBpbnB1dCBjb21iaW5hdGlvbiB3aXRoIG1pbmltYWwgZmVlcy4gTGltaXRzIHN1cHBsZW1lbnRhcnlVbnNwZW50cyB0byA0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHNidEZvclNpbmdsZUluc2NyaXB0aW9uUGFzc2luZ1RyYW5zYWN0aW9uKFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICBpbnB1dEJ1aWxkZXI6IFdhbGxldElucHV0QnVpbGRlcixcbiAgdW5zcGVudDogV2FsbGV0VW5zcGVudCB8IFdhbGxldFVuc3BlbnRbXSxcbiAgc2F0UG9pbnQ6IFNhdFBvaW50LFxuICBvdXRwdXRzOiBJbnNjcmlwdGlvblRyYW5zYWN0aW9uT3V0cHV0cyxcbiAgY29uc3RyYWludHM6IEluc2NyaXB0aW9uVHJhbnNhY3Rpb25Db25zdHJhaW50cyxcbiAge1xuICAgIHN1cHBsZW1lbnRhcnlVbnNwZW50cyA9IFtdLFxuICAgIG1pbmltaXplSW5wdXRzID0gdHJ1ZSxcbiAgfToge1xuICAgIHN1cHBsZW1lbnRhcnlVbnNwZW50cz86IFdhbGxldFVuc3BlbnRbXTtcbiAgICBtaW5pbWl6ZUlucHV0cz86IGJvb2xlYW47XG4gIH0gPSB7fVxuKTogYml0Z28uVXR4b1BzYnQge1xuICAvLyBzdXBwb3J0IGZvciBsZWdhY3kgY2FsbCBzdHlsZVxuICBpZiAoQXJyYXkuaXNBcnJheSh1bnNwZW50KSkge1xuICAgIGlmICh1bnNwZW50Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4gb25seSBwYXNzIHNpbmdsZSB1bnNwZW50YCk7XG4gICAgfVxuICAgIHVuc3BlbnQgPSB1bnNwZW50WzBdO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gZmluZE91dHB1dExheW91dEZvcldhbGxldFVuc3BlbnRzKFxuICAgIFt1bnNwZW50LCAuLi5zdXBwbGVtZW50YXJ5VW5zcGVudHNdLFxuICAgIHNhdFBvaW50LFxuICAgIG91dHB1dHMsXG4gICAgY29uc3RyYWludHMsXG4gICAgeyBtaW5pbWl6ZUlucHV0cyB9XG4gICk7XG5cbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb0xheW91dCgpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBzYnRGcm9tT3V0cHV0TGF5b3V0KG5ldHdvcmssIGlucHV0QnVpbGRlciwgcmVzdWx0LmlucHV0cywgb3V0cHV0cywgcmVzdWx0LmxheW91dCk7XG59XG4iXX0=
|