@bitgo-beta/utxo-descriptors 0.0.1-beta.276 → 0.0.1-beta.278

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.
Files changed (39) hide show
  1. package/dist/cjs/src/pox5/descriptor.d.ts +2 -2
  2. package/dist/cjs/src/pox5/descriptor.d.ts.map +1 -1
  3. package/dist/cjs/src/pox5/descriptor.js +5 -4
  4. package/dist/cjs/src/pox5/index.d.ts +2 -0
  5. package/dist/cjs/src/pox5/index.d.ts.map +1 -1
  6. package/dist/cjs/src/pox5/index.js +3 -1
  7. package/dist/cjs/src/pox5/input.d.ts +28 -0
  8. package/dist/cjs/src/pox5/input.d.ts.map +1 -0
  9. package/dist/cjs/src/pox5/input.js +47 -0
  10. package/dist/cjs/src/pox5/parseDescriptor.d.ts +5 -3
  11. package/dist/cjs/src/pox5/parseDescriptor.d.ts.map +1 -1
  12. package/dist/cjs/src/pox5/parseDescriptor.js +5 -6
  13. package/dist/cjs/src/pox5/validation.d.ts +12 -0
  14. package/dist/cjs/src/pox5/validation.d.ts.map +1 -0
  15. package/dist/cjs/src/pox5/validation.js +70 -0
  16. package/dist/cjs/test/unit/pox5/descriptor.js +4 -5
  17. package/dist/cjs/test/unit/pox5/input.d.ts +2 -0
  18. package/dist/cjs/test/unit/pox5/input.d.ts.map +1 -0
  19. package/dist/cjs/test/unit/pox5/input.js +113 -0
  20. package/dist/cjs/test/unit/pox5/validation.d.ts +2 -0
  21. package/dist/cjs/test/unit/pox5/validation.d.ts.map +1 -0
  22. package/dist/cjs/test/unit/pox5/validation.js +99 -0
  23. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  24. package/dist/esm/pox5/descriptor.d.ts +2 -2
  25. package/dist/esm/pox5/descriptor.d.ts.map +1 -1
  26. package/dist/esm/pox5/descriptor.js +5 -4
  27. package/dist/esm/pox5/index.d.ts +2 -0
  28. package/dist/esm/pox5/index.d.ts.map +1 -1
  29. package/dist/esm/pox5/index.js +3 -1
  30. package/dist/esm/pox5/input.d.ts +28 -0
  31. package/dist/esm/pox5/input.d.ts.map +1 -0
  32. package/dist/esm/pox5/input.js +43 -0
  33. package/dist/esm/pox5/parseDescriptor.d.ts +5 -3
  34. package/dist/esm/pox5/parseDescriptor.d.ts.map +1 -1
  35. package/dist/esm/pox5/parseDescriptor.js +6 -7
  36. package/dist/esm/pox5/validation.d.ts +12 -0
  37. package/dist/esm/pox5/validation.d.ts.map +1 -0
  38. package/dist/esm/pox5/validation.js +65 -0
  39. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import { bip32 } from '@bitgo/wasm-utxo';
1
+ import { bip32, Descriptor } from '@bitgo/wasm-utxo';
2
2
  type BIP32Interface = bip32.BIP32Interface;
3
3
  export type Pox5StakerKey = BIP32Interface | Buffer;
4
4
  export type Pox5LockupDescriptorParams = {
@@ -13,7 +13,7 @@ export type Pox5LockupDescriptorParams = {
13
13
  * Build the canonical PoX-5 P2WSH descriptor. The post-CLTV and early-exit
14
14
  * paths share BitGo's standard 2-of-3 compressed-key multisig tail.
15
15
  */
16
- export declare function createPox5LockupDescriptor(params: Pox5LockupDescriptorParams): string;
16
+ export declare function createPox5LockupDescriptor(params: Pox5LockupDescriptorParams): Descriptor;
17
17
  /** Compile the PoX-5 P2WSH scriptPubKey at a BIP32 derivation index. */
18
18
  export declare function createPox5LockupScriptPubKey(params: Pox5LockupDescriptorParams, derivationIndex?: number): Buffer;
19
19
  /** Derive the compressed staker keys needed to prepare a witness at an index. */
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../../src/pox5/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAc,MAAM,kBAAkB,CAAC;AAE1D,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;CAC3D,CAAC;AA0CF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAoBrF;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,0BAA0B,EAAE,eAAe,SAAI,GAAG,MAAM,CAQ5G;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,EAC5D,KAAK,EAAE,MAAM,GACZ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG1B"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../../src/pox5/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE1D,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;CAC3D,CAAC;AA0CF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,GAAG,UAAU,CAqBzF;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,0BAA0B,EAAE,eAAe,SAAI,GAAG,MAAM,CAM5G;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,EAC5D,KAAK,EAAE,MAAM,GACZ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG1B"}
@@ -60,19 +60,20 @@ function createPox5LockupDescriptor(params) {
60
60
  { multi: [2, ...stakerKeys] },
61
61
  ],
62
62
  };
63
- return wasm_utxo_1.ast.formatNode({ wsh: miniscript });
63
+ const descriptorString = wasm_utxo_1.ast.formatNode({ wsh: miniscript });
64
+ return wasm_utxo_1.Descriptor.fromString(descriptorString, isBip32Triple(params.stakerKeys) ? 'derivable' : 'definite');
64
65
  }
65
66
  /** Compile the PoX-5 P2WSH scriptPubKey at a BIP32 derivation index. */
66
67
  function createPox5LockupScriptPubKey(params, derivationIndex = 0) {
67
68
  const descriptor = createPox5LockupDescriptor(params);
68
69
  if (isBip32Triple(params.stakerKeys)) {
69
- return Buffer.from(wasm_utxo_1.Descriptor.fromString(descriptor, 'derivable').atDerivationIndex(derivationIndex).scriptPubkey());
70
+ return Buffer.from(descriptor.atDerivationIndex(derivationIndex).scriptPubkey());
70
71
  }
71
- return Buffer.from(wasm_utxo_1.Descriptor.fromString(descriptor, 'definite').scriptPubkey());
72
+ return Buffer.from(descriptor.scriptPubkey());
72
73
  }
73
74
  /** Derive the compressed staker keys needed to prepare a witness at an index. */
74
75
  function derivePox5StakerKeys(stakerKeys, index) {
75
76
  const keys = stakerKeys.map((key) => Buffer.from(key.derive(index).publicKey));
76
77
  return [keys[0], keys[1], keys[2]];
77
78
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wb3g1L2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyREEsZ0VBb0JDO0FBR0Qsb0VBUUM7QUFHRCxvREFNQztBQW5HRCxnREFBMEQ7QUFlMUQsU0FBUyxxQkFBcUIsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUN2RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLElBQThDO0lBRTlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEdBQWtCLEVBQUUsS0FBYTtJQUN4RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQWtDO0lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFN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QUVELGlGQUFpRjtBQUNqRixTQUFnQixvQkFBb0IsQ0FDbEMsVUFBNEQsRUFDNUQsS0FBYTtJQUViLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9FLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3QsIGJpcDMyLCBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgQklQMzJJbnRlcmZhY2UgPSBiaXAzMi5CSVAzMkludGVyZmFjZTtcblxuZXhwb3J0IHR5cGUgUG94NVN0YWtlcktleSA9IEJJUDMySW50ZXJmYWNlIHwgQnVmZmVyO1xuXG5leHBvcnQgdHlwZSBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcyA9IHtcbiAgdW5sb2NrSGVpZ2h0OiBudW1iZXI7XG4gIC8qKiBzaGEyNTYoc2hhMjU2KENsYXJpdHkgY29uc2Vuc3VzIHByaW5jaXBhbCBieXRlcykpLiAqL1xuICBzdGFrZXJDb21taXRtZW50OiBCdWZmZXI7XG4gIGVhcmx5RXhpdEtleTogQnVmZmVyO1xuICAvKiogVXNlciwgYmFja3VwLCBhbmQgQml0R28ga2V5cywgYWxsIEJJUDMyIG9yIGFsbCBjb25jcmV0ZSBjb21wcmVzc2VkIGtleXMuICovXG4gIHN0YWtlcktleXM6IFtQb3g1U3Rha2VyS2V5LCBQb3g1U3Rha2VyS2V5LCBQb3g1U3Rha2VyS2V5XTtcbn07XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcHJlc3NlZEtleShrZXk6IEJ1ZmZlciwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoa2V5Lmxlbmd0aCAhPT0gMzMgfHwgKGtleVswXSAhPT0gMHgwMiAmJiBrZXlbMF0gIT09IDB4MDMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2ZpZWxkfSBtdXN0IGJlIGEgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXlgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JpcDMyVHJpcGxlKFxuICBrZXlzOiBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtc1snc3Rha2VyS2V5cyddXG4pOiBrZXlzIGlzIFtCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlXSB7XG4gIHJldHVybiBrZXlzLmV2ZXJ5KChrZXkpID0+ICFCdWZmZXIuaXNCdWZmZXIoa2V5KSk7XG59XG5cbmZ1bmN0aW9uIGFzRGVzY3JpcHRvcktleShrZXk6IFBveDVTdGFrZXJLZXksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGtleSkpIHtcbiAgICB2YWxpZGF0ZUNvbXByZXNzZWRLZXkoa2V5LCBmaWVsZCk7XG4gICAgcmV0dXJuIGtleS50b1N0cmluZygnaGV4Jyk7XG4gIH1cbiAgcmV0dXJuIGtleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgKyAnLyonO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVBhcmFtcyhwYXJhbXM6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zKTogdm9pZCB7XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIocGFyYW1zLnVubG9ja0hlaWdodCkgfHwgcGFyYW1zLnVubG9ja0hlaWdodCA8PSAwIHx8IHBhcmFtcy51bmxvY2tIZWlnaHQgPj0gNTAwXzAwMF8wMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVubG9ja0hlaWdodCAoJHtwYXJhbXMudW5sb2NrSGVpZ2h0fSkgbXVzdCBiZSBhIHBvc2l0aXZlIGJsb2NrIGhlaWdodCBiZWxvdyA1MDAwMDAwMDBgKTtcbiAgfVxuICBpZiAocGFyYW1zLnN0YWtlckNvbW1pdG1lbnQubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3Rha2VyQ29tbWl0bWVudCBtdXN0IGJlIDMyIGJ5dGVzIChnb3QgJHtwYXJhbXMuc3Rha2VyQ29tbWl0bWVudC5sZW5ndGh9KWApO1xuICB9XG4gIHZhbGlkYXRlQ29tcHJlc3NlZEtleShwYXJhbXMuZWFybHlFeGl0S2V5LCAnZWFybHlFeGl0S2V5Jyk7XG5cbiAgY29uc3QgYnVmZmVyQ291bnQgPSBwYXJhbXMuc3Rha2VyS2V5cy5maWx0ZXIoQnVmZmVyLmlzQnVmZmVyKS5sZW5ndGg7XG4gIGlmIChidWZmZXJDb3VudCAhPT0gMCAmJiBidWZmZXJDb3VudCAhPT0gcGFyYW1zLnN0YWtlcktleXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzdGFrZXJLZXlzIG11c3QgY29udGFpbiBlaXRoZXIgdGhyZWUgQklQMzIga2V5cyBvciB0aHJlZSBjb21wcmVzc2VkIHB1YmxpYyBrZXlzJyk7XG4gIH1cbiAgcGFyYW1zLnN0YWtlcktleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgICAgdmFsaWRhdGVDb21wcmVzc2VkS2V5KGtleSwgYHN0YWtlcktleXNbJHtpbmRleH1dYCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgY2Fub25pY2FsIFBvWC01IFAyV1NIIGRlc2NyaXB0b3IuIFRoZSBwb3N0LUNMVFYgYW5kIGVhcmx5LWV4aXRcbiAqIHBhdGhzIHNoYXJlIEJpdEdvJ3Mgc3RhbmRhcmQgMi1vZi0zIGNvbXByZXNzZWQta2V5IG11bHRpc2lnIHRhaWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXM6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zKTogc3RyaW5nIHtcbiAgdmFsaWRhdGVQYXJhbXMocGFyYW1zKTtcbiAgY29uc3Qgc3Rha2VyS2V5cyA9IHBhcmFtcy5zdGFrZXJLZXlzLm1hcCgoa2V5LCBpbmRleCkgPT4gYXNEZXNjcmlwdG9yS2V5KGtleSwgYHN0YWtlcktleXNbJHtpbmRleH1dYCkpO1xuICBjb25zdCBtaW5pc2NyaXB0OiBhc3QuTWluaXNjcmlwdE5vZGUgPSB7XG4gICAgYW5kX3Y6IFtcbiAgICAgIHtcbiAgICAgICAgJ3Y6b3JfaSc6IFtcbiAgICAgICAgICB7IGFmdGVyOiBwYXJhbXMudW5sb2NrSGVpZ2h0IH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYW5kX3Y6IFtcbiAgICAgICAgICAgICAgeyAndjpzaGEyNTYnOiBwYXJhbXMuc3Rha2VyQ29tbWl0bWVudC50b1N0cmluZygnaGV4JykgfSxcbiAgICAgICAgICAgICAgeyBwazogcGFyYW1zLmVhcmx5RXhpdEtleS50b1N0cmluZygnaGV4JykgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7IG11bHRpOiBbMiwgLi4uc3Rha2VyS2V5c10gfSxcbiAgICBdLFxuICB9O1xuICByZXR1cm4gYXN0LmZvcm1hdE5vZGUoeyB3c2g6IG1pbmlzY3JpcHQgfSk7XG59XG5cbi8qKiBDb21waWxlIHRoZSBQb1gtNSBQMldTSCBzY3JpcHRQdWJLZXkgYXQgYSBCSVAzMiBkZXJpdmF0aW9uIGluZGV4LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBveDVMb2NrdXBTY3JpcHRQdWJLZXkocGFyYW1zOiBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcywgZGVyaXZhdGlvbkluZGV4ID0gMCk6IEJ1ZmZlciB7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXMpO1xuICBpZiAoaXNCaXAzMlRyaXBsZShwYXJhbXMuc3Rha2VyS2V5cykpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oXG4gICAgICBEZXNjcmlwdG9yLmZyb21TdHJpbmcoZGVzY3JpcHRvciwgJ2Rlcml2YWJsZScpLmF0RGVyaXZhdGlvbkluZGV4KGRlcml2YXRpb25JbmRleCkuc2NyaXB0UHVia2V5KClcbiAgICApO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShEZXNjcmlwdG9yLmZyb21TdHJpbmcoZGVzY3JpcHRvciwgJ2RlZmluaXRlJykuc2NyaXB0UHVia2V5KCkpO1xufVxuXG4vKiogRGVyaXZlIHRoZSBjb21wcmVzc2VkIHN0YWtlciBrZXlzIG5lZWRlZCB0byBwcmVwYXJlIGEgd2l0bmVzcyBhdCBhbiBpbmRleC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVQb3g1U3Rha2VyS2V5cyhcbiAgc3Rha2VyS2V5czogW0JJUDMySW50ZXJmYWNlLCBCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2VdLFxuICBpbmRleDogbnVtYmVyXG4pOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl0ge1xuICBjb25zdCBrZXlzID0gc3Rha2VyS2V5cy5tYXAoKGtleSkgPT4gQnVmZmVyLmZyb20oa2V5LmRlcml2ZShpbmRleCkucHVibGljS2V5KSk7XG4gIHJldHVybiBba2V5c1swXSwga2V5c1sxXSwga2V5c1syXV07XG59XG4iXX0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wb3g1L2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyREEsZ0VBcUJDO0FBR0Qsb0VBTUM7QUFHRCxvREFNQztBQWxHRCxnREFBMEQ7QUFlMUQsU0FBUyxxQkFBcUIsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUN2RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLElBQThDO0lBRTlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEdBQWtCLEVBQUUsS0FBYTtJQUN4RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQWtDO0lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxNQUFN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LE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixTQUFnQixvQkFBb0IsQ0FDbEMsVUFBNEQsRUFDNUQsS0FBYTtJQUViLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9FLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3QsIGJpcDMyLCBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgQklQMzJJbnRlcmZhY2UgPSBiaXAzMi5CSVAzMkludGVyZmFjZTtcblxuZXhwb3J0IHR5cGUgUG94NVN0YWtlcktleSA9IEJJUDMySW50ZXJmYWNlIHwgQnVmZmVyO1xuXG5leHBvcnQgdHlwZSBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcyA9IHtcbiAgdW5sb2NrSGVpZ2h0OiBudW1iZXI7XG4gIC8qKiBzaGEyNTYoc2hhMjU2KENsYXJpdHkgY29uc2Vuc3VzIHByaW5jaXBhbCBieXRlcykpLiAqL1xuICBzdGFrZXJDb21taXRtZW50OiBCdWZmZXI7XG4gIGVhcmx5RXhpdEtleTogQnVmZmVyO1xuICAvKiogVXNlciwgYmFja3VwLCBhbmQgQml0R28ga2V5cywgYWxsIEJJUDMyIG9yIGFsbCBjb25jcmV0ZSBjb21wcmVzc2VkIGtleXMuICovXG4gIHN0YWtlcktleXM6IFtQb3g1U3Rha2VyS2V5LCBQb3g1U3Rha2VyS2V5LCBQb3g1U3Rha2VyS2V5XTtcbn07XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ29tcHJlc3NlZEtleShrZXk6IEJ1ZmZlciwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoa2V5Lmxlbmd0aCAhPT0gMzMgfHwgKGtleVswXSAhPT0gMHgwMiAmJiBrZXlbMF0gIT09IDB4MDMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2ZpZWxkfSBtdXN0IGJlIGEgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXlgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JpcDMyVHJpcGxlKFxuICBrZXlzOiBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtc1snc3Rha2VyS2V5cyddXG4pOiBrZXlzIGlzIFtCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlXSB7XG4gIHJldHVybiBrZXlzLmV2ZXJ5KChrZXkpID0+ICFCdWZmZXIuaXNCdWZmZXIoa2V5KSk7XG59XG5cbmZ1bmN0aW9uIGFzRGVzY3JpcHRvcktleShrZXk6IFBveDVTdGFrZXJLZXksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGtleSkpIHtcbiAgICB2YWxpZGF0ZUNvbXByZXNzZWRLZXkoa2V5LCBmaWVsZCk7XG4gICAgcmV0dXJuIGtleS50b1N0cmluZygnaGV4Jyk7XG4gIH1cbiAgcmV0dXJuIGtleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgKyAnLyonO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVBhcmFtcyhwYXJhbXM6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zKTogdm9pZCB7XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIocGFyYW1zLnVubG9ja0hlaWdodCkgfHwgcGFyYW1zLnVubG9ja0hlaWdodCA8PSAwIHx8IHBhcmFtcy51bmxvY2tIZWlnaHQgPj0gNTAwXzAwMF8wMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVubG9ja0hlaWdodCAoJHtwYXJhbXMudW5sb2NrSGVpZ2h0fSkgbXVzdCBiZSBhIHBvc2l0aXZlIGJsb2NrIGhlaWdodCBiZWxvdyA1MDAwMDAwMDBgKTtcbiAgfVxuICBpZiAocGFyYW1zLnN0YWtlckNvbW1pdG1lbnQubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgc3Rha2VyQ29tbWl0bWVudCBtdXN0IGJlIDMyIGJ5dGVzIChnb3QgJHtwYXJhbXMuc3Rha2VyQ29tbWl0bWVudC5sZW5ndGh9KWApO1xuICB9XG4gIHZhbGlkYXRlQ29tcHJlc3NlZEtleShwYXJhbXMuZWFybHlFeGl0S2V5LCAnZWFybHlFeGl0S2V5Jyk7XG5cbiAgY29uc3QgYnVmZmVyQ291bnQgPSBwYXJhbXMuc3Rha2VyS2V5cy5maWx0ZXIoQnVmZmVyLmlzQnVmZmVyKS5sZW5ndGg7XG4gIGlmIChidWZmZXJDb3VudCAhPT0gMCAmJiBidWZmZXJDb3VudCAhPT0gcGFyYW1zLnN0YWtlcktleXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzdGFrZXJLZXlzIG11c3QgY29udGFpbiBlaXRoZXIgdGhyZWUgQklQMzIga2V5cyBvciB0aHJlZSBjb21wcmVzc2VkIHB1YmxpYyBrZXlzJyk7XG4gIH1cbiAgcGFyYW1zLnN0YWtlcktleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgICAgdmFsaWRhdGVDb21wcmVzc2VkS2V5KGtleSwgYHN0YWtlcktleXNbJHtpbmRleH1dYCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgY2Fub25pY2FsIFBvWC01IFAyV1NIIGRlc2NyaXB0b3IuIFRoZSBwb3N0LUNMVFYgYW5kIGVhcmx5LWV4aXRcbiAqIHBhdGhzIHNoYXJlIEJpdEdvJ3Mgc3RhbmRhcmQgMi1vZi0zIGNvbXByZXNzZWQta2V5IG11bHRpc2lnIHRhaWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXM6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zKTogRGVzY3JpcHRvciB7XG4gIHZhbGlkYXRlUGFyYW1zKHBhcmFtcyk7XG4gIGNvbnN0IHN0YWtlcktleXMgPSBwYXJhbXMuc3Rha2VyS2V5cy5tYXAoKGtleSwgaW5kZXgpID0+IGFzRGVzY3JpcHRvcktleShrZXksIGBzdGFrZXJLZXlzWyR7aW5kZXh9XWApKTtcbiAgY29uc3QgbWluaXNjcmlwdDogYXN0Lk1pbmlzY3JpcHROb2RlID0ge1xuICAgIGFuZF92OiBbXG4gICAgICB7XG4gICAgICAgICd2Om9yX2knOiBbXG4gICAgICAgICAgeyBhZnRlcjogcGFyYW1zLnVubG9ja0hlaWdodCB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFuZF92OiBbXG4gICAgICAgICAgICAgIHsgJ3Y6c2hhMjU2JzogcGFyYW1zLnN0YWtlckNvbW1pdG1lbnQudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgICAgICAgIHsgcGs6IHBhcmFtcy5lYXJseUV4aXRLZXkudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgeyBtdWx0aTogWzIsIC4uLnN0YWtlcktleXNdIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgZGVzY3JpcHRvclN0cmluZyA9IGFzdC5mb3JtYXROb2RlKHsgd3NoOiBtaW5pc2NyaXB0IH0pO1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGRlc2NyaXB0b3JTdHJpbmcsIGlzQmlwMzJUcmlwbGUocGFyYW1zLnN0YWtlcktleXMpID8gJ2Rlcml2YWJsZScgOiAnZGVmaW5pdGUnKTtcbn1cblxuLyoqIENvbXBpbGUgdGhlIFBvWC01IFAyV1NIIHNjcmlwdFB1YktleSBhdCBhIEJJUDMyIGRlcml2YXRpb24gaW5kZXguICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG94NUxvY2t1cFNjcmlwdFB1YktleShwYXJhbXM6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zLCBkZXJpdmF0aW9uSW5kZXggPSAwKTogQnVmZmVyIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKHBhcmFtcyk7XG4gIGlmIChpc0JpcDMyVHJpcGxlKHBhcmFtcy5zdGFrZXJLZXlzKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KGRlcml2YXRpb25JbmRleCkuc2NyaXB0UHVia2V5KCkpO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShkZXNjcmlwdG9yLnNjcmlwdFB1YmtleSgpKTtcbn1cblxuLyoqIERlcml2ZSB0aGUgY29tcHJlc3NlZCBzdGFrZXIga2V5cyBuZWVkZWQgdG8gcHJlcGFyZSBhIHdpdG5lc3MgYXQgYW4gaW5kZXguICovXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlUG94NVN0YWtlcktleXMoXG4gIHN0YWtlcktleXM6IFtCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlXSxcbiAgaW5kZXg6IG51bWJlclxuKTogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdIHtcbiAgY29uc3Qga2V5cyA9IHN0YWtlcktleXMubWFwKChrZXkpID0+IEJ1ZmZlci5mcm9tKGtleS5kZXJpdmUoaW5kZXgpLnB1YmxpY0tleSkpO1xuICByZXR1cm4gW2tleXNbMF0sIGtleXNbMV0sIGtleXNbMl1dO1xufVxuIl19
@@ -1,3 +1,5 @@
1
1
  export * from './descriptor';
2
2
  export * from './parseDescriptor';
3
+ export * from './input';
4
+ export * from './validation';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pox5/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pox5/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
@@ -16,4 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./descriptor"), exports);
18
18
  __exportStar(require("./parseDescriptor"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcG94NS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLG9EQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3BhcnNlRGVzY3JpcHRvcic7XG4iXX0=
19
+ __exportStar(require("./input"), exports);
20
+ __exportStar(require("./validation"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcG94NS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLG9EQUFrQztBQUNsQywwQ0FBd0I7QUFDeEIsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcGFyc2VEZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0aW9uJztcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Descriptor, Psbt, descriptorWallet } from '@bitgo/wasm-utxo';
2
+ import { Pox5DescriptorInfo } from './parseDescriptor';
3
+ type ResolvedPox5DescriptorInfo = Pox5DescriptorInfo & {
4
+ stakerKeys: [Buffer, Buffer, Buffer];
5
+ };
6
+ export type Pox5DescriptorMatch = {
7
+ /** The concrete descriptor whose script matches the input. */
8
+ descriptor: Descriptor;
9
+ /** The derivation index used for a wildcard descriptor, if any. */
10
+ index: number | undefined;
11
+ info: ResolvedPox5DescriptorInfo;
12
+ };
13
+ /** A canonical PoX-5 descriptor match bound to a native PSBT input. */
14
+ export type Pox5InputMatch = Pox5DescriptorMatch & {
15
+ inputIndex: number;
16
+ };
17
+ /**
18
+ * Find and parse a canonical PoX-5 descriptor for a native PSBT input projection.
19
+ *
20
+ * Foreign root derivations are ignored by the shared native descriptor matcher. A
21
+ * match is returned only when all three staker keys can be resolved at the matched
22
+ * descriptor index.
23
+ */
24
+ export declare function findPox5DescriptorForInput(input: descriptorWallet.PsbtInput, descriptors: descriptorWallet.DescriptorMap): Pox5DescriptorMatch | undefined;
25
+ /** Find and parse a canonical PoX-5 descriptor for one native PSBT input. */
26
+ export declare function matchPox5Input(psbt: Psbt, inputIndex: number, descriptors: descriptorWallet.DescriptorMap): Pox5InputMatch | undefined;
27
+ export {};
28
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/pox5/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAA6B,MAAM,mBAAmB,CAAC;AAElF,KAAK,0BAA0B,GAAG,kBAAkB,GAAG;IACrD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,8DAA8D;IAC9D,UAAU,EAAE,UAAU,CAAC;IACvB,mEAAmE;IACnE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,gBAAgB,CAAC,SAAS,EACjC,WAAW,EAAE,gBAAgB,CAAC,aAAa,GAC1C,mBAAmB,GAAG,SAAS,CAsBjC;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,gBAAgB,CAAC,aAAa,GAC1C,cAAc,GAAG,SAAS,CAI5B"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findPox5DescriptorForInput = findPox5DescriptorForInput;
4
+ exports.matchPox5Input = matchPox5Input;
5
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
6
+ const parseDescriptor_1 = require("./parseDescriptor");
7
+ function getConcreteDescriptor(descriptor, index) {
8
+ return index === undefined ? descriptor : descriptor.atDerivationIndex(index);
9
+ }
10
+ /**
11
+ * Find and parse a canonical PoX-5 descriptor for a native PSBT input projection.
12
+ *
13
+ * Foreign root derivations are ignored by the shared native descriptor matcher. A
14
+ * match is returned only when all three staker keys can be resolved at the matched
15
+ * descriptor index.
16
+ */
17
+ function findPox5DescriptorForInput(input, descriptors) {
18
+ try {
19
+ const matched = wasm_utxo_1.descriptorWallet.findDescriptorForInput(input, descriptors);
20
+ if (!matched) {
21
+ return undefined;
22
+ }
23
+ const descriptor = getConcreteDescriptor(matched.descriptor, matched.index);
24
+ const info = (0, parseDescriptor_1.parsePox5LockupDescriptor)(descriptor);
25
+ if (!info?.stakerKeys) {
26
+ return undefined;
27
+ }
28
+ return {
29
+ descriptor,
30
+ index: matched.index,
31
+ info: {
32
+ ...info,
33
+ stakerKeys: info.stakerKeys,
34
+ },
35
+ };
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ }
41
+ /** Find and parse a canonical PoX-5 descriptor for one native PSBT input. */
42
+ function matchPox5Input(psbt, inputIndex, descriptors) {
43
+ const input = psbt.getInputs()[inputIndex];
44
+ const match = input ? findPox5DescriptorForInput(input, descriptors) : undefined;
45
+ return match ? { ...match, inputIndex } : undefined;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcG94NS9pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxnRUF5QkM7QUFHRCx3Q0FRQztBQXBFRCxnREFBc0U7QUFFdEUsdURBQWtGO0FBbUJsRixTQUFTLHFCQUFxQixDQUFDLFVBQXNCLEVBQUUsS0FBeUI7SUFDOUUsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQ3hDLEtBQWlDLEVBQ2pDLFdBQTJDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLDRCQUFnQixDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQ0FBeUIsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPO1lBQ0wsVUFBVTtZQUNWLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxJQUFJO2dCQUNQLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTthQUM1QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsU0FBZ0IsY0FBYyxDQUM1QixJQUFVLEVBQ1YsVUFBa0IsRUFDbEIsV0FBMkM7SUFFM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDakYsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciwgUHNidCwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBQb3g1RGVzY3JpcHRvckluZm8sIHBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IgfSBmcm9tICcuL3BhcnNlRGVzY3JpcHRvcic7XG5cbnR5cGUgUmVzb2x2ZWRQb3g1RGVzY3JpcHRvckluZm8gPSBQb3g1RGVzY3JpcHRvckluZm8gJiB7XG4gIHN0YWtlcktleXM6IFtCdWZmZXIsIEJ1ZmZlciwgQnVmZmVyXTtcbn07XG5cbmV4cG9ydCB0eXBlIFBveDVEZXNjcmlwdG9yTWF0Y2ggPSB7XG4gIC8qKiBUaGUgY29uY3JldGUgZGVzY3JpcHRvciB3aG9zZSBzY3JpcHQgbWF0Y2hlcyB0aGUgaW5wdXQuICovXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7XG4gIC8qKiBUaGUgZGVyaXZhdGlvbiBpbmRleCB1c2VkIGZvciBhIHdpbGRjYXJkIGRlc2NyaXB0b3IsIGlmIGFueS4gKi9cbiAgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaW5mbzogUmVzb2x2ZWRQb3g1RGVzY3JpcHRvckluZm87XG59O1xuXG4vKiogQSBjYW5vbmljYWwgUG9YLTUgZGVzY3JpcHRvciBtYXRjaCBib3VuZCB0byBhIG5hdGl2ZSBQU0JUIGlucHV0LiAqL1xuZXhwb3J0IHR5cGUgUG94NUlucHV0TWF0Y2ggPSBQb3g1RGVzY3JpcHRvck1hdGNoICYge1xuICBpbnB1dEluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBnZXRDb25jcmV0ZURlc2NyaXB0b3IoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gaW5kZXggPT09IHVuZGVmaW5lZCA/IGRlc2NyaXB0b3IgOiBkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KGluZGV4KTtcbn1cblxuLyoqXG4gKiBGaW5kIGFuZCBwYXJzZSBhIGNhbm9uaWNhbCBQb1gtNSBkZXNjcmlwdG9yIGZvciBhIG5hdGl2ZSBQU0JUIGlucHV0IHByb2plY3Rpb24uXG4gKlxuICogRm9yZWlnbiByb290IGRlcml2YXRpb25zIGFyZSBpZ25vcmVkIGJ5IHRoZSBzaGFyZWQgbmF0aXZlIGRlc2NyaXB0b3IgbWF0Y2hlci4gQVxuICogbWF0Y2ggaXMgcmV0dXJuZWQgb25seSB3aGVuIGFsbCB0aHJlZSBzdGFrZXIga2V5cyBjYW4gYmUgcmVzb2x2ZWQgYXQgdGhlIG1hdGNoZWRcbiAqIGRlc2NyaXB0b3IgaW5kZXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUG94NURlc2NyaXB0b3JGb3JJbnB1dChcbiAgaW5wdXQ6IGRlc2NyaXB0b3JXYWxsZXQuUHNidElucHV0LFxuICBkZXNjcmlwdG9yczogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwXG4pOiBQb3g1RGVzY3JpcHRvck1hdGNoIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtYXRjaGVkID0gZGVzY3JpcHRvcldhbGxldC5maW5kRGVzY3JpcHRvckZvcklucHV0KGlucHV0LCBkZXNjcmlwdG9ycyk7XG4gICAgaWYgKCFtYXRjaGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBkZXNjcmlwdG9yID0gZ2V0Q29uY3JldGVEZXNjcmlwdG9yKG1hdGNoZWQuZGVzY3JpcHRvciwgbWF0Y2hlZC5pbmRleCk7XG4gICAgY29uc3QgaW5mbyA9IHBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgaWYgKCFpbmZvPy5zdGFrZXJLZXlzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRvcixcbiAgICAgIGluZGV4OiBtYXRjaGVkLmluZGV4LFxuICAgICAgaW5mbzoge1xuICAgICAgICAuLi5pbmZvLFxuICAgICAgICBzdGFrZXJLZXlzOiBpbmZvLnN0YWtlcktleXMsXG4gICAgICB9LFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIEZpbmQgYW5kIHBhcnNlIGEgY2Fub25pY2FsIFBvWC01IGRlc2NyaXB0b3IgZm9yIG9uZSBuYXRpdmUgUFNCVCBpbnB1dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFBveDVJbnB1dChcbiAgcHNidDogUHNidCxcbiAgaW5wdXRJbmRleDogbnVtYmVyLFxuICBkZXNjcmlwdG9yczogZGVzY3JpcHRvcldhbGxldC5EZXNjcmlwdG9yTWFwXG4pOiBQb3g1SW5wdXRNYXRjaCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGlucHV0ID0gcHNidC5nZXRJbnB1dHMoKVtpbnB1dEluZGV4XTtcbiAgY29uc3QgbWF0Y2ggPSBpbnB1dCA/IGZpbmRQb3g1RGVzY3JpcHRvckZvcklucHV0KGlucHV0LCBkZXNjcmlwdG9ycykgOiB1bmRlZmluZWQ7XG4gIHJldHVybiBtYXRjaCA/IHsgLi4ubWF0Y2gsIGlucHV0SW5kZXggfSA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Descriptor, ast } from '@bitgo/wasm-utxo';
2
- export type ParsedPox5LockupDescriptor = {
2
+ export type Pox5DescriptorInfo = {
3
3
  unlockHeight: number;
4
4
  stakerCommitment: Buffer;
5
5
  earlyExitKey: Buffer;
@@ -7,10 +7,12 @@ export type ParsedPox5LockupDescriptor = {
7
7
  stakerKeys: [Buffer, Buffer, Buffer] | undefined;
8
8
  miniscriptNode: ast.MiniscriptNode;
9
9
  };
10
+ /** @deprecated Use Pox5DescriptorInfo instead. */
11
+ export type ParsedPox5LockupDescriptor = Pox5DescriptorInfo;
10
12
  /**
11
13
  * Parse only the canonical PoX-5 descriptor template. Other descriptors return
12
- * null; malformed fields within the template throw so callers cannot finalize
14
+ * undefined; malformed fields within the template throw so callers cannot finalize
13
15
  * a script under an ambiguous policy.
14
16
  */
15
- export declare function parsePox5LockupDescriptor(descriptor: Descriptor | ast.DescriptorNode): ParsedPox5LockupDescriptor | null;
17
+ export declare function parsePox5LockupDescriptor(descriptor: Descriptor | ast.DescriptorNode): Pox5DescriptorInfo | undefined;
16
18
  //# sourceMappingURL=parseDescriptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseDescriptor.d.ts","sourceRoot":"","sources":["../../../../src/pox5/parseDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAG1D,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC;CACpC,CAAC;AA2CF;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,GAC1C,0BAA0B,GAAG,IAAI,CAmDnC"}
1
+ {"version":3,"file":"parseDescriptor.d.ts","sourceRoot":"","sources":["../../../../src/pox5/parseDescriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,GAAG,EAAoB,MAAM,kBAAkB,CAAC;AAI5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC;CACpC,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AA2C5D;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAmDrH"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parsePox5LockupDescriptor = parsePox5LockupDescriptor;
4
4
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
5
- const descriptor_1 = require("@bitgo-beta/utxo-core/descriptor");
6
5
  const COMPRESSED_KEY = /^(02|03)[0-9a-fA-F]{64}$/;
7
6
  const XPUB_WITH_INDEX = /^([1-9A-HJ-NP-Za-km-z]+)\/(\d+)$/;
8
7
  function asNumber(value, field) {
@@ -42,15 +41,15 @@ function resolveStakerKey(value) {
42
41
  }
43
42
  /**
44
43
  * Parse only the canonical PoX-5 descriptor template. Other descriptors return
45
- * null; malformed fields within the template throw so callers cannot finalize
44
+ * undefined; malformed fields within the template throw so callers cannot finalize
46
45
  * a script under an ambiguous policy.
47
46
  */
48
47
  function parsePox5LockupDescriptor(descriptor) {
49
- const matcher = new descriptor_1.PatternMatcher();
48
+ const matcher = new wasm_utxo_1.descriptorWallet.PatternMatcher();
50
49
  const descriptorNode = descriptor instanceof wasm_utxo_1.Descriptor ? wasm_utxo_1.ast.fromDescriptor(descriptor) : descriptor;
51
50
  const matched = matcher.match(descriptorNode, { wsh: { $var: 'miniscript' } });
52
51
  if (!matched) {
53
- return null;
52
+ return undefined;
54
53
  }
55
54
  const miniscriptNode = matched.miniscript;
56
55
  const pattern = {
@@ -66,7 +65,7 @@ function parsePox5LockupDescriptor(descriptor) {
66
65
  };
67
66
  const fields = matcher.match(miniscriptNode, pattern);
68
67
  if (!fields) {
69
- return null;
68
+ return undefined;
70
69
  }
71
70
  const unlockHeight = asNumber(fields.unlockHeight, 'after argument');
72
71
  if (!Number.isSafeInteger(unlockHeight) || unlockHeight <= 0 || unlockHeight >= 500000000) {
@@ -93,4 +92,4 @@ function parsePox5LockupDescriptor(descriptor) {
93
92
  miniscriptNode,
94
93
  };
95
94
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VEZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BveDUvcGFyc2VEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMERBLDhEQXFEQztBQS9HRCxnREFBMEQ7QUFDMUQsaUVBQTJFO0FBVzNFLE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBQ2xELE1BQU0sZUFBZSxHQUFHLGtDQUFrQyxDQUFDO0FBRTNELFNBQVMsUUFBUSxDQUFDLEtBQWMsRUFBRSxLQUFhO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssbUJBQW1CLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYyxFQUFFLEtBQWE7SUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssa0NBQWtDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ3JDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sTUFBTSxD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cnQgeyBCSVAzMiwgRGVzY3JpcHRvciwgYXN0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5pbXBvcnQgeyBQYXR0ZXJuLCBQYXR0ZXJuTWF0Y2hlciB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZS9kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgUGFyc2VkUG94NUxvY2t1cERlc2NyaXB0b3IgPSB7XG4gIHVubG9ja0hlaWdodDogbnVtYmVyO1xuICBzdGFrZXJDb21taXRtZW50OiBCdWZmZXI7XG4gIGVhcmx5RXhpdEtleTogQnVmZmVyO1xuICBzdGFrZXJLZXlTdHJpbmdzOiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107XG4gIHN0YWtlcktleXM6IFtCdWZmZXIsIEJ1ZmZlciwgQnVmZmVyXSB8IHVuZGVmaW5lZDtcbiAgbWluaXNjcmlwdE5vZGU6IGFzdC5NaW5pc2NyaXB0Tm9kZTtcbn07XG5cbmNvbnN0IENPTVBSRVNTRURfS0VZID0gL14oMDJ8MDMpWzAtOWEtZkEtRl17NjR9JC87XG5jb25zdCBYUFVCX1dJVEhfSU5ERVggPSAvXihbMS05QS1ISi1OUC1aYS1rbS16XSspXFwvKFxcZCspJC87XG5cbmZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlOiB1bmtub3duLCBmaWVsZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZmllbGR9IG11c3QgYmUgYSBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGFzU3RyaW5nKHZhbHVlOiB1bmtub3duLCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZmllbGR9IG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29tcHJlc3NlZEtleSh2YWx1ZTogc3RyaW5nLCBmaWVsZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgaWYgKCFDT01QUkVTU0VEX0tFWS50ZXN0KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtmaWVsZH0gbXVzdCBiZSBhIGNvbXByZXNzZWQgcHVibGljIGtleWApO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgJ2hleCcpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU3Rha2VyS2V5KHZhbHVlOiBzdHJpbmcpOiBCdWZmZXIgfCB1bmRlZmluZWQge1xuICBpZiAoQ09NUFJFU1NFRF9LRVkudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUsICdoZXgnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFhQVUJfV0lUSF9JTkRFWCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IFssIHhwdWIsIGluZGV4U3RyaW5nXSA9IG1hdGNoO1xuICBjb25zdCBpbmRleCA9IE51bWJlci5wYXJzZUludChpbmRleFN0cmluZywgMTApO1xuICB0cnkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShCSVAzMi5mcm9tQmFzZTU4KHhwdWIpLmRlcml2ZShpbmRleCkucHVibGljS2V5KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIG9ubHkgdGhlIGNhbm9uaWNhbCBQb1gtNSBkZXNjcmlwdG9yIHRlbXBsYXRlLiBPdGhlciBkZXNjcmlwdG9ycyByZXR1cm5cbiAqIG51bGw7IG1hbGZvcm1lZCBmaWVsZHMgd2l0aGluIHRoZSB0ZW1wbGF0ZSB0aHJvdyBzbyBjYWxsZXJzIGNhbm5vdCBmaW5hbGl6ZVxuICogYSBzY3JpcHQgdW5kZXIgYW4gYW1iaWd1b3VzIHBvbGljeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IoXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IgfCBhc3QuRGVzY3JpcHRvck5vZGVcbik6IFBhcnNlZFBveDVMb2NrdXBEZXNjcmlwdG9yIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoZXIgPSBuZXcgUGF0dGVybk1hdGNoZXIoKTtcbiAgY29uc3QgZGVzY3JpcHRvck5vZGUgPSBkZXNjcmlwdG9yIGluc3RhbmNlb2YgRGVzY3JpcHRvciA/IGFzdC5mcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yKSA6IGRlc2NyaXB0b3I7XG4gIGNvbnN0IG1hdGNoZWQgPSBtYXRjaGVyLm1hdGNoKGRlc2NyaXB0b3JOb2RlLCB7IHdzaDogeyAkdmFyOiAnbWluaXNjcmlwdCcgfSB9KTtcbiAgaWYgKCFtYXRjaGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtaW5pc2NyaXB0Tm9kZSA9IG1hdGNoZWQubWluaXNjcmlwdCBhcyBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIGNvbnN0IHBhdHRlcm46IFBhdHRlcm4gPSB7XG4gICAgYW5kX3Y6IFtcbiAgICAgIHtcbiAgICAgICAgJ3Y6b3JfaSc6IFtcbiAgICAgICAgICB7IGFmdGVyOiB7ICR2YXI6ICd1bmxvY2tIZWlnaHQnIH0gfSxcbiAgICAgICAgICB7IGFuZF92OiBbeyAndjpzaGEyNTYnOiB7ICR2YXI6ICdzdGFrZXJDb21taXRtZW50JyB9IH0sIHsgcGs6IHsgJHZhcjogJ2Vhcmx5RXhpdEtleScgfSB9XSB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHsgbXVsdGk6IHsgJHZhcjogJ3N0YWtlck11bHRpJyB9IH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgZmllbGRzID0gbWF0Y2hlci5tYXRjaChtaW5pc2NyaXB0Tm9kZSwgcGF0dGVybik7XG4gIGlmICghZmllbGRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB1bmxvY2tIZWlnaHQgPSBhc051bWJlcihmaWVsZHMudW5sb2NrSGVpZ2h0LCAnYWZ0ZXIgYXJndW1lbnQnKTtcbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih1bmxvY2tIZWlnaHQpIHx8IHVubG9ja0hlaWdodCA8PSAwIHx8IHVubG9ja0hlaWdodCA+PSA1MDBfMDAwXzAwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5sb2NrSGVpZ2h0ICgke3VubG9ja0hlaWdodH0pIG11c3QgYmUgYSBwb3NpdGl2ZSBibG9jayBoZWlnaHQgYmVsb3cgNTAwMDAwMDAwYCk7XG4gIH1cbiAgY29uc3QgY29tbWl0bWVudEhleCA9IGFzU3RyaW5nKGZpZWxkcy5zdGFrZXJDb21taXRtZW50LCAnc2hhMjU2IGNvbW1pdG1lbnQnKTtcbiAgaWYgKCEvXlswLTlhLWZBLUZdezY0fSQvLnRlc3QoY29tbWl0bWVudEhleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0YWtlckNvbW1pdG1lbnQgbXVzdCBiZSAzMiBieXRlcycpO1xuICB9XG4gIGNvbnN0IGVhcmx5RXhpdEtleSA9IHBhcnNlQ29tcHJlc3NlZEtleShhc1N0cmluZyhmaWVsZHMuZWFybHlFeGl0S2V5LCAnZWFybHkgZXhpdCBrZXknKSwgJ2Vhcmx5RXhpdEtleScpO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShmaWVsZHMuc3Rha2VyTXVsdGkpIHx8IGZpZWxkcy5zdGFrZXJNdWx0aS5sZW5ndGggIT09IDQgfHwgZmllbGRzLnN0YWtlck11bHRpWzBdICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzdGFrZXIgbXVsdGkgbXVzdCBiZSBhIDItb2YtMyBtdWx0aXNpZycpO1xuICB9XG4gIGNvbnN0IHN0YWtlcktleVN0cmluZ3MgPSBmaWVsZHMuc3Rha2VyTXVsdGkuc2xpY2UoMSkubWFwKChrZXksIGluZGV4KSA9PiBhc1N0cmluZyhrZXksIGBzdGFrZXIga2V5ICR7aW5kZXh9YCkpO1xuICBjb25zdCByZXNvbHZlZEtleXMgPSBzdGFrZXJLZXlTdHJpbmdzLm1hcChyZXNvbHZlU3Rha2VyS2V5KTtcblxuICByZXR1cm4ge1xuICAgIHVubG9ja0hlaWdodCxcbiAgICBzdGFrZXJDb21taXRtZW50OiBCdWZmZXIuZnJvbShjb21taXRtZW50SGV4LCAnaGV4JyksXG4gICAgZWFybHlFeGl0S2V5LFxuICAgIHN0YWtlcktleVN0cmluZ3M6IFtzdGFrZXJLZXlTdHJpbmdzWzBdLCBzdGFrZXJLZXlTdHJpbmdzWzFdLCBzdGFrZXJLZXlTdHJpbmdzWzJdXSxcbiAgICBzdGFrZXJLZXlzOiByZXNvbHZlZEtleXMuZXZlcnkoKGtleSk6IGtleSBpcyBCdWZmZXIgPT4ga2V5ICE9PSB1bmRlZmluZWQpXG4gICAgICA/IFtyZXNvbHZlZEtleXNbMF0sIHJlc29sdmVkS2V5c1sxXSwgcmVzb2x2ZWRLZXlzWzJdXVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgbWluaXNjcmlwdE5vZGUsXG4gIH07XG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VEZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BveDUvcGFyc2VEZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOERBLDhEQW1EQztBQWpIRCxnREFBNEU7QUFnQjVFLE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUFDO0FBQ2xELE1BQU0sZUFBZSxHQUFHLGtDQUFrQyxDQUFDO0FBRTNELFNBQVMsUUFBUSxDQUFDLEtBQWMsRUFBRSxLQUFhO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssbUJBQW1CLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYyxFQUFFLEtBQWE7SUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssa0NBQWtDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFhO0lBQ3JDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FB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cnQgeyBCSVAzMiwgRGVzY3JpcHRvciwgYXN0LCBkZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5cbnR5cGUgUGF0dGVybiA9IGRlc2NyaXB0b3JXYWxsZXQuUGF0dGVybjtcblxuZXhwb3J0IHR5cGUgUG94NURlc2NyaXB0b3JJbmZvID0ge1xuICB1bmxvY2tIZWlnaHQ6IG51bWJlcjtcbiAgc3Rha2VyQ29tbWl0bWVudDogQnVmZmVyO1xuICBlYXJseUV4aXRLZXk6IEJ1ZmZlcjtcbiAgc3Rha2VyS2V5U3RyaW5nczogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddO1xuICBzdGFrZXJLZXlzOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl0gfCB1bmRlZmluZWQ7XG4gIG1pbmlzY3JpcHROb2RlOiBhc3QuTWluaXNjcmlwdE5vZGU7XG59O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIFBveDVEZXNjcmlwdG9ySW5mbyBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VkUG94NUxvY2t1cERlc2NyaXB0b3IgPSBQb3g1RGVzY3JpcHRvckluZm87XG5cbmNvbnN0IENPTVBSRVNTRURfS0VZID0gL14oMDJ8MDMpWzAtOWEtZkEtRl17NjR9JC87XG5jb25zdCBYUFVCX1dJVEhfSU5ERVggPSAvXihbMS05QS1ISi1OUC1aYS1rbS16XSspXFwvKFxcZCspJC87XG5cbmZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlOiB1bmtub3duLCBmaWVsZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZmllbGR9IG11c3QgYmUgYSBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGFzU3RyaW5nKHZhbHVlOiB1bmtub3duLCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZmllbGR9IG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ29tcHJlc3NlZEtleSh2YWx1ZTogc3RyaW5nLCBmaWVsZDogc3RyaW5nKTogQnVmZmVyIHtcbiAgaWYgKCFDT01QUkVTU0VEX0tFWS50ZXN0KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtmaWVsZH0gbXVzdCBiZSBhIGNvbXByZXNzZWQgcHVibGljIGtleWApO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgJ2hleCcpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU3Rha2VyS2V5KHZhbHVlOiBzdHJpbmcpOiBCdWZmZXIgfCB1bmRlZmluZWQge1xuICBpZiAoQ09NUFJFU1NFRF9LRVkudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUsICdoZXgnKTtcbiAgfVxuICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFhQVUJfV0lUSF9JTkRFWCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IFssIHhwdWIsIGluZGV4U3RyaW5nXSA9IG1hdGNoO1xuICBjb25zdCBpbmRleCA9IE51bWJlci5wYXJzZUludChpbmRleFN0cmluZywgMTApO1xuICB0cnkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShCSVAzMi5mcm9tQmFzZTU4KHhwdWIpLmRlcml2ZShpbmRleCkucHVibGljS2V5KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIG9ubHkgdGhlIGNhbm9uaWNhbCBQb1gtNSBkZXNjcmlwdG9yIHRlbXBsYXRlLiBPdGhlciBkZXNjcmlwdG9ycyByZXR1cm5cbiAqIHVuZGVmaW5lZDsgbWFsZm9ybWVkIGZpZWxkcyB3aXRoaW4gdGhlIHRlbXBsYXRlIHRocm93IHNvIGNhbGxlcnMgY2Fubm90IGZpbmFsaXplXG4gKiBhIHNjcmlwdCB1bmRlciBhbiBhbWJpZ3VvdXMgcG9saWN5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yIHwgYXN0LkRlc2NyaXB0b3JOb2RlKTogUG94NURlc2NyaXB0b3JJbmZvIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWF0Y2hlciA9IG5ldyBkZXNjcmlwdG9yV2FsbGV0LlBhdHRlcm5NYXRjaGVyKCk7XG4gIGNvbnN0IGRlc2NyaXB0b3JOb2RlID0gZGVzY3JpcHRvciBpbnN0YW5jZW9mIERlc2NyaXB0b3IgPyBhc3QuZnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvcikgOiBkZXNjcmlwdG9yO1xuICBjb25zdCBtYXRjaGVkID0gbWF0Y2hlci5tYXRjaChkZXNjcmlwdG9yTm9kZSwgeyB3c2g6IHsgJHZhcjogJ21pbmlzY3JpcHQnIH0gfSk7XG4gIGlmICghbWF0Y2hlZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBtaW5pc2NyaXB0Tm9kZSA9IG1hdGNoZWQubWluaXNjcmlwdCBhcyBhc3QuTWluaXNjcmlwdE5vZGU7XG4gIGNvbnN0IHBhdHRlcm46IFBhdHRlcm4gPSB7XG4gICAgYW5kX3Y6IFtcbiAgICAgIHtcbiAgICAgICAgJ3Y6b3JfaSc6IFtcbiAgICAgICAgICB7IGFmdGVyOiB7ICR2YXI6ICd1bmxvY2tIZWlnaHQnIH0gfSxcbiAgICAgICAgICB7IGFuZF92OiBbeyAndjpzaGEyNTYnOiB7ICR2YXI6ICdzdGFrZXJDb21taXRtZW50JyB9IH0sIHsgcGs6IHsgJHZhcjogJ2Vhcmx5RXhpdEtleScgfSB9XSB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHsgbXVsdGk6IHsgJHZhcjogJ3N0YWtlck11bHRpJyB9IH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3QgZmllbGRzID0gbWF0Y2hlci5tYXRjaChtaW5pc2NyaXB0Tm9kZSwgcGF0dGVybik7XG4gIGlmICghZmllbGRzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHVubG9ja0hlaWdodCA9IGFzTnVtYmVyKGZpZWxkcy51bmxvY2tIZWlnaHQsICdhZnRlciBhcmd1bWVudCcpO1xuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHVubG9ja0hlaWdodCkgfHwgdW5sb2NrSGVpZ2h0IDw9IDAgfHwgdW5sb2NrSGVpZ2h0ID49IDUwMF8wMDBfMDAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmxvY2tIZWlnaHQgKCR7dW5sb2NrSGVpZ2h0fSkgbXVzdCBiZSBhIHBvc2l0aXZlIGJsb2NrIGhlaWdodCBiZWxvdyA1MDAwMDAwMDBgKTtcbiAgfVxuICBjb25zdCBjb21taXRtZW50SGV4ID0gYXNTdHJpbmcoZmllbGRzLnN0YWtlckNvbW1pdG1lbnQsICdzaGEyNTYgY29tbWl0bWVudCcpO1xuICBpZiAoIS9eWzAtOWEtZkEtRl17NjR9JC8udGVzdChjb21taXRtZW50SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc3Rha2VyQ29tbWl0bWVudCBtdXN0IGJlIDMyIGJ5dGVzJyk7XG4gIH1cbiAgY29uc3QgZWFybHlFeGl0S2V5ID0gcGFyc2VDb21wcmVzc2VkS2V5KGFzU3RyaW5nKGZpZWxkcy5lYXJseUV4aXRLZXksICdlYXJseSBleGl0IGtleScpLCAnZWFybHlFeGl0S2V5Jyk7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkcy5zdGFrZXJNdWx0aSkgfHwgZmllbGRzLnN0YWtlck11bHRpLmxlbmd0aCAhPT0gNCB8fCBmaWVsZHMuc3Rha2VyTXVsdGlbMF0gIT09IDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0YWtlciBtdWx0aSBtdXN0IGJlIGEgMi1vZi0zIG11bHRpc2lnJyk7XG4gIH1cbiAgY29uc3Qgc3Rha2VyS2V5U3RyaW5ncyA9IGZpZWxkcy5zdGFrZXJNdWx0aS5zbGljZSgxKS5tYXAoKGtleSwgaW5kZXgpID0+IGFzU3RyaW5nKGtleSwgYHN0YWtlciBrZXkgJHtpbmRleH1gKSk7XG4gIGNvbnN0IHJlc29sdmVkS2V5cyA9IHN0YWtlcktleVN0cmluZ3MubWFwKHJlc29sdmVTdGFrZXJLZXkpO1xuXG4gIHJldHVybiB7XG4gICAgdW5sb2NrSGVpZ2h0LFxuICAgIHN0YWtlckNvbW1pdG1lbnQ6IEJ1ZmZlci5mcm9tKGNvbW1pdG1lbnRIZXgsICdoZXgnKSxcbiAgICBlYXJseUV4aXRLZXksXG4gICAgc3Rha2VyS2V5U3RyaW5nczogW3N0YWtlcktleVN0cmluZ3NbMF0sIHN0YWtlcktleVN0cmluZ3NbMV0sIHN0YWtlcktleVN0cmluZ3NbMl1dLFxuICAgIHN0YWtlcktleXM6IHJlc29sdmVkS2V5cy5ldmVyeSgoa2V5KToga2V5IGlzIEJ1ZmZlciA9PiBrZXkgIT09IHVuZGVmaW5lZClcbiAgICAgID8gW3Jlc29sdmVkS2V5c1swXSwgcmVzb2x2ZWRLZXlzWzFdLCByZXNvbHZlZEtleXNbMl1dXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBtaW5pc2NyaXB0Tm9kZSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { Psbt, type Descriptor } from '@bitgo/wasm-utxo';
2
+ import { Pox5DescriptorInfo } from './parseDescriptor';
3
+ /**
4
+ * Read the principal preimage committed by a canonical PoX-5 descriptor from a
5
+ * native PSBT input. The PSBT_IN_SHA256 key data is the descriptor commitment.
6
+ */
7
+ export declare function getPox5PrincipalPreimage(psbt: Psbt, inputIndex: number, descriptor: Pox5DescriptorInfo | Descriptor | import('@bitgo/wasm-utxo').ast.DescriptorNode): Buffer;
8
+ /** Verify that a principal preimage is committed by a canonical PoX-5 descriptor. */
9
+ export declare function assertPox5PrincipalPreimage(descriptor: Pox5DescriptorInfo | Descriptor | import('@bitgo/wasm-utxo').ast.DescriptorNode, principalPreimage: Uint8Array): void;
10
+ /** Alias for callers that prefer validation terminology. */
11
+ export declare function validatePox5PrincipalPreimage(descriptor: Pox5DescriptorInfo | Descriptor | import('@bitgo/wasm-utxo').ast.DescriptorNode, principalPreimage: Uint8Array): void;
12
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/pox5/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAA6B,MAAM,mBAAmB,CAAC;AAUlF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,kBAAkB,GAAG,UAAU,GAAG,OAAO,kBAAkB,EAAE,GAAG,CAAC,cAAc,GAC1F,MAAM,CA0BR;AAwBD,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,kBAAkB,GAAG,UAAU,GAAG,OAAO,kBAAkB,EAAE,GAAG,CAAC,cAAc,EAC3F,iBAAiB,EAAE,UAAU,GAC5B,IAAI,CASN;AAED,4DAA4D;AAC5D,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,kBAAkB,GAAG,UAAU,GAAG,OAAO,kBAAkB,EAAE,GAAG,CAAC,cAAc,EAC3F,iBAAiB,EAAE,UAAU,GAC5B,IAAI,CAEN"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPox5PrincipalPreimage = getPox5PrincipalPreimage;
4
+ exports.assertPox5PrincipalPreimage = assertPox5PrincipalPreimage;
5
+ exports.validatePox5PrincipalPreimage = validatePox5PrincipalPreimage;
6
+ const crypto_1 = require("crypto");
7
+ const parseDescriptor_1 = require("./parseDescriptor");
8
+ const SHA256_INPUT_KEY = 'PSBT_IN_SHA256';
9
+ function isSha256InputKeyValue(keyValue) {
10
+ return keyValue.type === 'known' && keyValue.key === SHA256_INPUT_KEY;
11
+ }
12
+ /**
13
+ * Read the principal preimage committed by a canonical PoX-5 descriptor from a
14
+ * native PSBT input. The PSBT_IN_SHA256 key data is the descriptor commitment.
15
+ */
16
+ function getPox5PrincipalPreimage(psbt, inputIndex, descriptor) {
17
+ const info = getPox5DescriptorInfo(descriptor);
18
+ const records = psbt
19
+ .getInputKeyValues(inputIndex)
20
+ .filter(isSha256InputKeyValue)
21
+ .filter((record) => Buffer.from(record.keyData).equals(info.stakerCommitment));
22
+ if (records.length !== 1) {
23
+ throw new Error(`expected exactly one ${SHA256_INPUT_KEY} record matching the descriptor commitment, found ${records.length}`);
24
+ }
25
+ const [record] = records;
26
+ if (record.keyData.length !== 32) {
27
+ throw new Error(`${SHA256_INPUT_KEY} digest must be 32 bytes`);
28
+ }
29
+ if (record.value.length !== 32) {
30
+ throw new Error(`${SHA256_INPUT_KEY} preimage must be 32 bytes`);
31
+ }
32
+ const preimage = Buffer.from(record.value);
33
+ const digest = (0, crypto_1.createHash)('sha256').update(preimage).digest();
34
+ if (!digest.equals(Buffer.from(record.keyData))) {
35
+ throw new Error(`${SHA256_INPUT_KEY} digest does not match its preimage`);
36
+ }
37
+ return preimage;
38
+ }
39
+ function isPox5DescriptorInfo(value) {
40
+ return (value !== null &&
41
+ typeof value === 'object' &&
42
+ 'stakerCommitment' in value &&
43
+ Buffer.isBuffer(value.stakerCommitment));
44
+ }
45
+ function getPox5DescriptorInfo(descriptor) {
46
+ if (isPox5DescriptorInfo(descriptor)) {
47
+ return descriptor;
48
+ }
49
+ const info = (0, parseDescriptor_1.parsePox5LockupDescriptor)(descriptor);
50
+ if (!info) {
51
+ throw new Error('descriptor is not a canonical PoX-5 lockup descriptor');
52
+ }
53
+ return info;
54
+ }
55
+ /** Verify that a principal preimage is committed by a canonical PoX-5 descriptor. */
56
+ function assertPox5PrincipalPreimage(descriptor, principalPreimage) {
57
+ if (principalPreimage.length !== 32) {
58
+ throw new Error('principalPreimage must be 32 bytes');
59
+ }
60
+ const info = getPox5DescriptorInfo(descriptor);
61
+ const digest = (0, crypto_1.createHash)('sha256').update(principalPreimage).digest();
62
+ if (!digest.equals(info.stakerCommitment)) {
63
+ throw new Error('principalPreimage does not match the descriptor stakerCommitment');
64
+ }
65
+ }
66
+ /** Alias for callers that prefer validation terminology. */
67
+ function validatePox5PrincipalPreimage(descriptor, principalPreimage) {
68
+ assertPox5PrincipalPreimage(descriptor, principalPreimage);
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wb3g1L3ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsNERBOEJDO0FBeUJELGtFQVlDO0FBR0Qsc0VBS0M7QUE3RkQsbUNBQW9DO0FBSXBDLHVEQUFrRjtBQUVsRixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBSTFDLFNBQVMscUJBQXFCLENBQUMsUUFBMkI7SUFDeEQsT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLGdCQUFnQixDQUFDO0FBQ3hFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FDdEMsSUFBVSxFQUNWLFVBQWtCLEVBQ2xCLFVBQTJGO0lBRTNGLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUk7U0FDakIsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1NBQzdCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztTQUM3QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUNiLHdCQUF3QixnQkFBZ0IscURBQXFELE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FDOUcsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGdCQUFnQiwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxnQkFBZ0IsNEJBQTRCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLGdCQUFnQixxQ0FBcUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFjO0lBQzFDLE9BQU8sQ0FDTCxLQUFLLEtBQUssSUFBSTtRQUNkLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsa0JBQWtCLElBQUksS0FBSztRQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQzVCLFVBQTJGO0lBRTNGLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQ0FBeUIsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELHFGQUFxRjtBQUNyRixTQUFnQiwyQkFBMkIsQ0FDekMsVUFBMkYsRUFDM0YsaUJBQTZCO0lBRTdCLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7QUFDSCxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQWdCLDZCQUE2QixDQUMzQyxVQUEyRixFQUMzRixpQkFBNkI7SUFFN0IsMkJBQTJCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBQc2J0LCB0eXBlIERlc2NyaXB0b3IsIHR5cGUgUHNidElucHV0S2V5VmFsdWUgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgUG94NURlc2NyaXB0b3JJbmZvLCBwYXJzZVBveDVMb2NrdXBEZXNjcmlwdG9yIH0gZnJvbSAnLi9wYXJzZURlc2NyaXB0b3InO1xuXG5jb25zdCBTSEEyNTZfSU5QVVRfS0VZID0gJ1BTQlRfSU5fU0hBMjU2JztcblxudHlwZSBTaGEyNTZJbnB1dEtleVZhbHVlID0gRXh0cmFjdDxQc2J0SW5wdXRLZXlWYWx1ZSwgeyB0eXBlOiAna25vd24nIH0+O1xuXG5mdW5jdGlvbiBpc1NoYTI1NklucHV0S2V5VmFsdWUoa2V5VmFsdWU6IFBzYnRJbnB1dEtleVZhbHVlKToga2V5VmFsdWUgaXMgU2hhMjU2SW5wdXRLZXlWYWx1ZSB7XG4gIHJldHVybiBrZXlWYWx1ZS50eXBlID09PSAna25vd24nICYmIGtleVZhbHVlLmtleSA9PT0gU0hBMjU2X0lOUFVUX0tFWTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBwcmluY2lwYWwgcHJlaW1hZ2UgY29tbWl0dGVkIGJ5IGEgY2Fub25pY2FsIFBvWC01IGRlc2NyaXB0b3IgZnJvbSBhXG4gKiBuYXRpdmUgUFNCVCBpbnB1dC4gVGhlIFBTQlRfSU5fU0hBMjU2IGtleSBkYXRhIGlzIHRoZSBkZXNjcmlwdG9yIGNvbW1pdG1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3g1UHJpbmNpcGFsUHJlaW1hZ2UoXG4gIHBzYnQ6IFBzYnQsXG4gIGlucHV0SW5kZXg6IG51bWJlcixcbiAgZGVzY3JpcHRvcjogUG94NURlc2NyaXB0b3JJbmZvIHwgRGVzY3JpcHRvciB8IGltcG9ydCgnQGJpdGdvL3dhc20tdXR4bycpLmFzdC5EZXNjcmlwdG9yTm9kZVxuKTogQnVmZmVyIHtcbiAgY29uc3QgaW5mbyA9IGdldFBveDVEZXNjcmlwdG9ySW5mbyhkZXNjcmlwdG9yKTtcbiAgY29uc3QgcmVjb3JkcyA9IHBzYnRcbiAgICAuZ2V0SW5wdXRLZXlWYWx1ZXMoaW5wdXRJbmRleClcbiAgICAuZmlsdGVyKGlzU2hhMjU2SW5wdXRLZXlWYWx1ZSlcbiAgICAuZmlsdGVyKChyZWNvcmQpID0+IEJ1ZmZlci5mcm9tKHJlY29yZC5rZXlEYXRhKS5lcXVhbHMoaW5mby5zdGFrZXJDb21taXRtZW50KSk7XG4gIGlmIChyZWNvcmRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBleHBlY3RlZCBleGFjdGx5IG9uZSAke1NIQTI1Nl9JTlBVVF9LRVl9IHJlY29yZCBtYXRjaGluZyB0aGUgZGVzY3JpcHRvciBjb21taXRtZW50LCBmb3VuZCAke3JlY29yZHMubGVuZ3RofWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgW3JlY29yZF0gPSByZWNvcmRzO1xuICBpZiAocmVjb3JkLmtleURhdGEubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtTSEEyNTZfSU5QVVRfS0VZfSBkaWdlc3QgbXVzdCBiZSAzMiBieXRlc2ApO1xuICB9XG4gIGlmIChyZWNvcmQudmFsdWUubGVuZ3RoICE9PSAzMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtTSEEyNTZfSU5QVVRfS0VZfSBwcmVpbWFnZSBtdXN0IGJlIDMyIGJ5dGVzYCk7XG4gIH1cblxuICBjb25zdCBwcmVpbWFnZSA9IEJ1ZmZlci5mcm9tKHJlY29yZC52YWx1ZSk7XG4gIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShwcmVpbWFnZSkuZGlnZXN0KCk7XG4gIGlmICghZGlnZXN0LmVxdWFscyhCdWZmZXIuZnJvbShyZWNvcmQua2V5RGF0YSkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke1NIQTI1Nl9JTlBVVF9LRVl9IGRpZ2VzdCBkb2VzIG5vdCBtYXRjaCBpdHMgcHJlaW1hZ2VgKTtcbiAgfVxuICByZXR1cm4gcHJlaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGlzUG94NURlc2NyaXB0b3JJbmZvKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUG94NURlc2NyaXB0b3JJbmZvIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAnc3Rha2VyQ29tbWl0bWVudCcgaW4gdmFsdWUgJiZcbiAgICBCdWZmZXIuaXNCdWZmZXIodmFsdWUuc3Rha2VyQ29tbWl0bWVudClcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UG94NURlc2NyaXB0b3JJbmZvKFxuICBkZXNjcmlwdG9yOiBQb3g1RGVzY3JpcHRvckluZm8gfCBEZXNjcmlwdG9yIHwgaW1wb3J0KCdAYml0Z28vd2FzbS11dHhvJykuYXN0LkRlc2NyaXB0b3JOb2RlXG4pOiBQb3g1RGVzY3JpcHRvckluZm8ge1xuICBpZiAoaXNQb3g1RGVzY3JpcHRvckluZm8oZGVzY3JpcHRvcikpIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfVxuICBjb25zdCBpbmZvID0gcGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgaWYgKCFpbmZvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZXNjcmlwdG9yIGlzIG5vdCBhIGNhbm9uaWNhbCBQb1gtNSBsb2NrdXAgZGVzY3JpcHRvcicpO1xuICB9XG4gIHJldHVybiBpbmZvO1xufVxuXG4vKiogVmVyaWZ5IHRoYXQgYSBwcmluY2lwYWwgcHJlaW1hZ2UgaXMgY29tbWl0dGVkIGJ5IGEgY2Fub25pY2FsIFBvWC01IGRlc2NyaXB0b3IuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0UG94NVByaW5jaXBhbFByZWltYWdlKFxuICBkZXNjcmlwdG9yOiBQb3g1RGVzY3JpcHRvckluZm8gfCBEZXNjcmlwdG9yIHwgaW1wb3J0KCdAYml0Z28vd2FzbS11dHhvJykuYXN0LkRlc2NyaXB0b3JOb2RlLFxuICBwcmluY2lwYWxQcmVpbWFnZTogVWludDhBcnJheVxuKTogdm9pZCB7XG4gIGlmIChwcmluY2lwYWxQcmVpbWFnZS5sZW5ndGggIT09IDMyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcmluY2lwYWxQcmVpbWFnZSBtdXN0IGJlIDMyIGJ5dGVzJyk7XG4gIH1cbiAgY29uc3QgaW5mbyA9IGdldFBveDVEZXNjcmlwdG9ySW5mbyhkZXNjcmlwdG9yKTtcbiAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHByaW5jaXBhbFByZWltYWdlKS5kaWdlc3QoKTtcbiAgaWYgKCFkaWdlc3QuZXF1YWxzKGluZm8uc3Rha2VyQ29tbWl0bWVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3ByaW5jaXBhbFByZWltYWdlIGRvZXMgbm90IG1hdGNoIHRoZSBkZXNjcmlwdG9yIHN0YWtlckNvbW1pdG1lbnQnKTtcbiAgfVxufVxuXG4vKiogQWxpYXMgZm9yIGNhbGxlcnMgdGhhdCBwcmVmZXIgdmFsaWRhdGlvbiB0ZXJtaW5vbG9neS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBveDVQcmluY2lwYWxQcmVpbWFnZShcbiAgZGVzY3JpcHRvcjogUG94NURlc2NyaXB0b3JJbmZvIHwgRGVzY3JpcHRvciB8IGltcG9ydCgnQGJpdGdvL3dhc20tdXR4bycpLmFzdC5EZXNjcmlwdG9yTm9kZSxcbiAgcHJpbmNpcGFsUHJlaW1hZ2U6IFVpbnQ4QXJyYXlcbik6IHZvaWQge1xuICBhc3NlcnRQb3g1UHJpbmNpcGFsUHJlaW1hZ2UoZGVzY3JpcHRvciwgcHJpbmNpcGFsUHJlaW1hZ2UpO1xufVxuIl19
@@ -102,8 +102,7 @@ describe('PoX-5 lockup descriptors', function () {
102
102
  const derivable = params();
103
103
  const stakerKeys = (0, pox5_1.derivePox5StakerKeys)(derivable.stakerKeys, 0);
104
104
  const definite = { ...derivable, stakerKeys };
105
- const descriptorString = (0, pox5_1.createPox5LockupDescriptor)(definite);
106
- const descriptor = wasm_utxo_1.Descriptor.fromString(descriptorString, 'definite');
105
+ const descriptor = (0, pox5_1.createPox5LockupDescriptor)(definite);
107
106
  const localWitnessScript = asmToScript(descriptor.toAsmString());
108
107
  const unlockBytes = encodeTwoOfThreeUnlock(stakerKeys);
109
108
  const earlyUnlockBytes = (0, bitcoin_staking_1.buildUnlockScript)(definite.earlyExitKey);
@@ -136,7 +135,7 @@ describe('PoX-5 lockup descriptors', function () {
136
135
  });
137
136
  it('supports derivation and preserves wildcard keys until an index is selected', function () {
138
137
  const value = params();
139
- const descriptor = wasm_utxo_1.Descriptor.fromString((0, pox5_1.createPox5LockupDescriptor)(value), 'derivable');
138
+ const descriptor = (0, pox5_1.createPox5LockupDescriptor)(value);
140
139
  const wildcard = (0, pox5_1.parsePox5LockupDescriptor)(descriptor);
141
140
  const derived = (0, pox5_1.parsePox5LockupDescriptor)(descriptor.atDerivationIndex(4));
142
141
  assert.ok(wildcard);
@@ -152,7 +151,7 @@ describe('PoX-5 lockup descriptors', function () {
152
151
  assert.throws(() => (0, pox5_1.createPox5LockupDescriptor)(params({ earlyExitKey: Buffer.alloc(32) })));
153
152
  assert.throws(() => (0, pox5_1.createPox5LockupDescriptor)(params({ stakerKeys: [getBip32Triple()[0], Buffer.alloc(33, 2), Buffer.alloc(33, 2)] })));
154
153
  const validKey = params().earlyExitKey.toString('hex');
155
- assert.strictEqual((0, pox5_1.parsePox5LockupDescriptor)(wasm_utxo_1.Descriptor.fromString(`wsh(pk(${validKey}))`, 'definite')), null);
154
+ assert.strictEqual((0, pox5_1.parsePox5LockupDescriptor)(wasm_utxo_1.Descriptor.fromString(`wsh(pk(${validKey}))`, 'definite')), undefined);
156
155
  });
157
156
  });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wb3g1L2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsbUNBQW9DO0FBRXBDLDZEQU1pQztBQUNqQyxnREFBOEQ7QUFDOUQsMERBQTBEO0FBRTFELDRDQU0yQjtBQUkzQixNQUFNLE9BQU8sR0FBMkI7SUFDdEMsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxjQUFjLEVBQUUsSUFBSTtJQUNwQixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUEsd0JBQVksRUFBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBaUI7SUFDL0IsT0FBTyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxZQUFpRCxFQUFFO0lBQ2pFLE1BQU0sVUFBVSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJ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LENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsZ0NBQXlCLEVBQUMsc0JBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxRQUFRLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQge1xuICBidWlsZExvY2tBZGRyZXNzLFxuICBidWlsZExvY2tPdXRwdXRTY3JpcHQsXG4gIGJ1aWxkTG9ja1NjcmlwdCxcbiAgYnVpbGRVbmxvY2tTY3JpcHQsXG4gIGNvbXB1dGVSZWdpc3RlclByZWltYWdlLFxufSBmcm9tICdAc3RhY2tzL2JpdGNvaW4tc3Rha2luZyc7XG5pbXBvcnQgeyBhZGRyZXNzLCBiaXAzMiwgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHsgZ2V0S2V5VHJpcGxlIH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4by90ZXN0dXRpbHMnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcixcbiAgY3JlYXRlUG94NUxvY2t1cFNjcmlwdFB1YktleSxcbiAgZGVyaXZlUG94NVN0YWtlcktleXMsXG4gIHBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IsXG4gIFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zLFxufSBmcm9tICcuLi8uLi8uLi9zcmMvcG94NSc7XG5cbnR5cGUgQklQMzJJbnRlcmZhY2UgPSBiaXAzMi5CSVAzMkludGVyZmFjZTtcblxuY29uc3QgT1BDT0RFUzogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgT1BfMDogMHgwMCxcbiAgT1BfSUY6IDB4NjMsXG4gIE9QX0VMU0U6IDB4NjcsXG4gIE9QX0VORElGOiAweDY4LFxuICBPUF9WRVJJRlk6IDB4NjksXG4gIE9QX1NJWkU6IDB4ODIsXG4gIE9QX0VRVUFMOiAweDg3LFxuICBPUF9FUVVBTFZFUklGWTogMHg4OCxcbiAgT1BfU0hBMjU2OiAweGE4LFxuICBPUF9DSEVDS1NJRzogMHhhYyxcbiAgT1BfQ0hFQ0tNVUxUSVNJRzogMHhhZSxcbiAgT1BfQ0xUVjogMHhiMSxcbn07XG5cbmZ1bmN0aW9uIGdldEJpcDMyVHJpcGxlKCk6IFtCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlXSB7XG4gIGNvbnN0IFt1c2VyLCBiYWNrdXAsIGJpdGdvXSA9IGdldEtleVRyaXBsZSgnZGVmYXVsdCcpO1xuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29dO1xufVxuXG5mdW5jdGlvbiBzaGEyNTYodmFsdWU6IFVpbnQ4QXJyYXkpOiBCdWZmZXIge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoKTtcbn1cblxuZnVuY3Rpb24gcGFyYW1zKG92ZXJyaWRlczogUGFydGlhbDxQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcz4gPSB7fSk6IFBveDVMb2NrdXBEZXNjcmlwdG9yUGFyYW1zIHtcbiAgY29uc3Qgc3Rha2VyS2V5cyA9IGdldEJpcDMyVHJpcGxlKCk7XG4gIGNvbnN0IGVhcmx5RXhpdEtleSA9IEJ1ZmZlci5mcm9tKHN0YWtlcktleXNbMF0uZGVyaXZlKDkpLnB1YmxpY0tleSk7XG4gIHJldHVybiB7XG4gICAgdW5sb2NrSGVpZ2h0OiA4NDBfMDAwLFxuICAgIHN0YWtlckNvbW1pdG1lbnQ6IHNoYTI1Nihjb21wdXRlUmVnaXN0ZXJQcmVpbWFnZSgnU1AwMDAwMDAwMDAwMDAwMDAwMDAwMDJRNlZGNzgnKSksXG4gICAgZWFybHlFeGl0S2V5LFxuICAgIHN0YWtlcktleXMsXG4gICAgLi4ub3ZlcnJpZGVzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBhc21Ub1NjcmlwdChhc206IHN0cmluZyk6IEJ1ZmZlciB7XG4gIGNvbnN0IHRva2VucyA9IGFzbS5zcGxpdCgnICcpO1xuICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0b2tlbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaW5kZXhdO1xuICAgIGNvbnN0IHB1c2ggPSB0b2tlbi5tYXRjaCgvXk9QX1BVU0hCWVRFU18oXFxkKykkLyk7XG4gICAgaWYgKHB1c2gpIHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20odG9rZW5zWysraW5kZXhdLCAnaGV4Jyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYnl0ZXMubGVuZ3RoLCBOdW1iZXIocHVzaFsxXSkpO1xuICAgICAgY2h1bmtzLnB1c2goQnVmZmVyLm9mKGJ5dGVzLmxlbmd0aCksIGJ5dGVzKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBudW1iZXIgPSB0b2tlbi5tYXRjaCgvXk9QX1BVU0hOVU1fKFxcZCspJC8pO1xuICAgIGlmIChudW1iZXIpIHtcbiAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5vZigweDUwICsgTnVtYmVyKG51bWJlclsxXSkpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBvcGNvZGUgPSBPUENPREVTW3Rva2VuXTtcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwob3Bjb2RlLCB1bmRlZmluZWQsIGB1bnN1cHBvcnRlZCBBU00gdG9rZW4gJHt0b2tlbn1gKTtcbiAgICBjaHVua3MucHVzaChCdWZmZXIub2Yob3Bjb2RlKSk7XG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoY2h1bmtzKTtcbn1cblxuZnVuY3Rpb24gZW5jb2RlVHdvT2ZUaHJlZVVubG9jayhrZXlzOiBbQnVmZmVyLCBCdWZmZXIsIEJ1ZmZlcl0pOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbQnVmZmVyLm9mKDB4NTIpLCAuLi5rZXlzLmZsYXRNYXAoKGtleSkgPT4gW0J1ZmZlci5vZigzMyksIGtleV0pLCBCdWZmZXIub2YoMHg1MywgMHhhZSldKTtcbn1cblxuZGVzY3JpYmUoJ1BvWC01IGxvY2t1cCBkZXNjcmlwdG9ycycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3JlbmRlcnMgdGhlIHJlcXVpcmVkIGJ5dGUtaWRlbnRpY2FsIGNhbm9uaWNhbCBzY3JpcHQgYW5kIFAyV1NIIG91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXJpdmFibGUgPSBwYXJhbXMoKTtcbiAgICBjb25zdCBzdGFrZXJLZXlzID0gZGVyaXZlUG94NVN0YWtlcktleXMoXG4gICAgICBkZXJpdmFibGUuc3Rha2VyS2V5cyBhcyBbQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlLCBCSVAzMkludGVyZmFjZV0sXG4gICAgICAwXG4gICAgKTtcbiAgICBjb25zdCBkZWZpbml0ZSA9IHsgLi4uZGVyaXZhYmxlLCBzdGFrZXJLZXlzIH07XG4gICAgY29uc3QgZGVzY3JpcHRvclN0cmluZyA9IGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKGRlZmluaXRlKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGRlc2NyaXB0b3JTdHJpbmcsICdkZWZpbml0ZScpO1xuICAgIGNvbnN0IGxvY2FsV2l0bmVzc1NjcmlwdCA9IGFzbVRvU2NyaXB0KGRlc2NyaXB0b3IudG9Bc21TdHJpbmcoKSk7XG4gICAgY29uc3QgdW5sb2NrQnl0ZXMgPSBlbmNvZGVUd29PZlRocmVlVW5sb2NrKHN0YWtlcktleXMpO1xuICAgIGNvbnN0IGVhcmx5VW5sb2NrQnl0ZXMgPSBidWlsZFVubG9ja1NjcmlwdChkZWZpbml0ZS5lYXJseUV4aXRLZXkpO1xuICAgIGNvbnN0IHNka1dpdG5lc3NTY3JpcHQgPSBCdWZmZXIuZnJvbShcbiAgICAgIGJ1aWxkTG9ja1NjcmlwdCh7XG4gICAgICAgIHN0eEFkZHJlc3M6ICdTUDAwMDAwMDAwMDAwMDAwMDAwMDAwMlE2VkY3OCcsXG4gICAgICAgIHVubG9ja0hlaWdodDogZGVmaW5pdGUudW5sb2NrSGVpZ2h0LFxuICAgICAgICB1bmxvY2tCeXRlcyxcbiAgICAgICAgZWFybHlVbmxvY2tCeXRlcyxcbiAgICAgICAgdmFsaWRhdGVFYXJseVVubG9ja0J5dGVzOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobG9jYWxXaXRuZXNzU2NyaXB0LCBzZGtXaXRuZXNzU2NyaXB0KTtcbiAgICBhc3NlcnQub2soZGVzY3JpcHRvci50b0FzbVN0cmluZygpLmluY2x1ZGVzKCdPUF9TSEEyNTYgT1BfUFVTSEJZVEVTXzMyJykpO1xuICAgIGFzc2VydC5vayhkZXNjcmlwdG9yLnRvQXNtU3RyaW5nKCkuaW5jbHVkZXMoJ09QX0VRVUFMVkVSSUZZIE9QX1BVU0hCWVRFU18zMycpKTtcblxuICAgIGNvbnN0IGxvY2FsU2NyaXB0UHViS2V5ID0gY3JlYXRlUG94NUxvY2t1cFNjcmlwdFB1YktleShkZWZpbml0ZSk7XG4gICAgY29uc3Qgc2RrU2NyaXB0UHViS2V5ID0gQnVmZmVyLmZyb20oXG4gICAgICBidWlsZExvY2tPdXRwdXRTY3JpcHQoe1xuICAgICAgICBzdHhBZGRyZXNzOiAnU1AwMDAwMDAwMDAwMDAwMDAwMDAwMDJRNlZGNzgnLFxuICAgICAgICB1bmxvY2tIZWlnaHQ6IGRlZmluaXRlLnVubG9ja0hlaWdodCxcbiAgICAgICAgdW5sb2NrQnl0ZXMsXG4gICAgICAgIGVhcmx5VW5sb2NrQnl0ZXMsXG4gICAgICB9KVxuICAgICk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsb2NhbFNjcmlwdFB1YktleSwgc2RrU2NyaXB0UHViS2V5KTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBhZGRyZXNzLmZyb21PdXRwdXRTY3JpcHRXaXRoQ29pbihsb2NhbFNjcmlwdFB1YktleSwgJ2J0YycpLFxuICAgICAgYnVpbGRMb2NrQWRkcmVzcyh7XG4gICAgICAgIHN0eEFkZHJlc3M6ICdTUDAwMDAwMDAwMDAwMDAwMDAwMDAwMlE2VkY3OCcsXG4gICAgICAgIHVubG9ja0hlaWdodDogZGVmaW5pdGUudW5sb2NrSGVpZ2h0LFxuICAgICAgICB1bmxvY2tCeXRlcyxcbiAgICAgICAgZWFybHlVbmxvY2tCeXRlcyxcbiAgICAgICAgbmV0d29yazogJ21haW5uZXQnLFxuICAgICAgICB2YWxpZGF0ZUVhcmx5VW5sb2NrQnl0ZXM6IGZhbHNlLFxuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBpdCgnc3VwcG9ydHMgZGVyaXZhdGlvbiBhbmQgcHJlc2VydmVzIHdpbGRjYXJkIGtleXMgdW50aWwgYW4gaW5kZXggaXMgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbXMoKTtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKHZhbHVlKSwgJ2Rlcml2YWJsZScpO1xuICAgIGNvbnN0IHdpbGRjYXJkID0gcGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICBjb25zdCBkZXJpdmVkID0gcGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KDQpKTtcblxuICAgIGFzc2VydC5vayh3aWxkY2FyZCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdpbGRjYXJkLnN0YWtlcktleXMsIHVuZGVmaW5lZCk7XG4gICAgYXNzZXJ0Lm9rKHdpbGRjYXJkLnN0YWtlcktleVN0cmluZ3MuZXZlcnkoKGtleSkgPT4ga2V5LmVuZHNXaXRoKCcvKicpKSk7XG4gICAgYXNzZXJ0Lm9rKGRlcml2ZWQ/LnN0YWtlcktleXMpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoXG4gICAgICBkZXJpdmVkPy5zdGFrZXJLZXlzLFxuICAgICAgZGVyaXZlUG94NVN0YWtlcktleXModmFsdWUuc3Rha2VyS2V5cyBhcyBbQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlLCBCSVAzMkludGVyZmFjZV0sIDQpXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgbm9uY2Fub25pY2FsIHBhcmFtZXRlciB2YWx1ZXMgYW5kIGRlc2NyaXB0b3IgdGVtcGxhdGVzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gY3JlYXRlUG94NUxvY2t1cERlc2NyaXB0b3IocGFyYW1zKHsgdW5sb2NrSGVpZ2h0OiAwIH0pKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXMoeyB1bmxvY2tIZWlnaHQ6IDUwMF8wMDBfMDAwIH0pKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXMoeyBzdGFrZXJDb21taXRtZW50OiBCdWZmZXIuYWxsb2MoMzEpIH0pKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXMoeyBlYXJseUV4aXRLZXk6IEJ1ZmZlci5hbGxvYygzMikgfSkpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+XG4gICAgICBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihcbiAgICAgICAgcGFyYW1zKHsgc3Rha2VyS2V5czogW2dldEJpcDMyVHJpcGxlKClbMF0sIEJ1ZmZlci5hbGxvYygzMywgMiksIEJ1ZmZlci5hbGxvYygzMywgMildIH0pXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCB2YWxpZEtleSA9IHBhcmFtcygpLmVhcmx5RXhpdEtleS50b1N0cmluZygnaGV4Jyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBhcnNlUG94NUxvY2t1cERlc2NyaXB0b3IoRGVzY3JpcHRvci5mcm9tU3RyaW5nKGB3c2gocGsoJHt2YWxpZEtleX0pKWAsICdkZWZpbml0ZScpKSwgbnVsbCk7XG4gIH0pO1xufSk7XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wb3g1L2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsbUNBQW9DO0FBRXBDLDZEQU1pQztBQUNqQyxnREFBOEQ7QUFDOUQsMERBQTBEO0FBRTFELDRDQU0yQjtBQUkzQixNQUFNLE9BQU8sR0FBMkI7SUFDdEMsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxTQUFTLEVBQUUsSUFBSTtJQUNmLE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLElBQUk7SUFDZCxjQUFjLEVBQUUsSUFBSTtJQUNwQixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUEsd0JBQVksRUFBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBaUI7SUFDL0IsT0FBTyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxZQUFpRCxFQUFFO0lBQ2pFLE1BQU0sVUFBVSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJ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QVUsUUFBUSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0SCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHtcbiAgYnVpbGRMb2NrQWRkcmVzcyxcbiAgYnVpbGRMb2NrT3V0cHV0U2NyaXB0LFxuICBidWlsZExvY2tTY3JpcHQsXG4gIGJ1aWxkVW5sb2NrU2NyaXB0LFxuICBjb21wdXRlUmVnaXN0ZXJQcmVpbWFnZSxcbn0gZnJvbSAnQHN0YWNrcy9iaXRjb2luLXN0YWtpbmcnO1xuaW1wb3J0IHsgYWRkcmVzcywgYmlwMzIsIERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB7IGdldEtleVRyaXBsZSB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8vdGVzdHV0aWxzJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlUG94NUxvY2t1cERlc2NyaXB0b3IsXG4gIGNyZWF0ZVBveDVMb2NrdXBTY3JpcHRQdWJLZXksXG4gIGRlcml2ZVBveDVTdGFrZXJLZXlzLFxuICBwYXJzZVBveDVMb2NrdXBEZXNjcmlwdG9yLFxuICBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcyxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjL3BveDUnO1xuXG50eXBlIEJJUDMySW50ZXJmYWNlID0gYmlwMzIuQklQMzJJbnRlcmZhY2U7XG5cbmNvbnN0IE9QQ09ERVM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gIE9QXzA6IDB4MDAsXG4gIE9QX0lGOiAweDYzLFxuICBPUF9FTFNFOiAweDY3LFxuICBPUF9FTkRJRjogMHg2OCxcbiAgT1BfVkVSSUZZOiAweDY5LFxuICBPUF9TSVpFOiAweDgyLFxuICBPUF9FUVVBTDogMHg4NyxcbiAgT1BfRVFVQUxWRVJJRlk6IDB4ODgsXG4gIE9QX1NIQTI1NjogMHhhOCxcbiAgT1BfQ0hFQ0tTSUc6IDB4YWMsXG4gIE9QX0NIRUNLTVVMVElTSUc6IDB4YWUsXG4gIE9QX0NMVFY6IDB4YjEsXG59O1xuXG5mdW5jdGlvbiBnZXRCaXAzMlRyaXBsZSgpOiBbQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlLCBCSVAzMkludGVyZmFjZV0ge1xuICBjb25zdCBbdXNlciwgYmFja3VwLCBiaXRnb10gPSBnZXRLZXlUcmlwbGUoJ2RlZmF1bHQnKTtcbiAgcmV0dXJuIFt1c2VyLCBiYWNrdXAsIGJpdGdvXTtcbn1cblxuZnVuY3Rpb24gc2hhMjU2KHZhbHVlOiBVaW50OEFycmF5KTogQnVmZmVyIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZSh2YWx1ZSkuZGlnZXN0KCk7XG59XG5cbmZ1bmN0aW9uIHBhcmFtcyhvdmVycmlkZXM6IFBhcnRpYWw8UG94NUxvY2t1cERlc2NyaXB0b3JQYXJhbXM+ID0ge30pOiBQb3g1TG9ja3VwRGVzY3JpcHRvclBhcmFtcyB7XG4gIGNvbnN0IHN0YWtlcktleXMgPSBnZXRCaXAzMlRyaXBsZSgpO1xuICBjb25zdCBlYXJseUV4aXRLZXkgPSBCdWZmZXIuZnJvbShzdGFrZXJLZXlzWzBdLmRlcml2ZSg5KS5wdWJsaWNLZXkpO1xuICByZXR1cm4ge1xuICAgIHVubG9ja0hlaWdodDogODQwXzAwMCxcbiAgICBzdGFrZXJDb21taXRtZW50OiBzaGEyNTYoY29tcHV0ZVJlZ2lzdGVyUHJlaW1hZ2UoJ1NQMDAwMDAwMDAwMDAwMDAwMDAwMDAyUTZWRjc4JykpLFxuICAgIGVhcmx5RXhpdEtleSxcbiAgICBzdGFrZXJLZXlzLFxuICAgIC4uLm92ZXJyaWRlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNtVG9TY3JpcHQoYXNtOiBzdHJpbmcpOiBCdWZmZXIge1xuICBjb25zdCB0b2tlbnMgPSBhc20uc3BsaXQoJyAnKTtcbiAgY29uc3QgY2h1bmtzOiBCdWZmZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdG9rZW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2luZGV4XTtcbiAgICBjb25zdCBwdXNoID0gdG9rZW4ubWF0Y2goL15PUF9QVVNIQllURVNfKFxcZCspJC8pO1xuICAgIGlmIChwdXNoKSB7XG4gICAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKHRva2Vuc1srK2luZGV4XSwgJ2hleCcpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJ5dGVzLmxlbmd0aCwgTnVtYmVyKHB1c2hbMV0pKTtcbiAgICAgIGNodW5rcy5wdXNoKEJ1ZmZlci5vZihieXRlcy5sZW5ndGgpLCBieXRlcyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbnVtYmVyID0gdG9rZW4ubWF0Y2goL15PUF9QVVNITlVNXyhcXGQrKSQvKTtcbiAgICBpZiAobnVtYmVyKSB7XG4gICAgICBjaHVua3MucHVzaChCdWZmZXIub2YoMHg1MCArIE51bWJlcihudW1iZXJbMV0pKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgb3Bjb2RlID0gT1BDT0RFU1t0b2tlbl07XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKG9wY29kZSwgdW5kZWZpbmVkLCBgdW5zdXBwb3J0ZWQgQVNNIHRva2VuICR7dG9rZW59YCk7XG4gICAgY2h1bmtzLnB1c2goQnVmZmVyLm9mKG9wY29kZSkpO1xuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG59XG5cbmZ1bmN0aW9uIGVuY29kZVR3b09mVGhyZWVVbmxvY2soa2V5czogW0J1ZmZlciwgQnVmZmVyLCBCdWZmZXJdKTogQnVmZmVyIHtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5vZigweDUyKSwgLi4ua2V5cy5mbGF0TWFwKChrZXkpID0+IFtCdWZmZXIub2YoMzMpLCBrZXldKSwgQnVmZmVyLm9mKDB4NTMsIDB4YWUpXSk7XG59XG5cbmRlc2NyaWJlKCdQb1gtNSBsb2NrdXAgZGVzY3JpcHRvcnMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdyZW5kZXJzIHRoZSByZXF1aXJlZCBieXRlLWlkZW50aWNhbCBjYW5vbmljYWwgc2NyaXB0IGFuZCBQMldTSCBvdXRwdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGVyaXZhYmxlID0gcGFyYW1zKCk7XG4gICAgY29uc3Qgc3Rha2VyS2V5cyA9IGRlcml2ZVBveDVTdGFrZXJLZXlzKFxuICAgICAgZGVyaXZhYmxlLnN0YWtlcktleXMgYXMgW0JJUDMySW50ZXJmYWNlLCBCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2VdLFxuICAgICAgMFxuICAgICk7XG4gICAgY29uc3QgZGVmaW5pdGUgPSB7IC4uLmRlcml2YWJsZSwgc3Rha2VyS2V5cyB9O1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihkZWZpbml0ZSk7XG4gICAgY29uc3QgbG9jYWxXaXRuZXNzU2NyaXB0ID0gYXNtVG9TY3JpcHQoZGVzY3JpcHRvci50b0FzbVN0cmluZygpKTtcbiAgICBjb25zdCB1bmxvY2tCeXRlcyA9IGVuY29kZVR3b09mVGhyZWVVbmxvY2soc3Rha2VyS2V5cyk7XG4gICAgY29uc3QgZWFybHlVbmxvY2tCeXRlcyA9IGJ1aWxkVW5sb2NrU2NyaXB0KGRlZmluaXRlLmVhcmx5RXhpdEtleSk7XG4gICAgY29uc3Qgc2RrV2l0bmVzc1NjcmlwdCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgYnVpbGRMb2NrU2NyaXB0KHtcbiAgICAgICAgc3R4QWRkcmVzczogJ1NQMDAwMDAwMDAwMDAwMDAwMDAwMDAyUTZWRjc4JyxcbiAgICAgICAgdW5sb2NrSGVpZ2h0OiBkZWZpbml0ZS51bmxvY2tIZWlnaHQsXG4gICAgICAgIHVubG9ja0J5dGVzLFxuICAgICAgICBlYXJseVVubG9ja0J5dGVzLFxuICAgICAgICB2YWxpZGF0ZUVhcmx5VW5sb2NrQnl0ZXM6IGZhbHNlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsb2NhbFdpdG5lc3NTY3JpcHQsIHNka1dpdG5lc3NTY3JpcHQpO1xuICAgIGFzc2VydC5vayhkZXNjcmlwdG9yLnRvQXNtU3RyaW5nKCkuaW5jbHVkZXMoJ09QX1NIQTI1NiBPUF9QVVNIQllURVNfMzInKSk7XG4gICAgYXNzZXJ0Lm9rKGRlc2NyaXB0b3IudG9Bc21TdHJpbmcoKS5pbmNsdWRlcygnT1BfRVFVQUxWRVJJRlkgT1BfUFVTSEJZVEVTXzMzJykpO1xuXG4gICAgY29uc3QgbG9jYWxTY3JpcHRQdWJLZXkgPSBjcmVhdGVQb3g1TG9ja3VwU2NyaXB0UHViS2V5KGRlZmluaXRlKTtcbiAgICBjb25zdCBzZGtTY3JpcHRQdWJLZXkgPSBCdWZmZXIuZnJvbShcbiAgICAgIGJ1aWxkTG9ja091dHB1dFNjcmlwdCh7XG4gICAgICAgIHN0eEFkZHJlc3M6ICdTUDAwMDAwMDAwMDAwMDAwMDAwMDAwMlE2VkY3OCcsXG4gICAgICAgIHVubG9ja0hlaWdodDogZGVmaW5pdGUudW5sb2NrSGVpZ2h0LFxuICAgICAgICB1bmxvY2tCeXRlcyxcbiAgICAgICAgZWFybHlVbmxvY2tCeXRlcyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGxvY2FsU2NyaXB0UHViS2V5LCBzZGtTY3JpcHRQdWJLZXkpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhDb2luKGxvY2FsU2NyaXB0UHViS2V5LCAnYnRjJyksXG4gICAgICBidWlsZExvY2tBZGRyZXNzKHtcbiAgICAgICAgc3R4QWRkcmVzczogJ1NQMDAwMDAwMDAwMDAwMDAwMDAwMDAyUTZWRjc4JyxcbiAgICAgICAgdW5sb2NrSGVpZ2h0OiBkZWZpbml0ZS51bmxvY2tIZWlnaHQsXG4gICAgICAgIHVubG9ja0J5dGVzLFxuICAgICAgICBlYXJseVVubG9ja0J5dGVzLFxuICAgICAgICBuZXR3b3JrOiAnbWFpbm5ldCcsXG4gICAgICAgIHZhbGlkYXRlRWFybHlVbmxvY2tCeXRlczogZmFsc2UsXG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzdXBwb3J0cyBkZXJpdmF0aW9uIGFuZCBwcmVzZXJ2ZXMgd2lsZGNhcmQga2V5cyB1bnRpbCBhbiBpbmRleCBpcyBzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtcygpO1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcih2YWx1ZSk7XG4gICAgY29uc3Qgd2lsZGNhcmQgPSBwYXJzZVBveDVMb2NrdXBEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgIGNvbnN0IGRlcml2ZWQgPSBwYXJzZVBveDVMb2NrdXBEZXNjcmlwdG9yKGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoNCkpO1xuXG4gICAgYXNzZXJ0Lm9rKHdpbGRjYXJkKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwod2lsZGNhcmQuc3Rha2VyS2V5cywgdW5kZWZpbmVkKTtcbiAgICBhc3NlcnQub2sod2lsZGNhcmQuc3Rha2VyS2V5U3RyaW5ncy5ldmVyeSgoa2V5KSA9PiBrZXkuZW5kc1dpdGgoJy8qJykpKTtcbiAgICBhc3NlcnQub2soZGVyaXZlZD8uc3Rha2VyS2V5cyk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChcbiAgICAgIGRlcml2ZWQ/LnN0YWtlcktleXMsXG4gICAgICBkZXJpdmVQb3g1U3Rha2VyS2V5cyh2YWx1ZS5zdGFrZXJLZXlzIGFzIFtCSVAzMkludGVyZmFjZSwgQklQMzJJbnRlcmZhY2UsIEJJUDMySW50ZXJmYWNlXSwgNClcbiAgICApO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBub25jYW5vbmljYWwgcGFyYW1ldGVyIHZhbHVlcyBhbmQgZGVzY3JpcHRvciB0ZW1wbGF0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBjcmVhdGVQb3g1TG9ja3VwRGVzY3JpcHRvcihwYXJhbXMoeyB1bmxvY2tIZWlnaHQ6IDAgfSkpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKHBhcmFtcyh7IHVubG9ja0hlaWdodDogNTAwXzAwMF8wMDAgfSkpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKHBhcmFtcyh7IHN0YWtlckNvbW1pdG1lbnQ6IEJ1ZmZlci5hbGxvYygzMSkgfSkpKTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKHBhcmFtcyh7IGVhcmx5RXhpdEtleTogQnVmZmVyLmFsbG9jKDMyKSB9KSkpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT5cbiAgICAgIGNyZWF0ZVBveDVMb2NrdXBEZXNjcmlwdG9yKFxuICAgICAgICBwYXJhbXMoeyBzdGFrZXJLZXlzOiBbZ2V0QmlwMzJUcmlwbGUoKVswXSwgQnVmZmVyLmFsbG9jKDMzLCAyKSwgQnVmZmVyLmFsbG9jKDMzLCAyKV0gfSlcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IHZhbGlkS2V5ID0gcGFyYW1zKCkuZWFybHlFeGl0S2V5LnRvU3RyaW5nKCdoZXgnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGFyc2VQb3g1TG9ja3VwRGVzY3JpcHRvcihEZXNjcmlwdG9yLmZyb21TdHJpbmcoYHdzaChwaygke3ZhbGlkS2V5fSkpYCwgJ2RlZmluaXRlJykpLCB1bmRlZmluZWQpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../../test/unit/pox5/input.ts"],"names":[],"mappings":""}