@scure/btc-signer 1.7.0 → 1.8.1

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 (81) hide show
  1. package/README.md +57 -6
  2. package/_type_test.js +1 -1
  3. package/_type_test.js.map +1 -1
  4. package/esm/_type_test.js +2 -2
  5. package/esm/_type_test.js.map +1 -1
  6. package/esm/index.d.ts +12 -12
  7. package/esm/index.d.ts.map +1 -1
  8. package/esm/index.js +10 -10
  9. package/esm/index.js.map +1 -1
  10. package/esm/musig2.d.ts.map +1 -1
  11. package/esm/musig2.js +5 -6
  12. package/esm/musig2.js.map +1 -1
  13. package/esm/p2p.d.ts +38 -0
  14. package/esm/p2p.d.ts.map +1 -0
  15. package/esm/p2p.js +156 -0
  16. package/esm/p2p.js.map +1 -0
  17. package/esm/payment.d.ts +77 -21
  18. package/esm/payment.d.ts.map +1 -1
  19. package/esm/payment.js +63 -60
  20. package/esm/payment.js.map +1 -1
  21. package/esm/psbt.d.ts +1 -1
  22. package/esm/psbt.d.ts.map +1 -1
  23. package/esm/psbt.js +2 -35
  24. package/esm/psbt.js.map +1 -1
  25. package/esm/script.js +1 -1
  26. package/esm/transaction.d.ts +57 -4
  27. package/esm/transaction.d.ts.map +1 -1
  28. package/esm/transaction.js +157 -11
  29. package/esm/transaction.js.map +1 -1
  30. package/esm/utils.d.ts +2 -2
  31. package/esm/utils.d.ts.map +1 -1
  32. package/esm/utils.js +4 -4
  33. package/esm/utils.js.map +1 -1
  34. package/esm/utxo.d.ts +3 -55
  35. package/esm/utxo.d.ts.map +1 -1
  36. package/esm/utxo.js +6 -115
  37. package/esm/utxo.js.map +1 -1
  38. package/index.d.ts +12 -12
  39. package/index.d.ts.map +1 -1
  40. package/index.js +58 -58
  41. package/index.js.map +1 -1
  42. package/musig2.d.ts +1 -1
  43. package/musig2.d.ts.map +1 -1
  44. package/musig2.js +47 -48
  45. package/musig2.js.map +1 -1
  46. package/p2p.d.ts +38 -0
  47. package/p2p.d.ts.map +1 -0
  48. package/p2p.js +158 -0
  49. package/p2p.js.map +1 -0
  50. package/package.json +43 -11
  51. package/payment.d.ts +77 -21
  52. package/payment.d.ts.map +1 -1
  53. package/payment.js +81 -78
  54. package/payment.js.map +1 -1
  55. package/psbt.d.ts +1 -1
  56. package/psbt.d.ts.map +1 -1
  57. package/psbt.js +22 -55
  58. package/psbt.js.map +1 -1
  59. package/script.js +3 -3
  60. package/src/_type_test.ts +2 -2
  61. package/src/index.ts +12 -12
  62. package/src/musig2.ts +5 -6
  63. package/src/p2p.ts +158 -0
  64. package/src/payment.ts +160 -75
  65. package/src/psbt.ts +2 -36
  66. package/src/script.ts +1 -1
  67. package/src/transaction.ts +166 -15
  68. package/src/utils.ts +4 -4
  69. package/src/utxo.ts +10 -112
  70. package/transaction.d.ts +57 -4
  71. package/transaction.d.ts.map +1 -1
  72. package/transaction.js +228 -78
  73. package/transaction.js.map +1 -1
  74. package/utils.d.ts +2 -2
  75. package/utils.d.ts.map +1 -1
  76. package/utils.js +21 -21
  77. package/utils.js.map +1 -1
  78. package/utxo.d.ts +3 -55
  79. package/utxo.d.ts.map +1 -1
  80. package/utxo.js +44 -157
  81. package/utxo.js.map +1 -1
package/p2p.js ADDED
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * BTC P2P layer from BIP324.
4
+ *
5
+ * Experimental ElligatorSwift implementation:
6
+ * Schnorr-like x-only ECDH with public keys indistinguishable from uniformly random bytes.
7
+ *
8
+ * Documented in
9
+ * [BIP324](https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki),
10
+ * [libsecp](https://github.com/bitcoin/bitcoin/blob/master/src/secp256k1/doc/ellswift.md).
11
+ *
12
+ * SwiftEC: Shallue-van de Woestijne Indifferentiable Function to Elliptic Curves.
13
+ * Documented in https://eprint.iacr.org/2022/759.pdf.
14
+ *
15
+ * Curve25519 & P-521 are incompatible with SwiftEC. Differences from SwiftEC:
16
+ * * undefined inputs are remapped
17
+ * * y-parity is encoded in u/t values
18
+ *
19
+ * @module
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.elligatorSwift = void 0;
23
+ const modular_js_1 = require("@noble/curves/abstract/modular.js");
24
+ const utils_js_1 = require("@noble/curves/abstract/utils.js");
25
+ const secp256k1_js_1 = require("@noble/curves/secp256k1.js");
26
+ const utils_js_2 = require("@noble/hashes/utils.js");
27
+ const utils_ts_1 = require("./utils.js");
28
+ const Fp = secp256k1_js_1.secp256k1.CURVE.Fp;
29
+ const Point = secp256k1_js_1.secp256k1.ProjectivePoint;
30
+ const _1n = BigInt(1);
31
+ const _2n = BigInt(2);
32
+ const MINUS_3_SQRT = Fp.sqrt(Fp.create(BigInt(-3)));
33
+ const _3n = BigInt(3);
34
+ const _4n = BigInt(4);
35
+ const _7n = BigInt(7);
36
+ const isValidX = (x) => (0, modular_js_1.FpIsSquare)(Fp, Fp.add(Fp.mul(Fp.mul(x, x), x), _7n));
37
+ const trySqrt = (x) => {
38
+ try {
39
+ return Fp.sqrt(x);
40
+ }
41
+ catch (_e) { }
42
+ };
43
+ /**
44
+ * Experimental ElligatorSwift implementation:
45
+ * Schnorr-like x-only ECDH with public keys indistinguishable from uniformly random bytes.
46
+ * Documented in BIP324.
47
+ */
48
+ exports.elligatorSwift = {
49
+ // (internal stuff, exported for tests only): decode(u, _inv(x, u)) = x
50
+ _inv: (x, u, ellCase) => {
51
+ if (!Number.isSafeInteger(ellCase) || ellCase < 0 || ellCase > 7)
52
+ throw new Error(`elligatorSwift._inv: wrong case=${ellCase}`);
53
+ let v, s;
54
+ // Most rejections happens in 3 condition (in comments, ~33% each)
55
+ const u2 = Fp.mul(u, u); // u**2
56
+ const u3 = Fp.mul(u2, u); // u**3
57
+ if ((ellCase & 2) === 0) {
58
+ if (isValidX(Fp.sub(Fp.neg(x), u)))
59
+ return; // [1 condition]
60
+ v = x;
61
+ s = Fp.div(Fp.neg(Fp.add(u3, _7n)), Fp.add(Fp.add(u2, Fp.mul(u, v)), Fp.mul(v, v))); // = -(u**3 + 7) / (u**2 + u*v + v**2)
62
+ }
63
+ else {
64
+ s = Fp.sub(x, u); // x - u
65
+ if (Fp.is0(s))
66
+ return;
67
+ const t0 = Fp.add(u3, _7n); // (u**3 + 7)
68
+ const t1 = Fp.mul(Fp.mul(_3n, s), u2); // 3 * s * u**2
69
+ // r = (-s * (4 * (u**3 + 7) + 3 * s * u**2)).sqrt()
70
+ const r = trySqrt(Fp.mul(Fp.neg(s), Fp.add(Fp.mul(_4n, t0), t1)));
71
+ if (r === undefined)
72
+ return; // [2 condition]
73
+ if (ellCase & 1 && Fp.is0(r))
74
+ return;
75
+ v = Fp.div(Fp.add(Fp.neg(u), Fp.div(r, s)), _2n); // v = (-u + r / s) / 2
76
+ }
77
+ const w = trySqrt(s);
78
+ if (w === undefined)
79
+ return; // [3 condition]
80
+ const last = ellCase & 5; // ellCase = 0..8, last = 0,1,4,5
81
+ const t0 = last & 1 ? Fp.add(_1n, MINUS_3_SQRT) : Fp.sub(_1n, MINUS_3_SQRT);
82
+ const w0 = last === 0 || last === 5 ? Fp.neg(w) : w; // -w | w
83
+ // w0 * (u * t0 / 2 + v)
84
+ return Fp.mul(w0, Fp.add(Fp.div(Fp.mul(u, t0), _2n), v));
85
+ },
86
+ // Encode public key (point or x coordinate bigint) into 64-byte pseudorandom encoding
87
+ encode: (x) => {
88
+ if (x instanceof secp256k1_js_1.secp256k1.ProjectivePoint)
89
+ x = x.x;
90
+ if (typeof x !== 'bigint') {
91
+ throw new Error('elligatorSwift.encode: wrong public key. Should be Projective point or x coordinate (bigint)');
92
+ }
93
+ // 200k test cycles per keygen: avg=4 max=48
94
+ // seems too much, but same as for reference implementation
95
+ while (true) {
96
+ // random scalar 1..Fp.ORDER
97
+ const u = Fp.create(Fp.fromBytes(secp256k1_js_1.secp256k1.utils.randomPrivateKey()));
98
+ const ellCase = (0, utils_js_2.randomBytes)(1)[0] & 7; // [0..8)
99
+ const t = exports.elligatorSwift._inv(x, u, ellCase);
100
+ if (!t)
101
+ continue;
102
+ return (0, utils_js_1.concatBytes)((0, utils_js_1.numberToBytesBE)(u, 32), (0, utils_js_1.numberToBytesBE)(t, 32));
103
+ }
104
+ },
105
+ // Decode elligatorSwift point to xonly
106
+ decode: (data) => {
107
+ const _data = (0, utils_js_1.ensureBytes)('data', data, 64);
108
+ let u = Fp.create(Fp.fromBytes(_data.subarray(0, 32)));
109
+ let t = Fp.create(Fp.fromBytes(_data.subarray(32, 64)));
110
+ if (Fp.is0(u))
111
+ u = Fp.create(_1n);
112
+ if (Fp.is0(t))
113
+ t = Fp.create(_1n);
114
+ const u3 = Fp.mul(Fp.mul(u, u), u); // u**3
115
+ const u3plus7 = Fp.add(u3, _7n);
116
+ // u**3 + t**2 + 7 == 0 -> t = 2 * t
117
+ if (Fp.is0(Fp.add(u3plus7, Fp.mul(t, t))))
118
+ t = Fp.add(t, t);
119
+ // X = (u**3 + 7 - t**2) / (2 * t)
120
+ const x = Fp.div(Fp.sub(u3plus7, Fp.mul(t, t)), Fp.add(t, t));
121
+ // Y = (X + t) / (MINUS_3_SQRT * u);
122
+ const y = Fp.div(Fp.add(x, t), Fp.mul(MINUS_3_SQRT, u));
123
+ // try different cases
124
+ let res = Fp.add(u, Fp.mul(Fp.mul(y, y), _4n)); // u + 4 * Y ** 2,
125
+ if (isValidX(res))
126
+ return (0, utils_js_1.numberToBytesBE)(res, 32);
127
+ res = Fp.div(Fp.sub(Fp.div(Fp.neg(x), y), u), _2n); // (-X / Y - u) / 2
128
+ if (isValidX(res))
129
+ return (0, utils_js_1.numberToBytesBE)(res, 32);
130
+ res = Fp.div(Fp.sub(Fp.div(x, y), u), _2n); // (X / Y - u) / 2
131
+ if (isValidX(res))
132
+ return (0, utils_js_1.numberToBytesBE)(res, 32);
133
+ throw new Error('elligatorSwift: cannot decode public key');
134
+ },
135
+ // Generate pair (public key, secret key)
136
+ keygen: () => {
137
+ const privateKey = secp256k1_js_1.secp256k1.utils.randomPrivateKey();
138
+ const publicKey = exports.elligatorSwift.encode(Point.fromPrivateKey(privateKey));
139
+ return { privateKey, publicKey };
140
+ },
141
+ // Generates shared secret between a pub key and a priv key
142
+ getSharedSecret: (privateKeyA, publicKeyB) => {
143
+ const pub = exports.elligatorSwift.decode(publicKeyB);
144
+ const priv = (0, utils_js_1.ensureBytes)('privKey', privateKeyA, 32);
145
+ const point = secp256k1_js_1.schnorr.utils.lift_x(Fp.fromBytes(pub));
146
+ const d = (0, utils_js_1.bytesToNumberBE)(priv);
147
+ return (0, utils_js_1.numberToBytesBE)(point.multiply(d).x, 32);
148
+ },
149
+ // BIP324 shared secret
150
+ getSharedSecretBip324: (privateKeyOurs, publicKeyTheirs, publicKeyOurs, initiating) => {
151
+ const ours = (0, utils_js_1.ensureBytes)('publicKeyOurs', publicKeyOurs);
152
+ const theirs = (0, utils_js_1.ensureBytes)('publicKeyTheirs', publicKeyTheirs);
153
+ const ecdhPoint = exports.elligatorSwift.getSharedSecret(privateKeyOurs, theirs);
154
+ const pubs = initiating ? [ours, theirs] : [theirs, ours];
155
+ return (0, utils_ts_1.tagSchnorr)('bip324_ellswift_xonly_ecdh', ...pubs, ecdhPoint);
156
+ },
157
+ };
158
+ //# sourceMappingURL=p2p.js.map
package/p2p.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2p.js","sourceRoot":"","sources":["src/p2p.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scure/btc-signer",
3
- "version": "1.7.0",
3
+ "version": "1.8.1",
4
4
  "description": "Audited & minimal library for Bitcoin. Handle transactions, Schnorr, Taproot, UTXO & PSBT",
5
5
  "files": [
6
6
  "esm",
@@ -14,18 +14,18 @@
14
14
  "module": "./esm/index.js",
15
15
  "types": "./index.d.ts",
16
16
  "dependencies": {
17
- "@noble/curves": "~1.8.1",
18
- "@noble/hashes": "~1.7.1",
19
- "@scure/base": "~1.2.2",
20
- "micro-packed": "~0.7.2"
17
+ "@noble/curves": "~1.9.0",
18
+ "@noble/hashes": "~1.8.0",
19
+ "@scure/base": "~1.2.5",
20
+ "micro-packed": "~0.7.3"
21
21
  },
22
22
  "devDependencies": {
23
- "@paulmillr/jsbt": "0.3.2",
24
- "@scure/bip32": "~1.6.1",
25
- "micro-bmark": "0.4.0",
26
- "micro-should": "0.5.1",
27
- "prettier": "3.5.2",
28
- "typescript": "5.8.2"
23
+ "@paulmillr/jsbt": "0.3.3",
24
+ "@scure/bip32": "~1.7.0",
25
+ "micro-bmark": "0.4.1",
26
+ "micro-should": "0.5.2",
27
+ "prettier": "3.5.3",
28
+ "typescript": "5.8.3"
29
29
  },
30
30
  "exports": {
31
31
  ".": {
@@ -63,6 +63,38 @@
63
63
  "./utxo": {
64
64
  "import": "./esm/utxo.js",
65
65
  "require": "./utxo.js"
66
+ },
67
+ "./index.js": {
68
+ "import": "./esm/index.js",
69
+ "require": "./index.js"
70
+ },
71
+ "./musig2.js": {
72
+ "import": "./esm/musig2.js",
73
+ "require": "./musig2.js"
74
+ },
75
+ "./payment.js": {
76
+ "import": "./esm/payment.js",
77
+ "require": "./payment.js"
78
+ },
79
+ "./psbt.js": {
80
+ "import": "./esm/psbt.js",
81
+ "require": "./psbt.js"
82
+ },
83
+ "./script.js": {
84
+ "import": "./esm/script.js",
85
+ "require": "./script.js"
86
+ },
87
+ "./transaction.js": {
88
+ "import": "./esm/transaction.js",
89
+ "require": "./transaction.js"
90
+ },
91
+ "./utils.js": {
92
+ "import": "./esm/utils.js",
93
+ "require": "./utils.js"
94
+ },
95
+ "./utxo.js": {
96
+ "import": "./esm/utxo.js",
97
+ "require": "./utxo.js"
66
98
  }
67
99
  },
68
100
  "sideEffects": false,
package/payment.d.ts CHANGED
@@ -1,14 +1,15 @@
1
1
  import { type Coder } from '@scure/base';
2
2
  import * as P from 'micro-packed';
3
- import { type TransactionInput } from './psbt.js';
4
- import { type ScriptType } from './script.js';
5
- import { type BTC_NETWORK, type Bytes } from './utils.js';
3
+ import { type TransactionInput } from './psbt.ts';
4
+ import { type ScriptType } from './script.ts';
5
+ import { type BTC_NETWORK, type Bytes } from './utils.ts';
6
6
  export type P2Ret = {
7
7
  type: string;
8
8
  script: Bytes;
9
9
  address?: string;
10
10
  redeemScript?: Bytes;
11
11
  witnessScript?: Bytes;
12
+ hash?: Bytes;
12
13
  };
13
14
  type OutP2AType = {
14
15
  type: 'p2a';
@@ -70,12 +71,54 @@ export type CustomScript = Coder<OptScript, CustomScriptOut | undefined> & {
70
71
  export declare const OutScript: P.CoderType<NonNullable<OutP2AType | OutPKType | OutPKHType | OutSHType | OutWSHType | OutWPKHType | OutMSType | OutTRType | OutTRNSType | OutTRMSType | OutUnknownType | undefined>>;
71
72
  export type OutScriptType = typeof OutScript;
72
73
  export declare function checkScript(script?: Bytes, redeemScript?: Bytes, witnessScript?: Bytes): void;
73
- export declare const p2pk: (pubkey: Bytes, network?: BTC_NETWORK) => P2Ret;
74
- export declare const p2pkh: (publicKey: Bytes, network?: BTC_NETWORK) => P2Ret;
75
- export declare const p2sh: (child: P2Ret, network?: BTC_NETWORK) => P2Ret;
76
- export declare const p2wsh: (child: P2Ret, network?: BTC_NETWORK) => P2Ret;
77
- export declare const p2wpkh: (publicKey: Bytes, network?: BTC_NETWORK) => P2Ret;
78
- export declare const p2ms: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => P2Ret;
74
+ type Extends<T, U> = T extends U ? T : never;
75
+ export type P2PK = {
76
+ type: 'pk';
77
+ script: Bytes;
78
+ };
79
+ export declare const p2pk: (pubkey: Bytes, _network?: BTC_NETWORK) => Extends<P2PK, P2Ret>;
80
+ export type P2PKH = {
81
+ type: 'pkh';
82
+ script: Bytes;
83
+ address: string;
84
+ hash: Bytes;
85
+ };
86
+ export declare const p2pkh: (publicKey: Bytes, network?: BTC_NETWORK) => Extends<P2PKH, P2Ret>;
87
+ export type P2SHBase = {
88
+ type: 'sh';
89
+ redeemScript: Bytes;
90
+ script: Bytes;
91
+ address: string;
92
+ hash: Bytes;
93
+ };
94
+ export type P2SHWithWitness = P2SHBase & {
95
+ witnessScript: Bytes;
96
+ };
97
+ export type P2SHWithoutWitness = Omit<P2SHBase, 'witnessScript'>;
98
+ export type P2SHReturn<T extends P2Ret> = T extends {
99
+ witnessScript: Bytes;
100
+ } ? P2SHWithWitness : P2SHWithoutWitness;
101
+ export declare const p2sh: <T extends P2Ret>(child: T, network?: BTC_NETWORK) => Extends<P2SHReturn<T>, P2Ret>;
102
+ export type P2WSH = {
103
+ type: 'wsh';
104
+ witnessScript: Bytes;
105
+ script: Bytes;
106
+ address: string;
107
+ hash: Bytes;
108
+ };
109
+ export declare const p2wsh: (child: P2Ret, network?: BTC_NETWORK) => Extends<P2WSH, P2Ret>;
110
+ export type P2WPKH = {
111
+ type: 'wpkh';
112
+ script: Bytes;
113
+ address: string;
114
+ hash: Bytes;
115
+ };
116
+ export declare const p2wpkh: (publicKey: Bytes, network?: BTC_NETWORK) => Extends<P2WPKH, P2Ret>;
117
+ export type P2MS = {
118
+ type: 'ms';
119
+ script: Bytes;
120
+ };
121
+ export declare const p2ms: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => Extends<P2MS, P2Ret>;
79
122
  export type HashedTree = {
80
123
  type: 'leaf';
81
124
  version?: number;
@@ -87,18 +130,23 @@ export type HashedTree = {
87
130
  right: HashedTree;
88
131
  hash: Bytes;
89
132
  };
90
- export type P2TROut = P2Ret & {
133
+ export type P2TR = {
134
+ type: 'tr';
135
+ script: Bytes;
136
+ address: string;
91
137
  tweakedPubkey: Bytes;
92
138
  tapInternalKey: Bytes;
93
- tapMerkleRoot?: Bytes;
94
- tapLeafScript?: TransactionInput['tapLeafScript'];
95
- leaves?: TaprootLeaf[];
139
+ };
140
+ export type P2TR_TREE = P2TR & {
141
+ tapMerkleRoot: Bytes;
142
+ tapLeafScript: TransactionInput['tapLeafScript'];
143
+ leaves: TaprootLeaf[];
96
144
  };
97
145
  export type TaprootNode = {
98
146
  script: Bytes | string;
99
147
  leafVersion?: number;
100
148
  weight?: number;
101
- } & Partial<P2TROut>;
149
+ } & Partial<P2TR_TREE>;
102
150
  export type TaprootScriptTree = TaprootNode | TaprootScriptTree[];
103
151
  export type TaprootScriptList = TaprootNode[];
104
152
  export declare function taprootListToTree(taprootList: TaprootScriptList): TaprootScriptTree;
@@ -118,21 +166,29 @@ export type HashedTreeWithPath = TaprootLeaf | {
118
166
  };
119
167
  export declare const TAP_LEAF_VERSION = 192;
120
168
  export declare const tapLeafHash: (script: Bytes, version?: number) => Bytes;
121
- export declare function p2tr(internalPubKey?: Bytes | string, tree?: TaprootScriptTree, network?: BTC_NETWORK, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): P2TROut;
169
+ export type P2TRRet<T> = T extends TaprootScriptTree ? P2TR_TREE : P2TR;
170
+ export declare function p2tr(internalPubKey: Bytes | string, tree?: undefined, network?: BTC_NETWORK, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): Extends<P2TR, P2Ret>;
171
+ export declare function p2tr(internalPubKey: Bytes | string, tree: TaprootScriptTree, network?: BTC_NETWORK, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): Extends<P2TR_TREE, P2Ret>;
122
172
  export declare function combinations<T>(m: number, list: T[]): T[][];
123
173
  /**
124
174
  * M-of-N multi-leaf wallet via p2tr_ns. If m == n, single script is emitted.
125
175
  * Takes O(n^2) if m != n. 99-of-100 is ok, 5-of-100 is not.
126
176
  * `2-of-[A,B,C] => [A,B] | [A,C] | [B,C]`
127
177
  */
128
- export declare const p2tr_ns: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => P2Ret[];
129
- export declare const p2tr_pk: (pubkey: Bytes) => P2Ret;
130
- export declare function p2tr_ms(m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean): {
131
- type: string;
132
- script: Uint8Array;
178
+ export type P2TR_NS = {
179
+ type: 'tr_ns';
180
+ script: Bytes;
181
+ };
182
+ export declare const p2tr_ns: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => Extends<P2TR_NS, P2Ret>[];
183
+ export type P2TR_PK = P2TR_NS;
184
+ export declare const p2tr_pk: (pubkey: Bytes) => Extends<P2TR_PK, P2Ret>;
185
+ export type P2TR_MS = {
186
+ type: 'tr_ms';
187
+ script: Bytes;
133
188
  };
189
+ export declare function p2tr_ms(m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean): Extends<P2TR_MS, P2Ret>;
134
190
  export declare function getAddress(type: 'pkh' | 'wpkh' | 'tr', privKey: Bytes, network?: BTC_NETWORK): string | undefined;
135
- export declare const _sortPubkeys: (pubkeys: Bytes[]) => Uint8Array[];
191
+ export declare const _sortPubkeys: (pubkeys: Bytes[]) => Bytes[];
136
192
  export declare function multisig(m: number, pubkeys: Bytes[], sorted?: boolean, witness?: boolean, network?: BTC_NETWORK): P2Ret;
137
193
  export declare function sortedMultisig(m: number, pubkeys: Bytes[], witness?: boolean, network?: BTC_NETWORK): P2Ret;
138
194
  export declare function WIF(network?: BTC_NETWORK): Coder<Bytes, string>;
package/payment.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["src/payment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["src/payment.ts"],"names":[],"mappings":"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"}