@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.
@@ -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":"AAaA,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEvD,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"}
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"}
@@ -9,7 +9,25 @@ https://github.com/casey/ord/blob/master/bip.mediawiki#terminology-and-notation
9
9
  > `680df1e4d43016571e504b0b142ee43c5c0b83398a97bdcfd94ea6f287322d22:0:6`
10
10
 
11
11
  */
12
- import { bitgo } from '@bitgo/utxo-lib';
12
+ /**
13
+ * Parse an output ID (txid:vout) into its components.
14
+ */
15
+ export function parseOutputId(outputId) {
16
+ const colonIndex = outputId.lastIndexOf(':');
17
+ if (colonIndex === -1) {
18
+ throw new Error(`Invalid output id format: missing colon`);
19
+ }
20
+ const txid = outputId.slice(0, colonIndex);
21
+ const voutStr = outputId.slice(colonIndex + 1);
22
+ if (txid.length !== 64 || !/^[0-9a-fA-F]+$/.test(txid)) {
23
+ throw new Error(`Invalid txid: must be 64 hex characters`);
24
+ }
25
+ const vout = parseInt(voutStr, 10);
26
+ if (isNaN(vout) || vout < 0) {
27
+ throw new Error(`Invalid vout: must be non-negative integer`);
28
+ }
29
+ return { txid, vout };
30
+ }
13
31
  export function parseSatPoint(p) {
14
32
  const parts = p.split(':');
15
33
  if (parts.length !== 3) {
@@ -24,7 +42,7 @@ export function parseSatPoint(p) {
24
42
  throw new Error(`SatPoint offset must be positive`);
25
43
  }
26
44
  return {
27
- ...bitgo.parseOutputId([txid, vout].join(':')),
45
+ ...parseOutputId([txid, vout].join(':')),
28
46
  offset,
29
47
  };
30
48
  }
@@ -40,4 +58,4 @@ export function isSatPoint(v) {
40
58
  return false;
41
59
  }
42
60
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2F0UG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7RUFVRTtBQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl4QyxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVc7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU87UUFDTCxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBaUQ7SUFDOUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFXLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBUztJQUNsQyxJQUFJLENBQUM7UUFDSCxhQUFhLENBQUMsQ0FBYSxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi9tYXN0ZXIvYmlwLm1lZGlhd2lraSN0ZXJtaW5vbG9neS1hbmQtbm90YXRpb25cblxuPiBBIHNhdHBvaW50IG1heSBiZSB1c2VkIHRvIGluZGljYXRlIHRoZSBsb2NhdGlvbiBvZiBhIHNhdCB3aXRoaW4gYW4gb3V0cHV0LlxuPiBBIHNhdHBvaW50IGNvbnNpc3RzIG9mIGFuIG91dHBvaW50LCBpLmUuLCBhIHRyYW5zYWN0aW9uIElEIGFuZCBvdXRwdXQgaW5kZXgsIHdpdGggdGhlIGFkZGl0aW9uIG9mXG4+IHRoZSBvZmZzZXQgb2YgdGhlIG9yZGluYWwgd2l0aGluIHRoYXQgb3V0cHV0LiBGb3IgZXhhbXBsZSwgaWYgdGhlIHNhdCBpbiBxdWVzdGlvbiBpcyBhdCBvZmZzZXQgNlxuPiBpbiB0aGUgZmlyc3Qgb3V0cHV0IG9mIGEgdHJhbnNhY3Rpb24sIGl0cyBzYXRwb2ludCBpczpcbj4gYDY4MGRmMWU0ZDQzMDE2NTcxZTUwNGIwYjE0MmVlNDNjNWMwYjgzMzk4YTk3YmRjZmQ5NGVhNmYyODczMjJkMjI6MDo2YFxuXG4qL1xuaW1wb3J0IHsgYml0Z28gfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5leHBvcnQgdHlwZSBTYXRQb2ludCA9IGAke3N0cmluZ306JHtudW1iZXJ9OiR7YmlnaW50fWA7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNhdFBvaW50KHA6IFNhdFBvaW50KTogeyB0eGlkOiBzdHJpbmc7IHZvdXQ6IG51bWJlcjsgb2Zmc2V0OiBiaWdpbnQgfSB7XG4gIGNvbnN0IHBhcnRzID0gcC5zcGxpdCgnOicpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBmb3JtYXQgdHhpZDp2b3V0OnNhdGApO1xuICB9XG4gIGNvbnN0IFt0eGlkLCB2b3V0LCBvZmZzZXRTdHJdID0gcGFydHM7XG4gIGNvbnN0IG9mZnNldCA9IEJpZ0ludChvZmZzZXRTdHIpO1xuICBpZiAob2Zmc2V0LnRvU3RyaW5nKCkgIT09IG9mZnNldFN0cikge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2F0UG9pbnQgb2Zmc2V0IG11c3QgYmUgYmFzZS0xMGApO1xuICB9XG4gIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTYXRQb2ludCBvZmZzZXQgbXVzdCBiZSBwb3NpdGl2ZWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uYml0Z28ucGFyc2VPdXRwdXRJZChbdHhpZCwgdm91dF0uam9pbignOicpKSxcbiAgICBvZmZzZXQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTYXRQb2ludChwOiB7IHR4aWQ6IHN0cmluZzsgdm91dDogbnVtYmVyOyBvZmZzZXQ6IGJpZ2ludCB9KTogU2F0UG9pbnQge1xuICByZXR1cm4gYCR7cC50eGlkfToke3Audm91dH06JHtwLm9mZnNldH1gIGFzIGNvbnN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYXRQb2ludCh2OiBzdHJpbmcpOiB2IGlzIFNhdFBvaW50IHtcbiAgdHJ5IHtcbiAgICBwYXJzZVNhdFBvaW50KHYgYXMgU2F0UG9pbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0UG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2F0UG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7RUFVRTtBQUlGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxRQUFnQjtJQUM1QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBVztJQUN2QyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTztRQUNMLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQWlEO0lBQzlFLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBVyxDQUFDO0FBQ3BELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQVM7SUFDbEMsSUFBSSxDQUFDO1FBQ0gsYUFBYSxDQUFDLENBQWEsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXG5odHRwczovL2dpdGh1Yi5jb20vY2FzZXkvb3JkL2Jsb2IvbWFzdGVyL2JpcC5tZWRpYXdpa2kjdGVybWlub2xvZ3ktYW5kLW5vdGF0aW9uXG5cbj4gQSBzYXRwb2ludCBtYXkgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGUgbG9jYXRpb24gb2YgYSBzYXQgd2l0aGluIGFuIG91dHB1dC5cbj4gQSBzYXRwb2ludCBjb25zaXN0cyBvZiBhbiBvdXRwb2ludCwgaS5lLiwgYSB0cmFuc2FjdGlvbiBJRCBhbmQgb3V0cHV0IGluZGV4LCB3aXRoIHRoZSBhZGRpdGlvbiBvZlxuPiB0aGUgb2Zmc2V0IG9mIHRoZSBvcmRpbmFsIHdpdGhpbiB0aGF0IG91dHB1dC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBzYXQgaW4gcXVlc3Rpb24gaXMgYXQgb2Zmc2V0IDZcbj4gaW4gdGhlIGZpcnN0IG91dHB1dCBvZiBhIHRyYW5zYWN0aW9uLCBpdHMgc2F0cG9pbnQgaXM6XG4+IGA2ODBkZjFlNGQ0MzAxNjU3MWU1MDRiMGIxNDJlZTQzYzVjMGI4MzM5OGE5N2JkY2ZkOTRlYTZmMjg3MzIyZDIyOjA6NmBcblxuKi9cblxuZXhwb3J0IHR5cGUgU2F0UG9pbnQgPSBgJHtzdHJpbmd9OiR7bnVtYmVyfToke2JpZ2ludH1gO1xuXG4vKipcbiAqIFBhcnNlIGFuIG91dHB1dCBJRCAodHhpZDp2b3V0KSBpbnRvIGl0cyBjb21wb25lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPdXRwdXRJZChvdXRwdXRJZDogc3RyaW5nKTogeyB0eGlkOiBzdHJpbmc7IHZvdXQ6IG51bWJlciB9IHtcbiAgY29uc3QgY29sb25JbmRleCA9IG91dHB1dElkLmxhc3RJbmRleE9mKCc6Jyk7XG4gIGlmIChjb2xvbkluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBvdXRwdXQgaWQgZm9ybWF0OiBtaXNzaW5nIGNvbG9uYCk7XG4gIH1cbiAgY29uc3QgdHhpZCA9IG91dHB1dElkLnNsaWNlKDAsIGNvbG9uSW5kZXgpO1xuICBjb25zdCB2b3V0U3RyID0gb3V0cHV0SWQuc2xpY2UoY29sb25JbmRleCArIDEpO1xuICBpZiAodHhpZC5sZW5ndGggIT09IDY0IHx8ICEvXlswLTlhLWZBLUZdKyQvLnRlc3QodHhpZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHhpZDogbXVzdCBiZSA2NCBoZXggY2hhcmFjdGVyc2ApO1xuICB9XG4gIGNvbnN0IHZvdXQgPSBwYXJzZUludCh2b3V0U3RyLCAxMCk7XG4gIGlmIChpc05hTih2b3V0KSB8fCB2b3V0IDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2b3V0OiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyYCk7XG4gIH1cbiAgcmV0dXJuIHsgdHhpZCwgdm91dCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTYXRQb2ludChwOiBTYXRQb2ludCk6IHsgdHhpZDogc3RyaW5nOyB2b3V0OiBudW1iZXI7IG9mZnNldDogYmlnaW50IH0ge1xuICBjb25zdCBwYXJ0cyA9IHAuc3BsaXQoJzonKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgZm9ybWF0IHR4aWQ6dm91dDpzYXRgKTtcbiAgfVxuICBjb25zdCBbdHhpZCwgdm91dCwgb2Zmc2V0U3RyXSA9IHBhcnRzO1xuICBjb25zdCBvZmZzZXQgPSBCaWdJbnQob2Zmc2V0U3RyKTtcbiAgaWYgKG9mZnNldC50b1N0cmluZygpICE9PSBvZmZzZXRTdHIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNhdFBvaW50IG9mZnNldCBtdXN0IGJlIGJhc2UtMTBgKTtcbiAgfVxuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2F0UG9pbnQgb2Zmc2V0IG11c3QgYmUgcG9zaXRpdmVgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnBhcnNlT3V0cHV0SWQoW3R4aWQsIHZvdXRdLmpvaW4oJzonKSksXG4gICAgb2Zmc2V0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U2F0UG9pbnQocDogeyB0eGlkOiBzdHJpbmc7IHZvdXQ6IG51bWJlcjsgb2Zmc2V0OiBiaWdpbnQgfSk6IFNhdFBvaW50IHtcbiAgcmV0dXJuIGAke3AudHhpZH06JHtwLnZvdXR9OiR7cC5vZmZzZXR9YCBhcyBjb25zdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2F0UG9pbnQodjogc3RyaW5nKTogdiBpcyBTYXRQb2ludCB7XG4gIHRyeSB7XG4gICAgcGFyc2VTYXRQb2ludCh2IGFzIFNhdFBvaW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -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/esm/index.js CHANGED
@@ -7,4 +7,4 @@ export * from './OutputLayout';
7
7
  export * from './SatPoint';
8
8
  export * from './psbt';
9
9
  export * as inscriptions from './inscriptions';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxZQUFZLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi8wLjUuMS9iaXAubWVkaWF3aWtpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9TYXRSYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL09yZE91dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dExheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL1NhdFBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG5leHBvcnQgKiBhcyBpbnNjcmlwdGlvbnMgZnJvbSAnLi9pbnNjcmlwdGlvbnMnO1xuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxZQUFZLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jYXNleS9vcmQvYmxvYi8wLjUuMS9iaXAubWVkaWF3aWtpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9TYXRSYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL09yZE91dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dExheW91dCc7XG5leHBvcnQgKiBmcm9tICcuL1NhdFBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG5leHBvcnQgKiBhcyBpbnNjcmlwdGlvbnMgZnJvbSAnLi9pbnNjcmlwdGlvbnMnO1xuZXhwb3J0IHR5cGUgeyBUYXBMZWFmU2NyaXB0LCBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSB9IGZyb20gJy4vaW5zY3JpcHRpb25zJztcbmV4cG9ydCB0eXBlIHsgV2FsbGV0VW5zcGVudCB9IGZyb20gJy4vcHNidCc7XG4iXX0=
@@ -1,31 +1,58 @@
1
- import { Network } from '@bitgo/utxo-lib';
2
- import * as utxolib from '@bitgo/utxo-lib';
3
- import { PreparedInscriptionRevealData } from '@bitgo/sdk-core';
1
+ import { type TapLeafScript, type CoinName } from '@bitgo/wasm-utxo';
2
+ export type { TapLeafScript };
4
3
  /**
5
- * @param pubkey
6
- * @param contentType
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 declare function createInscriptionRevealData(pubkey: Buffer, contentType: string, inscriptionData: Buffer, network: Network): PreparedInscriptionRevealData;
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
- * @param pubkey
14
- * @param contentType
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 declare function createOutputScriptForInscription(pubkey: Buffer, contentType: string, inscriptionData: Buffer): Buffer;
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 privateKey
22
- * @param tapLeafScript
23
- * @param commitAddress
24
- * @param recipientAddress
25
- * @param unsignedCommitTx
26
- * @param network
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
- * @return a fully signed reveal transaction
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: Buffer, tapLeafScript: utxolib.bitgo.TapLeafScript, commitAddress: string, recipientAddress: string, unsignedCommitTx: Buffer, network: Network): utxolib.bitgo.UtxoPsbt;
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":"AAOA,OAAO,EAKL,OAAO,EAKR,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAwGhE;;;;;;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"}
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"}
@@ -1,164 +1,89 @@
1
1
  /*
2
2
  Functions for dealing with inscriptions.
3
3
 
4
+ Wrapper around @bitgo/wasm-utxo inscription functions for utxo-ord consumers.
5
+
4
6
  See https://docs.ordinals.com/inscriptions.html
5
7
  */
6
- import * as assert from 'assert';
7
- import { p2trPayments as payments, ecc as eccLib, script as bscript, bitgo, address, taproot, ECPair, } from '@bitgo/utxo-lib';
8
- import * as utxolib from '@bitgo/utxo-lib';
9
- const OPS = bscript.OPS;
10
- const MAX_LENGTH_TAP_DATA_PUSH = 520;
8
+ import { inscriptions as wasmInscriptions, address as wasmAddress, Transaction, ECPair, } from '@bitgo/wasm-utxo';
11
9
  // default "postage" amount
12
10
  // https://github.com/ordinals/ord/blob/0.24.2/src/lib.rs#L149
13
- const DEFAULT_POSTAGE_AMOUNT = BigInt(10000);
11
+ const DEFAULT_POSTAGE_SATS = BigInt(10000);
12
+ function isBIP32Like(key) {
13
+ return typeof key === 'object' && key !== null && 'publicKey' in key && !ArrayBuffer.isView(key);
14
+ }
14
15
  /**
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
16
+ * Extract compressed public key from key input.
17
+ * Handles BIP32-like objects and raw pubkey bytes (32 or 33 bytes).
20
18
  */
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));
19
+ function getCompressedPublicKey(key) {
20
+ const pubkey = isBIP32Like(key) ? key.publicKey : key;
21
+ if (pubkey.length === 33) {
22
+ return pubkey;
23
+ }
24
+ if (pubkey.length === 32) {
25
+ // x-only pubkey - prepend 0x02 parity byte to make compressed
26
+ const compressedPubkey = new Uint8Array(33);
27
+ compressedPubkey[0] = 0x02;
28
+ compressedPubkey.set(pubkey, 1);
29
+ return compressedPubkey;
25
30
  }
26
- return pushDataBuffers;
31
+ throw new Error(`Invalid public key length: ${pubkey.length}. Expected 32 or 33 bytes.`);
27
32
  }
28
33
  /**
34
+ * Create the P2TR output script for an inscription.
29
35
  *
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, // these two lines should be combined as a single OPS.OP_1,
44
- 1, // but `ord`'s decoder has a bug so it has to be like this
45
- Buffer.from(contentType, 'ascii'),
46
- OPS.OP_0,
47
- ...dataPushBuffers,
48
- OPS.OP_ENDIF,
49
- ];
50
- const compiledScript = bscript.compile(uncompiledScript);
51
- const redeem = {
52
- output: compiledScript,
53
- depth: 0,
54
- };
55
- return payments.p2tr({ redeems: [redeem], redeemIndex: 0 }, { eccLib });
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
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
+ * @returns The P2TR output script for the inscription commit address
63
40
  */
64
- function getInscriptionRevealSize(payment, controlBlock, commitOutput, network) {
65
- const psbt = bitgo.createPsbtForNetwork({ network });
66
- const parsedControlBlock = taproot.parseControlBlock(eccLib, controlBlock);
67
- const leafHash = taproot.getTapleafHash(eccLib, parsedControlBlock, payment.redeem?.output);
68
- psbt.addInput({
69
- hash: Buffer.alloc(32),
70
- index: 0,
71
- witnessUtxo: { script: commitOutput, value: BigInt(100000) },
72
- tapLeafScript: [
73
- {
74
- controlBlock,
75
- script: payment.redeem?.output,
76
- leafVersion: taproot.INITIAL_TAPSCRIPT_VERSION,
77
- },
78
- ],
79
- });
80
- psbt.addOutput({ script: commitOutput, value: DEFAULT_POSTAGE_AMOUNT });
81
- psbt.signTaprootInput(0, {
82
- publicKey: Buffer.alloc(32),
83
- signSchnorr(hash) {
84
- // dummy schnorr-sized signature
85
- return Buffer.alloc(64);
86
- },
87
- }, [leafHash]);
88
- psbt.finalizeTapInputWithSingleLeafScriptAndSignature(0);
89
- return psbt.extractTransaction(/* disableFeeCheck */ true).virtualSize();
41
+ export function createOutputScriptForInscription(key, contentType, inscriptionData) {
42
+ const compressedPubkey = getCompressedPublicKey(key);
43
+ const ecpair = ECPair.fromPublicKey(compressedPubkey);
44
+ const result = wasmInscriptions.createInscriptionRevealData(ecpair, contentType, inscriptionData);
45
+ return result.outputScript;
90
46
  }
91
47
  /**
92
- * @param pubkey
93
- * @param contentType
94
- * @param inscriptionData
95
- * @param network
96
- * @returns PreparedInscriptionRevealData
48
+ * Create inscription reveal data including the commit address and tap leaf script.
49
+ *
50
+ * @param key - BIP32 key or public key bytes (32-byte x-only or 33-byte compressed)
51
+ * @param contentType - MIME type of the inscription (e.g., "text/plain", "image/png")
52
+ * @param inscriptionData - The inscription data bytes
53
+ * @param coinName - Coin name (e.g., "btc", "tbtc")
54
+ * @returns PreparedInscriptionRevealData with address, vsize estimate, and tap leaf script
97
55
  */
98
- export function createInscriptionRevealData(pubkey, contentType, inscriptionData, network) {
99
- const payment = createPaymentForInscription(pubkey, contentType, inscriptionData);
100
- const { output: commitOutput, controlBlock } = payment;
101
- assert.ok(commitOutput);
102
- assert.ok(controlBlock);
103
- assert.ok(payment.redeem?.output);
104
- const commitAddress = address.fromOutputScript(commitOutput, network);
105
- const tapLeafScript = [
106
- {
107
- controlBlock,
108
- script: payment.redeem?.output,
109
- leafVersion: taproot.INITIAL_TAPSCRIPT_VERSION,
110
- },
111
- ];
112
- const revealTransactionVSize = getInscriptionRevealSize(payment, controlBlock, commitOutput, network);
56
+ export function createInscriptionRevealData(key, contentType, inscriptionData, coinName) {
57
+ const compressedPubkey = getCompressedPublicKey(key);
58
+ const ecpair = ECPair.fromPublicKey(compressedPubkey);
59
+ const wasmResult = wasmInscriptions.createInscriptionRevealData(ecpair, contentType, inscriptionData);
60
+ // Convert outputScript to address for the given network
61
+ const address = wasmAddress.fromOutputScriptWithCoin(wasmResult.outputScript, coinName);
113
62
  return {
114
- address: commitAddress,
115
- revealTransactionVSize,
116
- tapLeafScript: tapLeafScript[0],
63
+ address,
64
+ revealTransactionVSize: wasmResult.revealTransactionVSize,
65
+ tapLeafScript: wasmResult.tapLeafScript,
117
66
  };
118
67
  }
119
68
  /**
120
- * @param pubkey
121
- * @param contentType
122
- * @param inscriptionData
123
- * @returns inscription address
124
- */
125
- export function createOutputScriptForInscription(pubkey, contentType, inscriptionData) {
126
- const payment = createPaymentForInscription(pubkey, contentType, inscriptionData);
127
- assert.ok(payment.output, 'Failed to create inscription output script');
128
- return payment.output;
129
- }
130
- /**
69
+ * Sign a reveal transaction.
131
70
  *
132
- * @param privateKey
133
- * @param tapLeafScript
134
- * @param commitAddress
135
- * @param recipientAddress
136
- * @param unsignedCommitTx
137
- * @param network
71
+ * Creates and signs the reveal transaction that spends from the commit output
72
+ * and sends the inscription to the recipient.
138
73
  *
139
- * @return a fully signed reveal transaction
74
+ * @param privateKey - 32-byte private key
75
+ * @param tapLeafScript - The tap leaf script from createInscriptionRevealData
76
+ * @param commitAddress - The commit address
77
+ * @param recipientAddress - Where to send the inscription
78
+ * @param unsignedCommitTx - The unsigned commit transaction bytes
79
+ * @param coinName - Coin name (e.g., "btc", "tbtc")
80
+ * @returns The signed PSBT as bytes
140
81
  */
141
- export function signRevealTransaction(privateKey, tapLeafScript, commitAddress, recipientAddress, unsignedCommitTx, network) {
142
- const unserCommitTxn = utxolib.bitgo.createTransactionFromBuffer(unsignedCommitTx, network);
143
- const hash = unserCommitTxn.getHash();
144
- const commitOutput = utxolib.address.toOutputScript(commitAddress, network);
145
- const vout = unserCommitTxn.outs.findIndex((out) => out.script.equals(commitOutput));
146
- if (vout === -1) {
147
- throw new Error('Invalid commit transaction');
148
- }
149
- const psbt = bitgo.createPsbtForNetwork({ network });
150
- psbt.addInput({
151
- hash,
152
- index: vout,
153
- witnessUtxo: { script: commitOutput, value: BigInt(unserCommitTxn.outs[vout].value) },
154
- tapLeafScript: [tapLeafScript],
155
- });
156
- const recipientOutput = address.toOutputScript(recipientAddress, network);
157
- psbt.addOutput({ script: recipientOutput, value: BigInt(10000) });
158
- const signer = ECPair.fromPrivateKey(privateKey);
159
- const parsedControlBlock = taproot.parseControlBlock(eccLib, tapLeafScript.controlBlock);
160
- const leafHash = taproot.getTapleafHash(eccLib, parsedControlBlock, tapLeafScript.script);
161
- psbt.signTaprootInput(0, signer, [leafHash]);
162
- return psbt;
82
+ export function signRevealTransaction(privateKey, tapLeafScript, commitAddress, recipientAddress, unsignedCommitTx, coinName) {
83
+ const ecpair = ECPair.fromPrivateKey(privateKey);
84
+ const commitTx = Transaction.fromBytes(unsignedCommitTx);
85
+ const commitOutputScript = wasmAddress.toOutputScriptWithCoin(commitAddress, coinName);
86
+ const recipientOutputScript = wasmAddress.toOutputScriptWithCoin(recipientAddress, coinName);
87
+ return wasmInscriptions.signRevealTransaction(ecpair, tapLeafScript, commitTx, commitOutputScript, recipientOutputScript, DEFAULT_POSTAGE_SATS);
163
88
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc2NyaXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztFQUlFO0FBRUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUNMLFlBQVksSUFBSSxRQUFRLEVBQ3hCLEdBQUcsSUFBSSxNQUFNLEVBQ2IsTUFBTSxJQUFJLE9BQU8sRUFHakIsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsTUFBTSxHQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQztBQUczQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3hCLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLDJCQUEyQjtBQUMzQiw4REFBOEQ7QUFDOUQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBTSxDQUFDLENBQUM7QUFFOUM7Ozs7OztHQU1HO0FBQ0gsU0FBUyxXQUFXLENBQUMsZUFBdUIsRUFBRSxTQUFpQjtJQUM3RCxNQUFNLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQzNELGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLGVBQXVCO0lBQy9GLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLEVBQUUsd0JBQXdC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LENBQUMsQ0FBQztJQUNqRCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxNQUFnQixDQUFDLENBQUM7SUFDcEcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5GdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBpbnNjcmlwdGlvbnMuXG5cblNlZSBodHRwczovL2RvY3Mub3JkaW5hbHMuY29tL2luc2NyaXB0aW9ucy5odG1sXG4qL1xuXG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIHAydHJQYXltZW50cyBhcyBwYXltZW50cyxcbiAgZWNjIGFzIGVjY0xpYixcbiAgc2NyaXB0IGFzIGJzY3JpcHQsXG4gIFBheW1lbnQsXG4gIE5ldHdvcmssXG4gIGJpdGdvLFxuICBhZGRyZXNzLFxuICB0YXByb290LFxuICBFQ1BhaXIsXG59IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmNvbnN0IE9QUyA9IGJzY3JpcHQuT1BTO1xuY29uc3QgTUFYX0xFTkdUSF9UQVBfREFUQV9QVVNIID0gNTIwO1xuLy8gZGVmYXVsdCBcInBvc3RhZ2VcIiBhbW91bnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcmRpbmFscy9vcmQvYmxvYi8wLjI0LjIvc3JjL2xpYi5ycyNMMTQ5XG5jb25zdCBERUZBVUxUX1BPU1RBR0VfQU1PVU5UID0gQmlnSW50KDEwXzAwMCk7XG5cbi8qKlxuICogVGhlIG1heCBzaXplIG9mIGFuIGluZGl2aWR1YWwgT1BfUFVTSCBpbiBhIFRhcHJvb3Qgc2NyaXB0IGlzIDUyMCBieXRlcy4gVGhpc1xuICogZnVuY3Rpb24gc3BsaXRzIGluc2NyaXB0aW9uRGF0YSBpbnRvIGFuIGFycmF5IGJ1ZmZlciBvZiA1MjAgYnl0ZXMgbGVuZ3RoLlxuICogaHR0cHM6Ly9kb2NzLm9yZGluYWxzLmNvbS9pbnNjcmlwdGlvbnMuaHRtbFxuICogQHBhcmFtIGluc2NyaXB0aW9uRGF0YVxuICogQHBhcmFtIGNodW5rU2l6ZVxuICovXG5mdW5jdGlvbiBzcGxpdEJ1ZmZlcihpbnNjcmlwdGlvbkRhdGE6IEJ1ZmZlciwgY2h1bmtTaXplOiBudW1iZXIpIHtcbiAgY29uc3QgcHVzaERhdGFCdWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGluc2NyaXB0aW9uRGF0YS5sZW5ndGg7IGkgKz0gY2h1bmtTaXplKSB7XG4gICAgcHVzaERhdGFCdWZmZXJzLnB1c2goaW5zY3JpcHRpb25EYXRhLnNsaWNlKGksIGkgKyBjaHVua1NpemUpKTtcbiAgfVxuXG4gIHJldHVybiBwdXNoRGF0YUJ1ZmZlcnM7XG59XG5cbi8qKlxuICpcbiAqIEByZXR1cm5zIGluc2NyaXB0aW9uIHBheW1lbnQgb2JqZWN0XG4gKiBAcGFyYW0gcHVia2V5XG4gKiBAcGFyYW0gY29udGVudFR5cGVcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGFcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUGF5bWVudEZvckluc2NyaXB0aW9uKHB1YmtleTogQnVmZmVyLCBjb250ZW50VHlwZTogc3RyaW5nLCBpbnNjcmlwdGlvbkRhdGE6IEJ1ZmZlcik6IFBheW1lbnQge1xuICBjb25zdCBkYXRhUHVzaEJ1ZmZlcnMgPSBzcGxpdEJ1ZmZlcihpbnNjcmlwdGlvbkRhdGEsIE1BWF9MRU5HVEhfVEFQX0RBVEFfUFVTSCk7XG5cbiAgY29uc3QgdW5jb21waWxlZFNjcmlwdCA9IFtcbiAgICBwdWJrZXksXG4gICAgT1BTLk9QX0NIRUNLU0lHLFxuICAgIE9QUy5PUF9GQUxTRSxcbiAgICBPUFMuT1BfSUYsXG4gICAgQnVmZmVyLmZyb20oJ29yZCcsICdhc2NpaScpLFxuICAgIDEsIC8vIHRoZXNlIHR3byBsaW5lcyBzaG91bGQgYmUgY29tYmluZWQgYXMgYSBzaW5nbGUgT1BTLk9QXzEsXG4gICAgMSwgLy8gYnV0IGBvcmRgJ3MgZGVjb2RlciBoYXMgYSBidWcgc28gaXQgaGFzIHRvIGJlIGxpa2UgdGhpc1xuICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnRUeXBlLCAnYXNjaWknKSxcbiAgICBPUFMuT1BfMCxcbiAgICAuLi5kYXRhUHVzaEJ1ZmZlcnMsXG4gICAgT1BTLk9QX0VORElGLFxuICBdO1xuXG4gIGNvbnN0IGNvbXBpbGVkU2NyaXB0ID0gYnNjcmlwdC5jb21waWxlKHVuY29tcGlsZWRTY3JpcHQpO1xuICBjb25zdCByZWRlZW06IFBheW1lbnQgPSB7XG4gICAgb3V0cHV0OiBjb21waWxlZFNjcmlwdCxcbiAgICBkZXB0aDogMCxcbiAgfTtcblxuICByZXR1cm4gcGF5bWVudHMucDJ0cih7IHJlZGVlbXM6IFtyZWRlZW1dLCByZWRlZW1JbmRleDogMCB9LCB7IGVjY0xpYiB9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGF5bWVudFxuICogQHBhcmFtIGNvbnRyb2xCbG9ja1xuICogQHBhcmFtIGNvbW1pdE91dHB1dFxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm4gdmlydHVhbCBzaXplIG9mIGEgdHJhbnNhY3Rpb24gd2l0aCBhIHNpbmdsZSBpbnNjcmlwdGlvbiByZXZlYWwgaW5wdXQgYW5kIGEgc2luZ2xlIGNvbW1pdE91dHB1dFxuICovXG5mdW5jdGlvbiBnZXRJbnNjcmlwdGlvblJldmVhbFNpemUoXG4gIHBheW1lbnQ6IFBheW1lbnQsXG4gIGNvbnRyb2xCbG9jazogQnVmZmVyLFxuICBjb21taXRPdXRwdXQ6IEJ1ZmZlcixcbiAgbmV0d29yazogTmV0d29ya1xuKTogbnVtYmVyIHtcbiAgY29uc3QgcHNidCA9IGJpdGdvLmNyZWF0ZVBzYnRGb3JOZXR3b3JrKHsgbmV0d29yayB9KTtcbiAgY29uc3QgcGFyc2VkQ29udHJvbEJsb2NrID0gdGFwcm9vdC5wYXJzZUNvbnRyb2xCbG9jayhlY2NMaWIsIGNvbnRyb2xCbG9jayk7XG4gIGNvbnN0IGxlYWZIYXNoID0gdGFwcm9vdC5nZXRUYXBsZWFmSGFzaChlY2NMaWIsIHBhcnNlZENvbnRyb2xCbG9jaywgcGF5bWVudC5yZWRlZW0/Lm91dHB1dCBhcyBCdWZmZXIpO1xuXG4gIHBzYnQuYWRkSW5wdXQoe1xuICAgIGhhc2g6IEJ1ZmZlci5hbGxvYygzMiksXG4gICAgaW5kZXg6IDAsXG4gICAgd2l0bmVzc1V0eG86IHsgc2NyaXB0OiBjb21taXRPdXRwdXQsIHZhbHVlOiBCaWdJbnQoMTAwXzAwMCkgfSxcbiAgICB0YXBMZWFmU2NyaXB0OiBbXG4gICAgICB7XG4gICAgICAgIGNvbnRyb2xCbG9jayxcbiAgICAgICAgc2NyaXB0OiBwYXltZW50LnJlZGVlbT8ub3V0cHV0IGFzIEJ1ZmZlcixcbiAgICAgICAgbGVhZlZlcnNpb246IHRhcHJvb3QuSU5JVElBTF9UQVBTQ1JJUFRfVkVSU0lPTixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG4gIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiBjb21taXRPdXRwdXQsIHZhbHVlOiBERUZBVUxUX1BPU1RBR0VfQU1PVU5UIH0pO1xuXG4gIHBzYnQuc2lnblRhcHJvb3RJbnB1dChcbiAgICAwLFxuICAgIHtcbiAgICAgIHB1YmxpY0tleTogQnVmZmVyLmFsbG9jKDMyKSxcbiAgICAgIHNpZ25TY2hub3JyKGhhc2g6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgICAgIC8vIGR1bW15IHNjaG5vcnItc2l6ZWQgc2lnbmF0dXJlXG4gICAgICAgIHJldHVybiBCdWZmZXIuYWxsb2MoNjQpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIFtsZWFmSGFzaF1cbiAgKTtcblxuICBwc2J0LmZpbmFsaXplVGFwSW5wdXRXaXRoU2luZ2xlTGVhZlNjcmlwdEFuZFNpZ25hdHVyZSgwKTtcbiAgcmV0dXJuIHBzYnQuZXh0cmFjdFRyYW5zYWN0aW9uKC8qIGRpc2FibGVGZWVDaGVjayAqLyB0cnVlKS52aXJ0dWFsU2l6ZSgpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBwdWJrZXlcbiAqIEBwYXJhbSBjb250ZW50VHlwZVxuICogQHBhcmFtIGluc2NyaXB0aW9uRGF0YVxuICogQHBhcmFtIG5ldHdvcmtcbiAqIEByZXR1cm5zIFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnNjcmlwdGlvblJldmVhbERhdGEoXG4gIHB1YmtleTogQnVmZmVyLFxuICBjb250ZW50VHlwZTogc3RyaW5nLFxuICBpbnNjcmlwdGlvbkRhdGE6IEJ1ZmZlcixcbiAgbmV0d29yazogTmV0d29ya1xuKTogUHJlcGFyZWRJbnNjcmlwdGlvblJldmVhbERhdGEge1xuICBjb25zdCBwYXltZW50ID0gY3JlYXRlUGF5bWVudEZvckluc2NyaXB0aW9uKHB1YmtleSwgY29udGVudFR5cGUsIGluc2NyaXB0aW9uRGF0YSk7XG5cbiAgY29uc3QgeyBvdXRwdXQ6IGNvbW1pdE91dHB1dCwgY29udHJvbEJsb2NrIH0gPSBwYXltZW50O1xuICBhc3NlcnQub2soY29tbWl0T3V0cHV0KTtcbiAgYXNzZXJ0Lm9rKGNvbnRyb2xCbG9jayk7XG4gIGFzc2VydC5vayhwYXltZW50LnJlZGVlbT8ub3V0cHV0KTtcbiAgY29uc3QgY29tbWl0QWRkcmVzcyA9IGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChjb21taXRPdXRwdXQsIG5ldHdvcmspO1xuXG4gIGNvbnN0IHRhcExlYWZTY3JpcHQ6IHV0eG9saWIuYml0Z28uVGFwTGVhZlNjcmlwdFtdID0gW1xuICAgIHtcbiAgICAgIGNvbnRyb2xCbG9jayxcbiAgICAgIHNjcmlwdDogcGF5bWVudC5yZWRlZW0/Lm91dHB1dCxcbiAgICAgIGxlYWZWZXJzaW9uOiB0YXByb290LklOSVRJQUxfVEFQU0NSSVBUX1ZFUlNJT04sXG4gICAgfSxcbiAgXTtcbiAgY29uc3QgcmV2ZWFsVHJhbnNhY3Rpb25WU2l6ZSA9IGdldEluc2NyaXB0aW9uUmV2ZWFsU2l6ZShwYXltZW50LCBjb250cm9sQmxvY2ssIGNvbW1pdE91dHB1dCwgbmV0d29yayk7XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBjb21taXRBZGRyZXNzLFxuICAgIHJldmVhbFRyYW5zYWN0aW9uVlNpemUsXG4gICAgdGFwTGVhZlNjcmlwdDogdGFwTGVhZlNjcmlwdFswXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcHVia2V5XG4gKiBAcGFyYW0gY29udGVudFR5cGVcbiAqIEBwYXJhbSBpbnNjcmlwdGlvbkRhdGFcbiAqIEByZXR1cm5zIGluc2NyaXB0aW9uIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU91dHB1dFNjcmlwdEZvckluc2NyaXB0aW9uKHB1YmtleTogQnVmZmVyLCBjb250ZW50VHlwZTogc3RyaW5nLCBpbnNjcmlwdGlvbkRhdGE6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIGNvbnN0IHBheW1lbnQgPSBjcmVhdGVQYXltZW50Rm9ySW5zY3JpcHRpb24ocHVia2V5LCBjb250ZW50VHlwZSwgaW5zY3JpcHRpb25EYXRhKTtcblxuICBhc3NlcnQub2socGF5bWVudC5vdXRwdXQsICdGYWlsZWQgdG8gY3JlYXRlIGluc2NyaXB0aW9uIG91dHB1dCBzY3JpcHQnKTtcbiAgcmV0dXJuIHBheW1lbnQub3V0cHV0O1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gcHJpdmF0ZUtleVxuICogQHBhcmFtIHRhcExlYWZTY3JpcHRcbiAqIEBwYXJhbSBjb21taXRBZGRyZXNzXG4gKiBAcGFyYW0gcmVjaXBpZW50QWRkcmVzc1xuICogQHBhcmFtIHVuc2lnbmVkQ29tbWl0VHhcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKlxuICogQHJldHVybiBhIGZ1bGx5IHNpZ25lZCByZXZlYWwgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25SZXZlYWxUcmFuc2FjdGlvbihcbiAgcHJpdmF0ZUtleTogQnVmZmVyLFxuICB0YXBMZWFmU2NyaXB0OiB1dHhvbGliLmJpdGdvLlRhcExlYWZTY3JpcHQsXG4gIGNvbW1pdEFkZHJlc3M6IHN0cmluZyxcbiAgcmVjaXBpZW50QWRkcmVzczogc3RyaW5nLFxuICB1bnNpZ25lZENvbW1pdFR4OiBCdWZmZXIsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICBjb25zdCB1bnNlckNvbW1pdFR4biA9IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKHVuc2lnbmVkQ29tbWl0VHgsIG5ldHdvcmspO1xuICBjb25zdCBoYXNoID0gdW5zZXJDb21taXRUeG4uZ2V0SGFzaCgpO1xuICBjb25zdCBjb21taXRPdXRwdXQgPSB1dHhvbGliLmFkZHJlc3MudG9PdXRwdXRTY3JpcHQoY29tbWl0QWRkcmVzcywgbmV0d29yayk7XG4gIGNvbnN0IHZvdXQgPSB1bnNlckNvbW1pdFR4bi5vdXRzLmZpbmRJbmRleCgob3V0KSA9PiBvdXQuc2NyaXB0LmVxdWFscyhjb21taXRPdXRwdXQpKTtcblxuICBpZiAodm91dCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tbWl0IHRyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBjb25zdCBwc2J0ID0gYml0Z28uY3JlYXRlUHNidEZvck5ldHdvcmsoeyBuZXR3b3JrIH0pO1xuICBwc2J0LmFkZElucHV0KHtcbiAgICBoYXNoLFxuICAgIGluZGV4OiB2b3V0LFxuICAgIHdpdG5lc3NVdHhvOiB7IHNjcmlwdDogY29tbWl0T3V0cHV0LCB2YWx1ZTogQmlnSW50KHVuc2VyQ29tbWl0VHhuLm91dHNbdm91dF0udmFsdWUpIH0sXG4gICAgdGFwTGVhZlNjcmlwdDogW3RhcExlYWZTY3JpcHRdLFxuICB9KTtcblxuICBjb25zdCByZWNpcGllbnRPdXRwdXQgPSBhZGRyZXNzLnRvT3V0cHV0U2NyaXB0KHJlY2lwaWVudEFkZHJlc3MsIG5ldHdvcmspO1xuICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdDogcmVjaXBpZW50T3V0cHV0LCB2YWx1ZTogQmlnSW50KDEwXzAwMCkgfSk7XG5cbiAgY29uc3Qgc2lnbmVyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KHByaXZhdGVLZXkpO1xuICBjb25zdCBwYXJzZWRDb250cm9sQmxvY2sgPSB0YXByb290LnBhcnNlQ29udHJvbEJsb2NrKGVjY0xpYiwgdGFwTGVhZlNjcmlwdC5jb250cm9sQmxvY2spO1xuICBjb25zdCBsZWFmSGFzaCA9IHRhcHJvb3QuZ2V0VGFwbGVhZkhhc2goZWNjTGliLCBwYXJzZWRDb250cm9sQmxvY2ssIHRhcExlYWZTY3JpcHQuc2NyaXB0IGFzIEJ1ZmZlcik7XG4gIHBzYnQuc2lnblRhcHJvb3RJbnB1dCgwLCBzaWduZXIsIFtsZWFmSGFzaF0pO1xuXG4gIHJldHVybiBwc2J0O1xufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc2NyaXB0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0VBTUU7QUFFRixPQUFPLEVBQ0wsWUFBWSxJQUFJLGdCQUFnQixFQUNoQyxPQUFPLElBQUksV0FBVyxFQUN0QixXQUFXLEVBQ1gsTUFBTSxHQUdQLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsMkJBQTJCO0FBQzNCLDhEQUE4RDtBQUM5RCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxLQUFNLENBQUMsQ0FBQztBQTBCNUMsU0FBUyxXQUFXLENBQUMsR0FBYTtJQUNoQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLFdBQVcsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLEdBQWE7SUFDM0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFFdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDekIsOERBQThEO1FBQzlELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsR0FBYSxFQUNiLFdBQW1CLEVBQ25CLGVBQTJCO0lBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEcsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO0FBQzdCLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsR0FBYSxFQUNiLFdBQW1CLEVBQ25CLGVBQTJCLEVBQzNCLFFBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFdEcsd0RBQXdEO0lBQ3hELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXhGLE9BQU87UUFDTCxPQUFPO1FBQ1Asc0JBQXNCLEVBQUUsVUFBVSxDQUFDLHNCQUFzQjtRQUN6RCxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7S0FDeEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxVQUFzQixFQUN0QixhQUE0QixFQUM1QixhQUFxQixFQUNyQixnQkFBd0IsRUFDeEIsZ0JBQTRCLEVBQzVCLFFBQWtCO0lBRWxCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RixNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUU3RixPQUFPLGdCQUFnQixDQUFDLHFCQUFxQixDQUMzQyxNQUFNLEVBQ04sYUFBYSxFQUNiLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLG9CQUFvQixDQUNyQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5GdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBpbnNjcmlwdGlvbnMuXG5cbldyYXBwZXIgYXJvdW5kIEBiaXRnby93YXNtLXV0eG8gaW5zY3JpcHRpb24gZnVuY3Rpb25zIGZvciB1dHhvLW9yZCBjb25zdW1lcnMuXG5cblNlZSBodHRwczovL2RvY3Mub3JkaW5hbHMuY29tL2luc2NyaXB0aW9ucy5odG1sXG4qL1xuXG5pbXBvcnQge1xuICBpbnNjcmlwdGlvbnMgYXMgd2FzbUluc2NyaXB0aW9ucyxcbiAgYWRkcmVzcyBhcyB3YXNtQWRkcmVzcyxcbiAgVHJhbnNhY3Rpb24sXG4gIEVDUGFpcixcbiAgdHlwZSBUYXBMZWFmU2NyaXB0LFxuICB0eXBlIENvaW5OYW1lLFxufSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuZXhwb3J0IHR5cGUgeyBUYXBMZWFmU2NyaXB0IH07XG5cbi8vIGRlZmF1bHQgXCJwb3N0YWdlXCIgYW1vdW50XG4vLyBodHRwczovL2dpdGh1Yi5jb20vb3JkaW5hbHMvb3JkL2Jsb2IvMC4yNC4yL3NyYy9saWIucnMjTDE0OVxuY29uc3QgREVGQVVMVF9QT1NUQUdFX1NBVFMgPSBCaWdJbnQoMTBfMDAwKTtcblxuLyoqXG4gKiBQcmVwYXJlZCBkYXRhIGZvciBhbiBpbnNjcmlwdGlvbiByZXZlYWwgdHJhbnNhY3Rpb24uXG4gKiBDb21wYXRpYmxlIHdpdGggc2RrLWNvcmUncyBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZWRJbnNjcmlwdGlvblJldmVhbERhdGEgPSB7XG4gIC8qKiBUaGUgY29tbWl0IGFkZHJlc3MgKGRlcml2ZWQgZnJvbSBvdXRwdXRTY3JpcHQgZm9yIHRoZSBnaXZlbiBuZXR3b3JrKSAqL1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIC8qKiBFc3RpbWF0ZWQgdmlydHVhbCBzaXplIG9mIHRoZSByZXZlYWwgdHJhbnNhY3Rpb24gKi9cbiAgcmV2ZWFsVHJhbnNhY3Rpb25WU2l6ZTogbnVtYmVyO1xuICAvKiogVGFwIGxlYWYgc2NyaXB0IGZvciBzcGVuZGluZyB0aGUgY29tbWl0IG91dHB1dCAqL1xuICB0YXBMZWFmU2NyaXB0OiBUYXBMZWFmU2NyaXB0O1xufTtcblxuLyoqXG4gKiBCSVAzMi1saWtlIGludGVyZmFjZSBjb21wYXRpYmxlIHdpdGggYm90aCB1dHhvLWxpYiBhbmQgd2FzbS11dHhvIEJJUDMyIHR5cGVzLlxuICogVGhlIHB1YmxpY0tleSBjYW4gYmUgQnVmZmVyICh1dHhvLWxpYikgb3IgVWludDhBcnJheSAod2FzbS11dHhvKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCSVAzMkxpa2Uge1xuICBwdWJsaWNLZXk6IFVpbnQ4QXJyYXk7XG59XG5cbi8qKiBJbnB1dCB0eXBlIGZvciBpbnNjcmlwdGlvbiBmdW5jdGlvbnMgLSBlaXRoZXIgYSBCSVAzMi1saWtlIGtleSBvciByYXcgcHVibGljIGtleSBieXRlcyAqL1xuZXhwb3J0IHR5cGUgS2V5SW5wdXQgPSBCSVAzMkxpa2UgfCBVaW50OEFycmF5O1xuXG5mdW5jdGlvbiBpc0JJUDMyTGlrZShrZXk6IEtleUlucHV0KToga2V5IGlzIEJJUDMyTGlrZSB7XG4gIHJldHVybiB0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyAmJiBrZXkgIT09IG51bGwgJiYgJ3B1YmxpY0tleScgaW4ga2V5ICYmICFBcnJheUJ1ZmZlci5pc1ZpZXcoa2V5KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGNvbXByZXNzZWQgcHVibGljIGtleSBmcm9tIGtleSBpbnB1dC5cbiAqIEhhbmRsZXMgQklQMzItbGlrZSBvYmplY3RzIGFuZCByYXcgcHVia2V5IGJ5dGVzICgzMiBvciAzMyBieXRlcykuXG4gKi9cbmZ1bmN0aW9uIGdldENvbXByZXNzZWRQdWJsaWNLZXkoa2V5OiBLZXlJbnB1dCk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBwdWJrZXkgPSBpc0JJUDMyTGlrZShrZXkpID8ga2V5LnB1YmxpY0tleSA6IGtleTtcblxuICBpZiAocHVia2V5Lmxlbmd0aCA9PT0gMzMpIHtcbiAgICByZXR1cm4gcHVia2V5O1xuICB9XG4gIGlmIChwdWJrZXkubGVuZ3RoID09PSAzMikge1xuICAgIC8vIHgtb25seSBwdWJrZXkgLSBwcmVwZW5kIDB4MDIgcGFyaXR5IGJ5dGUgdG8gbWFrZSBjb21wcmVzc2VkXG4gICAgY29uc3QgY29tcHJlc3NlZFB1YmtleSA9IG5ldyBVaW50OEFycmF5KDMzKTtcbiAgICBjb21wcmVzc2VkUHVia2V5WzBdID0gMHgwMjtcbiAgICBjb21wcmVzc2VkUHVia2V5LnNldChwdWJrZXksIDEpO1xuICAgIHJldHVybiBjb21wcmVzc2VkUHVia2V5O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwdWJsaWMga2V5IGxlbmd0aDogJHtwdWJrZXkubGVuZ3RofS4gRXhwZWN0ZWQgMzIgb3IgMzMgYnl0ZXMuYCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBQMlRSIG91dHB1dCBzY3JpcHQgZm9yIGFuIGluc2NyaXB0aW9uLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBCSVAzMiBrZXkgb3IgcHVibGljIGtleSBieXRlcyAoMzItYnl0ZSB4LW9ubHkgb3IgMzMtYnl0ZSBjb21wcmVzc2VkKVxuICogQHBhcmFtIGNvbnRlbnRUeXBlIC0gTUlNRSB0eXBlIG9mIHRoZSBpbnNjcmlwdGlvbiAoZS5nLiwgXCJ0ZXh0L3BsYWluXCIsIFwiaW1hZ2UvcG5nXCIpXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhIC0gVGhlIGluc2NyaXB0aW9uIGRhdGEgYnl0ZXNcbiAqIEByZXR1cm5zIFRoZSBQMlRSIG91dHB1dCBzY3JpcHQgZm9yIHRoZSBpbnNjcmlwdGlvbiBjb21taXQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3V0cHV0U2NyaXB0Rm9ySW5zY3JpcHRpb24oXG4gIGtleTogS2V5SW5wdXQsXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmcsXG4gIGluc2NyaXB0aW9uRGF0YTogVWludDhBcnJheVxuKTogVWludDhBcnJheSB7XG4gIGNvbnN0IGNvbXByZXNzZWRQdWJrZXkgPSBnZXRDb21wcmVzc2VkUHVibGljS2V5KGtleSk7XG4gIGNvbnN0IGVjcGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KGNvbXByZXNzZWRQdWJrZXkpO1xuICBjb25zdCByZXN1bHQgPSB3YXNtSW5zY3JpcHRpb25zLmNyZWF0ZUluc2NyaXB0aW9uUmV2ZWFsRGF0YShlY3BhaXIsIGNvbnRlbnRUeXBlLCBpbnNjcmlwdGlvbkRhdGEpO1xuICByZXR1cm4gcmVzdWx0Lm91dHB1dFNjcmlwdDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgaW5zY3JpcHRpb24gcmV2ZWFsIGRhdGEgaW5jbHVkaW5nIHRoZSBjb21taXQgYWRkcmVzcyBhbmQgdGFwIGxlYWYgc2NyaXB0LlxuICpcbiAqIEBwYXJhbSBrZXkgLSBCSVAzMiBrZXkgb3IgcHVibGljIGtleSBieXRlcyAoMzItYnl0ZSB4LW9ubHkgb3IgMzMtYnl0ZSBjb21wcmVzc2VkKVxuICogQHBhcmFtIGNvbnRlbnRUeXBlIC0gTUlNRSB0eXBlIG9mIHRoZSBpbnNjcmlwdGlvbiAoZS5nLiwgXCJ0ZXh0L3BsYWluXCIsIFwiaW1hZ2UvcG5nXCIpXG4gKiBAcGFyYW0gaW5zY3JpcHRpb25EYXRhIC0gVGhlIGluc2NyaXB0aW9uIGRhdGEgYnl0ZXNcbiAqIEBwYXJhbSBjb2luTmFtZSAtIENvaW4gbmFtZSAoZS5nLiwgXCJidGNcIiwgXCJ0YnRjXCIpXG4gKiBAcmV0dXJucyBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSB3aXRoIGFkZHJlc3MsIHZzaXplIGVzdGltYXRlLCBhbmQgdGFwIGxlYWYgc2NyaXB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnNjcmlwdGlvblJldmVhbERhdGEoXG4gIGtleTogS2V5SW5wdXQsXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmcsXG4gIGluc2NyaXB0aW9uRGF0YTogVWludDhBcnJheSxcbiAgY29pbk5hbWU6IENvaW5OYW1lXG4pOiBQcmVwYXJlZEluc2NyaXB0aW9uUmV2ZWFsRGF0YSB7XG4gIGNvbnN0IGNvbXByZXNzZWRQdWJrZXkgPSBnZXRDb21wcmVzc2VkUHVibGljS2V5KGtleSk7XG4gIGNvbnN0IGVjcGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KGNvbXByZXNzZWRQdWJrZXkpO1xuXG4gIGNvbnN0IHdhc21SZXN1bHQgPSB3YXNtSW5zY3JpcHRpb25zLmNyZWF0ZUluc2NyaXB0aW9uUmV2ZWFsRGF0YShlY3BhaXIsIGNvbnRlbnRUeXBlLCBpbnNjcmlwdGlvbkRhdGEpO1xuXG4gIC8vIENvbnZlcnQgb3V0cHV0U2NyaXB0IHRvIGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBuZXR3b3JrXG4gIGNvbnN0IGFkZHJlc3MgPSB3YXNtQWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0V2l0aENvaW4od2FzbVJlc3VsdC5vdXRwdXRTY3JpcHQsIGNvaW5OYW1lKTtcblxuICByZXR1cm4ge1xuICAgIGFkZHJlc3MsXG4gICAgcmV2ZWFsVHJhbnNhY3Rpb25WU2l6ZTogd2FzbVJlc3VsdC5yZXZlYWxUcmFuc2FjdGlvblZTaXplLFxuICAgIHRhcExlYWZTY3JpcHQ6IHdhc21SZXN1bHQudGFwTGVhZlNjcmlwdCxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaWduIGEgcmV2ZWFsIHRyYW5zYWN0aW9uLlxuICpcbiAqIENyZWF0ZXMgYW5kIHNpZ25zIHRoZSByZXZlYWwgdHJhbnNhY3Rpb24gdGhhdCBzcGVuZHMgZnJvbSB0aGUgY29tbWl0IG91dHB1dFxuICogYW5kIHNlbmRzIHRoZSBpbnNjcmlwdGlvbiB0byB0aGUgcmVjaXBpZW50LlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5IC0gMzItYnl0ZSBwcml2YXRlIGtleVxuICogQHBhcmFtIHRhcExlYWZTY3JpcHQgLSBUaGUgdGFwIGxlYWYgc2NyaXB0IGZyb20gY3JlYXRlSW5zY3JpcHRpb25SZXZlYWxEYXRhXG4gKiBAcGFyYW0gY29tbWl0QWRkcmVzcyAtIFRoZSBjb21taXQgYWRkcmVzc1xuICogQHBhcmFtIHJlY2lwaWVudEFkZHJlc3MgLSBXaGVyZSB0byBzZW5kIHRoZSBpbnNjcmlwdGlvblxuICogQHBhcmFtIHVuc2lnbmVkQ29tbWl0VHggLSBUaGUgdW5zaWduZWQgY29tbWl0IHRyYW5zYWN0aW9uIGJ5dGVzXG4gKiBAcGFyYW0gY29pbk5hbWUgLSBDb2luIG5hbWUgKGUuZy4sIFwiYnRjXCIsIFwidGJ0Y1wiKVxuICogQHJldHVybnMgVGhlIHNpZ25lZCBQU0JUIGFzIGJ5dGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduUmV2ZWFsVHJhbnNhY3Rpb24oXG4gIHByaXZhdGVLZXk6IFVpbnQ4QXJyYXksXG4gIHRhcExlYWZTY3JpcHQ6IFRhcExlYWZTY3JpcHQsXG4gIGNvbW1pdEFkZHJlc3M6IHN0cmluZyxcbiAgcmVjaXBpZW50QWRkcmVzczogc3RyaW5nLFxuICB1bnNpZ25lZENvbW1pdFR4OiBVaW50OEFycmF5LFxuICBjb2luTmFtZTogQ29pbk5hbWVcbik6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBlY3BhaXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkocHJpdmF0ZUtleSk7XG4gIGNvbnN0IGNvbW1pdFR4ID0gVHJhbnNhY3Rpb24uZnJvbUJ5dGVzKHVuc2lnbmVkQ29tbWl0VHgpO1xuICBjb25zdCBjb21taXRPdXRwdXRTY3JpcHQgPSB3YXNtQWRkcmVzcy50b091dHB1dFNjcmlwdFdpdGhDb2luKGNvbW1pdEFkZHJlc3MsIGNvaW5OYW1lKTtcbiAgY29uc3QgcmVjaXBpZW50T3V0cHV0U2NyaXB0ID0gd2FzbUFkZHJlc3MudG9PdXRwdXRTY3JpcHRXaXRoQ29pbihyZWNpcGllbnRBZGRyZXNzLCBjb2luTmFtZSk7XG5cbiAgcmV0dXJuIHdhc21JbnNjcmlwdGlvbnMuc2lnblJldmVhbFRyYW5zYWN0aW9uKFxuICAgIGVjcGFpcixcbiAgICB0YXBMZWFmU2NyaXB0LFxuICAgIGNvbW1pdFR4LFxuICAgIGNvbW1pdE91dHB1dFNjcmlwdCxcbiAgICByZWNpcGllbnRPdXRwdXRTY3JpcHQsXG4gICAgREVGQVVMVF9QT1NUQUdFX1NBVFNcbiAgKTtcbn1cbiJdfQ==
@@ -1,21 +1,38 @@
1
- import { Network, bitgo } from '@bitgo/utxo-lib';
1
+ import { fixedScriptWallet, type CoinName } from '@bitgo/wasm-utxo';
2
2
  import { SatPoint } from './SatPoint';
3
3
  import { OutputLayout } from './OutputLayout';
4
- type WalletUnspent = bitgo.WalletUnspent<bigint>;
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: bitgo.ChainCode;
23
+ chain: fixedScriptWallet.ChainCode;
7
24
  index: number;
8
25
  };
9
26
  export type WalletInputBuilder = {
10
- walletKeys: bitgo.RootWalletKeys;
11
- signer: bitgo.KeyName;
12
- cosigner: bitgo.KeyName;
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 | Buffer;
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(network: Network, inputBuilder: WalletInputBuilder, unspents: WalletUnspent[], outputs: InscriptionTransactionOutputs, outputLayout: OutputLayout): bitgo.UtxoPsbt;
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 network
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(network: Network, inputBuilder: WalletInputBuilder, unspent: WalletUnspent | WalletUnspent[], satPoint: SatPoint, outputs: InscriptionTransactionOutputs, constraints: InscriptionTransactionConstraints, { supplementaryUnspents, minimizeInputs, }?: {
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
- }): bitgo.UtxoPsbt;
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,OAAO,EAAE,KAAK,EAAW,MAAM,iBAAiB,CAAC;AAI1D,OAAO,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAA0B,YAAY,EAA6B,MAAM,gBAAgB,CAAC;AAGjG,KAAK,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,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,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;CACrD,CAAC;AAEF,kBAAkB;AAClB,MAAM,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAE/D,MAAM,MAAM,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,CAwChB;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,CA4C/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"}
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../src/psbt.ts"],"names":[],"mappings":"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"}