@bitgo/utxo-ord 1.24.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/SatPoint.d.ts +7 -0
- package/dist/cjs/src/SatPoint.d.ts.map +1 -1
- package/dist/cjs/src/SatPoint.js +26 -7
- package/dist/cjs/src/index.d.ts +2 -0
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.js +1 -1
- package/dist/cjs/src/inscriptions.d.ts +49 -22
- package/dist/cjs/src/inscriptions.d.ts.map +1 -1
- package/dist/cjs/src/inscriptions.js +65 -173
- package/dist/cjs/src/psbt.d.ts +28 -11
- package/dist/cjs/src/psbt.d.ts.map +1 -1
- package/dist/cjs/src/psbt.js +65 -26
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/SatPoint.d.ts +7 -0
- package/dist/esm/SatPoint.d.ts.map +1 -1
- package/dist/esm/SatPoint.js +21 -3
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/inscriptions.d.ts +49 -22
- package/dist/esm/inscriptions.d.ts.map +1 -1
- package/dist/esm/inscriptions.js +64 -139
- package/dist/esm/psbt.d.ts +28 -11
- package/dist/esm/psbt.d.ts.map +1 -1
- package/dist/esm/psbt.js +66 -27
- package/package.json +6 -5
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
export type SatPoint = `${string}:${number}:${bigint}`;
|
|
2
|
+
/**
|
|
3
|
+
* Parse an output ID (txid:vout) into its components.
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseOutputId(outputId: string): {
|
|
6
|
+
txid: string;
|
|
7
|
+
vout: number;
|
|
8
|
+
};
|
|
2
9
|
export declare function parseSatPoint(p: SatPoint): {
|
|
3
10
|
txid: string;
|
|
4
11
|
vout: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SatPoint.d.ts","sourceRoot":"","sources":["../../../src/SatPoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SatPoint.d.ts","sourceRoot":"","sources":["../../../src/SatPoint.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEvD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAe9E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAiBzF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAE1F;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,QAAQ,CAOnD"}
|
package/dist/cjs/src/SatPoint.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseSatPoint = parseSatPoint;
|
|
4
|
-
exports.formatSatPoint = formatSatPoint;
|
|
5
|
-
exports.isSatPoint = isSatPoint;
|
|
6
2
|
/*
|
|
7
3
|
|
|
8
4
|
https://github.com/casey/ord/blob/master/bip.mediawiki#terminology-and-notation
|
|
@@ -14,7 +10,30 @@ https://github.com/casey/ord/blob/master/bip.mediawiki#terminology-and-notation
|
|
|
14
10
|
> `680df1e4d43016571e504b0b142ee43c5c0b83398a97bdcfd94ea6f287322d22:0:6`
|
|
15
11
|
|
|
16
12
|
*/
|
|
17
|
-
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.parseOutputId = parseOutputId;
|
|
15
|
+
exports.parseSatPoint = parseSatPoint;
|
|
16
|
+
exports.formatSatPoint = formatSatPoint;
|
|
17
|
+
exports.isSatPoint = isSatPoint;
|
|
18
|
+
/**
|
|
19
|
+
* Parse an output ID (txid:vout) into its components.
|
|
20
|
+
*/
|
|
21
|
+
function parseOutputId(outputId) {
|
|
22
|
+
const colonIndex = outputId.lastIndexOf(':');
|
|
23
|
+
if (colonIndex === -1) {
|
|
24
|
+
throw new Error(`Invalid output id format: missing colon`);
|
|
25
|
+
}
|
|
26
|
+
const txid = outputId.slice(0, colonIndex);
|
|
27
|
+
const voutStr = outputId.slice(colonIndex + 1);
|
|
28
|
+
if (txid.length !== 64 || !/^[0-9a-fA-F]+$/.test(txid)) {
|
|
29
|
+
throw new Error(`Invalid txid: must be 64 hex characters`);
|
|
30
|
+
}
|
|
31
|
+
const vout = parseInt(voutStr, 10);
|
|
32
|
+
if (isNaN(vout) || vout < 0) {
|
|
33
|
+
throw new Error(`Invalid vout: must be non-negative integer`);
|
|
34
|
+
}
|
|
35
|
+
return { txid, vout };
|
|
36
|
+
}
|
|
18
37
|
function parseSatPoint(p) {
|
|
19
38
|
const parts = p.split(':');
|
|
20
39
|
if (parts.length !== 3) {
|
|
@@ -29,7 +48,7 @@ function parseSatPoint(p) {
|
|
|
29
48
|
throw new Error(`SatPoint offset must be positive`);
|
|
30
49
|
}
|
|
31
50
|
return {
|
|
32
|
-
...
|
|
51
|
+
...parseOutputId([txid, vout].join(':')),
|
|
33
52
|
offset,
|
|
34
53
|
};
|
|
35
54
|
}
|
|
@@ -45,4 +64,4 @@ function isSatPoint(v) {
|
|
|
45
64
|
return false;
|
|
46
65
|
}
|
|
47
66
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvU2F0UG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0VBVUU7O0FBT0Ysc0NBZUM7QUFFRCxzQ0FpQkM7QUFFRCx3Q0FFQztBQUVELGdDQU9DO0FBbEREOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLFFBQWdCO0lBQzVDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLENBQVc7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU87UUFDTCxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLENBQWlEO0lBQzlFLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBVyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsQ0FBUztJQUNsQyxJQUFJLENBQUM7UUFDSCxhQUFhLENBQUMsQ0FBYSxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi9tYXN0ZXIvYmlwLm1lZGlhd2lraSN0ZXJtaW5vbG9neS1hbmQtbm90YXRpb25cblxuPiBBIHNhdHBvaW50IG1heSBiZSB1c2VkIHRvIGluZGljYXRlIHRoZSBsb2NhdGlvbiBvZiBhIHNhdCB3aXRoaW4gYW4gb3V0cHV0LlxuPiBBIHNhdHBvaW50IGNvbnNpc3RzIG9mIGFuIG91dHBvaW50LCBpLmUuLCBhIHRyYW5zYWN0aW9uIElEIGFuZCBvdXRwdXQgaW5kZXgsIHdpdGggdGhlIGFkZGl0aW9uIG9mXG4+IHRoZSBvZmZzZXQgb2YgdGhlIG9yZGluYWwgd2l0aGluIHRoYXQgb3V0cHV0LiBGb3IgZXhhbXBsZSwgaWYgdGhlIHNhdCBpbiBxdWVzdGlvbiBpcyBhdCBvZmZzZXQgNlxuPiBpbiB0aGUgZmlyc3Qgb3V0cHV0IG9mIGEgdHJhbnNhY3Rpb24sIGl0cyBzYXRwb2ludCBpczpcbj4gYDY4MGRmMWU0ZDQzMDE2NTcxZTUwNGIwYjE0MmVlNDNjNWMwYjgzMzk4YTk3YmRjZmQ5NGVhNmYyODczMjJkMjI6MDo2YFxuXG4qL1xuXG5leHBvcnQgdHlwZSBTYXRQb2ludCA9IGAke3N0cmluZ306JHtudW1iZXJ9OiR7YmlnaW50fWA7XG5cbi8qKlxuICogUGFyc2UgYW4gb3V0cHV0IElEICh0eGlkOnZvdXQpIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU91dHB1dElkKG91dHB1dElkOiBzdHJpbmcpOiB7IHR4aWQ6IHN0cmluZzsgdm91dDogbnVtYmVyIH0ge1xuICBjb25zdCBjb2xvbkluZGV4ID0gb3V0cHV0SWQubGFzdEluZGV4T2YoJzonKTtcbiAgaWYgKGNvbG9uSW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG91dHB1dCBpZCBmb3JtYXQ6IG1pc3NpbmcgY29sb25gKTtcbiAgfVxuICBjb25zdCB0eGlkID0gb3V0cHV0SWQuc2xpY2UoMCwgY29sb25JbmRleCk7XG4gIGNvbnN0IHZvdXRTdHIgPSBvdXRwdXRJZC5zbGljZShjb2xvbkluZGV4ICsgMSk7XG4gIGlmICh0eGlkLmxlbmd0aCAhPT0gNjQgfHwgIS9eWzAtOWEtZkEtRl0rJC8udGVzdCh0eGlkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eGlkOiBtdXN0IGJlIDY0IGhleCBjaGFyYWN0ZXJzYCk7XG4gIH1cbiAgY29uc3Qgdm91dCA9IHBhcnNlSW50KHZvdXRTdHIsIDEwKTtcbiAgaWYgKGlzTmFOKHZvdXQpIHx8IHZvdXQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZvdXQ6IG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXJgKTtcbiAgfVxuICByZXR1cm4geyB0eGlkLCB2b3V0IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNhdFBvaW50KHA6IFNhdFBvaW50KTogeyB0eGlkOiBzdHJpbmc7IHZvdXQ6IG51bWJlcjsgb2Zmc2V0OiBiaWdpbnQgfSB7XG4gIGNvbnN0IHBhcnRzID0gcC5zcGxpdCgnOicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBmb3JtYXQgdHhpZDp2b3V0OnNhdGApO1xuICB9XG4gIGNvbnN0IFt0eGlkLCB2b3V0LCBvZmZzZXRTdHJdID0gcGFydHM7XG4gIGNvbnN0IG9mZnNldCA9IEJpZ0ludChvZmZzZXRTdHIpO1xuICBpZiAob2Zmc2V0LnRvU3RyaW5nKCkgIT09IG9mZnNldFN0cikge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2F0UG9pbnQgb2Zmc2V0IG11c3QgYmUgYmFzZS0xMGApO1xuICB9XG4gIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTYXRQb2ludCBvZmZzZXQgbXVzdCBiZSBwb3NpdGl2ZWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4ucGFyc2VPdXRwdXRJZChbdHhpZCwgdm91dF0uam9pbignOicpKSxcbiAgICBvZmZzZXQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXRQb2ludChwOiB7IHR4aWQ6IHN0cmluZzsgdm91dDogbnVtYmVyOyBvZmZzZXQ6IGJpZ2ludCB9KTogU2F0UG9pbnQge1xuICByZXR1cm4gYCR7cC50eGlkfToke3Audm91dH06JHtwLm9mZnNldH1gIGFzIGNvbnN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYXRQb2ludCh2OiBzdHJpbmcpOiB2IGlzIFNhdFBvaW50IHtcbiAgdHJ5IHtcbiAgICBwYXJzZVNhdFBvaW50KHYgYXMgU2F0UG9pbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
package/dist/cjs/src/index.d.ts
CHANGED
|
@@ -7,4 +7,6 @@ export * from './OutputLayout';
|
|
|
7
7
|
export * from './SatPoint';
|
|
8
8
|
export * from './psbt';
|
|
9
9
|
export * as inscriptions from './inscriptions';
|
|
10
|
+
export type { TapLeafScript, PreparedInscriptionRevealData } from './inscriptions';
|
|
11
|
+
export type { WalletUnspent } from './psbt';
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -46,4 +46,4 @@ __exportStar(require("./OutputLayout"), exports);
|
|
|
46
46
|
__exportStar(require("./SatPoint"), exports);
|
|
47
47
|
__exportStar(require("./psbt"), exports);
|
|
48
48
|
exports.inscriptions = __importStar(require("./inscriptions"));
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGlEQUErQjtBQUMvQiw2Q0FBMkI7QUFDM0IseUNBQXVCO0FBQ3ZCLCtEQUErQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Nhc2V5L29yZC9ibG9iLzAuNS4xL2JpcC5tZWRpYXdpa2lcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL1NhdFJhbmdlJztcbmV4cG9ydCAqIGZyb20gJy4vT3JkT3V0cHV0JztcbmV4cG9ydCAqIGZyb20gJy4vT3V0cHV0TGF5b3V0JztcbmV4cG9ydCAqIGZyb20gJy4vU2F0UG9pbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wc2J0JztcbmV4cG9ydCAqIGFzIGluc2NyaXB0aW9ucyBmcm9tICcuL2luc2NyaXB0aW9ucyc7XG5leHBvcnQgdHlwZSB7IFRhcExlYWZTY3JpcHQsIFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhIH0gZnJvbSAnLi9pbnNjcmlwdGlvbnMnO1xuZXhwb3J0IHR5cGUgeyBXYWxsZXRVbnNwZW50IH0gZnJvbSAnLi9wc2J0JztcbiJdfQ==
|
|
@@ -1,31 +1,58 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { PreparedInscriptionRevealData } from '@bitgo/sdk-core';
|
|
1
|
+
import { type TapLeafScript, type CoinName } from '@bitgo/wasm-utxo';
|
|
2
|
+
export type { TapLeafScript };
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param inscriptionData
|
|
8
|
-
* @param network
|
|
9
|
-
* @returns PreparedInscriptionRevealData
|
|
4
|
+
* Prepared data for an inscription reveal transaction.
|
|
5
|
+
* Compatible with sdk-core's PreparedInscriptionRevealData.
|
|
10
6
|
*/
|
|
11
|
-
export
|
|
7
|
+
export type PreparedInscriptionRevealData = {
|
|
8
|
+
/** The commit address (derived from outputScript for the given network) */
|
|
9
|
+
address: string;
|
|
10
|
+
/** Estimated virtual size of the reveal transaction */
|
|
11
|
+
revealTransactionVSize: number;
|
|
12
|
+
/** Tap leaf script for spending the commit output */
|
|
13
|
+
tapLeafScript: TapLeafScript;
|
|
14
|
+
};
|
|
12
15
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @param inscriptionData
|
|
16
|
-
* @returns inscription address
|
|
16
|
+
* BIP32-like interface compatible with both utxo-lib and wasm-utxo BIP32 types.
|
|
17
|
+
* The publicKey can be Buffer (utxo-lib) or Uint8Array (wasm-utxo).
|
|
17
18
|
*/
|
|
18
|
-
export
|
|
19
|
+
export interface BIP32Like {
|
|
20
|
+
publicKey: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
/** Input type for inscription functions - either a BIP32-like key or raw public key bytes */
|
|
23
|
+
export type KeyInput = BIP32Like | Uint8Array;
|
|
19
24
|
/**
|
|
25
|
+
* Create the P2TR output script for an inscription.
|
|
20
26
|
*
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @param
|
|
24
|
-
* @
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
* @param key - BIP32 key or public key bytes (32-byte x-only or 33-byte compressed)
|
|
28
|
+
* @param contentType - MIME type of the inscription (e.g., "text/plain", "image/png")
|
|
29
|
+
* @param inscriptionData - The inscription data bytes
|
|
30
|
+
* @returns The P2TR output script for the inscription commit address
|
|
31
|
+
*/
|
|
32
|
+
export declare function createOutputScriptForInscription(key: KeyInput, contentType: string, inscriptionData: Uint8Array): Uint8Array;
|
|
33
|
+
/**
|
|
34
|
+
* Create inscription reveal data including the commit address and tap leaf script.
|
|
35
|
+
*
|
|
36
|
+
* @param key - BIP32 key or public key bytes (32-byte x-only or 33-byte compressed)
|
|
37
|
+
* @param contentType - MIME type of the inscription (e.g., "text/plain", "image/png")
|
|
38
|
+
* @param inscriptionData - The inscription data bytes
|
|
39
|
+
* @param coinName - Coin name (e.g., "btc", "tbtc")
|
|
40
|
+
* @returns PreparedInscriptionRevealData with address, vsize estimate, and tap leaf script
|
|
41
|
+
*/
|
|
42
|
+
export declare function createInscriptionRevealData(key: KeyInput, contentType: string, inscriptionData: Uint8Array, coinName: CoinName): PreparedInscriptionRevealData;
|
|
43
|
+
/**
|
|
44
|
+
* Sign a reveal transaction.
|
|
45
|
+
*
|
|
46
|
+
* Creates and signs the reveal transaction that spends from the commit output
|
|
47
|
+
* and sends the inscription to the recipient.
|
|
27
48
|
*
|
|
28
|
-
* @
|
|
49
|
+
* @param privateKey - 32-byte private key
|
|
50
|
+
* @param tapLeafScript - The tap leaf script from createInscriptionRevealData
|
|
51
|
+
* @param commitAddress - The commit address
|
|
52
|
+
* @param recipientAddress - Where to send the inscription
|
|
53
|
+
* @param unsignedCommitTx - The unsigned commit transaction bytes
|
|
54
|
+
* @param coinName - Coin name (e.g., "btc", "tbtc")
|
|
55
|
+
* @returns The signed PSBT as bytes
|
|
29
56
|
*/
|
|
30
|
-
export declare function signRevealTransaction(privateKey:
|
|
57
|
+
export declare function signRevealTransaction(privateKey: Uint8Array, tapLeafScript: TapLeafScript, commitAddress: string, recipientAddress: string, unsignedCommitTx: Uint8Array, coinName: CoinName): Uint8Array;
|
|
31
58
|
//# sourceMappingURL=inscriptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inscriptions.d.ts","sourceRoot":"","sources":["../../../src/inscriptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inscriptions.d.ts","sourceRoot":"","sources":["../../../src/inscriptions.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,aAAa,EAAE,CAAC;AAM9B;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,6FAA6F;AAC7F,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AA0B9C;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,UAAU,GAC1B,UAAU,CAKZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,UAAU,EAC3B,QAAQ,EAAE,QAAQ,GACjB,6BAA6B,CAc/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,UAAU,EAC5B,QAAQ,EAAE,QAAQ,GACjB,UAAU,CAcZ"}
|
|
@@ -2,201 +2,93 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Functions for dealing with inscriptions.
|
|
4
4
|
|
|
5
|
+
Wrapper around @bitgo/wasm-utxo inscription functions for utxo-ord consumers.
|
|
6
|
+
|
|
5
7
|
See https://docs.ordinals.com/inscriptions.html
|
|
6
8
|
*/
|
|
7
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
-
if (k2 === undefined) k2 = k;
|
|
9
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(o, k2, desc);
|
|
14
|
-
}) : (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
o[k2] = m[k];
|
|
17
|
-
}));
|
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
-
}) : function(o, v) {
|
|
21
|
-
o["default"] = v;
|
|
22
|
-
});
|
|
23
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
-
var ownKeys = function(o) {
|
|
25
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
-
var ar = [];
|
|
27
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
-
return ar;
|
|
29
|
-
};
|
|
30
|
-
return ownKeys(o);
|
|
31
|
-
};
|
|
32
|
-
return function (mod) {
|
|
33
|
-
if (mod && mod.__esModule) return mod;
|
|
34
|
-
var result = {};
|
|
35
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
-
__setModuleDefault(result, mod);
|
|
37
|
-
return result;
|
|
38
|
-
};
|
|
39
|
-
})();
|
|
40
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.createInscriptionRevealData = createInscriptionRevealData;
|
|
42
10
|
exports.createOutputScriptForInscription = createOutputScriptForInscription;
|
|
11
|
+
exports.createInscriptionRevealData = createInscriptionRevealData;
|
|
43
12
|
exports.signRevealTransaction = signRevealTransaction;
|
|
44
|
-
const
|
|
45
|
-
const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
46
|
-
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
47
|
-
const OPS = utxo_lib_1.script.OPS;
|
|
48
|
-
const MAX_LENGTH_TAP_DATA_PUSH = 520;
|
|
13
|
+
const wasm_utxo_1 = require("@bitgo/wasm-utxo");
|
|
49
14
|
// default "postage" amount
|
|
50
15
|
// https://github.com/ordinals/ord/blob/0.24.2/src/lib.rs#L149
|
|
51
|
-
const
|
|
16
|
+
const DEFAULT_POSTAGE_SATS = BigInt(10000);
|
|
17
|
+
function isBIP32Like(key) {
|
|
18
|
+
return typeof key === 'object' && key !== null && 'publicKey' in key && !ArrayBuffer.isView(key);
|
|
19
|
+
}
|
|
52
20
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* https://docs.ordinals.com/inscriptions.html
|
|
56
|
-
* @param inscriptionData
|
|
57
|
-
* @param chunkSize
|
|
21
|
+
* Extract compressed public key from key input.
|
|
22
|
+
* Handles BIP32-like objects and raw pubkey bytes (32 or 33 bytes).
|
|
58
23
|
*/
|
|
59
|
-
function
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
24
|
+
function getCompressedPublicKey(key) {
|
|
25
|
+
const pubkey = isBIP32Like(key) ? key.publicKey : key;
|
|
26
|
+
if (pubkey.length === 33) {
|
|
27
|
+
return pubkey;
|
|
63
28
|
}
|
|
64
|
-
|
|
29
|
+
if (pubkey.length === 32) {
|
|
30
|
+
// x-only pubkey - prepend 0x02 parity byte to make compressed
|
|
31
|
+
const compressedPubkey = new Uint8Array(33);
|
|
32
|
+
compressedPubkey[0] = 0x02;
|
|
33
|
+
compressedPubkey.set(pubkey, 1);
|
|
34
|
+
return compressedPubkey;
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Invalid public key length: ${pubkey.length}. Expected 32 or 33 bytes.`);
|
|
65
37
|
}
|
|
66
38
|
/**
|
|
39
|
+
* Create the P2TR output script for an inscription.
|
|
67
40
|
*
|
|
68
|
-
* @
|
|
69
|
-
* @param
|
|
70
|
-
* @param
|
|
71
|
-
* @
|
|
41
|
+
* @param key - BIP32 key or public key bytes (32-byte x-only or 33-byte compressed)
|
|
42
|
+
* @param contentType - MIME type of the inscription (e.g., "text/plain", "image/png")
|
|
43
|
+
* @param inscriptionData - The inscription data bytes
|
|
44
|
+
* @returns The P2TR output script for the inscription commit address
|
|
72
45
|
*/
|
|
73
|
-
function
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
OPS.OP_FALSE,
|
|
79
|
-
OPS.OP_IF,
|
|
80
|
-
Buffer.from('ord', 'ascii'),
|
|
81
|
-
1, // these two lines should be combined as a single OPS.OP_1,
|
|
82
|
-
1, // but `ord`'s decoder has a bug so it has to be like this
|
|
83
|
-
Buffer.from(contentType, 'ascii'),
|
|
84
|
-
OPS.OP_0,
|
|
85
|
-
...dataPushBuffers,
|
|
86
|
-
OPS.OP_ENDIF,
|
|
87
|
-
];
|
|
88
|
-
const compiledScript = utxo_lib_1.script.compile(uncompiledScript);
|
|
89
|
-
const redeem = {
|
|
90
|
-
output: compiledScript,
|
|
91
|
-
depth: 0,
|
|
92
|
-
};
|
|
93
|
-
return utxo_lib_1.p2trPayments.p2tr({ redeems: [redeem], redeemIndex: 0 }, { eccLib: utxo_lib_1.ecc });
|
|
46
|
+
function createOutputScriptForInscription(key, contentType, inscriptionData) {
|
|
47
|
+
const compressedPubkey = getCompressedPublicKey(key);
|
|
48
|
+
const ecpair = wasm_utxo_1.ECPair.fromPublicKey(compressedPubkey);
|
|
49
|
+
const result = wasm_utxo_1.inscriptions.createInscriptionRevealData(ecpair, contentType, inscriptionData);
|
|
50
|
+
return result.outputScript;
|
|
94
51
|
}
|
|
95
52
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* @param
|
|
99
|
-
* @param
|
|
100
|
-
* @
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const psbt = utxo_lib_1.bitgo.createPsbtForNetwork({ network });
|
|
104
|
-
const parsedControlBlock = utxo_lib_1.taproot.parseControlBlock(utxo_lib_1.ecc, controlBlock);
|
|
105
|
-
const leafHash = utxo_lib_1.taproot.getTapleafHash(utxo_lib_1.ecc, parsedControlBlock, payment.redeem?.output);
|
|
106
|
-
psbt.addInput({
|
|
107
|
-
hash: Buffer.alloc(32),
|
|
108
|
-
index: 0,
|
|
109
|
-
witnessUtxo: { script: commitOutput, value: BigInt(100000) },
|
|
110
|
-
tapLeafScript: [
|
|
111
|
-
{
|
|
112
|
-
controlBlock,
|
|
113
|
-
script: payment.redeem?.output,
|
|
114
|
-
leafVersion: utxo_lib_1.taproot.INITIAL_TAPSCRIPT_VERSION,
|
|
115
|
-
},
|
|
116
|
-
],
|
|
117
|
-
});
|
|
118
|
-
psbt.addOutput({ script: commitOutput, value: DEFAULT_POSTAGE_AMOUNT });
|
|
119
|
-
psbt.signTaprootInput(0, {
|
|
120
|
-
publicKey: Buffer.alloc(32),
|
|
121
|
-
signSchnorr(hash) {
|
|
122
|
-
// dummy schnorr-sized signature
|
|
123
|
-
return Buffer.alloc(64);
|
|
124
|
-
},
|
|
125
|
-
}, [leafHash]);
|
|
126
|
-
psbt.finalizeTapInputWithSingleLeafScriptAndSignature(0);
|
|
127
|
-
return psbt.extractTransaction(/* disableFeeCheck */ true).virtualSize();
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* @param pubkey
|
|
131
|
-
* @param contentType
|
|
132
|
-
* @param inscriptionData
|
|
133
|
-
* @param network
|
|
134
|
-
* @returns PreparedInscriptionRevealData
|
|
53
|
+
* Create inscription reveal data including the commit address and tap leaf script.
|
|
54
|
+
*
|
|
55
|
+
* @param key - BIP32 key or public key bytes (32-byte x-only or 33-byte compressed)
|
|
56
|
+
* @param contentType - MIME type of the inscription (e.g., "text/plain", "image/png")
|
|
57
|
+
* @param inscriptionData - The inscription data bytes
|
|
58
|
+
* @param coinName - Coin name (e.g., "btc", "tbtc")
|
|
59
|
+
* @returns PreparedInscriptionRevealData with address, vsize estimate, and tap leaf script
|
|
135
60
|
*/
|
|
136
|
-
function createInscriptionRevealData(
|
|
137
|
-
const
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const commitAddress = utxo_lib_1.address.fromOutputScript(commitOutput, network);
|
|
143
|
-
const tapLeafScript = [
|
|
144
|
-
{
|
|
145
|
-
controlBlock,
|
|
146
|
-
script: payment.redeem?.output,
|
|
147
|
-
leafVersion: utxo_lib_1.taproot.INITIAL_TAPSCRIPT_VERSION,
|
|
148
|
-
},
|
|
149
|
-
];
|
|
150
|
-
const revealTransactionVSize = getInscriptionRevealSize(payment, controlBlock, commitOutput, network);
|
|
61
|
+
function createInscriptionRevealData(key, contentType, inscriptionData, coinName) {
|
|
62
|
+
const compressedPubkey = getCompressedPublicKey(key);
|
|
63
|
+
const ecpair = wasm_utxo_1.ECPair.fromPublicKey(compressedPubkey);
|
|
64
|
+
const wasmResult = wasm_utxo_1.inscriptions.createInscriptionRevealData(ecpair, contentType, inscriptionData);
|
|
65
|
+
// Convert outputScript to address for the given network
|
|
66
|
+
const address = wasm_utxo_1.address.fromOutputScriptWithCoin(wasmResult.outputScript, coinName);
|
|
151
67
|
return {
|
|
152
|
-
address
|
|
153
|
-
revealTransactionVSize,
|
|
154
|
-
tapLeafScript: tapLeafScript
|
|
68
|
+
address,
|
|
69
|
+
revealTransactionVSize: wasmResult.revealTransactionVSize,
|
|
70
|
+
tapLeafScript: wasmResult.tapLeafScript,
|
|
155
71
|
};
|
|
156
72
|
}
|
|
157
73
|
/**
|
|
158
|
-
*
|
|
159
|
-
* @param contentType
|
|
160
|
-
* @param inscriptionData
|
|
161
|
-
* @returns inscription address
|
|
162
|
-
*/
|
|
163
|
-
function createOutputScriptForInscription(pubkey, contentType, inscriptionData) {
|
|
164
|
-
const payment = createPaymentForInscription(pubkey, contentType, inscriptionData);
|
|
165
|
-
assert.ok(payment.output, 'Failed to create inscription output script');
|
|
166
|
-
return payment.output;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
74
|
+
* Sign a reveal transaction.
|
|
169
75
|
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
* @param commitAddress
|
|
173
|
-
* @param recipientAddress
|
|
174
|
-
* @param unsignedCommitTx
|
|
175
|
-
* @param network
|
|
76
|
+
* Creates and signs the reveal transaction that spends from the commit output
|
|
77
|
+
* and sends the inscription to the recipient.
|
|
176
78
|
*
|
|
177
|
-
* @
|
|
79
|
+
* @param privateKey - 32-byte private key
|
|
80
|
+
* @param tapLeafScript - The tap leaf script from createInscriptionRevealData
|
|
81
|
+
* @param commitAddress - The commit address
|
|
82
|
+
* @param recipientAddress - Where to send the inscription
|
|
83
|
+
* @param unsignedCommitTx - The unsigned commit transaction bytes
|
|
84
|
+
* @param coinName - Coin name (e.g., "btc", "tbtc")
|
|
85
|
+
* @returns The signed PSBT as bytes
|
|
178
86
|
*/
|
|
179
|
-
function signRevealTransaction(privateKey, tapLeafScript, commitAddress, recipientAddress, unsignedCommitTx,
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
const
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
throw new Error('Invalid commit transaction');
|
|
186
|
-
}
|
|
187
|
-
const psbt = utxo_lib_1.bitgo.createPsbtForNetwork({ network });
|
|
188
|
-
psbt.addInput({
|
|
189
|
-
hash,
|
|
190
|
-
index: vout,
|
|
191
|
-
witnessUtxo: { script: commitOutput, value: BigInt(unserCommitTxn.outs[vout].value) },
|
|
192
|
-
tapLeafScript: [tapLeafScript],
|
|
193
|
-
});
|
|
194
|
-
const recipientOutput = utxo_lib_1.address.toOutputScript(recipientAddress, network);
|
|
195
|
-
psbt.addOutput({ script: recipientOutput, value: BigInt(10000) });
|
|
196
|
-
const signer = utxo_lib_1.ECPair.fromPrivateKey(privateKey);
|
|
197
|
-
const parsedControlBlock = utxo_lib_1.taproot.parseControlBlock(utxo_lib_1.ecc, tapLeafScript.controlBlock);
|
|
198
|
-
const leafHash = utxo_lib_1.taproot.getTapleafHash(utxo_lib_1.ecc, parsedControlBlock, tapLeafScript.script);
|
|
199
|
-
psbt.signTaprootInput(0, signer, [leafHash]);
|
|
200
|
-
return psbt;
|
|
87
|
+
function signRevealTransaction(privateKey, tapLeafScript, commitAddress, recipientAddress, unsignedCommitTx, coinName) {
|
|
88
|
+
const ecpair = wasm_utxo_1.ECPair.fromPrivateKey(privateKey);
|
|
89
|
+
const commitTx = wasm_utxo_1.Transaction.fromBytes(unsignedCommitTx);
|
|
90
|
+
const commitOutputScript = wasm_utxo_1.address.toOutputScriptWithCoin(commitAddress, coinName);
|
|
91
|
+
const recipientOutputScript = wasm_utxo_1.address.toOutputScriptWithCoin(recipientAddress, coinName);
|
|
92
|
+
return wasm_utxo_1.inscriptions.signRevealTransaction(ecpair, tapLeafScript, commitTx, commitOutputScript, recipientOutputScript, DEFAULT_POSTAGE_SATS);
|
|
201
93
|
}
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc2NyaXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4SEYsa0VBNEJDO0FBUUQsNEVBS0M7QUFhRCxzREFrQ0M7QUFwTkQsK0NBQWlDO0FBQ2pDLDhDQVV5QjtBQUN6Qix5REFBMkM7QUFHM0MsTUFBTSxHQUFHLEdBQUcsaUJBQU8sQ0FBQyxHQUFHLENBQUM7QUFDeEIsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsMkJBQTJCO0FBQzNCLDhEQUE4RDtBQUM5RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxLQUFNLENBQUMsQ0FBQztBQUU5Qzs7Ozs7O0dBTUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxlQUF1QixFQUFFLFNBQWlCO0lBQzdELE1BQU0sZUFBZSxHQUFhLEVBQUUsQ0FBQztJQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDM0QsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsMkJBQTJCLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsZUFBdUI7SUFDL0YsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBRS9FLE1BQU0sZ0JBQWdCLEdBQUc7UUFDdkIsTUFBTTtRQUNOLEdBQUcsQ0FBQyxXQUFXO1FBQ2YsR0FBRyxDQUFDLFFBQVE7UUFDWixHQUFH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QyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUFHLGtCQUFPLENBQUMsY0FBYyxDQUFDLGNBQU0sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO0lBQ3BHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUU3QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuRnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGggaW5zY3JpcHRpb25zLlxuXG5TZWUgaHR0cHM6Ly9kb2NzLm9yZGluYWxzLmNvbS9pbnNjcmlwdGlvbnMuaHRtbFxuKi9cblxuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBwMnRyUGF5bWVudHMgYXMgcGF5bWVudHMsXG4gIGVjYyBhcyBlY2NMaWIsXG4gIHNjcmlwdCBhcyBic2NyaXB0LFxuICBQYXltZW50LFxuICBOZXR3b3JrLFxuICBiaXRnbyxcbiAgYWRkcmVzcyxcbiAgdGFwcm9vdCxcbiAgRUNQYWlyLFxufSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgUHJlcGFyZWRJbnNjcmlwdGlvblJldmVhbERhdGEgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5jb25zdCBPUFMgPSBic2NyaXB0Lk9QUztcbmNvbnN0IE1BWF9MRU5HVEhfVEFQX0RBVEFfUFVTSCA9IDUyMDtcbi8vIGRlZmF1bHQgXCJwb3N0YWdlXCIgYW1vdW50XG4vLyBodHRwczovL2dpdGh1Yi5jb20vb3JkaW5hbHMvb3JkL2Jsb2IvMC4yNC4yL3NyYy9saWIucnMjTDE0OVxuY29uc3QgREVGQVVMVF9QT1NUQUdFX0FNT1VOVCA9IEJpZ0ludCgxMF8wMDApO1xuXG4vKipcbiAqIFRoZSBtYXggc2l6ZSBvZiBhbiBpbmRpdmlkdWFsIE9QX1BVU0ggaW4gYSBUYXByb290IHNjcmlwdCBpcyA1MjAgYnl0ZXMuIFRoaXNcbiAqIGZ1bmN0aW9uIHNwbGl0cyBpbnNjcmlwdGlvbkRhdGEgaW50byBhbiBhcnJheSBidWZmZXIgb2YgNTIwIGJ5dGVzIGxlbmd0aC5cbiAqIGh0dHBzOi8vZG9jcy5vcmRpbmFscy5jb20vaW5zY3JpcHRpb25zLmh0bWxcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGFcbiAqIEBwYXJhbSBjaHVua1NpemVcbiAqL1xuZnVuY3Rpb24gc3BsaXRCdWZmZXIoaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIsIGNodW5rU2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IHB1c2hEYXRhQnVmZmVyczogQnVmZmVyW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnNjcmlwdGlvbkRhdGEubGVuZ3RoOyBpICs9IGNodW5rU2l6ZSkge1xuICAgIHB1c2hEYXRhQnVmZmVycy5wdXNoKGluc2NyaXB0aW9uRGF0YS5zbGljZShpLCBpICsgY2h1bmtTaXplKSk7XG4gIH1cblxuICByZXR1cm4gcHVzaERhdGFCdWZmZXJzO1xufVxuXG4vKipcbiAqXG4gKiBAcmV0dXJucyBpbnNjcmlwdGlvbiBwYXltZW50IG9iamVjdFxuICogQHBhcmFtIHB1YmtleVxuICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVBheW1lbnRGb3JJbnNjcmlwdGlvbihwdWJrZXk6IEJ1ZmZlciwgY29udGVudFR5cGU6IHN0cmluZywgaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIpOiBQYXltZW50IHtcbiAgY29uc3QgZGF0YVB1c2hCdWZmZXJzID0gc3BsaXRCdWZmZXIoaW5zY3JpcHRpb25EYXRhLCBNQVhfTEVOR1RIX1RBUF9EQVRBX1BVU0gpO1xuXG4gIGNvbnN0IHVuY29tcGlsZWRTY3JpcHQgPSBbXG4gICAgcHVia2V5LFxuICAgIE9QUy5PUF9DSEVDS1NJRyxcbiAgICBPUFMuT1BfRkFMU0UsXG4gICAgT1BTLk9QX0lGLFxuICAgIEJ1ZmZlci5mcm9tKCdvcmQnLCAnYXNjaWknKSxcbiAgICAxLCAvLyB0aGVzZSB0d28gbGluZXMgc2hvdWxkIGJlIGNvbWJpbmVkIGFzIGEgc2luZ2xlIE9QUy5PUF8xLFxuICAgIDEsIC8vIGJ1dCBgb3JkYCdzIGRlY29kZXIgaGFzIGEgYnVnIHNvIGl0IGhhcyB0byBiZSBsaWtlIHRoaXNcbiAgICBCdWZmZXIuZnJvbShjb250ZW50VHlwZSwgJ2FzY2lpJyksXG4gICAgT1BTLk9QXzAsXG4gICAgLi4uZGF0YVB1c2hCdWZmZXJzLFxuICAgIE9QUy5PUF9FTkRJRixcbiAgXTtcblxuICBjb25zdCBjb21waWxlZFNjcmlwdCA9IGJzY3JpcHQuY29tcGlsZSh1bmNvbXBpbGVkU2NyaXB0KTtcbiAgY29uc3QgcmVkZWVtOiBQYXltZW50ID0ge1xuICAgIG91dHB1dDogY29tcGlsZWRTY3JpcHQsXG4gICAgZGVwdGg6IDAsXG4gIH07XG5cbiAgcmV0dXJuIHBheW1lbnRzLnAydHIoeyByZWRlZW1zOiBbcmVkZWVtXSwgcmVkZWVtSW5kZXg6IDAgfSwgeyBlY2NMaWIgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHBheW1lbnRcbiAqIEBwYXJhbSBjb250cm9sQmxvY2tcbiAqIEBwYXJhbSBjb21taXRPdXRwdXRcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJuIHZpcnR1YWwgc2l6ZSBvZiBhIHRyYW5zYWN0aW9uIHdpdGggYSBzaW5nbGUgaW5zY3JpcHRpb24gcmV2ZWFsIGlucHV0IGFuZCBhIHNpbmdsZSBjb21taXRPdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0SW5zY3JpcHRpb25SZXZlYWxTaXplKFxuICBwYXltZW50OiBQYXltZW50LFxuICBjb250cm9sQmxvY2s6IEJ1ZmZlcixcbiAgY29tbWl0T3V0cHV0OiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IG51bWJlciB7XG4gIGNvbnN0IHBzYnQgPSBiaXRnby5jcmVhdGVQc2J0Rm9yTmV0d29yayh7IG5ldHdvcmsgfSk7XG4gIGNvbnN0IHBhcnNlZENvbnRyb2xCbG9jayA9IHRhcHJvb3QucGFyc2VDb250cm9sQmxvY2soZWNjTGliLCBjb250cm9sQmxvY2spO1xuICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBwYXJzZWRDb250cm9sQmxvY2ssIHBheW1lbnQucmVkZWVtPy5vdXRwdXQgYXMgQnVmZmVyKTtcblxuICBwc2J0LmFkZElucHV0KHtcbiAgICBoYXNoOiBCdWZmZXIuYWxsb2MoMzIpLFxuICAgIGluZGV4OiAwLFxuICAgIHdpdG5lc3NVdHhvOiB7IHNjcmlwdDogY29tbWl0T3V0cHV0LCB2YWx1ZTogQmlnSW50KDEwMF8wMDApIH0sXG4gICAgdGFwTGVhZlNjcmlwdDogW1xuICAgICAge1xuICAgICAgICBjb250cm9sQmxvY2ssXG4gICAgICAgIHNjcmlwdDogcGF5bWVudC5yZWRlZW0/Lm91dHB1dCBhcyBCdWZmZXIsXG4gICAgICAgIGxlYWZWZXJzaW9uOiB0YXByb290LklOSVRJQUxfVEFQU0NSSVBUX1ZFUlNJT04sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogY29tbWl0T3V0cHV0LCB2YWx1ZTogREVGQVVMVF9QT1NUQUdFX0FNT1VOVCB9KTtcblxuICBwc2J0LnNpZ25UYXByb290SW5wdXQoXG4gICAgMCxcbiAgICB7XG4gICAgICBwdWJsaWNLZXk6IEJ1ZmZlci5hbGxvYygzMiksXG4gICAgICBzaWduU2Nobm9ycihoYXNoOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgICAgICAvLyBkdW1teSBzY2hub3JyLXNpemVkIHNpZ25hdHVyZVxuICAgICAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDY0KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBbbGVhZkhhc2hdXG4gICk7XG5cbiAgcHNidC5maW5hbGl6ZVRhcElucHV0V2l0aFNpbmdsZUxlYWZTY3JpcHRBbmRTaWduYXR1cmUoMCk7XG4gIHJldHVybiBwc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigvKiBkaXNhYmxlRmVlQ2hlY2sgKi8gdHJ1ZSkudmlydHVhbFNpemUoKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcHVia2V5XG4gKiBAcGFyYW0gY29udGVudFR5cGVcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGFcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcmV0dXJucyBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5zY3JpcHRpb25SZXZlYWxEYXRhKFxuICBwdWJrZXk6IEJ1ZmZlcixcbiAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhIHtcbiAgY29uc3QgcGF5bWVudCA9IGNyZWF0ZVBheW1lbnRGb3JJbnNjcmlwdGlvbihwdWJrZXksIGNvbnRlbnRUeXBlLCBpbnNjcmlwdGlvbkRhdGEpO1xuXG4gIGNvbnN0IHsgb3V0cHV0OiBjb21taXRPdXRwdXQsIGNvbnRyb2xCbG9jayB9ID0gcGF5bWVudDtcbiAgYXNzZXJ0Lm9rKGNvbW1pdE91dHB1dCk7XG4gIGFzc2VydC5vayhjb250cm9sQmxvY2spO1xuICBhc3NlcnQub2socGF5bWVudC5yZWRlZW0/Lm91dHB1dCk7XG4gIGNvbnN0IGNvbW1pdEFkZHJlc3MgPSBhZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoY29tbWl0T3V0cHV0LCBuZXR3b3JrKTtcblxuICBjb25zdCB0YXBMZWFmU2NyaXB0OiB1dHhvbGliLmJpdGdvLlRhcExlYWZTY3JpcHRbXSA9IFtcbiAgICB7XG4gICAgICBjb250cm9sQmxvY2ssXG4gICAgICBzY3JpcHQ6IHBheW1lbnQucmVkZWVtPy5vdXRwdXQsXG4gICAgICBsZWFmVmVyc2lvbjogdGFwcm9vdC5JTklUSUFMX1RBUFNDUklQVF9WRVJTSU9OLFxuICAgIH0sXG4gIF07XG4gIGNvbnN0IHJldmVhbFRyYW5zYWN0aW9uVlNpemUgPSBnZXRJbnNjcmlwdGlvblJldmVhbFNpemUocGF5bWVudCwgY29udHJvbEJsb2NrLCBjb21taXRPdXRwdXQsIG5ldHdvcmspO1xuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogY29tbWl0QWRkcmVzcyxcbiAgICByZXZlYWxUcmFuc2FjdGlvblZTaXplLFxuICAgIHRhcExlYWZTY3JpcHQ6IHRhcExlYWZTY3JpcHRbMF0sXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHB1YmtleVxuICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhXG4gKiBAcmV0dXJucyBpbnNjcmlwdGlvbiBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPdXRwdXRTY3JpcHRGb3JJbnNjcmlwdGlvbihwdWJrZXk6IEJ1ZmZlciwgY29udGVudFR5cGU6IHN0cmluZywgaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIpOiBCdWZmZXIge1xuICBjb25zdCBwYXltZW50ID0gY3JlYXRlUGF5bWVudEZvckluc2NyaXB0aW9uKHB1YmtleSwgY29udGVudFR5cGUsIGluc2NyaXB0aW9uRGF0YSk7XG5cbiAgYXNzZXJ0Lm9rKHBheW1lbnQub3V0cHV0LCAnRmFpbGVkIHRvIGNyZWF0ZSBpbnNjcmlwdGlvbiBvdXRwdXQgc2NyaXB0Jyk7XG4gIHJldHVybiBwYXltZW50Lm91dHB1dDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHByaXZhdGVLZXlcbiAqIEBwYXJhbSB0YXBMZWFmU2NyaXB0XG4gKiBAcGFyYW0gY29tbWl0QWRkcmVzc1xuICogQHBhcmFtIHJlY2lwaWVudEFkZHJlc3NcbiAqIEBwYXJhbSB1bnNpZ25lZENvbW1pdFR4XG4gKiBAcGFyYW0gbmV0d29ya1xuICpcbiAqIEByZXR1cm4gYSBmdWxseSBzaWduZWQgcmV2ZWFsIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduUmV2ZWFsVHJhbnNhY3Rpb24oXG4gIHByaXZhdGVLZXk6IEJ1ZmZlcixcbiAgdGFwTGVhZlNjcmlwdDogdXR4b2xpYi5iaXRnby5UYXBMZWFmU2NyaXB0LFxuICBjb21taXRBZGRyZXNzOiBzdHJpbmcsXG4gIHJlY2lwaWVudEFkZHJlc3M6IHN0cmluZyxcbiAgdW5zaWduZWRDb21taXRUeDogQnVmZmVyLFxuICBuZXR3b3JrOiBOZXR3b3JrXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgY29uc3QgdW5zZXJDb21taXRUeG4gPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlcih1bnNpZ25lZENvbW1pdFR4LCBuZXR3b3JrKTtcbiAgY29uc3QgaGFzaCA9IHVuc2VyQ29tbWl0VHhuLmdldEhhc2goKTtcbiAgY29uc3QgY29tbWl0T3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGNvbW1pdEFkZHJlc3MsIG5ldHdvcmspO1xuICBjb25zdCB2b3V0ID0gdW5zZXJDb21taXRUeG4ub3V0cy5maW5kSW5kZXgoKG91dCkgPT4gb3V0LnNjcmlwdC5lcXVhbHMoY29tbWl0T3V0cHV0KSk7XG5cbiAgaWYgKHZvdXQgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbW1pdCB0cmFuc2FjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgcHNidCA9IGJpdGdvLmNyZWF0ZVBzYnRGb3JOZXR3b3JrKHsgbmV0d29yayB9KTtcbiAgcHNidC5hZGRJbnB1dCh7XG4gICAgaGFzaCxcbiAgICBpbmRleDogdm91dCxcbiAgICB3aXRuZXNzVXR4bzogeyBzY3JpcHQ6IGNvbW1pdE91dHB1dCwgdmFsdWU6IEJpZ0ludCh1bnNlckNvbW1pdFR4bi5vdXRzW3ZvdXRdLnZhbHVlKSB9LFxuICAgIHRhcExlYWZTY3JpcHQ6IFt0YXBMZWFmU2NyaXB0XSxcbiAgfSk7XG5cbiAgY29uc3QgcmVjaXBpZW50T3V0cHV0ID0gYWRkcmVzcy50b091dHB1dFNjcmlwdChyZWNpcGllbnRBZGRyZXNzLCBuZXR3b3JrKTtcbiAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHJlY2lwaWVudE91dHB1dCwgdmFsdWU6IEJpZ0ludCgxMF8wMDApIH0pO1xuXG4gIGNvbnN0IHNpZ25lciA9IEVDUGFpci5mcm9tUHJpdmF0ZUtleShwcml2YXRlS2V5KTtcbiAgY29uc3QgcGFyc2VkQ29udHJvbEJsb2NrID0gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2NMaWIsIHRhcExlYWZTY3JpcHQuY29udHJvbEJsb2NrKTtcbiAgY29uc3QgbGVhZkhhc2ggPSB0YXByb290LmdldFRhcGxlYWZIYXNoKGVjY0xpYiwgcGFyc2VkQ29udHJvbEJsb2NrLCB0YXBMZWFmU2NyaXB0LnNjcmlwdCBhcyBCdWZmZXIpO1xuICBwc2J0LnNpZ25UYXByb290SW5wdXQoMCwgc2lnbmVyLCBbbGVhZkhhc2hdKTtcblxuICByZXR1cm4gcHNidDtcbn1cbiJdfQ==
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc2NyaXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztFQU1FOztBQXlFRiw0RUFTQztBQVdELGtFQW1CQztBQWdCRCxzREFxQkM7QUFuSkQsZ0RBTzBCO0FBSTFCLDJCQUEyQjtBQUMzQiw4REFBOEQ7QUFDOUQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsS0FBTSxDQUFDLENBQUM7QUEwQjVDLFNBQVMsV0FBVyxDQUFDLEdBQWE7SUFDaEMsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxXQUFXLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxHQUFhO0lBQzNDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRXRELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLDhEQUE4RDtRQUM5RCxNQUFNLGdCQUFnQixHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMzQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixnQ0FBZ0MsQ0FDOUMsR0FBYSxFQUNiLFdBQW1CLEVBQ25CLGVBQTJCO0lBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsa0JBQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyx3QkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2xHLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztBQUM3QixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FDekMsR0FBYSxFQUNiLFdBQW1CLEVBQ25CLGVBQTJCLEVBQzNCLFFBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsa0JBQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUV0RCxNQUFNLFVBQVUsR0FBRyx3QkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXRHLHdEQUF3RDtJQUN4RCxNQUFNLE9BQU8sR0FBRyxtQkFBVyxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFeEYsT0FBTztRQUNMLE9BQU87UUFDUCxzQkFBc0IsRUFBRSxVQUFVLENBQUMsc0JBQXNCO1FBQ3pELGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYTtLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsVUFBc0IsRUFDdEIsYUFBNEIsRUFDNUIsYUFBcUIsRUFDckIsZ0JBQXdCLEVBQ3hCLGdCQUE0QixFQUM1QixRQUFrQjtJQUVsQixNQUFNLE1BQU0sR0FBRyxrQkFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyx1QkFBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sa0JBQWtCLEdBQUcsbUJBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkYsTUFBTSxxQkFBcUIsR0FBRyxtQkFBVyxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTdGLE9BQU8sd0JBQWdCLENBQUMscUJBQXFCLENBQzNDLE1BQU0sRUFDTixhQUFhLEVBQ2IsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsb0JBQW9CLENBQ3JCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkZ1bmN0aW9ucyBmb3IgZGVhbGluZyB3aXRoIGluc2NyaXB0aW9ucy5cblxuV3JhcHBlciBhcm91bmQgQGJpdGdvL3dhc20tdXR4byBpbnNjcmlwdGlvbiBmdW5jdGlvbnMgZm9yIHV0eG8tb3JkIGNvbnN1bWVycy5cblxuU2VlIGh0dHBzOi8vZG9jcy5vcmRpbmFscy5jb20vaW5zY3JpcHRpb25zLmh0bWxcbiovXG5cbmltcG9ydCB7XG4gIGluc2NyaXB0aW9ucyBhcyB3YXNtSW5zY3JpcHRpb25zLFxuICBhZGRyZXNzIGFzIHdhc21BZGRyZXNzLFxuICBUcmFuc2FjdGlvbixcbiAgRUNQYWlyLFxuICB0eXBlIFRhcExlYWZTY3JpcHQsXG4gIHR5cGUgQ29pbk5hbWUsXG59IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5leHBvcnQgdHlwZSB7IFRhcExlYWZTY3JpcHQgfTtcblxuLy8gZGVmYXVsdCBcInBvc3RhZ2VcIiBhbW91bnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcmRpbmFscy9vcmQvYmxvYi8wLjI0LjIvc3JjL2xpYi5ycyNMMTQ5XG5jb25zdCBERUZBVUxUX1BPU1RBR0VfU0FUUyA9IEJpZ0ludCgxMF8wMDApO1xuXG4vKipcbiAqIFByZXBhcmVkIGRhdGEgZm9yIGFuIGluc2NyaXB0aW9uIHJldmVhbCB0cmFuc2FjdGlvbi5cbiAqIENvbXBhdGlibGUgd2l0aCBzZGstY29yZSdzIFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhLlxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSA9IHtcbiAgLyoqIFRoZSBjb21taXQgYWRkcmVzcyAoZGVyaXZlZCBmcm9tIG91dHB1dFNjcmlwdCBmb3IgdGhlIGdpdmVuIG5ldHdvcmspICovXG4gIGFkZHJlc3M6IHN0cmluZztcbiAgLyoqIEVzdGltYXRlZCB2aXJ0dWFsIHNpemUgb2YgdGhlIHJldmVhbCB0cmFuc2FjdGlvbiAqL1xuICByZXZlYWxUcmFuc2FjdGlvblZTaXplOiBudW1iZXI7XG4gIC8qKiBUYXAgbGVhZiBzY3JpcHQgZm9yIHNwZW5kaW5nIHRoZSBjb21taXQgb3V0cHV0ICovXG4gIHRhcExlYWZTY3JpcHQ6IFRhcExlYWZTY3JpcHQ7XG59O1xuXG4vKipcbiAqIEJJUDMyLWxpa2UgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCBib3RoIHV0eG8tbGliIGFuZCB3YXNtLXV0eG8gQklQMzIgdHlwZXMuXG4gKiBUaGUgcHVibGljS2V5IGNhbiBiZSBCdWZmZXIgKHV0eG8tbGliKSBvciBVaW50OEFycmF5ICh3YXNtLXV0eG8pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJJUDMyTGlrZSB7XG4gIHB1YmxpY0tleTogVWludDhBcnJheTtcbn1cblxuLyoqIElucHV0IHR5cGUgZm9yIGluc2NyaXB0aW9uIGZ1bmN0aW9ucyAtIGVpdGhlciBhIEJJUDMyLWxpa2Uga2V5IG9yIHJhdyBwdWJsaWMga2V5IGJ5dGVzICovXG5leHBvcnQgdHlwZSBLZXlJbnB1dCA9IEJJUDMyTGlrZSB8IFVpbnQ4QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQklQMzJMaWtlKGtleTogS2V5SW5wdXQpOiBrZXkgaXMgQklQMzJMaWtlIHtcbiAgcmV0dXJuIHR5cGVvZiBrZXkgPT09ICdvYmplY3QnICYmIGtleSAhPT0gbnVsbCAmJiAncHVibGljS2V5JyBpbiBrZXkgJiYgIUFycmF5QnVmZmVyLmlzVmlldyhrZXkpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgY29tcHJlc3NlZCBwdWJsaWMga2V5IGZyb20ga2V5IGlucHV0LlxuICogSGFuZGxlcyBCSVAzMi1saWtlIG9iamVjdHMgYW5kIHJhdyBwdWJrZXkgYnl0ZXMgKDMyIG9yIDMzIGJ5dGVzKS5cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcHJlc3NlZFB1YmxpY0tleShrZXk6IEtleUlucHV0KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHB1YmtleSA9IGlzQklQMzJMaWtlKGtleSkgPyBrZXkucHVibGljS2V5IDoga2V5O1xuXG4gIGlmIChwdWJrZXkubGVuZ3RoID09PSAzMykge1xuICAgIHJldHVybiBwdWJrZXk7XG4gIH1cbiAgaWYgKHB1YmtleS5sZW5ndGggPT09IDMyKSB7XG4gICAgLy8geC1vbmx5IHB1YmtleSAtIHByZXBlbmQgMHgwMiBwYXJpdHkgYnl0ZSB0byBtYWtlIGNvbXByZXNzZWRcbiAgICBjb25zdCBjb21wcmVzc2VkUHVia2V5ID0gbmV3IFVpbnQ4QXJyYXkoMzMpO1xuICAgIGNvbXByZXNzZWRQdWJrZXlbMF0gPSAweDAyO1xuICAgIGNvbXByZXNzZWRQdWJrZXkuc2V0KHB1YmtleSwgMSk7XG4gICAgcmV0dXJuIGNvbXByZXNzZWRQdWJrZXk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHB1YmxpYyBrZXkgbGVuZ3RoOiAke3B1YmtleS5sZW5ndGh9LiBFeHBlY3RlZCAzMiBvciAzMyBieXRlcy5gKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIFAyVFIgb3V0cHV0IHNjcmlwdCBmb3IgYW4gaW5zY3JpcHRpb24uXG4gKlxuICogQHBhcmFtIGtleSAtIEJJUDMyIGtleSBvciBwdWJsaWMga2V5IGJ5dGVzICgzMi1ieXRlIHgtb25seSBvciAzMy1ieXRlIGNvbXByZXNzZWQpXG4gKiBAcGFyYW0gY29udGVudFR5cGUgLSBNSU1FIHR5cGUgb2YgdGhlIGluc2NyaXB0aW9uIChlLmcuLCBcInRleHQvcGxhaW5cIiwgXCJpbWFnZS9wbmdcIilcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGEgLSBUaGUgaW5zY3JpcHRpb24gZGF0YSBieXRlc1xuICogQHJldHVybnMgVGhlIFAyVFIgb3V0cHV0IHNjcmlwdCBmb3IgdGhlIGluc2NyaXB0aW9uIGNvbW1pdCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPdXRwdXRTY3JpcHRGb3JJbnNjcmlwdGlvbihcbiAga2V5OiBLZXlJbnB1dCxcbiAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgaW5zY3JpcHRpb25EYXRhOiBVaW50OEFycmF5XG4pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgY29tcHJlc3NlZFB1YmtleSA9IGdldENvbXByZXNzZWRQdWJsaWNLZXkoa2V5KTtcbiAgY29uc3QgZWNwYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoY29tcHJlc3NlZFB1YmtleSk7XG4gIGNvbnN0IHJlc3VsdCA9IHdhc21JbnNjcmlwdGlvbnMuY3JlYXRlSW5zY3JpcHRpb25SZXZlYWxEYXRhKGVjcGFpciwgY29udGVudFR5cGUsIGluc2NyaXB0aW9uRGF0YSk7XG4gIHJldHVybiByZXN1bHQub3V0cHV0U2NyaXB0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBpbnNjcmlwdGlvbiByZXZlYWwgZGF0YSBpbmNsdWRpbmcgdGhlIGNvbW1pdCBhZGRyZXNzIGFuZCB0YXAgbGVhZiBzY3JpcHQuXG4gKlxuICogQHBhcmFtIGtleSAtIEJJUDMyIGtleSBvciBwdWJsaWMga2V5IGJ5dGVzICgzMi1ieXRlIHgtb25seSBvciAzMy1ieXRlIGNvbXByZXNzZWQpXG4gKiBAcGFyYW0gY29udGVudFR5cGUgLSBNSU1FIHR5cGUgb2YgdGhlIGluc2NyaXB0aW9uIChlLmcuLCBcInRleHQvcGxhaW5cIiwgXCJpbWFnZS9wbmdcIilcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGEgLSBUaGUgaW5zY3JpcHRpb24gZGF0YSBieXRlc1xuICogQHBhcmFtIGNvaW5OYW1lIC0gQ29pbiBuYW1lIChlLmcuLCBcImJ0Y1wiLCBcInRidGNcIilcbiAqIEByZXR1cm5zIFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhIHdpdGggYWRkcmVzcywgdnNpemUgZXN0aW1hdGUsIGFuZCB0YXAgbGVhZiBzY3JpcHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluc2NyaXB0aW9uUmV2ZWFsRGF0YShcbiAga2V5OiBLZXlJbnB1dCxcbiAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgaW5zY3JpcHRpb25EYXRhOiBVaW50OEFycmF5LFxuICBjb2luTmFtZTogQ29pbk5hbWVcbik6IFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhIHtcbiAgY29uc3QgY29tcHJlc3NlZFB1YmtleSA9IGdldENvbXByZXNzZWRQdWJsaWNLZXkoa2V5KTtcbiAgY29uc3QgZWNwYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoY29tcHJlc3NlZFB1YmtleSk7XG5cbiAgY29uc3Qgd2FzbVJlc3VsdCA9IHdhc21JbnNjcmlwdGlvbnMuY3JlYXRlSW5zY3JpcHRpb25SZXZlYWxEYXRhKGVjcGFpciwgY29udGVudFR5cGUsIGluc2NyaXB0aW9uRGF0YSk7XG5cbiAgLy8gQ29udmVydCBvdXRwdXRTY3JpcHQgdG8gYWRkcmVzcyBmb3IgdGhlIGdpdmVuIG5ldHdvcmtcbiAgY29uc3QgYWRkcmVzcyA9IHdhc21BZGRyZXNzLmZyb21PdXRwdXRTY3JpcHRXaXRoQ29pbih3YXNtUmVzdWx0Lm91dHB1dFNjcmlwdCwgY29pbk5hbWUpO1xuXG4gIHJldHVybiB7XG4gICAgYWRkcmVzcyxcbiAgICByZXZlYWxUcmFuc2FjdGlvblZTaXplOiB3YXNtUmVzdWx0LnJldmVhbFRyYW5zYWN0aW9uVlNpemUsXG4gICAgdGFwTGVhZlNjcmlwdDogd2FzbVJlc3VsdC50YXBMZWFmU2NyaXB0LFxuICB9O1xufVxuXG4vKipcbiAqIFNpZ24gYSByZXZlYWwgdHJhbnNhY3Rpb24uXG4gKlxuICogQ3JlYXRlcyBhbmQgc2lnbnMgdGhlIHJldmVhbCB0cmFuc2FjdGlvbiB0aGF0IHNwZW5kcyBmcm9tIHRoZSBjb21taXQgb3V0cHV0XG4gKiBhbmQgc2VuZHMgdGhlIGluc2NyaXB0aW9uIHRvIHRoZSByZWNpcGllbnQuXG4gKlxuICogQHBhcmFtIHByaXZhdGVLZXkgLSAzMi1ieXRlIHByaXZhdGUga2V5XG4gKiBAcGFyYW0gdGFwTGVhZlNjcmlwdCAtIFRoZSB0YXAgbGVhZiBzY3JpcHQgZnJvbSBjcmVhdGVJbnNjcmlwdGlvblJldmVhbERhdGFcbiAqIEBwYXJhbSBjb21taXRBZGRyZXNzIC0gVGhlIGNvbW1pdCBhZGRyZXNzXG4gKiBAcGFyYW0gcmVjaXBpZW50QWRkcmVzcyAtIFdoZXJlIHRvIHNlbmQgdGhlIGluc2NyaXB0aW9uXG4gKiBAcGFyYW0gdW5zaWduZWRDb21taXRUeCAtIFRoZSB1bnNpZ25lZCBjb21taXQgdHJhbnNhY3Rpb24gYnl0ZXNcbiAqIEBwYXJhbSBjb2luTmFtZSAtIENvaW4gbmFtZSAoZS5nLiwgXCJidGNcIiwgXCJ0YnRjXCIpXG4gKiBAcmV0dXJucyBUaGUgc2lnbmVkIFBTQlQgYXMgYnl0ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25SZXZlYWxUcmFuc2FjdGlvbihcbiAgcHJpdmF0ZUtleTogVWludDhBcnJheSxcbiAgdGFwTGVhZlNjcmlwdDogVGFwTGVhZlNjcmlwdCxcbiAgY29tbWl0QWRkcmVzczogc3RyaW5nLFxuICByZWNpcGllbnRBZGRyZXNzOiBzdHJpbmcsXG4gIHVuc2lnbmVkQ29tbWl0VHg6IFVpbnQ4QXJyYXksXG4gIGNvaW5OYW1lOiBDb2luTmFtZVxuKTogVWludDhBcnJheSB7XG4gIGNvbnN0IGVjcGFpciA9IEVDUGFpci5mcm9tUHJpdmF0ZUtleShwcml2YXRlS2V5KTtcbiAgY29uc3QgY29tbWl0VHggPSBUcmFuc2FjdGlvbi5mcm9tQnl0ZXModW5zaWduZWRDb21taXRUeCk7XG4gIGNvbnN0IGNvbW1pdE91dHB1dFNjcmlwdCA9IHdhc21BZGRyZXNzLnRvT3V0cHV0U2NyaXB0V2l0aENvaW4oY29tbWl0QWRkcmVzcywgY29pbk5hbWUpO1xuICBjb25zdCByZWNpcGllbnRPdXRwdXRTY3JpcHQgPSB3YXNtQWRkcmVzcy50b091dHB1dFNjcmlwdFdpdGhDb2luKHJlY2lwaWVudEFkZHJlc3MsIGNvaW5OYW1lKTtcblxuICByZXR1cm4gd2FzbUluc2NyaXB0aW9ucy5zaWduUmV2ZWFsVHJhbnNhY3Rpb24oXG4gICAgZWNwYWlyLFxuICAgIHRhcExlYWZTY3JpcHQsXG4gICAgY29tbWl0VHgsXG4gICAgY29tbWl0T3V0cHV0U2NyaXB0LFxuICAgIHJlY2lwaWVudE91dHB1dFNjcmlwdCxcbiAgICBERUZBVUxUX1BPU1RBR0VfU0FUU1xuICApO1xufVxuIl19
|
package/dist/cjs/src/psbt.d.ts
CHANGED
|
@@ -1,21 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fixedScriptWallet, type CoinName } from '@bitgo/wasm-utxo';
|
|
2
2
|
import { SatPoint } from './SatPoint';
|
|
3
3
|
import { OutputLayout } from './OutputLayout';
|
|
4
|
-
type
|
|
4
|
+
type WalletKeysArg = fixedScriptWallet.WalletKeysArg;
|
|
5
|
+
type SignPath = fixedScriptWallet.SignPath;
|
|
6
|
+
/**
|
|
7
|
+
* Network type from utxo-lib for backward compatibility.
|
|
8
|
+
*/
|
|
9
|
+
type UtxolibNetwork = {
|
|
10
|
+
messagePrefix?: string;
|
|
11
|
+
bech32?: string;
|
|
12
|
+
pubKeyHash: number;
|
|
13
|
+
scriptHash: number;
|
|
14
|
+
wif: number;
|
|
15
|
+
};
|
|
16
|
+
export type WalletUnspent = {
|
|
17
|
+
id: string;
|
|
18
|
+
value: bigint;
|
|
19
|
+
chain: number;
|
|
20
|
+
index: number;
|
|
21
|
+
};
|
|
5
22
|
export type WalletOutputPath = {
|
|
6
|
-
chain:
|
|
23
|
+
chain: fixedScriptWallet.ChainCode;
|
|
7
24
|
index: number;
|
|
8
25
|
};
|
|
9
26
|
export type WalletInputBuilder = {
|
|
10
|
-
walletKeys:
|
|
11
|
-
signer:
|
|
12
|
-
cosigner:
|
|
27
|
+
walletKeys: WalletKeysArg;
|
|
28
|
+
signer: SignPath['signer'];
|
|
29
|
+
cosigner: SignPath['cosigner'];
|
|
13
30
|
};
|
|
14
31
|
/**
|
|
15
32
|
* Describes all outputs of an inscription transaction
|
|
16
33
|
*/
|
|
17
34
|
export type InscriptionTransactionOutputs = {
|
|
18
|
-
inscriptionRecipient: string |
|
|
35
|
+
inscriptionRecipient: string | Uint8Array;
|
|
19
36
|
changeOutputs: [WalletOutputPath, WalletOutputPath];
|
|
20
37
|
};
|
|
21
38
|
/** @deprecated */
|
|
@@ -31,7 +48,7 @@ export declare const DefaultInscriptionConstraints: {
|
|
|
31
48
|
minInscriptionOutput: bigint;
|
|
32
49
|
maxInscriptionOutput: bigint;
|
|
33
50
|
};
|
|
34
|
-
export declare function createPsbtFromOutputLayout(
|
|
51
|
+
export declare function createPsbtFromOutputLayout(networkOrCoinName: CoinName | UtxolibNetwork, inputBuilder: WalletInputBuilder, unspents: WalletUnspent[], outputs: InscriptionTransactionOutputs, outputLayout: OutputLayout): fixedScriptWallet.BitGoPsbt;
|
|
35
52
|
/**
|
|
36
53
|
* @param inputs - inscription input must come first
|
|
37
54
|
* @param satPoint - location of the inscription
|
|
@@ -50,7 +67,7 @@ export declare class ErrorNoLayout extends Error {
|
|
|
50
67
|
constructor();
|
|
51
68
|
}
|
|
52
69
|
/**
|
|
53
|
-
* @param
|
|
70
|
+
* @param networkOrCoinName - Coin name (e.g., "btc", "tbtc") or utxo-lib Network object
|
|
54
71
|
* @param inputBuilder
|
|
55
72
|
* @param unspent
|
|
56
73
|
* @param satPoint
|
|
@@ -59,9 +76,9 @@ export declare class ErrorNoLayout extends Error {
|
|
|
59
76
|
* @param supplementaryUnspents - additional inputs to cover fee.
|
|
60
77
|
* @param [minimizeInputs=true] - try to find input combination with minimal fees. Limits supplementaryUnspents to 4.
|
|
61
78
|
*/
|
|
62
|
-
export declare function createPsbtForSingleInscriptionPassingTransaction(
|
|
79
|
+
export declare function createPsbtForSingleInscriptionPassingTransaction(networkOrCoinName: CoinName | UtxolibNetwork, inputBuilder: WalletInputBuilder, unspent: WalletUnspent | WalletUnspent[], satPoint: SatPoint, outputs: InscriptionTransactionOutputs, constraints: InscriptionTransactionConstraints, { supplementaryUnspents, minimizeInputs, }?: {
|
|
63
80
|
supplementaryUnspents?: WalletUnspent[];
|
|
64
81
|
minimizeInputs?: boolean;
|
|
65
|
-
}):
|
|
82
|
+
}): fixedScriptWallet.BitGoPsbt;
|
|
66
83
|
export {};
|
|
67
84
|
//# sourceMappingURL=psbt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/psbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/psbt.ts"],"names":[],"mappings":"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"}
|